summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.config/alacritty/alacritty.yml920
-rw-r--r--.config/aliasrc3
-rw-r--r--.config/btop/btop.conf248
-rw-r--r--.config/foot/foot.ini2
-rw-r--r--.config/gh-dash/config.yml79
-rw-r--r--.config/ghostty/config80
-rw-r--r--.config/git/config21
-rw-r--r--.config/glow/glow.yml10
-rw-r--r--.config/glow/themes/dark.yml25
-rw-r--r--.config/gtk-3.0/gtk.css12
-rw-r--r--.config/gtk-3.0/settings.ini2
l---------.config/gtk-4.0/gtk.css1
l---------.config/gtk-4.0/settings.ini1
-rw-r--r--.config/kanshi/config45
-rwxr-xr-x.config/lf/clean3
-rwxr-xr-x.config/lf/cleaner4
-rwxr-xr-x.config/lf/kitty.sh44
-rwxr-xr-x.config/lf/lfrc30
-rwxr-xr-x.config/lf/preview68
-rwxr-xr-x.config/lf/scope29
-rw-r--r--.config/mimeapps.list2
-rw-r--r--.config/mpv/scripts/modules.lua3
-rw-r--r--.config/protonmail/bridge-v3/keychain.json3
-rwxr-xr-x.config/river/init628
-rwxr-xr-x.config/screenlayout/quick-presentation20
-rwxr-xr-x.config/screenlayout/workstation-dualmon3
-rwxr-xr-x.config/screenlayout/workstation-singlemon3
-rw-r--r--.config/shortcutrc8
-rw-r--r--.config/tofi/config19
-rw-r--r--.config/w3m/config157
-rw-r--r--.config/w3m/keymap180
-rw-r--r--.config/waybar/config.json9
-rw-r--r--.config/waybar/modules.json34
-rw-r--r--.config/waybar/style.css14
-rw-r--r--.config/wireman/themes/dracula.toml42
-rw-r--r--.config/wireman/themes/transparent.toml32
-rw-r--r--.config/wireman/wireman.toml25
-rw-r--r--.config/zsh/.zshrc8
-rwxr-xr-x.local/bin/backlightctl52
-rwxr-xr-x.local/bin/capture42
-rwxr-xr-x.local/bin/cidr1
-rwxr-xr-x.local/bin/colorpicker2
-rwxr-xr-x.local/bin/displayselect7
-rwxr-xr-x.local/bin/dropdowntoggle55
-rwxr-xr-x.local/bin/dwmbar/check-eselect8
-rwxr-xr-x.local/bin/dwmbar/check-mail5
-rwxr-xr-x.local/bin/dwmbar/dwmb-layout4
-rwxr-xr-x.local/bin/fpt16
-rwxr-xr-x.local/bin/fzf-shortcuts23
-rwxr-xr-x.local/bin/gpg6
-rwxr-xr-x.local/bin/groffdown54
-rwxr-xr-x.local/bin/gsetup9
-rwxr-xr-x.local/bin/layouttoggle46
-rwxr-xr-x.local/bin/makewall49
-rwxr-xr-x.local/bin/monchange6
-rwxr-xr-x.local/bin/monselect4
-rwxr-xr-x.local/bin/newsup14
-rwxr-xr-x.local/bin/previewclean10
-rwxr-xr-x.local/bin/quitapp11
-rwxr-xr-x.local/bin/remaps11
-rwxr-xr-x.local/bin/rotdir12
-rwxr-xr-x.local/bin/setbg2
-rwxr-xr-x.local/bin/shortcutgen40
-rwxr-xr-x.local/bin/sixprev9
-rwxr-xr-x.local/bin/tmux-r17
-rwxr-xr-x.local/bin/wstart12
-rw-r--r--.local/share/applications/img.desktop2
-rw-r--r--.local/share/applications/lynx.desktop8
-rw-r--r--.local/share/noteworthy/evremap/etc/conf.d/evremap.toml19
-rwxr-xr-x.local/share/noteworthy/evremap/etc/init.d/evremap6
-rw-r--r--.profile25
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"
+
diff --git a/.profile b/.profile
index e9d6b92..9b4d805 100644
--- a/.profile
+++ b/.profile
@@ -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
}