diff --git a/config/niri/.config/niri/config/execs.kdl b/config/niri/.config/niri/config/execs.kdl index acb6f3b..7a8e322 100644 --- a/config/niri/.config/niri/config/execs.kdl +++ b/config/niri/.config/niri/config/execs.kdl @@ -20,7 +20,7 @@ spawn-at-startup "wl-paste" "--type" "image" "--watch" "cliphist" "store" spawn-at-startup "solaar" "-w" "hide" // Some other heavy apps -// spawn-at-startup "sunshine" +spawn-at-startup "sunshine" // spawn-at-startup "spotify" // spawn-at-startup "thunderbird" @@ -32,3 +32,5 @@ spawn-at-startup "quickshell" // According to (https://ghostty.org/docs/linux/systemd#starting-ghostty-at-login) // spawn-sh-at-startup "systemctl start --user app-com.mitchellh.ghostty.service" +// +// spawn-at-startup "flatpak" "run" "com.gopeed.Gopeed" "--hidden" diff --git a/config/nwg-look/.config/gtk-3.0/settings.ini b/config/nwg-look/.config/gtk-3.0/settings.ini index a2e43ec..17f5189 100644 --- a/config/nwg-look/.config/gtk-3.0/settings.ini +++ b/config/nwg-look/.config/gtk-3.0/settings.ini @@ -1,17 +1,25 @@ [Settings] -gtk-theme-name=catppuccin-mocha-blue-standard+default -gtk-icon-theme-name=Papirus -gtk-font-name=Sarasa UI SC 10 +gtk-application-prefer-dark-theme=true +gtk-button-images=true +gtk-cursor-blink=true +gtk-cursor-blink-time=1000 gtk-cursor-theme-name=Bibata-Modern-Ice gtk-cursor-theme-size=24 -gtk-toolbar-style=GTK_TOOLBAR_ICONS -gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR -gtk-button-images=0 -gtk-menu-images=0 +gtk-decoration-layout=icon:minimize,maximize,close +gtk-enable-animations=true gtk-enable-event-sounds=1 gtk-enable-input-feedback-sounds=0 +gtk-font-name=Sarasa UI SC, 10 +gtk-icon-theme-name=Papirus +gtk-menu-images=true +gtk-modules=colorreload-gtk-module +gtk-primary-button-warps-slider=true +gtk-sound-theme-name=ocean +gtk-theme-name=catppuccin-mocha-blue-standard+default +gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR +gtk-toolbar-style=3 gtk-xft-antialias=1 +gtk-xft-dpi=122880 gtk-xft-hinting=1 gtk-xft-hintstyle=hintslight gtk-xft-rgba=rgb -gtk-application-prefer-dark-theme=1 diff --git a/config/nwg-look/.config/gtk-4.0/settings.ini b/config/nwg-look/.config/gtk-4.0/settings.ini index af17726..4139029 100644 --- a/config/nwg-look/.config/gtk-4.0/settings.ini +++ b/config/nwg-look/.config/gtk-4.0/settings.ini @@ -1,7 +1,14 @@ [Settings] -gtk-theme-name=catppuccin-mocha-blue-standard+default -gtk-icon-theme-name=Papirus -gtk-font-name=Sarasa UI SC 10 +gtk-application-prefer-dark-theme=true +gtk-cursor-blink=true +gtk-cursor-blink-time=1000 gtk-cursor-theme-name=Bibata-Modern-Ice gtk-cursor-theme-size=24 -gtk-application-prefer-dark-theme=1 +gtk-decoration-layout=icon:minimize,maximize,close +gtk-enable-animations=true +gtk-font-name=Sarasa UI SC, 10 +gtk-icon-theme-name=Papirus +gtk-primary-button-warps-slider=true +gtk-sound-theme-name=ocean +gtk-theme-name=catppuccin-mocha-blue-standard+default +gtk-xft-dpi=122880 diff --git a/config/quickshell/.config/quickshell/Constants/Colors.qml b/config/quickshell/.config/quickshell/Constants/Colors.qml index 3fbf02d..fb940d5 100644 --- a/config/quickshell/.config/quickshell/Constants/Colors.qml +++ b/config/quickshell/.config/quickshell/Constants/Colors.qml @@ -106,6 +106,10 @@ Singleton { running: false repeat: false onTriggered: { + if (BackgroundService.isProcessing) { + reloadTimer.restart(); + return ; + } reloadColors(ShellState.colorState); } } diff --git a/config/quickshell/.config/quickshell/Modules/Bar/Bar.qml b/config/quickshell/.config/quickshell/Modules/Bar/Bar.qml index 8deffef..02925a5 100644 --- a/config/quickshell/.config/quickshell/Modules/Bar/Bar.qml +++ b/config/quickshell/.config/quickshell/Modules/Bar/Bar.qml @@ -70,6 +70,7 @@ Variants { id: leftLayout height: parent.height - Style.marginXS * 2 + spacing: Style.marginM anchors { left: parent.left @@ -92,22 +93,20 @@ Variants { } Separator { - implicitWidth: Style.marginXL } Workspace { screen: modelData + horizontalPadding: 0 } Separator { - implicitWidth: Style.marginXL } CavaBar { } Separator { - implicitWidth: Style.marginXL } FocusedWindow { @@ -134,6 +133,7 @@ Variants { id: rightLayout height: parent.height - Style.marginXS * 2 + spacing: Style.marginM anchors { right: parent.right @@ -167,6 +167,7 @@ Variants { y: LyricsService.showLyricsBar ? Style.barHeight : 0 opacity: LyricsService.showLyricsBar ? 0 : 1 spacing: Style.marginM + anchors.margins: 0 Component.onCompleted: { if (!LyricsService.showLyricsBar) SystemStatService.registerComponent("BarMonitors"); @@ -204,9 +205,6 @@ Variants { screen: modelData } - Volume { - } - Behavior on y { NumberAnimation { duration: 300 @@ -261,6 +259,9 @@ Variants { } + Volume { + } + Separator { } diff --git a/config/quickshell/.config/quickshell/Services/BackgroundService.qml b/config/quickshell/.config/quickshell/Services/BackgroundService.qml index 55cf289..4d625fe 100644 --- a/config/quickshell/.config/quickshell/Services/BackgroundService.qml +++ b/config/quickshell/.config/quickshell/Services/BackgroundService.qml @@ -15,6 +15,7 @@ Singleton { property string previewPath: "" property string displayPath: "" property bool inPreviewMode: false + property bool isProcessing: false // Preserved for getBlurredOverview readonly property string tintColor: Colors.mSurface readonly property real tintOpacity: 0.5 @@ -24,9 +25,12 @@ Singleton { function loadBackground() { if (!SettingsService.backgroundPath) { Logger.w("BackgroundService", "No background path set, skipping loading background."); + isProcessing = false; return ; } + isProcessing = true; ImageCacheService.getLarge(SettingsService.backgroundPath, backgroundWidth, backgroundHeight, function(path) { + isProcessing = false; if (!path) { Logger.e("BackgroundService", "Failed to load background image from path: " + SettingsService.backgroundPath); cachedPath = ""; @@ -55,12 +59,13 @@ Singleton { if (!path) return ; - previewPath = ""; // clear preview path - cachedPath = ""; // clear cached path + previewPath = ""; + isProcessing = true; ImageCacheService.checkFileExists(path, function(exists) { - if (!exists) + if (!exists) { + isProcessing = false; return ; - + } SettingsService.backgroundPath = path; loadTimer.restart(); }); @@ -106,16 +111,6 @@ Singleton { } } - Timer { - id: setDisplayTimer - - interval: 100 - running: false - repeat: false - onTriggered: { - } - } - Process { id: wallreelProcess diff --git a/config/quickshell/.config/quickshell/Services/LyricsService.qml b/config/quickshell/.config/quickshell/Services/LyricsService.qml index 75ebdd9..602101c 100644 --- a/config/quickshell/.config/quickshell/Services/LyricsService.qml +++ b/config/quickshell/.config/quickshell/Services/LyricsService.qml @@ -251,7 +251,7 @@ Singleton { } const player = this.queuedPlayer.toLowerCase(); this.queuedPlayer = ""; - this.command = ["lrcfetch", "--player", player, "fetch"]; + this.command = ["lrx", "--player", player, "fetch"]; this.running = true; } diff --git a/config/scripts/.local/scripts/elisa-lyrics b/config/scripts/.local/scripts/elisa-lyrics deleted file mode 100755 index 7eaaa84..0000000 --- a/config/scripts/.local/scripts/elisa-lyrics +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -url=$(playerctl --player=elisa metadata xesam:url) - -if [[ "$url" != file://* ]]; then - exit 1 -fi - -path="${url#file://}" -lyrics_path="${path%.*}.lrc" - -if [[ ! -e "$lyrics_path" ]]; then - exit 1 -fi - -cat "$lyrics_path" diff --git a/config/scripts/.local/scripts/quickshell-kill b/config/scripts/.local/scripts/quickshell-kill index 6f72a19..f6b775c 100755 --- a/config/scripts/.local/scripts/quickshell-kill +++ b/config/scripts/.local/scripts/quickshell-kill @@ -1,18 +1,22 @@ #!/usr/bin/env bash -pid=$(pgrep -x quickshell) -[ -z "$pid" ] && exit 1 +pids=$(pgrep -x quickshell) +[ -z "$pids" ] && exit 1 # for child in $(pgrep -P "$pid" 2>/dev/null); do # kill "$child" # done -children=$(pgrep -P "$pid" 2>/dev/null) +children=() -kill "$pid" +for pid in $pids; do + # children=$(pgrep -P "$pid" 2>/dev/null) + children+=($!) + kill "$pid" || true +done sleep 0.5 -for child in $children; do +for child in "${children[@]}"; do kill "$child" || true done diff --git a/config/shell/.config/zsh/conf.d/01-options.zsh b/config/shell/.config/zsh/conf.d/01-options.zsh index 4a1b4a9..73af7e4 100644 --- a/config/shell/.config/zsh/conf.d/01-options.zsh +++ b/config/shell/.config/zsh/conf.d/01-options.zsh @@ -19,7 +19,7 @@ WORDCHARS=${WORDCHARS//[\/=\*\.-]/} bindkey '^[[1;5D' backward-word # C-Left bindkey '^[[1;5C' forward-word # C-Right bindkey '^H' backward-kill-word # C-Backspace (also C-H) -# bindkey '^Z' undo # C-z +bindkey '^Z' undo # C-z # A-s to prepend sudo uy_prepend_sudo() { diff --git a/config/shell/.config/zsh/conf.d/02-completions.zsh b/config/shell/.config/zsh/conf.d/02-completions.zsh index 3d234d2..02fadfb 100644 --- a/config/shell/.config/zsh/conf.d/02-completions.zsh +++ b/config/shell/.config/zsh/conf.d/02-completions.zsh @@ -14,3 +14,9 @@ zstyle ':completion:*' squeeze-slashes true zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}" zstyle ':completion:*:descriptions' format '%F{cyan}-- %d --%f' zstyle ':completion:*:warnings' format '%F{red}-- no matches --%f' + +# Jujutsu + +if (( $+commands[jj] )); then + source <(jj util completion zsh) +fi diff --git a/config/shell/.config/zsh/funcs.d/.gitignore b/config/shell/.config/zsh/funcs.d/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/config/shell/.config/zsh/funcs.d/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/config/shell/.zshrc b/config/shell/.zshrc index c76d101..a83511a 100644 --- a/config/shell/.zshrc +++ b/config/shell/.zshrc @@ -1,8 +1,21 @@ +# lrx completions +fpath=(/home/kolkas/.zsh/completions $fpath) #!/hint/zsh [[ $- != *i* ]] && return + for _f in "${XDG_CONFIG_HOME:-$HOME/.config}"/zsh/conf.d/*.zsh(N); do source "$_f" done + +for _f in "${XDG_CONFIG_HOME:-$HOME/.config}"/zsh/funcs.d/*.zsh(N); do + source "$_f" +done + +for _f in "${XDG_CONFIG_HOME:-$HOME/.config}"/zsh/funcs.d/_*(N); do + source "$_f" +done + + unset _f diff --git a/config/wallpaper/Pictures/backgrounds b/config/wallpaper/Pictures/backgrounds index a694860..1aa49ed 160000 --- a/config/wallpaper/Pictures/backgrounds +++ b/config/wallpaper/Pictures/backgrounds @@ -1 +1 @@ -Subproject commit a694860bc15dea72c9acbded2c001655bdea3738 +Subproject commit 1aa49ed039e2335a56653ec71d68c0b247bc4408 diff --git a/config/yazi/.config/yazi/apply-color b/config/yazi/.config/yazi/apply-color index 5b10998..8b92a41 100755 --- a/config/yazi/.config/yazi/apply-color +++ b/config/yazi/.config/yazi/apply-color @@ -6,7 +6,16 @@ } . "$HOME/.local/snippets/apply-color-helper" -cp -f "$path"/../../../../assets/yazi-themes/catppuccin-mocha-"$colorName".toml "$path"/../yazi/theme.toml || { +dir="$path"/../../../../assets + +file=$(find "$dir" -type f -name "catppuccin-mocha-${colorName}.toml" | head -n 1) + +[[ -z "$file" ]] && { + log_error "Theme file not found for color: $colorName" + exit 1 +} + +cp -f "$file" "$path"/../yazi/theme.toml || { log_error "Failed to copy theme file" exit 1 } diff --git a/config/yazi/.config/yazi/theme.toml b/config/yazi/.config/yazi/theme.toml index 8161dbd..cc7bc58 100755 --- a/config/yazi/.config/yazi/theme.toml +++ b/config/yazi/.config/yazi/theme.toml @@ -10,11 +10,11 @@ find_position = { fg = "#f5c2e7", bg = "reset", italic = true } marker_copied = { fg = "#a6e3a1", bg = "#a6e3a1" } marker_cut = { fg = "#f38ba8", bg = "#f38ba8" } marker_marked = { fg = "#94e2d5", bg = "#94e2d5" } -marker_selected = { fg = "#89b4fa", bg = "#89b4fa" } +marker_selected = { fg = "#f5c2e7", bg = "#f5c2e7" } count_copied = { fg = "#1e1e2e", bg = "#a6e3a1" } count_cut = { fg = "#1e1e2e", bg = "#f38ba8" } -count_selected = { fg = "#1e1e2e", bg = "#89b4fa" } +count_selected = { fg = "#1e1e2e", bg = "#f5c2e7" } border_symbol = "│" border_style = { fg = "#7f849c" } @@ -26,8 +26,8 @@ active = { fg = "#1e1e2e", bg = "#cdd6f4", bold = true } inactive = { fg = "#cdd6f4", bg = "#45475a" } [mode] -normal_main = { fg = "#1e1e2e", bg = "#89b4fa", bold = true } -normal_alt = { fg = "#89b4fa", bg = "#313244"} +normal_main = { fg = "#1e1e2e", bg = "#f5c2e7", bold = true } +normal_alt = { fg = "#f5c2e7", bg = "#313244"} select_main = { fg = "#1e1e2e", bg = "#a6e3a1", bold = true } select_alt = { fg = "#a6e3a1", bg = "#313244"} @@ -37,7 +37,7 @@ unset_alt = { fg = "#f2cdcd", bg = "#313244"} [indicator] parent = { fg = "#1e1e2e", bg = "#cdd6f4" } -current = { fg = "#1e1e2e", bg = "#89b4fa" } +current = { fg = "#1e1e2e", bg = "#f5c2e7" } preview = { fg = "#1e1e2e", bg = "#cdd6f4" } [status] @@ -55,29 +55,29 @@ perm_exec = { fg = "#a6e3a1" } perm_sep = { fg = "#7f849c" } [input] -border = { fg = "#89b4fa" } +border = { fg = "#f5c2e7" } title = {} value = {} selected = { reversed = true } [pick] -border = { fg = "#89b4fa" } +border = { fg = "#f5c2e7" } active = { fg = "#f5c2e7" } inactive = {} [confirm] -border = { fg = "#89b4fa" } -title = { fg = "#89b4fa" } +border = { fg = "#f5c2e7" } +title = { fg = "#f5c2e7" } body = {} list = {} btn_yes = { reversed = true } btn_no = {} [cmp] -border = { fg = "#89b4fa" } +border = { fg = "#f5c2e7" } [tasks] -border = { fg = "#89b4fa" } +border = { fg = "#f5c2e7" } title = {} hovered = { fg = "#f5c2e7", bold = true } @@ -126,13 +126,13 @@ rules = [ { url = "*/", is = "dummy", bg = "#f38ba8" }, # Fallback - { url = "*/", fg = "#89b4fa" }, + { url = "*/", fg = "#f5c2e7" }, ] [spot] -border = { fg = "#89b4fa" } -title = { fg = "#89b4fa" } -tbl_cell = { fg = "#89b4fa", reversed = true } +border = { fg = "#f5c2e7" } +title = { fg = "#f5c2e7" } +tbl_cell = { fg = "#f5c2e7", reversed = true } tbl_col = { bold = true } [icon]