diff options
| author | Donald Williams <129223418+dwilliam62@users.noreply.github.com> | 2026-04-30 03:25:07 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-04-30 03:25:07 -0400 |
| commit | 44ce230e970ddc36095f8be167d1fa1c2f203541 (patch) | |
| tree | b5362245d975cfe58979fd08a7f5847967a1c597 /config/hypr | |
| parent | def3d5510b478de42c99039409efe09ed62c6800 (diff) | |
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 <don.e.williamw@gmail.com>
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 |
