diff --git a/.gitmodules b/.gitmodules index 4669ce2..bd94e8c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,3 +4,6 @@ [submodule "linux/.config/awesome/lain"] path = linux/.config/awesome/lain url = https://github.com/lcpz/lain.git +[submodule "linux/.config/awesome/cyclefocus"] + path = linux/.config/awesome/cyclefocus + url = https://github.com/blueyed/awesome-cyclefocus diff --git a/common/.wezterm.lua b/common/.wezterm.lua index 31d12a9..1aa7b4e 100644 --- a/common/.wezterm.lua +++ b/common/.wezterm.lua @@ -2,6 +2,7 @@ local wezterm = require("wezterm"); local config = { font_size = 9.0, freetype_load_target = "Mono", + use_cap_height_to_scale_fallback_fonts = true, color_scheme = "Tokyo Night", color_schemes = { everforest = { @@ -203,8 +204,9 @@ if wezterm.target_triple == "x86_64-pc-windows-msvc" then }) else config.font = wezterm.font_with_fallback({ - "Terminus", - "Siji", + {family = "tewi", weight = "Regular"}, + {family = "tewi", weight = "Bold"}, + "Terminus (TTF)", "Unifont", "Noto Emoji", }) diff --git a/common/alacritty/alacritty.yml b/common/alacritty/alacritty.yml deleted file mode 100644 index eff33f4..0000000 --- a/common/alacritty/alacritty.yml +++ /dev/null @@ -1,865 +0,0 @@ -# Configuration for Alacritty, the GPU enhanced terminal emulator. - -# Import additional configuration files -# -# Imports are loaded in order, skipping all missing files, with the importing -# file being loaded last. If a field is already present in a previous import, it -# will be replaced. -# -# All imports must either be absolute paths starting with `/`, or paths relative -# to the user's home directory starting with `~/`. -#import: -# - /path/to/alacritty.yml - -# 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: alacritty - -window: - # Window dimensions (changes require restart) - # - # Number of lines/columns (not pixels) in the terminal. The number of columns - # must be at least `2`, while using a value of `0` for columns and lines will - # fall back to the window manager's recommended size. - dimensions: - columns: 84 - lines: 24 - - # 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 and no title bar buttons - #decorations: full - - # 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. - #opacity: 1.0 - - # 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 - - # Allow terminal applications to change Alacritty's window title. - #dynamic_title: true - - # Window class (Linux/BSD only): - #class: - # Application instance name - #instance: Alacritty - # General application class - #general: Alacritty - - # GTK theme variant (Linux/BSD 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 - - # Scrolling distance multiplier. - #multiplier: 3 - -# Font configuration -font: - # Normal (roman) font face - normal: - # Font family - # - # Default: - # - (macOS) Menlo - # - (Linux/BSD) monospace - # - (Windows) Consolas - family: Terminus - - # 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: Regular - - # 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: Italic - - # Point size - size: 9.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 upward. - #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`. - #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) -colors: - # Default colors - primary: - background: '#2a2331' - foreground: '#dedbeb' - - # 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: '#828482' - #bright_foreground: '#eaeaea' - - # Cursor colors - # - # Colors which should be used to draw the terminal cursor. - # - # Allowed values are CellForeground/CellBackground, which reference the - # affected cell, or hexadecimal colors like #ff00ff. - #cursor: - # text: CellBackground - # cursor: CellForeground - - # Vi mode cursor colors - # - # Colors for the cursor when the vi mode is active. - # - # Allowed values are CellForeground/CellBackground, which reference the - # affected cell, or hexadecimal colors like #ff00ff. - #vi_mode_cursor: - # text: CellBackground - # cursor: CellForeground - - # Search colors - # - # Colors used for the search bar and match highlighting. - #search: - # Allowed values are CellForeground/CellBackground, which reference the - # affected cell, or hexadecimal colors like #ff00ff. - #matches: - # foreground: '#000000' - # background: '#ffffff' - #focused_match: - # foreground: '#ffffff' - # background: '#000000' - - #bar: - # background: '#c5c8c6' - # foreground: '#1d1f21' - - # Keyboard regex hints - #hints: - # First character in the hint label - # - # Allowed values are CellForeground/CellBackground, which reference the - # affected cell, or hexadecimal colors like #ff00ff. - #start: - # foreground: '#1d1f21' - # background: '#e9ff5e' - - # All characters after the first one in the hint label - # - # Allowed values are CellForeground/CellBackground, which reference the - # affected cell, or hexadecimal colors like #ff00ff. - #end: - # foreground: '#e9ff5e' - # background: '#1d1f21' - - # Line indicator - # - # Color used for the indicator displaying the position in history during - # search and vi mode. - # - # By default, these will use the opposing primary color. - #line_indicator: - # foreground: None - # background: None - - # Selection colors - # - # Colors which should be used to draw the selection area. - # - # Allowed values are CellForeground/CellBackground, which reference the - # affected cell, or hexadecimal colors like #ff00ff. - #selection: - # text: CellBackground - # background: '#634e75' - - # Normal colors - normal: - black: '#231d29' - red: '#e83f80' - green: '#a2baa8' - yellow: '#eacac0' - blue: '#9985d1' - magenta: '#e68ac1' - cyan: '#aabae7' - white: '#dedbeb' - - # Bright colors - bright: - black: '#302838' - red: '#f55d8f' - green: '#bfd1c3' - yellow: '#f0ddd8' - blue: '#b4a4de' - magenta: '#edabd2' - cyan: '#c4d1f5' - white: '#edebf7' - - # Dim colors - # - # If the dim colors are not set, they will be calculated automatically based - # on the `normal` colors. - #dim: - # black: '#131415' - # red: '#864343' - # green: '#777c44' - # yellow: '#9e824c' - # blue: '#556a7d' - # magenta: '#75617b' - # cyan: '#5b7d78' - # white: '#828482' - - # 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: '#ff00ff' }` - # - #indexed_colors: [] - - # Transparent cell backgrounds - # - # Whether or not `window.opacity` applies to all cell backgrounds or only to - # the default background. When set to `true` all cells will be transparent - # regardless of their background color. - #transparent_background_colors: false - -# Bell -# -# The bell is rung every time the BEL control character is received. -#bell: - # Visual Bell Animation - # - # Animation effect for flashing the screen when the visual bell is rung. - # - # Values for `animation`: - # - Ease - # - EaseOut - # - EaseOutSine - # - EaseOutQuad - # - EaseOutCubic - # - EaseOutQuart - # - EaseOutQuint - # - EaseOutExpo - # - EaseOutCirc - # - Linear - #animation: EaseOutExpo - - # Duration of the visual bell flash in milliseconds. A `duration` of `0` will - # disable the visual bell animation. - #duration: 0 - - # Visual bell animation color. - #color: '#ffffff' - - # Bell Command - # - # This program is executed whenever the bell is rung. - # - # When set to `command: None`, no command will be executed. - # - # Example: - # command: - # program: notify-send - # args: ["Hello, World!"] - # - #command: None - -#selection: - # This string contains all characters that are used as separators for - # "semantic words" in Alacritty. - #semantic_escape_chars: ",│`|:\"' ()[]{}<>\t" - - # When set to `true`, selected text will be copied to the primary clipboard. - #save_to_clipboard: false - -#cursor: - # Cursor style - #style: - # Cursor shape - # - # Values for `shape`: - # - ▇ Block - # - _ Underline - # - | Beam - #shape: Block - - # Cursor blinking state - # - # Values for `blinking`: - # - Never: Prevent the cursor from ever blinking - # - Off: Disable blinking by default - # - On: Enable blinking by default - # - Always: Force the cursor to always blink - #blinking: Off - - # Vi mode cursor style - # - # If the vi mode cursor style is `None` or not specified, it will fall back to - # the style of the active value of the normal cursor. - # - # See `cursor.style` for available options. - #vi_mode_style: None - - # Cursor blinking interval in milliseconds. - #blink_interval: 750 - - # If this is `true`, the cursor will be rendered as a hollow box when the - # window is not focused. - #unfocused_hollow: true - - # Thickness of the cursor relative to the cell width as floating point number - # from `0.0` to `1.0`. - #thickness: 0.15 - -# 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/BSD) 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 - -# Send ESC (\x1b) before characters when alt is pressed. -#alt_send_esc: true - -#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 - -# Regex hints -# -# Terminal hints can be used to find text in the visible part of the terminal -# and pipe it to other applications. -#hints: - # Keys used for the hint labels. - #alphabet: "jfkdls;ahgurieowpq" - - # List with all available hints - # - # Each hint must have a `regex` and either an `action` or a `command` field. - # The fields `mouse`, `binding` and `post_processing` are optional. - # - # The fields `command`, `binding.key`, `binding.mods`, `binding.mode` and - # `mouse.mods` accept the same values as they do in the `key_bindings` section. - # - # The `mouse.enabled` field controls if the hint should be underlined while - # the mouse with all `mouse.mods` keys held or the vi mode cursor is above it. - # - # If the `post_processing` field is set to `true`, heuristics will be used to - # shorten the match if there are characters likely not to be part of the hint - # (e.g. a trailing `.`). This is most useful for URIs. - # - # Values for `action`: - # - Copy - # Copy the hint's text to the clipboard. - # - Paste - # Paste the hint's text to the terminal or search. - # - Select - # Select the hint's text. - # - MoveViModeCursor - # Move the vi mode cursor to the beginning of the hint. - #enabled: - # - regex: "(ipfs:|ipns:|magnet:|mailto:|gemini:|gopher:|https:|http:|news:|file:|git:|ssh:|ftp:)\ - # [^\u0000-\u001F\u007F-\u009F<>\"\\s{-}\\^⟨⟩`]+" - # command: xdg-open - # post_processing: true - # mouse: - # enabled: true - # mods: None - # binding: - # key: U - # mods: Control|Shift - -# Mouse bindings -# -# Mouse bindings are specified as a list of objects, much like the key -# bindings further below. -# -# To trigger mouse bindings when an application running within Alacritty -# captures the mouse, the `Shift` modifier is automatically added as a -# requirement. -# -# Each mouse binding will specify a: -# -# - `mouse`: -# -# - Middle -# - Left -# - Right -# - Numeric identifier such as `5` -# -# - `action` (see key bindings for actions not exclusive to mouse mode) -# -# - Mouse exclusive actions: -# -# - ExpandSelection -# Expand the selection to the current mouse cursor location. -# -# And optionally: -# -# - `mods` (see key bindings) -mouse_bindings: -# - { mouse: Right, action: ExpandSelection } - - { mouse: Middle, action: Paste } - -# 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 -# -# - ToggleViMode -# - SearchForward -# Start searching toward the right of the search origin. -# - SearchBackward -# Start searching toward the left of the search origin. -# - Copy -# - Paste -# - IncreaseFontSize -# - DecreaseFontSize -# - ResetFontSize -# - ScrollPageUp -# - ScrollPageDown -# - ScrollHalfPageUp -# - ScrollHalfPageDown -# - ScrollLineUp -# - ScrollLineDown -# - ScrollToTop -# - ScrollToBottom -# - ClearHistory -# Remove the terminal's scrollback history. -# - Hide -# Hide the Alacritty window. -# - Minimize -# Minimize the Alacritty window. -# - Quit -# Quit Alacritty. -# - ToggleFullscreen -# - SpawnNewInstance -# Spawn a new instance of Alacritty. -# - ClearLogNotice -# Clear Alacritty's UI warning and error notice. -# - ClearSelection -# Remove the active selection. -# - ReceiveChar -# - None -# -# - Vi mode exclusive actions: -# -# - Open -# Perform the action of the first matching hint under the vi mode cursor -# with `mouse.enabled` set to `true`. -# - ToggleNormalSelection -# - ToggleLineSelection -# - ToggleBlockSelection -# - ToggleSemanticSelection -# Toggle semantic selection based on `selection.semantic_escape_chars`. -# -# - Vi mode exclusive cursor motion actions: -# -# - Up -# One line up. -# - Down -# One line down. -# - Left -# One character left. -# - Right -# One character right. -# - First -# First column, or beginning of the line when already at the first column. -# - Last -# Last column, or beginning of the line when already at the last column. -# - FirstOccupied -# First non-empty cell in this terminal row, or first non-empty cell of -# the line when already at the first cell of the row. -# - High -# Top of the screen. -# - Middle -# Center of the screen. -# - Low -# Bottom of the screen. -# - SemanticLeft -# Start of the previous semantically separated word. -# - SemanticRight -# Start of the next semantically separated word. -# - SemanticLeftEnd -# End of the previous semantically separated word. -# - SemanticRightEnd -# End of the next semantically separated word. -# - WordLeft -# Start of the previous whitespace separated word. -# - WordRight -# Start of the next whitespace separated word. -# - WordLeftEnd -# End of the previous whitespace separated word. -# - WordRightEnd -# End of the next whitespace separated word. -# - Bracket -# Character matching the bracket at the cursor's location. -# - SearchNext -# Beginning of the next match. -# - SearchPrevious -# Beginning of the previous match. -# - SearchStart -# Start of the match to the left of the vi mode cursor. -# - SearchEnd -# End of the match to the right of the vi mode cursor. -# -# - Search mode exclusive actions: -# - SearchFocusNext -# Move the focus to the next search match. -# - SearchFocusPrevious -# Move the focus to the previous search match. -# - SearchConfirm -# - SearchCancel -# - SearchClear -# Reset the search regex. -# - SearchDeleteWord -# Delete the last word in the search regex. -# - SearchHistoryPrevious -# Go to the previous regex in the search history. -# - SearchHistoryNext -# Go to the next regex in the search history. -# -# - macOS exclusive actions: -# - ToggleSimpleFullscreen -# Enter fullscreen without occupying another space. -# -# - Linux/BSD exclusive actions: -# -# - CopySelection -# Copy from the selection buffer. -# - PasteSelection -# Paste from the selection buffer. -# -# - `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 -# - Search -# - Alt -# - Vi -# -# 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. -# -# If the same trigger is assigned to multiple actions, all of them are executed -# in the order they were defined in. -key_bindings: - #- { key: Paste, action: Paste } - #- { key: Copy, action: Copy } - #- { key: L, mods: Control, action: ClearLogNotice } - #- { key: L, mods: Control, mode: ~Vi|~Search, chars: "\x0c" } - #- { key: PageUp, mods: Shift, mode: ~Alt, action: ScrollPageUp, } - #- { key: PageDown, mods: Shift, mode: ~Alt, action: ScrollPageDown } - #- { key: Home, mods: Shift, mode: ~Alt, action: ScrollToTop, } - #- { key: End, mods: Shift, mode: ~Alt, action: ScrollToBottom } - - # Vi Mode - #- { key: Space, mods: Shift|Control, mode: ~Search, action: ToggleViMode } - #- { key: Space, mods: Shift|Control, mode: Vi|~Search, action: ScrollToBottom } - #- { key: Escape, mode: Vi|~Search, action: ClearSelection } - #- { key: I, mode: Vi|~Search, action: ToggleViMode } - #- { key: I, mode: Vi|~Search, action: ScrollToBottom } - #- { key: C, mods: Control, mode: Vi|~Search, action: ToggleViMode } - #- { key: Y, mods: Control, mode: Vi|~Search, action: ScrollLineUp } - #- { key: E, mods: Control, mode: Vi|~Search, action: ScrollLineDown } - #- { key: G, mode: Vi|~Search, action: ScrollToTop } - #- { key: G, mods: Shift, mode: Vi|~Search, action: ScrollToBottom } - #- { key: B, mods: Control, mode: Vi|~Search, action: ScrollPageUp } - #- { key: F, mods: Control, mode: Vi|~Search, action: ScrollPageDown } - #- { key: U, mods: Control, mode: Vi|~Search, action: ScrollHalfPageUp } - #- { key: D, mods: Control, mode: Vi|~Search, action: ScrollHalfPageDown } - #- { key: Y, mode: Vi|~Search, action: Copy } - #- { key: Y, mode: Vi|~Search, action: ClearSelection } - #- { key: Copy, mode: Vi|~Search, action: ClearSelection } - #- { key: V, mode: Vi|~Search, action: ToggleNormalSelection } - #- { key: V, mods: Shift, mode: Vi|~Search, action: ToggleLineSelection } - #- { key: V, mods: Control, mode: Vi|~Search, action: ToggleBlockSelection } - #- { key: V, mods: Alt, mode: Vi|~Search, action: ToggleSemanticSelection } - #- { key: Return, mode: Vi|~Search, action: Open } - #- { key: K, mode: Vi|~Search, action: Up } - #- { key: J, mode: Vi|~Search, action: Down } - #- { key: H, mode: Vi|~Search, action: Left } - #- { key: L, mode: Vi|~Search, action: Right } - #- { key: Up, mode: Vi|~Search, action: Up } - #- { key: Down, mode: Vi|~Search, action: Down } - #- { key: Left, mode: Vi|~Search, action: Left } - #- { key: Right, mode: Vi|~Search, action: Right } - #- { key: Key0, mode: Vi|~Search, action: First } - #- { key: Key4, mods: Shift, mode: Vi|~Search, action: Last } - #- { key: Key6, mods: Shift, mode: Vi|~Search, action: FirstOccupied } - #- { key: H, mods: Shift, mode: Vi|~Search, action: High } - #- { key: M, mods: Shift, mode: Vi|~Search, action: Middle } - #- { key: L, mods: Shift, mode: Vi|~Search, action: Low } - #- { key: B, mode: Vi|~Search, action: SemanticLeft } - #- { key: W, mode: Vi|~Search, action: SemanticRight } - #- { key: E, mode: Vi|~Search, action: SemanticRightEnd } - #- { key: B, mods: Shift, mode: Vi|~Search, action: WordLeft } - #- { key: W, mods: Shift, mode: Vi|~Search, action: WordRight } - #- { key: E, mods: Shift, mode: Vi|~Search, action: WordRightEnd } - #- { key: Key5, mods: Shift, mode: Vi|~Search, action: Bracket } - #- { key: Slash, mode: Vi|~Search, action: SearchForward } - #- { key: Slash, mods: Shift, mode: Vi|~Search, action: SearchBackward } - #- { key: N, mode: Vi|~Search, action: SearchNext } - #- { key: N, mods: Shift, mode: Vi|~Search, action: SearchPrevious } - - # Search Mode - #- { key: Return, mode: Search|Vi, action: SearchConfirm } - #- { key: Escape, mode: Search, action: SearchCancel } - #- { key: C, mods: Control, mode: Search, action: SearchCancel } - #- { key: U, mods: Control, mode: Search, action: SearchClear } - #- { key: W, mods: Control, mode: Search, action: SearchDeleteWord } - #- { key: P, mods: Control, mode: Search, action: SearchHistoryPrevious } - #- { key: N, mods: Control, mode: Search, action: SearchHistoryNext } - #- { key: Up, mode: Search, action: SearchHistoryPrevious } - #- { key: Down, mode: Search, action: SearchHistoryNext } - #- { key: Return, mode: Search|~Vi, action: SearchFocusNext } - #- { key: Return, mods: Shift, mode: Search|~Vi, action: SearchFocusPrevious } - - # (Windows, Linux, and BSD only) - - { key: V, mods: Control|Shift, action: Paste } - - { key: C, mods: Control|Shift, action: Copy } - #- { key: F, mods: Control|Shift, mode: ~Search, action: SearchForward } - #- { key: B, mods: Control|Shift, mode: ~Search, action: SearchBackward } - #- { key: C, mods: Control|Shift, mode: Vi|~Search, action: ClearSelection } - #- { key: Insert, mods: Shift, action: PasteSelection } - #- { key: Key0, mods: Control, action: ResetFontSize } - #- { key: Equals, mods: Control, action: IncreaseFontSize } - #- { key: Plus, mods: Control, action: IncreaseFontSize } - #- { key: NumpadAdd, mods: Control, action: IncreaseFontSize } - #- { key: Minus, mods: Control, action: DecreaseFontSize } - #- { key: NumpadSubtract, mods: Control, action: DecreaseFontSize } - - # (Windows only) - #- { key: Return, mods: Alt, action: ToggleFullscreen } - - # (macOS only) - #- { key: K, mods: Command, mode: ~Vi|~Search, chars: "\x0c" } - #- { key: K, mods: Command, mode: ~Vi|~Search, action: ClearHistory } - #- { key: Key0, mods: Command, action: ResetFontSize } - #- { key: Equals, mods: Command, action: IncreaseFontSize } - #- { key: Plus, mods: Command, action: IncreaseFontSize } - #- { key: NumpadAdd, mods: Command, action: IncreaseFontSize } - #- { key: Minus, mods: Command, action: DecreaseFontSize } - #- { key: NumpadSubtract, mods: Command, action: DecreaseFontSize } - #- { key: V, mods: Command, action: Paste } - #- { key: C, mods: Command, action: Copy } - #- { key: C, mods: Command, mode: Vi|~Search, action: ClearSelection } - #- { key: H, mods: Command, action: Hide } - #- { key: H, mods: Command|Alt, action: HideOtherApplications } - #- { key: M, mods: Command, action: Minimize } - #- { key: Q, mods: Command, action: Quit } - #- { key: W, mods: Command, action: Quit } - #- { key: N, mods: Command, action: SpawnNewInstance } - #- { key: F, mods: Command|Control, action: ToggleFullscreen } - #- { key: F, mods: Command, mode: ~Search, action: SearchForward } - #- { key: B, mods: Command, mode: ~Search, action: SearchBackward } - -#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`: - # - Off - # - Error - # - Warn - # - Info - # - Debug - # - Trace - #log_level: Warn - - # Print all received window events. - #print_events: false diff --git a/common/alacritty/alacritty.yml.in b/common/alacritty/alacritty.yml.in deleted file mode 100644 index 33f3f07..0000000 --- a/common/alacritty/alacritty.yml.in +++ /dev/null @@ -1,865 +0,0 @@ -# Configuration for Alacritty, the GPU enhanced terminal emulator. - -# Import additional configuration files -# -# Imports are loaded in order, skipping all missing files, with the importing -# file being loaded last. If a field is already present in a previous import, it -# will be replaced. -# -# All imports must either be absolute paths starting with `/`, or paths relative -# to the user's home directory starting with `~/`. -#import: -# - /path/to/alacritty.yml - -# 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: alacritty - -window: - # Window dimensions (changes require restart) - # - # Number of lines/columns (not pixels) in the terminal. The number of columns - # must be at least `2`, while using a value of `0` for columns and lines will - # fall back to the window manager's recommended size. - dimensions: - columns: 84 - lines: 24 - - # 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 and no title bar buttons - #decorations: full - - # 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. - #opacity: 1.0 - - # 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 - - # Allow terminal applications to change Alacritty's window title. - #dynamic_title: true - - # Window class (Linux/BSD only): - #class: - # Application instance name - #instance: Alacritty - # General application class - #general: Alacritty - - # GTK theme variant (Linux/BSD 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 - - # Scrolling distance multiplier. - #multiplier: 3 - -# Font configuration -font: - # Normal (roman) font face - normal: - # Font family - # - # Default: - # - (macOS) Menlo - # - (Linux/BSD) monospace - # - (Windows) Consolas - family: Terminus - - # 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: Regular - - # 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: Italic - - # Point size - size: 9.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 upward. - #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`. - #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) -colors: - # Default colors - primary: - background: '%alacritty.background%' - foreground: '%alacritty.foreground%' - - # 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: '#828482' - #bright_foreground: '#eaeaea' - - # Cursor colors - # - # Colors which should be used to draw the terminal cursor. - # - # Allowed values are CellForeground/CellBackground, which reference the - # affected cell, or hexadecimal colors like #ff00ff. - #cursor: - # text: CellBackground - # cursor: CellForeground - - # Vi mode cursor colors - # - # Colors for the cursor when the vi mode is active. - # - # Allowed values are CellForeground/CellBackground, which reference the - # affected cell, or hexadecimal colors like #ff00ff. - #vi_mode_cursor: - # text: CellBackground - # cursor: CellForeground - - # Search colors - # - # Colors used for the search bar and match highlighting. - #search: - # Allowed values are CellForeground/CellBackground, which reference the - # affected cell, or hexadecimal colors like #ff00ff. - #matches: - # foreground: '#000000' - # background: '#ffffff' - #focused_match: - # foreground: '#ffffff' - # background: '#000000' - - #bar: - # background: '#c5c8c6' - # foreground: '#1d1f21' - - # Keyboard regex hints - #hints: - # First character in the hint label - # - # Allowed values are CellForeground/CellBackground, which reference the - # affected cell, or hexadecimal colors like #ff00ff. - #start: - # foreground: '#1d1f21' - # background: '#e9ff5e' - - # All characters after the first one in the hint label - # - # Allowed values are CellForeground/CellBackground, which reference the - # affected cell, or hexadecimal colors like #ff00ff. - #end: - # foreground: '#e9ff5e' - # background: '#1d1f21' - - # Line indicator - # - # Color used for the indicator displaying the position in history during - # search and vi mode. - # - # By default, these will use the opposing primary color. - #line_indicator: - # foreground: None - # background: None - - # Selection colors - # - # Colors which should be used to draw the selection area. - # - # Allowed values are CellForeground/CellBackground, which reference the - # affected cell, or hexadecimal colors like #ff00ff. - #selection: - # text: CellBackground - # background: '#634e75' - - # Normal colors - normal: - black: '%alacritty.color0%' - red: '%alacritty.color1%' - green: '%alacritty.color2%' - yellow: '%alacritty.color3%' - blue: '%alacritty.color4%' - magenta: '%alacritty.color5%' - cyan: '%alacritty.color6%' - white: '%alacritty.color7%' - - # Bright colors - bright: - black: '%alacritty.color8%' - red: '%alacritty.color9%' - green: '%alacritty.color10%' - yellow: '%alacritty.color11%' - blue: '%alacritty.color12%' - magenta: '%alacritty.color13%' - cyan: '%alacritty.color14%' - white: '%alacritty.color15%' - - # Dim colors - # - # If the dim colors are not set, they will be calculated automatically based - # on the `normal` colors. - #dim: - # black: '#131415' - # red: '#864343' - # green: '#777c44' - # yellow: '#9e824c' - # blue: '#556a7d' - # magenta: '#75617b' - # cyan: '#5b7d78' - # white: '#828482' - - # 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: '#ff00ff' }` - # - #indexed_colors: [] - - # Transparent cell backgrounds - # - # Whether or not `window.opacity` applies to all cell backgrounds or only to - # the default background. When set to `true` all cells will be transparent - # regardless of their background color. - #transparent_background_colors: false - -# Bell -# -# The bell is rung every time the BEL control character is received. -#bell: - # Visual Bell Animation - # - # Animation effect for flashing the screen when the visual bell is rung. - # - # Values for `animation`: - # - Ease - # - EaseOut - # - EaseOutSine - # - EaseOutQuad - # - EaseOutCubic - # - EaseOutQuart - # - EaseOutQuint - # - EaseOutExpo - # - EaseOutCirc - # - Linear - #animation: EaseOutExpo - - # Duration of the visual bell flash in milliseconds. A `duration` of `0` will - # disable the visual bell animation. - #duration: 0 - - # Visual bell animation color. - #color: '#ffffff' - - # Bell Command - # - # This program is executed whenever the bell is rung. - # - # When set to `command: None`, no command will be executed. - # - # Example: - # command: - # program: notify-send - # args: ["Hello, World!"] - # - #command: None - -#selection: - # This string contains all characters that are used as separators for - # "semantic words" in Alacritty. - #semantic_escape_chars: ",│`|:\"' ()[]{}<>\t" - - # When set to `true`, selected text will be copied to the primary clipboard. - #save_to_clipboard: false - -#cursor: - # Cursor style - #style: - # Cursor shape - # - # Values for `shape`: - # - ▇ Block - # - _ Underline - # - | Beam - #shape: Block - - # Cursor blinking state - # - # Values for `blinking`: - # - Never: Prevent the cursor from ever blinking - # - Off: Disable blinking by default - # - On: Enable blinking by default - # - Always: Force the cursor to always blink - #blinking: Off - - # Vi mode cursor style - # - # If the vi mode cursor style is `None` or not specified, it will fall back to - # the style of the active value of the normal cursor. - # - # See `cursor.style` for available options. - #vi_mode_style: None - - # Cursor blinking interval in milliseconds. - #blink_interval: 750 - - # If this is `true`, the cursor will be rendered as a hollow box when the - # window is not focused. - #unfocused_hollow: true - - # Thickness of the cursor relative to the cell width as floating point number - # from `0.0` to `1.0`. - #thickness: 0.15 - -# 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/BSD) 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 - -# Send ESC (\x1b) before characters when alt is pressed. -#alt_send_esc: true - -#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 - -# Regex hints -# -# Terminal hints can be used to find text in the visible part of the terminal -# and pipe it to other applications. -#hints: - # Keys used for the hint labels. - #alphabet: "jfkdls;ahgurieowpq" - - # List with all available hints - # - # Each hint must have a `regex` and either an `action` or a `command` field. - # The fields `mouse`, `binding` and `post_processing` are optional. - # - # The fields `command`, `binding.key`, `binding.mods`, `binding.mode` and - # `mouse.mods` accept the same values as they do in the `key_bindings` section. - # - # The `mouse.enabled` field controls if the hint should be underlined while - # the mouse with all `mouse.mods` keys held or the vi mode cursor is above it. - # - # If the `post_processing` field is set to `true`, heuristics will be used to - # shorten the match if there are characters likely not to be part of the hint - # (e.g. a trailing `.`). This is most useful for URIs. - # - # Values for `action`: - # - Copy - # Copy the hint's text to the clipboard. - # - Paste - # Paste the hint's text to the terminal or search. - # - Select - # Select the hint's text. - # - MoveViModeCursor - # Move the vi mode cursor to the beginning of the hint. - #enabled: - # - regex: "(ipfs:|ipns:|magnet:|mailto:|gemini:|gopher:|https:|http:|news:|file:|git:|ssh:|ftp:)\ - # [^\u0000-\u001F\u007F-\u009F<>\"\\s{-}\\^⟨⟩`]+" - # command: xdg-open - # post_processing: true - # mouse: - # enabled: true - # mods: None - # binding: - # key: U - # mods: Control|Shift - -# Mouse bindings -# -# Mouse bindings are specified as a list of objects, much like the key -# bindings further below. -# -# To trigger mouse bindings when an application running within Alacritty -# captures the mouse, the `Shift` modifier is automatically added as a -# requirement. -# -# Each mouse binding will specify a: -# -# - `mouse`: -# -# - Middle -# - Left -# - Right -# - Numeric identifier such as `5` -# -# - `action` (see key bindings for actions not exclusive to mouse mode) -# -# - Mouse exclusive actions: -# -# - ExpandSelection -# Expand the selection to the current mouse cursor location. -# -# And optionally: -# -# - `mods` (see key bindings) -mouse_bindings: -# - { mouse: Right, action: ExpandSelection } - - { mouse: Middle, action: Paste } - -# 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 -# -# - ToggleViMode -# - SearchForward -# Start searching toward the right of the search origin. -# - SearchBackward -# Start searching toward the left of the search origin. -# - Copy -# - Paste -# - IncreaseFontSize -# - DecreaseFontSize -# - ResetFontSize -# - ScrollPageUp -# - ScrollPageDown -# - ScrollHalfPageUp -# - ScrollHalfPageDown -# - ScrollLineUp -# - ScrollLineDown -# - ScrollToTop -# - ScrollToBottom -# - ClearHistory -# Remove the terminal's scrollback history. -# - Hide -# Hide the Alacritty window. -# - Minimize -# Minimize the Alacritty window. -# - Quit -# Quit Alacritty. -# - ToggleFullscreen -# - SpawnNewInstance -# Spawn a new instance of Alacritty. -# - ClearLogNotice -# Clear Alacritty's UI warning and error notice. -# - ClearSelection -# Remove the active selection. -# - ReceiveChar -# - None -# -# - Vi mode exclusive actions: -# -# - Open -# Perform the action of the first matching hint under the vi mode cursor -# with `mouse.enabled` set to `true`. -# - ToggleNormalSelection -# - ToggleLineSelection -# - ToggleBlockSelection -# - ToggleSemanticSelection -# Toggle semantic selection based on `selection.semantic_escape_chars`. -# -# - Vi mode exclusive cursor motion actions: -# -# - Up -# One line up. -# - Down -# One line down. -# - Left -# One character left. -# - Right -# One character right. -# - First -# First column, or beginning of the line when already at the first column. -# - Last -# Last column, or beginning of the line when already at the last column. -# - FirstOccupied -# First non-empty cell in this terminal row, or first non-empty cell of -# the line when already at the first cell of the row. -# - High -# Top of the screen. -# - Middle -# Center of the screen. -# - Low -# Bottom of the screen. -# - SemanticLeft -# Start of the previous semantically separated word. -# - SemanticRight -# Start of the next semantically separated word. -# - SemanticLeftEnd -# End of the previous semantically separated word. -# - SemanticRightEnd -# End of the next semantically separated word. -# - WordLeft -# Start of the previous whitespace separated word. -# - WordRight -# Start of the next whitespace separated word. -# - WordLeftEnd -# End of the previous whitespace separated word. -# - WordRightEnd -# End of the next whitespace separated word. -# - Bracket -# Character matching the bracket at the cursor's location. -# - SearchNext -# Beginning of the next match. -# - SearchPrevious -# Beginning of the previous match. -# - SearchStart -# Start of the match to the left of the vi mode cursor. -# - SearchEnd -# End of the match to the right of the vi mode cursor. -# -# - Search mode exclusive actions: -# - SearchFocusNext -# Move the focus to the next search match. -# - SearchFocusPrevious -# Move the focus to the previous search match. -# - SearchConfirm -# - SearchCancel -# - SearchClear -# Reset the search regex. -# - SearchDeleteWord -# Delete the last word in the search regex. -# - SearchHistoryPrevious -# Go to the previous regex in the search history. -# - SearchHistoryNext -# Go to the next regex in the search history. -# -# - macOS exclusive actions: -# - ToggleSimpleFullscreen -# Enter fullscreen without occupying another space. -# -# - Linux/BSD exclusive actions: -# -# - CopySelection -# Copy from the selection buffer. -# - PasteSelection -# Paste from the selection buffer. -# -# - `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 -# - Search -# - Alt -# - Vi -# -# 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. -# -# If the same trigger is assigned to multiple actions, all of them are executed -# in the order they were defined in. -key_bindings: - #- { key: Paste, action: Paste } - #- { key: Copy, action: Copy } - #- { key: L, mods: Control, action: ClearLogNotice } - #- { key: L, mods: Control, mode: ~Vi|~Search, chars: "\x0c" } - #- { key: PageUp, mods: Shift, mode: ~Alt, action: ScrollPageUp, } - #- { key: PageDown, mods: Shift, mode: ~Alt, action: ScrollPageDown } - #- { key: Home, mods: Shift, mode: ~Alt, action: ScrollToTop, } - #- { key: End, mods: Shift, mode: ~Alt, action: ScrollToBottom } - - # Vi Mode - #- { key: Space, mods: Shift|Control, mode: ~Search, action: ToggleViMode } - #- { key: Space, mods: Shift|Control, mode: Vi|~Search, action: ScrollToBottom } - #- { key: Escape, mode: Vi|~Search, action: ClearSelection } - #- { key: I, mode: Vi|~Search, action: ToggleViMode } - #- { key: I, mode: Vi|~Search, action: ScrollToBottom } - #- { key: C, mods: Control, mode: Vi|~Search, action: ToggleViMode } - #- { key: Y, mods: Control, mode: Vi|~Search, action: ScrollLineUp } - #- { key: E, mods: Control, mode: Vi|~Search, action: ScrollLineDown } - #- { key: G, mode: Vi|~Search, action: ScrollToTop } - #- { key: G, mods: Shift, mode: Vi|~Search, action: ScrollToBottom } - #- { key: B, mods: Control, mode: Vi|~Search, action: ScrollPageUp } - #- { key: F, mods: Control, mode: Vi|~Search, action: ScrollPageDown } - #- { key: U, mods: Control, mode: Vi|~Search, action: ScrollHalfPageUp } - #- { key: D, mods: Control, mode: Vi|~Search, action: ScrollHalfPageDown } - #- { key: Y, mode: Vi|~Search, action: Copy } - #- { key: Y, mode: Vi|~Search, action: ClearSelection } - #- { key: Copy, mode: Vi|~Search, action: ClearSelection } - #- { key: V, mode: Vi|~Search, action: ToggleNormalSelection } - #- { key: V, mods: Shift, mode: Vi|~Search, action: ToggleLineSelection } - #- { key: V, mods: Control, mode: Vi|~Search, action: ToggleBlockSelection } - #- { key: V, mods: Alt, mode: Vi|~Search, action: ToggleSemanticSelection } - #- { key: Return, mode: Vi|~Search, action: Open } - #- { key: K, mode: Vi|~Search, action: Up } - #- { key: J, mode: Vi|~Search, action: Down } - #- { key: H, mode: Vi|~Search, action: Left } - #- { key: L, mode: Vi|~Search, action: Right } - #- { key: Up, mode: Vi|~Search, action: Up } - #- { key: Down, mode: Vi|~Search, action: Down } - #- { key: Left, mode: Vi|~Search, action: Left } - #- { key: Right, mode: Vi|~Search, action: Right } - #- { key: Key0, mode: Vi|~Search, action: First } - #- { key: Key4, mods: Shift, mode: Vi|~Search, action: Last } - #- { key: Key6, mods: Shift, mode: Vi|~Search, action: FirstOccupied } - #- { key: H, mods: Shift, mode: Vi|~Search, action: High } - #- { key: M, mods: Shift, mode: Vi|~Search, action: Middle } - #- { key: L, mods: Shift, mode: Vi|~Search, action: Low } - #- { key: B, mode: Vi|~Search, action: SemanticLeft } - #- { key: W, mode: Vi|~Search, action: SemanticRight } - #- { key: E, mode: Vi|~Search, action: SemanticRightEnd } - #- { key: B, mods: Shift, mode: Vi|~Search, action: WordLeft } - #- { key: W, mods: Shift, mode: Vi|~Search, action: WordRight } - #- { key: E, mods: Shift, mode: Vi|~Search, action: WordRightEnd } - #- { key: Key5, mods: Shift, mode: Vi|~Search, action: Bracket } - #- { key: Slash, mode: Vi|~Search, action: SearchForward } - #- { key: Slash, mods: Shift, mode: Vi|~Search, action: SearchBackward } - #- { key: N, mode: Vi|~Search, action: SearchNext } - #- { key: N, mods: Shift, mode: Vi|~Search, action: SearchPrevious } - - # Search Mode - #- { key: Return, mode: Search|Vi, action: SearchConfirm } - #- { key: Escape, mode: Search, action: SearchCancel } - #- { key: C, mods: Control, mode: Search, action: SearchCancel } - #- { key: U, mods: Control, mode: Search, action: SearchClear } - #- { key: W, mods: Control, mode: Search, action: SearchDeleteWord } - #- { key: P, mods: Control, mode: Search, action: SearchHistoryPrevious } - #- { key: N, mods: Control, mode: Search, action: SearchHistoryNext } - #- { key: Up, mode: Search, action: SearchHistoryPrevious } - #- { key: Down, mode: Search, action: SearchHistoryNext } - #- { key: Return, mode: Search|~Vi, action: SearchFocusNext } - #- { key: Return, mods: Shift, mode: Search|~Vi, action: SearchFocusPrevious } - - # (Windows, Linux, and BSD only) - - { key: V, mods: Control|Shift, action: Paste } - - { key: C, mods: Control|Shift, action: Copy } - #- { key: F, mods: Control|Shift, mode: ~Search, action: SearchForward } - #- { key: B, mods: Control|Shift, mode: ~Search, action: SearchBackward } - #- { key: C, mods: Control|Shift, mode: Vi|~Search, action: ClearSelection } - #- { key: Insert, mods: Shift, action: PasteSelection } - #- { key: Key0, mods: Control, action: ResetFontSize } - #- { key: Equals, mods: Control, action: IncreaseFontSize } - #- { key: Plus, mods: Control, action: IncreaseFontSize } - #- { key: NumpadAdd, mods: Control, action: IncreaseFontSize } - #- { key: Minus, mods: Control, action: DecreaseFontSize } - #- { key: NumpadSubtract, mods: Control, action: DecreaseFontSize } - - # (Windows only) - #- { key: Return, mods: Alt, action: ToggleFullscreen } - - # (macOS only) - #- { key: K, mods: Command, mode: ~Vi|~Search, chars: "\x0c" } - #- { key: K, mods: Command, mode: ~Vi|~Search, action: ClearHistory } - #- { key: Key0, mods: Command, action: ResetFontSize } - #- { key: Equals, mods: Command, action: IncreaseFontSize } - #- { key: Plus, mods: Command, action: IncreaseFontSize } - #- { key: NumpadAdd, mods: Command, action: IncreaseFontSize } - #- { key: Minus, mods: Command, action: DecreaseFontSize } - #- { key: NumpadSubtract, mods: Command, action: DecreaseFontSize } - #- { key: V, mods: Command, action: Paste } - #- { key: C, mods: Command, action: Copy } - #- { key: C, mods: Command, mode: Vi|~Search, action: ClearSelection } - #- { key: H, mods: Command, action: Hide } - #- { key: H, mods: Command|Alt, action: HideOtherApplications } - #- { key: M, mods: Command, action: Minimize } - #- { key: Q, mods: Command, action: Quit } - #- { key: W, mods: Command, action: Quit } - #- { key: N, mods: Command, action: SpawnNewInstance } - #- { key: F, mods: Command|Control, action: ToggleFullscreen } - #- { key: F, mods: Command, mode: ~Search, action: SearchForward } - #- { key: B, mods: Command, mode: ~Search, action: SearchBackward } - -#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`: - # - Off - # - Error - # - Warn - # - Info - # - Debug - # - Trace - #log_level: Warn - - # Print all received window events. - #print_events: false diff --git a/common/nvim/init.vim b/common/nvim/init.vim index 5fa2214..a6f1e1a 100644 --- a/common/nvim/init.vim +++ b/common/nvim/init.vim @@ -15,6 +15,7 @@ Plug 'tpope/vim-sleuth' Plug 'm-demare/hlargs.nvim' Plug 'nvim-treesitter/nvim-treesitter' Plug 'windwp/nvim-ts-autotag' +Plug 'mileszs/ack.vim' " interface Plug 'romgrk/barbar.nvim' @@ -28,8 +29,8 @@ Plug 'kevinhwang91/nvim-hlslens' Plug 'sheerun/vim-polyglot' Plug 'dense-analysis/ale' Plug 'neovim/nvim-lspconfig' -"Plug 'jose-elias-alvarez/null-ls.nvim' +" autocomplete Plug 'hrsh7th/nvim-cmp' Plug 'hrsh7th/cmp-nvim-lsp' Plug 'hrsh7th/cmp-cmdline' @@ -78,6 +79,7 @@ let g:presence_buttons = 0 let g:ale_linters = { \ 'javascript': ['eslint'], \ 'typescript': ['eslint', 'tsserver'], +\ 'rust': ['rust-analyzer'], \} let g:ale_fixers = { \ '*': ['trim_whitespace'], @@ -86,12 +88,15 @@ let g:ale_fixers = { \ 'typescript': ['prettier', 'eslint'], \ 'json': ['prettier'], \ 'css': ['prettier'], +\ 'rust': ['rustfmt'], \} let g:ale_fix_on_save = 1 set fillchars+=vert:▎ set completeopt=menu,menuone,noselect + +let g:ackprg = 'ag --vimgrep' " }}} " {{{ scripts @@ -135,32 +140,6 @@ require("hlslens").setup( ) EOF -lua << EOF ---[[local null_ls = require("null-ls") -local augroup = vim.api.nvim_create_augroup("LspFormatting", {}) - -null_ls.setup({ - sources = { - null_ls.builtins.diagnostics.eslint, - null_ls.builtins.diagnostics.zsh, - null_ls.builtins.formatting.eslint, - null_ls.builtins.formatting.prettier, - }, - on_attach = function(client, buffer) - if client.supports_method("textDocument/formatting") then - vim.api.nvim_clear_autocmds({group = augroup, buffer = buffer}) - vim.api.nvim_create_autocmd("BufWritePre", { - group = augroup, - buffer = buffer, - callback = function() - vim.lsp.buf.formatting_sync() - end, - }) - end - end, -})--]] -EOF - lua < inoremap -inoremap +cnoremap map! cnoremap diff --git a/linux/.config/awesome/config.lua b/linux/.config/awesome/config.lua index 4531da7..be1ffea 100644 --- a/linux/.config/awesome/config.lua +++ b/linux/.config/awesome/config.lua @@ -1,10 +1,10 @@ local HOME = os.getenv("HOME") return { - terminal = "wezterm", + terminal = HOME .. "/.local/bin/wezterm", terminal_separator = "start", editor = "nvim", - launcher = "rofi -show combi", + screenshot = HOME .. "/.local/bin/screenie", modkey = "Mod4", theme = "tokyo_night", font = "Terminus 8", @@ -16,10 +16,19 @@ return { "fair", "fair.horizontal", "floating", - }, - autostart = { - "xrdb " .. HOME .. "/.config/xrdb/main.xrdb", - "xrdb -merge " .. HOME .. "/.config/xrdb/colors/tokyonight.xrdb", - "sh ~/.local/generic_autostart.sh", +-- "spiral", +-- "spiral.dwindle", + "tile.right", +-- "tile.bottom", +-- "tile.left", +-- "tile.top", +-- "corner.ne", +-- "corner.se", +-- "corner.sw", +-- "corner.nw", +-- "lain:termfair", +-- "lain:termfair.center", +-- "lain:centerwork", +-- "lain:centerwork.horizontal", }, } diff --git a/linux/.config/awesome/cyclefocus b/linux/.config/awesome/cyclefocus new file mode 160000 index 0000000..d7c8390 --- /dev/null +++ b/linux/.config/awesome/cyclefocus @@ -0,0 +1 @@ +Subproject commit d7c8390052631f0fd9183b704a520ae5d40ad310 diff --git a/linux/.config/awesome/icons.lua b/linux/.config/awesome/icons.lua index 1be1670..a9e1681 100644 --- a/linux/.config/awesome/icons.lua +++ b/linux/.config/awesome/icons.lua @@ -1,7 +1,7 @@ return function(path, theme) - -- Define the image to load theme.menu_submenu_icon = path .. "/submenu.png" + -- titlebar theme.titlebar_close_button_normal = path .. "/titlebar/close.png" theme.titlebar_close_button_focus = path .. "/titlebar/close.png" @@ -28,7 +28,7 @@ return function(path, theme) theme.titlebar_maximized_button_normal_active = path .. "/titlebar/maximized_active.png" theme.titlebar_maximized_button_focus_active = path .. "/titlebar/maximized_active.png" - -- You can use your own layout icons like this: + -- layouts theme.layout_fairh = path .. "/layouts/fairh.png" theme.layout_fairv = path .. "/layouts/fairv.png" theme.layout_floating = path .. "/layouts/floating.png" @@ -45,4 +45,12 @@ return function(path, theme) theme.layout_cornerne = path .. "/layouts/cornerne.png" theme.layout_cornersw = path .. "/layouts/cornersw.png" theme.layout_cornerse = path .. "/layouts/cornerse.png" + + -- layouts (lain) + theme.layout_termfair = path .. "/layouts/lain/termfair.png" + theme.layout_centerfair = path .. "/layouts/lain/centerfair.png" + theme.layout_cascade = path .. "/layouts/lain/cascade.png" + theme.layout_cascadetile = path .. "/layouts/lain/cascadetile.png" + theme.layout_centerwork = path .. "/layouts/lain/centerwork.png" + theme.layout_centerworkh = path .. "/layouts/lain/centerworkh.png" end diff --git a/linux/.config/awesome/icons/bar/net_down.png b/linux/.config/awesome/icons/bar/net_down.png new file mode 100644 index 0000000..3aad2dc Binary files /dev/null and b/linux/.config/awesome/icons/bar/net_down.png differ diff --git a/linux/.config/awesome/icons/bar/net_up.png b/linux/.config/awesome/icons/bar/net_up.png new file mode 100644 index 0000000..5d2a85e Binary files /dev/null and b/linux/.config/awesome/icons/bar/net_up.png differ diff --git a/linux/.config/awesome/icons/bar/packages.png b/linux/.config/awesome/icons/bar/packages.png new file mode 100644 index 0000000..97913a7 Binary files /dev/null and b/linux/.config/awesome/icons/bar/packages.png differ diff --git a/linux/.config/awesome/icons/layouts/lain/cascade.png b/linux/.config/awesome/icons/layouts/lain/cascade.png new file mode 100644 index 0000000..3dc29d6 Binary files /dev/null and b/linux/.config/awesome/icons/layouts/lain/cascade.png differ diff --git a/linux/.config/awesome/icons/layouts/lain/cascadetile.png b/linux/.config/awesome/icons/layouts/lain/cascadetile.png new file mode 100644 index 0000000..375aa7c Binary files /dev/null and b/linux/.config/awesome/icons/layouts/lain/cascadetile.png differ diff --git a/linux/.config/awesome/icons/layouts/lain/centerfair.png b/linux/.config/awesome/icons/layouts/lain/centerfair.png new file mode 100644 index 0000000..c68e7bc Binary files /dev/null and b/linux/.config/awesome/icons/layouts/lain/centerfair.png differ diff --git a/linux/.config/awesome/icons/layouts/lain/centerwork.png b/linux/.config/awesome/icons/layouts/lain/centerwork.png new file mode 100644 index 0000000..89cb047 Binary files /dev/null and b/linux/.config/awesome/icons/layouts/lain/centerwork.png differ diff --git a/linux/.config/awesome/icons/layouts/lain/centerworkh.png b/linux/.config/awesome/icons/layouts/lain/centerworkh.png new file mode 100644 index 0000000..cf4846c Binary files /dev/null and b/linux/.config/awesome/icons/layouts/lain/centerworkh.png differ diff --git a/linux/.config/awesome/icons/layouts/lain/termfair.png b/linux/.config/awesome/icons/layouts/lain/termfair.png new file mode 100644 index 0000000..d6b3e06 Binary files /dev/null and b/linux/.config/awesome/icons/layouts/lain/termfair.png differ diff --git a/linux/.config/awesome/rc.lua b/linux/.config/awesome/rc.lua index 57020ef..354eead 100644 --- a/linux/.config/awesome/rc.lua +++ b/linux/.config/awesome/rc.lua @@ -15,6 +15,7 @@ local naughty = require("naughty") local menubar = require("menubar") local lain = require("lain") local freedesktop = require("freedesktop") +local cyclefocus = require("cyclefocus") local hotkeys_popup = require("awful.hotkeys_popup") -- Enable hotkeys help widget for VIM and other apps -- when client with a matching name is opened: @@ -69,9 +70,12 @@ local terminal = config.terminal or "xterm" local terminal_separator = config.terminal_separator or "-e" local editor = config.editor or os.getenv("EDITOR") or "nano" local editor_cmd = terminal .. " " .. terminal_separator .. " " .. editor +local screenshot = config.screenshot local modkey = config.modkey or "Mod4" local altkey = config.altkey or "Mod1" +cyclefocus.move_mouse_pointer = false + -- Themes define colours, icons, font and wallpapers. do local theme = require("themes/".. config.theme) @@ -102,6 +106,19 @@ do theme = beautiful.theme_assets.recolor_titlebar(theme, theme.fg_focus, "focus") theme = beautiful.theme_assets.recolor_layout(theme, theme.layout_fg) + local lain_layouts = { + "termfair", + "centerfair", + "cascade", + "cascadetile", + "centerwork", + "centerworkh" + } + for _, key in ipairs(lain_layouts) do + local image = gears.surface.duplicate_surface(theme["layout_" .. key]) + theme["layout_" .. key] = gears.color.recolor_image(image, theme.layout_fg) + end + do local image = gears.surface.duplicate_surface(theme.menu_submenu_icon) theme.menu_submenu_icon = gears.color.recolor_image(image, theme.menu_fg_normal) @@ -144,6 +161,18 @@ do path = "music", color = theme.widget_music, }, + packages = { + path = "packages", + color = theme.widget_packages, + }, + net_up = { + path = "net_up", + color = theme.widget_net_up, + }, + net_down = { + path = "net_down", + color = theme.widget_net_down, + }, } for key, icon in pairs(bar_icons) do @@ -163,14 +192,20 @@ end -- Table of layouts to cover with awful.layout.inc, order matters. awful.layout.layouts = {} for _, layout in ipairs(config.layouts) do + local layoutRef = awful.layout.suit + if layout:find("^lain:") then + layoutRef = lain.layout + layout = layout:gsub("^lain:","") + end + if layout:find("%.") then local perStart, perEnd = layout:find("%.") local first = layout:sub(1, perStart - 1) local second = layout:sub(perEnd + 1, #layout) - table.insert(awful.layout.layouts, awful.layout.suit[first][second]) + table.insert(awful.layout.layouts, layoutRef[first][second]) else - table.insert(awful.layout.layouts, awful.layout.suit[layout]) + table.insert(awful.layout.layouts, layoutRef[layout]) end end -- }}} @@ -295,7 +330,21 @@ local function makeBarIcon(icon) end -- Widgets -local volume_icon = makeBarIcon("volume") +local clock = wibox.widget.textclock(markup(beautiful.widget_clock or beautiful.wibar_fg, "%H:%M:%S"), 1) +local calendar = lain.widget.cal({ + attach_to = {clock}, + week_start = 1, + week_number = "left", + followtag = true, + icons = "", + notification_preset = { + font = config.font, + fg = beautiful.notification_fg, + bg = beautiful.notification_bg, + }, +}) + +--[[local volume_icon = makeBarIcon("volume") local volume = lain.widget.alsa({ settings = function() if volume_now.status == "off" then @@ -324,7 +373,7 @@ local volume_buttons = awful.util.table.join( end) ) volume.widget:buttons(volume_buttons) -volume_icon:buttons(volume_buttons) +volume_icon:buttons(volume_buttons)--]] local memory = lain.widget.mem({ settings = function() @@ -338,28 +387,157 @@ local cpu = lain.widget.cpu({ end }) -local cpu_temp = lain.widget.temp({ - settings = function() - widget:set_markup(markup(beautiful.widget_cpu or beautiful.wibar_fg, coretemp_now .. " °C")) - end -}) - -local music_icon = makeBarIcon("music") -local music = wibox.widget.textbox() +local cpu_temp = wibox.widget.textbox() awful.widget.watch( - 'bash -c "~/.config/awesome/scripts/cmus.sh"', + 'bash -c "cat /sys/class/hwmon/hwmon1/temp1_input"', 1, function(widget, stdout, stderr) - if stdout == "" then - music_icon._private.image = nil - music_icon:emit_signal("widget::redraw_needed") - music_icon:emit_signal("widget::layout_changed") + widget:set_markup(markup(beautiful.widget_cpu or beautiful.wibar_fg, math.floor(tonumber(stdout) / 1000) .. "°C")) + end, + cpu_temp +) + +local gpu = wibox.widget.textbox() +awful.widget.watch( + 'bash -c "radeontop -d - -l 1"', + 1, + function(widget, stdout, stderr) + local usage = math.floor(tonumber(stdout:match("gpu (.-)%%"))) + local vram = math.floor(tonumber(stdout:match("vram .- (.-)mb"))) + + widget:set_markup(markup(beautiful.widget_gpu or beautiful.wibar_fg, usage .. "%, " .. vram .. " MB")) + end, + gpu +) + +local gpu_temp = wibox.widget.textbox() +awful.widget.watch( + 'bash -c "cat /sys/class/hwmon/hwmon0/temp1_input"', + 1, + function(widget, stdout, stderr) + widget:set_markup(markup(beautiful.widget_gpu or beautiful.wibar_fg, math.floor(tonumber(stdout) / 1000) .. "°C")) + end, + gpu_temp +) + +local packages_icon = makeBarIcon("packages") +local packages = wibox.widget.textbox() +local packages_wrapper = wibox.widget({ + { + packages_icon, + packages, + layout = wibox.layout.fixed.horizontal, + }, + top = 2, + bottom = 2, + left = 4, + right = 4, + layout = wibox.container.margin, +}) + +awful.widget.watch( + 'bash -c "xbps-install -Mun | wc -l"', + 900, + function(widget, stdout, stderr) + local count = tonumber(stdout) + if count == 0 then + packages_wrapper.visible = false widget:set_markup("") else - music_icon.image = beautiful.bar_music + packages_wrapper.visible = true + widget:set_markup(markup(beautiful.widget_packages or beautiful.wibar_fg, count .. " pkg" .. (count > 1 and "s" or ""))) + end + end, + packages +) - widget:set_markup(markup(beautiful.widget_music, stdout)) +local function gm_round(num, idp) + local mult = 10 ^ (idp or 0) + return math.floor(num * mult + 0.5) / mult +end +local function format_size(size) + size = tonumber(size) + + if size <= 0 then return "0" end + if size < 1024 then return size .. " B" end + if size < 1024 * 1024 then return gm_round(size / 1024, 2) .. " KB" end + if size < 1024 * 1024 * 1024 then return gm_round( size / (1024 * 1024), 2) .. " MB" end + + return gm_round(size / (1024 * 1024 * 1024), 2) .. " GB" +end + +--[[local net_up_icon = makeBarIcon("net_up") +local net_down_icon = makeBarIcon("net_down") +local net_down = wibox.widget.textbox() +local net_up = lain.widget.net({ + units = 1, + settings = function() + widget:set_markup(markup(beautiful.widget_net_up or beautiful.wibar_fg, format_size(net_now.sent))) + net_down:set_markup(markup(beautiful.widget_net_down or beautiful.wibar_fg, format_size(net_now.received))) + end, +})--]] + +local function format_time(time) + local out = "" + + if time >= 3600 then + out = out .. string.format("%02d:", math.floor(time / 3600)) + end + + out = out .. string.format("%02d:%02d", math.floor(time % 3600 / 60), math.floor(time % 60)) + + return out +end + +local music_icon = makeBarIcon("music") +local music = wibox.widget.textbox() +local music_wrapper = wibox.widget({ + { + music_icon, + music, + layout = wibox.layout.fixed.horizontal, + }, + top = 2, + bottom = 2, + left = 4, + right = 4, + layout = wibox.container.margin, +}) + +awful.widget.watch( + 'bash -c "~/.config/awesome/scripts/cmus-wrapper.sh"', + 1, + function(widget, stdout, stderr, reason, code) + if code ~= 0 then + music_wrapper.visible = false + + widget:set_markup("") + else + music_wrapper.visible = true + + local nowplaying = "" + + local status = stdout:match("status (.-)\n") + local duration = tonumber(stdout:match("duration (.-)\n")) + local position = tonumber(stdout:match("position (.-)\n")) + + if duration == -1 and stdout:find("stream ") then + local stream = stdout:match("stream (.-)\n"):gsub("^%s*(.-)%s*$", "%1") + + nowplaying = stream .. " [" .. format_time(position) .. "]" + else + local artist = stdout:match("tag artist (.-)\n"):gsub("^%s*(.-)%s*$", "%1") + local title = stdout:match("tag title (.-)\n"):gsub("^%s*(.-)%s*$", "%1") + + nowplaying = artist .. " - " .. title .. " [" .. format_time(position) .. "/" .. format_time(duration) .. "]" + end + + if status == "stopped" or status == "paused" then + nowplaying = nowplaying .. " [" .. status .. "]" + end + + widget:set_markup(markup(beautiful.widget_music, gears.string.xml_escape(nowplaying))) end end, music @@ -445,18 +623,7 @@ awful.screen.connect_for_each_screen(function(s) -- Right widgets { - { - { - music_icon, - music, - layout = wibox.layout.fixed.horizontal, - }, - top = 2, - bottom = 2, - left = 4, - right = 4, - layout = wibox.container.margin, - }, + music_wrapper, { { makeBarIcon("cpu"), @@ -472,7 +639,31 @@ awful.screen.connect_for_each_screen(function(s) { { makeBarIcon("cpu_temp"), - cpu_temp.widget, + cpu_temp, + layout = wibox.layout.fixed.horizontal, + }, + top = 2, + bottom = 2, + left = 4, + right = 4, + layout = wibox.container.margin, + }, + { + { + makeBarIcon("gpu"), + gpu, + layout = wibox.layout.fixed.horizontal, + }, + top = 2, + bottom = 2, + left = 4, + right = 4, + layout = wibox.container.margin, + }, + { + { + makeBarIcon("gpu_temp"), + gpu_temp, layout = wibox.layout.fixed.horizontal, }, top = 2, @@ -481,7 +672,6 @@ awful.screen.connect_for_each_screen(function(s) right = 4, layout = wibox.container.margin, }, - -- TODO: GPU + Temp when not in VM { { makeBarIcon("memory"), @@ -494,10 +684,10 @@ awful.screen.connect_for_each_screen(function(s) right = 4, layout = wibox.container.margin, }, - { + --[[{ { - volume_icon, - volume.widget, + net_down_icon, + net_down, layout = wibox.layout.fixed.horizontal, }, top = 2, @@ -506,10 +696,35 @@ awful.screen.connect_for_each_screen(function(s) right = 4, layout = wibox.container.margin, }, + { + { + net_up_icon, + net_up.widget, + layout = wibox.layout.fixed.horizontal, + }, + top = 2, + bottom = 2, + left = 4, + right = 4, + layout = wibox.container.margin, + },--]] + packages_wrapper, + --[[{ + { + volume_icon, + volume.widget, + layout = wibox.layout.fixed.horizontal, + }, + top = 2, + bottom = 2, + left = 4, + right = 4, + layout = wibox.container.margin, + },--]] { { makeBarIcon("clock"), - wibox.widget.textclock(markup(beautiful.widget_clock or beautiful.wibar_fg, "%H:%M:%S"), 1), + clock, layout = wibox.layout.fixed.horizontal, }, top = 2, @@ -623,6 +838,16 @@ globalkeys = gears.table.join( group = "launcher", } ), + awful.key( + {}, "Print", + function() + awful.spawn(screenshot) + end, + { + description = "run screenshot tool", + group = "launcher", + } + ), -- client awful.key( @@ -673,7 +898,7 @@ globalkeys = gears.table.join( group = "client", } ), - awful.key( + --[[awful.key( {altkey}, "Tab", function() awful.client.focus.history.previous() @@ -685,6 +910,12 @@ globalkeys = gears.table.join( description = "go back", group = "client", } + ),--]] + cyclefocus.key( + {altkey}, Tab + ), + cyclefocus.key( + {altkey, "Shift"}, Tab ), -- layout @@ -884,6 +1115,24 @@ clientkeys = gears.table.join( description = "(un)maximize horizontally", group = "client", } + ), + awful.key( + {modkey, "Shift"}, "r", + function(c) + local scr = awful.screen.focused({client = true}) + local x = scr.geometry.x + (scr.geometry.width / 2 - 800) + local y = scr.geometry.y + (scr.geometry.height / 2 - 450) + c:geometry({ + x = x, + y = y, + width = 1600, + height = 900, + }) + end, + { + description = "resize to 1600x900", + group = "client", + } ) ) @@ -1122,7 +1371,28 @@ client.connect_signal("unfocus", function(c) c.border_color = beautiful.border_n -- }}} --{{{ Autostart -for _, program in ipairs(config.autostart) do - awful.spawn(program) -end +-- taken from: https://gitlab.com/luna/til/-/blob/main/awesome/rc.lua +awful.spawn.with_line_callback(HOME .. "/.local/bin/autostart.sh", { + stdout = function(line) + --[[naughty.notify({ + title = "autostart", + text = "pid: "..line.." already started", + timeout = 7, + position = "top_right" + })--]] + end, + exit = function(reason, code) + local data = { + title = "autostart exited", + text = reason .. ' ' .. code, + timeout = 4, + } + + if reason ~= "exit" and code ~= 0 then + data.preset = naughty.config.presets.critical + end + + naughty.notify(data) + end +}) --}}} diff --git a/linux/.config/awesome/scripts/cmus-wrapper.sh b/linux/.config/awesome/scripts/cmus-wrapper.sh new file mode 100755 index 0000000..53a4ee2 --- /dev/null +++ b/linux/.config/awesome/scripts/cmus-wrapper.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +# this only exists to stop socket deadlocking (hopefully) + +if ! pgrep -x cmus ; then + echo "cmus-remote: cmus is not running" + exit 1 +else + cmus-remote -Q +fi diff --git a/linux/.config/awesome/scripts/cmus.sh b/linux/.config/awesome/scripts/cmus.sh deleted file mode 100755 index b514aa1..0000000 --- a/linux/.config/awesome/scripts/cmus.sh +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/bash -if [ "`pgrep -x cmus`" == "" ]; then - echo "" - exit 0 -fi - -data="$(cmus-remote -Q)" - -status=$(echo "$data" | awk '/status / {print $2}') -artist=$(echo "$data" | awk '/tag artist / {$1="";$2="";print substr($0,3)}') -title=$(echo "$data" | awk '/tag title / {$1="";$2="";print substr($0,3)}') -duration=$(echo "$data" | awk '/duration/ {print $2}') -position=$(echo "$data" | awk '/position/ {print $2}') - -nowplaying="$artist - $title" - -position_formatted="" -duration_formatted="" - -if [ "$position" != "" ]; then - if [ $position -ge 3600 ]; then - position_formatted+=$(printf '%02d:' $(($position/3600))) - fi - - position_formatted+=$(printf '%02d:%02d' $(($position%3600/60)) $(($position%60))) -fi - -if [ "$duration" != "" ]; then - if [ $duration -ge 3600 ]; then - duration_formatted+=$(printf '%02d:' $(($duration/3600))) - fi - - duration_formatted+=$(printf '%02d:%02d' $(($duration%3600/60)) $(($duration%60))) -fi - -nowplaying+=" [$position_formatted/$duration_formatted]" - -if [ "$status" == "paused" ]; then - nowplaying+=" [paused]" -elif [ "$status" == "stopped" ]; then - nowplaying+=" [stopped]" -fi - -echo "$nowplaying" diff --git a/linux/.config/awesome/themes/tokyo_night.lua b/linux/.config/awesome/themes/tokyo_night.lua index ed1c525..7a69be9 100644 --- a/linux/.config/awesome/themes/tokyo_night.lua +++ b/linux/.config/awesome/themes/tokyo_night.lua @@ -90,11 +90,14 @@ theme.layout_fg = colors.foreground -- bar items theme.widget_clock = colors.color6 theme.widget_volume = colors.color4 -theme.widget_volume_muted = colors.color1 -theme.widget_cpu = colors.color2 -theme.widget_gpu = colors.color4 -theme.widget_memory = colors.color3 -theme.widget_music = colors.color5 +theme.widget_volume_muted = colors.color9 +theme.widget_cpu = colors.color10 +theme.widget_gpu = colors.color14 +theme.widget_memory = colors.color11 +theme.widget_music = colors.color13 +theme.widget_packages = colors.color4 +theme.widget_net_up = colors.color1 +theme.widget_net_down = colors.color2 -- Generate taglist squares: --[[local taglist_square_size = dpi(4) diff --git a/linux/.local/bin/assets/capture.wav b/linux/.local/bin/assets/capture.wav new file mode 100644 index 0000000..20191c9 Binary files /dev/null and b/linux/.local/bin/assets/capture.wav differ diff --git a/linux/.local/bin/assets/done.wav b/linux/.local/bin/assets/done.wav new file mode 100644 index 0000000..e19a75e Binary files /dev/null and b/linux/.local/bin/assets/done.wav differ diff --git a/linux/.local/bin/assets/error.wav b/linux/.local/bin/assets/error.wav new file mode 100644 index 0000000..3877d07 Binary files /dev/null and b/linux/.local/bin/assets/error.wav differ diff --git a/linux/.local/bin/autostart.sh b/linux/.local/bin/autostart.sh new file mode 100755 index 0000000..ef9e863 --- /dev/null +++ b/linux/.local/bin/autostart.sh @@ -0,0 +1,36 @@ +#!/bin/sh + +COLORSCHEME="tokyonight" + +run() { + if ! pgrep "$1" ; + then + notify-send "autostart: starting $1" + "$@" & + else + notify-send "autostart: $1 already running" + fi +} + +notify-send "begin autostart" + +xrdb ~/.config/xrdb/main.xrdb +xrdb -merge "~/.config/xrdb/colors/$COLORSCHEME.xrdb" +xmodmap -e "keysym Menu = Multi_key" + +run pipewire + +run picom --config ~/.config/picom.conf +run xscreensaver -no-splash + +run xmousepasteblock + +run flameshot + +# manual pgrep because env vars +if ! pgrep "nicotine" ; then + notify-send "autostart: starting nicotine" + env GTK_CSD=0 LD_PRELOAD=/usr/lib/libgtk3-nocsd.so.0 nicotine & +else + notify-send "autostart: nicotine already running" +fi diff --git a/linux/.local/bin/cmus-notify.sh b/linux/.local/bin/cmus-notify.sh index eb9aba4..25902b8 100755 --- a/linux/.local/bin/cmus-notify.sh +++ b/linux/.local/bin/cmus-notify.sh @@ -3,14 +3,14 @@ get_albumart() { rm /tmp/albumart.jpg - local dir_name=$( dirname "$1" ) - local names=(folder cover albumart front "$2") - for item in "${names[@]}" ; do - img_file=$( find "$dir_name" -maxdepth 1 -iregex ".*$item*\.\(jpg\|jpeg\|gif\|png\|\)$" -print -quit ) - [ -n "$img_file" ] && cp "$img_file" /tmp/_albumart.jpg && break - done - [ -z "$img_file" ] && ffmpeg -i "$1" -an -v:c copy "/tmp/_albumart.jpg" -y && img_file="/tmp/_albumart.jpg" - [ -n "$img_file" ] && ffmpeg -i /tmp/_albumart.jpg -vf scale=72:-1 /tmp/albumart.jpg && rm /tmp/_albumart.jpg + local dir_name=$( dirname "$1" ) + local names=(folder cover albumart front "$2") + for item in "${names[@]}" ; do + img_file=$( find "$dir_name" -maxdepth 1 -iregex ".*$item*\.\(jpg\|jpeg\|gif\|png\|\)$" -print -quit ) + [ -n "$img_file" ] && cp "$img_file" /tmp/_albumart.jpg && break + done + [ -z "$img_file" ] && ffmpeg -i "$1" -an -vcodec copy "/tmp/_albumart.jpg" -y && img_file="/tmp/_albumart.jpg" + [ -n "$img_file" ] && ffmpeg -i /tmp/_albumart.jpg -vf scale=72:-1 /tmp/albumart.jpg && rm /tmp/_albumart.jpg } if [ $2 == "playing" ]; then @@ -32,5 +32,23 @@ if [ $2 == "playing" ]; then duration_formatted+=$(printf '%02d:%02d' $(($_duration%3600/60)) $(($_duration%60))) fi - notify-send -t 5000 -i /tmp/albumart.jpg "$_title" "$_artist\n$_album\n$duration_formatted" + details="" + + if [ "$_artist" != "" ]; then + details+="$_artist" + fi + if [ "$_album" != "" ]; then + if [ "$details" != "" ]; then + details+="\n" + fi + details+="$_album" + fi + if [ "$duration_formatted" != "" ]; then + if [ "$details" != "" ]; then + details+="\n" + fi + details+="$duration_formatted" + fi + + notify-send -t 5000 -i /tmp/albumart.jpg "$_title" "$details" fi diff --git a/linux/.local/bin/elixiremanager.sh b/linux/.local/bin/elixiremanager.sh index 965fa28..cbfec96 100755 --- a/linux/.local/bin/elixiremanager.sh +++ b/linux/.local/bin/elixiremanager.sh @@ -92,12 +92,14 @@ function upload_file_and_notify() { if [[ $macos == "true" ]]; then osascript -e "display notification \"${response}\" with title \"Success!\"" else + aplay "$HOME/.local/bin/assets/done.wav" & notify-send -t 5000 "Success!" "${response}" -i "${1}" --hint=int:transient:1 fi else if [[ $macos == "true" ]]; then osascript -e "display notification \"Error uploading file\" with title \"Error!\"" else + aplay "$HOME/.local/bin/assets/error.wav" & notify-send -t 5000 "Error!" --hint=int:transient:1 fi fi diff --git a/linux/.local/bin/screenie b/linux/.local/bin/screenie index 15fea9e..fb6c75e 100755 --- a/linux/.local/bin/screenie +++ b/linux/.local/bin/screenie @@ -26,11 +26,12 @@ mkdir -p "$screenshot_folder" date_str=$(date +'%Y-%m-%d-%H_%M_%S') target="$screenshot_folder/screenie-$date_str.png" -maim -s "$target" +flameshot gui -r > "$target" -if [ ! -f "$target" ]; then - notify-send -t 5000 "screenshot not found, skipping sending" +if [ ! -s "$target" ]; then + notify-send "screenshot aborted, skipping sending" else + aplay "$HOME/.local/bin/assets/capture.wav" & notify-send -t 5000 "screenie: sending: $target" source ~/.secrets $elixiremanager "$target"