diff options
Diffstat (limited to 'config/hypr')
| -rwxr-xr-x | config/hypr/UserScripts/WallpaperAutoChange.sh | 2 | ||||
| -rwxr-xr-x | config/hypr/UserScripts/WallpaperEffects.sh | 4 | ||||
| -rwxr-xr-x | config/hypr/UserScripts/WallpaperRandom.sh | 4 | ||||
| -rwxr-xr-x | config/hypr/UserScripts/WallpaperSelect.sh | 13 | ||||
| -rwxr-xr-x | config/hypr/UserScripts/WeatherWrap.sh | 6 | ||||
| -rw-r--r-- | config/hypr/configs/ENVariables.conf | 2 | ||||
| -rw-r--r-- | config/hypr/configs/SystemSettings.conf | 4 | ||||
| -rw-r--r-- | config/hypr/configs/WindowRules-config-v3.conf | 67 | ||||
| -rw-r--r-- | config/hypr/configs/WindowRules.conf | 68 | ||||
| -rw-r--r-- | config/hypr/hyprlock-1080p.conf | 9 | ||||
| -rw-r--r-- | config/hypr/hyprlock-2k.conf | 5 | ||||
| -rw-r--r-- | config/hypr/hyprlock.conf | 5 | ||||
| -rwxr-xr-x | config/hypr/scripts/ChangeLayout.sh | 2 | ||||
| -rwxr-xr-x | config/hypr/scripts/KeyHints.sh | 115 | ||||
| -rwxr-xr-x | config/hypr/scripts/LockScreen.sh | 2 | ||||
| -rwxr-xr-x | config/hypr/scripts/Polkit-Diag.sh | 521 | ||||
| -rwxr-xr-x | config/hypr/scripts/Polkit.sh | 16 | ||||
| -rwxr-xr-x | config/hypr/scripts/WallpaperDaemon.sh | 109 | ||||
| -rw-r--r-- | config/hypr/v2.3.23 | 5 |
19 files changed, 834 insertions, 125 deletions
diff --git a/config/hypr/UserScripts/WallpaperAutoChange.sh b/config/hypr/UserScripts/WallpaperAutoChange.sh index aa6cf89e..faec6335 100755 --- a/config/hypr/UserScripts/WallpaperAutoChange.sh +++ b/config/hypr/UserScripts/WallpaperAutoChange.sh @@ -27,7 +27,7 @@ if [[ $# -lt 1 ]] || [[ ! -d $1 ]]; then exit 1 fi -# Edit below to control the images transition +# Edit below to control the images transition (swww/awww) export SWWW_TRANSITION_FPS=60 export SWWW_TRANSITION_TYPE=simple diff --git a/config/hypr/UserScripts/WallpaperEffects.sh b/config/hypr/UserScripts/WallpaperEffects.sh index 57db3532..e1c8fe83 100755 --- a/config/hypr/UserScripts/WallpaperEffects.sh +++ b/config/hypr/UserScripts/WallpaperEffects.sh @@ -24,12 +24,12 @@ fi iDIR="$HOME/.config/swaync/images" iDIRi="$HOME/.config/swaync/icons" -# swww transition config (only when using swww) +# swww/awww transition config FPS=60 TYPE="wipe" DURATION=2 BEZIER=".43,1.19,1,.4" -if [[ "$WWW" == "swww" ]]; then +if [[ "$WWW" == "swww" || "$WWW" == "awww" ]]; then SWWW_PARAMS="--transition-fps $FPS --transition-type $TYPE --transition-duration $DURATION --transition-bezier $BEZIER" else SWWW_PARAMS="" diff --git a/config/hypr/UserScripts/WallpaperRandom.sh b/config/hypr/UserScripts/WallpaperRandom.sh index db8251f2..70f051f7 100755 --- a/config/hypr/UserScripts/WallpaperRandom.sh +++ b/config/hypr/UserScripts/WallpaperRandom.sh @@ -19,12 +19,12 @@ PICS=($(find -L "${wallDIR}" -type f \( -name "*.jpg" -o -name "*.jpeg" -o -name RANDOMPICS=${PICS[ $RANDOM % ${#PICS[@]} ]} -# Transition config (only when using swww) +# Transition config (swww/awww) FPS=30 TYPE="random" DURATION=1 BEZIER=".43,1.19,1,.4" -if [[ "$WWW_CMD" == "swww" ]]; then +if [[ "$WWW_CMD" == "swww" || "$WWW_CMD" == "awww" ]]; then SWWW_PARAMS="--transition-fps $FPS --transition-type $TYPE --transition-duration $DURATION --transition-bezier $BEZIER" else SWWW_PARAMS="" diff --git a/config/hypr/UserScripts/WallpaperSelect.sh b/config/hypr/UserScripts/WallpaperSelect.sh index 9dafdf57..31c7969a 100755 --- a/config/hypr/UserScripts/WallpaperSelect.sh +++ b/config/hypr/UserScripts/WallpaperSelect.sh @@ -21,17 +21,18 @@ wallpaper_link="$HOME/.config/rofi/.current_wallpaper" iDIR="$HOME/.config/swaync/images" iDIRi="$HOME/.config/swaync/icons" -# swww transition config (only when using swww) +# swww/awww transition config FPS=60 TYPE="any" DURATION=2 BEZIER=".43,1.19,1,.4" -if [[ "$WWW_CMD" == "swww" ]]; then +if [[ "$WWW_CMD" == "swww" || "$WWW_CMD" == "awww" ]]; then SWWW_PARAMS="--transition-fps $FPS --transition-type $TYPE --transition-duration $DURATION --transition-bezier $BEZIER" else SWWW_PARAMS="" fi + # Check if package bc exists if ! command -v bc &>/dev/null; then notify-send -i "$iDIR/error.png" "bc missing" "Install package bc first" @@ -42,6 +43,9 @@ fi rofi_theme="$HOME/.config/rofi/config-wallpaper.rasi" focused_monitor=$(hyprctl monitors -j | jq -r '.[] | select(.focused) | .name') +per_monitor_wallpaper_current="$HOME/.config/hypr/wallpaper_effects/.wallpaper_current_${focused_monitor}" +per_monitor_wallpaper_link="$HOME/.config/rofi/.current_wallpaper_${focused_monitor}" + # Ensure focused_monitor is detected if [[ -z "$focused_monitor" ]]; then notify-send -i "$iDIR/error.png" "E-R-R-O-R" "Could not detect focused monitor" @@ -175,6 +179,11 @@ apply_image_wallpaper() { } "$WWW_CMD" img -o "$focused_monitor" "$image_path" $SWWW_PARAMS + # Persist per-monitor wallpaper selection + mkdir -p "$(dirname "$per_monitor_wallpaper_current")" "$(dirname "$per_monitor_wallpaper_link")" + ln -sf "$image_path" "$per_monitor_wallpaper_link" || true + cp -f "$image_path" "$per_monitor_wallpaper_current" || true + # Run additional scripts (pass the image path to avoid cache race conditions) "$SCRIPTSDIR/WallustSwww.sh" "$image_path" sleep 2 diff --git a/config/hypr/UserScripts/WeatherWrap.sh b/config/hypr/UserScripts/WeatherWrap.sh index 1e15e4a6..a95bbd51 100755 --- a/config/hypr/UserScripts/WeatherWrap.sh +++ b/config/hypr/UserScripts/WeatherWrap.sh @@ -14,15 +14,15 @@ BASH_FALLBACK="$SCRIPT_DIR/Weather.sh" # Function to check network connectivity check_network() { # Try multiple methods to check network - if ping -c1 -W2 8.8.8.8 >/dev/null 2>&1; then + if ping -c1 -W1 8.8.8.8 >/dev/null 2>&1; then return 0 fi - if ping -c1 -W2 1.1.1.1 >/dev/null 2>&1; then + if ping -c1 -W1 1.1.1.1 >/dev/null 2>&1; then return 0 fi - if curl -s --connect-timeout 3 "https://ipinfo.io" >/dev/null 2>&1; then + if curl -s --connect-timeout 2 "https://ipinfo.io" >/dev/null 2>&1; then return 0 fi diff --git a/config/hypr/configs/ENVariables.conf b/config/hypr/configs/ENVariables.conf index fd7831b8..0226d053 100644 --- a/config/hypr/configs/ENVariables.conf +++ b/config/hypr/configs/ENVariables.conf @@ -10,7 +10,7 @@ # environment-variables # Current Version of KoolDots: -env = DOTS_VERSION,2.3.22 +env = DOTS_VERSION,2.3.23 ### Toolkit Backend Variables ### env = GDK_BACKEND,wayland,x11,* diff --git a/config/hypr/configs/SystemSettings.conf b/config/hypr/configs/SystemSettings.conf index 3d8122be..6621ffe2 100644 --- a/config/hypr/configs/SystemSettings.conf +++ b/config/hypr/configs/SystemSettings.conf @@ -14,8 +14,7 @@ $scriptsDir = $HOME/.config/hypr/scripts dwindle { - pseudotile = false - preserve_split = true + preserve_split = true smart_resizing = true use_active_for_splits = true smart_split = false @@ -115,7 +114,6 @@ gestures { misc { disable_hyprland_logo = true disable_splash_rendering = true - vfr = true vrr = 2 mouse_move_enables_dpms = true enable_swallow = off diff --git a/config/hypr/configs/WindowRules-config-v3.conf b/config/hypr/configs/WindowRules-config-v3.conf index 29d5c274..aab7d005 100644 --- a/config/hypr/configs/WindowRules-config-v3.conf +++ b/config/hypr/configs/WindowRules-config-v3.conf @@ -252,6 +252,17 @@ windowrule { center = on size = (monitor_w*0.6) (monitor_h*0.6) } +# Named rule for Shelly +windowrule { + name = Shelly + match:class = ^(com.shellyorg.shelly)$ + match:title = ^(Shelly)$ + match:initial_class = ^(com.shellyorg.shelly)$ + match:initial_title = ^(Shelly)$ + float = on + center = on + size = (monitor_w*0.6) (monitor_h*0.6) +} # Named rule for CachyOS Hello windowrule { @@ -401,3 +412,59 @@ windowrule { center = on size = (monitor_w*0.6) (monitor_h*0.6) } +# Named rule for hyprpwcenter audio control panel +windowrule { + name = hyprland audio panel + match:class = ^(hyprpwcenter)$ + match:initial_class = ^(hyprpwcenter)$ + float = on + center = on + size = (monitor_w*0.6) (monitor_h*0.6) +} +# Named rule for Garida Assistant +windowrule { + name = Garuda Assistant + match:class = ^(garuda-assistant)$ + match:title = ^(Garuda Assistant)$ + match:initial_class = ^(garuda-assistant)$ + match:initial_title = ^(Garuda Assistant)$ + float = on + center = on + size = (monitor_w*0.6) (monitor_h*0.6) +} + +# Named rule for HyprMod HL config GUI +windowrule { + name = HyprMod GUI + match:class = ^(com.github.hyprmod)$ + match:title = ^(HyprMod)$ + match:initial_class = ^(com.github.hyprmod)$ + match:initial_title = ^(HyprMod)$ + float = on + center = on + size = (monitor_w*0.7) (monitor_h*0.75) +} +# Named rule for easy effects +windowrule { + name = EasyEffects + match:class = ^(com.github.wwmm.easyeffects)$ + match:title = ^(Easy Effects)$ + match:initial_class = ^(com.github.wwmm.easyeffects)$ + match:initial_title = ^(Easy Effects)$ + float = on + center = on + size = (monitor_w*0.6) (monitor_h*0.65) +} +# Named rule for Mousam weather GUI +windowrule { + name = Mousam Weather + match:class = ^(io.github.amit9838.mousam)$ + match:title = ^(Mousam)$ + match:initial_class = ^(io.github.amit9838.mousam)$ + match:initial_title = ^(Mousam)$ + float = on + center = on + size = (monitor_w*0.7) (monitor_h*0.75) +} + + diff --git a/config/hypr/configs/WindowRules.conf b/config/hypr/configs/WindowRules.conf index 29d5c274..7082d64c 100644 --- a/config/hypr/configs/WindowRules.conf +++ b/config/hypr/configs/WindowRules.conf @@ -252,6 +252,17 @@ windowrule { center = on size = (monitor_w*0.6) (monitor_h*0.6) } +# Named rule for Shelly +windowrule { + name = Shelly + match:class = ^(com.shellyorg.shelly)$ + match:title = ^(Shelly)$ + match:initial_class = ^(com.shellyorg.shelly)$ + match:initial_title = ^(Shelly)$ + float = on + center = on + size = (monitor_w*0.6) (monitor_h*0.6) +} # Named rule for CachyOS Hello windowrule { @@ -401,3 +412,60 @@ windowrule { center = on size = (monitor_w*0.6) (monitor_h*0.6) } +# Named rule for hyprpwcenter audio control panel +windowrule { + name = hyprland audio panel + match:class = ^(hyprpwcenter)$ + match:initial_class = ^(hyprpwcenter)$ + float = on + center = on + size = (monitor_w*0.6) (monitor_h*0.6) +} +# Named rule for Garida Assistant +windowrule { + name = Garuda Assistant + match:class = ^(garuda-assistant)$ + match:title = ^(Garuda Assistant)$ + match:initial_class = ^(garuda-assistant)$ + match:initial_title = ^(Garuda Assistant)$ + float = on + center = on + size = (monitor_w*0.6) (monitor_h*0.6) +} + +# Named rule for HyprMod HL config GUI +windowrule { + name = HyprMod GUI + match:class = ^(com.github.hyprmod)$ + match:title = ^(HyprMod)$ + match:initial_class = ^(com.github.hyprmod)$ + match:initial_title = ^(HyprMod)$ + float = on + center = on + size = (monitor_w*0.7) (monitor_h*0.75) +} +# Named rule for easy effects +windowrule { + name = EasyEffects + match:class = ^(com.github.wwmm.easyeffects)$ + match:title = ^(Easy Effects)$ + match:initial_class = ^(com.github.wwmm.easyeffects)$ + match:initial_title = ^(Easy Effects)$ + float = on + center = on + size = (monitor_w*0.6) (monitor_h*0.65) +} + +# Named rule for Mousam weather GUI +windowrule { + name = Mousam Weather + match:class = ^(io.github.amit9838.mousam)$ + match:title = ^(Mousam)$ + match:initial_class = ^(io.github.amit9838.mousam)$ + match:initial_title = ^(Mousam)$ + float = on + center = on + size = (monitor_w*0.7) (monitor_h*0.75) +} + + diff --git a/config/hypr/hyprlock-1080p.conf b/config/hypr/hyprlock-1080p.conf index f36df9e4..b0a0279c 100644 --- a/config/hypr/hyprlock-1080p.conf +++ b/config/hypr/hyprlock-1080p.conf @@ -7,7 +7,6 @@ source = $HOME/.config/hypr/wallust/wallust-hyprland.conf $Scripts = $HOME/.config/hypr/scripts general { - grace = 1 fractional_scaling = 2 immediate_render = true } @@ -72,7 +71,7 @@ label { # } # Seconds-Time -#label { +# label { # monitor = ## text = cmd[update:1000] echo "$(date +"%S")" # text = cmd[update:1000] echo "$(date +"%S %p")" #AM/PM @@ -82,10 +81,10 @@ label { # position = 0, -350 # halign = center # valign = top -#} +# } # Put a picture of choice here. Default is the current wallpaper -#image { +# image { # monitor = # path = $HOME/.config/hypr/wallpaper_effects/.wallpaper_current # size = 160 @@ -97,7 +96,7 @@ label { # position = 0, 280 # halign = center # valign = bottom -} +# } # USER label { diff --git a/config/hypr/hyprlock-2k.conf b/config/hypr/hyprlock-2k.conf index 42d24d05..8c357d90 100644 --- a/config/hypr/hyprlock-2k.conf +++ b/config/hypr/hyprlock-2k.conf @@ -7,7 +7,6 @@ source = $HOME/.config/hypr/wallust/wallust-hyprland.conf $Scripts = $HOME/.config/hypr/scripts general { - grace = 1 fractional_scaling = 2 immediate_render = true } @@ -85,7 +84,7 @@ label { # } # Put a picture of choice here. Default is the current wallpaper -#image { +# image { # monitor = # #path = $HOME/.config/hypr/wallpaper_effects/.wallpaper_current # size = 160 @@ -97,7 +96,7 @@ label { # position = 0, 400 # halign = center # valign = bottom -#} +# } # USER label { diff --git a/config/hypr/hyprlock.conf b/config/hypr/hyprlock.conf index 42d24d05..8c357d90 100644 --- a/config/hypr/hyprlock.conf +++ b/config/hypr/hyprlock.conf @@ -7,7 +7,6 @@ source = $HOME/.config/hypr/wallust/wallust-hyprland.conf $Scripts = $HOME/.config/hypr/scripts general { - grace = 1 fractional_scaling = 2 immediate_render = true } @@ -85,7 +84,7 @@ label { # } # Put a picture of choice here. Default is the current wallpaper -#image { +# image { # monitor = # #path = $HOME/.config/hypr/wallpaper_effects/.wallpaper_current # size = 160 @@ -97,7 +96,7 @@ label { # position = 0, 400 # halign = center # valign = bottom -#} +# } # USER label { diff --git a/config/hypr/scripts/ChangeLayout.sh b/config/hypr/scripts/ChangeLayout.sh index f52d783f..f9f6b52b 100755 --- a/config/hypr/scripts/ChangeLayout.sh +++ b/config/hypr/scripts/ChangeLayout.sh @@ -38,7 +38,6 @@ set_layout() { hyprctl keyword unbind SUPER,up hyprctl keyword unbind SUPER,down hyprctl keyword unbind SUPER,O - hyprctl keyword unbind SUPER_SHIFT,M case "$target" in "dwindle") @@ -67,7 +66,6 @@ set_layout() { hyprctl keyword bind SUPER,up,layoutmsg,cycleprev hyprctl keyword bind SUPER,right,layoutmsg,cyclenext hyprctl keyword bind SUPER,down,layoutmsg,cyclenext - hyprctl keyword bind SUPER_SHIFT,M,layoutmsg,swapnext notify-send -e -u low -i "$notif" " Monocle Layout" ;; "master") diff --git a/config/hypr/scripts/KeyHints.sh b/config/hypr/scripts/KeyHints.sh index f00837d3..a9f6660a 100755 --- a/config/hypr/scripts/KeyHints.sh +++ b/config/hypr/scripts/KeyHints.sh @@ -10,69 +10,68 @@ BACKEND=wayland # Check if rofi or yad is running and kill them if they are -if pidof rofi > /dev/null; then +if pidof rofi >/dev/null; then pkill rofi fi -if pidof yad > /dev/null; then +if pidof yad >/dev/null; then pkill yad fi # Launch yad with calculated width and height GDK_BACKEND=$BACKEND yad \ - --center \ - --title="KooL Quick Cheat Sheet" \ - --no-buttons \ - --list \ - --column=Key: \ - --column=Description: \ - --column=Command: \ - --timeout-indicator=bottom \ -"ESC" "close this app" "" " = " "SUPER KEY (Windows Key Button)" "(SUPER KEY)" \ -" SHIFT K" "Searchable Keybinds" "(Search all Keybinds via rofi)" \ -" SHIFT E" "KooL Hyprland Settings Menu" "" \ -"" "" "" \ -" enter" "Terminal" "(kitty)" \ -" SHIFT enter" "DropDown Terminal" " Q to close" \ -" B" "Launch Browser" "(Default browser)" \ -" A" "Desktop Overview" "(AGS - if opted to install)" \ -" D" "Application Launcher" "(rofi-wayland)" \ -" E" "Open File Manager" "(Thunar)" \ -" S" "Google Search using rofi" "(rofi)" \ -" T" "Global theme switcher" "(rofi)" \ -" Q" "close active window" "(not kill)" \ -" Shift Q " "kills an active window" "(kill)" \ -" ALT mouse scroll up/down " "Desktop Zoom" "Desktop Magnifier" \ -" Alt V" "Clipboard Manager" "(cliphist)" \ -" W" "Choose wallpaper" "(Wallpaper Menu)" \ -" Shift W" "Choose wallpaper effects" "(imagemagick + awww)" \ -"CTRL ALT W" "Random wallpaper" "(via awww)" \ -" CTRL ALT B" "Hide/UnHide Waybar" "waybar" \ -" CTRL B" "Choose waybar styles" "(waybar styles)" \ -" ALT B" "Choose waybar layout" "(waybar layout)" \ -" ALT R" "Reload Waybar swaync Rofi" "CHECK NOTIFICATION FIRST!!!" \ -" SHIFT N" "Launch Notification Panel" "swaync Notification Center" \ -" Print" "screenshot" "(grim)" \ -" Shift Print" "screenshot region" "(grim + slurp)" \ -" Shift S" "screenshot region" "(swappy)" \ -" CTRL Print" "screenshot timer 5 secs " "(grim)" \ -" CTRL SHIFT Print" "screenshot timer 10 secs " "(grim)" \ -"ALT Print" "Screenshot active window" "active window only" \ -"CTRL ALT P" "power-menu" "(wlogout)" \ -"CTRL ALT L" "screen lock" "(hyprlock)" \ -"CTRL ALT Del" "Hyprland Exit" "(NOTE: Hyprland Will exit immediately)" \ -" SHIFT F" "Fullscreen" "Toggles to full screen" \ -" CTL F" "Fake Fullscreen" "Toggles to fake full screen" \ -" ALT L" "Toggle Dwindle | Master Layout" "Hyprland Layout" \ -" SPACEBAR" "Toggle float" "single window" \ -" ALT SPACEBAR" "Toggle all windows to float" "all windows" \ -" ALT O" "Toggle Blur" "normal or less blur" \ -" CTRL O" "Toggle Opaque ON or OFF" "on active window only" \ -" Shift A" "Animations Menu" "Choose Animations via rofi" \ -" CTRL R" "Rofi Themes Menu" "Choose Rofi Themes via rofi" \ -" CTRL Shift R" "Rofi Themes Menu v2" "Choose Rofi Themes via Theme Selector (modified)" \ -" SHIFT G" "Gamemode! All animations OFF or ON" "toggle" \ -" ALT E" "Rofi Emoticons" "Emoticon" \ -" H" "Launch this Quick Cheat Sheet" "" \ -"" "" "" \ -"More tips:" "https://github.com/LinuxBeginnings/Hyprland-Dots/wiki" ""\ + --center \ + --title="KooL Quick Cheat Sheet" \ + --no-buttons \ + --list \ + --column=Key: \ + --column=Description: \ + --column=Comment: \ + --timeout-indicator=bottom \ + "ESC" "close this app" "" " = " "SUPER KEY (Windows Key Button)" "(SUPER KEY)" \ + " SHIFT K" "Searchable Keybinds" "(Search all Keybinds via rofi)" \ + " SHIFT E" "KooL Hyprland Settings Menu" "WindowRules,themes,defaults, etc" \ + " enter" "Terminal" "(Default:kitty)" \ + " SHIFT enter" "DropDown Terminal" " Q to close" \ + " B" "Launch Browser" "(Default browser)" \ + " A" "Desktop Overview" "Shows open apps in workspaces" \ + " D" "Application Launcher" "(rofi-wayland)" \ + " E" "Open File Manager" "(Thunar)" \ + " S" "Google Search using rofi" "(rofi)" \ + " T" "Global theme switcher" "(rofi)" \ + " Q" "close active window" "(not kill)" \ + " Shift Q " "kills an active window" "(kill)" \ + " ALT mouse scroll up/down " "Desktop Zoom" "Desktop Magnifier" \ + " Alt V" "Clipboard Manager" "(cliphist)" \ + " W" "Choose wallpaper" "(Wallpaper Menu)" \ + " Shift W" "Choose wallpaper effects" "(imagemagick + awww)" \ + "CTRL ALT W" "Random wallpaper" "(via awww)" \ + " CTRL ALT B" "Hide/UnHide Waybar" "waybar" \ + " CTRL B" "Choose waybar styles" "(waybar styles)" \ + " ALT B" "Choose waybar layout" "(waybar layout)" \ + " ALT R" "Reload Waybar swaync Rofi" "CHECK NOTIFICATION FIRST!!!" \ + " SHIFT N" "Launch Notification Panel" "swaync Notification Center" \ + " Print" "screenshot" "(grim)" \ + " Shift Print" "screenshot region" "(grim + slurp)" \ + " Shift S" "screenshot region" "(swappy)" \ + " CTRL Print" "screenshot timer 5 secs " "(grim)" \ + " CTRL SHIFT Print" "screenshot timer 10 secs " "(grim)" \ + "ALT Print" "Screenshot active window" "active window only" \ + "CTRL ALT P" "power-menu" "(wlogout)" \ + "CTRL ALT L" "screen lock" "(hyprlock)" \ + "CTRL ALT Del" "Hyprland Exit" "(NOTE: Hyprland Will exit immediately)" \ + " SHIFT F" "Fullscreen" "Toggles to full screen" \ + " CTL F" "Fake Fullscreen" "Toggles to fake full screen" \ + " ALT L" "Toggle Dwindle|Floating|Monocle|Master layouts" "Hyprland Layouts" \ + " SPACEBAR" "Toggle float" "single window" \ + " ALT SPACEBAR" "Toggle all windows to float" "all windows" \ + " ALT O" "Toggle Blur" "normal or less blur" \ + " CTRL O" "Toggle Opaque ON or OFF" "on active window only" \ + " Shift A" "Animations Menu" "Choose Animations via rofi" \ + " CTRL R" "Rofi Themes Menu" "Choose Rofi Themes via rofi" \ + " CTRL Shift R" "Rofi Themes Menu v2" "Choose Rofi Themes via Theme Selector (modified)" \ + " SHIFT G" "Gamemode! All animations OFF or ON" "toggle" \ + " ALT E" "Rofi Emoticons" "Emoticon" \ + " H" "Launch this Quick Cheat Sheet" "" \ + "" "" "" \ + "More tips:" "https://github.com/LinuxBeginnings/Hyprland-Dots/wiki" "" diff --git a/config/hypr/scripts/LockScreen.sh b/config/hypr/scripts/LockScreen.sh index a7b27ad9..b795a8f7 100755 --- a/config/hypr/scripts/LockScreen.sh +++ b/config/hypr/scripts/LockScreen.sh @@ -10,7 +10,7 @@ #pidof hyprlock || hyprlock -q # Ensure weather cache is up-to-date before locking (Waybar/lockscreen readers) -bash "$HOME/.config/hypr/UserScripts/WeatherWrap.sh" >/dev/null 2>&1 +bash "$HOME/.config/hypr/UserScripts/WeatherWrap.sh" >/dev/null 2>&1 & loginctl lock-session diff --git a/config/hypr/scripts/Polkit-Diag.sh b/config/hypr/scripts/Polkit-Diag.sh new file mode 100755 index 00000000..0f32b640 --- /dev/null +++ b/config/hypr/scripts/Polkit-Diag.sh @@ -0,0 +1,521 @@ +#!/usr/bin/env bash +# ================================================== +# KoolDots (2026) +# Project URL: https://github.com/LinuxBeginnings +# License: GNU GPLv3 +# SPDX-License-Identifier: GPL-3.0-or-later +# ================================================== +# 💫 https://github.com/LinuxBeginnings 💫 # +# Polkit Diagnostic & Triage Script # + +# Default values +OUTFILE="$HOME/Downloads/Polkit-diag.txt" +DRY_RUN=0 +INSTALL_OVERRIDE=0 +FORCE_OVERRIDE=0 + +# Systemd override details for hyprpolkitagent +OVERRIDE_DIR="$HOME/.config/systemd/user/hyprpolkitagent.service.d" +OVERRIDE_FILE="$OVERRIDE_DIR/override.conf" + +OVERRIDE_CONTENT="[Unit] +After= +After=dbus.service graphical-session.target +PartOf=graphical-session.target + +[Install] +WantedBy=graphical-session.target" + +print_help() { + cat << EOF +Usage: $(basename "$0") [OPTIONS] +Gather diagnostic information for polkit issues and optionally apply a systemd override. +This script is modular and extensible for different Linux distributions. + +Options: + -h, --help Show this help message and exit + -d, --dry-run Run without making changes (output to stdout instead of file) + --install-override Install the systemd override for hyprpolkitagent if not already present + --force-override Overwrite the existing systemd override for hyprpolkitagent + -o, --output FILE Specify custom output file (default: $HOME/Downloads/Polkit-diag.txt) +EOF +} + +setup_output() { + if [[ $DRY_RUN -eq 1 ]]; then + echo "=================================================" + echo " [Dry Run] Diagnostics will be printed to stdout." + echo "=================================================" + exec 3>&1 + else + local outdir + outdir=$(dirname "$OUTFILE") + + # Check and create directory if it doesn't exist + if [[ ! -d "$outdir" ]]; then + echo "Directory $outdir does not exist. Creating..." + mkdir -p "$outdir" + fi + + # Backup existing file + if [[ -f "$OUTFILE" ]]; then + local backup_file="${OUTFILE}.bak.$(date +%Y%m%d%H%M%S)" + echo "Existing output file found. Backing up to: $backup_file" + mv "$OUTFILE" "$backup_file" + fi + + echo "Diagnostics will be saved to: $OUTFILE" + exec 3> "$OUTFILE" + fi +} + +apply_override() { + if [[ $INSTALL_OVERRIDE -eq 1 ]]; then + local msg="\n=== Systemd Override for hyprpolkitagent ===" + [[ $DRY_RUN -eq 0 ]] && echo -e "$msg" >&3 + echo -e "$msg" + + local out + if systemctl --user is-enabled hyprpolkitagent.service >/dev/null 2>&1; then + msg="[STATUS] hyprpolkitagent.service is currently enabled." + else + msg="[STATUS] hyprpolkitagent.service is NOT enabled. You may need to enable it." + fi + [[ $DRY_RUN -eq 0 ]] && echo "$msg" >&3 + echo "$msg" + + if [[ -f "$OVERRIDE_FILE" && $FORCE_OVERRIDE -eq 0 ]]; then + msg="[INFO] Override already exists at $OVERRIDE_FILE." + [[ $DRY_RUN -eq 0 ]] && echo "$msg" >&3; echo "$msg" + msg="[ACTION] Use --force-override to overwrite it." + [[ $DRY_RUN -eq 0 ]] && echo "$msg" >&3; echo "$msg" + else + if [[ -f "$OVERRIDE_FILE" && $FORCE_OVERRIDE -eq 1 ]]; then + msg="[CONFIRM] Force override requested. Overwriting existing override..." + [[ $DRY_RUN -eq 0 ]] && echo "$msg" >&3; echo "$msg" + fi + + msg="[ACTION] Installing override to $OVERRIDE_FILE..." + [[ $DRY_RUN -eq 0 ]] && echo "$msg" >&3; echo "$msg" + + if [[ $DRY_RUN -eq 0 ]]; then + # Capture dir creation + if out=$(mkdir -p "$OVERRIDE_DIR" 2>&1); then + msg=" [OK] Created/verified directory $OVERRIDE_DIR." + else + msg=" [ERROR] Failed to create directory $OVERRIDE_DIR.\n Details: $out" + fi + echo -e "$msg" >&3; echo -e "$msg" + + # Capture file write + if out=$(echo "$OVERRIDE_CONTENT" > "$OVERRIDE_FILE" 2>&1); then + msg=" [OK] Successfully wrote override file." + else + msg=" [ERROR] Failed to write override file.\n Details: $out" + fi + echo -e "$msg" >&3; echo -e "$msg" + + # Capture daemon-reload + if out=$(systemctl --user daemon-reload 2>&1); then + msg=" [OK] Systemd daemon reloaded." + else + msg=" [ERROR] Failed to reload systemd daemon.\n Details: $out" + fi + echo -e "$msg" >&3; echo -e "$msg" + + # Capture restart + if systemctl --user is-active --quiet hyprpolkitagent.service; then + msg="[ACTION] Restarting hyprpolkitagent.service..." + [[ $DRY_RUN -eq 0 ]] && echo "$msg" >&3; echo "$msg" + + if out=$(systemctl --user restart hyprpolkitagent.service 2>&1); then + msg=" [OK] Service restarted successfully." + else + msg=" [ERROR] Failed to restart service.\n Details: $out" + fi + echo -e "$msg" >&3; echo -e "$msg" + else + msg="[INFO] Service is not currently active, skipping restart step." + [[ $DRY_RUN -eq 0 ]] && echo "$msg" >&3; echo "$msg" + fi + else + msg="[Dry Run] Would create $OVERRIDE_FILE and reload systemd daemon." + echo "$msg" + fi + fi + fi +} + +gather_general_info() { + echo -e "\n=======================================" >&3 + echo -e " General System Information" >&3 + echo -e "=======================================" >&3 + echo "Date: $(date)" >&3 + echo -e "\n--- Kernel ---" >&3 + uname -a >&3 + + echo -e "\n--- OS Release ---" >&3 + cat /etc/os-release >&3 + + echo -e "\n=======================================" >&3 + echo -e " Polkit Service Status" >&3 + echo -e "=======================================" >&3 + + echo -e "\n--- System Polkit Service ---" >&3 + systemctl status polkit.service --no-pager >&3 2>&1 || true + + echo -e "\n--- User Hyprpolkitagent Service ---" >&3 + systemctl --user status hyprpolkitagent.service --no-pager >&3 2>&1 || true + + echo -e "\n--- Running Polkit Processes ---" >&3 + local polkit_procs + polkit_procs=$(ps aux | grep -i '[p]olkit') + if [[ -n "$polkit_procs" ]]; then + echo "$polkit_procs" >&3 + + # Check for conflicting agents + local kde_agent_running=0 + local gnome_agent_running=0 + local hypr_agent_running=0 + + if echo "$polkit_procs" | grep -q "polkit-kde-authentication-agent-1"; then + kde_agent_running=1 + fi + if echo "$polkit_procs" | grep -q "polkit-gnome-authentication-agent-1"; then + gnome_agent_running=1 + fi + if echo "$polkit_procs" | grep -q "hyprpolkitagent"; then + hypr_agent_running=1 + fi + + if [[ $hypr_agent_running -eq 1 && ($kde_agent_running -eq 1 || $gnome_agent_running -eq 1) ]]; then + echo -e "\n[!] CONFLICT DETECTED: Multiple polkit agents are running!" >&3 + echo " Hyprpolkitagent is running alongside another desktop environment's agent." >&3 + echo " Only ONE polkit agent can be registered at a time." >&3 + if [[ $kde_agent_running -eq 1 ]]; then + echo " -> Found KDE polkit agent. You may need to disable it in Hyprland by adding 'NotShowIn=Hyprland;' to its autostart .desktop file." >&3 + fi + if [[ $gnome_agent_running -eq 1 ]]; then + echo " -> Found GNOME polkit agent. You may need to disable it in Hyprland." >&3 + fi + elif [[ $kde_agent_running -eq 1 && $hypr_agent_running -eq 0 ]]; then + echo -e "\n[!] WARNING: KDE polkit agent is running instead of hyprpolkitagent." >&3 + echo " This can cause 'authentication agent already exists' errors if hyprpolkitagent tries to start later." >&3 + fi + else + echo "No polkit processes found running." >&3 + fi + + echo -e "\n=======================================" >&3 + echo -e " Recent Logs" >&3 + echo -e "=======================================" >&3 + + echo -e "\n--- Journalctl (polkit.service) [Last 50 entries, warnings/errors] ---" >&3 + journalctl -u polkit.service -n 50 --no-pager -p 4 >&3 2>&1 || echo "Could not fetch system polkit logs." >&3 + + echo -e "\n--- Journalctl (hyprpolkitagent.service) [Last 50 entries] ---" >&3 + journalctl --user -u hyprpolkitagent.service -n 50 --no-pager >&3 2>&1 || echo "Could not fetch user hyprpolkitagent logs." >&3 +} + +# --- Modular Package Checking System --- +check_packages() { + local check_cmd="$1" + local install_msg="$2" + shift 2 + local pkgs=("$@") + + local missing_pkgs=() + for pkg in "${pkgs[@]}"; do + local out + if out=$(eval "$check_cmd \"$pkg\"" 2>/dev/null); then + # Print the first line of output as the installed info + echo "[INSTALLED] $(echo "$out" | head -n 1)" >&3 + else + echo "[MISSING] $pkg" >&3 + missing_pkgs+=("$pkg") + fi + done + + if [[ ${#missing_pkgs[@]} -gt 0 ]]; then + echo -e "\nWARNING: The following packages are missing:" >&3 + for mpkg in "${missing_pkgs[@]}"; do + echo " - $mpkg" >&3 + done + echo "$install_msg ${missing_pkgs[*]}" >&3 + return 1 + fi + return 0 +} +check_source_binaries() { + local bin_dir="$1" + shift + local bins=("$@") + local found_any=0 + + echo -e "\n--- Source Builds (${bin_dir}) ---" >&3 + for bin in "${bins[@]}"; do + if [[ -x "${bin_dir}/${bin}" ]]; then + echo "[SOURCE] ${bin_dir}/${bin}" >&3 + found_any=1 + else + echo "[MISSING] ${bin_dir}/${bin}" >&3 + fi + done + + return $found_any +} + +gather_arch_info() { + echo -e "\n=======================================" >&3 + echo -e " Package Info (Arch Linux)" >&3 + echo -e "=======================================" >&3 + + # Essential packages required for polkit & related UI + local pkgs=( + "qt5-declarative" + "qt5-quickcontrols2" + "qt6-declarative" + "hyprpolkitagent" + "polkit" + ) + + local aur_pkgs=( + "xfce-polkit" + ) + + local missing_any=0 + + echo -e "\n--- Official Repositories ---" >&3 + check_packages "pacman -Q" "Install official packages by running: sudo pacman -S" "${pkgs[@]}" || missing_any=1 + + echo -e "\n--- AUR ---" >&3 + check_packages "pacman -Q" "Install AUR packages by running: yay -S" "${aur_pkgs[@]}" || missing_any=1 + + if [[ $missing_any -eq 0 ]]; then + echo -e "\nSUCCESS: All expected packages are installed." >&3 + fi +} +gather_ubuntu_info() { + echo -e "\n=======================================" >&3 + echo -e " Package Info (Ubuntu/PPA)" >&3 + echo -e "=======================================" >&3 + + # Essential packages required for polkit & related UI + local pkgs=( + "qml-module-qtqml" + "qml-module-qtquick2" + "qml-module-qtquick-controls" + "qml-module-qtquick-controls2" + "qml-module-qtquick-layouts" + "qml6-module-qtqml" + "qml6-module-qtquick" + "qml6-module-qtquick-controls" + "hyprpolkitagent" + "polkit" + ) + + local extra_pkgs=( + "xfce-polkit" + "polkit-kde-agent-1" + "mate-polkit" + ) + + local missing_any=0 + + echo -e "\n--- Official Repositories / PPA ---" >&3 + check_packages "dpkg -s" "Install packages by running: sudo apt install" "${pkgs[@]}" || missing_any=1 + + echo -e "\n--- Extra/Alternative ---" >&3 + check_packages "dpkg -s" "Install extra packages by running: sudo apt install" "${extra_pkgs[@]}" || missing_any=1 + echo "[INFO] lxqt-polkit (optional) — large dependency set." >&3 + + if [[ $missing_any -eq 0 ]]; then + echo -e "\nSUCCESS: All expected packages are installed." >&3 + fi +} +gather_debian_info() { + echo -e "\n=======================================" >&3 + echo -e " Package Info (Debian/Ubuntu)" >&3 + echo -e "=======================================" >&3 + + local source_bins=( + "hyprpolkitagent" + ) + + local source_found=0 + if check_source_binaries "/usr/local/bin" "${source_bins[@]}"; then + source_found=1 + fi + + # Essential packages required for polkit & related UI + local pkgs=( + "qml-module-qtqml" + "qml-module-qtquick2" + "qml-module-qtquick-controls" + "qml-module-qtquick-controls2" + "qml-module-qtquick-layouts" + "qml6-module-qtqml" + "qml6-module-qtquick" + "qml6-module-qtquick-controls" + "polkit" + ) + + local extra_pkgs=( + "xfce4-polkit" + "lxqt-policykit" + "polkit-kde-agent-1" + "mate-polkit" + ) + + local missing_any=0 + + echo -e "\n--- Official Repositories ---" >&3 + if [[ $source_found -eq 0 ]]; then + pkgs+=("hyprpolkitagent") + else + echo "[INFO] hyprpolkitagent found in /usr/local/bin (source build). Skipping dpkg check for it." >&3 + fi + check_packages "dpkg -s" "Install packages by running: sudo apt install" "${pkgs[@]}" || missing_any=1 + + echo -e "\n--- Extra/Alternative ---" >&3 + check_packages "dpkg -s" "Install extra packages by running: sudo apt install" "${extra_pkgs[@]}" || missing_any=1 + + if [[ $missing_any -eq 0 ]]; then + echo -e "\nSUCCESS: All expected packages are installed." >&3 + fi +} + +gather_fedora_info() { + echo -e "\n=======================================" >&3 + echo -e " Package Info (Fedora)" >&3 + echo -e "=======================================" >&3 + + # Essential packages required for polkit & related UI + local pkgs=( + "qt5-qtdeclarative" + "qt5-qtquickcontrols2" + "qt6-qtdeclarative" + "hyprpolkitagent" + "polkit" + ) + + local extra_pkgs=( + "xfce-polkit" + ) + + local missing_any=0 + + echo -e "\n--- Official Repositories ---" >&3 + check_packages "rpm -q" "Install packages by running: sudo dnf install" "${pkgs[@]}" || missing_any=1 + + echo -e "\n--- Extra/Alternative ---" >&3 + check_packages "rpm -q" "Install extra packages by running: sudo dnf install" "${extra_pkgs[@]}" || missing_any=1 + + if [[ $missing_any -eq 0 ]]; then + echo -e "\nSUCCESS: All expected packages are installed." >&3 + fi +} + +detect_os() { + if [ -f /etc/os-release ]; then + . /etc/os-release + OS=$ID + else + OS="unknown" + fi +} + +# ---------------------------------------------------------------------------- +# Main Execution +# ---------------------------------------------------------------------------- + +# Parse arguments +while [[ "$#" -gt 0 ]]; do + case "$1" in + -h|--help) + print_help + exit 0 + ;; + -d|--dry-run) + DRY_RUN=1 + ;; + --install-override) + INSTALL_OVERRIDE=1 + ;; + --force-override) + FORCE_OVERRIDE=1 + INSTALL_OVERRIDE=1 + ;; + -o|--output) + if [[ -n "$2" && "$2" != -* ]]; then + OUTFILE="$2" + shift + else + echo "Error: Argument for $1 is missing" >&2 + exit 1 + fi + ;; + *) + echo "Unknown option: $1" >&2 + print_help + exit 1 + ;; + esac + shift +done + +setup_output + +echo "Starting Polkit Diagnostic Script..." >&3 + +# Optional apply override logic +if [[ $INSTALL_OVERRIDE -eq 1 ]]; then + apply_override +fi + +# Gather general info +gather_general_info + +# Gather OS-specific package info +detect_os +case "$OS" in + arch|artix|manjaro|endeavouros|cachyos) + gather_arch_info + ;; + debian) + gather_debian_info + ;; + ubuntu|pop|linuxmint) + gather_ubuntu_info + ;; + fedora) + gather_fedora_info + ;; + opensuse*) + echo -e "\n=======================================" >&3 + echo -e " Package Info ($OS)" >&3 + echo -e "=======================================" >&3 + echo "OpenSUSE package check is pending implementation." >&3 + ;; + nixos) + echo -e "\n=======================================" >&3 + echo -e " Package Info ($OS)" >&3 + echo -e "=======================================" >&3 + echo "NixOS configuration check is pending implementation." >&3 + ;; + *) + echo -e "\n=======================================" >&3 + echo -e " Package Info" >&3 + echo -e "=======================================" >&3 + echo "Unknown or unsupported OS: $OS. Skipping package checks." >&3 + ;; +esac + +echo -e "\nDiagnostics completed at $(date)" >&3 + +if [[ $DRY_RUN -eq 0 ]]; then + echo "=================================================" + echo " Diagnostic gathering complete!" + echo " Please review the output file: $OUTFILE" + echo "=================================================" +fi diff --git a/config/hypr/scripts/Polkit.sh b/config/hypr/scripts/Polkit.sh index 768747ab..f09c9e1f 100755 --- a/config/hypr/scripts/Polkit.sh +++ b/config/hypr/scripts/Polkit.sh @@ -21,12 +21,23 @@ fi if [ -z "${QT_QUICK_CONTROLS_STYLE:-}" ]; then export QT_QUICK_CONTROLS_STYLE=Basic fi -if [ -z "${QT_STYLE_OVERRIDE:-}" ]; then + +# Check if kvantum is specified globally but the QML module is missing +if [[ "${QT_STYLE_OVERRIDE:-}" == "kvantum" ]] || [[ "${QT_STYLE_OVERRIDE:-}" == "kvantum-dark" ]]; then + # Check common Qt5/Qt6 QML directories for the Kvantum module + if ! find /usr/lib /usr/lib64 /usr/share -type d -path "*/qml/*/kvantum" -print -quit 2>/dev/null | grep -q .; then + echo "Kvantum QML module not found. Overriding QT_STYLE_OVERRIDE for Polkit to prevent crash." + export QT_STYLE_OVERRIDE=Fusion + fi +elif [ -z "${QT_STYLE_OVERRIDE:-}" ]; then export QT_STYLE_OVERRIDE=Fusion fi # List of potential Polkit agent file paths (preferred order) polkit=( + "/usr/libexec/hyprpolkitagent" + "/usr/lib/hyprpolkitagent" + "/usr/lib/hyprpolkitagent/hyprpolkitagent" "/usr/bin/xfce-polkit" "/usr/lib/xfce4/polkit-agent/xfce-polkit" "/usr/libexec/xfce-polkit" @@ -39,9 +50,6 @@ polkit=( "/usr/lib/policykit-1-gnome/polkit-gnome-authentication-agent-1" "/usr/lib/polkit-kde-authentication-agent-1" "/usr/libexec/polkit-kde-authentication-agent-1" - "/usr/libexec/hyprpolkitagent" - "/usr/lib/hyprpolkitagent" - "/usr/lib/hyprpolkitagent/hyprpolkitagent" ) executed=false diff --git a/config/hypr/scripts/WallpaperDaemon.sh b/config/hypr/scripts/WallpaperDaemon.sh index fc7f71c0..4d1c6e86 100755 --- a/config/hypr/scripts/WallpaperDaemon.sh +++ b/config/hypr/scripts/WallpaperDaemon.sh @@ -23,44 +23,83 @@ done wallpaper_link="$HOME/.config/rofi/.current_wallpaper" wallpaper_current="$HOME/.config/hypr/wallpaper_effects/.wallpaper_current" -wallpaper_path="" -# Prefer the symlink target if it's valid -if [ -L "$wallpaper_link" ]; then - resolved="$(readlink -f "$wallpaper_link")" - if [ -n "$resolved" ] && [ -f "$resolved" ]; then - wallpaper_path="$resolved" +read_cached_wallpaper() { + local cache_file="$1" + [ -f "$cache_file" ] || return 1 + awk 'NF && $0 !~ /^filter/ {print; exit}' "$cache_file" +} + +get_monitors() { + if command -v jq >/dev/null 2>&1; then + hyprctl monitors -j | jq -r '.[].name' + else + hyprctl monitors | awk '/^Monitor/{print $2}' fi -fi +} -# Fall back to link file or copied current wallpaper -if [ -z "$wallpaper_path" ] && [ -f "$wallpaper_link" ]; then - wallpaper_path="$wallpaper_link" -fi -if [ -z "$wallpaper_path" ] && [ -f "$wallpaper_current" ]; then - wallpaper_path="$wallpaper_current" -fi +apply_wallpaper_for_monitor() { + local monitor="$1" + local per_monitor_link="$HOME/.config/rofi/.current_wallpaper_${monitor}" + local per_monitor_current="$HOME/.config/hypr/wallpaper_effects/.wallpaper_current_${monitor}" + local wallpaper_path="" -# Last resort: use cached swww/awww wallpaper paths -if [ -z "$wallpaper_path" ]; then - for cache_dir in "$HOME/.cache/awww" "$HOME/.cache/swww"; do - [ -d "$cache_dir" ] || continue - for cache_file in "$cache_dir"/*; do - [ -f "$cache_file" ] || continue - candidate="$(awk 'NF && $0 !~ /^filter/ {print; exit}' "$cache_file")" - if [ -n "$candidate" ] && [ -f "$candidate" ]; then - wallpaper_path="$candidate" - break - fi - done - [ -n "$wallpaper_path" ] && break - done -fi + # Prefer per-monitor symlink target if valid + if [ -L "$per_monitor_link" ]; then + local resolved + resolved="$(readlink -f "$per_monitor_link")" + if [ -n "$resolved" ] && [ -f "$resolved" ]; then + wallpaper_path="$resolved" + fi + fi -if [ -n "$wallpaper_path" ] && [ -f "$wallpaper_path" ]; then - if ! "$WWW_CMD" img "$wallpaper_path" >/dev/null 2>&1; then - # Retry once after a short delay - sleep 0.3 - "$WWW_CMD" img "$wallpaper_path" >/dev/null 2>&1 & + # Fall back to per-monitor files + if [ -z "$wallpaper_path" ] && [ -f "$per_monitor_link" ]; then + wallpaper_path="$per_monitor_link" fi -fi + if [ -z "$wallpaper_path" ] && [ -f "$per_monitor_current" ]; then + wallpaper_path="$per_monitor_current" + fi + + # Fall back to global files + if [ -z "$wallpaper_path" ] && [ -L "$wallpaper_link" ]; then + local resolved_global + resolved_global="$(readlink -f "$wallpaper_link")" + if [ -n "$resolved_global" ] && [ -f "$resolved_global" ]; then + wallpaper_path="$resolved_global" + fi + fi + if [ -z "$wallpaper_path" ] && [ -f "$wallpaper_link" ]; then + wallpaper_path="$wallpaper_link" + fi + if [ -z "$wallpaper_path" ] && [ -f "$wallpaper_current" ]; then + wallpaper_path="$wallpaper_current" + fi + + # Last resort: use per-monitor cache + if [ -z "$wallpaper_path" ]; then + local cache_file="$WWW_CACHE_DIR/$monitor" + local cache_fallback="" + if [ "$WWW_CACHE_DIR" = "$HOME/.cache/awww" ]; then + cache_fallback="$HOME/.cache/swww/$monitor" + else + cache_fallback="$HOME/.cache/awww/$monitor" + fi + wallpaper_path="$(read_cached_wallpaper "$cache_file")" + if [ -z "$wallpaper_path" ] && [ -n "$cache_fallback" ]; then + wallpaper_path="$(read_cached_wallpaper "$cache_fallback")" + fi + fi + + if [ -n "$wallpaper_path" ] && [ -f "$wallpaper_path" ]; then + if ! "$WWW_CMD" img -o "$monitor" "$wallpaper_path" >/dev/null 2>&1; then + sleep 0.3 + "$WWW_CMD" img -o "$monitor" "$wallpaper_path" >/dev/null 2>&1 & + fi + fi +} + +while read -r monitor; do + [ -n "$monitor" ] || continue + apply_wallpaper_for_monitor "$monitor" +done < <(get_monitors) diff --git a/config/hypr/v2.3.23 b/config/hypr/v2.3.23 new file mode 100644 index 00000000..51de9972 --- /dev/null +++ b/config/hypr/v2.3.23 @@ -0,0 +1,5 @@ +### https://github.com/LinuxBeginnings ### +## https://github.com/LinuxBeginnings/Hyprland-Dots +## This is to have a reference of which version would be + +## note that this will always be higher than the released versions
\ No newline at end of file |
