From 44ce230e970ddc36095f8be167d1fa1c2f203541 Mon Sep 17 00:00:00 2001 From: Donald Williams <129223418+dwilliam62@users.noreply.github.com> Date: Thu, 30 Apr 2026 03:25:07 -0400 Subject: Development merge to main (#50) On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/configs/Keybinds.conf new file: config/hypr/scripts/rofi-ssh-menu.sh * Fixed duplicate keybind On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: Keybinds.conf * Added script to disable cpu turbo and set power settings CPU turbo will often spin up the fan, leave it high the slowly drop the fan speed. Very noisy. 11th/12th gen notorious for this Should be added to User Startup as needed On branch development Your branch is up to date with 'origin/development'. Changes to be committed: new file: config/hypr/scripts/disable.cpu.turbo.sh * Updated dev branch version to v2.3.23 * Really updated the version this time * Updated waybar style sheets to use `font-size: 14px` vs. `font-size: 99%` (#43) * Trying to scale waybar * Updating waybar sizing to support waybar 14+ font-size: 99% is no longer supported On branch LUA-conversion Your branch is up to date with 'origin/LUA-conversion'. Changes to be committed: modified: config/waybar/style/0-VERTICAL-Catpuccin-Mocha.css modified: config/waybar/style/0-VERTICAL-Golden-Noir.css modified: config/waybar/style/0-VERTICAL-Oglo-Chicklets.css modified: config/waybar/style/Black-&-White-Monochrome.css modified: config/waybar/style/Catppuccin-Frappe.css modified: config/waybar/style/Catppuccin-Latte.css modified: config/waybar/style/Catppuccin-Mocha.css modified: config/waybar/style/Colored-Chroma-Glow.css modified: config/waybar/style/Colored-Translucent.css modified: config/waybar/style/Colorful-Aurora-Blossom.css modified: config/waybar/style/Colorful-Aurora.css modified: config/waybar/style/Colorful-Oglo-Chicklets.css modified: config/waybar/style/Colorful-Rainbow-Spectrum.css modified: config/waybar/style/Colorful-stolen-style.css modified: config/waybar/style/Crystal-Clear-Glass.css modified: config/waybar/style/Dark-Golden-Eclipse.css modified: config/waybar/style/Dark-Golden-Noir.css modified: config/waybar/style/Dark-Half-Moon.css modified: config/waybar/style/Dark-Latte-Wallust-combined-v2.css modified: config/waybar/style/Dark-Latte-Wallust-combined.css modified: config/waybar/style/Dark-Purpl.css modified: config/waybar/style/Dark-Wallust-Obsidian-Edge.css modified: config/waybar/style/Extra-Arrow.css modified: config/waybar/style/Extra-Crimson.css modified: config/waybar/style/Extra-EverForest.css modified: config/waybar/style/Extra-ML4W-starter.css modified: config/waybar/style/Extra-Mauve.css modified: config/waybar/style/Extra-Modern-Combined-Transparent.css modified: config/waybar/style/Extra-Modern-Combined.css modified: config/waybar/style/Extra-Neon-Circuit.css modified: config/waybar/style/Extra-Prismatic-Glow.css modified: config/waybar/style/Extra-Rose-Pine.css modified: config/waybar/style/Extra-Simple-Pink.css modified: config/waybar/style/Light-Monochrome-Contrast.css modified: config/waybar/style/Light-Obsidian-Glow.css modified: config/waybar/style/ML4W-Glass-3d.css modified: config/waybar/style/ML4W-Glass.css modified: config/waybar/style/Rainbow-RGB-Bordered.css modified: config/waybar/style/Retro-Simple-Style.css modified: config/waybar/style/Transparent-Crystal-Clear.css modified: config/waybar/style/VERTICAL-Catpuccin-Mocha.css modified: config/waybar/style/Wallust-Bordered-Chroma-Fusion-Edge.css modified: config/waybar/style/Wallust-Bordered-Chroma-Simple.css modified: config/waybar/style/Wallust-Box-type.css modified: config/waybar/style/Wallust-Chroma-Edge.css modified: config/waybar/style/Wallust-Chroma-Fusion.css modified: config/waybar/style/Wallust-Chroma-Tally-V2.css modified: config/waybar/style/Wallust-Chroma-Tally.css modified: config/waybar/style/Wallust-Colored.css modified: config/waybar/style/Wallust-ML4W-modern-mixed.css modified: config/waybar/style/Wallust-ML4W-modern.css modified: config/waybar/style/Wallust-Simple.css modified: config/waybar/style/Wallust-Transparent-Crystal-Clear.css * Added Window Rule for hyprwcenter Hyprland built audio control panel On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: WindowRules-config-v3.conf modified: WindowRules.conf * Fixed rule for hyprpwcenter On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: WindowRules-config-v3.conf modified: WindowRules.conf * Added WindowRule for shelly app and waybar icon On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/configs/WindowRules.conf modified: config/waybar/ModulesWorkspaces * Udpated reference WindowRules-v3 * Removing Jakoolit references On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: 0-shared-fonts.rasi modified: config.rasi * Added support for awww transition effects On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/UserScripts/WallpaperAutoChange.sh modified: config/hypr/UserScripts/WallpaperEffects.sh modified: config/hypr/UserScripts/WallpaperRandom.sh modified: config/hypr/UserScripts/WallpaperSelect.sh * Fixed wallpaper per monitor restore failed On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md modified: config/hypr/UserScripts/WallpaperSelect.sh modified: config/hypr/scripts/WallpaperDaemon.sh * Fixed WallpaperSelect to create restore file per monitor On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/UserScripts/WallpaperSelect.sh * Added Garuda assistant WindowRule * Adj: Setting for hyprpolkitagent startup Now setting depdendencies to after graphical target and part of graphical target On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/systemd/user/hyprpolkitagent.service.d/override.conf * Updated WindowRules added HyprMod GUI rule On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/configs/WindowRules-config-v3.conf modified: config/hypr/configs/WindowRules.conf * Added icon for HyprMod in ModulesWorkspaces On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/waybar/ModulesWorkspaces * Added window rule for easy effects * Added musical note icon for easy effects * Added doc on how to fix ventoyGUI not starting * Added doc on HOW to fix Ventoy GUI On branch development Your branch is ahead of 'origin/development' by 1 commit. (use "git push" to publish your local commits) Changes to be committed: modified: docs/HOWTO-fix-ventoy-GUI.md * Fixed: Hyprlock grace and parser errors On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md modified: config/hypr/hyprlock-1080p.conf modified: config/hypr/hyprlock-2k.conf modified: config/hypr/hyprlock.conf * Updated hints.sh for new layouts * Fixing KeyHints.sh * Updated keyhints.sh removed extra row and text cleanup * Creating workaround to polkit crash on missing QML * Changed error to note on fresh install when bkup dir not there * Fixed hang issue with lockscreen and WeatherWrap the weather cache check now runs in the background Shortend curl and ping timeouts in network connectivity check On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md modified: config/hypr/UserScripts/WeatherWrap.sh modified: config/hypr/scripts/LockScreen.sh * Added script to triage polkit issues Phase 1 Just supports Arch Assuming this works will add support for the other distros Current issue seems to be affect Arch the most On branch development Your branch is up to date with 'origin/development'. Changes to be committed: new file: config/hypr/scripts/Polkit-Diag.sh * Removed bad pkg name On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/Polkit-Diag.sh * Fixing diag script to check xfce-polkit from AUR On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/Polkit-Diag.sh * Added confirmation / status for --install-override On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/Polkit-Diag.sh * Fixing polkit (again) changed order so hyprtoolkit 1st On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/Polkit.sh * Fixed Wallust-Chroma-Edge.css had \tcolor * Fixed \tcolor changed to spaces + color Fixes waybar crashing On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/waybar/style/Extra-Modern-Combined-Transparent.css modified: config/waybar/style/Extra-Modern-Combined.css * Added Fedora to the Polkit-Diag script On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/Polkit-Diag.sh * Added debian/ubuntu to Polkit-Diag On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/Polkit-Diag.sh * Fixed pkg name and made lxqt-polkit optional If installed it brings in many packages to support it On branch development Your branch is ahead of 'origin/development' by 1 commit. (use "git push" to publish your local commits) Changes to be committed: modified: config/hypr/scripts/Polkit-Diag.sh * Added check for kde-polkit & conflicting kits On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/Polkit-Diag.sh * Added icon for vswaybar-studio On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/waybar/ModulesWorkspaces * waybar: Add icon for hyprland polkit * Updated min version supported msg to 0.54.x * waybar: timeshift icon for waybar * waybar: btrfs-assistant icon * OverViewToggle.sh was check for quickshell not qs - Found by `@TeaJhay` - Changed script to look for `qs` not `quickshell` On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md * Fixed overviewtoggle.sh * Added window rule and module for mousam weather app It's commented out in the waybar/ModulesCustom file On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: hypr/configs/WindowRules-config-v3.conf modified: hypr/configs/WindowRules.conf modified: waybar/ModulesCustom * Disable VFR, not supported post v0.54.3 * Updated whiptail to dark colors for readability On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: copy.sh modified: scripts/copy_menu.sh * Fixed highlight on OK/CANCEL buttons * Disable dwindle psuedotile not supported v0.55+ * Added fluxer icon to ModulesWorkspaces On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/waybar/ModulesWorkspaces * Removed psuedotile and vfr - not support 0.55+ * Upd CHANGELOG remove LUA-files dir moved to new branch On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md deleted: LUA-files/hyprland.lua --------- Co-authored-by: Don Williams --- config/hypr/UserScripts/WallpaperAutoChange.sh | 2 +- config/hypr/UserScripts/WallpaperEffects.sh | 4 +- config/hypr/UserScripts/WallpaperRandom.sh | 4 +- config/hypr/UserScripts/WallpaperSelect.sh | 13 +- config/hypr/UserScripts/WeatherWrap.sh | 6 +- config/hypr/configs/ENVariables.conf | 2 +- config/hypr/configs/SystemSettings.conf | 4 +- config/hypr/configs/WindowRules-config-v3.conf | 67 ++++ config/hypr/configs/WindowRules.conf | 68 ++++ config/hypr/hyprlock-1080p.conf | 9 +- config/hypr/hyprlock-2k.conf | 5 +- config/hypr/hyprlock.conf | 5 +- config/hypr/scripts/ChangeLayout.sh | 2 - config/hypr/scripts/KeyHints.sh | 115 +++--- config/hypr/scripts/LockScreen.sh | 2 +- config/hypr/scripts/Polkit-Diag.sh | 521 +++++++++++++++++++++++++ config/hypr/scripts/Polkit.sh | 16 +- config/hypr/scripts/WallpaperDaemon.sh | 109 ++++-- config/hypr/v2.3.23 | 5 + 19 files changed, 834 insertions(+), 125 deletions(-) create mode 100755 config/hypr/scripts/Polkit-Diag.sh create mode 100644 config/hypr/v2.3.23 (limited to 'config/hypr') 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 -- cgit v1.2.3