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