diff options
71 files changed, 2202 insertions, 1202 deletions
diff --git a/.config/alacritty/alacritty.yml b/.config/alacritty/alacritty.yml deleted file mode 100644 index 910151a..0000000 --- a/.config/alacritty/alacritty.yml +++ /dev/null @@ -1,920 +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. Both lines and columns - # must be non-zero for this to take effect. 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: 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: 6 - y: 18 - - # 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: 0.82 - - # 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: Terminal - - # 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: AlacrittyApp - - # Decorations theme variant -# -# Override the variant of the System theme/GTK theme/Wayland client side -# decorations. Commonly supported values are `Dark`, `Light`, and `None` for -# auto pick-up. Set this to `None` to use the default theme variant. -# decorations_theme_variant: None -# Resize increments -# -# Prefer resizing window by discrete steps equal to cell dimensions. -# resize_increments: false -# Make `Option` key behave as `Alt` (macOS only): -# - OnlyLeft -# - OnlyRight -# - Both -# - None (default) -# option_as_alt: 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: 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 - - # 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: 1 - - # 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: 1 - - # Use built-in font for box drawing characters. - # - # If `true`, Alacritty will use a custom built-in font for box drawing - # characters (Unicode points 2500 - 259f). - # - builtin_box_drawing: true - - # If `true`, bold text is drawn using the bright color variants. - draw_bold_text_with_bright_colors: false -# Colors (Tomorrow Night) -# colors: -# Default colors -# primary: -# background: '#1d1f21' -# foreground: '#c5c8c6' - -# 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' - -# Keyboard 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 - -# Footer bar -# -# Color used for the footer bar on the bottom, used by search regex input, -# hyperlink URI preview, etc. -# -# footer_bar: -# background: '#c5c8c6' -# foreground: '#1d1f21' - -# 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: CellForeground - -# Normal colors -# normal: -# black: '#1d1f21' -# red: '#cc6666' -# green: '#b5bd68' -# yellow: '#f0c674' -# blue: '#81a2be' -# magenta: '#b294bb' -# cyan: '#8abeb7' -# white: '#c5c8c6' - -# Bright colors -# bright: -# black: '#666666' -# red: '#d54e53' -# green: '#b9ca4a' -# yellow: '#e7c547' -# blue: '#7aa6da' -# magenta: '#c397d8' -# cyan: '#70c0b1' -# white: '#eaeaea' -# 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: 200 - - # Visual bell animation color. - color: '#7d4b23' - - # 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: - # program: notify-send - # args: ["Beep!"] - # 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: true -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: false -# 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 - -# Time after which cursor stops blinking, in seconds. -# -# Specifying '0' will disable timeout for blinking. -# blink_timeout: 5 - -# 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: -# - (Linux/BSD/macOS) `$SHELL` or the user's login shell, if `$SHELL` is unset -# - (Windows) powershell -# shell: -# program: -# 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: $HOME -# Offer IPC using `alacritty msg` (unix only) -# ipc_socket: 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: true -# Hints -# -# Terminal hints can be used to find text or hyperlink 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 any of `regex` or `hyperlinks` field and either an - # `action` or a `command` field. The fields `mouse`, `binding` and - # `post_processing` are optional. - # - # The `hyperlinks` option will cause OSC 8 escape sequence hyperlinks to be - # highlighted. - # - # 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 and applies only to - # `regex` matches. https://google.ca - # - # 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:)[^\0\ - -\x1F\x7F-\x9F<>\"\\s{-}\\^⟨⟩`]+" - hyperlinks: true - 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: Right, mods: Control, action: ExpandSelection } -# - { mouse: Middle, mode: ~Vi, 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/winit/*/winit/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 -# - ToggleMaximized -# - SpawnNewInstance -# Spawn a new instance of Alacritty. -# - CreateNewWindow -# Create a new Alacritty window from the current process. -# - 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`. -# - CenterAroundViCursor -# Center view around vi mode cursor -# -# - 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 } - - # (Windows, Linux, and BSD only) - - {key: V, mods: Alt, action: Paste} - - {key: C, mods: Alt, action: Copy} - - {key: J, mods: Alt, action: ScrollLineDown} - - {key: K, mods: Alt, action: ScrollLineUp} - - {key: K, mods: Alt|Shift, action: IncreaseFontSize} - - {key: J, mods: Alt|Shift, action: DecreaseFontSize} - # - { 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 } -# 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: Z, mode: Vi|~Search, action: CenterAroundViCursor } -#- { 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 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: CreateNewWindow } -#- { 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`: -# - false -# - Error -# - Warn -# - Info -# - Debug -# - Trace -# log_level: Warn -# Renderer override. -# - glsl3 -# - gles2 -# - gles2_pure -# renderer: None -# Print all received window events. -# print_events: false -# Highlight window damage information. -# highlight_damage: false -# Friffle port from .Xresources using terminal.sexy -colors: - # Default colors - primary: - background: '0x111a1f' # 111a1f - foreground: '0xacb3b5' # acb3b5 - - # Normal colors - normal: - black: '0x111a1f' # 111a1f - red: '0x8d7856' # 8d7856 - green: '0x798362' # 798362 - yellow: '0x9b9257' # 9b9257 - blue: '0x63768a' # 63768a - magenta: '0xb7416e' # b7416e - cyan: '0x6998b3' # 6998b3 - white: '0xc5c8c6' # c5c8c6 - - # Bright colors - bright: - black: '0x868b8d' # 868b8d - red: '0x810002' # 810002 - green: '0x037500' # 037500 - yellow: '0xebcb88' # ebcb88 - blue: '0x779988' # 779988 - magenta: '0x738c9c' # 738c9c - cyan: '0x66aabb' # 66aabb - white: '0xc0c7ca' # c0c7ca diff --git a/.config/aliasrc b/.config/aliasrc index 3853818..a1d34be 100644 --- a/.config/aliasrc +++ b/.config/aliasrc @@ -17,7 +17,9 @@ :e, $EDITOR :q, exit cdd, cd .. +disks, lsblk -o ID-LINK,MOUNTPOINT,FSTYPE,FSUSE%,SIZE e, $EDITOR +db, maestral w, $BROWSER g, git ff, fastfetch --raw $HOME/.cache/gentoo.six --logo-width 32 --logo-height 24 --logo-padding 2 @@ -33,3 +35,4 @@ tmls, tmux list-sessions xx, chmod +x adog, git log --all --decorate --oneline --graph yadog, yadm log --all --decorate --oneline --graph +z, zathura --fork diff --git a/.config/btop/btop.conf b/.config/btop/btop.conf new file mode 100644 index 0000000..af4692d --- /dev/null +++ b/.config/btop/btop.conf @@ -0,0 +1,248 @@ +#? Config file for btop v. 1.4.0 + +#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes. +#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes" +color_theme = "/usr/share/btop/themes/everforest-dark-hard.theme" + +#* If the theme set background should be shown, set to False if you want terminal background transparency. +theme_background = False + +#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false. +truecolor = True + +#* Set to true to force tty mode regardless if a real tty has been detected or not. +#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols. +force_tty = False + +#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets. +#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box. +#* Use whitespace " " as separator between different presets. +#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty" +presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty" + +#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists. +#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift. +vim_keys = True + +#* Rounded corners on boxes, is ignored if TTY mode is ON. +rounded_corners = True + +#* Default symbols to use for graph creation, "braille", "block" or "tty". +#* "braille" offers the highest resolution but might not be included in all fonts. +#* "block" has half the resolution of braille but uses more common characters. +#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY. +#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view. +graph_symbol = "braille" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_cpu = "default" + +# Graph symbol to use for graphs in gpu box, "default", "braille", "block" or "tty". +graph_symbol_gpu = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_mem = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_net = "default" + +# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty". +graph_symbol_proc = "default" + +#* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace. +shown_boxes = "cpu net proc mem" + +#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs. +update_ms = 200 + +#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct", +#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly. +proc_sorting = "memory" + +#* Reverse sorting order, True or False. +proc_reversed = False + +#* Show processes as a tree. +proc_tree = False + +#* Use the cpu graph colors in the process list. +proc_colors = True + +#* Use a darkening gradient in the process list. +proc_gradient = True + +#* If process cpu usage should be of the core it's running on or usage of the total available cpu power. +proc_per_core = False + +#* Show process memory as bytes instead of percent. +proc_mem_bytes = True + +#* Show cpu graph for each process. +proc_cpu_graphs = True + +#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate) +proc_info_smaps = False + +#* Show proc box on left side of screen instead of right. +proc_left = False + +#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop). +proc_filter_kernel = False + +#* In tree-view, always accumulate child process resources in the parent process. +proc_aggregate = False + +#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available. +#* Select from a list of detected attributes from the options menu. +cpu_graph_upper = "total" + +#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available. +#* Select from a list of detected attributes from the options menu. +cpu_graph_lower = "user" + +#* If gpu info should be shown in the cpu box. Available values = "Auto", "On" and "Off". +show_gpu_info = "Auto" + +#* Toggles if the lower CPU graph should be inverted. +cpu_invert_lower = True + +#* Set to True to completely disable the lower CPU graph. +cpu_single_graph = False + +#* Show cpu box at bottom of screen instead of top. +cpu_bottom = False + +#* Shows the system uptime in the CPU box. +show_uptime = True + +#* Show cpu temperature. +check_temp = True + +#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors. +cpu_sensor = "Auto" + +#* Show temperatures for cpu cores also if check_temp is True and sensors has been found. +show_coretemp = True + +#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core. +#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine. +#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries. +#* Example: "4:0 5:1 6:3" +cpu_core_map = "" + +#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine". +temp_scale = "celsius" + +#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024. +base_10_sizes = False + +#* Show CPU frequency. +show_cpu_freq = True + +#* Draw a clock at top of screen, formatting according to strftime, empty string to disable. +#* Special formatting: /host = hostname | /user = username | /uptime = system uptime +clock_format = "%X" + +#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort. +background_update = True + +#* Custom cpu model name, empty string to disable. +custom_cpu_name = "" + +#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ". +#* Begin line with "exclude=" to change to exclude filter, otherwise defaults to "most include" filter. Example: disks_filter="exclude=/boot /home/user". +disks_filter = "" + +#* Show graphs instead of meters for memory values. +mem_graphs = True + +#* Show mem box below net box instead of above. +mem_below_net = False + +#* Count ZFS ARC in cached and available memory. +zfs_arc_cached = True + +#* If swap memory should be shown in memory box. +show_swap = True + +#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk. +swap_disk = True + +#* If mem box should be split to also show disks info. +show_disks = False + +#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar. +only_physical = True + +#* Read disks list from /etc/fstab. This also disables only_physical. +use_fstab = True + +#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool) +zfs_hide_datasets = False + +#* Set to true to show available disk space for privileged users. +disk_free_priv = False + +#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view. +show_io_stat = True + +#* Toggles io mode for disks, showing big graphs for disk read/write speeds. +io_mode = False + +#* Set to True to show combined read/write io graphs in io mode. +io_graph_combined = False + +#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ". +#* Example: "/mnt/media:100 /:20 /boot:1". +io_graph_speeds = "" + +#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False. +net_download = 100 + +net_upload = 100 + +#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest. +net_auto = True + +#* Sync the auto scaling for download and upload to whichever currently has the highest scale. +net_sync = True + +#* Starts with the Network Interface specified here. +net_iface = "" + +#* Show battery stats in top right if battery is present. +show_battery = True + +#* Which battery to use if multiple are present. "Auto" for auto detection. +selected_battery = "Auto" + +#* Show power stats of battery next to charge indicator. +show_battery_watts = True + +#* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG". +#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info. +log_level = "WARNING" + +#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards. +nvml_measure_pcie_speeds = True + +#* Horizontally mirror the GPU graph. +gpu_mirror_graph = True + +#* Custom gpu0 model name, empty string to disable. +custom_gpu_name0 = "" + +#* Custom gpu1 model name, empty string to disable. +custom_gpu_name1 = "" + +#* Custom gpu2 model name, empty string to disable. +custom_gpu_name2 = "" + +#* Custom gpu3 model name, empty string to disable. +custom_gpu_name3 = "" + +#* Custom gpu4 model name, empty string to disable. +custom_gpu_name4 = "" + +#* Custom gpu5 model name, empty string to disable. +custom_gpu_name5 = "" diff --git a/.config/foot/foot.ini b/.config/foot/foot.ini index 6331160..9750704 100644 --- a/.config/foot/foot.ini +++ b/.config/foot/foot.ini @@ -8,7 +8,7 @@ app-id=foot # globally set wayland app-id. Default values are "foot" and "footcl title=foot locked-title=no -font=monospace:size=8 +font=monospace:size=13 # font-bold=<bold variant of regular font> # font-italic=<italic variant of regular font> # font-bold-italic=<bold+italic variant of regular font> diff --git a/.config/gh-dash/config.yml b/.config/gh-dash/config.yml new file mode 100644 index 0000000..9c3c2a4 --- /dev/null +++ b/.config/gh-dash/config.yml @@ -0,0 +1,79 @@ +prSections: +- title: My Pull Requests + filters: is:open author:@me + type: null +- title: Needs My Review + filters: is:open review-requested:@me + type: null +- title: Involved + filters: is:open involves:@me -author:@me + type: null +issuesSections: +- title: My Issues + filters: is:open author:@me +- title: Assigned + filters: is:open assignee:@me +- title: Involved + filters: is:open involves:@me -author:@me +repo: + branchesRefetchIntervalSeconds: 30 + prsRefetchIntervalSeconds: 60 +defaults: + preview: + open: true + width: 50 + prsLimit: 20 + issuesLimit: 20 + view: prs + layout: + prs: + updatedAt: + width: 5 + createdAt: + width: 5 + repo: + width: 20 + author: + width: 15 + authorIcon: + hidden: false + assignees: + width: 20 + hidden: true + base: + width: 15 + hidden: true + lines: + width: 15 + issues: + updatedAt: + width: 5 + createdAt: + width: 5 + repo: + width: 15 + creator: + width: 10 + creatorIcon: + hidden: false + assignees: + width: 20 + hidden: true + refetchIntervalMinutes: 30 +keybindings: + universal: [] + issues: [] + prs: [] + branches: [] +repoPaths: {} +theme: + ui: + sectionsShowCount: true + table: + showSeparator: true + compact: false +pager: + diff: "" +confirmQuit: false +showAuthorIcons: true +smartFilteringAtLaunch: true diff --git a/.config/ghostty/config b/.config/ghostty/config new file mode 100644 index 0000000..7c3c780 --- /dev/null +++ b/.config/ghostty/config @@ -0,0 +1,80 @@ +# Window +# window-decoration = client +window-theme = dark +resize-overlay = never +confirm-close-surface = false + +# macOS +macos-titlebar-style = transparent +macos-titlebar-proxy-icon = hidden +macos-option-as-alt = true +macos-icon = official + +# linux weirdness +window-decoration = none +window-padding-x = 0 +window-padding-y = 0 + +# Kitty Images +image-storage-limit = 3200000000 + +# Mouse +mouse-hide-while-typing = true + +# Keybinds +keybind = alt+shift+k=increase_font_size:1 +keybind = alt+shift+j=decrease_font_size:1 +keybind = super+shift+c=copy_to_clipboard +keybind = super+shift+v=paste_from_clipboard + +# Clipboard +clipboard-read = allow +clipboard-write = allow +copy-on-select = true + +# Background and Transparency +background = #111a1f +background-opacity = 0.8 +unfocused-split-opacity = 06 +background-blur = true +background-blur-radius = 15 + +# Fonts and Cursor +font-family = "Vulf Mono" +font-size = 15 + +cursor-style = block +cursor-color = #66aabb +cursor-opacity = 0.8 + +# custom-shader-animation = true +# custom-shader = ~/.config/ghostty/shaders/starfield.glsl + +# Colorscheme + +# black +palette = 0=#111a1f +palette = 8=#868b8d +# red +palette = 1=#8d7856 +palette = 9=#810002 +# green +palette = 2=#798362 +palette = 10=#037500 +# yellow +palette = 3=#9b9257 +palette = 11=#ebcb88 +# blue +palette = 4=#63768a +palette = 12=#779988 +# magenta +palette = 5=#b7416e +palette = 13=#738c9c +# cyan +palette = 6=#6998b3 +palette = 14=#66aabb +# white +palette = 7=#c5c8c6 +palette = 15=#c0c7ca + +# vim:ft=ghostty diff --git a/.config/git/config b/.config/git/config index 00ece71..9fa0732 100644 --- a/.config/git/config +++ b/.config/git/config @@ -1,6 +1,4 @@ -# This is Git's per-user configuration file. [user] -# Please adapt and uncomment the following lines: name = Benjamin Chausse email = benjamin@chausse.xyz signingkey = ABC4A5A7430D6309ACBD219044F94DD6456590C3 @@ -12,8 +10,27 @@ signingkey = ABC4A5A7430D6309ACBD219044F94DD6456590C3 rebase = false [commit] gpgsign = true +[tag] + gpgsign = true [sendemail] smtpserver = mail.chausse.xyz smtpuser = benjamin smtpserverport = 587 smtpencryption = tls +[filter "lfs"] + clean = git-lfs clean -- %f + smudge = git-lfs smudge -- %f + process = git-lfs filter-process + required = true +[safe] + directory = /home/master/.local/src/river +[url "git@github.com:"] + insteadOf = https://github.com/ +[core] + pager = delta +[interactive] + diffFilter = delta --color-only +[delta] + navigate = true +[merge] + conflictStyle = zdiff3 diff --git a/.config/glow/glow.yml b/.config/glow/glow.yml new file mode 100644 index 0000000..1e10148 --- /dev/null +++ b/.config/glow/glow.yml @@ -0,0 +1,10 @@ +# style name or JSON path (default "auto") +style: "auto" +# show local files only; no network (TUI-mode only) +local: false +# mouse support (TUI-mode only) +mouse: false +# use pager to display markdown +pager: false +# word-wrap at width +width: 80
\ No newline at end of file diff --git a/.config/glow/themes/dark.yml b/.config/glow/themes/dark.yml new file mode 100644 index 0000000..ce3dda1 --- /dev/null +++ b/.config/glow/themes/dark.yml @@ -0,0 +1,25 @@ +--- {document: {block_prefix: "\n", block_suffix: "\n", color: '252', margin: 2}, +block_quote: {indent: 1, indent_token: '│ '}, paragraph: {}, list: {level_indent: 2}, +heading: {block_suffix: "\n", color: '39', bold: true}, h1: {prefix: ' ', suffix: ' ', +color: '228', background_color: '63', bold: true}, h2: {prefix: '## '}, h3: {prefix: '### '}, +h4: {prefix: '#### '}, h5: {prefix: '##### '}, h6: {prefix: '###### ', color: '35', +bold: false}, text: {}, strikethrough: {crossed_out: true}, emph: {italic: true}, +strong: {bold: true}, hr: {color: '240', format: "\n--------\n"}, item: {block_prefix: '• '}, +enumeration: {block_prefix: '. '}, task: {ticked: '[✓] ', unticked: '[ ] '}, link: { +color: '30', underline: true}, link_text: {color: '35', bold: true}, image: {color: '212', +underline: true}, image_text: {color: '243', format: 'Image: {{.text}} →'}, code: { +prefix: ' ', suffix: ' ', color: '203', background_color: '236'}, code_block: {color: '244', +margin: 2, chroma: {text: {color: '#C4C4C4'}, error: {color: '#F1F1F1', background_color: '#F05B5B'}, +comment: {color: '#676767'}, comment_preproc: {color: '#FF875F'}, keyword: {color: '#00AAFF'}, +keyword_reserved: {color: '#FF5FD2'}, keyword_namespace: {color: '#FF5F87'}, keyword_type: { +color: '#6E6ED8'}, operator: {color: '#EF8080'}, punctuation: {color: '#E8E8A8'}, +name: {color: '#C4C4C4'}, name_builtin: {color: '#FF8EC7'}, name_tag: {color: '#B083EA'}, +name_attribute: {color: '#7A7AE6'}, name_class: {color: '#F1F1F1', underline: true, +bold: true}, name_constant: {}, name_decorator: {color: '#FFFF87'}, name_exception: {}, +name_function: {color: '#00D787'}, name_other: {}, literal: {}, literal_number: { +color: '#6EEFC0'}, literal_date: {}, literal_string: {color: '#C69669'}, literal_string_escape: { +color: '#AFFFD7'}, generic_deleted: {color: '#FD5B5B'}, generic_emph: {italic: true}, +generic_inserted: {color: '#00D787'}, generic_strong: {bold: true}, generic_subheading: { +color: '#777777'}, background: {background_color: '#373737'}}}, table: {}, definition_list: {}, +definition_term: {}, definition_description: {block_prefix: "\n\U0001F836 "}, html_block: {}, +html_span: {}} diff --git a/.config/gtk-3.0/gtk.css b/.config/gtk-3.0/gtk.css new file mode 100644 index 0000000..64c61fd --- /dev/null +++ b/.config/gtk-3.0/gtk.css @@ -0,0 +1,12 @@ +/* No (default) title bar on wayland */ +headerbar.default-decoration { + /* You may need to tweak these values depending on your GTK theme */ + margin-bottom: 50px; + margin-top: -100px; +} + +/* rm -rf window shadows */ +window.csd, /* gtk4? */ +window.csd decoration { /* gtk3 */ + box-shadow: none; +} diff --git a/.config/gtk-3.0/settings.ini b/.config/gtk-3.0/settings.ini new file mode 100644 index 0000000..2cfd6d0 --- /dev/null +++ b/.config/gtk-3.0/settings.ini @@ -0,0 +1,2 @@ +[Settings] +gtk-dialog-use-header=false diff --git a/.config/gtk-4.0/gtk.css b/.config/gtk-4.0/gtk.css new file mode 120000 index 0000000..beb3b06 --- /dev/null +++ b/.config/gtk-4.0/gtk.css @@ -0,0 +1 @@ +../gtk-3.0/gtk.css
\ No newline at end of file diff --git a/.config/gtk-4.0/settings.ini b/.config/gtk-4.0/settings.ini new file mode 120000 index 0000000..fbea1af --- /dev/null +++ b/.config/gtk-4.0/settings.ini @@ -0,0 +1 @@ +../gtk-3.0/settings.ini
\ No newline at end of file diff --git a/.config/kanshi/config b/.config/kanshi/config new file mode 100644 index 0000000..4ad7029 --- /dev/null +++ b/.config/kanshi/config @@ -0,0 +1,45 @@ +output "eDP-1" alias $mainmon +output "LG Electronics LG ULTRAWIDE 0x0002DCA5" alias $widemon + + +profile dualmon { + output $mainmon { + enable + mode 2256x1504@59.999 + position 0,0 + transform normal + scale 1 + } + output $widemon { + enable + mode 2560x1080@59.978 + position 2256,424 + transform 180 + scale 1 + } + exec monchange +} + + +profile singlemon { + output $mainmon { + enable + mode 2256x1504@59.999 + position 0,0 + transform normal + scale 1 + } + exec monchange +} + +profile singlewide { + output $mainmon disable + output $widemon { + enable + mode 2256x1504@59.9789 + position 0,0 + transform 180 + scale 1 + } + exec monchange +} diff --git a/.config/lf/clean b/.config/lf/clean new file mode 100755 index 0000000..4bbbaf1 --- /dev/null +++ b/.config/lf/clean @@ -0,0 +1,3 @@ +#!/bin/bash + +$XDG_CONFIG_HOME/lf/kitty.sh delete_img $LF_KITTY_IMAGE_ID 0 diff --git a/.config/lf/cleaner b/.config/lf/cleaner deleted file mode 100755 index a184d84..0000000 --- a/.config/lf/cleaner +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -if [ -n "$FIFO_UEBERZUG" ]; then - printf '{"action": "remove", "identifier": "PREVIEW"}\n' > "$FIFO_UEBERZUG" -fi diff --git a/.config/lf/kitty.sh b/.config/lf/kitty.sh new file mode 100755 index 0000000..fa84b3f --- /dev/null +++ b/.config/lf/kitty.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +# Transmits an image in png format via file-mode transmission. +# $1 file path +# $2 image id +transmit_file_png() { + abspath_b64="$(printf -- "$(realpath -- "$1")" | base64 -w0)" + printf "\e_Gt=f,i=$2,f=100,q=1;$abspath_b64\e\\" >/dev/tty +} + +# Displays an already transferred image. +# $1 image id +# $2 placement id +# $3 x, $4 y, $5 w, $6 h +display_img() { + printf "\e[s" >/dev/tty # save cursor position + tput cup $4 $3 >/dev/tty # move cursor + printf "\e_Ga=p,i=$1,p=$2,q=1\e\\" >/dev/tty + printf "\e[u" >/dev/tty # restore cursor position +} + +# Deletes a displayed image. +# $1 image id +# $2 placement id +delete_img() { + printf "\e_Ga=d,d=I,i=$1,p=$2,q=1\e\\" >/dev/tty +} + +# Combines transmit_file_png and display_img. +# $1 file path +# $2 image id +# $3 placement id +# $4 x, $5 y, $6 w, $7 h +show() { + local img_width img_height new_width new_height + img_width=$(identify -format "%w" "$1") + img_height=$(identify -format "%h" "$1") + new_width=$6 + new_height=$7 + transmit_file_png "$1" "$2" + display_img "$2" "$3" "$4" "$5" "$new_width" "$new_height" +} + +"$@" diff --git a/.config/lf/lfrc b/.config/lf/lfrc index fe28549..48a5d0d 100755 --- a/.config/lf/lfrc +++ b/.config/lf/lfrc @@ -1,20 +1,3 @@ -# Luke's lf settings - - -# Note on Image Previews -# For those wanting image previews, like this system, there are four steps to -# set it up. These are done automatically for LARBS users, but I will state -# them here for others doing it manually. -# -# 1. ueberzug must be installed. -# 2. The scope file (~/.config/lf/scope for me), must have a command similar to -# mine to generate ueberzug images. -# 3. A `set cleaner` line as below is a cleaner script. -# 4. lf should be started through a wrapper script (~/.local/bin/lfub for me) -# that creates the environment for ueberzug. This command can be be aliased -# in your shellrc (`alias lf="lfub") or if set to a binding, should be -# called directly instead of normal lf. - # Basic vars set sixel true set shellopts '-eu' @@ -23,10 +6,11 @@ set scrolloff 10 set icons set period 1 set hiddenfiles ".*:*.aux:*.log:*.bbl:*.bcf:*.blg:*.run.xml:tags:*.org_archive" -set cleaner '~/.config/lf/cleaner' -set previewer '~/.config/lf/scope' set autoquit true +set previewer '~/.config/lf/preview' +set cleaner '~/.config/lf/clean' + # cmds/functions cmd open ${{ case $(file --mime-type "$(readlink -f $f)" -b) in @@ -75,7 +59,7 @@ cmd moveto ${{ clear; tput cup $(($(tput lines)/3)); tput bold set -f clear; echo "Move to where?" - dest="$(sed -e 's/\s*#.*//' -e '/^$/d' -e 's/^\S*\s*//' ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | fzf | sed 's|~|$HOME|')" && + dest="$(fzf-shortcuts)" && for x in $fx; do eval mv -iv \"$x\" \"$dest\" done && @@ -117,8 +101,6 @@ cmd bulkrename ${{ }} # Bindings -map <c-f> $lf -remote "send $id select \"$(fzf)\"" -map J $lf -remote "send $id cd $(sed -e 's/\s*#.*//' -e '/^$/d' -e 's/^\S*\s*//' ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | fzf)" map D delete map <c-n> push :mkdir<space> map <c-r> reload @@ -143,10 +125,10 @@ map V push :!nvim<space> map N push :!touch<space> map W $setsid -f $TERMINAL >/dev/null 2>&1 -map Y $printf "%s" "$fx" | xclip -selection clipboard +map Y $printf "%s" "$fx" | wl-copy map E $dropbox-cli exclude add "$f" && notify-send -a " Dropbox" "Excluded $f from computer" map R $dropbox-restore "$f" -map S $dropbox-cli sharelink "$f" | xsel -b && notify-send -a " Dropbox" "Link copied to clipboard." +map S $dropbox-cli sharelink "$f" | wl-copy && notify-send -a " Dropbox" "Link copied to clipboard." # Source Bookmarks source "~/.config/lf/shortcuts" diff --git a/.config/lf/preview b/.config/lf/preview new file mode 100755 index 0000000..635edc9 --- /dev/null +++ b/.config/lf/preview @@ -0,0 +1,68 @@ +#!/bin/bash + +set -C -f +IFS="$(printf '%b_' '\n')" +IFS="${IFS%_}" + +# Called by lf to generate the preview. +# $1 file path +# $4 x offset in cell coordinates +# $5 y offset in cell coordinates +# $2 width of the display area in cell coordinates +# $3 height of the display area in cell coordinates +THUMBNAIL_FPATH="$LF_KITTY_TEMPDIR/thumbnail.png" + +# case "$(basename -- "$1" | tr '[:upper:]' '[:lower:]')" in +case "$(file --dereference --brief --mime-type -- "$1")" in +text/html) + lynx -width="$4" -display_charset=utf-8 -dump "$1" + ;; +text/troff) + w=`expr "$2" - 2` + MANWIDTH="$w" man ./ "$1" + ;; +text/* | */xml) + [ "${1##*.}" = "md" ] && glow -s dark -w "$2" "$1" && exit 0 + bat --terminal-width "$(($4 - 2))" -f "$1" + ;; +application/json | application/x-ndjson) + jq -C < "$1" ;; +audio/* | application/octet-stream) + mediainfo "$1" || exit 1 + ;; +image/png) + $XDG_CONFIG_HOME/lf/kitty.sh show "$1" $LF_KITTY_IMAGE_ID 1 $4 $5 $2 $3 + ;; +image/gif) + magick convert "${1}[0]" "$THUMBNAIL_FPATH" + $XDG_CONFIG_HOME/lf/kitty.sh show "$THUMBNAIL_FPATH" $LF_KITTY_IMAGE_ID 1 $4 $5 $2 $3 + ;; +image/*) + magick convert "$1" "$THUMBNAIL_FPATH" + $XDG_CONFIG_HOME/lf/kitty.sh show "$THUMBNAIL_FPATH" $LF_KITTY_IMAGE_ID 1 $4 $5 $2 $3 + ;; +application/pdf) + gs -o "$THUMBNAIL_FPATH" -sDEVICE=pngalpha -dLastPage=1 "$1" >/dev/null + $XDG_CONFIG_HOME/lf/kitty.sh show "$THUMBNAIL_FPATH" $LF_KITTY_IMAGE_ID 1 $4 $5 $2 $3 + ;; +font/* | application/vnd.ms-opentype) + FONT_NAME=$(fc-query --format "%{family}\n" "$1" | head -n 1) + + PREVIEW_TEXT="${FONT_NAME}\nABCDEFGHIJKLMNOPQRSTUBWXYZ\n""\ +abcdefghijklmnopqrstuvwxyz\n""\ +1234567890\n""\ +!@#$\%(){}[]-+=_\`~" + + magick convert -size "1920x1080" xc:'#ffffff' \ + -gravity center -pointsize 76 \ + -font "$1" \ + -fill '#000000' \ + -annotate +0+0 "$PREVIEW_TEXT" \ + "$THUMBNAIL_FPATH" + $XDG_CONFIG_HOME/lf/kitty.sh show "$THUMBNAIL_FPATH" $LF_KITTY_IMAGE_ID 1 $4 $5 $2 $3 + ;; +*) + cat "$1" + ;; +esac +exit 127 diff --git a/.config/lf/scope b/.config/lf/scope index e2a77f7..d28177d 100755 --- a/.config/lf/scope +++ b/.config/lf/scope @@ -8,7 +8,7 @@ PREVIEW_DIR="${XDG_CACHE_HOME:-$HOME/.cache}/lf" PREVIEW_WIDTH=600 # px chafafunc() { - chafa -f sixel -O 0 --polite on -c full --color-space din99d -w 9 -t 0.8 --size "$1"x + chafa -f sixel -O 0 --polite on -c full -w 9 -t 0.8 --view-size "$1"x"$2" --animate false --fg-only } # Prevent recursive thumbnails (if the file ends in .six) @@ -19,16 +19,22 @@ text/html) lynx -width="$4" -display_charset=utf-8 -dump "$1" ;; text/troff) - man ./ "$1" | col -b + w=`expr "$2" - 2` + MANWIDTH="$w" man ./ "$1" ;; -text/* | */xml | application/json | application/x-ndjson) +text/* | */xml) + [ "${1##*.}" = "md" ] && glow -s dark -w "$2" "$1" && exit 0 bat --terminal-width "$(($4 - 2))" -f "$1" ;; +application/json | application/x-ndjson) + jq -C < "$1" ;; audio/* | application/octet-stream) mediainfo "$1" || exit 1 ;; font/* | application/vnd.ms-opentype) - PREVIEW_TEXT="ABCDEFGHIJKLMNOPQRSTUBWXYZ\n""\ + FONT_NAME=$(fc-query --format "%{family}\n" "$1" | head -n 1) + + PREVIEW_TEXT="${FONT_NAME}\nABCDEFGHIJKLMNOPQRSTUBWXYZ\n""\ abcdefghijklmnopqrstuvwxyz\n""\ 1234567890\n""\ !@#$\%(){}[]-+=_\`~" @@ -38,26 +44,27 @@ abcdefghijklmnopqrstuvwxyz\n""\ -font "$1" \ -fill '#000000' \ -annotate +0+0 "$PREVIEW_TEXT" \ - -flatten jpeg:- | chafafunc $2 + -flatten jpeg:- | chafafunc $2 $3 ;; + image/vnd.djvu) djvused "$1" -e 'select 1; save-page-with /dev/stdout' | - convert djvu:- jpeg:- | chafafunc $2 + convert djvu:- jpeg:- | chafafunc $2 $3 ;; image/webp) - dwebp "$1" -tiff -o - | chafafunc $2 + dwebp "$1" -tiff -o - | chafafunc $2 $3 ;; image/heic) - convert "$1" jpeg:- | chafafunc $2 + convert "$1" jpeg:- | chafafunc $2 $3 ;; image/*) - cat "$1" | chafafunc $2 + cat "$1" | chafafunc $2 $3 ;; */pdf) - pdftocairo -singlefile -scale-to-x $PREVIEW_WIDTH -scale-to-y -1 -jpeg "$1" - | chafafunc $2 + pdftocairo -singlefile -scale-to-x $PREVIEW_WIDTH -scale-to-y -1 -jpeg "$1" - | chafafunc $2 $3 ;; video/*) - ffmpegthumbnailer -i "$1" -s 0 -c jpeg -f -o - | chafafunc $2 + ffmpegthumbnailer -i "$1" -s 0 -c jpeg -f -o - | chafafunc $2 $3 ;; application/*zip) atool --list -- "$1" diff --git a/.config/mimeapps.list b/.config/mimeapps.list index 0a6cf5a..473920f 100644 --- a/.config/mimeapps.list +++ b/.config/mimeapps.list @@ -4,7 +4,7 @@ x-scheme-handler/magnet=torrent.desktop; application/x-bittorrent=torrent.desktop; x-scheme-handler/mailto=mail.desktop; text/plain=text.desktop; -text/html=text.desktop; +text/html=lynx.desktop; application/postscript=pdf.desktop; application/pdf=pdf.desktop; image/png=img.desktop; diff --git a/.config/mpv/scripts/modules.lua b/.config/mpv/scripts/modules.lua deleted file mode 100644 index 37b69b3..0000000 --- a/.config/mpv/scripts/modules.lua +++ /dev/null @@ -1,3 +0,0 @@ -local mpv_scripts_dir_path = os.getenv("HOME") .. "/.config/mpv/scripts/" -function load(relative_path) dofile(mpv_scripts_dir_path .. relative_path) end -load("mpvSockets/mpvSockets.lua") diff --git a/.config/protonmail/bridge-v3/keychain.json b/.config/protonmail/bridge-v3/keychain.json new file mode 100644 index 0000000..2dc0094 --- /dev/null +++ b/.config/protonmail/bridge-v3/keychain.json @@ -0,0 +1,3 @@ +{ + "Helper": "pass-app" +}
\ No newline at end of file diff --git a/.config/river/init b/.config/river/init new file mode 100755 index 0000000..676e7b8 --- /dev/null +++ b/.config/river/init @@ -0,0 +1,628 @@ +#!/usr/bin/lua + +--[[ + +NOTE: +- execp() needs 'lua-posix' package +- bitwise operands for tag mappings need Lua version >= 5.3 + +--]] + +-- Convenient functions ──────────────────────────────────────────────────────── + +-- Wrapper around table.concat() to also handle other types +local function concat(...) + local list, sep, i, j = ... + + if type(list) == "table" then + return table.concat(list, sep, i, j) + else + return tostring(list) + end +end + +-- All the setting tables ────────────────────────────────────────────────────── + +-- local wl_script_dir = os.getenv("HOME") .. "/.local/libexec/wayland" +local drun_menu = "tofi-drun --drun-launch=true" +local run_menu = "tofi-run --drun-launch=true" + +local startup_commands = { + -- Inform dbus about the environment variables + { + "dbus-update-activation-environment", + "DISPLAY", + "WAYLAND_DISPLAY", + "XDG_SESSION_TYPE", + "XDG_CURRENT_DESKTOP", + }, + -- Startup programs + { "gentoo-pipewire-launcher", "restart" }, + { "pidof", "waybar", "||", "waybar" }, + { "pidof", "kanshi", "||", "kanshi" }, +} + +local keyboard = { + layouts = { "us", "ca" }, + model = "pc104", + options = "grp:ctrl_space_toggle", +} + +local outputs = { + ["DP-1"] = { + mode = "3840x2160", + pos = "0,0", + transform = "normal", + scale = "1.000000", + preferred = true, + }, + ["HDMI-A-1"] = { + mode = "2560x1080", + pos = "640,2160", + transform = "180", + scale = "1.000000", + preferred = true, + }, +} + +local inputs = { + ["pointer-2-7-SynPS/2_Synaptics_TouchPad"] = { + ["events"] = "disabled-on-external-mouse", + ["click-method"] = "clickfinger", + ["drag"] = "enabled", + ["tap"] = "disabled", + ["tap-button-map"] = "left-right-middle", + ["disable-while-typing"] = "enabled", + ["natural-scroll"] = "enabled", + ["scroll-method"] = "two-finger", + }, +} + +local river_options = { + -- Theme options + ["border-width"] = 2, + ["border-color-focused"] = "0x447a6c", + ["border-color-unfocused"] = "0x444444", + ["border-color-urgent"] = "0x7d4b23", + ["xcursor-theme"] = { "Posy_Cursor_Black", 28 }, + ["background-color"] = "0x222222", + + -- Other options + ["set-repeat"] = { 60, 150 }, -- Wait 150ms before repeating at 60/s + ["focus-follows-cursor"] = "normal", + ["set-cursor-warp"] = "on-output-change", + ["attach-mode"] = "top", + ["default-layout"] = "rivertile", +} + +local gsettings = { + ["org.gnome.desktop.interface"] = { + ["gtk-theme"] = "Nordic", + ["icon-theme"] = "Papirus-Dark", + ["cursor-theme"] = river_options["xcursor-theme"][1], + ["cursor-size"] = river_options["xcursor-theme"][2], + }, +} + +-- "Action" { "rule-type" { "selection" { "arguments" }}}, +local window_rules = { + ["float"] = { + ["app-id"] = { + ["dropdown"] = "", + }, + ["title"] = {}, + }, + ["no-float"] = { + ["app-id"] = {}, + ["title"] = {}, + }, + ["ssd"] = { + ["app-id"] = { + ["com.mitchellh.ghostty"] = "", + ["firefox"] = "", + ["imv"] = "", + ["org.pwmt.zathura"] = "", + }, + ["title"] = {}, + }, + ["csd"] = { + ["app-id"] = {}, + ["title"] = {}, + }, + ["tags"] = { + ["app-id"] = { + ["vesktop"] = "128", -- tag 8 = 1<<7 + ["cider"] = "256", -- tag 9 = 1<<8 + }, + ["title"] = {}, + }, + ["output"] = { + ["app-id"] = {}, + ["title"] = {}, + }, + ["position"] = { + ["app-id"] = {}, + ["title"] = {}, + }, + ["dimensions"] = { + ["app-id"] = {}, + ["title"] = {}, + }, + ["fullscreen"] = { + ["app-id"] = {}, + ["title"] = {}, + }, + ["no-fullscreen"] = { + ["app-id"] = {}, + ["title"] = {}, + }, + ["tearing"] = { + ["app-id"] = { + -- ["factorio"] = "", + }, + ["title"] = { + ["Balatro"] = "", + }, + }, + ["no-tearing"] = { + ["app-id"] = { + ["factorio"] = "", + }, + ["title"] = {}, + }, +} + +-- Window rules (float/csd filters) +for action, patterns in pairs(window_rules) do + for pattern_type, entries in pairs(patterns) do + for pattern, args in pairs(entries) do + os.execute(string.format( + "riverctl rule-add -%s %s %s %s", + pattern_type, -- e.g., "app-id" or "title" + pattern, -- e.g., "dropdown" or "vesktop" + action, -- e.g., "float" or "tags" + args -- e.g., "" or "9" + )) + end + end +end + +-- Additional modes and their mappings to switch between them and 'normal' mode +-- +-- name: string (the name of the additional mode) +-- mod: string|list (modifiers for key binding, concanated by '+') +-- key: string +local modes = { + { + name = "passthrough", + mod = "Super", + key = "F11", + }, +} + +-- Each mapping contains 4 keys: +-- +-- mod: string|list (modifiers, concanated by '+') +-- key: string +-- command: string|list (the command passed to riverctl) +-- opt: string ('release' or 'repeat') +local mappings = { + -- Key bindings + map = { + normal = { + { -- Terminal emulators + mod = "Super", + key = "Return", + command = { "spawn", "ghostty" }, + -- command = { "spawn", "foot" }, + }, + { -- Application launcher + mod = "Super", + key = "D", + command = { "spawn", string.format([['%s']], drun_menu) }, + }, + { + mod = { "Super", "Shift" }, + key = "D", + command = { "spawn", string.format([['%s']], run_menu) }, + }, + { -- Web search + mod = "Super", + key = "W", + command = { "spawn", "$BROWSER" }, + }, + { -- Super+Q to close the focused view + mod = "Super", + key = "Q", + command = "close", + }, + { -- Super+Shift+Q to exit river (requires 'swaynag' program from sway) + mod = { "Super", "Shift" }, + key = "Q", + command = { "spawn", [['swaynag -t warning -m "Exit river?" -b "Yes" "riverctl exit"']] }, + }, + { -- Super+Shift+X to lock the screen + mod = "Super", + key = "BackSpace", + command = { "spawn", [['swaylock -uc 000000']] }, + }, + { -- Super+{J,K} to focus next/previous view in the layout stack + mod = "Super", + key = "J", + command = { "focus-view", "next" }, + }, + { + mod = "Super", + key = "K", + command = { "focus-view", "previous" }, + }, + { -- Super+Shift+{J,K} to swap focused view with the next/previous view in the layout stack + mod = { "Super", "Shift" }, + key = "K", + command = { "swap", "previous" }, + }, + { + mod = { "Super", "Shift" }, + key = "J", + command = { "swap", "next" }, + }, + { -- Super+S to S.nap the focused view to the top of the layout stack + mod = "Super", + key = "S", + command = "zoom", + }, + { -- Super+{H,L} to decrease/increase the main_factor value of rivertile by 0.02 + mod = "Super", + key = "H", + command = { "send-layout-cmd", "rivertile", [['main-ratio -0.02']] }, + }, + { + mod = "Super", + key = "L", + command = { "send-layout-cmd", "rivertile", [['main-ratio +0.02']] }, + }, + { + mod = "Super", + key = "period", + command = { "focus-output", "next" }, + }, + { + mod = { "Super", "Shift" }, + key = "period", + command = { "send-to-output", "next" }, + }, + { -- Super+Shift+{H,L} to increment/decrement the main_count value of rivertile + mod = { "Super" }, + key = "I", + command = { "send-layout-cmd", "rivertile", [['main-count +1']] }, + }, + { + mod = { "Super", "Shift" }, + key = "I", + command = { "send-layout-cmd", "rivertile", [['main-count -1']] }, + }, + { -- Super+Alt+{H,J,K,L} to move views (floating) + mod = { "Super", "Alt" }, + key = "H", + command = { "move", "left", 100 }, + }, + { + mod = { "Super", "Alt" }, + key = "J", + command = { "move", "down", 100 }, + }, + { + mod = { "Super", "Alt" }, + key = "K", + command = { "move", "up", 100 }, + }, + { + mod = { "Super", "Alt" }, + key = "L", + command = { "move", "right", 100 }, + }, + { -- Super+Control+{H,J,K,L} to resize views + mod = { "Super", "Control" }, + key = "H", + command = { "resize", "horizontal", -100 }, + }, + { + mod = { "Super", "Control" }, + key = "J", + command = { "resize", "vertical", 100 }, + }, + { + mod = { "Super", "Control" }, + key = "K", + command = { "resize", "vertical", -100 }, + }, + { + mod = { "Super", "Control" }, + key = "L", + command = { "resize", "horizontal", 100 }, + }, + { -- Super+Alt+Control+{H,J,K,L} to snap views to screen edges + mod = { "Super", "Alt", "Control" }, + key = "H", + command = { "snap", "left" }, + }, + { + mod = { "Super", "Alt", "Control" }, + key = "J", + command = { "snap", "down" }, + }, + { + mod = { "Super", "Alt", "Control" }, + key = "K", + command = { "snap", "up" }, + }, + { + mod = { "Super", "Alt", "Control" }, + key = "L", + command = { "snap", "right" }, + }, + { -- Super+Space to toggle float + mod = "Super", + key = "Space", + command = "toggle-float", + }, + { -- Super+F to toggle fullscreen + mod = "Super", + key = "F", + command = "toggle-fullscreen", + }, + { -- Toggle keyboard layout + mod = "Alt", + key = "Return", + command = { "spawn", "layouttoggle" }, + }, + { -- Dropdown Terminal + mod = "Super", + key = "A", + command = { "spawn", [['dropdowntoggle shell tmux-shell']] }, + }, + { -- Dropdown Calculator + mod = { "Super", "Shift" }, + key = "A", + command = { "spawn", [['dropdowntoggle calc tmux-py']] }, + }, + { -- Dropdown Network Manager + mod = "None", + key = "XF86AudioMedia", + command = { "spawn", [['dropdowntoggle network nmtui']] }, + }, + { -- Dropdown Bluetooth Manager + mod = "Shift", + key = "XF86AudioMedia", + command = { "spawn", [['dropdowntoggle bluetooth bluetuith']] }, + }, + { -- Dropdown Audio Mixer + mod = "Shift", + key = "XF86AudioMute", + command = { "spawn", [['dropdowntoggle audio pulsemixer']] }, + }, + { -- Print Screen + mod = "None", + key = "Print", + command = { "spawn", [['capture -f']] }, + }, + { -- Print Selection + mod = "Super", + key = "Print", + command = { "spawn", [['capture -s']] }, + }, + { -- Print Window + mod = "Shift", + key = "Print", + command = { "spawn", [['capture -w']] }, + }, + }, + locked = { + { -- Control screen backlight brightness + mod = "None", + key = "XF86MonBrightnessUp", + command = { "spawn", [['backlightctl -i 5']] }, + opt = "repeat", + }, + { + mod = "None", + key = "XF86MonBrightnessDown", + command = { "spawn", [['backlightctl -d 5']] }, + opt = "repeat", + }, + { + mod = "Shift", + key = "XF86MonBrightnessUp", + command = { "spawn", [['backlightctl -s 100']] }, + opt = "repeat", + }, + { + mod = "Shift", + key = "XF86MonBrightnessDown", + command = { "spawn", [['backlightctl -s 5']] }, + opt = "repeat", + }, + { + -- Control pulseaudio volume + mod = "None", + key = "XF86AudioRaiseVolume", + command = { "spawn", [['volumectl 5 +']] }, + opt = "repeat", + }, + { + mod = "None", + key = "XF86AudioLowerVolume", + command = { "spawn", [['volumectl 5 -']] }, + opt = "repeat", + }, + { + mod = "Shift", + key = "XF86AudioRaiseVolume", + command = { "spawn", [['volumectl 100']] }, + opt = "repeat", + }, + { + mod = "Shift", + key = "XF86AudioLowerVolume", + command = { "spawn", [['volumectl 5']] }, + opt = "repeat", + }, + { + mod = "None", + key = "XF86AudioMute", + command = { "spawn", [['volumectl mute']] }, + }, + { -- Control MPRIS aware media players with 'playerctl' + mod = "None", + key = "XF86AudioPlay", + command = { "spawn", [['playerctl play-pause']] }, + }, + { + mod = "None", + key = "XF86AudioPrev", + command = { "spawn", [['playerctl previous']] }, + }, + { + mod = "None", + key = "XF86AudioNext", + command = { "spawn", [['playerctl next']] }, + }, + }, + }, + -- Mappings for pointer (mouse) + ["map-pointer"] = { + normal = { + -- Super + Left Mouse Button to move views + { + mod = "Super", + key = "BTN_LEFT", + command = "move-view", + }, + -- Super + Right Mouse Button to resize views + { + mod = "Super", + key = "BTN_RIGHT", + command = "resize-view", + }, + }, + }, +} + +-- -- These mappings are repeated, so they are separated from the mappings table +local function tag_mappings() + for i = 1, 9 do + -- local tag_num = 1 << (i - 1) + local tag_num = math.pow(2, i - 1) + -- Super+[1-9] to focus tag [0-8] + os.execute(string.format("riverctl map normal Super %s set-focused-tags %s", i, tag_num)) + -- Super+Shift+[1-9] to tag focused view with tag [0-8] + os.execute(string.format("riverctl map normal Super+Shift %s set-view-tags %s", i, tag_num)) + -- Super+Control+[1-9] to toggle focus of tag [0-8] + os.execute(string.format("riverctl map normal Super+Control %s toggle-focused-tags %s", i, tag_num)) + -- Super+Alt+[1-9] to toggle tag [0-8] of focused view + os.execute(string.format("riverctl map normal Super+Alt %s toggle-view-tags %s", i, tag_num)) + end + -- river has a total of 32 tags + -- local all_tags = (1 << 32) - 1 + local all_tags = math.pow(2, 32) - 1 + os.execute(string.format("riverctl map normal Super 0 set-focused-tags %s", all_tags)) + os.execute(string.format("riverctl map normal Super+Shift 0 set-view-tags %s", all_tags)) +end + +-- Apply settings ────────────────────────────────────────────────────────────── + +-- Run startup commands +-- +-- 'riverctl spawn ...' always returns (even when the child process is a daemon) +-- so we don't need to resort to posix.unistd.spawn() +for _, cmd in ipairs(startup_commands) do + os.execute(string.format([[riverctl spawn '%s']], concat(cmd, " "))) +end + +-- Configure outputs +local randr_cmd = "wlr-randr" +for output, options in pairs(outputs) do + randr_cmd = randr_cmd .. " --output " .. output + + for opt, value in pairs(options) do + if opt ~= "preferred" then + randr_cmd = string.format(randr_cmd .. " --%s %s", opt, value) + end + end + + -- Ensure '--preferred' is the last argument for each monitor + if options.preferred then + randr_cmd = randr_cmd .. " --preferred" + end +end +os.execute(randr_cmd) + +-- Configure input devices +for device, options in pairs(inputs) do + for key, val in pairs(options) do + os.execute(string.format("riverctl input %s %s %s", device, key, val)) + end +end + +-- GNOME-related settings +for group, tbl in pairs(gsettings) do + for key, value in pairs(tbl) do + os.execute(string.format("gsettings set %s %s %s", group, key, value)) + end +end + +-- Set river's options +for key, value in pairs(river_options) do + os.execute(string.format("riverctl %s %s", key, concat(value, " "))) +end + +-- Additional modes (beside 'normal' and 'locked') +for _, mode in ipairs(modes) do + local mode_name = mode.name + local modifiers = concat(mode.mod, "+") + + -- Declare the mode + os.execute("riverctl declare-mode " .. mode_name) + + -- Setup key bindings to enter/exit the mode + os.execute(string.format("riverctl map normal %s %s enter-mode %s", modifiers, mode.key, mode_name)) + os.execute(string.format("riverctl map %s %s %s enter-mode normal", mode_name, modifiers, mode.key)) +end + +-- Keyboard and mouse bindings +for map_type, tbl in pairs(mappings) do + for mode, value in pairs(tbl) do + for _, binding in ipairs(value) do + local modifiers = concat(binding.mod, "+") + local cmd = concat(binding.command, " ") + + -- Options -release and -repeat for 'map' and 'unmap' commands + local opt = binding.opt + if opt ~= "release" and opt ~= "repeat" then + opt = "" + else + opt = "-" .. opt + end + + os.execute(string.format("riverctl %s %s %s %s %s %s", map_type, opt, mode, modifiers, binding.key, cmd)) + + -- Duplicate mappings of mode 'locked' for mode 'normal' + if mode == "locked" then + os.execute(string.format("riverctl %s %s normal %s %s %s", map_type, opt, modifiers, binding.key, cmd)) + end + end + end +end + +-- Mappings for tag management +tag_mappings() + +-- Configure keyboard layouts +os.execute( + string.format( + "riverctl keyboard-layout -model %s -options %s %s ", + keyboard.model, + keyboard.options, + concat(keyboard.layouts, ",") + ) +) diff --git a/.config/screenlayout/quick-presentation b/.config/screenlayout/quick-presentation deleted file mode 100755 index 8a8123b..0000000 --- a/.config/screenlayout/quick-presentation +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh - -mainmon="eDP" - -# List monitors with xrandr -# Keep all linues that contain " connected" -# Remove the main monitor from the list -# Remove all disconnected monitors -# Delete empty lines -# Get the first non-main monitor -# Sanitize the output (keep only the monitor name) -othermon="$(xrandr | grep " connected" | - sed "s/.*$mainmon\s.*//g; - /^$/d; - s/\([A-Z0-9]\+\) .*/\1/g" | - head -n 1)" - -xrandr --output "$mainmon" --auto --output "$othermon" --auto --above "$mainmon" - -makewall diff --git a/.config/screenlayout/workstation-dualmon b/.config/screenlayout/workstation-dualmon deleted file mode 100755 index 08c080f..0000000 --- a/.config/screenlayout/workstation-dualmon +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -xrandr --output eDP --primary --mode 2256x1504 --pos 2560x0 --rotate normal --output DisplayPort-0 --off --output DisplayPort-1 --off --output DisplayPort-2 --mode 2560x1080 --pos 0x0 --rotate inverted --output DisplayPort-3 --off --output DisplayPort-4 --off --output DisplayPort-5 --off --output DisplayPort-6 --off --output DisplayPort-7 --off -makewall diff --git a/.config/screenlayout/workstation-singlemon b/.config/screenlayout/workstation-singlemon deleted file mode 100755 index e75dd9a..0000000 --- a/.config/screenlayout/workstation-singlemon +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -xrandr --output eDP --primary --mode 2256x1504 --pos 0x0 --rotate normal --output DisplayPort-0 --off --output DisplayPort-1 --off --output DisplayPort-2 --off --output DisplayPort-3 --off --output DisplayPort-4 --off --output DisplayPort-5 --off --output DisplayPort-6 --off --output DisplayPort-7 --off -makewall diff --git a/.config/shortcutrc b/.config/shortcutrc index 099d2c8..feb6e89 100644 --- a/.config/shortcutrc +++ b/.config/shortcutrc @@ -25,18 +25,20 @@ # - lowercase shortcuts prepended by 'y' copies selected files to these paths # - lowercase shortcuts prepended by 'm' moves selected files to these paths +CV, cv, ~/Dropbox/A/work/Application/CV/current Compilation, cp, ~/.local/src Config, cf, ~/.config -CV, cv, ~/Dropbox/A/work/Application/CV/current Downloads, dl, ~/Downloads Dropbox, bx, ~/Dropbox Hotkeys, sx, ~/.config/sxhkd Images, img, ~/Dropbox/A/Personnal/Photos/unsorted Neovim, vi, ~/.config/nvim +Obsidian, oi, ~/Documents/obsidian/main OrgMode, om, ~/Dropbox/org -School, sf, ~/Dropbox/A/scholar/sherbrooke/24-05-T2 -Scripts, sc, ~/.local/bin +Rafta, rf, ~/Workspace/rafta +School, sf, ~/Dropbox/A/scholar/sherbrooke/24-09-reprise-automne Screenshots, ss, ~/Pictures/captures +Scripts, sc, ~/.local/bin Wallpapers, wp, ~/Pictures/wallpapers Website, ww, ~/Workspace/chausse.xyz WindowManager, wm, ~/.local/src/dwl diff --git a/.config/tofi/config b/.config/tofi/config new file mode 100644 index 0000000..8130030 --- /dev/null +++ b/.config/tofi/config @@ -0,0 +1,19 @@ +matching-algorithm = fuzzy +anchor = center +width = 30% +height = 40% +horizontal = false +font-size = 8 +prompt-text = " run: " +font = monospace +outline-width = 0 +border-width = 0 +background-color = #1b1d1bcc +text-color = #447a6cff +selection-color = #7d4b23ff +min-input-width = 120 +result-spacing = 0 +padding-top = 0 +padding-bottom = 0 +padding-left = 0 +padding-right = 0 diff --git a/.config/w3m/config b/.config/w3m/config new file mode 100644 index 0000000..03e67f4 --- /dev/null +++ b/.config/w3m/config @@ -0,0 +1,157 @@ +tabstop 2 +indent_incr 4 +pixel_per_char 16 +pixel_per_line 22 +frame 0 +target_self 0 +open_tab_blank 0 +open_tab_dl_list 0 +display_link 0 +display_link_number 0 +decode_url 0 +display_lineinfo 0 +ext_dirlist 1 +dirlist_cmd file:///$LIB/dirlist.cgi +use_dictcommand 1 +dictcommand file:///$LIB/w3mdict.cgi +multicol 0 +alt_entity 0 +graphic_char 0 +display_borders 0 +disable_center 0 +fold_textarea 0 +display_ins_del 1 +ignore_null_img_alt 1 +view_unseenobject 0 +display_image 1 +pseudo_inlines 1 +auto_image 1 +max_load_image 4 +ext_image_viewer 0 +image_scale 100 +inline_img_protocol 2 +imgdisplay w3mimgdisplay +image_map_list 1 +fold_line 0 +show_lnum 0 +show_srch_str 1 +label_topline 0 +nextpage_topline 0 +color 1 +high-intensity 0 +basic_color terminal +anchor_color blue +image_color green +form_color red +mark_color cyan +bg_color terminal +active_style 0 +active_color cyan +visited_anchor 0 +visited_color magenta +pagerline 10000 +use_history 1 +history 100 +save_hist 1 +confirm_qq 1 +close_tab_back 0 +mark 0 +emacs_like_lineedit 0 +space_autocomplete 0 +vi_prec_num 0 +mark_all_pages 0 +wrap_search 0 +ignorecase_search 1 +clear_buffer 1 +decode_cte 0 +auto_uncompress 0 +preserve_timestamp 1 +keymap_file keymap +document_root +personal_document_root +cgi_bin +index_file +tmp_dir +mime_types ~/.mime.types, /etc/mime.types +mailcap ~/.w3m/mailcap, /etc/w3m/mailcap +urimethodmap ~/.w3m/urimethodmap, /etc/w3m/urimethodmap +editor /usr/bin/vi +mailto_options 1 +mailer +extbrowser /usr/bin/xdg-open +extbrowser2 +extbrowser3 +extbrowser4 +extbrowser5 +extbrowser6 +extbrowser7 +extbrowser8 +extbrowser9 +bgextviewer 1 +use_lessopen 0 +passwd_file ~/.w3m/passwd +disable_secret_security_check 0 +ftppasswd +ftppass_hostnamegen 1 +pre_form_file ~/.w3m/pre_form +siteconf_file ~/.w3m/siteconf +user_agent +no_referer 0 +cross_origin_referer 1 +accept_language en;q=1.0 +accept_encoding gzip, compress, bzip, bzip2, deflate, br +accept_media text/html, text/*;q=0.5, image/*, application/* +argv_is_url 1 +retry_http 1 +default_url 1 +follow_redirection 10 +meta_refresh 0 +localhost_only 0 +dns_order 0 +use_proxy 1 +http_proxy +https_proxy +gopher_proxy +ftp_proxy +no_proxy +noproxy_netaddr 1 +no_cache 0 +ssl_forbid_method 2, 3, t, 5 +ssl_min_version +ssl_cipher +ssl_verify_server 1 +ssl_cert_file +ssl_key_file +ssl_ca_path +ssl_ca_file +ssl_ca_default 1 +use_cookie 1 +show_cookie 0 +accept_cookie 1 +accept_bad_cookie 0 +cookie_reject_domains +cookie_accept_domains +cookie_avoid_wrong_number_of_dots +display_charset UTF-8 +document_charset UTF-8 +auto_detect 2 +system_charset UTF-8 +follow_locale 1 +ext_halfdump 0 +use_wide 1 +use_combining 1 +east_asian_width 0 +use_language_tag 1 +ucs_conv 1 +pre_conv 0 +search_conv 1 +fix_width_conv 1 +use_gb12345_map 0 +use_jisx0201 0 +use_jisc6226 0 +use_jisx0201k 0 +use_jisx0212 0 +use_jisx0213 0 +strict_iso2022 1 +gb18030_as_ucs 0 +simple_preserve_space 0 diff --git a/.config/w3m/keymap b/.config/w3m/keymap new file mode 100644 index 0000000..010f48a --- /dev/null +++ b/.config/w3m/keymap @@ -0,0 +1,180 @@ +# Removing Defaults + +keymap + NULL +keymap C-v NULL +keymap SPC NULL +keymap ^[[6~ NULL +keymap - NULL +keymap ESC-v NULL +keymap ^[[5~ NULL +keymap b NULL +keymap C-f NULL +keymap C-b NULL +keymap C-f NULL +keymap C-b NULL +keymap C-n NULL +keymap C-p NULL +keymap J NULL +keymap K NULL +keymap > NULL +keymap < NULL +keymap , NULL +keymap . NULL +keymap C-a NULL +keymap ^ NULL +keymap $ NULL +keymap C-e NULL +keymap 0 NULL +keymap Z NULL +keymap z NULL +keymap w NULL +keymap W NULL +keymap b NULL +keymap ESC-g NULL +keymap ESC-< NULL +keymap ESC-> NULL +keymap ^[[1~ NULL +keymap ^[[4~ NULL +keymap G NULL +keymap g NULL +keymap [ NULL +keymap ] NULL +keymap TAB NULL +keymap C-u NULL +keymap ESC-TAB NULL +keymap ^[[Z NULL +keymap ESC-m NULL +keymap u NULL +keymap C-r NULL +keymap C-j NULL +keymap C-m NULL +keymap C-t NULL +keymap ESC-C-j NULL +keymap ESC-C-m NULL +keymap a NULL +keymap I NULL +keymap ESC-I NULL +keymap c NULL +keymap u NULL +keymap i NULL +keymap = NULL +keymap C-g NULL +keymap : NULL +keymap ";" NULL +keymap ESC-: NULL +keymap F NULL +keymap M NULL +keymap ESC-M NULL +keymap L NULL +keymap ESC-l NULL +keymap U NULL +keymap ESC-u NULL +keymap V NULL +keymap @ NULL +keymap "#" NULL +keymap | NULL +keymap B NULL +keymap C-_ NULL +keymap s NULL +keymap v NULL +keymap ESC-s NULL +keymap S NULL +keymap E NULL +keymap ESC-e NULL +keymap R NULL +keymap r NULL +keymap C-l NULL +keymap T NULL +keymap C-q NULL +keymap { NULL +keymap } NULL +keymap ESC-t NULL +keymap J NULL +keymap K NULL +keymap ESC-b NULL +keymap ESC-a NULL +keymap / NULL +keymap ? NULL +keymap n NULL +keymap N NULL +keymap C-s NULL +keymap C-r NULL +keymap ESC-w NULL +keymap ESC-W NULL +keymap C-@ NULL +keymap ESC-n NULL +keymap ESC-p NULL +keymap \" NULL +keymap ^[[28~ NULL +keymap ^[[2~ NULL +keymap ^[[E NULL +keymap ^[[L NULL +keymap H NULL +keymap o NULL +keymap r NULL +keymap C-k NULL +keymap C-h NULL +keymap D NULL +keymap m NULL +keymap C-w NULL +keymap ESC-c NULL +keymap ESC-o NULL +keymap ESC-k NULL +keymap ! NULL +keymap C-z NULL +keymap q NULL +keymap Q NULL + +# New keybinds + +# Navigation +keymap $ LINE_END +keymap ^ LINE_BEGIN +keymap 0 LINE_BEGIN +keymap G END +keymap gg BEGIN +keymap ESC-g GOTO_LINE +keymap w NEXT_WORD +keymap b PREV_WORD + +# NPage Navigation +keymap j COMMAND "MOVE_DOWN1" +keymap k COMMAND "MOVE_UP1" + +# Undo +keymap C-r REDO + +#keymap C-f NEXT_PAGE +keymap C-f COMMAND "NEXT_PAGE" +#keymap C-b PREV_PAGE +keymap C-b COMMAND "PREV_PAGE" +keymap H BACK +keymap r RELOAD + +# Tab stuff +keymap J NEXT_TAB +keymap K PREV_TAB +keymap o GOTO +keymap O TAB_GOTO + +# Search +keymap / WHEREIS +keymap ? SEARCH_BACK +keymap n SEARCH_NEXT +keymap N SEARCH_PREV + +# Commands +keymap :: COMMAND +keymap :help HELP +keymap :downloads DOWNLOAD_LIST +#keymap :hist HISTORY +keymap :q EXIT +keymap ZZ EXIT +keymap :settings OPTIONS + +# copy url to clipboard +keymap yy EXTERN 'printf %s | wl-copy' + +keymap e EXTERN +keymap f EXTERN_LINK + diff --git a/.config/waybar/config.json b/.config/waybar/config.json index f61d9bd..70606e5 100644 --- a/.config/waybar/config.json +++ b/.config/waybar/config.json @@ -1,4 +1,5 @@ { + "reload_style_on_change": false, "position": "top", "layer": "top", "height": 12, @@ -7,8 +8,9 @@ "_Modules_": "Choose the order of the modules", "modules-left": [ - "dwl/tags", - "dwl/window", + "river/tags", + "river/layout", + "river/window" ], "modules-center": [ @@ -18,9 +20,10 @@ "custom/dotfiles", "custom/mail", "custom/eselect", + "custom/layout", "custom/date", "custom/time", - "custom/battery", + "custom/battery" ], "include": "~/.config/waybar/modules.json" diff --git a/.config/waybar/modules.json b/.config/waybar/modules.json index 6902c6b..618806b 100644 --- a/.config/waybar/modules.json +++ b/.config/waybar/modules.json @@ -1,17 +1,26 @@ { + "river/layout": { + "format": " <tt>{}</tt> ", + "min-length": 4, + "align": "right" + }, + "river/window": { + "format": "{}", + }, + "river/tags": { + "num-tags": 9, + "set-tags": [ + 1, 2, 4, 8, 16, 32, 64, 128, 256 + ], + "tag-labels": [ + "1", "2", "3", "4", "5", "6", "7", "8", "9" + ], + }, "dwl/tags": { "num-tags": 9, "disable-click": true, "tag-labels": [ - "1", - "2", - "3", - "4", - "5", - "6", - "7", - "8", - "9" + "1", "2", "3", "4", "5", "6", "7", "8", "9" ], }, "dwl/window": { @@ -33,6 +42,13 @@ "interval": 3600, "signal": 7, }, + "custom/layout": { + "format": "<tt>{}</tt>", + "return-type": "json", + "exec": "/home/master/.local/bin/dwmbar/dwmb-layout", + "interval": 3600, + "signal": 4, + }, "custom/mail": { "format": "<tt>{}</tt>", "return-type": "json", diff --git a/.config/waybar/style.css b/.config/waybar/style.css index a7e49ca..05791ab 100644 --- a/.config/waybar/style.css +++ b/.config/waybar/style.css @@ -1,6 +1,6 @@ * { /* `otf-font-awesome` is required to be installed for icons */ - font-size: 11px; + font-size: 20; padding: 0px; font-family: sans-serif; /* color: #1b1d1b; */ @@ -11,6 +11,16 @@ window#waybar { background-color: rgba(27, 29, 27, 0.78); /* #1b1d1b */ } +#layout { + padding-right: 5px; + margin-right: 5px; +} + +#window { + padding-left: 5px; + margin-left: 5px; +} + #tags { font-family: sans-serif; } @@ -32,7 +42,7 @@ window#waybar { color: rgba(68, 122, 108, 1); /* #447a6c */ } -#tags button.focused, #window { +#tags button.focused, #window, #layout { background-color: rgba(125,75,35,0.8); /* #7d4b23 */ color: rgba(27, 29, 27, 1); /* #1b1d1b */ } diff --git a/.config/wireman/themes/dracula.toml b/.config/wireman/themes/dracula.toml new file mode 100644 index 0000000..672ffd6 --- /dev/null +++ b/.config/wireman/themes/dracula.toml @@ -0,0 +1,42 @@ +[colors] +black = "#282a36" +white = "#f8f8f2" +gray = "#585c74" +pink = "#ff79c6" +purple = "#bd93f9" +orange = "#ffb86c" +orange-dark = "#e9b781" +cyan = "#8be9fd" +cyan-dark = "#3d808f" + +[base.focused] +foreground = "white" +background = "black" + +[base.unfocused] +foreground = "gray" +background = "black" + +[highlight.focused] +foreground = "orange" +background = "black" + +[highlight.unfocused] +foreground = "orange-dark" +background = "black" + +[title.focused] +foreground = "cyan" +background = "black" + +[title.unfocused] +foreground = "cyan-dark" +background = "black" + +[border.focused] +foreground = "white" +background = "black" + +[border.unfocused] +foreground = "gray" +background = "black" diff --git a/.config/wireman/themes/transparent.toml b/.config/wireman/themes/transparent.toml new file mode 100644 index 0000000..b9caa55 --- /dev/null +++ b/.config/wireman/themes/transparent.toml @@ -0,0 +1,32 @@ +[colors] +black = "#101116" +white = "#f1f5f9" +orange = "#ebcb88" +orange-dark = "#b7416d" +gray = "#738c9c" +cyan = "#66aabb" +cyan-dark = "#798362" + +[base.focused] +foreground = "white" + +[base.unfocused] +foreground = "gray" + +[highlight.focused] +foreground = "orange" + +[highlight.unfocused] +foreground = "orange-dark" + +[title.focused] +foreground = "cyan" + +[title.unfocused] +foreground = "cyan-dark" + +[border.focused] +foreground = "white" + +[border.unfocused] +foreground = "gray" diff --git a/.config/wireman/wireman.toml b/.config/wireman/wireman.toml new file mode 100644 index 0000000..551793c --- /dev/null +++ b/.config/wireman/wireman.toml @@ -0,0 +1,25 @@ +includes = [ + "$HOME/Workspace/rafta/master", + "$HOME/Workspace/rafta/master/external" +] +files = [ + "resources/schema.proto", +] + +[history] +directory = "" +autosave = true +disabled = false + +[server] +default_address = "http://localhost:50051" +default_auth_header = "" + +[logging] +level = "Debug" +directory = "$HOME/.cache" + +[ui] +skin = "$HOME/.config/wireman/themes/transparent.toml" + +[tls] diff --git a/.config/zsh/.zshrc b/.config/zsh/.zshrc index b621cfd..9d115c6 100644 --- a/.config/zsh/.zshrc +++ b/.config/zsh/.zshrc @@ -76,6 +76,10 @@ RPROMPT="\$vcs_info_msg_0_ %B%F{magenta}(%B%F{cyan}%1/%B%F{magenta})" zstyle ':vcs_info:git:*' formats '%b' + +export LF_KITTY_TEMPDIR="$(mktemp -d -t lf-kitty-XXXXXX)" +export LF_KITTY_IMAGE_ID=$(date +%s) +# export LF_KITTY_IMAGE_ID=1234 f() { tmp="$(mktemp -uq)" trap 'rm -f $tmp >/dev/null 2>&1 && trap - HUP INT QUIT TERM EXIT' HUP INT QUIT TERM EXIT @@ -86,6 +90,10 @@ f() { fi } +disks() { + lsblk -o NAME,MOUNTPOINT,FSTYPE,FSUSE%,SIZE +} + # Commonly used shortcuts [ -f "${XDG_CACHE_HOME:-$HOME/.cache}/zsh-aliases" ] && source "${XDG_CACHE_HOME:-$HOME/.cache}/zsh-aliases" [ -f "${XDG_CACHE_HOME:-$HOME/.cache}/zsh-shortcuts" ] && source "${XDG_CACHE_HOME:-$HOME/.cache}/zsh-shortcuts" diff --git a/.local/bin/backlightctl b/.local/bin/backlightctl index 1d38c07..453c3c0 100755 --- a/.local/bin/backlightctl +++ b/.local/bin/backlightctl @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # Get the correct sub-directory for your backlight device root_path="/sys/class/backlight/" @@ -12,26 +12,26 @@ default_step=10 default_set=50 to_percent() { - printf "%d" "$((100 * $1 / $max))" + printf "%d" "$((100 * $1 / $max))" } to_value() { - printf "%d" "$((max * $1 / 100))" + printf "%d" "$((max * $1 / 100))" } get_status() { - cat "$device/brightness" + cat "$device/brightness" } get_percent() { - to_percent "$(get_status)" + to_percent "$(get_status)" } # Add $1 to current brightness. Adjust if out of bounds (0-$max) # $1 is converted to a value between 0-$max within this function get_total() { - value="$(to_value "$1")" - printf "%d" "$(($(get_status) + $value))" + value="$(to_value "$1")" + printf "%d" "$(($(get_status) + $value))" } helpmsg="Usage: backlightctl -[FLAG] [PERCENTAGE] @@ -46,38 +46,38 @@ helpmsg="Usage: backlightctl -[FLAG] [PERCENTAGE] case "$1" in -i | --increase) - [ -z "$2" ] && step="$default_step" || step="$2" - get_total "$step" >"$device/brightness" - ;; + [ -z "$2" ] && step="$default_step" || step="$2" + get_total "$step" >"$device/brightness" + ;; -d | --decrease) - [ -z "$2" ] && step="$default_step" || step="$2" - get_total "-$step" >"$device/brightness" - ;; + [ -z "$2" ] && step="$default_step" || step="$2" + get_total "-$step" >"$device/brightness" + ;; -s | --set) - [ -z "$2" ] && set="$default_set" || set="$2" - to_value "$set" >"$device/brightness" - ;; + [ -z "$2" ] && set="$default_set" || set="$2" + to_value "$set" >"$device/brightness" + ;; -g | --get) - printf " %s\n" "$(get_status)%" - ;; + printf " %s\n" "$(get_status)%" + ;; -h | --help) - printf "%s" "$helpmsg" - ;; + printf "%s" "$helpmsg" + ;; *) - printf "\033[31mInvalid option: $1\033[0m\n%s" "$helpmsg" && exit 1 - ;; + printf "\033[31mInvalid option: $1\033[0m\n%s" "$helpmsg" && exit 1 + ;; esac # Send notification case "$@" in *-q* | *--quiet*) - exit 0 - ;; + exit 0 + ;; *) - notify-send.sh -t 1000 --replace-file /tmp/bl-notif -a " Brightness:" "$(get_percent)%" - ;; + notify-send.sh -t 1000 --replace-file /tmp/bl-notif -a " Brightness:" "$(get_percent)%" + ;; esac diff --git a/.local/bin/capture b/.local/bin/capture new file mode 100755 index 0000000..49799f6 --- /dev/null +++ b/.local/bin/capture @@ -0,0 +1,42 @@ +#!/bin/sh + +capturedir="${XDG_PICTURES_DIR:-$HOME/Pictures}/captures" + +infomsg="Usage: capture [OPTION] + -h,--help: Print this help message + -s,--selection: Capture a portion of the screen + -f,--fullscreen: Grab the entire screen +" + +capturetype="" +capturename="/dev/null" +msg="Capture location: " + +icon="" + +case "$1" in + -w|--window) + capturetype="Window" + msg="Not implemented yet" + ;; + + -s|--selection) + capturetype="Region" + sel="$(slurp -w0 -b"447a6c69")" + capturename="$capturedir/capture-$(date "+%Y-%M-%d_%H-%m-%S").png" + grim -t png -g "$sel" $capturename + msg="$msg$capturename" + ;; + + -f|--fulscreen) + capturetype="Fulscreen" + capturename="$capturedir/capture-$(date "+%Y-%M-%d_%H-%m-%S").png" + msg="$msg$capturename" + grim -t png "$capturename" + ;; + + *) echo "Invalid argument provided" && printf "$infomsg" && exit 1 ;; +esac + +wl-copy --type image/png < $capturename +notify-send "$msg" -a "$icon $capturetype Capture" -i "$capturename" diff --git a/.local/bin/cidr b/.local/bin/cidr new file mode 100755 index 0000000..18c4214 --- /dev/null +++ b/.local/bin/cidr @@ -0,0 +1 @@ +/usr/bin/cider --enable-features=UseOzonePlatform,WaylandWindowDecorations --ozone-platform-hint=auto diff --git a/.local/bin/colorpicker b/.local/bin/colorpicker index 5e37201..032abd8 100755 --- a/.local/bin/colorpicker +++ b/.local/bin/colorpicker @@ -6,6 +6,6 @@ sed "s/fill=.*>/fill=\"$col\">/g" $HOME/.local/share/circle.svg > /tmp/circle.svg -echo "$col" | xsel -b +echo "$col" | wl-copy notify-send -i "/tmp/circle.svg" -a "Colorpicker" "$col was successfully copied to your clipboard." diff --git a/.local/bin/displayselect b/.local/bin/displayselect deleted file mode 100755 index 2b87894..0000000 --- a/.local/bin/displayselect +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh - -layoutdir="$XDG_CONFIG_HOME/screenlayout" - -layout="$(ls "$layoutdir" | dmenu -p " Select layout: ")" - -[ -z "$layout" ] || sh "$layoutdir/$layout" diff --git a/.local/bin/dropdowntoggle b/.local/bin/dropdowntoggle index e1f98fb..1384699 100755 --- a/.local/bin/dropdowntoggle +++ b/.local/bin/dropdowntoggle @@ -1,34 +1,39 @@ #!/bin/sh -# Toggle dropdown terminal windows. -# The first argument is the title of the window. -# The rest of it is the program/command to be run -# in the dropdown window. +# Toggle dropdown terminal windows in River. +# The first argument is the name of the dropdown window. +# The rest is the command to be run inside the terminal. name="$1" class="dropdown" title="dropdown_$name" -active="$(xdotool search --name "$title" | wc -l)" shift -case "$TERMINAL" in -*st) - classflag="-c" - titleflag="-t" - cmdflag="-e" - ;; -*alacritty) - classflag="--class" - titleflag="--title" - cmdflag="--command" - ;; - *foot) - classflag="-a" - titleflag="--title" - cmdflag="-e" -esac +# Get the window ID of an existing dropdown terminal +existing=$(riverctl list-views | awk -v class="$class" '$3 == class {print $1}') -case "$active" in -0) $TERMINAL "$classflag" "dropdown" "$titleflag" "$title" "$cmdflag" "$@" & ;; -*) kill -9 "$(xdotool search --name "$class" getwindowpid)" ;; -esac +if [ -n "$existing" ]; then + # If found, close it + riverctl close-view "$existing" +else + # Otherwise, launch a new one + case "$TERMINAL" in + *st) + classflag="-c" + titleflag="-t" + cmdflag="-e" + ;; + *alacritty) + classflag="--class" + titleflag="--title" + cmdflag="--command" + ;; + *foot) + classflag="-a" + titleflag="--title" + cmdflag="-e" + ;; + esac + + $TERMINAL "$classflag" "$class" "$titleflag" "$title" "$cmdflag" "$@" & +fi diff --git a/.local/bin/dwmbar/check-eselect b/.local/bin/dwmbar/check-eselect new file mode 100755 index 0000000..760765b --- /dev/null +++ b/.local/bin/dwmbar/check-eselect @@ -0,0 +1,8 @@ +#!/bin/sh + +if [ "$(eselect news count all)" -eq 0 ]; then + exit 1 +else + exit 0 +fi + diff --git a/.local/bin/dwmbar/check-mail b/.local/bin/dwmbar/check-mail new file mode 100755 index 0000000..c9ab3b2 --- /dev/null +++ b/.local/bin/dwmbar/check-mail @@ -0,0 +1,5 @@ +#!/bin/sh + +[ -z "$($HOME/.local/bin/dwmbar/dwmb-mail)" ] && exit 1 + +exit 0 diff --git a/.local/bin/dwmbar/dwmb-layout b/.local/bin/dwmbar/dwmb-layout index 1455398..83d1ba3 100755 --- a/.local/bin/dwmbar/dwmb-layout +++ b/.local/bin/dwmbar/dwmb-layout @@ -1,3 +1,5 @@ #!/bin/sh -echo " $(cat "$HOME/.cache/layout")" +text=" $(cat "$HOME/.cache/layout")" + +printf '{ "text": "%s", "class": "block" }\n' "$text" diff --git a/.local/bin/fpt b/.local/bin/fpt new file mode 100755 index 0000000..e0f4271 --- /dev/null +++ b/.local/bin/fpt @@ -0,0 +1,16 @@ +#!/bin/sh + +PREVIEW_TEXT="ABCDEFGHIJKLM\n""\ +NOPQRSTUVWXYZ\n""\ +abcdefghijklm\n""\ +nopqrstuvwxyz\n""\ +1234567890\n""\ +!@$\%(){}[]" + +convert -size "532x365" xc:"#ffffff" \ + -gravity center \ + -pointsize 38 \ + -font "$1" \ + -fill "#000000" \ + -annotate +0+0 "$PREVIEW_TEXT" \ + -flatten "jpeg:-" | img2sixel diff --git a/.local/bin/fzf-shortcuts b/.local/bin/fzf-shortcuts new file mode 100755 index 0000000..5e0fb4a --- /dev/null +++ b/.local/bin/fzf-shortcuts @@ -0,0 +1,23 @@ +#!/bin/sh + +# Example shortcutfile contents: +# Compilation : /home/master/.local/src +# Config : /home/master/.config +# CV : /home/master/Dropbox/A/work/Application/CV/current +# Downloads : /home/master/Downloads +# Dropbox : /home/master/Dropbox +# Hotkeys : /home/master/.config/sxhkd + +shortcutfile="${XDG_CACHE_HOME:-$HOME/.cache}/plain-shortcuts" + +# Read the file and pass it to fzf +selected=$(cat "$shortcutfile" | fzf) + +# Extract the path part (after the colon) +selected_path=$(echo "$selected" | cut -d ':' -f 2-) + +# Trim leading and trailing whitespace +selected_path=$(echo "$selected_path" | sed 's/^ *//;s/ *$//') + +# Print the selected path +echo "$selected_path" diff --git a/.local/bin/gpg b/.local/bin/gpg new file mode 100755 index 0000000..a28021a --- /dev/null +++ b/.local/bin/gpg @@ -0,0 +1,6 @@ +#!/bin/sh + +if [ -n "$FUGITIVE" ]; then + set -- --pinentry-mode loopback "$@" +fi +exec /usr/bin/gpg "$@" diff --git a/.local/bin/groffdown b/.local/bin/groffdown new file mode 100755 index 0000000..f2810a5 --- /dev/null +++ b/.local/bin/groffdown @@ -0,0 +1,54 @@ +#!/bin/bash + +file=$(readlink -f "$1") +dir=$(dirname "$file") +base="${file%.*}" + +output=$( sed -e '1,1d + s/title:/\.TL\n/ + s/author:/\.AU\n/ + s/date:/\.ND\n/ + s/institution:/\.AI\n/ + + s/\\begin{abstract}/\.AB/ + s/\\end{abstract}/\.AE/ + + s/^\#####.\(.*\)/\.NH 5\n\1\n\.PP/g + s/^\####.\(.*\)/\.NH 4\n\1\n\.PP/g + s/^\###.\(.*\)/\.NH 3\n\1\n\.PP/g + s/^\##.\(.*\)/\.NH 2\n\1\n\.PP/g + s/^\#.\(.*\)/\.NH 1\n\1\n\.PP/g + + s/\*\*\*\(.*\)\*\*\*$/\n\.BI\ \"\1\"\ /g + s/\*\*\*\(.*\)\*\*\*\(.\)$/\n\.BI\ \"\1\"\ \"\2\"/g + s/\*\*\*\(.*\)\*\*\*\(.\)/\n\.BI\ \"\1\"\ \"\2\"\n/g + + s/\*\*\(.*\)\*\*$/\n\.B\ \"\1\"\ /g + s/\*\*\(.*\)\*\*\(.\)$/\n\.B\ \"\1\"\ \"\2\"/g + s/\*\*\(.*\)\*\*\(.\)/\n\.B\ \"\1\"\ \"\2\"\n/g + + s/\*\(.*\)\*$/\n\.I\ \"\1\"\ /g + s/\*\(.*\)\*\(.\)$/\n\.I\ \"\1\"\ \"\2\"/g + s/\*\(.*\)\*\(.\)/\n\.I\ \"\1\"\ \"\2\"\n/g + + s/`\(.*\)`$/\n\.CW\ \"\1\"\ /g + s/`\(.*\)`\(.\)$/\n\.CW\ \"\1\"\ \"\2\"/g + s/`\(.*\)`\(.\)/\n\.CW\ \"\1\"\ \"\2\"\n/g + + s/^\ ...............-\ /.IP\ \\(bu\ 10\n/g + s/^\ ...........-\ /.IP\ \\(bu\ 8\n/g + s/^\ .......-\ /.IP\ \\(bu\ 6\n/g + s/^\ ...-\ /.IP\ \\(bu\ 4\n/g + s/^-\ /.IP\ \\(bu\ 2\n/g + s/^\ .*-\ /.IP\ \\(bu\ 12\n/g + + ' $1) +# echo "$output" | groff -me -ms -kejpt -T pdf > $base.pdf + +# echo "$output" > $base.ms +# groff -ms $base.ms -T pdf > $base.pdf + +echo "$output" + +# $output >> output.ms +# s/\*\*\*.*\*\*\*/Hi\1hi/g diff --git a/.local/bin/gsetup b/.local/bin/gsetup new file mode 100755 index 0000000..3684fb1 --- /dev/null +++ b/.local/bin/gsetup @@ -0,0 +1,9 @@ +#!/bin/sh + +repo="$1" +[ -z "$repo" ] && repo="$(basename "$(pwd)")" + +git remote set-url origin "ssh://chausse.xyz/$repo" +git remote set-url --add --push origin "ssh://chausse.xyz/$repo" +git remote set-url --add --push origin git@github.com:ChausseBenjamin/$repo + diff --git a/.local/bin/layouttoggle b/.local/bin/layouttoggle index d1ceba5..b64e923 100755 --- a/.local/bin/layouttoggle +++ b/.local/bin/layouttoggle @@ -1,20 +1,34 @@ #!/bin/sh -layout=$(cat "$HOME/.cache/layout") +cachefile="$HOME/.cache/layout" -case "$layout" in -ca) - setxkbmap -model pc104 -layout us -variant ,, - echo us >"$HOME/.cache/layout" - ;; -us) - setxkbmap -model pc104 -layout ca -variant ,, - echo ca >"$HOME/.cache/layout" - ;; -*) - setxkbmap -model pc104 -layout us -variant ,, - echo us >"$HOME/.cache/layout" - ;; -esac +# Handle manual override first +if [ -n "$1" ]; then + echo "$1" >"$cachefile" +else + # Ensure the cache file exists, or initialize it + [ -f "$cachefile" ] || echo "us" >"$cachefile" + layout=$(cat "$cachefile") + + case "$layout" in + ca) + echo us >"$cachefile" + ;; + us) + echo ca >"$cachefile" + ;; + *) + echo us >"$cachefile" + ;; + esac +fi + +# Apply keyboard layout +riverctl keyboard-layout -model pc104 "$(cat "$cachefile")" + +# Restart the correct block if waybar is running +waybar_pid=$(pidof waybar) +if [ -n "$waybar_pid" ]; then + kill -38 "$waybar_pid" +fi -kill -38 "$(pidof dwmblocks)" diff --git a/.local/bin/makewall b/.local/bin/makewall index 614d030..6929bc5 100755 --- a/.local/bin/makewall +++ b/.local/bin/makewall @@ -1,30 +1,35 @@ -#!/bin/sh +#!/bin/bash -wallDir="${XDG_CONFIG_HOME:-$HOME}/wallpapers" +wallDir="${XDG_CONFIG_HOME:-$HOME/.config}/wallpapers" -# Acquire the list of connected displays -displays="$(wlr-randr --json | jq -r '.[] | select(.enabled) | .name')" +# Acquire the list of connected displays and their models +displays="$(wlr-randr --json | jq -r '.[] | select(.enabled) | "\(.name) \(.model)"')" echo "$displays" -# If there is a wallpaper with a filename matching the display -# name, set it as the wallpaper for that display. -# ex: DP-1.jpg and DP-1.png are both valid filenames -# Otherwise, set the wallpaper to the default wallpaper -# (default.png or default.jpg) +# Sanitize the model names by replacing spaces with hyphens +sanitize_model() { + echo "$1" | sed 's/\s/-/g' +} + +# If there is a wallpaper with a filename matching the display name or sanitized model, +# set it as the wallpaper for that display. setDisplay() { - case $(ls $wallDir) in - *"$1"*) - wall=$(ls $wallDir | grep "$1" | head -n 1) - ;; - *) - wall=$(ls $wallDir | grep "default" | head -n 1) - ;; - esac - swaybg --output $1 -m fill --image $wallDir/$wall & + name="$1" + model="$2" + case $(ls $wallDir) in + *"$name"*|*"$model"*) + wall=$(ls $wallDir | grep -E "$name|$model" | head -n 1) + ;; + *) + wall=$(ls $wallDir | grep "default" | head -n 1) + ;; + esac + swaybg --output "$name" -m fill --image "$wallDir/$wall" & } # Set the wallpaper for each display -killall swaybg > /dev/null 2>&1 -for display in $displays; do - setDisplay $display -done +killall swaybg >/dev/null 2>&1 +while IFS=' ' read -r name model; do + sanitized_model=$(sanitize_model "$model") + setDisplay "$name" "$sanitized_model" +done <<< "$displays" diff --git a/.local/bin/monchange b/.local/bin/monchange new file mode 100755 index 0000000..b761037 --- /dev/null +++ b/.local/bin/monchange @@ -0,0 +1,6 @@ +#!/bin/sh + +# Script to run whenever monitor configuration changes +pidof waybar || setsid waybar +pidof rivertile || rivertile & +makewall & diff --git a/.local/bin/monselect b/.local/bin/monselect new file mode 100755 index 0000000..7ef0646 --- /dev/null +++ b/.local/bin/monselect @@ -0,0 +1,4 @@ +#!/bin/sh + +# Acquire the list of connected displays +displays="$(wlr-randr --json | jq -r '.[] | select(.enabled) | .name' | tofi)" diff --git a/.local/bin/newsup b/.local/bin/newsup deleted file mode 100755 index b94ca37..0000000 --- a/.local/bin/newsup +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh -# Set as a cron job to check for new RSS entries for newsboat. -# If newsboat is open, sends it an "R" key to refresh. - -ping -q -c 1 1.1.1.1 > /dev/null || exit - -/usr/bin/notify-send -t 1 -i "$HOME/.fonts/svg/rss.svg" -a RSS "Updating RSS feeds..." - -pgrep -x newsboat >/dev/null && /usr/bin/xdotool key --window "$(/usr/bin/xdotool search --name newsboat)" R && exit - -echo " " > /tmp/newsupdate && kill -37 $(pidof dwmblocks) -/usr/bin/newsboat -x reload -rm -f /tmp/newsupdate -/usr/bin/notify-send -t 1 -a " RSS" "RSS feed update complete." && kill -37 $(pidof dwmblocks) diff --git a/.local/bin/previewclean b/.local/bin/previewclean deleted file mode 100755 index 8b0a570..0000000 --- a/.local/bin/previewclean +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -threshold="200000" # 200 MB -previewdir="${XDG_CACHE_HOME:-$HOME/.cache}/lf" - -# Check if the total size of the preview directory exceeds the threshold -# and remove the last viewed file until it doesn't -while [ "$(du -s "$previewdir" | cut -f1)" -gt "$threshold" ]; do - rm -f "$(find "$previewdir" -type f -printf '%T+ %p\n' | sort | head -n1 | cut -d' ' -f2)" -done diff --git a/.local/bin/quitapp b/.local/bin/quitapp deleted file mode 100755 index 60a8644..0000000 --- a/.local/bin/quitapp +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -active_window="$(xdotool getwindowfocus)" -active_class=$(xprop -id "$active_window" WM_CLASS | awk '{print $4}') - -if [ "$active_class" = '"firefox"' ]; then - xdotool windowclose "$active_window" -else - kill -15 "$(xdotool getwindowfocus getwindowpid)" -fi - diff --git a/.local/bin/remaps b/.local/bin/remaps deleted file mode 100755 index ed6ae43..0000000 --- a/.local/bin/remaps +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -# This script is called on startup to remap keys. -# Increase key speed via a rate change -xset r rate 300 50 -# Map the caps lock key to super... -setxkbmap -option caps:super -# But when it is pressed only once, treat it as escape. -killall xcape 2>/dev/null ; xcape -e 'Super_L=Escape' -# Map the menu button to right super as well. -xmodmap -e 'keycode 135 = Super_R' diff --git a/.local/bin/rotdir b/.local/bin/rotdir deleted file mode 100755 index d171f29..0000000 --- a/.local/bin/rotdir +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -# When I open an image from the file manager in nsxiv (the image viewer), I want -# to be able to press the next/previous keys to key through the rest of the -# images in the same directory. This script "rotates" the content of a -# directory based on the first chosen file, so that if I open the 15th image, -# if I press next, it will go to the 16th etc. Autistic, I know, but this is -# one of the reasons that nsxiv is great for being able to read standard input. - -[ -z "$1" ] && echo "usage: rotdir regex 2>&1" && exit 1 -base="$(basename "$1")" -ls "$PWD" | awk -v BASE="$base" 'BEGIN { lines = ""; m = 0; } { if ($0 == BASE) { m = 1; } } { if (!m) { if (lines) { lines = lines"\n"; } lines = lines""$0; } else { print $0; } } END { print lines; }' diff --git a/.local/bin/setbg b/.local/bin/setbg index bfde81e..942c4e6 100755 --- a/.local/bin/setbg +++ b/.local/bin/setbg @@ -5,7 +5,7 @@ [ ! -f "$1" ] && exit [ -z "$(file "$1" | grep -o 'image data')" ] && exit -displays=$(xrandr | grep " connected" | sed 's/^\([a-Z,0-9,-]*\).*/\1/') +displays=$(wlr-randr --json | jq -r '.[] | select(.active) | .name') # Same as above but use dmenu only if there are multiple displays if [ "$(echo "$displays" | wc -l)" -gt 1 ]; then diff --git a/.local/bin/shortcutgen b/.local/bin/shortcutgen index 7f26997..d09248c 100755 --- a/.local/bin/shortcutgen +++ b/.local/bin/shortcutgen @@ -3,15 +3,17 @@ # Quit if a valid configuration source doesn't exist [ -f "$XDG_CONFIG_HOME/shortcutrc" ] && src="$XDG_CONFIG_HOME/shortcutrc" || exit 1 -# If you do not want to create a specific file, replace it's variable with /dev/null +# If you do not want to create a specific file, replace its variable with /dev/null awk -v lf_filepath="${XDG_CONFIG_HOME:-$HOME/.config}/lf/shortcuts" \ -v gtk_filepath="${XDG_CONFIG_HOME:-$HOME/.config}/gtk-3.0/bookmarks" \ -v zsh_filepath="${XDG_CACHE_HOME:-$HOME/.cache}/zsh-shortcuts" \ -v env_filepath="${XDG_CACHE_HOME:-$HOME/.cache}/env-shortcuts" \ + -v plain_filepath="${XDG_CACHE_HOME:-$HOME/.cache}/plain-shortcuts" \ ' BEGIN { FS="," OFS="," + max_length = 0 } # Function to remove whitespaces from a string @@ -42,24 +44,48 @@ function fullpath(str) { # Check if line is empty or contains only whitespace if (NF) { + # Update max_length if current lhs is longer + if (length($1) > max_length) { + max_length = length($1) + } + + # Store the current line for later processing + lines[NR] = $0 + } +} +END { + for (i = 1; i <= NR; i++) { + split(lines[i], fields, FS) + + # Skip processing if necessary fields are empty + if (fields[2] == "" || fields[3] == "") { + continue + } # Convert column 2 to lowercase - lc_col2 = tolower($2) + lc_col2 = tolower(fields[2]) # Convert column 2 to uppercase - uc_col2 = toupper($2) + uc_col2 = toupper(fields[2]) # Write to $XDG_CONFIG_HOME/lf/shortcuts - print "map g" lc_col2 " cd " $3 > lf_filepath + print "map g" lc_col2 " cd " fields[3] > lf_filepath # Write to $XDG_CACHE_HOME/zsh-shortcuts - print "g" lc_col2 "() {cd " $3 "}" > zsh_filepath + print "g" lc_col2 "() {cd " fields[3] "}" > zsh_filepath # Write to $XDG_CACHE_HOME/env-shortcuts - print "export G" uc_col2 "=" $3 "" > env_filepath + print "export G" uc_col2 "=" fields[3] "" > env_filepath # Write to $XDG_CONFIG_HOME/gtk-3.0/bookmarks - print "file://" fullpath($3) " " $1 > gtk_filepath + print "file://" fullpath(fields[3]) " " fields[1] > gtk_filepath + + # Write plain Title + `,` + only if fields[1] is not empty + if (fields[1] != "") { + printf "%-*s : %s\n", max_length, fields[1], fullpath(fields[3]) > plain_filepath + } else if (fields[3] != "") { + printf "%s\n", fullpath(fields[3]) > plain_filepath + } } } ' "$src" diff --git a/.local/bin/sixprev b/.local/bin/sixprev new file mode 100755 index 0000000..8174f81 --- /dev/null +++ b/.local/bin/sixprev @@ -0,0 +1,9 @@ +#!/bin/sh + +# Check if the file exists +if [ ! -f "$1" ]; then + echo "File not found!" + exit 2 +fi + +convert "$1" -resize 600x sixel:- | cat diff --git a/.local/bin/tmux-r b/.local/bin/tmux-r deleted file mode 100755 index 6b4819c..0000000 --- a/.local/bin/tmux-r +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh - -session="R" - -# Check if the session exists, discarding output -# We can check $? for the exit status (zero for success, non-zero for failure) -tmux has-session -t $session 2>/dev/null - -if [ $? != 0 ]; then - # Set up your session - tmux new-session -d -s "$session" R -q --no-save - # R -q --no-save - # ([ -e /usr/bin/R ] && R -q --no-save) || python -q -fi - -# Attach to created session -tmux attach-session -t $session diff --git a/.local/bin/wstart b/.local/bin/wstart new file mode 100755 index 0000000..9cc99d6 --- /dev/null +++ b/.local/bin/wstart @@ -0,0 +1,12 @@ +#!/bin/sh + +repo="$(echo "$1" | sed 's/\.git//;s/.*\///;')" + +git clone "$1" "$repo/repo" + +cd "$repo/repo" + +# Get the main/master branch upstream from the cloned repo +master="$(git branch --show-curent)" + +cd .. && mv repo "$master" diff --git a/.local/share/applications/img.desktop b/.local/share/applications/img.desktop index 42aa81e..d3a3174 100644 --- a/.local/share/applications/img.desktop +++ b/.local/share/applications/img.desktop @@ -1,4 +1,4 @@ [Desktop Entry] Type=Application Name=Image viewer -Exec=/usr/bin/sxiv -a %f +Exec=/usr/bin/imv -a %f diff --git a/.local/share/applications/lynx.desktop b/.local/share/applications/lynx.desktop new file mode 100644 index 0000000..d89da4f --- /dev/null +++ b/.local/share/applications/lynx.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Type=Application +Name=Lynx Web Browser +Comment=Text-based web browser +Exec=/usr/bin/foot -e w3m -sixel %u +Categories=Network;WebBrowser; +MimeType=text/html; +Icon=utilities-terminal diff --git a/.local/share/noteworthy/evremap/etc/conf.d/evremap.toml b/.local/share/noteworthy/evremap/etc/conf.d/evremap.toml new file mode 100644 index 0000000..82407de --- /dev/null +++ b/.local/share/noteworthy/evremap/etc/conf.d/evremap.toml @@ -0,0 +1,19 @@ +device_name = "AT Translated Set 2 keyboard" + +# capslock+escape combo +[[dual_role]] +input = "KEY_CAPSLOCK" +hold = ["KEY_LEFTMETA"] +tap = ["KEY_ESC"] + +# Left shift + "(" combo +[[dual_role]] +input = "KEY_LEFTSHIFT" +hold = ["KEY_LEFTSHIFT"] +tap = ["KEY_KPLEFTPAREN"] + +# Right shift + ")" combo +[[dual_role]] +input = "KEY_RIGHTSHIFT" +hold = ["KEY_RIGHTSHIFT"] +tap = ["KEY_KPRIGHTPAREN"] diff --git a/.local/share/noteworthy/evremap/etc/init.d/evremap b/.local/share/noteworthy/evremap/etc/init.d/evremap new file mode 100755 index 0000000..2a2f713 --- /dev/null +++ b/.local/share/noteworthy/evremap/etc/init.d/evremap @@ -0,0 +1,6 @@ +#!/sbin/openrc-run + +supervisor=supervise-daemon +command="/usr/local/bin/evremap" +command_args="remap /etc/conf.d/evremap.toml" + @@ -3,9 +3,9 @@ # enable certain tools only if on macOS case "$OSTYPE" in - darwin*) - eval "$(/opt/homebrew/bin/brew shellenv)" - ;; +darwin*) + eval "$(/opt/homebrew/bin/brew shellenv)" + ;; esac unsetopt PROMPT_SP 2>/dev/null @@ -21,6 +21,7 @@ export XDG_CONFIG_HOME="$HOME/.config" export XDG_DATA_HOME="$HOME/.local/share" export XDG_CACHE_HOME="$HOME/.cache" export XINITRC="$XDG_CONFIG_HOME/x11/xinitrc" +export W3M_DIR="$XDG_CONFIG_HOME/w3m" export DISTRIB_ID=arch export DISTRIB_RELEASE="$(uname -r)" @@ -33,7 +34,7 @@ export CARGO_HOME="$XDG_DATA_HOME/cargo" export TMUX_TMPDIR="$XDG_RUNTIME_DIR" export GTK2_RC_FILES="$XDG_CONFIG_HOME/gtk-2.0/gtkrc" export QT_QPA_PLATFORMTHEME="gtk2" -export MOZ_USE_XINPUT2=1 # Mozilla smooth scrolling/touchpad +export MOZ_USE_XINPUT2=1 # Mozilla smooth scrolling/touchpad export AWT_TOOLKIT="MToolkit wmname LG3D" # Fix for Java applications in dwm export _JAVA_AWT_WM_NONREPARENTING=1 # (this too) export WINEPREFIX="$XDG_DATA_HOME/wineprefixes/default" @@ -44,6 +45,7 @@ export BAT_THEME="ansi" export ELECTRON_OZONE_PLATFORM_HINT="wayland" # Path +export PATH="$HOME/.local/bin:$PATH" export PATH="$PATH:$(find "$HOME/.local/bin" -type d | paste -sd ":" -)" export PATH="$PATH:$GOPATH/bin" export PATH="$PATH:$HOME/.cargo/bin" @@ -52,6 +54,8 @@ export PATH="$PATH:$HOME/.local/bin" export PATH="$PATH:/usr/local/go/bin" export PATH="$PATH:/usr/local/go/bin" export PATH="$PATH:$HOME/.local/share/cargo/bin" +export GITHUB_TOKEN="$(pass gh/token)" +export WIREMAN_CONFIG_DIR=$XDG_CONFIG_HOME/wireman # Set foot as the default terminal when not connected via SSH # or xterm when connected via SSH @@ -74,14 +78,13 @@ aliasgen >/dev/null 2>&1 # Ensure XDG_RUNTIME_DIR is set if test -z "$XDG_RUNTIME_DIR"; then - export XDG_RUNTIME_DIR="$(mktemp -d /tmp/$(id -u)-runtime-dir.XXX)" + export XDG_RUNTIME_DIR="$(mktemp -d /tmp/$(id -u)-runtime-dir.XXX)" fi -startw(){ - dbus-launch --exit-with-session dwl -} - # Start Desktop Environment if on the main TTY -[ "$(tty)" = "/dev/tty1" ] && ! pidof dwl >/dev/null 2>&1 && { - startw +[ "$(tty)" = "/dev/tty1" ] && ! pidof river >/dev/null 2>&1 && { + dbus-launch --exit-with-session river -no-xwayland +} +[ "$(tty)" = "/dev/tty2" ] && ! pidof river >/dev/null 2>&1 && { + dbus-launch --exit-with-session river } |