up
This commit is contained in:
commit
9d9cab4665
9
LICENSE
Normal file
9
LICENSE
Normal file
@ -0,0 +1,9 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2024 nnduc
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
23
README.md
Normal file
23
README.md
Normal file
@ -0,0 +1,23 @@
|
||||
# i3-stones
|
||||
|
||||
## Dependencies
|
||||
|
||||
### For i3
|
||||
- i3wm
|
||||
- polybar
|
||||
|
||||
### For sway
|
||||
- wl-root
|
||||
- sway
|
||||
- waybar
|
||||
|
||||
### Others (notifications and icons)
|
||||
- A Nerd Font (for icons)
|
||||
- tiramisu
|
||||
|
||||
## For brightness and media control:
|
||||
- brightnessctl (You have to add user to the following groups: video input)
|
||||
- playerctl
|
||||
## For screen tearing:
|
||||
- Fix xorg config with appropriate driver.
|
||||

|
24
alacritty/alacritty.toml
Normal file
24
alacritty/alacritty.toml
Normal file
@ -0,0 +1,24 @@
|
||||
[[keyboard.bindings]]
|
||||
action = "SpawnNewInstance"
|
||||
key = "T"
|
||||
mods = "Control|Shift"
|
||||
|
||||
[font]
|
||||
size = 13.0
|
||||
|
||||
[font.bold]
|
||||
family = "MesloLGS NF"
|
||||
|
||||
[font.bold_italic]
|
||||
family = "MesloLGS NF"
|
||||
|
||||
[font.italic]
|
||||
family = "MesloLGS NF"
|
||||
|
||||
[font.normal]
|
||||
family = "MesloLGS NF"
|
||||
|
||||
[window]
|
||||
startup_mode = "Maximized"
|
||||
|
||||
[keyboard]
|
26
alacritty/alacritty.yml
Normal file
26
alacritty/alacritty.yml
Normal file
@ -0,0 +1,26 @@
|
||||
font:
|
||||
normal:
|
||||
family: MesloLGS NF
|
||||
#style: Regular
|
||||
|
||||
bold:
|
||||
family: MesloLGS NF
|
||||
#style: Bold
|
||||
|
||||
# Italic font face
|
||||
italic:
|
||||
# value specified for the normal font.
|
||||
family: MesloLGS NF
|
||||
#style: Italic
|
||||
|
||||
bold_italic:
|
||||
family: MesloLGS NF
|
||||
#style: Bold Italic
|
||||
# Point size
|
||||
size: 13.0
|
||||
|
||||
window:
|
||||
startup_mode: Maximized
|
||||
key_bindings:
|
||||
- {key: T, mods: Control|Shift, action: SpawnNewInstance}
|
||||
|
566
alacritty/alacritty_default.yml
Normal file
566
alacritty/alacritty_default.yml
Normal file
@ -0,0 +1,566 @@
|
||||
# Configuration for Alacritty, the GPU enhanced terminal emulator.
|
||||
|
||||
# Any items in the `env` entry below will be added as
|
||||
# environment variables. Some entries may override variables
|
||||
# set by alacritty itself.
|
||||
#env:
|
||||
# TERM variable
|
||||
#
|
||||
# This value is used to set the `$TERM` environment variable for
|
||||
# each instance of Alacritty. If it is not present, alacritty will
|
||||
# check the local terminfo database and use `alacritty` if it is
|
||||
# available, otherwise `xterm-256color` is used.
|
||||
#TERM: xterm-256color
|
||||
|
||||
#window:
|
||||
# Window dimensions (changes require restart)
|
||||
#
|
||||
# Specified in number of columns/lines, not pixels.
|
||||
# If both are `0`, this setting is ignored.
|
||||
#dimensions:
|
||||
# columns: 0
|
||||
# lines: 0
|
||||
|
||||
# Window position (changes require restart)
|
||||
#
|
||||
# Specified in number of pixels.
|
||||
# If the position is not set, the window manager will handle the placement.
|
||||
#position:
|
||||
# x: 0
|
||||
# y: 0
|
||||
|
||||
# Window padding (changes require restart)
|
||||
#
|
||||
# Blank space added around the window in pixels. This padding is scaled
|
||||
# by DPI and the specified value is always added at both opposing sides.
|
||||
#padding:
|
||||
# x: 0
|
||||
# y: 0
|
||||
|
||||
# Spread additional padding evenly around the terminal content.
|
||||
#dynamic_padding: false
|
||||
|
||||
# Window decorations
|
||||
#
|
||||
# Values for `decorations`:
|
||||
# - full: Borders and title bar
|
||||
# - none: Neither borders nor title bar
|
||||
#
|
||||
# Values for `decorations` (macOS only):
|
||||
# - transparent: Title bar, transparent background and title bar buttons
|
||||
# - buttonless: Title bar, transparent background, but no title bar buttons
|
||||
#decorations: full
|
||||
|
||||
# Startup Mode (changes require restart)
|
||||
#
|
||||
# Values for `startup_mode`:
|
||||
# - Windowed
|
||||
# - Maximized
|
||||
# - Fullscreen
|
||||
#
|
||||
# Values for `startup_mode` (macOS only):
|
||||
# - SimpleFullscreen
|
||||
#startup_mode: Windowed
|
||||
|
||||
# Window title
|
||||
#title: Alacritty
|
||||
|
||||
# Window class (Linux only):
|
||||
#class:
|
||||
# Application instance name
|
||||
#instance: Alacritty
|
||||
# General application class
|
||||
#general: Alacritty
|
||||
|
||||
# GTK theme variant (Linux only)
|
||||
#
|
||||
# Override the variant of the GTK theme. Commonly supported values are `dark` and `light`.
|
||||
# Set this to `None` to use the default theme variant.
|
||||
#gtk_theme_variant: None
|
||||
|
||||
#scrolling:
|
||||
# Maximum number of lines in the scrollback buffer.
|
||||
# Specifying '0' will disable scrolling.
|
||||
#history: 10000
|
||||
|
||||
# Number of lines the viewport will move for every line scrolled when
|
||||
# scrollback is enabled (history > 0).
|
||||
#multiplier: 3
|
||||
|
||||
# Scroll to the bottom when new text is written to the terminal.
|
||||
#auto_scroll: false
|
||||
|
||||
# Spaces per Tab (changes require restart)
|
||||
#
|
||||
# This setting defines the width of a tab in cells.
|
||||
#
|
||||
# Some applications, like Emacs, rely on knowing about the width of a tab.
|
||||
# To prevent unexpected behavior in these applications, it's also required to
|
||||
# change the `it` value in terminfo when altering this setting.
|
||||
#tabspaces: 8
|
||||
|
||||
# Font configuration
|
||||
#font:
|
||||
# Normal (roman) font face
|
||||
#normal:
|
||||
# Font family
|
||||
#
|
||||
# Default:
|
||||
# - (macOS) Menlo
|
||||
# - (Linux) monospace
|
||||
# - (Windows) Consolas
|
||||
#family: monospace
|
||||
|
||||
# The `style` can be specified to pick a specific face.
|
||||
#style: Regular
|
||||
|
||||
# Bold font face
|
||||
#bold:
|
||||
# Font family
|
||||
#
|
||||
# If the bold family is not specified, it will fall back to the
|
||||
# value specified for the normal font.
|
||||
#family: monospace
|
||||
|
||||
# The `style` can be specified to pick a specific face.
|
||||
#style: Bold
|
||||
|
||||
# Italic font face
|
||||
#italic:
|
||||
# Font family
|
||||
#
|
||||
# If the italic family is not specified, it will fall back to the
|
||||
# value specified for the normal font.
|
||||
#family: monospace
|
||||
|
||||
# The `style` can be specified to pick a specific face.
|
||||
#style: Italic
|
||||
|
||||
# Bold italic font face
|
||||
#bold_italic:
|
||||
# Font family
|
||||
#
|
||||
# If the bold italic family is not specified, it will fall back to the
|
||||
# value specified for the normal font.
|
||||
#family: monospace
|
||||
|
||||
# The `style` can be specified to pick a specific face.
|
||||
#style: Bold Italic
|
||||
|
||||
# Point size
|
||||
#size: 11.0
|
||||
|
||||
# Offset is the extra space around each character. `offset.y` can be thought of
|
||||
# as modifying the line spacing, and `offset.x` as modifying the letter spacing.
|
||||
#offset:
|
||||
# x: 0
|
||||
# y: 0
|
||||
|
||||
# Glyph offset determines the locations of the glyphs within their cells with
|
||||
# the default being at the bottom. Increasing `x` moves the glyph to the right,
|
||||
# increasing `y` moves the glyph upwards.
|
||||
#glyph_offset:
|
||||
# x: 0
|
||||
# y: 0
|
||||
|
||||
# Thin stroke font rendering (macOS only)
|
||||
#
|
||||
# Thin strokes are suitable for retina displays, but for non-retina screens
|
||||
# it is recommended to set `use_thin_strokes` to `false`
|
||||
#
|
||||
# macOS >= 10.14.x:
|
||||
#
|
||||
# If the font quality on non-retina display looks bad then set
|
||||
# `use_thin_strokes` to `true` and enable font smoothing by running the
|
||||
# following command:
|
||||
# `defaults write -g CGFontRenderingFontSmoothingDisabled -bool NO`
|
||||
#
|
||||
# This is a global setting and will require a log out or restart to take
|
||||
# effect.
|
||||
#use_thin_strokes: true
|
||||
|
||||
# If `true`, bold text is drawn using the bright color variants.
|
||||
#draw_bold_text_with_bright_colors: true
|
||||
|
||||
# Colors (Tomorrow Night Bright)
|
||||
#colors:
|
||||
# Default colors
|
||||
#primary:
|
||||
# background: '0x000000'
|
||||
# foreground: '0xeaeaea'
|
||||
|
||||
# Bright and dim foreground colors
|
||||
#
|
||||
# The dimmed foreground color is calculated automatically if it is not present.
|
||||
# If the bright foreground color is not set, or `draw_bold_text_with_bright_colors`
|
||||
# is `false`, the normal foreground color will be used.
|
||||
#dim_foreground: '0x9a9a9a'
|
||||
#bright_foreground: '0xffffff'
|
||||
|
||||
# Cursor colors
|
||||
#
|
||||
# Colors which should be used to draw the terminal cursor. If these are unset,
|
||||
# the cursor color will be the inverse of the cell color.
|
||||
#cursor:
|
||||
# text: '0x000000'
|
||||
# cursor: '0xffffff'
|
||||
|
||||
# Selection colors
|
||||
#
|
||||
# Colors which should be used to draw the selection area. If selection
|
||||
# background is unset, selection color will be the inverse of the cell colors.
|
||||
# If only text is unset the cell text color will remain the same.
|
||||
#selection:
|
||||
# text: '0xeaeaea'
|
||||
# background: '0x404040'
|
||||
|
||||
# Normal colors
|
||||
#normal:
|
||||
# black: '0x000000'
|
||||
# red: '0xd54e53'
|
||||
# green: '0xb9ca4a'
|
||||
# yellow: '0xe6c547'
|
||||
# blue: '0x7aa6da'
|
||||
# magenta: '0xc397d8'
|
||||
# cyan: '0x70c0ba'
|
||||
# white: '0xeaeaea'
|
||||
|
||||
# Bright colors
|
||||
#bright:
|
||||
# black: '0x666666'
|
||||
# red: '0xff3334'
|
||||
# green: '0x9ec400'
|
||||
# yellow: '0xe7c547'
|
||||
# blue: '0x7aa6da'
|
||||
# magenta: '0xb77ee0'
|
||||
# cyan: '0x54ced6'
|
||||
# white: '0xffffff'
|
||||
|
||||
# Dim colors
|
||||
#
|
||||
# If the dim colors are not set, they will be calculated automatically based
|
||||
# on the `normal` colors.
|
||||
#dim:
|
||||
# black: '0x000000'
|
||||
# red: '0x8c3336'
|
||||
# green: '0x7a8530'
|
||||
# yellow: '0x97822e'
|
||||
# blue: '0x506d8f'
|
||||
# magenta: '0x80638e'
|
||||
# cyan: '0x497e7a'
|
||||
# white: '0x9a9a9a'
|
||||
|
||||
# Indexed Colors
|
||||
#
|
||||
# The indexed colors include all colors from 16 to 256.
|
||||
# When these are not set, they're filled with sensible defaults.
|
||||
#
|
||||
# Example:
|
||||
# `- { index: 16, color: '0xff00ff' }`
|
||||
#
|
||||
#indexed_colors: []
|
||||
|
||||
# Visual Bell
|
||||
#
|
||||
# Any time the BEL code is received, Alacritty "rings" the visual bell. Once
|
||||
# rung, the terminal background will be set to white and transition back to the
|
||||
# default background color. You can control the rate of this transition by
|
||||
# setting the `duration` property (represented in milliseconds). You can also
|
||||
# configure the transition function by setting the `animation` property.
|
||||
#
|
||||
# Values for `animation`:
|
||||
# - Ease
|
||||
# - EaseOut
|
||||
# - EaseOutSine
|
||||
# - EaseOutQuad
|
||||
# - EaseOutCubic
|
||||
# - EaseOutQuart
|
||||
# - EaseOutQuint
|
||||
# - EaseOutExpo
|
||||
# - EaseOutCirc
|
||||
# - Linear
|
||||
#
|
||||
# Specifying a `duration` of `0` will disable the visual bell.
|
||||
#visual_bell:
|
||||
# animation: EaseOutExpo
|
||||
# duration: 0
|
||||
# color: '0xffffff'
|
||||
|
||||
# Background opacity
|
||||
#
|
||||
# Window opacity as a floating point number from `0.0` to `1.0`.
|
||||
# The value `0.0` is completely transparent and `1.0` is opaque.
|
||||
#background_opacity: 1.0
|
||||
|
||||
#selection:
|
||||
#semantic_escape_chars: ",│`|:\"' ()[]{}<>\t"
|
||||
|
||||
# When set to `true`, selected text will be copied to the primary clipboard.
|
||||
#save_to_clipboard: false
|
||||
|
||||
# Allow terminal applications to change Alacritty's window title.
|
||||
#dynamic_title: true
|
||||
|
||||
#cursor:
|
||||
# Cursor style
|
||||
#
|
||||
# Values for `style`:
|
||||
# - ▇ Block
|
||||
# - _ Underline
|
||||
# - | Beam
|
||||
#style: Block
|
||||
|
||||
# If this is `true`, the cursor will be rendered as a hollow box when the
|
||||
# window is not focused.
|
||||
#unfocused_hollow: true
|
||||
|
||||
# Live config reload (changes require restart)
|
||||
#live_config_reload: true
|
||||
|
||||
# Shell
|
||||
#
|
||||
# You can set `shell.program` to the path of your favorite shell, e.g. `/bin/fish`.
|
||||
# Entries in `shell.args` are passed unmodified as arguments to the shell.
|
||||
#
|
||||
# Default:
|
||||
# - (macOS) /bin/bash --login
|
||||
# - (Linux) user login shell
|
||||
# - (Windows) powershell
|
||||
#shell:
|
||||
# program: /bin/bash
|
||||
# args:
|
||||
# - --login
|
||||
|
||||
# Startup directory
|
||||
#
|
||||
# Directory the shell is started in. If this is unset, or `None`, the working
|
||||
# directory of the parent process will be used.
|
||||
#working_directory: None
|
||||
|
||||
# Windows 10 ConPTY backend (Windows only)
|
||||
#
|
||||
# This will enable better color support and may resolve other issues,
|
||||
# however this API and its implementation is still young and so is
|
||||
# disabled by default, as stability may not be as good as the winpty
|
||||
# backend.
|
||||
#
|
||||
# Alacritty will fall back to the WinPTY automatically if the ConPTY
|
||||
# backend cannot be initialized.
|
||||
#enable_experimental_conpty_backend: false
|
||||
|
||||
# Send ESC (\x1b) before characters when alt is pressed.
|
||||
#alt_send_esc: true
|
||||
|
||||
#debug:
|
||||
# Display the time it takes to redraw each frame.
|
||||
#render_timer: false
|
||||
|
||||
# Keep the log file after quitting Alacritty.
|
||||
#persistent_logging: false
|
||||
|
||||
# Log level
|
||||
#
|
||||
# Values for `log_level`:
|
||||
# - None
|
||||
# - Error
|
||||
# - Warn
|
||||
# - Info
|
||||
# - Debug
|
||||
# - Trace
|
||||
#log_level: Warn
|
||||
|
||||
# Print all received window events.
|
||||
#print_events: false
|
||||
|
||||
# Record all characters and escape sequences as test data.
|
||||
#ref_test: false
|
||||
|
||||
#mouse:
|
||||
# Click settings
|
||||
#
|
||||
# The `double_click` and `triple_click` settings control the time
|
||||
# alacritty should wait for accepting multiple clicks as one double
|
||||
# or triple click.
|
||||
#double_click: { threshold: 300 }
|
||||
#triple_click: { threshold: 300 }
|
||||
|
||||
# If this is `true`, the cursor is temporarily hidden when typing.
|
||||
#hide_when_typing: false
|
||||
|
||||
#url:
|
||||
# URL launcher
|
||||
#
|
||||
# This program is executed when clicking on a text which is recognized as a URL.
|
||||
# The URL is always added to the command as the last parameter.
|
||||
#
|
||||
# When set to `None`, URL launching will be disabled completely.
|
||||
#
|
||||
# Default:
|
||||
# - (macOS) open
|
||||
# - (Linux) xdg-open
|
||||
# - (Windows) explorer
|
||||
#launcher:
|
||||
# program: xdg-open
|
||||
# args: []
|
||||
|
||||
# URL modifiers
|
||||
#
|
||||
# These are the modifiers that need to be held down for opening URLs when clicking
|
||||
# on them. The available modifiers are documented in the key binding section.
|
||||
#modifiers: None
|
||||
|
||||
# Mouse bindings
|
||||
#
|
||||
# Mouse bindings are specified as a list of objects, much like the key
|
||||
# bindings further below.
|
||||
#
|
||||
# Each mouse binding will specify a:
|
||||
#
|
||||
# - `mouse`:
|
||||
#
|
||||
# - Middle
|
||||
# - Left
|
||||
# - Right
|
||||
# - Numeric identifier such as `5`
|
||||
#
|
||||
# - `action` (see key bindings)
|
||||
#
|
||||
# And optionally:
|
||||
#
|
||||
# - `mods` (see key bindings)
|
||||
#mouse_bindings:
|
||||
# - { mouse: Middle, action: PasteSelection }
|
||||
|
||||
# Key bindings
|
||||
#
|
||||
# Key bindings are specified as a list of objects. For example, this is the
|
||||
# default paste binding:
|
||||
#
|
||||
# `- { key: V, mods: Control|Shift, action: Paste }`
|
||||
#
|
||||
# Each key binding will specify a:
|
||||
#
|
||||
# - `key`: Identifier of the key pressed
|
||||
#
|
||||
# - A-Z
|
||||
# - F1-F24
|
||||
# - Key0-Key9
|
||||
#
|
||||
# A full list with available key codes can be found here:
|
||||
# https://docs.rs/glutin/*/glutin/event/enum.VirtualKeyCode.html#variants
|
||||
#
|
||||
# Instead of using the name of the keys, the `key` field also supports using
|
||||
# the scancode of the desired key. Scancodes have to be specified as a
|
||||
# decimal number. This command will allow you to display the hex scancodes
|
||||
# for certain keys:
|
||||
#
|
||||
# `showkey --scancodes`.
|
||||
#
|
||||
# Then exactly one of:
|
||||
#
|
||||
# - `chars`: Send a byte sequence to the running application
|
||||
#
|
||||
# The `chars` field writes the specified string to the terminal. This makes
|
||||
# it possible to pass escape sequences. To find escape codes for bindings
|
||||
# like `PageUp` (`"\x1b[5~"`), you can run the command `showkey -a` outside
|
||||
# of tmux. Note that applications use terminfo to map escape sequences back
|
||||
# to keys. It is therefore required to update the terminfo when changing an
|
||||
# escape sequence.
|
||||
#
|
||||
# - `action`: Execute a predefined action
|
||||
#
|
||||
# - Copy
|
||||
# - Paste
|
||||
# - PasteSelection
|
||||
# - IncreaseFontSize
|
||||
# - DecreaseFontSize
|
||||
# - ResetFontSize
|
||||
# - ScrollPageUp
|
||||
# - ScrollPageDown
|
||||
# - ScrollLineUp
|
||||
# - ScrollLineDown
|
||||
# - ScrollToTop
|
||||
# - ScrollToBottom
|
||||
# - ClearHistory
|
||||
# - Hide
|
||||
# - Quit
|
||||
# - ToggleFullscreen
|
||||
# - SpawnNewInstance
|
||||
# - ClearLogNotice
|
||||
# - ReceiveChar
|
||||
# - None
|
||||
#
|
||||
# (macOS only):
|
||||
# - ToggleSimpleFullscreen: Enters fullscreen without occupying another space
|
||||
#
|
||||
# - `command`: Fork and execute a specified command plus arguments
|
||||
#
|
||||
# The `command` field must be a map containing a `program` string and an
|
||||
# `args` array of command line parameter strings. For example:
|
||||
# `{ program: "alacritty", args: ["-e", "vttest"] }`
|
||||
#
|
||||
# And optionally:
|
||||
#
|
||||
# - `mods`: Key modifiers to filter binding actions
|
||||
#
|
||||
# - Command
|
||||
# - Control
|
||||
# - Option
|
||||
# - Super
|
||||
# - Shift
|
||||
# - Alt
|
||||
#
|
||||
# Multiple `mods` can be combined using `|` like this:
|
||||
# `mods: Control|Shift`.
|
||||
# Whitespace and capitalization are relevant and must match the example.
|
||||
#
|
||||
# - `mode`: Indicate a binding for only specific terminal reported modes
|
||||
#
|
||||
# This is mainly used to send applications the correct escape sequences
|
||||
# when in different modes.
|
||||
#
|
||||
# - AppCursor
|
||||
# - AppKeypad
|
||||
# - Alt
|
||||
#
|
||||
# A `~` operator can be used before a mode to apply the binding whenever
|
||||
# the mode is *not* active, e.g. `~Alt`.
|
||||
#
|
||||
# Bindings are always filled by default, but will be replaced when a new
|
||||
# binding with the same triggers is defined. To unset a default binding, it can
|
||||
# be mapped to the `ReceiveChar` action. Alternatively, you can use `None` for
|
||||
# a no-op if you do not wish to receive input characters for that binding.
|
||||
#key_bindings:
|
||||
# (Windows/Linux only)
|
||||
#- { key: V, mods: Control|Shift, action: Paste }
|
||||
#- { key: C, mods: Control|Shift, action: Copy }
|
||||
#- { key: Insert, mods: Shift, action: PasteSelection }
|
||||
#- { key: Key0, mods: Control, action: ResetFontSize }
|
||||
#- { key: Equals, mods: Control, action: IncreaseFontSize }
|
||||
#- { key: Add, mods: Control, action: IncreaseFontSize }
|
||||
#- { key: Subtract, mods: Control, action: DecreaseFontSize }
|
||||
#- { key: Minus, mods: Control, action: DecreaseFontSize }
|
||||
#- { key: Return, mods: Alt, action: ToggleFullscreen }
|
||||
|
||||
# (macOS only)
|
||||
#- { key: Key0, mods: Command, action: ResetFontSize }
|
||||
#- { key: Equals, mods: Command, action: IncreaseFontSize }
|
||||
#- { key: Add, mods: Command, action: IncreaseFontSize }
|
||||
#- { key: Minus, mods: Command, action: DecreaseFontSize }
|
||||
#- { key: K, mods: Command, action: ClearHistory }
|
||||
#- { key: K, mods: Command, chars: "\x0c" }
|
||||
#- { key: V, mods: Command, action: Paste }
|
||||
#- { key: C, mods: Command, action: Copy }
|
||||
#- { key: H, mods: Command, action: Hide }
|
||||
#- { key: Q, mods: Command, action: Quit }
|
||||
#- { key: W, mods: Command, action: Quit }
|
||||
#- { key: F, mods: Command|Control, action: ToggleFullscreen }
|
||||
|
||||
#- { key: Paste, action: Paste }
|
||||
#- { key: Copy, action: Copy }
|
||||
#- { key: L, mods: Control, action: ClearLogNotice }
|
||||
#- { key: L, mods: Control, chars: "\x0c" }
|
||||
#- { key: PageUp, mods: Shift, action: ScrollPageUp, mode: ~Alt }
|
||||
#- { key: PageDown, mods: Shift, action: ScrollPageDown, mode: ~Alt }
|
||||
#- { key: Home, mods: Shift, action: ScrollToTop, mode: ~Alt }
|
||||
#- { key: End, mods: Shift, action: ScrollToBottom, mode: ~Alt }
|
242
i3/config
Normal file
242
i3/config
Normal file
@ -0,0 +1,242 @@
|
||||
# This file has been auto-generated by i3-config-wizard(1).
|
||||
# It will not be overwritten, so edit it as you like.
|
||||
#
|
||||
# Should you change your keyboard layout some time, delete
|
||||
# this file and re-run i3-config-wizard(1).
|
||||
#
|
||||
|
||||
# i3 config file (v4)
|
||||
#
|
||||
# Please see https://i3wm.org/docs/userguide.html for a complete reference!
|
||||
|
||||
set $mod Mod1
|
||||
|
||||
# Font for window titles. Will also be used by the bar unless a different font
|
||||
# is used in the bar {} block below.
|
||||
font pango:NotoSans 12
|
||||
|
||||
# This font is widely installed, provides lots of unicode glyphs, right-to-left
|
||||
# text rendering and scalability on retina/hidpi displays (thanks to pango).
|
||||
#font pango:DejaVu Sans Mono 8
|
||||
|
||||
# Start XDG autostart .desktop files using dex. See also
|
||||
# https://wiki.archlinux.org/index.php/XDG_Autostart
|
||||
exec --no-startup-id dex --autostart --environment i3
|
||||
|
||||
# The combination of xss-lock, nm-applet and pactl is a popular choice, so
|
||||
# they are included here as an example. Modify as you see fit.
|
||||
exec --no-startup-id /usr/bin/gnome-keyring-daemon --start --components=gpg,pkcs11,secrets,ssh
|
||||
# xss-lock grabs a logind suspend inhibit lock and will use i3lock to lock the
|
||||
# screen before suspend. Use loginctl lock-session to lock your screen.
|
||||
exec --no-startup-id xss-lock --transfer-sleep-lock -- i3lock --nofork --ignore-empty-password -i /data/sync/images/wallpapers/stonebeach.png
|
||||
exec --no-startup-id xrand --output HDMI-0 --mode 1920x1080 --rate 120
|
||||
bindsym $mod+l exec i3lock --ignore-empty-password -i /data/sync/images/wallpapers/stonebeach.png
|
||||
|
||||
bindsym $mod+Shift+p exec systemctl poweroff
|
||||
bindsym Print exec flameshot gui -c
|
||||
# NetworkManager is the most popular way to manage wireless networks on Linux,
|
||||
# and nm-applet is a desktop environment-independent system tray GUI for it.
|
||||
|
||||
# applets
|
||||
exec --no-startup-id fcitx5
|
||||
exec --no-startup-id nm-applet
|
||||
exec --no-startup-id blueman-applet
|
||||
exec --no-startup-id feh --bg-fill '/data/sync/images/wallpapers/stonebeach.jpg'
|
||||
exec --no-startup-id owncloud
|
||||
exec --no-startup-id pasystray
|
||||
exec --no-startup-id polybar
|
||||
exec --no-startup-id xset m 1/1 0
|
||||
bindsym $mod+t exec --no-startup-id xinput disable 11
|
||||
bindsym $mod+Shift+t exec --no-startup-id xinput enable 11
|
||||
|
||||
set $refresh_i3status killall -SIGUSR1 i3status
|
||||
|
||||
# Use pactl to adjust volume in PulseAudio.
|
||||
bindsym XF86AudioRaiseVolume exec --no-startup-id wpctl set-volume @DEFAULT_SINK@ 0.02+ --limit 1 && $refresh_i3status
|
||||
bindsym XF86AudioLowerVolume exec --no-startup-id wpctl set-volume @DEFAULT_SINK@ 0.02- --limit 0 && $refresh_i3status
|
||||
bindsym XF86AudioMute exec --no-startup-id wpctl set-mute @DEFAULT_SINK@ toggle && $refresh_i3status
|
||||
bindsym XF86AudioMicMute exec --no-startup-id wpctl set-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status
|
||||
|
||||
# Media player key bindings (need media-sound/playerctl for playerctl.)
|
||||
bindsym XF86AudioPlay exec playerctl play
|
||||
bindsym XF86AudioPause exec playerctl pause
|
||||
bindsym XF86AudioNext exec playerctl next
|
||||
bindsym XF86AudioPrev exec playerctl previous
|
||||
bindcode $mod+61 exec playerctl play-pause
|
||||
bindcode $mod+60 exec --no-startup-id wpctl set-volume @DEFAULT_SINK@ 0.02+ --limit 1 && $refresh_i3status
|
||||
bindcode $mod+59 exec --no-startup-id wpctl set-volume @DEFAULT_SINK@ 0.02- --limit 0 && $refresh_i3status
|
||||
|
||||
# Brightness key bindings
|
||||
bindsym XF86MonBrightnessUp exec brightnessctl set +5%
|
||||
bindsym XF86MonBrightnessDown exec brightnessctl set 5%-
|
||||
|
||||
# Use Mouse+$mod to drag floating windows to their wanted position
|
||||
floating_modifier $mod
|
||||
|
||||
# move tiling windows via drag & drop by left-clicking into the title bar,
|
||||
# or left-clicking anywhere into the window while holding the floating modifier.
|
||||
#tiling_drag modifier titlebar
|
||||
#xrandr --output HDMI-2 --auto --right-of eDP1
|
||||
|
||||
# start a 3terminal
|
||||
#bindsym $mod+Return exec i3-sensible-terminal
|
||||
bindsym $mod+Return exec alacritty
|
||||
|
||||
# kill focused window
|
||||
bindsym $mod+Shift+q kill
|
||||
|
||||
# start dmenu (a program launcher)
|
||||
#bindsym $mod+d exec --no-startup-id j4-dmenu-desktop
|
||||
#bindsym $mod+d exec --no-startup-id dmenu
|
||||
|
||||
# A more modern dmenu replacement is rofi:
|
||||
# bindcode $mod+40 exec "rofi -modi drun,run -show drun"
|
||||
bindcode $mod+40 exec "rofi -modi drun,run -show drun"
|
||||
# There also is i3-dmenu-desktop which only displays applications shipping a
|
||||
# .desktop file. It is a wrapper around dmenu, so you need that installed.
|
||||
# bindcode $mod+40 exec --no-startup-id i3-dmenu-desktop
|
||||
|
||||
# change focus
|
||||
#bindsym $mod+j focus left
|
||||
#bindsym $mod+k focus down
|
||||
#bindsym $mod+l focus up
|
||||
#bindsym $mod+semicolon focus right
|
||||
|
||||
# alternatively, you can use the cursor keys:
|
||||
bindsym $mod+Left focus left
|
||||
bindsym $mod+Down focus down
|
||||
bindsym $mod+Up focus up
|
||||
bindsym $mod+Right focus right
|
||||
|
||||
# move focused window
|
||||
bindsym $mod+Shift+j move left
|
||||
bindsym $mod+Shift+k move down
|
||||
bindsym $mod+Shift+l move up
|
||||
bindsym $mod+Shift+semicolon move right
|
||||
|
||||
# alternatively, you can use the cursor keys:
|
||||
bindsym $mod+Shift+Left move left
|
||||
bindsym $mod+Shift+Down move down
|
||||
bindsym $mod+Shift+Up move up
|
||||
bindsym $mod+Shift+Right move right
|
||||
|
||||
# split in horizontal orientation
|
||||
bindsym $mod+h split h
|
||||
|
||||
# split in vertical orientation
|
||||
bindsym $mod+v split v
|
||||
|
||||
# enter fullscreen mode for the focused container
|
||||
bindsym $mod+f floating toggle
|
||||
bindsym $mod+Shift+space fullscreen toggle
|
||||
|
||||
# change container layout (stacked, tabbed, toggle split)
|
||||
bindsym $mod+s layout stacking
|
||||
bindsym $mod+w layout tabbed
|
||||
bindsym $mod+e layout toggle split
|
||||
|
||||
# toggle tiling / floating
|
||||
|
||||
# change focus between tiling / floating windows
|
||||
bindsym $mod+space focus mode_toggle
|
||||
|
||||
# focus the parent container
|
||||
bindsym $mod+a focus parent
|
||||
|
||||
# focus the child container
|
||||
#bindsym $mod+d focus child
|
||||
|
||||
# Define names for default workspaces for which we configure key bindings later on.
|
||||
# We use variables to avoid repeating the names in multiple places.
|
||||
set $ws1 "1"
|
||||
set $ws2 "2"
|
||||
set $ws3 "3"
|
||||
set $ws4 "4"
|
||||
set $ws5 "5"
|
||||
set $ws6 "6"
|
||||
set $ws7 "7"
|
||||
set $ws8 "8"
|
||||
set $ws9 "9"
|
||||
set $ws10 "10"
|
||||
|
||||
# switch to workspace
|
||||
bindsym $mod+1 workspace number $ws1
|
||||
bindsym $mod+2 workspace number $ws2
|
||||
bindsym $mod+3 workspace number $ws3
|
||||
bindsym $mod+4 workspace number $ws4
|
||||
bindsym $mod+5 workspace number $ws5
|
||||
bindsym $mod+6 workspace number $ws6
|
||||
bindsym $mod+7 workspace number $ws7
|
||||
bindsym $mod+8 workspace number $ws8
|
||||
bindsym $mod+9 workspace number $ws9
|
||||
bindsym $mod+0 workspace number $ws10
|
||||
|
||||
# move focused container to workspace
|
||||
bindsym $mod+Shift+1 move container to workspace number $ws1
|
||||
bindsym $mod+Shift+2 move container to workspace number $ws2
|
||||
bindsym $mod+Shift+3 move container to workspace number $ws3
|
||||
bindsym $mod+Shift+4 move container to workspace number $ws4
|
||||
bindsym $mod+Shift+5 move container to workspace number $ws5
|
||||
bindsym $mod+Shift+6 move container to workspace number $ws6
|
||||
bindsym $mod+Shift+7 move container to workspace number $ws7
|
||||
bindsym $mod+Shift+8 move container to workspace number $ws8
|
||||
bindsym $mod+Shift+9 move container to workspace number $ws9
|
||||
bindsym $mod+Shift+0 move container to workspace number $ws10
|
||||
|
||||
# reload the configuration file
|
||||
bindsym $mod+Shift+c reload
|
||||
# restart i3 inplace (preserves your layout/session, can be used to upgrade i3)
|
||||
bindsym $mod+Shift+r restart
|
||||
# exit i3 (logs you out of your X session)
|
||||
bindsym $mod+Shift+e exec i3-msg exit
|
||||
#bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'"
|
||||
|
||||
# resize window (you can also use the mouse for that)
|
||||
mode "resize" {
|
||||
# These bindings trigger as soon as you enter the resize mode
|
||||
|
||||
# Pressing left will shrink the window’s width.
|
||||
# Pressing right will grow the window’s width.
|
||||
# Pressing up will shrink the window’s height.
|
||||
# Pressing down will grow the window’s height.
|
||||
bindsym j resize shrink width 10 px or 10 ppt
|
||||
bindsym k resize grow height 10 px or 10 ppt
|
||||
bindsym l resize shrink height 10 px or 10 ppt
|
||||
bindsym semicolon resize grow width 10 px or 10 ppt
|
||||
|
||||
# same bindings, but for the arrow keys
|
||||
bindsym Left resize shrink width 10 px or 10 ppt
|
||||
bindsym Down resize grow height 10 px or 10 ppt
|
||||
bindsym Up resize shrink height 10 px or 10 ppt
|
||||
bindsym Right resize grow width 10 px or 10 ppt
|
||||
|
||||
# back to normal: Enter or Escape or $mod+r
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
bindsym $mod+r mode "default"
|
||||
}
|
||||
|
||||
bindsym $mod+r mode "resize"
|
||||
# Start i3bar to display a workspace bar (plus the system information i3status
|
||||
bindsym $mod+Shift+minus move scratchpad
|
||||
|
||||
# Show the first scratchpad window
|
||||
bindsym $mod+minus scratchpad show
|
||||
|
||||
|
||||
# jump to last used workspace
|
||||
bindsym $mod+Tab workspace back_and_forth
|
||||
|
||||
# class border bground text indicator child_border
|
||||
client.focused #000000 #c8c9c9 #0D100F #8A7564 #00FFF4
|
||||
client.placeholder #000000 #7A858D #FFFFFF #000000 #0d100f
|
||||
client.unfocused #000000 #7A858D #FFFFFF #000000 #0d100f
|
||||
client.focused_inactive #333333 #C8C9C9 #7A858D #484E50 #5F676A
|
||||
#focused_workspace #4c7899 #285577 #ffff
|
||||
# (No) Title Bars
|
||||
|
||||
for_window [class="^.*"] border pixel 1
|
||||
|
||||
#floating
|
||||
for_window [class="Signal"] floating enable
|
||||
for_window [class="Gajim"] floating enable
|
2
nvim/coc-settings.json
Normal file
2
nvim/coc-settings.json
Normal file
@ -0,0 +1,2 @@
|
||||
{"coc.preferences.diagnostic.displayByAle":1
|
||||
}
|
196
nvim/init.vim
Normal file
196
nvim/init.vim
Normal file
@ -0,0 +1,196 @@
|
||||
syntax on
|
||||
set number
|
||||
set cursorline
|
||||
set expandtab tabstop=4 shiftwidth=4 softtabstop=4
|
||||
set autoindent
|
||||
set spelllang=vi,en
|
||||
|
||||
|
||||
" Fold
|
||||
set foldmethod=syntax
|
||||
set foldlevel=1
|
||||
set foldnestmax=1
|
||||
set encoding=utf8
|
||||
|
||||
" Search
|
||||
set hlsearch
|
||||
nnoremap i :nohls<CR>i
|
||||
|
||||
" Plugin
|
||||
call plug#begin()
|
||||
Plug 'neoclide/coc.nvim', {'branch': 'release'}
|
||||
Plug 'dense-analysis/ale'
|
||||
Plug 'preservim/nerdtree'
|
||||
Plug 'preservim/nerdcommenter'
|
||||
Plug 'lervag/vimtex'
|
||||
Plug 'JuliaEditorSupport/julia-vim'
|
||||
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
|
||||
Plug 'junegunn/fzf.vim'
|
||||
Plug 'honza/vim-snippets'
|
||||
Plug 'vim-airline/vim-airline'
|
||||
Plug 'vim-airline/vim-airline-themes'
|
||||
Plug 'kevinhwang91/nvim-bqf'
|
||||
Plug 'morhetz/gruvbox'
|
||||
Plug 'tpope/vim-fugitive'
|
||||
Plug 'ynkdir/vim-diff'
|
||||
call plug#end()
|
||||
|
||||
"Color scheme
|
||||
"colorscheme iceberg
|
||||
"set background=light
|
||||
colorscheme gruvbox
|
||||
let g:gruvbox_contrast_light = 'hard'
|
||||
|
||||
|
||||
|
||||
"Open NERDTree
|
||||
:nnoremap <silent> <expr> <F2> g:NERDTree.IsOpen() ? "\:NERDTreeClose<CR>" : bufexists(expand('%')) ? "\:NERDTreeFind<CR>" : "\:NERDTree<CR>"
|
||||
|
||||
"Coc.nvim
|
||||
inoremap <silent><expr> <TAB>
|
||||
\ coc#pum#visible() ? coc#_select_confirm() :
|
||||
\ coc#expandableOrJumpable() ? "\<C-r>=coc#rpc#request('doKeymap', ['snippets-expand-jump',''])\<CR>" :
|
||||
\ CheckBackSpace() ? "\<TAB>" :
|
||||
\ coc#refresh()
|
||||
inoremap <silent><expr> <cr> pumvisible() ? coc#_select_confirm()
|
||||
\: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"
|
||||
|
||||
function! CheckBackSpace() abort
|
||||
let col = col('.') - 1
|
||||
return !col || getline('.')[col - 1] =~# '\s'
|
||||
endfunction
|
||||
|
||||
let g:coc_snippet_next = '<tab>'
|
||||
inoremap <silent><expr> <CR> coc#pum#visible() ? coc#pum#confirm()
|
||||
\: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"
|
||||
|
||||
" Comments
|
||||
let mapleader = ","
|
||||
|
||||
" remap save
|
||||
nnoremap <space> :w<CR>
|
||||
|
||||
" moving between windows
|
||||
nnoremap <C-h> <C-W>h
|
||||
nnoremap <C-j> <C-W>j
|
||||
nnoremap <C-k> <C-W>k
|
||||
nnoremap <C-l> <C-W>l
|
||||
nnoremap <C-Left> <C-W>h
|
||||
nnoremap <C-Down> <C-W>j
|
||||
nnoremap <C-Up> <C-W>k
|
||||
nnoremap <C-Right> <C-W>l
|
||||
nnoremap <leader>to :tabonly<CR>
|
||||
nnoremap <leader>o :only<CR>
|
||||
nnoremap <leader><tab> :tabn<CR>
|
||||
nnoremap <S-tab> :tabp<CR>
|
||||
|
||||
"set clipboard+=unnamedplus
|
||||
" " Copy to clipboard
|
||||
vnoremap <leader>y "+y
|
||||
nnoremap <leader>Y "+yg_
|
||||
nnoremap <leader>y "+y
|
||||
nnoremap <leader>yy "+yy
|
||||
|
||||
" " Paste from clipboard
|
||||
nnoremap <leader>p "+p
|
||||
nnoremap <leader>P "+P
|
||||
|
||||
|
||||
" FZF key mapping
|
||||
nnoremap <silent> <Leader>b :Buffers<CR>
|
||||
nnoremap <silent> <Leader>r :Rg<CR>
|
||||
nnoremap <silent> <Leader>f :Files<CR>
|
||||
nnoremap <silent> <Leader>g :GFiles<CR>
|
||||
nnoremap <silent> <Leader>w :Rg <C-R><C-W><CR>
|
||||
|
||||
filetype plugin on
|
||||
set splitright
|
||||
set splitbelow
|
||||
|
||||
|
||||
let g:input_lang = system('fcitx5-remote')
|
||||
function! FcitxOff()
|
||||
let l:input_status = system('fcitx5-remote')
|
||||
let g:input_lang = l:input_status
|
||||
if l:input_status == 2 "second input method
|
||||
silent! execute '!fcitx5-remote -c'
|
||||
endif
|
||||
endfunction
|
||||
|
||||
function! FcitxOn()
|
||||
let l:input_status = system('fcitx5-remote')
|
||||
if l:input_status == 1
|
||||
if g:input_lang == 2
|
||||
silent! execute '!fcitx5-remote -o'
|
||||
endif
|
||||
endif
|
||||
endfunction
|
||||
|
||||
|
||||
augroup fcitxHandler
|
||||
autocmd CmdLineEnter [/?] silent call FcitxOn()
|
||||
autocmd CmdLineLeave [/?] silent call FcitxOff()
|
||||
autocmd CmdLineEnter \? silent call FcitxOn()
|
||||
autocmd CmdLineLeave \? silent call FcitxOff()
|
||||
autocmd InsertEnter * silent call FcitxOn()
|
||||
autocmd InsertLeave * silent call FcitxOff()
|
||||
augroup END
|
||||
|
||||
"function! IBusOff()
|
||||
"" Lưu engine hiện tại
|
||||
"let g:ibus_prev_engine = system('ibus engine')
|
||||
"" Chuyển sang engine tiếng Anh
|
||||
"" Nếu bạn thấy cái cờ ở đây
|
||||
"" khả năng là font của bạn đang renderemoji lung tung...
|
||||
"" xkb : us :: eng (không có dấu cách)
|
||||
"silent! execute '!ibus engine xkb🇺🇸:eng'
|
||||
"endfunction
|
||||
|
||||
|
||||
|
||||
"function! IBusOn()
|
||||
"let l:current_engine = system('ibus engine')
|
||||
"" nếu engine được set trong normal mode thì
|
||||
"" lúc vào insert mode duùn luôn engine đó
|
||||
"if l:current_engine !~? 'xkb🇺🇸:eng'
|
||||
"let g:ibus_prev_engine = l:current_engine
|
||||
"endif
|
||||
"" Khôi phục lại engine
|
||||
"silent! execute '!ibus engine ' . g:ibus_prev_engine
|
||||
"endfunction
|
||||
|
||||
"augroup IBusHandler
|
||||
"" Khôi phục ibus engine khi tìm kiếm
|
||||
"autocmd CmdLineEnter [/?] silent call IBusOn()
|
||||
"autocmd CmdLineLeave [/?] silent call IBusOff()
|
||||
"autocmd CmdLineEnter \? silent call IBusOn()
|
||||
"autocmd CmdLineLeave \? silent call IBusOff()
|
||||
"" Khôi phục ibus engine khi vào insert mode
|
||||
"autocmd InsertEnter * silent call IBusOn()
|
||||
"" Tắt ibus engine khi vào normal mode
|
||||
"autocmd InsertLeave * silent call IBusOff()
|
||||
"augroup END
|
||||
|
||||
"silent call IBusOff()
|
||||
|
||||
let g:vimtex_view_method= 'zathura'
|
||||
|
||||
"Language tool
|
||||
map <F3> :ALEToggle<CR>
|
||||
|
||||
|
||||
"Use 24-bit (true-color) mode in Vim/Neovim when outside tmux.
|
||||
"If you're using tmux version 2.2 or later, you can remove the outermost $TMUX check and use tmux's 24-bit color support
|
||||
"(see < http://sunaku.github.io/tmux-24bit-color.html#usage > for more information.)
|
||||
if (empty($TMUX))
|
||||
if (has("nvim"))
|
||||
"For Neovim 0.1.3 and 0.1.4 < https://github.com/neovim/neovim/pull/2198 >
|
||||
let $NVIM_TUI_ENABLE_TRUE_COLOR=1
|
||||
endif
|
||||
"For Neovim > 0.1.5 and Vim > patch 7.4.1799 < https://github.com/vim/vim/commit/61be73bb0f965a895bfb064ea3e55476ac175162 >
|
||||
"Based on Vim patch 7.4.1770 (`guicolors` option) < https://github.com/vim/vim/commit/8a633e3427b47286869aa4b96f2bfc1fe65b25cd >
|
||||
" < https://github.com/neovim/neovim/wiki/Following-HEAD#20160511 >
|
||||
if (has("termguicolors"))
|
||||
set termguicolors
|
||||
endif
|
||||
endif
|
101
nvim/init.vim(server)
Normal file
101
nvim/init.vim(server)
Normal file
@ -0,0 +1,101 @@
|
||||
syntax on
|
||||
set number
|
||||
set cursorline
|
||||
set expandtab tabstop=4 shiftwidth=4 softtabstop=4
|
||||
set autoindent
|
||||
set spelllang=vi,en
|
||||
|
||||
" Fold
|
||||
set foldmethod=syntax
|
||||
set foldlevel=1
|
||||
set foldnestmax=1
|
||||
set encoding=utf8
|
||||
|
||||
" Search
|
||||
set hlsearch
|
||||
nnoremap i :nohls<CR>i
|
||||
|
||||
" Plugin
|
||||
call plug#begin()
|
||||
Plug 'neoclide/coc.nvim', {'branch': 'release'}
|
||||
Plug 'preservim/nerdtree'
|
||||
Plug 'preservim/nerdcommenter'
|
||||
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
|
||||
Plug 'junegunn/fzf.vim'
|
||||
Plug 'vim-airline/vim-airline'
|
||||
Plug 'vim-airline/vim-airline-themes'
|
||||
Plug 'kevinhwang91/nvim-bqf'
|
||||
Plug 'morhetz/gruvbox'
|
||||
Plug 'tpope/vim-fugitive'
|
||||
Plug 'ynkdir/vim-diff'
|
||||
call plug#end()
|
||||
|
||||
"Color scheme
|
||||
|
||||
colorscheme gruvbox
|
||||
let g:gruvbox_contrast_light = 'hard'
|
||||
|
||||
set background=dark
|
||||
|
||||
" Comments
|
||||
let mapleader = ","
|
||||
|
||||
"Open NERDTree
|
||||
:nnoremap <silent> <expr> <F2> g:NERDTree.IsOpen() ? "\:NERDTreeClose<CR>" : bufexists(expand('%')) ? "\:NERDTreeFind<CR>" : "\:NERDTree<CR>"
|
||||
|
||||
|
||||
"Coc.nvim
|
||||
inoremap <silent><expr> <TAB>
|
||||
\ coc#pum#visible() ? coc#_select_confirm() :
|
||||
\ coc#expandableOrJumpable() ? "\<C-r>=coc#rpc#request('doKeymap', ['snippets-expand-jump',''])\<CR>" :
|
||||
\ CheckBackSpace() ? "\<TAB>" :
|
||||
\ coc#refresh()
|
||||
|
||||
inoremap <silent><expr> <CR> coc#pum#visible() ? coc#_select_confirm() : coc#refresh()
|
||||
|
||||
function! CheckBackSpace() abort
|
||||
let col = col('.') - 1
|
||||
return !col || getline('.')[col - 1] =~# '\s'
|
||||
endfunction
|
||||
|
||||
let g:coc_snippet_next = '<tab>'
|
||||
" remap save
|
||||
nnoremap <space> :w<CR>
|
||||
|
||||
" moving between windows
|
||||
nnoremap <C-h> <C-W>h
|
||||
nnoremap <C-j> <C-W>j
|
||||
nnoremap <C-k> <C-W>k
|
||||
nnoremap <C-l> <C-W>l
|
||||
nnoremap <C-Left> <C-W>h
|
||||
nnoremap <C-Down> <C-W>j
|
||||
nnoremap <C-Up> <C-W>k
|
||||
nnoremap <C-Right> <C-W>l
|
||||
nnoremap <leader>to :tabonly<CR>
|
||||
nnoremap <leader>o :only<CR>
|
||||
nnoremap <leader><tab> :tabn<CR>
|
||||
nnoremap <S-tab> :tabp<CR>
|
||||
|
||||
"set clipboard+=unnamedplus
|
||||
" " Copy to clipboard
|
||||
vnoremap <leader>y "+y
|
||||
nnoremap <leader>Y "+yg_
|
||||
nnoremap <leader>y "+y
|
||||
nnoremap <leader>yy "+yy
|
||||
|
||||
" " Paste from clipboard
|
||||
nnoremap <leader>p "+p
|
||||
nnoremap <leader>P "+P
|
||||
|
||||
|
||||
" FZF key mapping
|
||||
nnoremap <silent> <Leader>b :Buffers<CR>
|
||||
nnoremap <silent> <Leader>r :Rg<CR>
|
||||
nnoremap <silent> <Leader>f :Files<CR>
|
||||
nnoremap <silent> <Leader>g :GFiles<CR>
|
||||
nnoremap <silent> <Leader>w :Rg <C-R><C-W><CR>
|
||||
|
||||
filetype plugin on
|
||||
set splitright
|
||||
set splitbelow
|
||||
|
227
nvim/latexmk.vim
Normal file
227
nvim/latexmk.vim
Normal file
@ -0,0 +1,227 @@
|
||||
" VimTeX - LaTeX plugin for Vim
|
||||
"
|
||||
" Maintainer: Karl Yngve Lervåg
|
||||
" Email: karl.yngve@gmail.com
|
||||
"
|
||||
|
||||
function! vimtex#compiler#latexmk#init(options) abort " {{{1
|
||||
return s:compiler.new(a:options)
|
||||
endfunction
|
||||
|
||||
" }}}1
|
||||
|
||||
function! vimtex#compiler#latexmk#get_rc_opt(root, opt, type, default) abort " {{{1
|
||||
"
|
||||
" Parse option from .latexmkrc.
|
||||
"
|
||||
" Arguments:
|
||||
" root Root of LaTeX project
|
||||
" opt Name of options
|
||||
" type 0 if string, 1 if integer, 2 if list
|
||||
" default Value to return if option not found in latexmkrc file
|
||||
"
|
||||
" Output:
|
||||
" [value, location]
|
||||
"
|
||||
" value Option value (integer or string)
|
||||
" location An integer that indicates where option was found
|
||||
" -1: not found (default value returned)
|
||||
" 0: global latexmkrc file
|
||||
" 1: local latexmkrc file
|
||||
"
|
||||
|
||||
if a:type == 0
|
||||
let l:pattern = '^\s*\$' . a:opt . '\s*=\s*[''"]\(.\+\)[''"]'
|
||||
elseif a:type == 1
|
||||
let l:pattern = '^\s*\$' . a:opt . '\s*=\s*\(\d\+\)'
|
||||
elseif a:type == 2
|
||||
let l:pattern = '^\s*@' . a:opt . '\s*=\s*(\(.*\))'
|
||||
else
|
||||
throw 'VimTeX: Argument error'
|
||||
endif
|
||||
|
||||
" Candidate files
|
||||
" - each element is a pair [path_to_file, is_local_rc_file].
|
||||
let l:files = [
|
||||
\ [a:root . '/latexmkrc', 1],
|
||||
\ [a:root . '/.latexmkrc', 1],
|
||||
\ [fnamemodify('~/.latexmkrc', ':p'), 0],
|
||||
\ [fnamemodify(
|
||||
\ !empty($XDG_CONFIG_HOME) ? $XDG_CONFIG_HOME : '~/.config', ':p')
|
||||
\ . '/latexmk/latexmkrc', 0]
|
||||
\]
|
||||
|
||||
let l:result = [a:default, -1]
|
||||
|
||||
for [l:file, l:is_local] in l:files
|
||||
if filereadable(l:file)
|
||||
let l:match = matchlist(readfile(l:file), l:pattern)
|
||||
if len(l:match) > 1
|
||||
let l:result = [l:match[1], l:is_local]
|
||||
break
|
||||
end
|
||||
endif
|
||||
endfor
|
||||
|
||||
" Parse the list
|
||||
if a:type == 2 && l:result[1] > -1
|
||||
let l:array = split(l:result[0], ',')
|
||||
let l:result[0] = []
|
||||
for l:x in l:array
|
||||
let l:x = substitute(l:x, "^'", '', '')
|
||||
let l:x = substitute(l:x, "'$", '', '')
|
||||
let l:result[0] += [l:x]
|
||||
endfor
|
||||
endif
|
||||
|
||||
return l:result
|
||||
endfunction
|
||||
|
||||
" }}}1
|
||||
|
||||
|
||||
let s:compiler = vimtex#compiler#_template#new({
|
||||
\ 'name' : 'latexmk',
|
||||
\ 'callback' : 1,
|
||||
\ 'continuous': 1,
|
||||
\ 'executable' : 'latexmk',
|
||||
\ 'options' : [
|
||||
\ '-verbose',
|
||||
\ '-file-line-error',
|
||||
\ '-synctex=1',
|
||||
\ '-interaction=nonstopmode',
|
||||
\ '-shell-escape',
|
||||
\ '-output-directory=./output',
|
||||
\ '-aux-directory=./',
|
||||
\ ],
|
||||
\})
|
||||
|
||||
function! s:compiler.__check_requirements() abort dict " {{{1
|
||||
if !executable(self.executable)
|
||||
call vimtex#log#warning(self.executable . ' is not executable')
|
||||
throw 'VimTeX: Requirements not met'
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" }}}1
|
||||
function! s:compiler.__init() abort dict " {{{1
|
||||
" Check if .latexmkrc sets the build_dir - if so this should be respected
|
||||
let l:out_dir =
|
||||
\ vimtex#compiler#latexmk#get_rc_opt(self.state.root, 'out_dir', 0, '')[0]
|
||||
if !empty(l:out_dir)
|
||||
if !empty(self.build_dir) && (self.build_dir !=# l:out_dir)
|
||||
call vimtex#log#warning(
|
||||
\ 'Setting out_dir from latexmkrc overrides build_dir!',
|
||||
\ 'Changed build_dir from: ' . self.build_dir,
|
||||
\ 'Changed build_dir to: ' . l:out_dir)
|
||||
endif
|
||||
let self.build_dir = l:out_dir
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" }}}1
|
||||
function! s:compiler.__build_cmd() abort dict " {{{1
|
||||
let l:cmd = (has('win32')
|
||||
\ ? 'set max_print_line=2000 & '
|
||||
\ : 'max_print_line=2000 ') . self.executable
|
||||
|
||||
let l:cmd .= ' ' . join(self.options)
|
||||
let l:cmd .= ' ' . self.get_engine()
|
||||
|
||||
if !empty(self.build_dir)
|
||||
let l:cmd .= ' -outdir=' . fnameescape(self.build_dir)
|
||||
endif
|
||||
|
||||
if self.continuous
|
||||
let l:cmd .= ' -pvc -view=none'
|
||||
|
||||
if self.callback
|
||||
for [l:opt, l:val] in [
|
||||
\ ['compiling_cmd', 'vimtex_compiler_callback_compiling'],
|
||||
\ ['success_cmd', 'vimtex_compiler_callback_success'],
|
||||
\ ['failure_cmd', 'vimtex_compiler_callback_failure'],
|
||||
\]
|
||||
let l:cmd .= s:wrap_option_appendcmd(l:opt, 'echo ' . l:val)
|
||||
endfor
|
||||
endif
|
||||
endif
|
||||
|
||||
return l:cmd . ' ' . vimtex#util#shellescape(self.state.base)
|
||||
endfunction
|
||||
|
||||
" }}}1
|
||||
function! s:compiler.__pprint_append() abort dict " {{{1
|
||||
return [
|
||||
\ ['callback', self.callback],
|
||||
\ ['continuous', self.continuous],
|
||||
\ ['executable', self.executable],
|
||||
\]
|
||||
endfunction
|
||||
|
||||
" }}}1
|
||||
|
||||
function! s:compiler.clean(full) abort dict " {{{1
|
||||
let l:cmd = self.executable . ' ' . (a:full ? '-C ' : '-c ')
|
||||
if !empty(self.build_dir)
|
||||
let l:cmd .= printf(' -outdir=%s ', fnameescape(self.build_dir))
|
||||
endif
|
||||
let l:cmd .= vimtex#util#shellescape(self.state.base)
|
||||
|
||||
call vimtex#jobs#run(l:cmd, {'cwd': self.state.root})
|
||||
endfunction
|
||||
|
||||
" }}}1
|
||||
function! s:compiler.get_engine() abort dict " {{{1
|
||||
" Parse tex_program from TeX directive
|
||||
let l:tex_program_directive = self.state.get_tex_program()
|
||||
let l:tex_program = l:tex_program_directive
|
||||
|
||||
|
||||
" Parse tex_program from from pdf_mode option in .latexmkrc
|
||||
let [l:pdf_mode, l:is_local] =
|
||||
\ vimtex#compiler#latexmk#get_rc_opt(self.state.root, 'pdf_mode', 1, -1)
|
||||
|
||||
if l:pdf_mode >= 1 && l:pdf_mode <= 5
|
||||
let l:tex_program_pdfmode = [
|
||||
\ 'pdflatex',
|
||||
\ 'pdfps',
|
||||
\ 'pdfdvi',
|
||||
\ 'lualatex',
|
||||
\ 'xelatex',
|
||||
\][l:pdf_mode-1]
|
||||
|
||||
" Use pdf_mode if there is no TeX directive
|
||||
if l:tex_program_directive ==# '_'
|
||||
let l:tex_program = l:tex_program_pdfmode
|
||||
elseif l:is_local && l:tex_program_directive !=# l:tex_program_pdfmode
|
||||
" Give warning when there may be a confusing conflict
|
||||
call vimtex#log#warning(
|
||||
\ 'Value of pdf_mode from latexmkrc is inconsistent with ' .
|
||||
\ 'TeX program directive!',
|
||||
\ 'TeX program: ' . l:tex_program_directive,
|
||||
\ 'pdf_mode: ' . l:tex_program_pdfmode,
|
||||
\ 'The value of pdf_mode will be ignored.')
|
||||
endif
|
||||
endif
|
||||
|
||||
return get(g:vimtex_compiler_latexmk_engines,
|
||||
\ l:tex_program,
|
||||
\ g:vimtex_compiler_latexmk_engines._)
|
||||
endfunction
|
||||
|
||||
" }}}1
|
||||
|
||||
|
||||
function! s:wrap_option_appendcmd(name, value) abort " {{{1
|
||||
" Note: On Linux, we use double quoted perl strings; these interpolate
|
||||
" variables. One should therefore NOT pass values that contain `$`.
|
||||
let l:win_cmd_sep = has('nvim') ? '^&' : '&'
|
||||
let l:common = printf('$%s = ($%s ? $%s', a:name, a:name, a:name)
|
||||
return has('win32')
|
||||
\ ? printf(' -e "%s . '' %s '' : '''') . ''%s''"',
|
||||
\ l:common, l:win_cmd_sep, a:value)
|
||||
\ : printf(' -e ''%s . " ; " : "") . "%s"''',
|
||||
\ l:common, a:value)
|
||||
endfunction
|
||||
|
||||
"}}}1
|
BIN
nvim/site/vi.utf-8.spl
Normal file
BIN
nvim/site/vi.utf-8.spl
Normal file
Binary file not shown.
66
nvim/vi.aff
Normal file
66
nvim/vi.aff
Normal file
@ -0,0 +1,66 @@
|
||||
SET UTF-8
|
||||
TRY naohiugtcedmylrbvskpxqfjwzNAOHIUGTCEDMYLRBVSKPXQFJWZ-
|
||||
|
||||
MAP 40
|
||||
MAP ảã
|
||||
MAP ẩẫ
|
||||
MAP ẳẵ
|
||||
MAP ẻẽ
|
||||
MAP ểễ
|
||||
MAP ỉĩ
|
||||
MAP ỏõ
|
||||
MAP ổỗ
|
||||
MAP ởỡ
|
||||
MAP ủũ
|
||||
MAP ửữ
|
||||
MAP ỷỹ
|
||||
MAP (iêu)(iu)(ưu)
|
||||
MAP (iếu)(íu)(ứu)
|
||||
MAP (iều)(ìu)(ừu)
|
||||
MAP (iểu)(ỉu)(ửu)
|
||||
MAP (iễu)(ĩu)(ữu)
|
||||
MAP (iệu)(ịu)(ựu)
|
||||
MAP (ịc)(ịch)
|
||||
MAP (íc)(ích)
|
||||
MAP aàảãáạ
|
||||
MAP ăằẳẵắặ
|
||||
MAP âầẩẫấậ
|
||||
MAP eèẻẽéẹ
|
||||
MAP êềểễếệ
|
||||
MAP iìỉĩíị
|
||||
MAP oòỏõóọ
|
||||
MAP ôồổỗốộ
|
||||
MAP ơờởỡớợ
|
||||
MAP uùủũúụ
|
||||
MAP ưừửữứự
|
||||
MAP yỳỷỹýỵ
|
||||
MAP aàảãáạăằẳẵắặâầẩẫấậ
|
||||
MAP eèẻẽéẹêềểễếệ
|
||||
MAP oòỏõóọôồổỗốộơờởỡớợ
|
||||
MAP uùủũúụưừửữứự
|
||||
MAP óòỏaàáả
|
||||
MAP óóỏeèéẻ
|
||||
MAP úùủụyýỳỷỵ
|
||||
MAP uưoờớỡởợ
|
||||
|
||||
REP 20
|
||||
REP dz d
|
||||
REP ch tr
|
||||
REP d đ
|
||||
REP đ d
|
||||
REP d gi
|
||||
REP f ph
|
||||
REP g gh
|
||||
REP gh g
|
||||
REP gi d
|
||||
REP j g
|
||||
REP ng ngh
|
||||
REP ngh ng
|
||||
REP ou uo
|
||||
REP ou ươ
|
||||
REP uo ươ
|
||||
REP s x
|
||||
REP tr ch
|
||||
REP x s
|
||||
REP w qu
|
||||
REP z d
|
6642
nvim/vi.dic
Normal file
6642
nvim/vi.dic
Normal file
File diff suppressed because it is too large
Load Diff
BIN
nvim/vi.dic.utf-8.spl
Normal file
BIN
nvim/vi.dic.utf-8.spl
Normal file
Binary file not shown.
476
pipewire/minimal.conf
Normal file
476
pipewire/minimal.conf
Normal file
@ -0,0 +1,476 @@
|
||||
# Simple daemon config file for PipeWire version "1.2.3" #
|
||||
#
|
||||
# Copy and edit this file in /etc/pipewire for system-wide changes
|
||||
# or in ~/.config/pipewire for local changes.
|
||||
#
|
||||
# It is also possible to place a file with an updated section in
|
||||
# /etc/pipewire/minimal.conf.d/ for system-wide changes or in
|
||||
# ~/.config/pipewire/minimal.conf.d/ for local changes.
|
||||
#
|
||||
|
||||
context.properties = {
|
||||
## Configure properties in the system.
|
||||
#library.name.system = support/libspa-support
|
||||
#context.data-loop.library.name.system = support/libspa-support
|
||||
#support.dbus = true
|
||||
#link.max-buffers = 64
|
||||
link.max-buffers = 16 # version < 3 clients can't handle more
|
||||
#mem.warn-mlock = false
|
||||
#mem.allow-mlock = true
|
||||
#mem.mlock-all = false
|
||||
#clock.power-of-two-quantum = true
|
||||
#log.level = 2
|
||||
#cpu.zero.denormals = false
|
||||
|
||||
core.daemon = true # listening for socket connections
|
||||
core.name = pipewire-0 # core name and socket name
|
||||
|
||||
## Properties for the DSP configuration.
|
||||
#default.clock.rate = 48000
|
||||
#default.clock.allowed-rates = [ 48000 ]
|
||||
#default.clock.quantum = 1024
|
||||
#default.clock.min-quantum = 32
|
||||
#default.clock.max-quantum = 2048
|
||||
#default.clock.quantum-limit = 8192
|
||||
#default.clock.quantum-floor = 4
|
||||
#default.video.width = 640
|
||||
#default.video.height = 480
|
||||
#default.video.rate.num = 25
|
||||
#default.video.rate.denom = 1
|
||||
#
|
||||
settings.check-quantum = true
|
||||
settings.check-rate = true
|
||||
|
||||
# This config can use udev or hardcoded ALSA devices. Make sure to
|
||||
# change the alsa device below when disabling udev
|
||||
minimal.use-udev = true
|
||||
|
||||
# Load the pulseaudio emulation daemon
|
||||
minimal.use-pulse = true
|
||||
}
|
||||
|
||||
context.properties.rules = [
|
||||
{ matches = [ { cpu.vm.name = !null } ]
|
||||
actions = {
|
||||
update-props = {
|
||||
# These overrides are only applied when running in a vm.
|
||||
default.clock.min-quantum = 1024
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
context.spa-libs = {
|
||||
#<factory-name regex> = <library-name>
|
||||
#
|
||||
# Used to find spa factory names. It maps an spa factory name
|
||||
# regular expression to a library name that should contain
|
||||
# that factory.
|
||||
#
|
||||
audio.convert.* = audioconvert/libspa-audioconvert
|
||||
audio.adapt = audioconvert/libspa-audioconvert
|
||||
api.alsa.* = alsa/libspa-alsa
|
||||
support.* = support/libspa-support
|
||||
}
|
||||
|
||||
context.modules = [
|
||||
#{ name = <module-name>
|
||||
# ( args = { <key> = <value> ... } )
|
||||
# ( flags = [ ( ifexists ) ( nofail ) ] )
|
||||
# ( condition = [ { <key> = <value> ... } ... ] )
|
||||
#}
|
||||
#
|
||||
# Loads a module with the given parameters.
|
||||
# If ifexists is given, the module is ignored when it is not found.
|
||||
# If nofail is given, module initialization failures are ignored.
|
||||
#
|
||||
|
||||
# Uses realtime scheduling to boost the audio thread priorities. This uses
|
||||
# RTKit if the user doesn't have permission to use regular realtime
|
||||
# scheduling.
|
||||
{ name = libpipewire-module-rt
|
||||
args = {
|
||||
nice.level = -11
|
||||
rt.prio = 88
|
||||
#rt.time.soft = -1
|
||||
#rt.time.hard = -1
|
||||
}
|
||||
flags = [ ifexists nofail ]
|
||||
}
|
||||
|
||||
# The native communication protocol.
|
||||
{ name = libpipewire-module-protocol-native }
|
||||
|
||||
# The profile module. Allows application to access profiler
|
||||
# and performance data. It provides an interface that is used
|
||||
# by pw-top and pw-profiler.
|
||||
{ name = libpipewire-module-profiler }
|
||||
|
||||
# Allows applications to create metadata objects. It creates
|
||||
# a factory for Metadata objects.
|
||||
{ name = libpipewire-module-metadata }
|
||||
|
||||
# Creates a factory for making nodes that run in the
|
||||
# context of the PipeWire server.
|
||||
{ name = libpipewire-module-spa-node-factory }
|
||||
|
||||
{ name = libpipewire-module-spa-device-factory }
|
||||
|
||||
# Allows creating nodes that run in the context of the
|
||||
# client. Is used by all clients that want to provide
|
||||
# data to PipeWire.
|
||||
{ name = libpipewire-module-client-node }
|
||||
|
||||
# The access module can perform access checks and block
|
||||
# new clients.
|
||||
{ name = libpipewire-module-access
|
||||
args = {
|
||||
# access.allowed to list an array of paths of allowed
|
||||
# apps.
|
||||
#access.allowed = [
|
||||
# /usr/bin/pipewire-media-session
|
||||
#]
|
||||
|
||||
# An array of rejected paths.
|
||||
#access.rejected = [ ]
|
||||
|
||||
# An array of paths with restricted access.
|
||||
#access.restricted = [ ]
|
||||
|
||||
# Anything not in the above lists gets assigned the
|
||||
# access.force permission.
|
||||
#access.force = flatpak
|
||||
}
|
||||
}
|
||||
|
||||
# Makes a factory for wrapping nodes in an adapter with a
|
||||
# converter and resampler.
|
||||
{ name = libpipewire-module-adapter }
|
||||
|
||||
# Makes a factory for creating links between ports.
|
||||
{ name = libpipewire-module-link-factory }
|
||||
|
||||
{ name = libpipewire-module-protocol-pulse
|
||||
condition = [ { minimal.use-pulse = true } ]
|
||||
}
|
||||
]
|
||||
|
||||
pulse.properties = {
|
||||
# the addresses this server listens on
|
||||
server.address = [
|
||||
"unix:native"
|
||||
]
|
||||
}
|
||||
|
||||
stream.properties = {
|
||||
adapter.auto-port-config = { mode = dsp }
|
||||
}
|
||||
|
||||
context.objects = [
|
||||
#{ factory = <factory-name>
|
||||
# ( args = { <key> = <value> ... } )
|
||||
# ( flags = [ ( nofail ) ] )
|
||||
# ( condition = [ { <key> = <value> ... } ... ] )
|
||||
#}
|
||||
#
|
||||
# Creates an object from a PipeWire factory with the given parameters.
|
||||
# If nofail is given, errors are ignored (and no object is created).
|
||||
#
|
||||
#{ factory = spa-node-factory args = { factory.name = videotestsrc node.name = videotestsrc node.description = videotestsrc "Spa:Pod:Object:Param:Props:patternType" = 1 } }
|
||||
#{ factory = spa-device-factory args = { factory.name = api.jack.device foo=bar } flags = [ nofail ] }
|
||||
#{ factory = spa-device-factory args = { factory.name = api.alsa.enum.udev } }
|
||||
#{ factory = spa-node-factory args = { factory.name = api.alsa.seq.bridge node.name = Internal-MIDI-Bridge } }
|
||||
#{ factory = adapter args = { factory.name = audiotestsrc node.name = my-test node.description = audiotestsrc } }
|
||||
#{ factory = spa-node-factory args = { factory.name = api.vulkan.compute.source node.name = my-compute-source } }
|
||||
|
||||
# Make a default metadata store
|
||||
{ factory = metadata
|
||||
args = {
|
||||
metadata.name = default
|
||||
# metadata.values = [
|
||||
# { key = default.audio.sink value = { name = somesink } }
|
||||
# { key = default.audio.source value = { name = somesource } }
|
||||
# ]
|
||||
}
|
||||
}
|
||||
|
||||
# A default dummy driver. This handles nodes marked with the "node.always-process"
|
||||
# property when no other driver is currently active. JACK clients need this.
|
||||
{ factory = spa-node-factory
|
||||
args = {
|
||||
factory.name = support.node.driver
|
||||
node.name = Dummy-Driver
|
||||
node.group = pipewire.dummy
|
||||
priority.driver = 20000
|
||||
}
|
||||
}
|
||||
{ factory = spa-node-factory
|
||||
args = {
|
||||
factory.name = support.node.driver
|
||||
node.name = Freewheel-Driver
|
||||
priority.driver = 19000
|
||||
node.group = pipewire.freewheel
|
||||
node.freewheel = true
|
||||
#freewheel.wait = 10
|
||||
}
|
||||
}
|
||||
|
||||
# This creates a ALSA udev device that will enumerate all
|
||||
# ALSA devices. Because it is using ACP and has the auto-profile
|
||||
# property set, this will enable a profile and create associated
|
||||
# nodes, which will be automatically configured to their best
|
||||
# configuration with the auto-port-config settings.
|
||||
# Extra node and device params can be given with node.param and
|
||||
# device.param prefixes.
|
||||
{ factory = spa-device-factory
|
||||
args = {
|
||||
factory.name = api.alsa.enum.udev
|
||||
alsa.use-acp = true
|
||||
device.object.properties = {
|
||||
api.acp.auto-profile = true
|
||||
api.acp.auto-port = true
|
||||
device.object.properties = {
|
||||
node.adapter = audio.adapt
|
||||
resample.disable = false
|
||||
adapter.auto-port-config = {
|
||||
mode = dsp
|
||||
monitor = false
|
||||
control = false
|
||||
position = preserve # unknown, aux
|
||||
}
|
||||
#node.param.Props = {
|
||||
# channelVolumes = [ 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.6 ]
|
||||
#}
|
||||
}
|
||||
#device.param.Profile = {
|
||||
# #idx = 0
|
||||
# name = pro-audio
|
||||
#}
|
||||
}
|
||||
}
|
||||
condition = [ { minimal.use-udev = true } ]
|
||||
}
|
||||
|
||||
# This creates a single PCM source device for the given
|
||||
# alsa device path hw:0. You can change source to sink
|
||||
# to make a sink in the same way.
|
||||
{ factory = adapter
|
||||
args = {
|
||||
factory.name = api.alsa.pcm.source
|
||||
node.name = "system"
|
||||
node.description = "system"
|
||||
media.class = "Audio/Source"
|
||||
api.alsa.path = "hw:4"
|
||||
#api.alsa.period-size = 0
|
||||
#api.alsa.period-num = 0
|
||||
#api.alsa.headroom = 0
|
||||
#api.alsa.start-delay = 0
|
||||
#api.alsa.disable-mmap = false
|
||||
#api.alsa.disable-batch = false
|
||||
#api.alsa.use-chmap = false
|
||||
#api.alsa.multirate = true
|
||||
#latency.internal.rate = 0
|
||||
#latency.internal.ns = 0
|
||||
#clock.name = api.alsa.0
|
||||
node.suspend-on-idle = false
|
||||
#audio.format = "S32"
|
||||
#audio.rate = 48000
|
||||
#audio.allowed-rates = [ ]
|
||||
#audio.channels = 4
|
||||
#audio.position = [ FL FR RL RR ]
|
||||
#resample.quality = 4
|
||||
resample.disable = true
|
||||
#monitor.channel-volumes = false
|
||||
#channelmix.normalize = false
|
||||
#channelmix.mix-lfe = true
|
||||
#channelmix.upmix = true
|
||||
#channelmix.upmix-method = psd # none, simple
|
||||
#channelmix.lfe-cutoff = 150
|
||||
#channelmix.fc-cutoff = 12000
|
||||
#channelmix.rear-delay = 12.0
|
||||
#channelmix.stereo-widen = 0.0
|
||||
#channelmix.hilbert-taps = 0
|
||||
#channelmix.disable = false
|
||||
#dither.noise = 0
|
||||
#node.param.Props = {
|
||||
# params = [
|
||||
# audio.channels 6
|
||||
# ]
|
||||
#}
|
||||
adapter.auto-port-config = {
|
||||
mode = dsp
|
||||
monitor = false
|
||||
control = false
|
||||
position = unknown # aux, preserve
|
||||
}
|
||||
#node.param.PortConfig = {
|
||||
# direction = Output
|
||||
# mode = dsp
|
||||
# format = {
|
||||
# mediaType = audio
|
||||
# mediaSubtype = raw
|
||||
# format = F32
|
||||
# rate = 48000
|
||||
# channels = 4
|
||||
# position = [ FL FR RL RR ]
|
||||
# }
|
||||
#}
|
||||
#node.param.Props = {
|
||||
# channelVolumes = [ 0.5 0.4 0.3 0.5 ]
|
||||
#}
|
||||
}
|
||||
condition = [ { minimal.use-udev = false } ]
|
||||
}
|
||||
{ factory = adapter
|
||||
args = {
|
||||
factory.name = api.alsa.pcm.sink
|
||||
node.name = "system"
|
||||
node.description = "system"
|
||||
media.class = "Audio/Sink"
|
||||
api.alsa.path = "hw:4"
|
||||
#api.alsa.period-size = 0
|
||||
#api.alsa.period-num = 0
|
||||
#api.alsa.headroom = 0
|
||||
#api.alsa.start-delay = 0
|
||||
#api.alsa.disable-mmap = false
|
||||
#api.alsa.disable-batch = false
|
||||
#api.alsa.use-chmap = false
|
||||
#api.alsa.multirate = true
|
||||
#latency.internal.rate = 0
|
||||
#latency.internal.ns = 0
|
||||
#clock.name = api.alsa.0
|
||||
node.suspend-on-idle = false
|
||||
#audio.format = "S32"
|
||||
#audio.rate = 48000
|
||||
#audio.allowed-rates = [ ]
|
||||
#audio.channels = 2
|
||||
#audio.position = "FL,FR"
|
||||
#resample.quality = 4
|
||||
resample.disable = true
|
||||
#channelmix.normalize = false
|
||||
#channelmix.mix-lfe = true
|
||||
#channelmix.upmix = true
|
||||
#channelmix.upmix-method = psd # none, simple
|
||||
#channelmix.lfe-cutoff = 150
|
||||
#channelmix.fc-cutoff = 12000
|
||||
#channelmix.rear-delay = 12.0
|
||||
#channelmix.stereo-widen = 0.0
|
||||
#channelmix.hilbert-taps = 0
|
||||
#channelmix.disable = false
|
||||
#dither.noise = 0
|
||||
#node.param.Props = {
|
||||
# params = [
|
||||
# audio.format S16
|
||||
# ]
|
||||
#}
|
||||
adapter.auto-port-config = {
|
||||
mode = dsp
|
||||
monitor = false
|
||||
control = false
|
||||
position = unknown # aux, preserve
|
||||
}
|
||||
#node.param.PortConfig = {
|
||||
# direction = Input
|
||||
# mode = dsp
|
||||
# monitor = true
|
||||
# format = {
|
||||
# mediaType = audio
|
||||
# mediaSubtype = raw
|
||||
# format = F32
|
||||
# rate = 48000
|
||||
# channels = 4
|
||||
# }
|
||||
#}
|
||||
#node.param.Props = {
|
||||
# channelVolumes = [ 0.5 0.4 0.3 0.5 ]
|
||||
#}
|
||||
}
|
||||
condition = [ { minimal.use-udev = false } ]
|
||||
}
|
||||
# This creates a new Source node. It will have input ports
|
||||
# that you can link, to provide audio for this source.
|
||||
#{ factory = adapter
|
||||
# args = {
|
||||
# factory.name = support.null-audio-sink
|
||||
# node.name = "my-mic"
|
||||
# node.description = "Microphone"
|
||||
# media.class = "Audio/Source/Virtual"
|
||||
# audio.position = "FL,FR"
|
||||
# monitor.passthrough = true
|
||||
# adapter.auto-port-config = {
|
||||
# mode = dsp
|
||||
# monitor = true
|
||||
# position = preserve # unknown, aux, preserve
|
||||
# }
|
||||
# }
|
||||
#}
|
||||
# This creates a new link between the source and the virtual
|
||||
# source ports.
|
||||
#{ factory = link-factory
|
||||
# args = {
|
||||
# link.output.node = system
|
||||
# link.output.port = capture_1
|
||||
# link.input.node = my-mic
|
||||
# link.input.port = input_FL
|
||||
# }
|
||||
#}
|
||||
#{ factory = link-factory
|
||||
# args = {
|
||||
# link.output.node = system
|
||||
# link.output.port = capture_2
|
||||
# link.input.node = my-mic
|
||||
# link.input.port = input_FR
|
||||
# }
|
||||
#}
|
||||
]
|
||||
|
||||
context.exec = [
|
||||
#{ path = <program-name>
|
||||
# ( args = "<arguments>" | [ <arg1> <arg2> ... ] )
|
||||
# ( condition = [ { <key> = <value> ... } ... ] )
|
||||
#}
|
||||
#
|
||||
# Execute the given program with arguments.
|
||||
#
|
||||
# You can optionally start the pulseaudio-server here as well
|
||||
# but it is better to start it as a systemd service.
|
||||
# It can be interesting to start another daemon here that listens
|
||||
# on another address with the -a option (eg. -a tcp:4713).
|
||||
#
|
||||
##{ path = "/usr/bin/pipewire" args = "-c pipewire-pulse.conf" }
|
||||
]
|
||||
|
||||
node.rules = [
|
||||
{ matches = [
|
||||
{
|
||||
# all keys must match the value. ! negates. ~ starts regex.
|
||||
#alsa.card_name = "ICUSBAUDIO7D"
|
||||
#api.alsa.pcm.stream = "playback"
|
||||
}
|
||||
]
|
||||
actions = {
|
||||
update-props = {
|
||||
#node.name = "alsa_playback.ICUSBAUDIO7D"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
device.rules = [
|
||||
{ matches = [
|
||||
{
|
||||
#alsa.card_name = "ICUSBAUDIO7D"
|
||||
}
|
||||
]
|
||||
actions = {
|
||||
update-props = {
|
||||
#device.name = "alsa_card.ICUSBAUDIO7D"
|
||||
#api.acp.auto-profile = false
|
||||
#api.acp.auto-port = false
|
||||
#device.param.Profile = {
|
||||
# #idx = 0
|
||||
# name = off
|
||||
#}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
345
pipewire/pipewire.conf
Normal file
345
pipewire/pipewire.conf
Normal file
@ -0,0 +1,345 @@
|
||||
# Daemon config file for PipeWire version "1.2.3" #
|
||||
#
|
||||
# Copy and edit this file in /etc/pipewire for system-wide changes
|
||||
# or in ~/.config/pipewire for local changes.
|
||||
#
|
||||
# It is also possible to place a file with an updated section in
|
||||
# /etc/pipewire/pipewire.conf.d/ for system-wide changes or in
|
||||
# ~/.config/pipewire/pipewire.conf.d/ for local changes.
|
||||
#
|
||||
|
||||
context.properties = {
|
||||
## Configure properties in the system.
|
||||
#library.name.system = support/libspa-support
|
||||
#context.data-loop.library.name.system = support/libspa-support
|
||||
#support.dbus = true
|
||||
#link.max-buffers = 64
|
||||
link.max-buffers = 16 # version < 3 clients can't handle more
|
||||
mem.warn-mlock = true # Gentoo should have good RLIMITs now
|
||||
#mem.allow-mlock = true
|
||||
#mem.mlock-all = false
|
||||
#clock.power-of-two-quantum = true
|
||||
#log.level = 2
|
||||
#cpu.zero.denormals = false
|
||||
|
||||
#loop.rt-prio = -1 # -1 = use module-rt prio, 0 disable rt
|
||||
#loop.class = data.rt
|
||||
#thread.affinity = [ 0 1 ] # optional array of CPUs
|
||||
#context.num-data-loops = 1 # -1 = num-cpus, 0 = no data loops
|
||||
#
|
||||
#context.data-loops = [
|
||||
# { loop.rt-prio = -1
|
||||
# loop.class = [ data.rt audio.rt ]
|
||||
# #library.name.system = support/libspa-support
|
||||
# thread.name = data-loop.0
|
||||
# #thread.affinity = [ 0 1 ] # optional array of CPUs
|
||||
# }
|
||||
#]
|
||||
|
||||
core.daemon = true # listening for socket connections
|
||||
core.name = pipewire-0 # core name and socket name
|
||||
|
||||
## Properties for the DSP configuration.
|
||||
#default.clock.rate = 48000
|
||||
default.clock.rates = [ 44100 48000 96000 192000]
|
||||
default.clock.allowed-rates = [ 44100 48000 96000 192000]
|
||||
#default.clock.quantum = 1024
|
||||
#default.clock.min-quantum = 32
|
||||
#default.clock.max-quantum = 2048
|
||||
#default.clock.quantum-limit = 8192
|
||||
#default.clock.quantum-floor = 4
|
||||
#default.video.width = 640
|
||||
#default.video.height = 480
|
||||
#default.video.rate.num = 25
|
||||
#default.video.rate.denom = 1
|
||||
#
|
||||
#settings.check-quantum = false
|
||||
#settings.check-rate = false
|
||||
|
||||
# keys checked below to disable module loading
|
||||
module.x11.bell = true
|
||||
# enables autoloading of access module, when disabled an alternative
|
||||
# access module needs to be loaded.
|
||||
module.access = true
|
||||
# enables autoloading of module-jackdbus-detect
|
||||
module.jackdbus-detect = true
|
||||
}
|
||||
|
||||
context.properties.rules = [
|
||||
{ matches = [ { cpu.vm.name = !null } ]
|
||||
actions = {
|
||||
update-props = {
|
||||
# These overrides are only applied when running in a vm.
|
||||
default.clock.min-quantum = 1024
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
context.spa-libs = {
|
||||
#<factory-name regex> = <library-name>
|
||||
#
|
||||
# Used to find spa factory names. It maps an spa factory name
|
||||
# regular expression to a library name that should contain
|
||||
# that factory.
|
||||
#
|
||||
audio.convert.* = audioconvert/libspa-audioconvert
|
||||
avb.* = avb/libspa-avb
|
||||
api.alsa.* = alsa/libspa-alsa
|
||||
api.v4l2.* = v4l2/libspa-v4l2
|
||||
api.libcamera.* = libcamera/libspa-libcamera
|
||||
api.bluez5.* = bluez5/libspa-bluez5
|
||||
api.vulkan.* = vulkan/libspa-vulkan
|
||||
api.jack.* = jack/libspa-jack
|
||||
support.* = support/libspa-support
|
||||
video.convert.* = videoconvert/libspa-videoconvert
|
||||
#videotestsrc = videotestsrc/libspa-videotestsrc
|
||||
#audiotestsrc = audiotestsrc/libspa-audiotestsrc
|
||||
}
|
||||
|
||||
context.modules = [
|
||||
#{ name = <module-name>
|
||||
# ( args = { <key> = <value> ... } )
|
||||
# ( flags = [ ( ifexists ) ( nofail ) ] )
|
||||
# ( condition = [ { <key> = <value> ... } ... ] )
|
||||
#}
|
||||
#
|
||||
# Loads a module with the given parameters.
|
||||
# If ifexists is given, the module is ignored when it is not found.
|
||||
# If nofail is given, module initialization failures are ignored.
|
||||
# If condition is given, the module is loaded only when the context
|
||||
# properties all match the match rules.
|
||||
#
|
||||
|
||||
# Uses realtime scheduling to boost the audio thread priorities. This uses
|
||||
# RTKit if the user doesn't have permission to use regular realtime
|
||||
# scheduling. You can also clamp utilisation values to improve scheduling
|
||||
# on embedded and heterogeneous systems, e.g. Arm big.LITTLE devices.
|
||||
{ name = libpipewire-module-rt
|
||||
args = {
|
||||
nice.level = -11
|
||||
rt.prio = 88
|
||||
#rt.time.soft = -1
|
||||
#rt.time.hard = -1
|
||||
#uclamp.min = 0
|
||||
#uclamp.max = 1024
|
||||
}
|
||||
flags = [ ifexists nofail ]
|
||||
}
|
||||
|
||||
# The native communication protocol.
|
||||
{ name = libpipewire-module-protocol-native
|
||||
args = {
|
||||
# List of server Unix sockets, and optionally permissions
|
||||
#sockets = [ { name = "pipewire-0" }, { name = "pipewire-0-manager" } ]
|
||||
}
|
||||
}
|
||||
|
||||
# The profile module. Allows application to access profiler
|
||||
# and performance data. It provides an interface that is used
|
||||
# by pw-top and pw-profiler.
|
||||
{ name = libpipewire-module-profiler }
|
||||
|
||||
# Allows applications to create metadata objects. It creates
|
||||
# a factory for Metadata objects.
|
||||
{ name = libpipewire-module-metadata }
|
||||
|
||||
# Creates a factory for making devices that run in the
|
||||
# context of the PipeWire server.
|
||||
{ name = libpipewire-module-spa-device-factory }
|
||||
|
||||
# Creates a factory for making nodes that run in the
|
||||
# context of the PipeWire server.
|
||||
{ name = libpipewire-module-spa-node-factory }
|
||||
|
||||
# Allows creating nodes that run in the context of the
|
||||
# client. Is used by all clients that want to provide
|
||||
# data to PipeWire.
|
||||
{ name = libpipewire-module-client-node }
|
||||
|
||||
# Allows creating devices that run in the context of the
|
||||
# client. Is used by the session manager.
|
||||
{ name = libpipewire-module-client-device }
|
||||
|
||||
# The portal module monitors the PID of the portal process
|
||||
# and tags connections with the same PID as portal
|
||||
# connections.
|
||||
{ name = libpipewire-module-portal
|
||||
flags = [ ifexists nofail ]
|
||||
}
|
||||
|
||||
# The access module can perform access checks and block
|
||||
# new clients.
|
||||
{ name = libpipewire-module-access
|
||||
args = {
|
||||
# Socket-specific access permissions
|
||||
#access.socket = { pipewire-0 = "default", pipewire-0-manager = "unrestricted" }
|
||||
|
||||
# Deprecated legacy mode (not socket-based),
|
||||
# for now enabled by default if access.socket is not specified
|
||||
#access.legacy = true
|
||||
}
|
||||
condition = [ { module.access = true } ]
|
||||
}
|
||||
|
||||
# Makes a factory for wrapping nodes in an adapter with a
|
||||
# converter and resampler.
|
||||
{ name = libpipewire-module-adapter }
|
||||
|
||||
# Makes a factory for creating links between ports.
|
||||
{ name = libpipewire-module-link-factory }
|
||||
|
||||
# Provides factories to make session manager objects.
|
||||
{ name = libpipewire-module-session-manager }
|
||||
|
||||
# Use libcanberra to play X11 Bell
|
||||
{ name = libpipewire-module-x11-bell
|
||||
args = {
|
||||
#sink.name = "@DEFAULT_SINK@"
|
||||
#sample.name = "bell-window-system"
|
||||
#x11.display = null
|
||||
#x11.xauthority = null
|
||||
}
|
||||
flags = [ ifexists nofail ]
|
||||
condition = [ { module.x11.bell = true } ]
|
||||
}
|
||||
{ name = libpipewire-module-jackdbus-detect
|
||||
args = {
|
||||
#jack.library = libjack.so.0
|
||||
#jack.server = null
|
||||
#jack.client-name = PipeWire
|
||||
#jack.connect = true
|
||||
#tunnel.mode = duplex # source|sink|duplex
|
||||
source.props = {
|
||||
#audio.channels = 2
|
||||
#midi.ports = 1
|
||||
#audio.position = [ FL FR ]
|
||||
# extra sink properties
|
||||
}
|
||||
sink.props = {
|
||||
#audio.channels = 2
|
||||
#midi.ports = 1
|
||||
#audio.position = [ FL FR ]
|
||||
# extra sink properties
|
||||
}
|
||||
}
|
||||
flags = [ ifexists nofail ]
|
||||
condition = [ { module.jackdbus-detect = true } ]
|
||||
}
|
||||
]
|
||||
|
||||
context.objects = [
|
||||
#{ factory = <factory-name>
|
||||
# ( args = { <key> = <value> ... } )
|
||||
# ( flags = [ ( nofail ) ] )
|
||||
# ( condition = [ { <key> = <value> ... } ... ] )
|
||||
#}
|
||||
#
|
||||
# Creates an object from a PipeWire factory with the given parameters.
|
||||
# If nofail is given, errors are ignored (and no object is created).
|
||||
# If condition is given, the object is created only when the context properties
|
||||
# all match the match rules.
|
||||
#
|
||||
#{ factory = spa-node-factory args = { factory.name = videotestsrc node.name = videotestsrc node.description = videotestsrc "Spa:Pod:Object:Param:Props:patternType" = 1 } }
|
||||
#{ factory = spa-device-factory args = { factory.name = api.jack.device foo=bar } flags = [ nofail ] }
|
||||
#{ factory = spa-device-factory args = { factory.name = api.alsa.enum.udev } }
|
||||
#{ factory = spa-node-factory args = { factory.name = api.alsa.seq.bridge node.name = Internal-MIDI-Bridge } }
|
||||
#{ factory = adapter args = { factory.name = audiotestsrc node.name = my-test node.description = audiotestsrc } }
|
||||
#{ factory = spa-node-factory args = { factory.name = api.vulkan.compute.source node.name = my-compute-source } }
|
||||
|
||||
# A default dummy driver. This handles nodes marked with the "node.always-process"
|
||||
# property when no other driver is currently active. JACK clients need this.
|
||||
{ factory = spa-node-factory
|
||||
args = {
|
||||
factory.name = support.node.driver
|
||||
node.name = Dummy-Driver
|
||||
node.group = pipewire.dummy
|
||||
node.sync-group = sync.dummy
|
||||
priority.driver = 200000
|
||||
#clock.id = monotonic # realtime | tai | monotonic-raw | boottime
|
||||
#clock.name = "clock.system.monotonic"
|
||||
}
|
||||
}
|
||||
{ factory = spa-node-factory
|
||||
args = {
|
||||
factory.name = support.node.driver
|
||||
node.name = Freewheel-Driver
|
||||
priority.driver = 190000
|
||||
node.group = pipewire.freewheel
|
||||
node.sync-group = sync.dummy
|
||||
node.freewheel = true
|
||||
#freewheel.wait = 10
|
||||
}
|
||||
}
|
||||
|
||||
# This creates a new Source node. It will have input ports
|
||||
# that you can link, to provide audio for this source.
|
||||
#{ factory = adapter
|
||||
# args = {
|
||||
# factory.name = support.null-audio-sink
|
||||
# node.name = "my-mic"
|
||||
# node.description = "Microphone"
|
||||
# media.class = "Audio/Source/Virtual"
|
||||
# audio.position = "FL,FR"
|
||||
# monitor.passthrough = true
|
||||
# }
|
||||
#}
|
||||
|
||||
# This creates a single PCM source device for the given
|
||||
# alsa device path hw:0. You can change source to sink
|
||||
# to make a sink in the same way.
|
||||
#{ factory = adapter
|
||||
# args = {
|
||||
# factory.name = api.alsa.pcm.source
|
||||
# node.name = "alsa-source"
|
||||
# node.description = "PCM Source"
|
||||
# media.class = "Audio/Source"
|
||||
# api.alsa.path = "hw:0"
|
||||
# api.alsa.period-size = 1024
|
||||
# api.alsa.headroom = 0
|
||||
# api.alsa.disable-mmap = false
|
||||
# api.alsa.disable-batch = false
|
||||
# audio.format = "S16LE"
|
||||
# audio.rate = 48000
|
||||
# audio.channels = 2
|
||||
# audio.position = "FL,FR"
|
||||
# }
|
||||
#}
|
||||
|
||||
# Use the metadata factory to create metadata and some default values.
|
||||
#{ factory = metadata
|
||||
# args = {
|
||||
# metadata.name = my-metadata
|
||||
# metadata.values = [
|
||||
# { key = default.audio.sink value = { name = somesink } }
|
||||
# { key = default.audio.source value = { name = somesource } }
|
||||
# ]
|
||||
# }
|
||||
#}
|
||||
]
|
||||
|
||||
context.exec = [
|
||||
#{ path = <program-name>
|
||||
# ( args = "<arguments>" | [ <arg1> <arg2> ... ] )
|
||||
# ( condition = [ { <key> = <value> ... } ... ] )
|
||||
#}
|
||||
#
|
||||
# Execute the given program with arguments.
|
||||
# If condition is given, the program is executed only when the context
|
||||
# properties all match the match rules.
|
||||
#
|
||||
# You can optionally start the session manager here,
|
||||
# but it is better to start it as a systemd service.
|
||||
# Run the session manager with -h for options.
|
||||
#
|
||||
#{ path = "/usr/bin/pipewire-media-session" args = ""
|
||||
# condition = [ { exec.session-manager = null } { exec.session-manager = true } ] }
|
||||
#
|
||||
# You can optionally start the pulseaudio-server here as well
|
||||
# but it is better to start it as a systemd service.
|
||||
# It can be interesting to start another daemon here that listens
|
||||
# on another address with the -a option (eg. -a tcp:4713).
|
||||
#
|
||||
#{ path = "/usr/bin/pipewire" args = [ "-c" "pipewire-pulse.conf" ]
|
||||
# condition = [ { exec.pipewire-pulse = null } { exec.pipewire-pulse = true } ] }
|
||||
]
|
185
polybar/config.ini
Normal file
185
polybar/config.ini
Normal file
@ -0,0 +1,185 @@
|
||||
;==========================================================
|
||||
;
|
||||
;
|
||||
; ██████╗ ██████╗ ██╗ ██╗ ██╗██████╗ █████╗ ██████╗
|
||||
; ██╔══██╗██╔═══██╗██║ ╚██╗ ██╔╝██╔══██╗██╔══██╗██╔══██╗
|
||||
; ██████╔╝██║ ██║██║ ╚████╔╝ ██████╔╝███████║██████╔╝
|
||||
; ██╔═══╝ ██║ ██║██║ ╚██╔╝ ██╔══██╗██╔══██║██╔══██╗
|
||||
; ██║ ╚██████╔╝███████╗██║ ██████╔╝██║ ██║██║ ██║
|
||||
; ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝
|
||||
;
|
||||
;
|
||||
; To learn more about how to configure Polybar
|
||||
; go to https://github.com/polybar/polybar
|
||||
;
|
||||
; The README contains a lot of information
|
||||
;
|
||||
;==========================================================
|
||||
|
||||
[colors]
|
||||
background-alt = #00000000
|
||||
foreground = #1f3641
|
||||
primary = #0d100f
|
||||
altprime = #0D100F
|
||||
secondary = #0D100F
|
||||
altsecondary = #BEABA7EF
|
||||
alert = #A54242
|
||||
disabled = #707880
|
||||
|
||||
[bar/example]
|
||||
bottom = false
|
||||
width = 100%
|
||||
height = 20pt
|
||||
radius = 8
|
||||
|
||||
; dpi = 96
|
||||
|
||||
background = #80c8c9c9
|
||||
foreground = ${colors.foreground}
|
||||
|
||||
tray-position = right
|
||||
line-size = 2pt
|
||||
|
||||
border-size = 2.5pt
|
||||
border-color = #00000000
|
||||
|
||||
padding-left = 1
|
||||
padding-right = 1
|
||||
|
||||
module-margin = 1
|
||||
|
||||
separator = |
|
||||
separator-foreground = ${colors.disabled}
|
||||
|
||||
font-0 = 0xProto Nerd Font:pixelsize=14;3
|
||||
|
||||
modules-left = xworkspaces xwindow
|
||||
modules-right = polytiramisu memory cpu date battery
|
||||
|
||||
cursor-click = pointer
|
||||
cursor-scroll = ns-resize
|
||||
|
||||
enable-ipc = true
|
||||
|
||||
; tray-position = right
|
||||
|
||||
; wm-restack = generic
|
||||
; wm-restack = bspwm
|
||||
; wm-restack = i3
|
||||
|
||||
; override-redirect = true
|
||||
|
||||
[module/xworkspaces]
|
||||
type = internal/xworkspaces
|
||||
|
||||
label-active = %name%
|
||||
label-active-background = ${colors.background-alt}
|
||||
label-active-underline= ${colors.primary}
|
||||
label-active-padding = 1
|
||||
|
||||
label-occupied = %name%
|
||||
label-occupied-padding = 1
|
||||
|
||||
label-urgent = %name%
|
||||
label-urgent-background = ${colors.alert}
|
||||
label-urgent-padding = 1
|
||||
|
||||
label-empty = %name%
|
||||
label-empty-foreground = ${colors.disabled}
|
||||
label-empty-padding = 1
|
||||
|
||||
[module/xwindow]
|
||||
type = internal/xwindow
|
||||
label = %title:0:60:...%
|
||||
|
||||
|
||||
[module/memory]
|
||||
type = internal/memory
|
||||
interval = 2
|
||||
format-prefix = "RAM "
|
||||
format-prefix-foreground = ${colors.altprime}
|
||||
label = %percentage_used:2%%
|
||||
|
||||
[module/cpu]
|
||||
type = internal/cpu
|
||||
interval = 2
|
||||
format-prefix = "CPU "
|
||||
format-prefix-foreground = ${colors.altprime}
|
||||
label = %percentage:2%%
|
||||
|
||||
[module/date]
|
||||
type = internal/date
|
||||
interval = 1
|
||||
|
||||
date = %H:%M
|
||||
date-alt = %Y-%m-%d %H:%M:%S
|
||||
|
||||
label = %date%
|
||||
label-foreground = ${colors.altprime}
|
||||
[module/battery]
|
||||
type = internal/battery
|
||||
full-at = 99
|
||||
low-at = 5
|
||||
; Use the following command to list batteries and adapters:
|
||||
; $ ls -1 /sys/class/power_supply/
|
||||
battery = BAT0
|
||||
;adapter = ucsi-source-psy-USBC000:001
|
||||
adapter = AC
|
||||
time-format = %H:%M
|
||||
;label-charging = Charging %percentage%%
|
||||
label-charging = %percentage%%
|
||||
;label-discharging = Discharging %percentage%%
|
||||
label-discharging = %percentage%%
|
||||
format-charging = <animation-charging> <label-charging>
|
||||
format-discharging = <ramp-capacity> <label-discharging>
|
||||
|
||||
label-full = %percentage%%
|
||||
format-full = <ramp-capacity> <label-full>
|
||||
label-low = BATTERY LOW
|
||||
|
||||
; Only applies if <ramp-capacity> is used
|
||||
ramp-capacity-0 =
|
||||
ramp-capacity-1 =
|
||||
ramp-capacity-2 =
|
||||
ramp-capacity-3 =
|
||||
ramp-capacity-4 =
|
||||
|
||||
; Only applies if <bar-capacity> is used
|
||||
bar-capacity-width = 10
|
||||
|
||||
; Only applies if <animation-charging> is used
|
||||
animation-charging-0 =
|
||||
animation-charging-1 =
|
||||
animation-charging-2 =
|
||||
animation-charging-3 =
|
||||
animation-charging-4 =
|
||||
; Framerate in milliseconds
|
||||
animation-charging-framerate = 750
|
||||
|
||||
; Only applies if <animation-discharging> is used
|
||||
animation-discharging-0 =
|
||||
animation-discharging-1 =
|
||||
animation-discharging-2 =
|
||||
animation-discharging-3 =
|
||||
animation-discharging-4 =
|
||||
; Framerate in milliseconds
|
||||
animation-discharging-framerate = 500
|
||||
|
||||
animation-low-0 = !
|
||||
animation-low-1 =
|
||||
animation-low-framerate = 200
|
||||
|
||||
poll-interval = 5
|
||||
|
||||
[module/polytiramisu]
|
||||
type = custom/script
|
||||
# Path to where you put polytiramisu.sh:
|
||||
exec = ~/.config/polybar/scripts/polytiramisu.sh
|
||||
format = <label>
|
||||
tail = true
|
||||
|
||||
[settings]
|
||||
screenchange-reload = true
|
||||
pseudo-transparency = true
|
||||
|
||||
; vim:ft=dosini
|
25
polybar/scripts/polytiramisu.sh
Executable file
25
polybar/scripts/polytiramisu.sh
Executable file
@ -0,0 +1,25 @@
|
||||
#!/bin/sh
|
||||
# Show tiramisu notifications in polybar.
|
||||
|
||||
# How many seconds notification is displayed:
|
||||
display_duration=7.0
|
||||
|
||||
# Maximum number of characters:
|
||||
char_limit=150
|
||||
|
||||
# Stop old tiramisu processes if any:
|
||||
pgrep -x tiramisu >/dev/null && killall tiramisu
|
||||
|
||||
# Start a new tiramisu process:
|
||||
tiramisu -o '#summary #body' |
|
||||
while read -r line; do
|
||||
# Cut notification by character limit:
|
||||
if [ "${#line}" -gt "$char_limit" ]; then
|
||||
line="$(echo "$line" | cut -c1-$((char_limit-1)))…"
|
||||
fi
|
||||
|
||||
# Display notification for the duration time:
|
||||
echo "$line"
|
||||
sleep "$display_duration"
|
||||
echo " "
|
||||
done
|
BIN
screenshots/Screenshot_20240427_105944.png
Normal file
BIN
screenshots/Screenshot_20240427_105944.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.1 MiB |
BIN
screenshots/Screenshot_20240501_233812.png
Normal file
BIN
screenshots/Screenshot_20240501_233812.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.0 MiB |
BIN
screenshots/Screenshot_20240503_095414.png
Normal file
BIN
screenshots/Screenshot_20240503_095414.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.1 MiB |
251
sway/config
Normal file
251
sway/config
Normal file
@ -0,0 +1,251 @@
|
||||
# Default config for sway
|
||||
#
|
||||
# Copy this to ~/.config/sway/config and edit it to your liking.
|
||||
#
|
||||
# Read `man 5 sway` for a complete reference.
|
||||
|
||||
### Variables
|
||||
#
|
||||
# Logo key. Use Mod1 for Alt.
|
||||
set $mod Mod1
|
||||
# Home row direction keys, like vim
|
||||
#set $left h
|
||||
#set $down j
|
||||
#set $up k
|
||||
#set $right l
|
||||
# Your preferred terminal emulator
|
||||
set $term alacritty
|
||||
# Your preferred application launcher
|
||||
# Note: pass the final command to swaymsg so that the resulting window can be opened
|
||||
# on the original workspace that the command was run on.
|
||||
set $menu wofi --show drun
|
||||
|
||||
### Output configuration
|
||||
#
|
||||
# Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/)
|
||||
#output * bg /data/sync/images/wallpapers/stonebeach.jpg fill
|
||||
output * bg /usr/share/wallpapers/openSUSEdefault/contents/images/default-dark.png fill
|
||||
|
||||
set $screenlock 'swaylock --config /etc/swaylock/openSUSEway.conf'
|
||||
#
|
||||
# Example configuration:
|
||||
#
|
||||
output HDMI-A-1 resolution 1920x1080@120hz position 1920,0
|
||||
#
|
||||
# You can get the names of your outputs by running: swaymsg -t get_outputs
|
||||
|
||||
### Idle configuration
|
||||
#
|
||||
# Example configuration:
|
||||
#
|
||||
exec swayidle -w \
|
||||
timeout 900 $screenlock \
|
||||
timeout 1800 'swaymsg "output * power off"' resume 'swaymsg "output * power on"' \
|
||||
before-sleep $screenlock
|
||||
#
|
||||
# This will lock your screen after 300 seconds of inactivity, then turn off
|
||||
# your displays after another 300 seconds, and turn your screens back on when
|
||||
# resumed. It will also lock your screen before your computer goes to sleep.
|
||||
|
||||
### Input configuration
|
||||
input "type:touchpad" {
|
||||
tap enabled
|
||||
natural_scroll enabled
|
||||
middle_emulation enabled
|
||||
}
|
||||
|
||||
# Example configuration:
|
||||
#
|
||||
# input "2:14:SynPS/2_Synaptics_TouchPad" {
|
||||
# dwt enabled
|
||||
# tap enabled
|
||||
# natural_scroll enabled
|
||||
# middle_emulation enabled
|
||||
# }
|
||||
#
|
||||
# You can get the names of your inputs by running: swaymsg -t get_inputs
|
||||
# Read `man 5 sway-input` for more information about this section.
|
||||
input "2:7:SynPS/2_Synaptics_TouchPad" {
|
||||
events disabled_on_external_mouse
|
||||
}
|
||||
|
||||
exec --no-startup-id fcitx5
|
||||
exec --no-startup-id blueman-applet
|
||||
#exec --no-startup-id feh --bg-fill '/data/sync/images/wallpapers/stonebeach.jpg'
|
||||
exec --no-startup-id owncloud
|
||||
exec --no-startup-id waybar
|
||||
exec --no-startup-id nm-applet --indicator
|
||||
#exec --no-startup-id nohup gentoo-pipewire-launcher restart >/dev/null 2>&1 &
|
||||
exec --no-startup-id xset m 1/1 0
|
||||
|
||||
|
||||
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +5% && $refresh_i3status
|
||||
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -5% && $refresh_i3status
|
||||
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status
|
||||
bindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status
|
||||
bindcode $mod+60 exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +5% && $refresh_i3status
|
||||
bindcode $mod+59 exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -5% && $refresh_i3status
|
||||
bindcode $mod+61 exec playerctl play-pause
|
||||
|
||||
# Media player key bindings (need media-sound/playerctl for playerctl.)
|
||||
bindsym XF86AudioPlay exec playerctl play
|
||||
bindsym XF86AudioPause exec playerctl pause
|
||||
bindsym XF86AudioNext exec playerctl next
|
||||
bindsym XF86AudioPrev exec playerctl previous
|
||||
|
||||
# Brightness key bindings
|
||||
bindsym XF86MonBrightnessUp exec brightnessctl set +5%
|
||||
bindsym XF86MonBrightnessDown exec brightnessctl set 5%-
|
||||
### Key bindings
|
||||
#
|
||||
# Basics:
|
||||
#
|
||||
# Start a terminal
|
||||
bindsym $mod+Return exec $term
|
||||
|
||||
# Kill focused window
|
||||
bindsym $mod+Shift+q kill
|
||||
|
||||
# Start your launcher
|
||||
bindsym $mod+d exec $menu
|
||||
#
|
||||
bindsym $mod+l exec $screenlock
|
||||
# Drag floating windows by holding down $mod and left mouse button.
|
||||
# Resize them with right mouse button + $mod.
|
||||
# Despite the name, also works for non-floating windows.
|
||||
# Change normal to inverse to use left mouse button for resizing and right
|
||||
# mouse button for dragging.
|
||||
floating_modifier $mod normal
|
||||
|
||||
# Reload the configuration file
|
||||
bindsym $mod+Shift+c reload
|
||||
|
||||
# Exit sway (logs you out of your Wayland session)
|
||||
#bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit'
|
||||
bindsym $mod+Shift+p exec systemctl poweroff
|
||||
bindsym $mod+Shift+e exec swaymsg exit
|
||||
#
|
||||
# Moving around:
|
||||
#
|
||||
# Move your focus around
|
||||
bindsym $mod+Left focus left
|
||||
bindsym $mod+Down focus down
|
||||
bindsym $mod+Up focus up
|
||||
bindsym $mod+Right focus right
|
||||
|
||||
# move focused window
|
||||
bindsym $mod+Shift+j move left
|
||||
bindsym $mod+Shift+k move down
|
||||
bindsym $mod+Shift+l move up
|
||||
bindsym $mod+Shift+semicolon move right
|
||||
|
||||
# alternatively, you can use the cursor keys:
|
||||
bindsym $mod+Shift+Left move left
|
||||
bindsym $mod+Shift+Down move down
|
||||
bindsym $mod+Shift+Up move up
|
||||
bindsym $mod+Shift+Right move right
|
||||
# Workspaces:
|
||||
#
|
||||
# Switch to workspace
|
||||
bindsym $mod+1 workspace number 1
|
||||
bindsym $mod+2 workspace number 2
|
||||
bindsym $mod+3 workspace number 3
|
||||
bindsym $mod+4 workspace number 4
|
||||
bindsym $mod+5 workspace number 5
|
||||
bindsym $mod+6 workspace number 6
|
||||
bindsym $mod+7 workspace number 7
|
||||
bindsym $mod+8 workspace number 8
|
||||
bindsym $mod+9 workspace number 9
|
||||
bindsym $mod+0 workspace number 10
|
||||
# Move focused container to workspace
|
||||
bindsym $mod+Shift+1 move container to workspace number 1
|
||||
bindsym $mod+Shift+2 move container to workspace number 2
|
||||
bindsym $mod+Shift+3 move container to workspace number 3
|
||||
bindsym $mod+Shift+4 move container to workspace number 4
|
||||
bindsym $mod+Shift+5 move container to workspace number 5
|
||||
bindsym $mod+Shift+6 move container to workspace number 6
|
||||
bindsym $mod+Shift+7 move container to workspace number 7
|
||||
bindsym $mod+Shift+8 move container to workspace number 8
|
||||
bindsym $mod+Shift+9 move container to workspace number 9
|
||||
bindsym $mod+Shift+0 move container to workspace number 10
|
||||
# Note: workspaces can have any name you want, not just numbers.
|
||||
# We just use 1-10 as the default.
|
||||
#
|
||||
# Layout stuff:
|
||||
#
|
||||
# You can "split" the current object of your focus with
|
||||
# $mod+b or $mod+v, for horizontal and vertical splits
|
||||
# respectively.
|
||||
bindsym $mod+b splith
|
||||
bindsym $mod+v splitv
|
||||
|
||||
# Switch the current container between different layout styles
|
||||
bindsym $mod+s layout stacking
|
||||
bindsym $mod+w layout tabbed
|
||||
bindsym $mod+e layout toggle split
|
||||
|
||||
# Make the current focus fullscreen
|
||||
bindsym $mod+f fullscreen
|
||||
|
||||
# Toggle the current focus between tiling and floating mode
|
||||
bindsym $mod+Shift+space floating toggle
|
||||
|
||||
# Swap focus between the tiling area and the floating area
|
||||
bindsym $mod+space focus mode_toggle
|
||||
|
||||
# Move focus to the parent container
|
||||
bindsym $mod+a focus parent
|
||||
#
|
||||
# Scratchpad:
|
||||
#
|
||||
# Sway has a "scratchpad", which is a bag of holding for windows.
|
||||
# You can send windows there and get them back later.
|
||||
|
||||
# Move the currently focused window to the scratchpad
|
||||
bindsym $mod+Shift+minus move scratchpad
|
||||
|
||||
# Show the next scratchpad window or hide the focused scratchpad window.
|
||||
# If there are multiple scratchpad windows, this command cycles through them.
|
||||
bindsym $mod+minus scratchpad show
|
||||
#
|
||||
bindsym $mod+Tab workspace back_and_forth
|
||||
# Resizing containers:
|
||||
#
|
||||
mode "resize" {
|
||||
# These bindings trigger as soon as you enter the resize mode
|
||||
|
||||
# Pressing left will shrink the window’s width.
|
||||
# Pressing right will grow the window’s width.
|
||||
# Pressing up will shrink the window’s height.
|
||||
# Pressing down will grow the window’s height.
|
||||
bindsym j resize shrink width 10 px or 10 ppt
|
||||
bindsym k resize grow height 10 px or 10 ppt
|
||||
bindsym l resize shrink height 10 px or 10 ppt
|
||||
bindsym semicolon resize grow width 10 px or 10 ppt
|
||||
|
||||
# same bindings, but for the arrow keys
|
||||
bindsym Left resize shrink width 10 px or 10 ppt
|
||||
bindsym Down resize grow height 10 px or 10 ppt
|
||||
bindsym Up resize shrink height 10 px or 10 ppt
|
||||
bindsym Right resize grow width 10 px or 10 ppt
|
||||
|
||||
# back to normal: Enter or Escape or $mod+r
|
||||
bindsym Return mode "default"
|
||||
bindsym Escape mode "default"
|
||||
bindsym $mod+r mode "default"
|
||||
}
|
||||
bindsym $mod+r mode "resize"
|
||||
|
||||
#
|
||||
# Status Bar:
|
||||
#
|
||||
# Read `man 5 sway-bar` for more information about this section.
|
||||
bar {
|
||||
}
|
||||
|
||||
for_window [class="^.*"] border pixel 1
|
||||
|
||||
#floating
|
||||
for_window [class="Signal"] floating enable
|
||||
for_window [class="Gajim"] floating enable
|
||||
#include /etc/sway/config.d/*
|
17
sway/env
Normal file
17
sway/env
Normal file
@ -0,0 +1,17 @@
|
||||
# recomended enviroment variables for sway based desktop
|
||||
# openSUSEway installs/imports this to/from:
|
||||
# /usr/lib/environment.d/50-openSUSE.conf
|
||||
# /etc/profile.d/openSUSEway.sh
|
||||
MOZ_ENABLE_WAYLAND=1
|
||||
QT_QPA_PLATFORM=wayland-egl
|
||||
CLUTTER_BACKEND=wayland
|
||||
ECORE_EVAS_ENGINE=wayland-egl
|
||||
ELM_ENGINE=wayland_egl
|
||||
SDL_VIDEODRIVER=wayland
|
||||
_JAVA_AWT_WM_NONREPARENTING=1
|
||||
NO_AT_BRIDGE=1
|
||||
|
||||
# QT theme for openSUSEway
|
||||
# needs qt5ct and adwaita-qt5 packages
|
||||
# default config is /etc/xdg/qt5ct/qt5ct.conf
|
||||
QT_QPA_PLATFORMTHEME=qt5ct
|
74
waybar/config
Normal file
74
waybar/config
Normal file
@ -0,0 +1,74 @@
|
||||
{
|
||||
// "height": 40, // Waybar height (to be removed for auto height)
|
||||
"spacing": 4, // Gaps between modules (4px)
|
||||
// Choose the order of the modules
|
||||
"modules-left": ["sway/workspaces", "sway/window"],
|
||||
"modules-center": ["clock"],
|
||||
"modules-right": ["custom/tiramisu","battery", "wireplumber", "tray"],
|
||||
//"modules-right": ["custom/tiramisu", "network", "wireplumber", "tray"],
|
||||
// Modules configuration
|
||||
// "hyprland/workspaces": {
|
||||
// "disable-scroll": true,
|
||||
// "all-outputs": true,
|
||||
// "warp-on-scroll": false,
|
||||
// "format": "{name}",
|
||||
// },
|
||||
"sway/workspaces": {
|
||||
"format": "{icon}",
|
||||
},
|
||||
"tray": {
|
||||
"icon-size": 21,
|
||||
"spacing": 10
|
||||
},
|
||||
"clock": {
|
||||
// "timezone": "America/New_York",
|
||||
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
|
||||
"format-alt": "{:%Y-%m-%d %H:%M}"
|
||||
},
|
||||
"network": {
|
||||
"format-wifi": " {icon}",
|
||||
"format-ethernet": " ",
|
||||
"format-disconnected": "",
|
||||
"format-icons": [
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" "
|
||||
],
|
||||
"on-click": "alacritty -e nmtui"
|
||||
},
|
||||
"battery": {
|
||||
"interval": 1,
|
||||
"states": {
|
||||
"good": 99,
|
||||
"warning": 30,
|
||||
"critical": 20
|
||||
},
|
||||
"format-icons": [" "," "," "," "," "],
|
||||
"format": "<span color='#8ec07c' > {icon}</span>{capacity}%",
|
||||
"format-critical": "<span color='#cc241d' > {icon}</span>{capacity}%",
|
||||
"format-warning": "<span color='#d8a657' > {icon}</span>{capacity}%",
|
||||
"format-full": "<span color='#8ec07c' > {icon}</span>{capacity}%",
|
||||
"format-charging": "<span color='#8ec07c' > </span>{capacity}%",
|
||||
"format-charging-warning": "<span color='#d8a657' > </span>{capacity}%",
|
||||
"format-charging-critical": "<span color='#cc241d' > </span>{capacity}%",
|
||||
"format-plugged": "<span color='#8ec07c' > </span>{capacity}%",
|
||||
"tooltip": false
|
||||
},
|
||||
"wireplumber": {
|
||||
"format": "{volume}% {icon}",
|
||||
"format-muted": "{node_name} off",
|
||||
"on-click-right": "pactl set-default-sink $((s=$(pactl list short sinks | sed -e 's:^[0-9]\\+\\s\\+::' | grep -oP '^\\S+'); echo \"$s\"; echo \"$s\") | fgrep $(pactl get-default-sink) -m 1 -A 1 | tail -1)",
|
||||
"on-click": "pavucontrol",
|
||||
"max-volume": 100,
|
||||
"scroll-step": 2,
|
||||
"format-icons": ["", ""],
|
||||
},
|
||||
|
||||
"custom/tiramisu": {
|
||||
"format": "{} ",
|
||||
"exec": "sh ~/.config/polybar/scripts/polytiramisu.sh",
|
||||
},
|
||||
}
|
||||
|
182
waybar/style.css
Normal file
182
waybar/style.css
Normal file
@ -0,0 +1,182 @@
|
||||
/*base background color*/
|
||||
@define-color bg_main rgba(25, 25, 25, 0.65);
|
||||
@define-color bg_main_tooltip rgba(0, 0, 0, 0.7);
|
||||
|
||||
|
||||
/*base background color of selections */
|
||||
@define-color bg_hover rgba(200, 200, 200, 0.3);
|
||||
/*base background color of active elements */
|
||||
@define-color bg_active rgba(255, 255, 255, 1);
|
||||
|
||||
/*base border color*/
|
||||
@define-color border_main rgba(255, 255, 255, 0.2);
|
||||
|
||||
/*text color for entries, views and content in general */
|
||||
@define-color content_main white;
|
||||
/*text color for entries that are unselected */
|
||||
@define-color content_inactive rgba(255, 255, 255, 0.69);
|
||||
|
||||
* {
|
||||
text-shadow: none;
|
||||
box-shadow: none;
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
font-family: "Hack Nerd Font" ;
|
||||
font-weight: 400;
|
||||
font-size: 16px;
|
||||
|
||||
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background: @bg_main;
|
||||
border-top: 1px solid @border_main;
|
||||
color: @content_main;
|
||||
}
|
||||
|
||||
tooltip {
|
||||
background: @bg_main_tooltip;
|
||||
border-radius: 5px;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: @border_main;
|
||||
}
|
||||
tooltip label{
|
||||
color: @content_main;
|
||||
}
|
||||
|
||||
#custom-os_button {
|
||||
font-family: "JetBrainsMono Nerd Font";
|
||||
font-size: 24px;
|
||||
padding-left: 12px;
|
||||
padding-right: 20px;
|
||||
transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1);
|
||||
}
|
||||
#custom-os_button:hover {
|
||||
background: @bg_hover;
|
||||
color: @content_main;
|
||||
}
|
||||
|
||||
#workspaces {
|
||||
color: transparent;
|
||||
margin-right: 1.5px;
|
||||
margin-left: 1.5px;
|
||||
}
|
||||
#workspaces button {
|
||||
padding: 3px;
|
||||
color: @content_inactive;
|
||||
transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1);
|
||||
}
|
||||
#workspaces button.active {
|
||||
color: @content_main;
|
||||
border-bottom: 3px solid white;
|
||||
}
|
||||
#workspaces button.focused {
|
||||
color: @bg_active;
|
||||
}
|
||||
#workspaces button.urgent {
|
||||
background: rgba(255, 200, 0, 0.35);
|
||||
border-bottom: 3px dashed @warning_color;
|
||||
color: @warning_color;
|
||||
}
|
||||
#workspaces button:hover {
|
||||
background: @bg_hover;
|
||||
color: @content_main;
|
||||
}
|
||||
|
||||
#taskbar {
|
||||
}
|
||||
|
||||
#taskbar button {
|
||||
min-width: 130px;
|
||||
border-bottom: 3px solid rgba(255, 255, 255, 0.3);
|
||||
margin-left: 2px;
|
||||
margin-right: 2px;
|
||||
padding-left: 8px;
|
||||
padding-right: 8px;
|
||||
color: white;
|
||||
transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1);
|
||||
}
|
||||
|
||||
#taskbar button.active {
|
||||
border-bottom: 3px solid white;
|
||||
background: @bg_active;
|
||||
}
|
||||
|
||||
#taskbar button:hover {
|
||||
border-bottom: 3px solid white;
|
||||
background: @bg_hover;
|
||||
color: @content_main;
|
||||
}
|
||||
|
||||
#cpu, #disk, #memory {
|
||||
padding:3px;
|
||||
}
|
||||
|
||||
#temperature {
|
||||
color: transparent;
|
||||
font-size: 0px;
|
||||
transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1);
|
||||
}
|
||||
#temperature.critical {
|
||||
padding-right: 3px;
|
||||
color: @warning_color;
|
||||
font-size: initial;
|
||||
border-bottom: 3px dashed @warning_color;
|
||||
transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1);
|
||||
}
|
||||
|
||||
#window {
|
||||
border-radius: 10px;
|
||||
margin-left: 20px;
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
#tray{
|
||||
margin-left: 5px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
#tray > .passive {
|
||||
border-bottom: none;
|
||||
}
|
||||
/*#tray > .active {*/
|
||||
/*border-bottom: 3px solid white;*/
|
||||
/*}*/
|
||||
#tray > .needs-attention {
|
||||
border-bottom: 3px solid @warning_color;
|
||||
}
|
||||
#tray > widget {
|
||||
transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1);
|
||||
}
|
||||
#tray > widget:hover {
|
||||
background: @bg_hover;
|
||||
}
|
||||
|
||||
#pulseaudio {
|
||||
font-family: "JetBrainsMono Nerd Font";
|
||||
padding-left: 3px;
|
||||
padding-right: 3px;
|
||||
transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1);
|
||||
}
|
||||
#pulseaudio:hover {
|
||||
background: @bg_hover;
|
||||
}
|
||||
|
||||
#network {
|
||||
padding-left: 3px;
|
||||
padding-right: 3px;
|
||||
}
|
||||
|
||||
#language {
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
#clock {
|
||||
padding-right: 5px;
|
||||
padding-left: 5px;
|
||||
transition: all 0.25s cubic-bezier(0.165, 0.84, 0.44, 1);
|
||||
}
|
||||
#clock:hover {
|
||||
background: @bg_hover;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user