diff --git a/.Xresources b/.Xresources
index 4bff6266..449815cf 100644
--- a/.Xresources
+++ b/.Xresources
@@ -5,3 +5,19 @@ Xft.hintstyle: hintslight
Xft.rgba: none
Xft.lcdfilter: lcddefault
Xcursor.theme: Remus-Black
+
+st.font: VictorMono Nerd Font Mono:size=12:antialias=true:autohint=true
+st.alpha: 0.88
+st.borderpx: 2
+st.shell: /bin/sh
+st.bellvolume: 0
+st.blinktimeout: 0
+st.tabspaces: 4
+st.cursorColor: #ebdbb2
+st.termname: st-256color
+st.chscale: 0.877
+st.cwscale: 1
+
+Nsxiv.window.background: #000000
+Nsxiv.bar.background: #1c1c1c
+Nsxiv.bar.foreground: #d4d4d4
diff --git a/.config/awesome/themes/luci4/application_icons.lua b/.config/awesome/themes/luci4/application_icons.lua
index 05f1fa5d..79f0f123 100644
--- a/.config/awesome/themes/luci4/application_icons.lua
+++ b/.config/awesome/themes/luci4/application_icons.lua
@@ -53,6 +53,7 @@ local cakeWallet_icon = baseDir .. "cake_wallet.svg"
local koreader_icon = baseDir .. "koreader.svg"
local sonobus_icon = baseDir .. "sonobus.svg"
local deltaChat_icon = baseDir .. "delta-chat.svg"
+local luakit_icon = baseDir .. "luakit.svg"
-- LUCI4 ICON THEME
local icons = {
@@ -91,6 +92,7 @@ local icons = {
cakeWallet = cakeWallet_icon,
koreader = koreader_icon,
sonobus = sonobus_icon,
+ luakit = luakit_icon,
deltaChat = deltaChat_icon
}
-- END LUCI4 Icon Theme
diff --git a/.config/awesome/themes/luci4/icons/luakit.svg b/.config/awesome/themes/luci4/icons/luakit.svg
new file mode 100644
index 00000000..1cf041e1
--- /dev/null
+++ b/.config/awesome/themes/luci4/icons/luakit.svg
@@ -0,0 +1,7 @@
+
+
\ No newline at end of file
diff --git a/.config/awesome/wm_applications.lua b/.config/awesome/wm_applications.lua
index 6d647579..5e9970f0 100644
--- a/.config/awesome/wm_applications.lua
+++ b/.config/awesome/wm_applications.lua
@@ -25,7 +25,7 @@ local groupLuci4 = "luci4"
local groupLauncher = "launcher"
local browserCmd = "librewolf"
-local terminalCmd = "kitty"
+local terminalCmd = HomeEnv.TERMINAL_CMD -- or "st" --"kitty --single-instance"
local editorCmd = terminalCmd .. " -e " .. (os.getenv("EDITOR") or "nvim")
local modkey = "Mod4"
@@ -194,7 +194,7 @@ local muteVolume = {
}
}
local brightnessUp = {
- command = homeDir .. "/scripts/shell_common/brightnessctl.sh --inc",
+ command = homeDir .. "/scripts/wm_common/brightnessctl.sh --inc",
description = "Increase screen brightness",
group = groupLuci4,
shell = false,
@@ -204,7 +204,7 @@ local brightnessUp = {
}
}
local brightnessDown = {
- command = homeDir .. "/scripts/shell_common/brightnessctl.sh --dec",
+ command = homeDir .. "/scripts/wm_common/brightnessctl.sh --dec",
description = "Decrease screen brightness",
group = groupLuci4,
shell = false,
@@ -264,7 +264,7 @@ local shareMenu = {
}
}
local shareMenuEncrypted = {
- -- launching with kitty is not a good idea, switch to something more compatible like bash
+ -- launching with terminalCmd is not a good idea, switch to something more compatible like bash
command = terminalCmd .. " " .. homeDir .. "/scripts/wm_common/launch_share_encrypted.sh",
description = "Zip, encrypt, get a share link and copy to clipboard",
group = groupLuci4,
@@ -301,11 +301,20 @@ local resetTor = {
group = groupLuci4,
shell = true,
keyBinding = {
- key1 = { modkey },
+ key1 = { modkey, "Mod1" },
key2 = "i"
}
}
-
+local resetPicom = {
+ command = homeDir .. "/scripts/reset-picom.sh",
+ description = "Reset picom",
+ group = groupLuci4,
+ shell = true,
+ keyBinding = {
+ key1 = { modkey, "Mod1" },
+ key2 = "p"
+ }
+}
local placement = {
centered = "centered",
bottom_right = "bottom_right",
@@ -345,6 +354,11 @@ local propertiesFloatingCentered = {
-- add properties to make the application follow defined window rules.
-- set favourite to true to add the application to the favourite menu.
local applications = {
+ luci4gtkwindow = {
+ command = { },
+ class = "Luci4GTKviewer",
+ properties = propertiesFloatingCentered
+ },
playPauseMedia = {
command = playPauseMedia
},
@@ -405,14 +419,47 @@ local applications = {
askOllama = {
command = askOllama
},
+ resetPicom = {
+ command = resetPicom
+ },
resetTor = {
command = resetTor
},
terminal = {
- label = "Kitty terminal",
- class = "kitty",
+ label = "Default Terminal",
+ class = "xterm-256color",
command = terminal,
subGroup = subGroup.terminals,
+ -- icon = icons.kitty,
+ favourite = true
+ },
+ kitty = {
+ label = "Kitty Terminal",
+ class = "kitty",
+ command = {
+ command = "kitty --single-instance",
+ description = "Open Kitty terminal",
+ group = groupLauncher,
+ shell = false,
+ },
+ subGroup = subGroup.terminals,
+ icon = icons.kitty,
+ favourite = true
+ },
+ terminalQuake = {
+ label = "Kitty Quake Terminal",
+ class = "kitty-quick-access",
+ command = {
+ command = "kitten quick-access-terminal",
+ description = "Open a Quake-style terminal",
+ group = groupLauncher,
+ shell = false,
+ keyBinding = {
+ key1 = { modkey, "Shift" },
+ key2 = "Return"
+ }
+ },
+ subGroup = subGroup.terminals,
icon = icons.kitty,
favourite = true
},
@@ -555,8 +602,12 @@ local applications = {
command = {
command = "keepassxc",
description = "Password manager",
- group = "",
- shell = false
+ group = groupLuci4,
+ shell = false,
+ keyBinding = {
+ key1 = { modkey, "Shift" },
+ key2 = "x"
+ }
},
subGroup = subGroup.utils,
-- icon = icons.keePass,
@@ -714,13 +765,17 @@ local applications = {
command = {
command = "flatpak run im.nheko.Nheko",
description = "Nheko messenger",
- group = "",
- shell = false
+ group = groupLuci4,
+ shell = false,
+ keyBinding = {
+ key1 = { modkey },
+ key2 = "z"
+ }
},
subGroup = subGroup.messaging,
-- icon = icons.telegram,
properties = {
- tag = "8",
+ -- tag = "8",
floating = true,
width = 1100,
height = 800,
@@ -946,6 +1001,23 @@ local applications = {
subGroup = subGroup.internet,
properties = propertiesFloatingCentered
},
+ luakit = {
+ label = "Luakit",
+ class = "Luakit",
+ favourite = true,
+ command = {
+ command = homeDir .. "/apps/Luakit",
+ description = "Luakit browser",
+ group = groupLuci4,
+ shell = false,
+ keyBinding = {
+ key1 = { modkey, "Shift" },
+ key2 = "b"
+ }
+ },
+ icon = icons.luakit,
+ subGroup = subGroup.internet
+ },
steam = {
label = "Steam",
class = "",
@@ -1000,7 +1072,7 @@ local applications = {
-- icon = icons.,
subGroup = subGroup.multimedia,
properties = {
- floating = true,
+ floating = true,
-- windowPlacement = placement.centered,
width = 800,
height = 800
@@ -1212,8 +1284,8 @@ local applications = {
class = "",
favourite = false,
command = {
- command = homeDir .. "/apps/Audacity.AppImage",
- description = "Audacity audio editor",
+ command = homeDir .. "/apps/Tenacity.AppImage",
+ description = "Tenacity audio editor",
group = "",
shell = false
},
diff --git a/.config/distrobox/distrobox.ini b/.config/distrobox/distrobox.ini
new file mode 100644
index 00000000..c6f50f80
--- /dev/null
+++ b/.config/distrobox/distrobox.ini
@@ -0,0 +1,9 @@
+[music-arch]
+image="quay.io/toolbx/arch-toolbox:latest"
+home="/mnt/lucie/distrobox-home/music"
+additional_packages="picard pipewire pipewire-pulse pipewire-alsa libpulse git curl fish neovim lua luarocks"
+pre_init_hooks="export SHELL=/usr/bin/fish;"
+# mnt volumes are already mounted by default
+pull=true
+replace=false
+
diff --git a/.config/distrobox/link_configs.sh b/.config/distrobox/link_configs.sh
new file mode 100644
index 00000000..672b3845
--- /dev/null
+++ b/.config/distrobox/link_configs.sh
@@ -0,0 +1,45 @@
+#!/usr/bin/env bash
+#
+# link_configs.sh - Symlink dotfiles from source to destination home directory
+#
+# Usage:
+# ./link_configs.sh /home/lucie/dotfiles /home/lucie
+#
+# Arguments:
+# homeDirSource - Directory containing the original config files/dirs
+# homeDirDest - Destination home directory where symlinks will be created
+#
+# Notes:
+# - Edit the 'paths' array below to add/remove configurations
+# - Handles both files and directories (e.g. .config/fish/config.fish)
+# - Parent directories are created automatically in the destination
+# - Existing symlinks are overwritten (-f flag)
+
+homeDirSource="$1"
+homeDirDest="$2"
+
+paths=(
+ ".config/fontconfig"
+ ".local/share"
+ ".config/gtk-3.0"
+ ".config/gtk-4.0"
+ ".config/qt5ct"
+ ".config/qt6ct"
+ ".config/Kvantum"
+ ".config/fish/config.fish"
+ ".config/fish/conf.d"
+ ".config/fish/functions"
+ ".config/kitty"
+ ".config/nvim"
+ ".local/share/themes"
+ ".local/share/icons"
+ ".local/share/fonts"
+ "scripts"
+ ".shell_env"
+)
+
+for p in "${paths[@]}"; do
+ mkdir -p "${homeDirDest}/$(dirname "${p}")"
+ ln -sf "${homeDirSource}/${p}" "${homeDirDest}/${p}"
+done
+
diff --git a/.config/fish/config.fish b/.config/fish/config.fish
index 350c7391..a0eb16fa 100644
--- a/.config/fish/config.fish
+++ b/.config/fish/config.fish
@@ -150,10 +150,13 @@ if status is-interactive
### OS SPECIFIC ###
if test (uname -s) = "Darwin"
- set OS_NAME (sw_vers -productName)
+ set -g OS_NAME macos
else
- set OS_NAME (lsb_release -is)
- end
+ set -g OS_NAME linux
+ if test -e /etc/os-release
+ set -g OS_NAME (grep '^ID=' /etc/os-release | string replace -r '^ID="?(.+)"?$' '$1')
+ end
+ end
# if the variable $CONTAINER_ID exists, the sessions is in a distrobox container
if test -n "$CONTAINER_ID"
@@ -163,11 +166,11 @@ if status is-interactive
end
switch $OS_NAME
- case "Ubuntu"
+ case "ubuntu"
abbr --add ca batcat --color=always
alias cat='batcat -p --color=always'
abbr --add upd "sudo apt update && sudo apt upgrade -y"
- case "Arch"
+ case "arch"
abbr --add ca bat --color=always
alias cat='bat -p --color=always'
# pacman and yay
@@ -184,7 +187,7 @@ if status is-interactive
alias mirrors="sudo reflector --latest 50 --number 20 --sort score --save /etc/pacman.d/mirrorlist"
alias mirrora="sudo reflector --latest 50 --number 20 --sort age --save /etc/pacman.d/mirrorlist"
- case "Fedora"
+ case "fedora"
alias dmenu='wofi --dmenu'
abbr --add vi "nvim"
abbr --add upd "sudo dnf upgrade"
@@ -194,10 +197,10 @@ if status is-interactive
exec Hyprland
end
- case "macOS"
+ case "macos"
abbr --add ca bat --color=always
alias cat='bat -p --color=always'
- case "Linuxmint"
+ case "linuxmint"
abbr --add ca batcat --color=always
alias cat='batcat -p --color=always'
abbr --add upd "sudo apt update && sudo apt upgrade -y"
diff --git a/.config/gtk-4.0/settings.ini b/.config/gtk-4.0/settings.ini
index 56ec8add..11a959a6 100644
--- a/.config/gtk-4.0/settings.ini
+++ b/.config/gtk-4.0/settings.ini
@@ -6,10 +6,6 @@ gtk-theme-name=Material-Black-Pistachio
gtk-icon-theme-name=BeautyLine
gtk-font-name=Inter 10.5
gtk-cursor-theme-name=Remus-Black
-gtk-toolbar-style=GTK_TOOLBAR_BOTH
-gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
-gtk-button-images=1
-gtk-menu-images=1
gtk-enable-event-sounds=1
gtk-enable-input-feedback-sounds=1
gtk-xft-antialias=1
diff --git a/.config/kitty/quick-access-terminal.conf b/.config/kitty/quick-access-terminal.conf
new file mode 100644
index 00000000..ba2af3c9
--- /dev/null
+++ b/.config/kitty/quick-access-terminal.conf
@@ -0,0 +1,8 @@
+edge none
+# 50% width on a 2560 wide screen = 1280px
+columns 1100px
+# 66% height on a 1600 tall screen = 1056px
+lines 628px
+
+background_opacity 0.75
+kitty_override window_border_width=0
diff --git a/.config/kitty/ssh.conf b/.config/kitty/ssh.conf
new file mode 100644
index 00000000..203407f8
--- /dev/null
+++ b/.config/kitty/ssh.conf
@@ -0,0 +1,3 @@
+hostname *
+forward_remote_control yes
+
diff --git a/.config/luakit/luci_search.lua b/.config/luakit/luci_search.lua
new file mode 100644
index 00000000..1a00d915
--- /dev/null
+++ b/.config/luakit/luci_search.lua
@@ -0,0 +1,20 @@
+local settings = require("settings")
+
+local midoriUrl = os.getenv("SEARCH_AI_URL")
+local default = os.getenv("SEARCH_URL")
+local duckUrl = "https://duckduckgo.com/?q=%s"
+local duckAiUrl = "https://duck.ai/?q=%s"
+
+settings.window.search_engines = {
+ aur = "https://aur.archlinux.org/packages?K=%s",
+ midori = midoriUrl,
+ m = midoriUrl,
+ duck = duckUrl,
+ d = duckUrl,
+ ai = duckAiUrl,
+ searxng = default,
+ default = default,
+}
+
+settings.window.default_search_engine = "default"
+
diff --git a/.config/luakit/luci_session.lua b/.config/luakit/luci_session.lua
new file mode 100644
index 00000000..88fbc523
--- /dev/null
+++ b/.config/luakit/luci_session.lua
@@ -0,0 +1,35 @@
+local modes = require("modes")
+local session = require("session")
+
+-- :wsave — save current session to a file (like :w in vim)
+-- :wload — restore session from a file (like :source in vim)
+modes.add_cmds({
+ { ":wsave", "Save session to file.", function (w, o)
+ local file = o.arg
+ if not file or file == "" then
+ w:error("Usage: :wsave ")
+ return
+ end
+ session.save(file)
+ w:notify("Session saved to " .. file)
+ end, format = "{file}" },
+
+ { ":wload", "Load session from file.", function (w, o)
+ local file = o.arg
+ if not file or file == "" then
+ w:error("Usage: :wload ")
+ return
+ end
+ if not os.exists(file) then
+ w:error("File not found: " .. file)
+ return
+ end
+ -- Temporarily swap the session file path so restore() picks it up
+ local original = session.session_file
+ session.session_file = file
+ session.restore(false) -- false = don't delete the file
+ session.session_file = original
+ w:notify("Session loaded from " .. file)
+ end, format = "{file}" },
+})
+
diff --git a/.config/luakit/theme.lua b/.config/luakit/theme.lua
new file mode 100644
index 00000000..95198bf3
--- /dev/null
+++ b/.config/luakit/theme.lua
@@ -0,0 +1,101 @@
+--------------------------
+-- Default luakit theme --
+--------------------------
+
+local theme = {}
+
+-- Default settings
+theme.font = "12pt IosevkaTerm Nerd Font"
+theme.fg = "#fff"
+theme.bg = "#000"
+
+-- General colours
+theme.success_fg = "#0f0"
+theme.loaded_fg = "#33AADD"
+theme.error_fg = "#FFF"
+theme.error_bg = "#F00"
+
+-- Warning colours
+theme.warning_fg = "#F00"
+theme.warning_bg = "#FFF"
+
+-- Notification colours
+theme.notif_fg = "#444"
+theme.notif_bg = "#FFF"
+
+-- Menu colours
+theme.menu_fg = "#fff"
+theme.menu_bg = "#000"
+theme.menu_selected_fg = "#FF0"
+theme.menu_selected_bg = "#000"
+theme.menu_title_bg = "#fff"
+theme.menu_primary_title_fg = "#f00"
+theme.menu_secondary_title_fg = "#666"
+
+theme.menu_disabled_fg = "#999"
+theme.menu_disabled_bg = theme.menu_bg
+theme.menu_enabled_fg = theme.menu_fg
+theme.menu_enabled_bg = theme.menu_bg
+theme.menu_active_fg = "#060"
+theme.menu_active_bg = theme.menu_bg
+
+-- Proxy manager
+theme.proxy_active_menu_fg = '#000'
+theme.proxy_active_menu_bg = '#FFF'
+theme.proxy_inactive_menu_fg = '#888'
+theme.proxy_inactive_menu_bg = '#FFF'
+
+-- Statusbar specific
+theme.sbar_fg = "#fff"
+theme.sbar_bg = "#000"
+
+-- Downloadbar specific
+theme.dbar_fg = "#fff"
+theme.dbar_bg = "#000"
+theme.dbar_error_fg = "#F00"
+
+-- Input bar specific
+theme.ibar_fg = "#6f6" --"rgba(0,0,0,0)"
+theme.ibar_bg = "#000"
+
+-- Tab label
+theme.tab_fg = "#888"
+theme.tab_bg = "#222"
+theme.tab_hover_bg = "#292929"
+theme.tab_ntheme = "#ddd"
+theme.selected_fg = "#fff"
+theme.selected_bg = "#000"
+theme.selected_ntheme = "#ddd"
+theme.loading_fg = "#33AADD"
+theme.loading_bg = "#000"
+
+theme.selected_private_tab_bg = "#3d295b"
+theme.private_tab_bg = "#22254a"
+
+-- Trusted/untrusted ssl colours
+theme.trust_fg = "#0F0"
+theme.notrust_fg = "#F00"
+
+-- Follow mode hints
+theme.hint_font = "10px monospace, courier, sans-serif"
+theme.hint_fg = "#fff"
+theme.hint_bg = "#000088"
+theme.hint_border = "1px dashed #000"
+theme.hint_opacity = "0.3"
+theme.hint_overlay_bg = "rgba(255,255,153,0.3)"
+theme.hint_overlay_border = "1px dotted #000"
+theme.hint_overlay_selected_bg = "rgba(0,255,0,0.3)"
+theme.hint_overlay_selected_border = theme.hint_overlay_border
+
+-- General colour pairings
+theme.ok = { fg = "#000", bg = "#FFF" }
+theme.warn = { fg = "#F00", bg = "#FFF" }
+theme.error = { fg = "#FFF", bg = "#F00" }
+
+-- Gopher page style (override defaults)
+theme.gopher_light = { bg = "#E8E8E8", fg = "#17181C", link = "#03678D" }
+theme.gopher_dark = { bg = "#17181C", fg = "#E8E8E8", link = "#f90" }
+
+return theme
+
+-- vim: et:sw=4:ts=8:sts=4:tw=80
diff --git a/.config/luakit/userconf.lua b/.config/luakit/userconf.lua
new file mode 100644
index 00000000..f2906fb4
--- /dev/null
+++ b/.config/luakit/userconf.lua
@@ -0,0 +1,36 @@
+require("luci_session")
+require("luci_search")
+local settings = require("settings")
+
+settings.set_setting("session.always_save", true)
+settings.set_setting("application.prefer_dark_mode", true)
+settings.set_setting("window.close_with_last_tab", true)
+
+-- --------- --
+-- HARDENING --
+-- --------- --
+local fakeUserAgent = "Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0"
+local privacySettings = {
+ -- UserAgent
+ ["webview.user_agent"] = fakeUserAgent,
+ -- Disable DNS prefetching (reduces tracking via speculative DNS)
+ ["webview.enable_dns_prefetching"] = false,
+ -- Disable hyperlink auditing (used for ping-based tracking)
+ ["webview.enable_hyperlink_auditing"] = false,
+ -- Disable WebGL (reduces fingerprinting surface)
+ ["webview.enable_webgl"] = false,
+ -- Disable media stream access
+ ["webview.enable_media_stream"] = false,
+ -- Disable WebAudio fingerprinting
+ ["webview.enable_webaudio"] = false,
+}
+
+for key, value in pairs(privacySettings) do
+ settings.set_setting(key, value)
+end
+
+-- EXAMPLE override for a specific site that needs a different UA
+settings.set_setting("webview.user_agent",
+ "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
+ { domain = "example.com" })
+
diff --git a/.config/nsxiv/exec/key-handler b/.config/nsxiv/exec/key-handler
new file mode 100755
index 00000000..1852683a
--- /dev/null
+++ b/.config/nsxiv/exec/key-handler
@@ -0,0 +1,33 @@
+#!/bin/sh
+case "$1" in
+ "c")
+ # Copy file to directory
+ while read -r file; do
+ cp "$file" ~/Downloads/pictures
+ done
+ notify-send "Copied to ~/Downloads/pictures"
+ ;;
+ "y")
+ # Yank image data to clipboard
+ notify-send "Copied to clipboard"
+ while read -r file; do
+ xclip -selection clipboard -t image/png -i "$file" &
+ done
+ ;;
+ "e")
+ # Open in GIMP
+ notify-send "Opening Gimp"
+ while read -r file; do
+ $HOME/apps/Gimp.AppImage "$file" &
+ # gimp "$file" &
+ done
+ ;;
+ "m")
+ # Move file
+ notify-send "Moved to ~/Downloads/pictures"
+ while read -r file; do
+ mv "$file" ~/Downloads/pictures
+ done
+ ;;
+esac
+
diff --git a/.config/tmux/tmux.conf b/.config/tmux/tmux.conf
new file mode 100644
index 00000000..fdfc4550
--- /dev/null
+++ b/.config/tmux/tmux.conf
@@ -0,0 +1,83 @@
+# ── Prefix ──────────────────────────────────────
+#unbind C-b
+#set -g prefix C-a
+#bind C-a send-prefix
+set -g prefix C-b
+
+# ── Terminal / General ──────────────────────────
+set -g default-terminal "tmux-256color"
+set -ga terminal-overrides ",st-256color:Tc"
+set -g history-limit 50000
+set -g escape-time 0
+set -g mouse on
+set -g base-index 1
+set -g pane-base-index 1
+set -g renumber-windows on
+set -g set-titles on
+set -g focus-events on
+setw -g automatic-rename on
+
+# ── Vi Mode ─────────────────────────────────────
+setw -g mode-keys vi
+bind-key -T copy-mode-vi 'v' send-keys -X begin-selection
+bind-key -T copy-mode-vi 'y' send-keys -X copy-pipe-and-cancel "xclip -selection clipboard"
+bind-key -T copy-mode-vi 'Y' send-keys -X copy-pipe "xclip -selection clipboard"
+bind-key -T copy-mode-vi 'r' send-keys -X rectangle-toggle
+
+# ── Splits ──────────────────────────────────────
+bind | split-window -h -c "#{pane_current_path}"
+bind - split-window -v -c "#{pane_current_path}"
+unbind '"'
+unbind %
+
+# ── Pane Navigation (vim-style) ────────────────
+bind h select-pane -L
+bind j select-pane -D
+bind k select-pane -U
+bind l select-pane -R
+
+# ── Pane Resizing (repeatable) ─────────────────
+bind -r H resize-pane -L 5
+bind -r J resize-pane -D 5
+bind -r K resize-pane -U 5
+bind -r L resize-pane -R 5
+
+# ── Windows ────────────────────────────────────
+bind -r C-h previous-window
+bind -r C-l next-window
+bind Tab last-window
+
+# ── Reload Config ──────────────────────────────
+bind r source-file ~/.tmux.conf \; display-message "Config reloaded!"
+
+# ── Dark Theme ─────────────────────────────────
+# Palette: near-black bg, muted gray fg, dim accent
+set -g status-position bottom
+set -g status-justify left
+set -g status-bg "#0a0a0a"
+set -g status-fg "#555555"
+set -g status-left-length 40
+set -g status-right-length 60
+set -g status-left "#[fg=#3a3a4a,bold] #S "
+set -g status-right "#[fg=#3a3a4a] %Y-%m-%d %H:%M "
+setw -g window-status-format "#[fg=#333333] #I:#W "
+setw -g window-status-current-format "#[fg=#5a5a6a,bold] #I:#W "
+setw -g window-status-separator ""
+set -g pane-border-style fg="#1a1a1a"
+set -g pane-active-border-style fg="#2a2a3a"
+set -g message-style bg="#0a0a0a",fg="#5a5a6a"
+set -g display-panes-colour "#2a2a3a"
+set -g display-panes-active-colour "#4a4a5a"
+
+
+
+# ── Plugins (via TPM) ───────────────────────────
+set -g @plugin 'tmux-plugins/tpm'
+set -g @plugin 'tmux-plugins/tmux-resurrect'
+set -g @plugin 'tmux-plugins/tmux-continuum'
+set -g @resurrect-capture-pane-contents 'on'
+set -g @continuum-restore 'on'
+set -g @continuum-save-interval '15'
+
+set-environment -g TMUX_PLUGIN_MANAGER_PATH '~/.config/tmux/plugins'
+run '~/.config/tmux/plugins/tpm/tpm'
diff --git a/.config/xonsh/rc.d/00_rc.py b/.config/xonsh/rc.d/00_rc.py
index c8c024a0..00d07e72 100644
--- a/.config/xonsh/rc.d/00_rc.py
+++ b/.config/xonsh/rc.d/00_rc.py
@@ -128,17 +128,19 @@ def isDistrobox():
system = platform.system()
if system == "Darwin":
- OS_NAME = subprocess.check_output(
- ["sw_vers", "-productName"], text=True
- ).strip()
+ OS_NAME = "macos"
else:
+ OS_NAME = system.lower()
try:
- OS_NAME = subprocess.check_output(
- ["lsb_release", "-is"], text=True
- ).strip()
- except Exception:
- OS_NAME = system
-
+ with open("/etc/os-release", "r") as f:
+ for line in f:
+ if line.startswith("ID="):
+ # Strip 'ID=', then strip quotes and whitespace
+ OS_NAME = line.split("=", 1)[1].strip().strip('"').strip("'").lower()
+ break
+ except FileNotFoundError:
+ pass
+
__xonsh__.env['OS_NAME'] = OS_NAME
# --------------------------------------------------------
diff --git a/.config/xonsh/rc.d/20_aliases.py b/.config/xonsh/rc.d/20_aliases.py
index d61781da..b56dba52 100644
--- a/.config/xonsh/rc.d/20_aliases.py
+++ b/.config/xonsh/rc.d/20_aliases.py
@@ -147,6 +147,7 @@
# --------------------------------------------------------
aliases.update({
":q": "exit",
+ ":s": "startx",
"df": "df -h",
"free": "free -m",
})
diff --git a/.config/xonsh/rc.d/21_aliases_os.py b/.config/xonsh/rc.d/21_aliases_os.py
index 946d31ca..3946badf 100644
--- a/.config/xonsh/rc.d/21_aliases_os.py
+++ b/.config/xonsh/rc.d/21_aliases_os.py
@@ -27,7 +27,7 @@
archUpdateCmd += " && sudo flatpak update --assumeyes"
- if OS_NAME == "Arch":
+ if OS_NAME == "arch":
abbrevs["ca"] = "bat --color=always"
abbrevs["upd"] = archUpdateCmd
aliases["cat"] = "bat -p --color=always"
@@ -45,12 +45,12 @@
"mirrora": "sudo reflector --latest 50 --number 20 --sort age --save /etc/pacman.d/mirrorlist",
})
- elif OS_NAME == "Ubuntu":
+ elif OS_NAME == "ubuntu":
abbrevs["ca"] = "batcat --color=always"
abbrevs["upd"] = debUpdateCmd
aliases["cat"] = "batcat -p --color=always"
- elif OS_NAME == "Fedora":
+ elif OS_NAME == "fedora":
abbrevs["vi"] = "nvim"
abbrevs["upd"] = "sudo dnf upgrade"
@@ -61,11 +61,11 @@
except Exception:
pass
- elif OS_NAME == "macOS":
+ elif OS_NAME == "macos":
abbrevs["ca"] = "bat --color=always"
aliases["cat"] = "bat -p --color=always"
- elif OS_NAME == "Linuxmint":
+ elif OS_NAME == "linuxmint":
abbrevs["ca"] = "batcat --color=always"
abbrevs["upd"] = debUpdateCmd
aliases["cat"] = "batcat -p --color=always"
diff --git a/.config/xonsh/rc.d/65_prompt.py b/.config/xonsh/rc.d/65_prompt.py
index b8fc74ef..3bf23b61 100644
--- a/.config/xonsh/rc.d/65_prompt.py
+++ b/.config/xonsh/rc.d/65_prompt.py
@@ -24,7 +24,10 @@ def my_prompt():
cwdCol = ColourAnsi.CYAN.value
branchCol = ColourAnsi.MAGENTA.value
promptCol = ColourAnsi.DARK_GREEN.value
+ separatorCol = ColourAnsi.BRIGHT_BLACK.value
+ atSeparator = f"{separatorCol}{RESET}"
+ colSeparator = f"{separatorCol}:{RESET}"
user = os.environ.get("USER", "user")
host = socket.gethostname().split(".")[0]
cwd = os.getcwd()
@@ -35,10 +38,11 @@ def my_prompt():
spacing = ""
return (
- f"{userCol}{user}{RESET}@{hostCol}{host}{RESET}:"
+ f"{userCol}{user}{RESET}{atSeparator}{hostCol}{host}{RESET}{colSeparator}"
f"{cwdCol}{cwd}{RESET}"
f"{branchCol}{branch}{RESET}{spacing}"
- f"{promptCol} {RESET}"
+ # f"{promptCol} {RESET}"
+ f"{promptCol} {RESET}"
)
__xonsh__.env['PROMPT'] = my_prompt
diff --git a/.gitmodules b/.gitmodules
index 482071c9..e1cdb72f 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -16,3 +16,6 @@
[submodule "scripts/shell_common/SportsFetch"]
path = scripts/shell_common/SportsFetch
url = https://github.com/icefields/SportsFetchLibrary.git
+[submodule "scripts/wm_common/Luci4-GTK-Window"]
+ path = scripts/wm_common/Luci4-GTK-Window
+ url = https://github.com/icefields/Luci4-GTK-Window.git
diff --git a/.local/bin/distrobox-app-example b/.local/bin/distrobox-app-example
index 9efaf675..fee242e4 100755
--- a/.local/bin/distrobox-app-example
+++ b/.local/bin/distrobox-app-example
@@ -1,6 +1,6 @@
-#!/bin/bash
+#!/usr/bin/env bash
if [ -x "/bin/full/path/of/executable" ]; then
- . /bin/full/path/of/executable
+ exec /bin/full/path/of/executable "$@"
else
/usr/bin/distrobox enter container-name -- application "$@"
fi
diff --git a/.local/bin/nsxiv-dir b/.local/bin/nsxiv-dir
new file mode 100755
index 00000000..7061e19c
--- /dev/null
+++ b/.local/bin/nsxiv-dir
@@ -0,0 +1,49 @@
+#!/bin/sh
+set -u
+
+# Graceful failure if no arguments are provided
+if [ "$#" -eq 0 ]; then
+ printf "Usage: %s \n" "$0" >&2
+ exit 1
+fi
+
+if [ -f "$1" ]; then
+ dir="$(cd "$(dirname "$1")" && pwd)"
+ target="$dir/$(basename "$1")"
+
+ # Include regular files AND symlinks; null-separated for safety.
+ # Pipe directly to nsxiv -i -0 (stdin + null separator) to avoid xargs ARG_MAX limits.
+ find "$dir" -maxdepth 1 \( -type f -o -type l \) -print0 | sort -z | \
+ awk -v RS='\0' -v ORS='\0' -v file="$target" '
+ $0 == file { print; found = 1; next }
+ found { print }
+ { before[++count] = $0 }
+ END {
+ # Fallback: if find missed the target, print it first anyway
+ if (!found) print file
+ for (i = 1; i <= count; i++) print before[i]
+ }
+ ' | nsxiv -i -0
+
+elif [ -d "$1" ]; then
+ # Replace shell process with nsxiv
+ exec nsxiv "$1"
+else
+ # Fallback for direct arguments or weird paths
+ exec nsxiv "$@"
+fi
+
+
+# SIMPLE:
+# #!/bin/sh
+#
+# if [ -f "$1" ]; then
+# dir="$(dirname "$1")"
+# exec nsxiv "$1" "$dir"
+# elif [ -d "$1" ]; then
+# # If it's already a directory, just open it
+# exec nsxiv "$1"
+# else
+# exec nsxiv "$@"
+# fi
+
diff --git a/.local/bin/picard b/.local/bin/picard
new file mode 100755
index 00000000..8bfbda07
--- /dev/null
+++ b/.local/bin/picard
@@ -0,0 +1,7 @@
+#!/usr/bin/env bash
+if [ -x "/usr/bin/picard" ]; then
+ exec /usr/bin/picard "$@"
+else
+ /usr/bin/distrobox enter music-arch -- picard "$@"
+fi
+
diff --git a/.local/share/fonts/Victor/LICENSE.txt b/.local/share/fonts/Victor/LICENSE.txt
new file mode 100755
index 00000000..6dd3d05b
--- /dev/null
+++ b/.local/share/fonts/Victor/LICENSE.txt
@@ -0,0 +1,93 @@
+Copyright (c) 2024, Rune Bjørnerås (https://github.com/rubjo)
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
\ No newline at end of file
diff --git a/.local/share/fonts/Victor/README.md b/.local/share/fonts/Victor/README.md
new file mode 100644
index 00000000..e88ce2e0
--- /dev/null
+++ b/.local/share/fonts/Victor/README.md
@@ -0,0 +1,48 @@
+# Nerd Fonts
+
+This is an archived font from the Nerd Fonts release v3.4.0.
+
+For more information see:
+* https://github.com/ryanoasis/nerd-fonts/
+* https://github.com/ryanoasis/nerd-fonts/releases/latest/
+
+# Victor Mono
+
+**Victor Mono** is programming font with semi-connected cursive italics and symbol ligatures.
+
+For more information have a look at the upstream website: https://rubjo.github.io/victor-mono
+
+Version: 1.5.6
+
+## Which font?
+
+### TL;DR
+
+* Pick your font family:
+ * If you are limited to monospaced fonts (because of your terminal, etc) then pick a font with `Nerd Font Mono` (or `NFM`).
+ * If you want to have bigger icons (usually around 1.5 normal letters wide) pick a font without `Mono` i.e. `Nerd Font` (or `NF`). Most terminals support this, but ymmv.
+ * If you work in a proportional context (GUI elements or edit a presentation etc) pick a font with `Nerd Font Propo` (or `NFP`).
+
+### Ligatures
+
+Ligatures are generally preserved in the patched fonts.
+Nerd Fonts `v2.0.0` had no ligatures in the `Nerd Font Mono` fonts, this has been dropped with `v2.1.0`.
+If you have a ligature-aware terminal and don't want ligatures you can (usually) disable them in the terminal settings.
+
+### Explanation
+
+Once you narrow down your font choice of family (`Droid Sans`, `Inconsolata`, etc) and style (`bold`, `italic`, etc) you have 2 main choices:
+
+#### `Option 1: Download already patched font`
+
+ * For a stable version download a font package from the [release page](https://github.com/ryanoasis/nerd-fonts/releases)
+ * Or download the development version from the folders here
+
+#### `Option 2: Patch your own font`
+
+ * Patch your own variations with the various options provided by the font patcher (i.e. not include all symbols for smaller font size)
+
+For more information see: [The FAQ](https://github.com/ryanoasis/nerd-fonts/wiki/FAQ-and-Troubleshooting#which-font)
+
+[SIL-RFN]:http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web_fonts_and_RFNs#14cbfd4a
+
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFont-Bold.ttf b/.local/share/fonts/Victor/VictorMonoNerdFont-Bold.ttf
new file mode 100644
index 00000000..037ba466
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFont-Bold.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFont-BoldItalic.ttf b/.local/share/fonts/Victor/VictorMonoNerdFont-BoldItalic.ttf
new file mode 100644
index 00000000..7cff7b56
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFont-BoldItalic.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFont-BoldOblique.ttf b/.local/share/fonts/Victor/VictorMonoNerdFont-BoldOblique.ttf
new file mode 100644
index 00000000..a65b8d11
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFont-BoldOblique.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFont-ExtraLight.ttf b/.local/share/fonts/Victor/VictorMonoNerdFont-ExtraLight.ttf
new file mode 100644
index 00000000..b92bc918
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFont-ExtraLight.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFont-ExtraLightItalic.ttf b/.local/share/fonts/Victor/VictorMonoNerdFont-ExtraLightItalic.ttf
new file mode 100644
index 00000000..fb274228
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFont-ExtraLightItalic.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFont-ExtraLightOblique.ttf b/.local/share/fonts/Victor/VictorMonoNerdFont-ExtraLightOblique.ttf
new file mode 100644
index 00000000..f11f799f
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFont-ExtraLightOblique.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFont-Italic.ttf b/.local/share/fonts/Victor/VictorMonoNerdFont-Italic.ttf
new file mode 100644
index 00000000..681566b3
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFont-Italic.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFont-Light.ttf b/.local/share/fonts/Victor/VictorMonoNerdFont-Light.ttf
new file mode 100644
index 00000000..9eec4d08
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFont-Light.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFont-LightItalic.ttf b/.local/share/fonts/Victor/VictorMonoNerdFont-LightItalic.ttf
new file mode 100644
index 00000000..583b9f7b
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFont-LightItalic.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFont-LightOblique.ttf b/.local/share/fonts/Victor/VictorMonoNerdFont-LightOblique.ttf
new file mode 100644
index 00000000..e72a169d
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFont-LightOblique.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFont-Medium.ttf b/.local/share/fonts/Victor/VictorMonoNerdFont-Medium.ttf
new file mode 100644
index 00000000..8a50d365
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFont-Medium.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFont-MediumItalic.ttf b/.local/share/fonts/Victor/VictorMonoNerdFont-MediumItalic.ttf
new file mode 100644
index 00000000..3178e4c5
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFont-MediumItalic.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFont-MediumOblique.ttf b/.local/share/fonts/Victor/VictorMonoNerdFont-MediumOblique.ttf
new file mode 100644
index 00000000..582306a4
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFont-MediumOblique.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFont-Oblique.ttf b/.local/share/fonts/Victor/VictorMonoNerdFont-Oblique.ttf
new file mode 100644
index 00000000..0e182a9c
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFont-Oblique.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFont-Regular.ttf b/.local/share/fonts/Victor/VictorMonoNerdFont-Regular.ttf
new file mode 100644
index 00000000..fadf8de7
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFont-Regular.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFont-SemiBold.ttf b/.local/share/fonts/Victor/VictorMonoNerdFont-SemiBold.ttf
new file mode 100644
index 00000000..f786d0fc
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFont-SemiBold.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFont-SemiBoldItalic.ttf b/.local/share/fonts/Victor/VictorMonoNerdFont-SemiBoldItalic.ttf
new file mode 100644
index 00000000..d6a78bee
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFont-SemiBoldItalic.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFont-SemiBoldOblique.ttf b/.local/share/fonts/Victor/VictorMonoNerdFont-SemiBoldOblique.ttf
new file mode 100644
index 00000000..4076718d
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFont-SemiBoldOblique.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFont-Thin.ttf b/.local/share/fonts/Victor/VictorMonoNerdFont-Thin.ttf
new file mode 100644
index 00000000..a38f99e7
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFont-Thin.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFont-ThinItalic.ttf b/.local/share/fonts/Victor/VictorMonoNerdFont-ThinItalic.ttf
new file mode 100644
index 00000000..1320e90b
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFont-ThinItalic.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFont-ThinOblique.ttf b/.local/share/fonts/Victor/VictorMonoNerdFont-ThinOblique.ttf
new file mode 100644
index 00000000..f1158688
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFont-ThinOblique.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontMono-Bold.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontMono-Bold.ttf
new file mode 100644
index 00000000..eafd1942
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontMono-Bold.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontMono-BoldItalic.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontMono-BoldItalic.ttf
new file mode 100644
index 00000000..158b220e
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontMono-BoldItalic.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontMono-BoldOblique.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontMono-BoldOblique.ttf
new file mode 100644
index 00000000..2b3d41b1
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontMono-BoldOblique.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontMono-ExtraLight.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontMono-ExtraLight.ttf
new file mode 100644
index 00000000..c11c5aea
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontMono-ExtraLight.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontMono-ExtraLightItalic.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontMono-ExtraLightItalic.ttf
new file mode 100644
index 00000000..a70ec7cb
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontMono-ExtraLightItalic.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontMono-ExtraLightOblique.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontMono-ExtraLightOblique.ttf
new file mode 100644
index 00000000..5304793b
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontMono-ExtraLightOblique.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontMono-Italic.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontMono-Italic.ttf
new file mode 100644
index 00000000..3e6362b9
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontMono-Italic.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontMono-Light.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontMono-Light.ttf
new file mode 100644
index 00000000..4a7c4da6
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontMono-Light.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontMono-LightItalic.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontMono-LightItalic.ttf
new file mode 100644
index 00000000..71a264df
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontMono-LightItalic.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontMono-LightOblique.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontMono-LightOblique.ttf
new file mode 100644
index 00000000..2537a54b
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontMono-LightOblique.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontMono-Medium.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontMono-Medium.ttf
new file mode 100644
index 00000000..af77b03c
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontMono-Medium.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontMono-MediumItalic.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontMono-MediumItalic.ttf
new file mode 100644
index 00000000..549cc733
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontMono-MediumItalic.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontMono-MediumOblique.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontMono-MediumOblique.ttf
new file mode 100644
index 00000000..cad46b85
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontMono-MediumOblique.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontMono-Oblique.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontMono-Oblique.ttf
new file mode 100644
index 00000000..20c7b763
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontMono-Oblique.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontMono-Regular.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontMono-Regular.ttf
new file mode 100644
index 00000000..c60815b5
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontMono-Regular.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontMono-SemiBold.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontMono-SemiBold.ttf
new file mode 100644
index 00000000..36e9528a
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontMono-SemiBold.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontMono-SemiBoldItalic.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontMono-SemiBoldItalic.ttf
new file mode 100644
index 00000000..373bff61
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontMono-SemiBoldItalic.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontMono-SemiBoldOblique.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontMono-SemiBoldOblique.ttf
new file mode 100644
index 00000000..9b427fb7
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontMono-SemiBoldOblique.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontMono-Thin.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontMono-Thin.ttf
new file mode 100644
index 00000000..706ff183
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontMono-Thin.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontMono-ThinItalic.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontMono-ThinItalic.ttf
new file mode 100644
index 00000000..b1109745
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontMono-ThinItalic.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontMono-ThinOblique.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontMono-ThinOblique.ttf
new file mode 100644
index 00000000..ce1e6e2a
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontMono-ThinOblique.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontPropo-Bold.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-Bold.ttf
new file mode 100644
index 00000000..d7aa85b9
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-Bold.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontPropo-BoldItalic.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-BoldItalic.ttf
new file mode 100644
index 00000000..5b7ba32b
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-BoldItalic.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontPropo-BoldOblique.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-BoldOblique.ttf
new file mode 100644
index 00000000..c15e787e
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-BoldOblique.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontPropo-ExtraLight.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-ExtraLight.ttf
new file mode 100644
index 00000000..4c789d6d
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-ExtraLight.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontPropo-ExtraLightItalic.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-ExtraLightItalic.ttf
new file mode 100644
index 00000000..c7b40b01
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-ExtraLightItalic.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontPropo-ExtraLightOblique.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-ExtraLightOblique.ttf
new file mode 100644
index 00000000..6bfe4499
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-ExtraLightOblique.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontPropo-Italic.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-Italic.ttf
new file mode 100644
index 00000000..ffcd732b
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-Italic.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontPropo-Light.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-Light.ttf
new file mode 100644
index 00000000..e0ca612e
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-Light.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontPropo-LightItalic.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-LightItalic.ttf
new file mode 100644
index 00000000..5afd9327
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-LightItalic.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontPropo-LightOblique.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-LightOblique.ttf
new file mode 100644
index 00000000..44e70d68
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-LightOblique.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontPropo-Medium.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-Medium.ttf
new file mode 100644
index 00000000..ed6730fd
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-Medium.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontPropo-MediumItalic.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-MediumItalic.ttf
new file mode 100644
index 00000000..9a86bdf7
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-MediumItalic.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontPropo-MediumOblique.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-MediumOblique.ttf
new file mode 100644
index 00000000..ac9bb54d
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-MediumOblique.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontPropo-Oblique.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-Oblique.ttf
new file mode 100644
index 00000000..02582712
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-Oblique.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontPropo-Regular.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-Regular.ttf
new file mode 100644
index 00000000..add7aae6
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-Regular.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontPropo-SemiBold.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-SemiBold.ttf
new file mode 100644
index 00000000..5230bcfa
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-SemiBold.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontPropo-SemiBoldItalic.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-SemiBoldItalic.ttf
new file mode 100644
index 00000000..e4a7ef67
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-SemiBoldItalic.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontPropo-SemiBoldOblique.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-SemiBoldOblique.ttf
new file mode 100644
index 00000000..ed496c41
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-SemiBoldOblique.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontPropo-Thin.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-Thin.ttf
new file mode 100644
index 00000000..ae5c2652
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-Thin.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontPropo-ThinItalic.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-ThinItalic.ttf
new file mode 100644
index 00000000..b557188f
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-ThinItalic.ttf differ
diff --git a/.local/share/fonts/Victor/VictorMonoNerdFontPropo-ThinOblique.ttf b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-ThinOblique.ttf
new file mode 100644
index 00000000..65ff3880
Binary files /dev/null and b/.local/share/fonts/Victor/VictorMonoNerdFontPropo-ThinOblique.ttf differ
diff --git a/Pictures/wallpapers/2b4e6784.jpg b/Pictures/wallpapers/2b4e6784.jpg
new file mode 100644
index 00000000..1fabeadf
Binary files /dev/null and b/Pictures/wallpapers/2b4e6784.jpg differ
diff --git a/README.md b/README.md
index d505c719..044bcdcb 100644
--- a/README.md
+++ b/README.md
@@ -131,6 +131,8 @@ Create `~/.shell_env`, and add the following variables.
```
# variable used to determine if the system is in dev. ie. xonsh errors will be more verbose
IS_DEV_MODE="false"
+# terminal to be used everywhere. "st" or "kitty --single-instance"
+TERMINAL_CMD="st"
TOR_PASSWORD="torPasswordForTheResetTorScript"
GOOGLE_API_KEY="yourGoogleApiKey"
@@ -145,9 +147,23 @@ VPN_HOME_USER="user"
VPN_HOME_PASS="pass"
OVPN_HOME_CONFIG="/ovpn/config/location/on/disk/home.ovpn"
+# search
+SEARCH_URL="https://searx.instance.org/search?q=%s"
+SEARCH_AI_URL="https://ai.search.org/?q=%s"
+
+# shlink
+SHLINK_BASE_URL="https://sl.chmod666.ca"
+SHLINK_API_KEY="3de3c045-ba9f-4cbc-9354-55ce89d834b0"
+
# currency conversion API
CURRENCY_API = "https://currency.api.url"
+# cheat sheet self hosted url
+CHTSH_URL="https://cheat.chmod666.ca"
+
+# NPB fetcher library location (clone from github.com/icefields)
+NPB_FETCH_PATH="/home/user/Code/Python/BaseballNpbFetch"
+
# location variables, for weather, red filter, etc...
LOCATION_COORDINATES="43.6426,-79.3871"
diff --git a/scripts/wm_common/Luci4-GTK-Window b/scripts/wm_common/Luci4-GTK-Window
new file mode 160000
index 00000000..e887d322
--- /dev/null
+++ b/scripts/wm_common/Luci4-GTK-Window
@@ -0,0 +1 @@
+Subproject commit e887d32288a52602bb2c9d555058873b981e2972
diff --git a/scripts/shell_common/brightnessctl.sh b/scripts/wm_common/brightnessctl.sh
similarity index 80%
rename from scripts/shell_common/brightnessctl.sh
rename to scripts/wm_common/brightnessctl.sh
index 2b780dc3..0fa82905 100755
--- a/scripts/shell_common/brightnessctl.sh
+++ b/scripts/wm_common/brightnessctl.sh
@@ -1,5 +1,8 @@
#!/usr/bin/env bash
+SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+source "$SCRIPT_DIR/notify-debounced.sh"
+
iDIR="$HOME/scripts/wm_common/icons/notifications" # /.config/mako/icons"
# Detect notification method
@@ -53,10 +56,12 @@ notify_user() {
-i "$icon" \
"Brightness: ${current}%"
else
- notify-send -h string:x-canonical-private-synchronous:sys-notify \
- -u low \
- -i "$icon" \
- "Brightness: ${current}%"
+ debounce_notify 0.3 "notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i \"\$icon\" \"Brightness : \${current}%\""
+
+ #notify-send -h string:x-canonical-private-synchronous:sys-notify \
+ # -u low \
+ # -i "$icon" \
+ # "Brightness: ${current}%"
fi
}
diff --git a/scripts/wm_common/lockscreen.sh b/scripts/wm_common/lockscreen.sh
index 7efff9df..e2a56c2f 100755
--- a/scripts/wm_common/lockscreen.sh
+++ b/scripts/wm_common/lockscreen.sh
@@ -1,6 +1,6 @@
#!/bin/sh
# Auto-generated by i3lock_theme_generator.lua
-# Generated: 2026-05-12T00:04:37Z
+# Generated: 2026-07-23T17:44:02Z
# Themed for i3lock-color (AUR: i3lock-color)
# DO NOT EDIT — regenerate via: require("themes.i3lock_theme_generator").generate()
#
diff --git a/scripts/wm_common/notify-debounced.sh b/scripts/wm_common/notify-debounced.sh
new file mode 100755
index 00000000..d44c73ce
--- /dev/null
+++ b/scripts/wm_common/notify-debounced.sh
@@ -0,0 +1,46 @@
+#!/usr/bin/env bash
+
+# Use /run/user/$UID for PID files instead of /tmp
+PID_DIR="/run/user/$(id -u)"
+if [[ ! -d "$PID_DIR" ]]; then
+ # Fallback to ~/.local/run if /run/user is not available
+ PID_DIR="$HOME/.local/run"
+ mkdir -p "$PID_DIR"
+fi
+DEBOUNCE_PID_FILE="$PID_DIR/debounce_notify.pid"
+
+# Usage: debounce_notify ""
+# WARNING: Uses eval. Ensure is strictly controlled,
+# as eval with untrusted input leads to command injection.
+debounce_notify() {
+ local delay="$1"
+ local cmdString="$2"
+
+ # Kill any pending notification process
+ if [[ -f "$DEBOUNCE_PID_FILE" ]]; then
+ local prevPid
+ prevPid=$(cat "$DEBOUNCE_PID_FILE" 2>/dev/null)
+ if [[ -n "$prevPid" ]] && kill -0 "$prevPid" 2>/dev/null; then
+ kill "$prevPid" 2>/dev/null
+ # No wait needed. The previous script has already exited,
+ # so the subshell was reparented to init, which reaps it.
+ fi
+ fi
+
+ # Fork a background subshell that waits, evals the command, and cleans up
+ (
+ sleep "$delay"
+ eval "$cmdString"
+ rm -f "$DEBOUNCE_PID_FILE" # Clean up PID file after execution
+ ) &
+
+ local subPid=$!
+
+ # Detach the background job so it doesn't receive SIGHUP
+ # when the parent script exits.
+ disown "$subPid" 2>/dev/null
+
+ # Store the PID of the subshell
+ echo "$subPid" > "$DEBOUNCE_PID_FILE"
+}
+
diff --git a/scripts/wm_common/update-sys.sh b/scripts/wm_common/update-sys.sh
index f4722114..8d594e5e 100755
--- a/scripts/wm_common/update-sys.sh
+++ b/scripts/wm_common/update-sys.sh
@@ -10,6 +10,14 @@ command_exists() {
command -v "$1" &> /dev/null
}
+sysTerm() {
+ case "$TERMINAL_CMD" in
+ st*) $TERMINAL_CMD -t "$1" -e sh -c "$2" ;;
+ kitty*) $TERMINAL_CMD --title "$1" sh -c "$2" ;;
+ *) $TERMINAL_CMD -e sh -c "$2" ;;
+ esac
+}
+
# Calculate updates for each service
AUR=$(yay -Qua | wc -l)
OFFICIAL=$(checkupdates | wc -l)
@@ -41,7 +49,8 @@ if [ "$1" = "update" ]; then
UPDATE_CMD="$UPDATE_CMD && distrobox upgrade --all"
fi
- kitty --title update-sys sh -c "$UPDATE_CMD"
+ sysTerm update-sys "$UPDATE_CMD"
+ # kitty --title update-sys sh -c "$UPDATE_CMD"
fi
# If there aren't any parameters, return the total number of updates
diff --git a/scripts/wm_common/volume.sh b/scripts/wm_common/volume.sh
index be240175..08093306 100755
--- a/scripts/wm_common/volume.sh
+++ b/scripts/wm_common/volume.sh
@@ -1,5 +1,8 @@
#!/bin/bash
+SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+source "$SCRIPT_DIR/notify-debounced.sh"
+
#iDIR="$HOME/.config/mako/icons"
iDIR="$HOME/scripts/wm_common/icons/notifications"
@@ -35,14 +38,15 @@ notify_user() {
if [[ "$NOTIFY_CMD" == "dunstify" ]]; then
dunstify -r 9991 -u low -i "$(get_icon)" "Volume : $(get_volume) %"
else
- notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$(get_icon)" "Volume : $(get_volume) %"
+ debounce_notify 0.3 "notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i \"\$(get_icon)\" \"Volume : \$(get_volume) %\""
+ #notify-send -h string:x-canonical-private-synchronous:sys-notify -u low -i "$(get_icon)" "Volume : $(get_volume) %"
fi
}
# Increase Volume
inc_volume() {
if command -v pamixer &>/dev/null; then
- pamixer --increase 1 && notify_user
+ pamixer --increase 4 && notify_user
elif command -v amixer &>/dev/null; then
amixer -D pulse sset Master 2%+ && notify_user
else
@@ -55,7 +59,7 @@ inc_volume() {
# Decrease Volume
dec_volume() {
if command -v pamixer &>/dev/null; then
- pamixer --decrease 1 && notify_user
+ pamixer --decrease 4 && notify_user
elif command -v amixer &>/dev/null; then
amixer -D pulse sset Master 2%- && notify_user
else