aboutsummaryrefslogtreecommitdiffstats
path: root/config/hypr/scripts
diff options
context:
space:
mode:
authorDonald Williams <129223418+dwilliam62@users.noreply.github.com>2026-03-31 00:01:05 -0400
committerGitHub <noreply@github.com>2026-03-31 00:01:05 -0400
commite4b9059d346e6a6dbd6216cd1fb5e41085bb6e7b (patch)
treef0d18c37bbc34801a7bf0a21fe49b4a22aedc57a /config/hypr/scripts
parent79d42f055949b59f9c6a8f039eb4c90561b0d2ac (diff)
Updating Hyprland to v2.3.22 (#40)
* Updated version to 2.3.22 on development branch v2.3.21 released on 2/23/26 v2.3.22 next release branch On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/configs/ENVariables.conf renamed: config/hypr/v2.3.21 -> config/hypr/v2.3.22 * Changed dotfiles name to KoolDots in fastfetch * Added two new rofi themes On branch development Your branch is up to date with 'origin/development'. Changes to be committed: new file: config/rofi/themes/KooL_TokyoNight.rasi new file: config/rofi/themes/KooL_dwm.rasi * Fixed new rofi themes On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/rofi/themes/KooL_TokyoNight.rasi modified: config/rofi/themes/KooL_dwm.rasi * Added DWM dmenu inspired app menus horiz & vertical On branch development Your branch is up to date with 'origin/development'. Changes to be committed: new file: config/rofi/dwm-config-horiz.rasi new file: config/rofi/dwm-config-vert.rasi new file: config/rofi/dwm-dmenu-horiz.rasi new file: config/rofi/dwm-dmenu-vert.rasi * Had both QT5CT and QT6CT variables Added style ENV for kvantum ``` env = QT_QPA_PLATFORMTHEME,qt6ct env = QT_STYLE_OVERRIDE,kvantum ``` Trying this to see if that allows support for kvantum but not break existing config On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/configs/ENVariables.conf * Updated headers with new Project name and add GPLv3 license On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: Distro-Hyprland.sh modified: archive/release.sh modified: archive/update-dots.sh modified: archive/upgrade.sh modified: copy.sh modified: scripts/copy_menu.sh modified: scripts/lib_apps.sh modified: scripts/lib_backup.sh modified: scripts/lib_copy.sh modified: scripts/lib_detect.sh modified: scripts/lib_prompts.sh modified: scripts/lib_update.sh * Updated config files and scripts to new Project name and URL 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/UserConfigs/00-Readme modified: config/hypr/UserConfigs/01-UserDefaults.conf modified: config/hypr/UserConfigs/ENVariables.conf modified: config/hypr/UserConfigs/LaptopDisplay.conf modified: config/hypr/UserConfigs/Laptops.conf modified: config/hypr/UserConfigs/Startup_Apps.conf modified: config/hypr/UserConfigs/UserAnimations.conf modified: config/hypr/UserConfigs/UserDecorations.conf modified: config/hypr/UserConfigs/UserKeybinds.conf modified: config/hypr/UserConfigs/UserSettings.conf modified: config/hypr/UserConfigs/WindowRules.conf modified: config/hypr/UserConfigs/WorkSpaceRules.conf modified: config/hypr/UserScripts/00-Readme modified: config/hypr/UserScripts/RainbowBorders-low-cpu.sh modified: config/hypr/UserScripts/RainbowBorders.bak.sh modified: config/hypr/UserScripts/RofiBeats.sh modified: config/hypr/UserScripts/RofiCalc.sh modified: config/hypr/UserScripts/Tak0-Autodispatch.sh modified: config/hypr/UserScripts/WallpaperAutoChange.sh modified: config/hypr/UserScripts/WallpaperEffects.sh modified: config/hypr/UserScripts/WallpaperRandom.sh modified: config/hypr/UserScripts/WallpaperSelect.sh modified: config/hypr/UserScripts/Weather.py modified: config/hypr/UserScripts/Weather.sh modified: config/hypr/UserScripts/WeatherWrap.sh modified: config/hypr/UserScripts/ZshChangeTheme.sh modified: config/hypr/configs/ENVariables.conf modified: config/hypr/configs/Keybinds.conf modified: config/hypr/configs/Laptops.conf modified: config/hypr/configs/Startup_Apps.conf modified: config/hypr/configs/SystemSettings.conf modified: config/hypr/configs/WindowRules-config-v3.conf modified: config/hypr/configs/WindowRules-pre-53.conf modified: config/hypr/configs/WindowRules.conf modified: config/hypr/scripts/AirplaneMode.sh modified: config/hypr/scripts/Animations.sh modified: config/hypr/scripts/Battery.sh modified: config/hypr/scripts/Brightness.sh modified: config/hypr/scripts/BrightnessKbd.sh modified: config/hypr/scripts/ChangeBlur.sh modified: config/hypr/scripts/ChangeLayout.sh modified: config/hypr/scripts/ClipManager.sh modified: config/hypr/scripts/DarkLight.sh modified: config/hypr/scripts/Distro_update.sh modified: config/hypr/scripts/Dropterminal.sh modified: config/hypr/scripts/GameMode.sh modified: config/hypr/scripts/Hypridle.sh modified: config/hypr/scripts/Hyprsunset.sh modified: config/hypr/scripts/KeyBinds.sh modified: config/hypr/scripts/KeyHints.sh modified: config/hypr/scripts/KeybindsLayoutInit.sh modified: config/hypr/scripts/KeyboardLayout.sh modified: config/hypr/scripts/KillActiveProcess.sh modified: config/hypr/scripts/Kitty_themes.sh modified: config/hypr/scripts/KooLsDotsUpdate.sh modified: config/hypr/scripts/Kool_Quick_Settings.sh modified: config/hypr/scripts/LockScreen.sh modified: config/hypr/scripts/MediaCtrl.sh modified: config/hypr/scripts/MonitorProfiles.sh modified: config/hypr/scripts/OverviewToggle.sh modified: config/hypr/scripts/Polkit-NixOS.sh modified: config/hypr/scripts/Polkit.sh modified: config/hypr/scripts/PortalHyprland.sh modified: config/hypr/scripts/PortalHyprlandUbuntu2604.sh modified: config/hypr/scripts/Refresh.sh modified: config/hypr/scripts/RefreshNoWaybar.sh modified: config/hypr/scripts/RofiEmoji.sh modified: config/hypr/scripts/RofiSearch.sh modified: config/hypr/scripts/RofiThemeSelector-modified.sh modified: config/hypr/scripts/RofiThemeSelector.sh modified: config/hypr/scripts/ScreenShot.sh modified: config/hypr/scripts/Sounds.sh modified: config/hypr/scripts/Tak0-Autodispatch.sh modified: config/hypr/scripts/Tak0-Per-Window-Switch.sh modified: config/hypr/scripts/ThemeChanger.sh modified: config/hypr/scripts/Toggle-Active-Window-Audio.sh modified: config/hypr/scripts/Toggle-weather-waybar-units.sh modified: config/hypr/scripts/TouchPad.sh modified: config/hypr/scripts/UptimeNixOS.sh modified: config/hypr/scripts/UserConfigsSwitcher.sh modified: config/hypr/scripts/Volume.sh modified: config/hypr/scripts/WallustSwww.sh modified: config/hypr/scripts/WaybarCava.sh modified: config/hypr/scripts/WaybarLayout.sh modified: config/hypr/scripts/WaybarScripts.sh modified: config/hypr/scripts/WaybarStyles.sh modified: config/hypr/scripts/Wlogout.sh modified: config/hypr/scripts/hyprshot.sh modified: config/hypr/scripts/install-uv.sh modified: config/hypr/scripts/keybinds_parser.py modified: config/hypr/scripts/sddm_wallpaper.sh modified: config/hypr/scripts/update_WindowRules.sh * Added "No color" theme to Kitty, changed default to 01-Wallust.conf This will maintain current feature of following wallust colors by default But user can select "no color" if they desire it On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/Kitty_themes.sh modified: config/kitty/kitty-themes/00-Default.conf modified: config/kitty/kitty.conf * Added custom module for External Brightness control For External Monitors via DDCUTIL / EDID On branch development Your branch is up to date with 'origin/development'. Changes to be committed: new file: config/hypr/scripts/ExternalBrightness.sh modified: config/waybar/ModulesCustom * Updating ExternalBrightness script to hopefully better detect monitors Currently my monitor isn't showing support for brightness So I can't fully test this code right now On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/ExternalBrightness.sh * Switching wallust color references to avoid washed out colors On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/waybar/style/Wallust-ML4W-modern.css * Fixed colors to use different wallust colors Widgets were getting washed out On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/waybar/style/Dark-Latte-Wallust-combined-v2.css * Fixing opactity and color issues in Dark-Latte-Wallust-combined* On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/waybar/style/Dark-Latte-Wallust-combined-v2.css modified: config/waybar/style/Dark-Latte-Wallust-combined.css * Adding fixes applied to the other wallust style sheets to these On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/waybar/style/Wallust-Bordered-Chroma-Fusion-Edge.css modified: config/waybar/style/Wallust-Chroma-Edge.css modified: config/waybar/style/Wallust-Chroma-Fusion.css modified: config/waybar/style/Wallust-ML4W-modern-mixed.css * Updted CHANGELOG On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md * Updated CHANGELOG * Changed proj name in CHANGELOG * Fix: UserConfig updates were being removed on updates On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: scripts/lib_backup.sh modified: scripts/lib_copy.sh * Fix: Syntax error in copy.sh * Updated ubuntu portal check for all ubuntu versions, common variants The hyprland portals have to be manually started on recent ubuntu distros. otherwise waybar never loads On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/configs/Startup_Apps.conf renamed: config/hypr/scripts/PortalHyprlandUbuntu2604.sh -> config/hypr/scripts/PortalHyprlandUbuntu.sh * Togglesplit being replaced by layoutmsg Togglesplit On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/configs/Keybinds.conf modified: config/hypr/scripts/ChangeLayout.sh * Update Ukrainian README translation (#22) * Fixed Hyprshotsh output directory * Adding scrolling to ChangeLayout script Requires HL v0.54+ On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/ChangeLayout.sh * Fixed type, added two bindings for scrolling bindd = $mainMod SHIFT, period, move column, layoutmsg, move +col bindd = $mainMod SHIFT, comma, swap columns, layoutmsg, swapcol l On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: Keybinds.conf * Updated CHANGELOG * Creating script to set the default terminal to kitty for thunar Also creates shim for xterm for other programs that might call xterm and as fallback On branch development Your branch is up to date with 'origin/development'. Changes to be committed: new file: config/hypr/scripts/set-default-thunar-terminal.sh * Fixing terminal not found and remove kitty URL handler entry On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/set-default-thunar-terminal.sh * Fixing wallust to be more consistent and faster On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/UserScripts/WallpaperRandom.sh modified: config/hypr/scripts/Refresh.sh modified: config/hypr/scripts/RefreshNoWaybar.sh modified: config/hypr/scripts/WallustSwww.sh * Trying to fix rofi/waybar colors contrast to fix dark on dark colors On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/WallustSwww.sh modified: config/waybar/style/Wallust-Box-type.css * Fixing inconsistent colors in Wallust-Bordered-Chroma-Simple file On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/waybar/style/Wallust-Bordered-Chroma-Simple.css * Fixing styling issues in waybar On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/waybar/style/Wallust-Bordered-Chroma-Simple.css * Fixing style sheet #2 On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/waybar/style/Wallust-Bordered-Chroma-Simple.css * FIXED: style sheet no more pink on pink widgets On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/waybar/style/Wallust-Bordered-Chroma-Simple.css * Updted Changelog * Added scrolling options and scrolling keybinds On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: configs/Keybinds.conf modified: configs/SystemSettings.conf * Updated CHANGELOG with scrolling keybinds 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: CHANGELOG.md * Added more scrolling bindings On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/configs/Keybinds.conf * Fixed scrolling keybinds * Updated layerrule for rofi to turn off blur It's commented out in WindowRules files with comment on how to enable and why On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/UserConfigs/WindowRules.conf modified: config/hypr/configs/WindowRules.conf * Trying new settings for cursor and master / dwindle layouts On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/configs/SystemSettings.conf * Adding addtional layerrules to test On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/configs/WindowRules.conf * Updated gestures - corrected layout and added new gestures On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/configs/SystemSettings.conf * Fixed duplicate gesture for up motion * Added monocle layout On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/configs/SystemSettings.conf modified: config/hypr/scripts/ChangeLayout.sh * Fixing Monocle settings * Fixing Monocle settings x2 * Updated CHANGELOG fixed monocle settings On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md modified: config/hypr/configs/SystemSettings.conf * Making sure UserConfigs dir entries not deleted from 2.3.19+ On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: scripts/lib_copy.sh * Fixed package name for waybar-weather On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: scripts/lib_apps.sh * Updated CHANGELOG * Added check for waybar-weather installed local binary or AUR If local static binary then it will remove it and install from AUR On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: scripts/lib_apps.sh * Update gestures on hyprland * Added script to set ghostty theme to Quick settings On branch main Your branch is up to date with 'origin/main'. Changes to be committed: modified: config/ghostty/ghostty.config new file: config/hypr/scripts/Ghostty_themes.sh modified: config/hypr/scripts/Kool_Quick_Settings.sh * Created dedicated rofi theme for ghostty added license/URL info On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/ghostty/ghostty.config modified: config/hypr/scripts/Ghostty_themes.sh new file: config/rofi/config-ghostty-theme.rasi * fix: hypr windowrules for qalculate gtk * Updted all float toggle with script to replace depreciated cmd On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/configs/Keybinds.conf * Updated CHANGELOG * Trying different ghostty fonts * Moved Float-all-Windows command string to script On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md modified: config/hypr/configs/Keybinds.conf new file: config/hypr/scripts/Float-all-Windows.sh * Made Float-all-Windows script executable On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: Float-all-Windows.sh * Trying to fix dropdown terminal dropping down again on hide On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: Dropterminal.sh * Adding logging to Dropterminal On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: Dropterminal.sh * Adding monitor info to better handle dropdown and other hardening On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: Dropterminal.sh * Adding more debug info On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: Dropterminal.sh * Changing sequence move to special workspace b4 pinning On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: Dropterminal.sh * Fixed flashing but now doesn't hide completely Redid pinning logic to adjust that On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: Dropterminal.sh * Added kitty-dropdown class and improved handling Hopefully this will fix the issue On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: ../configs/Startup_Apps.conf modified: Dropterminal.sh * Hopefully this fixes the hide issue Hyprland reports the visible special workspace name as either special:scratchpad or scratchpad depending on context. My visibility check only matched the former, so the hide toggle didn’t always turn it offβ€”hence the sliver. I updated the visibility check to accept either name. On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: Dropterminal.sh * Visibility check was a bust On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: Dropterminal.sh * Using special workspace isn't working Trying new approach On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: Dropterminal.sh * Fixed syntax error on local outside of the function Getting closer (I hope) On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: Dropterminal.sh * Fixed issue where first toggle didn't drop down terminal On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: Dropterminal.sh * Adding a state file to resolve not dropping down on first activation On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: Dropterminal.sh * Updated CHANGELOG on Dropdown terminal fix On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md * Renamed ghostty config to proper cfgname * Dynamic Handling of WindowRules.conf (#24) Need to set 0.53 to WindowRules.conf * Synced WindowRules-config-v3 to WindowRules.conf layyerrules On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: WindowRules-config-v3.conf modified: WindowRules.conf * Improved layout toggleing and added Keybinds to set mode individually On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/configs/Keybinds.conf modified: config/hypr/configs/WindowRules.conf modified: config/hypr/scripts/ChangeLayout.sh * Fixing layout for SUPER J/K and SUPER arrow keys On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: hypr/scripts/ChangeLayout.sh modified: hypr/scripts/KeybindsLayoutInit.sh * Added fixes for layout cycling with SUPER J/K and SUPER ARROWS On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/ChangeLayout.sh new file: config/hypr/scripts/HyprlandCycleWindow.sh modified: config/hypr/scripts/KeybindsLayoutInit.sh * Fixing script had extra unbind for SUPER J/K Implementing the single script to set layout and proper bingings in one step On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/ChangeLayout.sh deleted: config/hypr/scripts/HyprlandCycleWindow.sh modified: config/hypr/scripts/KeybindsLayoutInit.sh * Still fixing J/K for all modes and super ARROW also On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/configs/Keybinds.conf modified: config/hypr/scripts/ChangeLayout.sh * moved to lower case to resolve SUPER J/K On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/configs/Keybinds.conf modified: config/hypr/scripts/KeybindsLayoutInit.sh * Once more try to get dwindle/scrolling binds working On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/ChangeLayout.sh * Removed hyprland if statement is loads wrong file on v0.54.1 I don't want to make gated rules and update them on every HL update. v0.53 is available, users of 0.52.x should upgrade or copy the older rev file manually On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/configs/WindowRules.conf * WindowRules had CTRL-B character at end 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 Antigravity icon to waybar On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/waybar/ModulesWorkspaces * Added keybind search script and rofi menu for emacs On branch development Your branch is up to date with 'origin/development'. Changes to be committed: new file: config/hypr/scripts/rofi-emacs-keybinds new file: config/rofi/config-emacs-keybinds.rasi * Added icon for emacs for waybar On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/waybar/ModulesWorkspaces * Fixed screenshot delay issues added icon for nautilus On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/ScreenShot.sh modified: config/waybar/ModulesWorkspaces * Added icon for nautilus and terminal with RED X for apps w/o icons On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/waybar/ModulesWorkspaces * Updated Sounds.sh to play sound directly On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: ../../../CHANGELOG.md modified: ScreenShot.sh modified: Sounds.sh * Updated CHANGELOG On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md * FIXED long delay updating theme colors when changing wallpaper Wallust was being run multiple times also made updates to ghostty / kitty more asynchronous On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/WallustSwww.sh * Updated CHANGELOG 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: CHANGELOG.md * Added WallpaperDaemon to use awww if available fallback swww On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md modified: config/hypr/configs/Startup_Apps.conf new file: config/hypr/scripts/WallpaperDaemon.sh * SWWW archived, using AWWW updated scripts to prefer AWWW if installed Next will be to update all the Distro-Hyprland to install AWWW NixOS-Hyprland is already done 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 modified: config/hypr/initial-boot.sh modified: config/hypr/scripts/DarkLight.sh modified: config/hypr/scripts/GameMode.sh modified: config/hypr/scripts/KeyHints.sh modified: config/hypr/scripts/WallpaperDaemon.sh modified: config/hypr/scripts/WallustSwww.sh * Added icon for NVIDIA settings app and Centered/floating 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 modified: config/waybar/ModulesWorkspaces * Tuned ddubs simple waybar config * waybar: change thunderbird and gemini icons * waybar: fix gemini waybar * Added icon for mainline kernel mgr and Window rule for it 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 modified: config/waybar/ModulesWorkspaces * Added new fastfetches for Arch, fedora, ubuntu, Gentoo Looking for openSuse and debian logos On branch development Your branch is up to date with 'origin/development'. Changes to be committed: new file: images/Arch-Logo-1.png new file: images/Arch-Logo-2.png new file: images/fedora.png new file: images/gentoo-abducted-1600x1200.png new file: images/gentoo1.png new file: images/gentoo2.png new file: images/gentoo3.png new file: images/ubuntu.jpeg new file: images/ubuntu.png new file: kooldots-arch.jsonc new file: kooldots-fedora.jsonc new file: kooldots-gentoo.jsonc new file: kooldots-ubuntu.jsonc * Added copy.sh vs. TUI first pass analysis * WallpaperSelect upd shows names for current/random wallpapers Thank you S3cBar0n https://github.com/S3cBar0n 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 * Fixing wallpaper select * Added fastfetches w/logos need one for OpenSuse On branch development Your branch is up to date with 'origin/development'. Changes to be committed: new file: config/fastfetch/images/debian_swirl.png deleted: config/fastfetch/images/gentoo-abducted-1600x1200.png deleted: config/fastfetch/images/gentoo3.png new file: config/fastfetch/images/nixos.png new file: config/fastfetch/kooldots-debian.jsonc new file: config/fastfetch/kooldots-nixos.jsonc * Changed Arch to alternate fastfetch logo * Building fastfetch wrapper to call distro logo On branch development Your branch is up to date with 'origin/development'. Changes to be committed: new file: config/hypr/scripts/fastfetch-wrapper.sh * Added ghostty config to the backup / restore process On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: copy.sh modified: scripts/lib_apps.sh modified: scripts/lib_copy.sh * Updated CHANGELOG * docs: update readme (#30) * docs(README): clean up structure, fix typos, and improve clarity * docs(README): fix anchor * docs(README): remove some emojis * docs(README): remove some emojis * docs(README): update discord url * docs(README): update youtube links * docs(README): fix discord link * docs(README): add Legacy Jak videos * docs(README): fix spacing * docs(README): fix unnecesary list * fix: NVIDIA url * Preliminary review of tasks for HL LUA conversion List current scripts that do and do not modify hyprland configuration files On branch development Your branch is up to date with 'origin/development'. Changes to be committed: new file: Hyprland-LUA-analysis-Phase1.md * fix: change cursor config on tablets * Updated CHANGELOG on enabling cursor on tablet On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md * Added gitnuro icon to ModulesWorkspaces On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/waybar/ModulesWorkspaces renamed: Hyprland-LUA-analysis-Phase1.md -> docs/Hyprland-LUA-analysis-Phase1.md renamed: copy.sh-tui-analysis-3-14-2026.md -> docs/copy.sh-tui-analysis-3-14-2026.md * Fix: restore wallpaper failed, garbage character filename On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/UserScripts/WallpaperSelect.sh modified: config/hypr/scripts/WallpaperDaemon.sh * Fixing wallpaper restore issue Fixed bad filename / symlink issue but WP not being restored on login On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/WallpaperDaemon.sh * Trying a different fix for WP restore * updated ModulesWorkspaces with boxxy-terminal icon On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/waybar/ModulesWorkspaces * Merged in converion to awww code this is Phase 2. Scripts check for awww or swww Once this is tested need to add migration function to clear the swww cache otherwise some colors weren't updated on wallpaper change On branch development Your branch is up to date with 'origin/development'. Changes to be committed: new file: build-awww.sh modified: config/hypr/UserScripts/WallpaperRandom.sh modified: config/hypr/UserScripts/WallpaperSelect.sh modified: config/hypr/configs/WindowRules-config-v3.conf modified: config/hypr/configs/WindowRules.conf modified: config/hypr/scripts/DarkLight.sh modified: config/hypr/scripts/GameMode.sh new file: config/hypr/scripts/WallpaperCmd.sh modified: config/hypr/scripts/WallpaperDaemon.sh * Added a check if awww cache has been cleared already Looks for ~/.cache/awww/.cache_cleared otherwise runs `awww clear-cache` On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/WallpaperCmd.sh * Fixed syntax errors On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/UserScripts/WallpaperSelect.sh modified: config/hypr/scripts/WallpaperCmd.sh * Fixed swww vs awww handling made WallpaperDaemon executable On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/UserScripts/WallpaperEffects.sh modified: config/hypr/UserScripts/WallpaperRandom.sh modified: config/hypr/UserScripts/WallpaperSelect.sh modified: config/hypr/scripts/WallpaperDaemon.sh * Fixed build-awww script On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: build-awww.sh * Fixed distro detection bug * Moved build-awww.sh to * WallpaperCmd.sh wasn't executable * build-awww wasn't added On branch development Your branch is up to date with 'origin/development'. Changes to be committed: new file: scripts/build-awww.sh * Add ghostty/wezterm to terminal window WindowRules 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 * Crtical fix to restore polkit function This and addtional packages are needed to allow polit to elevate permission for GUI apps More updates likely but making sure these fixes are included On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/Polkit.sh * Fixing polkit startup for NixOS On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/Polkit-NixOS.sh * resolving Polkit startup caused issue with arch On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/Polkit.sh * Added hyprpolkitagent override to archlinux installer On branch development Your branch is up to date with 'origin/development'. Changes to be committed: new file: config/systemd/user/hyprpolkitagent.service.d/override.conf modified: copy.sh * Updated Window Rules for xfce polkit diaglog window On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/UserConfigs/WindowRules.conf modified: config/hypr/configs/WindowRules-config-v3.conf modified: config/hypr/configs/WindowRules.conf * xfce4-polkit not in debian repo adding mate-polkit as alternative On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/configs/WindowRules.conf modified: config/hypr/scripts/Polkit.sh * Added Window Rule for kwallet manager * Fixing calculator window rule * fix kitty font style mix-up of bold and regular (#38) * Updated CHANGELOG, kitty font fix * Added rofi-ssh-menu SUPER+S to pull .ssh/config entries 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 --------- Co-authored-by: brockar <martin@mguz.dev> Co-authored-by: Vyle <121424993+IvyProtocol@users.noreply.github.com> Co-authored-by: Martin Guzman <55927935+brockar@users.noreply.github.com> Co-authored-by: Jason Schuehlein <34405484+JasonNero@users.noreply.github.com>
Diffstat (limited to 'config/hypr/scripts')
-rwxr-xr-xconfig/hypr/scripts/AirplaneMode.sh7
-rwxr-xr-xconfig/hypr/scripts/Animations.sh7
-rwxr-xr-xconfig/hypr/scripts/Battery.sh7
-rwxr-xr-xconfig/hypr/scripts/Brightness.sh7
-rwxr-xr-xconfig/hypr/scripts/BrightnessKbd.sh7
-rwxr-xr-xconfig/hypr/scripts/ChangeBlur.sh7
-rwxr-xr-xconfig/hypr/scripts/ChangeLayout.sh133
-rwxr-xr-xconfig/hypr/scripts/ClipManager.sh7
-rwxr-xr-xconfig/hypr/scripts/DarkLight.sh15
-rwxr-xr-xconfig/hypr/scripts/Distro_update.sh7
-rwxr-xr-xconfig/hypr/scripts/Dropterminal.sh207
-rwxr-xr-xconfig/hypr/scripts/ExternalBrightness.sh103
-rwxr-xr-xconfig/hypr/scripts/Float-all-Windows.sh10
-rwxr-xr-xconfig/hypr/scripts/GameMode.sh15
-rwxr-xr-xconfig/hypr/scripts/Ghostty_themes.sh129
-rwxr-xr-xconfig/hypr/scripts/Hypridle.sh7
-rwxr-xr-xconfig/hypr/scripts/Hyprsunset.sh6
-rwxr-xr-xconfig/hypr/scripts/KeyBinds.sh7
-rwxr-xr-xconfig/hypr/scripts/KeyHints.sh11
-rwxr-xr-xconfig/hypr/scripts/KeybindsLayoutInit.sh17
-rwxr-xr-xconfig/hypr/scripts/KeyboardLayout.sh7
-rwxr-xr-xconfig/hypr/scripts/KillActiveProcess.sh7
-rwxr-xr-xconfig/hypr/scripts/Kitty_themes.sh15
-rwxr-xr-xconfig/hypr/scripts/KooLsDotsUpdate.sh7
-rwxr-xr-xconfig/hypr/scripts/Kool_Quick_Settings.sh9
-rwxr-xr-xconfig/hypr/scripts/LockScreen.sh7
-rwxr-xr-xconfig/hypr/scripts/MediaCtrl.sh7
-rwxr-xr-xconfig/hypr/scripts/MonitorProfiles.sh7
-rwxr-xr-xconfig/hypr/scripts/OverviewToggle.sh7
-rwxr-xr-xconfig/hypr/scripts/Polkit-NixOS.sh26
-rwxr-xr-xconfig/hypr/scripts/Polkit.sh42
-rwxr-xr-xconfig/hypr/scripts/PortalHyprland.sh7
-rwxr-xr-xconfig/hypr/scripts/PortalHyprlandUbuntu.sh24
-rwxr-xr-xconfig/hypr/scripts/PortalHyprlandUbuntu2604.sh15
-rwxr-xr-xconfig/hypr/scripts/Refresh.sh32
-rwxr-xr-xconfig/hypr/scripts/RefreshNoWaybar.sh10
-rwxr-xr-xconfig/hypr/scripts/RofiEmoji.sh7
-rwxr-xr-xconfig/hypr/scripts/RofiSearch.sh7
-rwxr-xr-xconfig/hypr/scripts/RofiThemeSelector-modified.sh7
-rwxr-xr-xconfig/hypr/scripts/RofiThemeSelector.sh7
-rwxr-xr-xconfig/hypr/scripts/ScreenShot.sh24
-rwxr-xr-xconfig/hypr/scripts/Sounds.sh52
-rwxr-xr-xconfig/hypr/scripts/Tak0-Autodispatch.sh7
-rwxr-xr-xconfig/hypr/scripts/Tak0-Per-Window-Switch.sh6
-rwxr-xr-xconfig/hypr/scripts/ThemeChanger.sh6
-rwxr-xr-xconfig/hypr/scripts/Toggle-Active-Window-Audio.sh6
-rwxr-xr-xconfig/hypr/scripts/Toggle-weather-waybar-units.sh6
-rwxr-xr-xconfig/hypr/scripts/TouchPad.sh7
-rwxr-xr-xconfig/hypr/scripts/UptimeNixOS.sh6
-rwxr-xr-xconfig/hypr/scripts/UserConfigsSwitcher.sh7
-rwxr-xr-xconfig/hypr/scripts/Volume.sh7
-rwxr-xr-xconfig/hypr/scripts/WallpaperCmd.sh31
-rwxr-xr-xconfig/hypr/scripts/WallpaperDaemon.sh66
-rwxr-xr-xconfig/hypr/scripts/WallustSwww.sh119
-rwxr-xr-xconfig/hypr/scripts/WaybarCava.sh6
-rwxr-xr-xconfig/hypr/scripts/WaybarLayout.sh7
-rwxr-xr-xconfig/hypr/scripts/WaybarScripts.sh7
-rwxr-xr-xconfig/hypr/scripts/WaybarStyles.sh7
-rwxr-xr-xconfig/hypr/scripts/Wlogout.sh7
-rwxr-xr-xconfig/hypr/scripts/build-awww.sh209
-rwxr-xr-xconfig/hypr/scripts/disable.cpu.turbo.sh63
-rwxr-xr-xconfig/hypr/scripts/fastfetch-wrapper.sh24
-rwxr-xr-xconfig/hypr/scripts/hyprshot.sh7
-rwxr-xr-xconfig/hypr/scripts/install-uv.sh6
-rwxr-xr-xconfig/hypr/scripts/keybinds_parser.py6
-rwxr-xr-xconfig/hypr/scripts/rofi-emacs-keybinds13
-rwxr-xr-xconfig/hypr/scripts/rofi-ssh-menu.sh117
-rwxr-xr-xconfig/hypr/scripts/sddm_wallpaper.sh7
-rwxr-xr-xconfig/hypr/scripts/set-default-thunar-terminal.sh148
-rwxr-xr-xconfig/hypr/scripts/update_WindowRules.sh6
70 files changed, 1741 insertions, 222 deletions
diff --git a/config/hypr/scripts/AirplaneMode.sh b/config/hypr/scripts/AirplaneMode.sh
index ba692f98..21aa04a8 100755
--- a/config/hypr/scripts/AirplaneMode.sh
+++ b/config/hypr/scripts/AirplaneMode.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Airplane Mode. Turning on or off all wifi using rfkill.
notif="$HOME/.config/swaync/images/ja.png"
diff --git a/config/hypr/scripts/Animations.sh b/config/hypr/scripts/Animations.sh
index ff3a6e45..5fb77750 100755
--- a/config/hypr/scripts/Animations.sh
+++ b/config/hypr/scripts/Animations.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# For applying Animations from different users
# Check if rofi is already running
diff --git a/config/hypr/scripts/Battery.sh b/config/hypr/scripts/Battery.sh
index 2baed6ca..c42a4dac 100755
--- a/config/hypr/scripts/Battery.sh
+++ b/config/hypr/scripts/Battery.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
for i in {0..3}; do
if [ -f /sys/class/power_supply/BAT$i/capacity ]; then
battery_level=$(cat /sys/class/power_supply/BAT$i/status)
diff --git a/config/hypr/scripts/Brightness.sh b/config/hypr/scripts/Brightness.sh
index e0091417..bf0f4bf1 100755
--- a/config/hypr/scripts/Brightness.sh
+++ b/config/hypr/scripts/Brightness.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Script for Monitor backlights (if supported) using brightnessctl
iDIR="$HOME/.config/swaync/icons"
diff --git a/config/hypr/scripts/BrightnessKbd.sh b/config/hypr/scripts/BrightnessKbd.sh
index f9015fe0..5bd09a78 100755
--- a/config/hypr/scripts/BrightnessKbd.sh
+++ b/config/hypr/scripts/BrightnessKbd.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Script for keyboard backlights (if supported) using brightnessctl
iDIR="$HOME/.config/swaync/icons"
diff --git a/config/hypr/scripts/ChangeBlur.sh b/config/hypr/scripts/ChangeBlur.sh
index 084af2cb..10b5914e 100755
--- a/config/hypr/scripts/ChangeBlur.sh
+++ b/config/hypr/scripts/ChangeBlur.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Script for changing blurs on the fly
notif="$HOME/.config/swaync/images"
diff --git a/config/hypr/scripts/ChangeLayout.sh b/config/hypr/scripts/ChangeLayout.sh
index 499fa1e2..f52d783f 100755
--- a/config/hypr/scripts/ChangeLayout.sh
+++ b/config/hypr/scripts/ChangeLayout.sh
@@ -1,39 +1,112 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
-# for changing Hyprland Layouts (Master or Dwindle) on the fly
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
+# for changing Hyprland Layouts (master, dwindle, scrolling, monocle) on the fly
notif="$HOME/.config/swaync/images/ja.png"
-LAYOUT=$(hyprctl -j getoption general:layout | jq '.str' | sed 's/"//g')
+layouts=(master dwindle scrolling monocle)
-# Reverse layout value to reuse toggle logic. So layouts don't get swapped initially.
-if [ "$1" = "init" ]; then
- if [ "$LAYOUT" = "master" ]; then
- LAYOUT="dwindle"
- else
- LAYOUT="master"
- fi
-fi
+get_layout() {
+ hyprctl -j getoption general:layout | jq -r '.str'
+}
-case $LAYOUT in
-"master")
- hyprctl keyword general:layout dwindle
- hyprctl keyword unbind SUPER,J
- hyprctl keyword unbind SUPER,K
- hyprctl keyword bind SUPER,J,cyclenext
- hyprctl keyword bind SUPER,K,cyclenext,prev
- hyprctl keyword bind SUPER,O,togglesplit
- notify-send -e -u low -i "$notif" " Dwindle Layout"
- ;;
-"dwindle")
- hyprctl keyword general:layout master
- hyprctl keyword unbind SUPER,J
- hyprctl keyword unbind SUPER,K
+next_layout() {
+ local current="$1"
+ local i
+ for i in "${!layouts[@]}"; do
+ if [[ "${layouts[i]}" == "$current" ]]; then
+ echo "${layouts[((i + 1) % ${#layouts[@]})]}"
+ return
+ fi
+ done
+ echo "${layouts[0]}"
+}
+
+set_layout() {
+ local target="$1"
+
+ hyprctl keyword general:layout "$target"
+ hyprctl keyword unbind SUPER,j
+ hyprctl keyword unbind SUPER,k
+ hyprctl keyword unbind SUPER,left
+ hyprctl keyword unbind SUPER,right
+ hyprctl keyword unbind SUPER,up
+ hyprctl keyword unbind SUPER,down
hyprctl keyword unbind SUPER,O
- hyprctl keyword bind SUPER,J,layoutmsg,cyclenext
- hyprctl keyword bind SUPER,K,layoutmsg,cycleprev
- notify-send -e -u low -i "$notif" " Master Layout"
- ;;
-*) ;;
+ hyprctl keyword unbind SUPER_SHIFT,M
+
+ case "$target" in
+ "dwindle")
+ hyprctl keyword bind SUPER,j,cyclenext
+ hyprctl keyword bind SUPER,k,cyclenext,prev
+ hyprctl keyword bind SUPER,left,cyclenext,prev
+ hyprctl keyword bind SUPER,up,cyclenext,prev
+ hyprctl keyword bind SUPER,right,cyclenext
+ hyprctl keyword bind SUPER,down,cyclenext
+ hyprctl keyword bind SUPER,O,layoutmsg,togglesplit
+ notify-send -e -u low -i "$notif" " Dwindle Layout"
+ ;;
+ "scrolling")
+ hyprctl keyword bind SUPER,j,cyclenext
+ hyprctl keyword bind SUPER,k,cyclenext,prev
+ hyprctl keyword bind SUPER,left,cyclenext,prev
+ hyprctl keyword bind SUPER,up,cyclenext,prev
+ hyprctl keyword bind SUPER,right,cyclenext
+ hyprctl keyword bind SUPER,down,cyclenext
+ notify-send -e -u low -i "$notif" " Scrolling Layout"
+ ;;
+ "monocle")
+ hyprctl keyword bind SUPER,j,layoutmsg,cyclenext
+ hyprctl keyword bind SUPER,k,layoutmsg,cycleprev
+ hyprctl keyword bind SUPER,left,layoutmsg,cycleprev
+ 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")
+ hyprctl keyword bind SUPER,j,layoutmsg,cyclenext
+ hyprctl keyword bind SUPER,k,layoutmsg,cycleprev
+ hyprctl keyword bind SUPER,left,movefocus,l
+ hyprctl keyword bind SUPER,right,movefocus,r
+ hyprctl keyword bind SUPER,up,movefocus,u
+ hyprctl keyword bind SUPER,down,movefocus,d
+ notify-send -e -u low -i "$notif" " Master Layout"
+ ;;
+ *)
+ hyprctl keyword bind SUPER,j,layoutmsg,cyclenext
+ hyprctl keyword bind SUPER,k,layoutmsg,cycleprev
+ hyprctl keyword bind SUPER,left,movefocus,l
+ hyprctl keyword bind SUPER,right,movefocus,r
+ hyprctl keyword bind SUPER,up,movefocus,u
+ hyprctl keyword bind SUPER,down,movefocus,d
+ echo "Unknown layout: $target" >&2
+ return 1
+ ;;
+ esac
+}
+current="$(get_layout)"
+arg="${1:-toggle}"
+
+case "$arg" in
+init)
+ set_layout "$current"
+ ;;
+toggle|next)
+ set_layout "$(next_layout "$current")"
+ ;;
+master|dwindle|scrolling|monocle)
+ set_layout "$arg"
+ ;;
+*)
+ echo "Usage: $(basename "$0") [toggle|next|init|master|dwindle|scrolling|monocle]" >&2
+ exit 1
+ ;;
esac
diff --git a/config/hypr/scripts/ClipManager.sh b/config/hypr/scripts/ClipManager.sh
index d08fd8f4..e3fbd066 100755
--- a/config/hypr/scripts/ClipManager.sh
+++ b/config/hypr/scripts/ClipManager.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Clipboard Manager. This script uses cliphist, rofi, and wl-copy.
# Variables
diff --git a/config/hypr/scripts/DarkLight.sh b/config/hypr/scripts/DarkLight.sh
index 62bad62b..5b1cc3e7 100755
--- a/config/hypr/scripts/DarkLight.sh
+++ b/config/hypr/scripts/DarkLight.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-## /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# For Dark and Light switching
# Note: Scripts are looking for keywords Light or Dark except for wallpapers as the are in a separate directories
@@ -12,6 +17,8 @@ hypr_config_path="$HOME/.config/hypr"
swaync_style="$HOME/.config/swaync/style.css"
ags_style="$HOME/.config/ags/user/style.css"
SCRIPTSDIR="$HOME/.config/hypr/scripts"
+# shellcheck source=/dev/null
+. "$SCRIPTSDIR/WallpaperCmd.sh"
notif="$HOME/.config/swaync/images/bell.png"
wallust_rofi="$HOME/.config/wallust/templates/colors-rofi.rasi"
@@ -31,11 +38,11 @@ for pid in waybar rofi swaync ags swaybg; do
done
-# Initialize swww if needed
-swww query || swww-daemon --format xrgb
+# Initialize wallpaper daemon if needed
+"$WWW_CMD" query || "$WWW_DAEMON" "${WWW_DAEMON_ARGS[@]}"
# Set swww options
-swww="swww img"
+swww="$WWW_CMD img"
effect="--transition-bezier .43,1.19,1,.4 --transition-fps 60 --transition-type grow --transition-pos 0.925,0.977 --transition-duration 2"
# Determine current theme mode
diff --git a/config/hypr/scripts/Distro_update.sh b/config/hypr/scripts/Distro_update.sh
index b4b8e90c..b9bcae71 100755
--- a/config/hypr/scripts/Distro_update.sh
+++ b/config/hypr/scripts/Distro_update.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Simple bash script to check and will try to update your system
# Local Paths
diff --git a/config/hypr/scripts/Dropterminal.sh b/config/hypr/scripts/Dropterminal.sh
index 2a9eb5b1..81c0f157 100755
--- a/config/hypr/scripts/Dropterminal.sh
+++ b/config/hypr/scripts/Dropterminal.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
#
# Made and brought to by Kiran George
# /* -- ✨ https://github.com/SherLock707 ✨ -- */ ##
@@ -12,7 +17,13 @@
DEBUG=false
SPECIAL_WS="special:scratchpad"
+SPECIAL_NAME="${SPECIAL_WS#special:}"
ADDR_FILE="/tmp/dropdown_terminal_addr"
+STATE_FILE="/tmp/dropdown_terminal_state"
+LOCK_FILE="/tmp/dropdown_terminal_lock"
+LAST_TOGGLE_FILE="/tmp/dropdown_terminal_last_toggle"
+MIN_TOGGLE_INTERVAL_MS=250
+DROPDOWN_KITTY_CLASS="kitty-dropterm"
# Dropdown size and position configuration (percentages)
WIDTH_PERCENT=65 # Width as percentage of screen width
@@ -31,12 +42,63 @@ if [ "$1" = "-d" ]; then
fi
TERMINAL_CMD="$1"
+if [[ "$TERMINAL_CMD" == kitty* ]] && [[ "$TERMINAL_CMD" != *"--class"* ]] && [[ "$TERMINAL_CMD" != *"--name"* ]] && [[ "$TERMINAL_CMD" != *"--app-id"* ]]; then
+ TERMINAL_CMD="$TERMINAL_CMD --class $DROPDOWN_KITTY_CLASS"
+fi
+
+# Ensure only one instance runs at a time (prevents overlapping animations)
+exec 9>"$LOCK_FILE"
+flock -n 9 || exit 0
+
+# Debounce rapid toggles
+now_ms=""
+if date +%s%3N >/dev/null 2>&1; then
+ now_ms=$(date +%s%3N)
+else
+ now_ms=$(( $(date +%s) * 1000 ))
+fi
+if [ -f "$LAST_TOGGLE_FILE" ]; then
+ last_ms=$(cat "$LAST_TOGGLE_FILE" 2>/dev/null || echo 0)
+ if [ -n "$last_ms" ] && [ "$last_ms" -ge 0 ] 2>/dev/null; then
+ delta_ms=$((now_ms - last_ms))
+ if [ "$delta_ms" -lt "$MIN_TOGGLE_INTERVAL_MS" ] 2>/dev/null; then
+ if [ "$DEBUG" = true ]; then
+ echo "Toggle debounced (${delta_ms}ms < ${MIN_TOGGLE_INTERVAL_MS}ms)" >&2
+ fi
+ exit 0
+ fi
+ fi
+fi
+echo "$now_ms" >"$LAST_TOGGLE_FILE"
# Debug echo function
debug_echo() {
if [ "$DEBUG" = true ]; then
- echo "$@"
+ echo "$@" >&2
+ fi
+}
+
+# Resolve terminal address, recovering by class if needed
+resolve_terminal_address() {
+ local addr
+ addr=$(get_terminal_address)
+ if [ -n "$addr" ] && window_exists "$addr"; then
+ echo "$addr"
+ return 0
+ fi
+
+ local recovered
+ recovered=$(find_terminal_by_class)
+ if [ -n "$recovered" ] && [ "$recovered" != "null" ]; then
+ local mon_name
+ mon_name=$(get_monitor_info | awk '{print $6}')
+ echo "$recovered $mon_name" >"$ADDR_FILE"
+ echo "$recovered"
+ return 0
fi
+
+ rm -f "$ADDR_FILE"
+ return 1
}
# Validate input
@@ -62,6 +124,28 @@ get_window_geometry() {
hyprctl clients -j | jq -r --arg ADDR "$addr" '.[] | select(.address == $ADDR) | "\(.at[0]) \(.at[1]) \(.size[0]) \(.size[1])"'
}
+# Function to check if window is currently hidden off-screen
+window_is_hidden() {
+ local addr="$1"
+ local y
+ y=$(hyprctl clients -j 2>/dev/null | jq -r --arg ADDR "$addr" '.[] | select(.address == $ADDR) | .at[1]' 2>/dev/null)
+ if [[ "$y" =~ ^-?[0-9]+$ ]] && [ "$y" -lt 0 ]; then
+ return 0
+ fi
+ return 1
+}
+
+# State helpers
+get_hidden_state() {
+ if [ -f "$STATE_FILE" ]; then
+ cat "$STATE_FILE" 2>/dev/null
+ fi
+}
+
+set_hidden_state() {
+ echo "$1" >"$STATE_FILE"
+}
+
# Function to animate window slide down (show)
animate_slide_down() {
local addr="$1"
@@ -121,7 +205,30 @@ animate_slide_up() {
# Function to get monitor info including scale and name of focused monitor
get_monitor_info() {
- local monitor_data=$(hyprctl monitors -j | jq -r '.[] | select(.focused == true) | "\(.x) \(.y) \(.width) \(.height) \(.scale) \(.name)"')
+ local monitor_data
+ monitor_data=$(hyprctl monitors -j 2>/dev/null | jq -er 'map(select(.focused == true)) | .[0] | "\(.x) \(.y) \(.width) \(.height) \(.scale) \(.name)"' 2>/dev/null) || monitor_data=""
+ if [ -z "$monitor_data" ]; then
+ # Fallback for older Hyprland without -j support
+ monitor_data=$(hyprctl monitors 2>/dev/null | awk '
+ /^Monitor / {name=$2; sub(/\(.*/, "", name); x=y=w=h=scale=""; focused="no"}
+ / at / {
+ # e.g. "1920x1080@74.97300 at 0x0"
+ split($1, res, "x"); w=res[1]; split(res[2], tmp, "@"); h=tmp[1]
+ split($4, pos, "x"); x=pos[1]; y=pos[2]
+ }
+ /scale:/ {scale=$2}
+ /focused:/ {focused=$2}
+ /^$/ {
+ if (focused=="yes" && x!="" && y!="" && w!="" && h!="" && scale!="" && name!="") {
+ print x, y, w, h, scale, name; exit
+ }
+ }
+ END {
+ if (focused=="yes" && x!="" && y!="" && w!="" && h!="" && scale!="" && name!="") {
+ print x, y, w, h, scale, name
+ }
+ }')
+ fi
if [ -z "$monitor_data" ] || [[ "$monitor_data" =~ ^null ]]; then
debug_echo "Error: Could not get focused monitor information"
return 1
@@ -129,6 +236,7 @@ get_monitor_info() {
echo "$monitor_data"
}
+
# Function to calculate dropdown position with proper scaling and centering
calculate_dropdown_position() {
local monitor_info=$(get_monitor_info)
@@ -148,6 +256,13 @@ calculate_dropdown_position() {
debug_echo "Monitor info: x=$mon_x, y=$mon_y, width=$mon_width, height=$mon_height, scale=$mon_scale"
+ # Validate numeric fields
+ if ! [[ "$mon_x" =~ ^-?[0-9]+$ && "$mon_y" =~ ^-?[0-9]+$ && "$mon_width" =~ ^[0-9]+$ && "$mon_height" =~ ^[0-9]+$ ]]; then
+ debug_echo "Invalid monitor info format, using fallback values"
+ echo "100 100 800 600 fallback-monitor"
+ return 1
+ fi
+
# Validate scale value and provide fallback
if [ -z "$mon_scale" ] || [ "$mon_scale" = "null" ] || [ "$mon_scale" = "0" ]; then
debug_echo "Invalid scale value, using 1.0 as fallback"
@@ -207,6 +322,12 @@ get_terminal_address() {
fi
}
+# Try to find an existing dropdown terminal by class (kitty only)
+find_terminal_by_class() {
+ hyprctl clients -j 2>/dev/null | jq -r --arg CLASS "$DROPDOWN_KITTY_CLASS" \
+ '.[] | select(.class == $CLASS) | .address' | head -1
+}
+
# Function to get stored monitor name
get_terminal_monitor() {
if [ -f "$ADDR_FILE" ] && [ -s "$ADDR_FILE" ]; then
@@ -218,22 +339,48 @@ get_terminal_monitor() {
terminal_exists() {
local addr=$(get_terminal_address)
if [ -n "$addr" ]; then
- hyprctl clients -j | jq -e --arg ADDR "$addr" 'any(.[]; .address == $ADDR)' >/dev/null 2>&1
+ hyprctl clients -j 2>/dev/null | jq -e --arg ADDR "$addr" 'any(.[]; .address == $ADDR)' >/dev/null 2>&1
else
return 1
fi
}
-# Function to check if terminal is in special workspace
-terminal_in_special() {
- local addr=$(get_terminal_address)
+# Function to check if a window address exists
+window_exists() {
+ local addr="$1"
+ if [ -n "$addr" ]; then
+ hyprctl clients -j 2>/dev/null | jq -e --arg ADDR "$addr" 'any(.[]; .address == $ADDR)' >/dev/null 2>&1
+ else
+ return 1
+ fi
+}
+
+
+# Function to check if window is pinned
+window_is_pinned() {
+ local addr="$1"
if [ -n "$addr" ]; then
- hyprctl clients -j | jq -e --arg ADDR "$addr" 'any(.[]; .address == $ADDR and .workspace.name == "special:scratchpad")' >/dev/null 2>&1
+ hyprctl clients -j 2>/dev/null | jq -e --arg ADDR "$addr" '.[] | select(.address == $ADDR) | .pinned == true' >/dev/null 2>&1
else
return 1
fi
}
+# Ensure pin state without toggling unexpectedly
+ensure_pinned() {
+ local addr="$1"
+ if ! window_is_pinned "$addr"; then
+ hyprctl dispatch pin "address:$addr" >/dev/null 2>&1
+ fi
+}
+
+ensure_unpinned() {
+ local addr="$1"
+ if window_is_pinned "$addr"; then
+ hyprctl dispatch pin "address:$addr" >/dev/null 2>&1
+ fi
+}
+
# Function to spawn terminal and capture its address
spawn_terminal() {
debug_echo "Creating new dropdown terminal with command: $TERMINAL_CMD"
@@ -288,12 +435,13 @@ spawn_terminal() {
# Small delay to ensure it's properly in special workspace
sleep 0.2
-
- # Now bring it back with the same animation as subsequent shows
- # Use movetoworkspacesilent to avoid affecting workspace history
+ # Move to current workspace but start hidden off-screen
hyprctl dispatch movetoworkspacesilent "$CURRENT_WS,address:$new_addr"
- hyprctl dispatch pin "address:$new_addr"
- animate_slide_down "$new_addr" "$target_x" "$target_y" "$width" "$height"
+ ensure_pinned "$new_addr"
+ hyprctl dispatch resizewindowpixel "exact $width $height,address:$new_addr" >/dev/null 2>&1
+ local off_y=$((target_y - height - 200))
+ hyprctl dispatch movewindowpixel "exact $target_x $off_y,address:$new_addr" >/dev/null 2>&1
+ set_hidden_state "hidden"
return 0
fi
@@ -303,8 +451,9 @@ spawn_terminal() {
}
# Main logic
-if terminal_exists; then
- TERMINAL_ADDR=$(get_terminal_address)
+TERMINAL_ADDR=$(resolve_terminal_address)
+
+if [ -n "$TERMINAL_ADDR" ]; then
debug_echo "Found existing terminal: $TERMINAL_ADDR"
focused_monitor=$(get_monitor_info | awk '{print $6}')
dropdown_monitor=$(get_terminal_monitor)
@@ -324,8 +473,9 @@ if terminal_exists; then
echo "$TERMINAL_ADDR $monitor_name" >"$ADDR_FILE"
fi
- if terminal_in_special; then
- debug_echo "Bringing terminal from scratchpad with slide down animation"
+ hidden_state=$(get_hidden_state)
+ if [ "$hidden_state" = "hidden" ] || [ -z "$hidden_state" ] || window_is_hidden "$TERMINAL_ADDR"; then
+ debug_echo "Bringing terminal from hidden position with slide down animation"
# Calculate target position
pos_info=$(calculate_dropdown_position)
@@ -334,17 +484,16 @@ if terminal_exists; then
width=$(echo $pos_info | cut -d' ' -f3)
height=$(echo $pos_info | cut -d' ' -f4)
- # Use movetoworkspacesilent to avoid affecting workspace history
- hyprctl dispatch movetoworkspacesilent "$CURRENT_WS,address:$TERMINAL_ADDR"
- hyprctl dispatch pin "address:$TERMINAL_ADDR"
+ ensure_pinned "$TERMINAL_ADDR"
# Set size and animate slide down
hyprctl dispatch resizewindowpixel "exact $width $height,address:$TERMINAL_ADDR"
animate_slide_down "$TERMINAL_ADDR" "$target_x" "$target_y" "$width" "$height"
hyprctl dispatch focuswindow "address:$TERMINAL_ADDR"
+ set_hidden_state "shown"
else
- debug_echo "Hiding terminal to scratchpad with slide up animation"
+ debug_echo "Hiding terminal off-screen with slide up animation"
# Get current geometry for animation
geometry=$(get_window_geometry "$TERMINAL_ADDR")
@@ -359,14 +508,16 @@ if terminal_exists; then
# Animate slide up first
animate_slide_up "$TERMINAL_ADDR" "$curr_x" "$curr_y" "$curr_width" "$curr_height"
- # Small delay then move to special workspace and unpin
- sleep 0.1
- hyprctl dispatch pin "address:$TERMINAL_ADDR" # Unpin (toggle)
- hyprctl dispatch movetoworkspacesilent "$SPECIAL_WS,address:$TERMINAL_ADDR"
+ # Move off-screen after animation
+ off_y=$((curr_y - curr_height - 200))
+ hyprctl dispatch movewindowpixel "exact $curr_x $off_y,address:$TERMINAL_ADDR" >/dev/null 2>&1
+ ensure_unpinned "$TERMINAL_ADDR"
+ set_hidden_state "hidden"
else
- debug_echo "Could not get window geometry, moving to scratchpad without animation"
- hyprctl dispatch pin "address:$TERMINAL_ADDR"
- hyprctl dispatch movetoworkspacesilent "$SPECIAL_WS,address:$TERMINAL_ADDR"
+ debug_echo "Could not get window geometry, moving off-screen without animation"
+ hyprctl dispatch movewindowpixel "exact 0 -1000,address:$TERMINAL_ADDR" >/dev/null 2>&1
+ ensure_unpinned "$TERMINAL_ADDR"
+ set_hidden_state "hidden"
fi
fi
else
diff --git a/config/hypr/scripts/ExternalBrightness.sh b/config/hypr/scripts/ExternalBrightness.sh
new file mode 100755
index 00000000..29c1b238
--- /dev/null
+++ b/config/hypr/scripts/ExternalBrightness.sh
@@ -0,0 +1,103 @@
+#!/usr/bin/env bash
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
+# External monitor brightness via ddcutil
+
+set -u
+
+step=10
+vcp_code=10
+
+usage() {
+ cat <<'EOF'
+Usage: ExternalBrightness.sh [--get|--inc|--dec|--set N] [--display N]
+Env:
+ DDCUTIL_DISPLAY Optional display number passed to ddcutil --display
+ DDCUTIL_OPTS Extra options passed to ddcutil (e.g. "--sleep-multiplier 0.2")
+EOF
+}
+
+ddcutil_cmd() {
+ local display_arg=()
+ local display="${DDCUTIL_DISPLAY:-}"
+ if [[ -n "${display}" ]]; then
+ display_arg+=(--display "${display}")
+ fi
+ ddcutil ${DDCUTIL_OPTS:-} "${display_arg[@]}" "$@"
+}
+
+get_brightness() {
+ # Example output: "VCP code 0x10 (Brightness): current value = 50, max value = 100"
+ local line
+ if ! line="$(ddcutil_cmd getvcp "${vcp_code}" 2>/dev/null | tail -n 1)"; then
+ return 1
+ fi
+ local current max
+ current="$(printf "%s" "${line}" | sed -n 's/.*current value = \([0-9]\+\).*/\1/p')"
+ max="$(printf "%s" "${line}" | sed -n 's/.*max value = \([0-9]\+\).*/\1/p')"
+ [[ -n "${current}" && -n "${max}" ]] || return 1
+ printf "%s %s\n" "${current}" "${max}"
+}
+
+set_brightness() {
+ local value="$1"
+ ddcutil_cmd setvcp "${vcp_code}" "${value}" >/dev/null 2>&1
+}
+
+json_output() {
+ local current max percent icon
+ if ! read -r current max < <(get_brightness); then
+ printf '{"text":"σ°ƒœ N/A","tooltip":"External brightness unavailable (load i2c-dev, allow i2c access)","class":"brightness-external-off"}\n'
+ return 0
+ fi
+ percent=$(( current * 100 / max ))
+ if (( percent >= 80 )); then
+ icon="σ°ƒ "
+ elif (( percent >= 60 )); then
+ icon="σ°ƒŸ"
+ elif (( percent >= 40 )); then
+ icon="σ°ƒž"
+ elif (( percent >= 20 )); then
+ icon="󰃝"
+ else
+ icon=""
+ fi
+ printf '{"text":"%s %s%%","tooltip":"External display brightness: %s%%","class":"brightness-external"}\n' "${icon}" "${percent}" "${percent}"
+}
+
+case "${1:-}" in
+ --get|"")
+ json_output
+ ;;
+ --inc|--dec)
+ read -r current max < <(get_brightness) || exit 1
+ delta=$step
+ [[ "$1" == "--dec" ]] && delta=$(( -step ))
+ new=$(( current + delta ))
+ (( new < 5 )) && new=5
+ (( new > max )) && new="${max}"
+ set_brightness "${new}"
+ json_output
+ ;;
+ --set)
+ [[ -n "${2:-}" ]] || { usage; exit 1; }
+ set_brightness "${2}"
+ json_output
+ ;;
+ --display)
+ [[ -n "${2:-}" ]] || { usage; exit 1; }
+ DDCUTIL_DISPLAY="${2}" shift 2
+ "${0}" "${@:-"--get"}"
+ ;;
+ -h|--help)
+ usage
+ ;;
+ *)
+ usage
+ exit 1
+ ;;
+esac
diff --git a/config/hypr/scripts/Float-all-Windows.sh b/config/hypr/scripts/Float-all-Windows.sh
new file mode 100755
index 00000000..e658cabb
--- /dev/null
+++ b/config/hypr/scripts/Float-all-Windows.sh
@@ -0,0 +1,10 @@
+#!/usr/bin/env bash
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
+
+ws=$(hyprctl activeworkspace -j | jq -r .id)
+hyprctl clients -j | jq -r --arg ws "$ws" '.[] | select(.workspace.id == ($ws|tonumber)) | .address' | xargs -r -I {} hyprctl dispatch togglefloating address:{}
diff --git a/config/hypr/scripts/GameMode.sh b/config/hypr/scripts/GameMode.sh
index a28a27fb..9c5b8264 100755
--- a/config/hypr/scripts/GameMode.sh
+++ b/config/hypr/scripts/GameMode.sh
@@ -1,9 +1,16 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Game Mode. Turning off all animations
notif="$HOME/.config/swaync/images/ja.png"
SCRIPTSDIR="$HOME/.config/hypr/scripts"
+# shellcheck source=/dev/null
+. "$SCRIPTSDIR/WallpaperCmd.sh"
HYPRGAMEMODE=$(hyprctl getoption animations:enabled | awk 'NR==1{print $2}')
@@ -17,13 +24,13 @@ if [ "$HYPRGAMEMODE" = 1 ] ; then
keyword general:border_size 1;\
keyword decoration:rounding 0"
- hyprctl keyword "windowrule opacity 1 override 1 override 1 override, ^(.*)$"
- swww kill
+\thyprctl keyword "windowrule opacity 1 override 1 override 1 override, ^(.*)$"
+ "$WWW_CMD" kill
notify-send -e -u low -i "$notif" " Gamemode:" " enabled"
sleep 0.1
exit
else
- swww-daemon --format xrgb && swww img "$HOME/.config/rofi/.current_wallpaper" &
+\t"$WWW_DAEMON" "${WWW_DAEMON_ARGS[@]}" && "$WWW_CMD" img "$HOME/.config/rofi/.current_wallpaper" &
sleep 0.1
${SCRIPTSDIR}/WallustSwww.sh
sleep 0.5
diff --git a/config/hypr/scripts/Ghostty_themes.sh b/config/hypr/scripts/Ghostty_themes.sh
new file mode 100755
index 00000000..a69f246e
--- /dev/null
+++ b/config/hypr/scripts/Ghostty_themes.sh
@@ -0,0 +1,129 @@
+#!/usr/bin/env bash
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
+# Ghostty theme selector
+
+config_file="$HOME/.config/ghostty/config"
+iDIR="$HOME/.config/swaync/images"
+rofi_theme_primary="$HOME/.config/rofi/config-ghostty-theme.rasi"
+rofi_theme_fallback="$HOME/.config/rofi/config-edit.rasi"
+
+notify_user() {
+ local icon="$1"
+ local title="$2"
+ local body="$3"
+ if [[ -n "$icon" && -f "$icon" ]]; then
+ notify-send -u low -i "$icon" "$title" "$body"
+ else
+ notify-send -u low "$title" "$body"
+ fi
+}
+
+if [[ ! -f "$config_file" ]]; then
+ notify_user "$iDIR/error.png" "Ghostty Theme" "Config not found: $config_file"
+ exit 1
+fi
+
+rofi_config_args=()
+if [[ -f "$rofi_theme_primary" ]]; then
+ rofi_config_args=(-config "$rofi_theme_primary")
+elif [[ -f "$rofi_theme_fallback" ]]; then
+ rofi_config_args=(-config "$rofi_theme_fallback")
+fi
+
+current_theme=$(
+ awk -F'=' '/^[[:space:]]*theme[[:space:]]*=/ {
+ val=$2
+ sub(/^[[:space:]]+/, "", val)
+ sub(/[[:space:]]+$/, "", val)
+ gsub(/^"|"$/, "", val)
+ print val
+ exit
+ }' "$config_file"
+)
+
+mapfile -t available_theme_names < <(
+ awk -F'=' '/^[[:space:]]*#[[:space:]]*theme[[:space:]]*=/ {
+ val=$2
+ sub(/^[[:space:]]+/, "", val)
+ sub(/[[:space:]]+$/, "", val)
+ gsub(/^"|"$/, "", val)
+ print val
+ }' "$config_file"
+)
+
+if [[ ${#available_theme_names[@]} -eq 0 ]]; then
+ notify_user "$iDIR/error.png" "Ghostty Theme" "No commented themes found in $config_file"
+ exit 1
+fi
+
+menu_entries=()
+if [[ -n "$current_theme" ]]; then
+ menu_entries+=("Current: $current_theme")
+fi
+for t in "${available_theme_names[@]}"; do
+ menu_entries+=("$t")
+done
+
+choice=$(
+ printf "%s\n" "${menu_entries[@]}" |
+ rofi -i -dmenu -p "Ghostty Theme" "${rofi_config_args[@]}" -mesg "Select a theme to apply"
+)
+
+[[ -z "$choice" ]] && exit 0
+
+if [[ "$choice" == "Current: "* ]]; then
+ exit 0
+fi
+
+selected_theme="$choice"
+
+if [[ -n "$current_theme" && "$selected_theme" == "$current_theme" ]]; then
+ exit 0
+fi
+
+format_theme_value() {
+ if [[ "$1" =~ [[:space:]] ]]; then
+ printf "\"%s\"" "$1"
+ else
+ printf "%s" "$1"
+ fi
+}
+
+selected_formatted=$(format_theme_value "$selected_theme")
+
+tmp_file=$(mktemp)
+awk -v selected="$selected_theme" -v selected_formatted="$selected_formatted" '
+function trim(s) { sub(/^[[:space:]]+/, "", s); sub(/[[:space:]]+$/, "", s); return s }
+function strip_quotes(s) { gsub(/^"|"$/, "", s); return s }
+{
+ line=$0
+ if ($0 ~ /^[[:space:]]*theme[[:space:]]*=/) {
+ sub(/^[[:space:]]*theme[[:space:]]*=/, "#theme =", line)
+ print line
+ next
+ }
+ if ($0 ~ /^[[:space:]]*#[[:space:]]*theme[[:space:]]*=/) {
+ val=$0
+ sub(/^[[:space:]]*#[[:space:]]*theme[[:space:]]*=[[:space:]]*/, "", val)
+ val=trim(val)
+ val=strip_quotes(val)
+ if (val == selected) {
+ print "theme = " selected_formatted
+ next
+ }
+ }
+ print $0
+}' "$config_file" > "$tmp_file"
+
+mv "$tmp_file" "$config_file"
+
+pkill -SIGUSR2 ghostty >/dev/null 2>&1 || true
+
+notify_user "$iDIR/ja.png" "Ghostty Theme Applied" "$selected_theme"
+
+exit 0
diff --git a/config/hypr/scripts/Hypridle.sh b/config/hypr/scripts/Hypridle.sh
index 4bf6a985..240fec3e 100755
--- a/config/hypr/scripts/Hypridle.sh
+++ b/config/hypr/scripts/Hypridle.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# This is for custom version of waybar idle_inhibitor which activates / deactivates hypridle instead
PROCESS="hypridle"
diff --git a/config/hypr/scripts/Hyprsunset.sh b/config/hypr/scripts/Hyprsunset.sh
index 4a2b52f4..52140728 100755
--- a/config/hypr/scripts/Hyprsunset.sh
+++ b/config/hypr/scripts/Hyprsunset.sh
@@ -1,4 +1,10 @@
#!/usr/bin/env bash
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
set -euo pipefail
# Hyprsunset toggle + Waybar status helper
diff --git a/config/hypr/scripts/KeyBinds.sh b/config/hypr/scripts/KeyBinds.sh
index 341f104f..69111047 100755
--- a/config/hypr/scripts/KeyBinds.sh
+++ b/config/hypr/scripts/KeyBinds.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# searchable enabled keybinds using rofi (supports bindd descriptions)
# kill yad to not interfere with this binds
diff --git a/config/hypr/scripts/KeyHints.sh b/config/hypr/scripts/KeyHints.sh
index 3916a925..f00837d3 100755
--- a/config/hypr/scripts/KeyHints.sh
+++ b/config/hypr/scripts/KeyHints.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# GDK BACKEND. Change to either wayland or x11 if having issues
BACKEND=wayland
@@ -40,8 +45,8 @@ GDK_BACKEND=$BACKEND yad \
"ξ―† 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 + swww)" \
-"CTRL ALT W" "Random wallpaper" "(via swww)" \
+"ξ―† 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)" \
diff --git a/config/hypr/scripts/KeybindsLayoutInit.sh b/config/hypr/scripts/KeybindsLayoutInit.sh
index 80bee9d6..f47197af 100755
--- a/config/hypr/scripts/KeybindsLayoutInit.sh
+++ b/config/hypr/scripts/KeybindsLayoutInit.sh
@@ -1,14 +1,19 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Initialize J/K keybinds so they always cycle windows globally (no layout-specific behavior)
# This avoids double-actions when layouts change.
set -euo pipefail
# Always reset and bind SUPER+J/K the same way on startup
-hyprctl keyword unbind SUPER,J || true
-hyprctl keyword unbind SUPER,K || true
+hyprctl keyword unbind SUPER,j || true
+hyprctl keyword unbind SUPER,k || true
-# Cycle windows globally: J = next, K = previous
-hyprctl keyword bind SUPER,J,cyclenext
-hyprctl keyword bind SUPER,K,cyclenext,prev
+# Cycle windows globally
+hyprctl keyword bind SUPER,j,layoutmsg,cyclenext
+hyprctl keyword bind SUPER,k,layoutmsg,cycleprev
diff --git a/config/hypr/scripts/KeyboardLayout.sh b/config/hypr/scripts/KeyboardLayout.sh
index 926514dd..fe092e7f 100755
--- a/config/hypr/scripts/KeyboardLayout.sh
+++ b/config/hypr/scripts/KeyboardLayout.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# This is for changing kb_layouts. Set kb_layouts in "$HOME/.config/hypr/UserConfigs/UserSettings.conf"
notif_icon="$HOME/.config/swaync/images/ja.png"
diff --git a/config/hypr/scripts/KillActiveProcess.sh b/config/hypr/scripts/KillActiveProcess.sh
index ff0628b2..66d6b009 100755
--- a/config/hypr/scripts/KillActiveProcess.sh
+++ b/config/hypr/scripts/KillActiveProcess.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Copied from Discord post. Thanks to @Zorg
diff --git a/config/hypr/scripts/Kitty_themes.sh b/config/hypr/scripts/Kitty_themes.sh
index 8bc6e0f0..3183b20b 100755
--- a/config/hypr/scripts/Kitty_themes.sh
+++ b/config/hypr/scripts/Kitty_themes.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */Β  #
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Kitty Themes Source https://github.com/dexpota/kitty-themes #
# Define directories and variables
@@ -23,6 +28,8 @@ apply_kitty_theme_to_config() {
fi
local theme_file_path_to_apply
if [ "$theme_name_to_apply" = "Set by wallpaper" ]; then
+ theme_file_path_to_apply="$kitty_themes_DiR/01-Wallust.conf"
+ elif [ "$theme_name_to_apply" = "Default no color" ]; then
theme_file_path_to_apply="$kitty_themes_DiR/00-Default.conf"
else
theme_file_path_to_apply="$kitty_themes_DiR/$theme_name_to_apply.conf"
@@ -80,7 +87,7 @@ fi
original_kitty_config_content_backup=$(cat "$kitty_config")
mapfile -t available_theme_names < <(find "$kitty_themes_DiR" -maxdepth 1 -name "*.conf" -type f -printf "%f\n" | sed 's/\.conf$//' | grep -v -E '^(00-Default|01-Wallust)$' | sort)
-available_theme_names=("Set by wallpaper" "${available_theme_names[@]}")
+available_theme_names=("Set by wallpaper" "Default no color" "${available_theme_names[@]}")
if [ ${#available_theme_names[@]} -eq 0 ]; then
notify_user "$iDIR/error.png" "No Kitty Themes" "No .conf files found in $kitty_themes_DiR."
@@ -89,8 +96,10 @@ fi
current_selection_index=0
current_active_theme_name=$(awk -F'include ./kitty-themes/|\\.conf' '/^[[:space:]]*include \\.\/kitty-themes\/.*\\.conf/{print $2; exit}' "$kitty_config")
-if [ "$current_active_theme_name" = "00-Default" ]; then
+if [ "$current_active_theme_name" = "01-Wallust" ]; then
current_active_theme_name="Set by wallpaper"
+elif [ "$current_active_theme_name" = "00-Default" ]; then
+ current_active_theme_name="Default no color"
fi
if [ -n "$current_active_theme_name" ]; then
diff --git a/config/hypr/scripts/KooLsDotsUpdate.sh b/config/hypr/scripts/KooLsDotsUpdate.sh
index 8ed50f27..887993a5 100755
--- a/config/hypr/scripts/KooLsDotsUpdate.sh
+++ b/config/hypr/scripts/KooLsDotsUpdate.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# simple bash script to check if update is available by comparing local version and github version
# Local Paths
diff --git a/config/hypr/scripts/Kool_Quick_Settings.sh b/config/hypr/scripts/Kool_Quick_Settings.sh
index 5081fe72..fcd04998 100755
--- a/config/hypr/scripts/Kool_Quick_Settings.sh
+++ b/config/hypr/scripts/Kool_Quick_Settings.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Rofi menu for KooL Hyprland Quick Settings (SUPER SHIFT E)
# Updated for UserConfigs/configs separation
@@ -193,6 +198,7 @@ Edit System Default Settings
--- UTILITIES ---
Set SDDM Wallpaper
Choose Kitty Terminal Theme
+Choose Ghostty Terminal Theme
Configure Monitors (nwg-displays)
Configure Workspace Rules (nwg-displays)
GTK Settings (nwg-look)
@@ -230,6 +236,7 @@ main() {
"Edit System Default Settings") file="$configs/SystemSettings.conf" ;;
"Set SDDM Wallpaper") $scriptsDir/sddm_wallpaper.sh --normal ;;
"Choose Kitty Terminal Theme") $scriptsDir/Kitty_themes.sh ;;
+ "Choose Ghostty Terminal Theme") $scriptsDir/Ghostty_themes.sh ;;
"Configure Monitors (nwg-displays)")
if ! command -v nwg-displays &>/dev/null; then
notify-send -i "$iDIR/error.png" "E-R-R-O-R" "Install nwg-displays first"
diff --git a/config/hypr/scripts/LockScreen.sh b/config/hypr/scripts/LockScreen.sh
index 548a7652..a7b27ad9 100755
--- a/config/hypr/scripts/LockScreen.sh
+++ b/config/hypr/scripts/LockScreen.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# For Hyprlock
#pidof hyprlock || hyprlock -q
diff --git a/config/hypr/scripts/MediaCtrl.sh b/config/hypr/scripts/MediaCtrl.sh
index b49a967b..aeabcac9 100755
--- a/config/hypr/scripts/MediaCtrl.sh
+++ b/config/hypr/scripts/MediaCtrl.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Playerctl
music_icon="$HOME/.config/swaync/icons/music.png"
diff --git a/config/hypr/scripts/MonitorProfiles.sh b/config/hypr/scripts/MonitorProfiles.sh
index 62213490..78825986 100755
--- a/config/hypr/scripts/MonitorProfiles.sh
+++ b/config/hypr/scripts/MonitorProfiles.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# For applying Pre-configured Monitor Profiles
# Check if rofi is already running
diff --git a/config/hypr/scripts/OverviewToggle.sh b/config/hypr/scripts/OverviewToggle.sh
index 3fe9ba96..719788da 100755
--- a/config/hypr/scripts/OverviewToggle.sh
+++ b/config/hypr/scripts/OverviewToggle.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ #
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Overview toggle wrapper - tries Quickshell first, falls back to AGS
set -euo pipefail
diff --git a/config/hypr/scripts/Polkit-NixOS.sh b/config/hypr/scripts/Polkit-NixOS.sh
index 925deab5..c1e6e0a2 100755
--- a/config/hypr/scripts/Polkit-NixOS.sh
+++ b/config/hypr/scripts/Polkit-NixOS.sh
@@ -1,6 +1,26 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
-# For NixOS starting of polkit-gnome. Dec 2023, the settings stated in NixOS wiki does not work so have to manual start it
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
+# For NixOS starting of polkit agents. Prefer xfce4-polkit, fallback to polkit-gnome.
+
+# Find all xfce4-polkit executables in the Nix store
+xfce_polkit_paths=$(find /nix/store -name 'xfce4-polkit' -type f 2>/dev/null)
+
+for xfce_polkit_path in $xfce_polkit_paths; do
+ # Extract the directory containing the executable
+ xfce_polkit_dir=$(dirname "$xfce_polkit_path")
+
+ # Check if the executable is valid and exists
+ if [ -x "$xfce_polkit_dir/xfce4-polkit" ]; then
+ # Start the xfce4-polkit Authentication Agent
+ "$xfce_polkit_dir/xfce4-polkit" &
+ exit 0
+ fi
+done
# Find all polkit-gnome executables in the Nix store
polkit_gnome_paths=$(find /nix/store -name 'polkit-gnome-authentication-agent-1' -type f 2>/dev/null)
@@ -18,4 +38,4 @@ for polkit_gnome_path in $polkit_gnome_paths; do
done
# If no valid executable is found, report an error
-echo "No valid Polkit-GNOME Authentication Agent executable found." \ No newline at end of file
+echo "No valid polkit authentication agent executable found."
diff --git a/config/hypr/scripts/Polkit.sh b/config/hypr/scripts/Polkit.sh
index 9db94d89..768747ab 100755
--- a/config/hypr/scripts/Polkit.sh
+++ b/config/hypr/scripts/Polkit.sh
@@ -1,19 +1,47 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# This script starts the first available Polkit agent from a list of possible locations
+# Avoid duplicate agents (common with UWSM/session autostart)
+if pgrep -u "$UID" -f 'xfce-polkit|polkit-gnome-authentication-agent-1|polkit-kde-authentication-agent-1|polkit-mate-authentication-agent-1|mate-polkit|hyprpolkitagent' >/dev/null 2>&1; then
+ echo "Polkit agent already running. Skipping start."
+ exit 0
+fi
+
+# Ensure Qt apps default to Wayland in a Wayland session
+if [ -n "${WAYLAND_DISPLAY:-}" ] && [ -z "${QT_QPA_PLATFORM:-}" ]; then
+ export QT_QPA_PLATFORM=wayland
+fi
-# List of potential Polkit agent file paths
+# Avoid KDE polkit agent crashing if Kvantum QML module is missing
+if [ -z "${QT_QUICK_CONTROLS_STYLE:-}" ]; then
+ export QT_QUICK_CONTROLS_STYLE=Basic
+fi
+if [ -z "${QT_STYLE_OVERRIDE:-}" ]; then
+ export QT_STYLE_OVERRIDE=Fusion
+fi
+
+# List of potential Polkit agent file paths (preferred order)
polkit=(
+ "/usr/bin/xfce-polkit"
+ "/usr/lib/xfce4/polkit-agent/xfce-polkit"
+ "/usr/libexec/xfce-polkit"
"/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1"
- "/usr/libexec/hyprpolkitagent"
- "/usr/lib/hyprpolkitagent"
- "/usr/lib/hyprpolkitagent/hyprpolkitagent"
- "/usr/lib/polkit-kde-authentication-agent-1"
"/usr/lib/polkit-gnome-authentication-agent-1"
"/usr/libexec/polkit-gnome-authentication-agent-1"
"/usr/libexec/polkit-mate-authentication-agent-1"
- "/usr/lib/x86_64-linux-gnu/libexec/polkit-kde-authentication-agent-1"
+ "/usr/lib/polkit-mate/polkit-mate-authentication-agent-1"
+ "/usr/bin/polkit-mate-authentication-agent-1"
"/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/PortalHyprland.sh b/config/hypr/scripts/PortalHyprland.sh
index 79b1bb96..243ee2e8 100755
--- a/config/hypr/scripts/PortalHyprland.sh
+++ b/config/hypr/scripts/PortalHyprland.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# For manually starting xdg-desktop-portal-hyprland
set -euo pipefail
diff --git a/config/hypr/scripts/PortalHyprlandUbuntu.sh b/config/hypr/scripts/PortalHyprlandUbuntu.sh
new file mode 100755
index 00000000..86e1a6d3
--- /dev/null
+++ b/config/hypr/scripts/PortalHyprlandUbuntu.sh
@@ -0,0 +1,24 @@
+#!/usr/bin/env bash
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
+# Ubuntu-based workaround: start portals manually before waybar.
+
+set -euo pipefail
+
+if [[ -r /etc/os-release ]]; then
+ # shellcheck disable=SC1091
+ . /etc/os-release
+ if [[ "${ID:-}" == "ubuntu" \
+ || "${ID:-}" == "linuxmint" \
+ || "${ID:-}" == "zorin" \
+ || "${ID:-}" == "rhino" \
+ || "${ID_LIKE:-}" == *ubuntu* ]]; then
+ if [[ -x "$HOME/.config/hypr/scripts/PortalHyprland.sh" ]]; then
+ "$HOME/.config/hypr/scripts/PortalHyprland.sh"
+ fi
+ fi
+fi
diff --git a/config/hypr/scripts/PortalHyprlandUbuntu2604.sh b/config/hypr/scripts/PortalHyprlandUbuntu2604.sh
deleted file mode 100755
index 5cb3c01b..00000000
--- a/config/hypr/scripts/PortalHyprlandUbuntu2604.sh
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
-# Ubuntu 26.04 workaround: start portals manually before waybar.
-
-set -euo pipefail
-
-if [[ -r /etc/os-release ]]; then
- # shellcheck disable=SC1091
- . /etc/os-release
- if [[ "${ID:-}" == "ubuntu" && "${VERSION_ID:-}" == "26.04" ]]; then
- if [[ -x "$HOME/.config/hypr/scripts/PortalHyprland.sh" ]]; then
- "$HOME/.config/hypr/scripts/PortalHyprland.sh"
- fi
- fi
-fi
diff --git a/config/hypr/scripts/Refresh.sh b/config/hypr/scripts/Refresh.sh
index 95248b35..03f55fa0 100755
--- a/config/hypr/scripts/Refresh.sh
+++ b/config/hypr/scripts/Refresh.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Scripts for refreshing ags, waybar, rofi, swaync, wallust
SCRIPTSDIR=$HOME/.config/hypr/scripts
@@ -14,8 +19,8 @@ file_exists() {
fi
}
-# Kill already running processes
-_ps=(waybar rofi swaync ags)
+# Kill already running processes (exclude waybar to avoid double reloads)
+_ps=(rofi swaync ags)
for _prs in "${_ps[@]}"; do
if pidof "${_prs}" >/dev/null; then
pkill "${_prs}"
@@ -25,10 +30,6 @@ done
# Clean up any Waybar-spawned cava instances (unique temp conf names)
pkill -f 'waybar-cava\..*\.conf' 2>/dev/null || true
-# added since wallust sometimes not applying
-killall -SIGUSR2 waybar
-# Added sleep for GameMode causing multiple waybar
-sleep 0.1
# quit ags & relaunch ags
#ags -q && ags &
@@ -36,15 +37,22 @@ sleep 0.1
# quit quickshell & relaunch quickshell
#pkill qs && qs &
-# some process to kill
-for pid in $(pidof waybar rofi swaync ags swaybg); do
+# some process to kill (exclude waybar to avoid restart loops)
+for pid in $(pidof rofi swaync ags swaybg); do
kill -SIGUSR1 "$pid"
sleep 0.1
done
-#Restart waybar
-sleep 0.1
-waybar &
+# Reload or start waybar once
+if pidof waybar >/dev/null; then
+ if command -v waybar-msg >/dev/null 2>&1; then
+ waybar-msg cmd reload >/dev/null 2>&1 || true
+ else
+ killall -SIGUSR2 waybar 2>/dev/null || true
+ fi
+else
+ waybar &
+fi
# relaunch swaync
sleep 0.3
diff --git a/config/hypr/scripts/RefreshNoWaybar.sh b/config/hypr/scripts/RefreshNoWaybar.sh
index afbda1f2..f5d564ac 100755
--- a/config/hypr/scripts/RefreshNoWaybar.sh
+++ b/config/hypr/scripts/RefreshNoWaybar.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Modified version of Refresh.sh but waybar wont refresh
# Used by automatic wallpaper change
@@ -31,9 +36,6 @@ done
# quit quickshell & relaunch quickshell
#pkill qs && qs &
-# Wallust refresh (synchronous to ensure colors are ready)
-${SCRIPTSDIR}/WallustSwww.sh
-sleep 0.2
# reload swaync
swaync-client --reload-config
diff --git a/config/hypr/scripts/RofiEmoji.sh b/config/hypr/scripts/RofiEmoji.sh
index a21c2374..539a03b6 100755
--- a/config/hypr/scripts/RofiEmoji.sh
+++ b/config/hypr/scripts/RofiEmoji.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Variables
rofi_theme="$HOME/.config/rofi/config-emoji.rasi"
diff --git a/config/hypr/scripts/RofiSearch.sh b/config/hypr/scripts/RofiSearch.sh
index d7dd5726..42b54d75 100755
--- a/config/hypr/scripts/RofiSearch.sh
+++ b/config/hypr/scripts/RofiSearch.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# For Searching via web browsers
# Define the path to the config file
diff --git a/config/hypr/scripts/RofiThemeSelector-modified.sh b/config/hypr/scripts/RofiThemeSelector-modified.sh
index de3ebf4a..535b7313 100755
--- a/config/hypr/scripts/RofiThemeSelector-modified.sh
+++ b/config/hypr/scripts/RofiThemeSelector-modified.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# A modified version of Rofi-Theme-Selector, concentrating only on ~/.local and also, applying only 10 @themes in ~/.config/rofi/config.rasi
# as opposed to continous adding of //@theme
diff --git a/config/hypr/scripts/RofiThemeSelector.sh b/config/hypr/scripts/RofiThemeSelector.sh
index 66327d09..db723b6f 100755
--- a/config/hypr/scripts/RofiThemeSelector.sh
+++ b/config/hypr/scripts/RofiThemeSelector.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */Β  #
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Rofi Themes - Script to preview and apply themes by live-reloading the config.
# --- Configuration ---
diff --git a/config/hypr/scripts/ScreenShot.sh b/config/hypr/scripts/ScreenShot.sh
index b12c08f0..baad89a1 100755
--- a/config/hypr/scripts/ScreenShot.sh
+++ b/config/hypr/scripts/ScreenShot.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Screenshots scripts
# variables
@@ -25,7 +30,7 @@ notify_cmd_NOT="notify-send -u low -i ${iDoR}/note.png "
notify_view() {
if [[ "$1" == "active" ]]; then
if [[ -e "${active_window_path}" ]]; then
- "${sDIR}/Sounds.sh" --screenshot
+ "${sDIR}/Sounds.sh" --screenshot >/dev/null 2>&1 &
resp=$(timeout 5 ${notify_cmd_shot_win} " Screenshot of:" " ${active_window_class} Saved.")
case "$resp" in
action1)
@@ -37,11 +42,11 @@ notify_view() {
esac
else
${notify_cmd_NOT} " Screenshot of:" " ${active_window_class} NOT Saved."
- "${sDIR}/Sounds.sh" --error
+ "${sDIR}/Sounds.sh" --error >/dev/null 2>&1 &
fi
elif [[ "$1" == "swappy" ]]; then
- "${sDIR}/Sounds.sh" --screenshot
+ "${sDIR}/Sounds.sh" --screenshot >/dev/null 2>&1 &
resp=$(${notify_cmd_shot} " Screenshot:" " Captured by Swappy")
case "$resp" in
action1)
@@ -55,7 +60,7 @@ notify_view() {
else
local check_file="${dir}/${file}"
if [[ -e "$check_file" ]]; then
- "${sDIR}/Sounds.sh" --screenshot
+ "${sDIR}/Sounds.sh" --screenshot >/dev/null 2>&1 &
resp=$(timeout 5 ${notify_cmd_shot} " Screenshot" " Saved")
case "$resp" in
action1)
@@ -67,7 +72,7 @@ notify_view() {
esac
else
${notify_cmd_NOT} " Screenshot" " NOT Saved"
- "${sDIR}/Sounds.sh" --error
+ "${sDIR}/Sounds.sh" --error >/dev/null 2>&1 &
fi
fi
}
@@ -83,14 +88,12 @@ countdown() {
# take shots
shotnow() {
cd ${dir} && grim - | tee "$file" | wl-copy
- sleep 2
notify_view
}
shot5() {
countdown '5'
sleep 1 && cd ${dir} && grim - | tee "$file" | wl-copy
- sleep 1
notify_view
}
@@ -125,7 +128,6 @@ shotactive() {
active_window_path="${dir}/${active_window_file}"
hyprctl -j activewindow | jq -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"' | grim -g - "${active_window_path}"
- sleep 1
notify_view "active"
}
@@ -156,10 +158,10 @@ elif [[ "$1" == "--area" ]]; then
shotarea
elif [[ "$1" == "--active" ]]; then
shotactive
-elif [[ "$1" == "--swappy" ]]; then
+elif [[ "$1" == "--swappy" || "$1" == "--swapp" || "$1" == "--swap" ]]; then
shotswappy
else
- echo -e "Available Options : --now --in5 --in10 --win --area --active --swappy"
+ echo -e "Available Options : --now --in5 --in10 --win --area --active --swappy (--swapp/--swap)"
fi
exit 0
diff --git a/config/hypr/scripts/Sounds.sh b/config/hypr/scripts/Sounds.sh
index 7c0bf57c..3af4944f 100755
--- a/config/hypr/scripts/Sounds.sh
+++ b/config/hypr/scripts/Sounds.sh
@@ -1,10 +1,16 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# This script is used to play system sounds.
# Script is used by Volume.Sh and ScreenShots.sh
theme="freedesktop" # Set the theme for the system sounds.
mute=false # Set to true to mute the system sounds.
+directSoundDir="$HOME/.config/hypr/sounds"
# Mute individual sounds here.
muteScreenshots=false
@@ -20,16 +26,19 @@ if [[ "$1" == "--screenshot" ]]; then
if [[ "$muteScreenshots" = true ]]; then
exit 0
fi
+ directSound="$directSoundDir/screenshot.ogg"
soundoption="screen-capture.*"
elif [[ "$1" == "--volume" ]]; then
if [[ "$muteVolume" = true ]]; then
exit 0
fi
+ directSound="$directSoundDir/volume.ogg"
soundoption="audio-volume-change.*"
elif [[ "$1" == "--error" ]]; then
if [[ "$muteScreenshots" = true ]]; then
exit 0
fi
+ directSound="$directSoundDir/error.ogg"
soundoption="dialog-error.*"
else
echo -e "Available sounds: --screenshot, --volume, --error"
@@ -57,6 +66,29 @@ fi
iTheme=$(cat "$sDIR/index.theme" | grep -i "inherits" | cut -d "=" -f 2)
iDIR="$sDIR/../$iTheme"
+# Helper to play in the background (fast return).
+play_sound() {
+ if command -v paplay >/dev/null 2>&1; then
+ paplay "$1" >/dev/null 2>&1 &
+ exit 0
+ fi
+ if command -v pw-play >/dev/null 2>&1; then
+ pw-play "$1" >/dev/null 2>&1 &
+ exit 0
+ fi
+ if command -v aplay >/dev/null 2>&1; then
+ aplay "$1" >/dev/null 2>&1 &
+ exit 0
+ fi
+ echo "Error: No suitable audio player found. Install paplay (pulseaudio-utils) or PipeWire/ALSA tools."
+ exit 1
+}
+
+# If a direct sound file exists, play it immediately to avoid lookup delay.
+if [[ -n "$directSound" && -f "$directSound" ]]; then
+ play_sound "$directSound"
+fi
+
# Find the sound file and play it.
sound_file=$(find -L $sDIR/stereo -name "$soundoption" -print -quit)
if ! test -f "$sound_file"; then
@@ -72,19 +104,5 @@ if ! test -f "$sound_file"; then
fi
fi
fi
-
-# Play the sound: prefer PipeWire, then PulseAudio, then ALSA
-if command -v pw-play >/dev/null 2>&1; then
- pw-play "$sound_file" && exit 0
-fi
-
-if command -v paplay >/dev/null 2>&1; then
- paplay "$sound_file" && exit 0
-fi
-
-if command -v aplay >/dev/null 2>&1; then
- aplay "$sound_file" && exit 0
-fi
-
-echo "Error: No suitable audio player (pw-play/paplay/aplay) found."
-exit 1
+# Play the sound (background for quick return).
+play_sound "$sound_file"
diff --git a/config/hypr/scripts/Tak0-Autodispatch.sh b/config/hypr/scripts/Tak0-Autodispatch.sh
index 6ed7ec13..034a6402 100755
--- a/config/hypr/scripts/Tak0-Autodispatch.sh
+++ b/config/hypr/scripts/Tak0-Autodispatch.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# ─────────────────────────────────────────────────────────────────────────────
# Tak0-Autodispatch.sh
# ─────────────────────────────────────────────────────────────────────────────
diff --git a/config/hypr/scripts/Tak0-Per-Window-Switch.sh b/config/hypr/scripts/Tak0-Per-Window-Switch.sh
index 3ba2c7af..04baebe0 100755
--- a/config/hypr/scripts/Tak0-Per-Window-Switch.sh
+++ b/config/hypr/scripts/Tak0-Per-Window-Switch.sh
@@ -1,3 +1,9 @@
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
##################################################################
# #
# #
diff --git a/config/hypr/scripts/ThemeChanger.sh b/config/hypr/scripts/ThemeChanger.sh
index 19ee3298..b41738f6 100755
--- a/config/hypr/scripts/ThemeChanger.sh
+++ b/config/hypr/scripts/ThemeChanger.sh
@@ -1,4 +1,10 @@
#!/usr/bin/env bash
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
set -euo pipefail
# SPDX-FileCopyrightText: 2025-present Ahum Maitra theahummaitra@gmail.com
diff --git a/config/hypr/scripts/Toggle-Active-Window-Audio.sh b/config/hypr/scripts/Toggle-Active-Window-Audio.sh
index 4d9bcd33..f32ded0e 100755
--- a/config/hypr/scripts/Toggle-Active-Window-Audio.sh
+++ b/config/hypr/scripts/Toggle-Active-Window-Audio.sh
@@ -1,4 +1,10 @@
#!/usr/bin/env bash
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
set -euo pipefail
XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
diff --git a/config/hypr/scripts/Toggle-weather-waybar-units.sh b/config/hypr/scripts/Toggle-weather-waybar-units.sh
index 4007536c..abc089ff 100755
--- a/config/hypr/scripts/Toggle-weather-waybar-units.sh
+++ b/config/hypr/scripts/Toggle-weather-waybar-units.sh
@@ -1,4 +1,10 @@
#!/usr/bin/env bash
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Toggle waybar-weather units between metric and imperial
CONFIG_FILE="$HOME/.config/waybar-weather/config.toml"
diff --git a/config/hypr/scripts/TouchPad.sh b/config/hypr/scripts/TouchPad.sh
index 56506382..1042a652 100755
--- a/config/hypr/scripts/TouchPad.sh
+++ b/config/hypr/scripts/TouchPad.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# For disabling touchpad.
# Edit the Touchpad_Device on ~/.config/hypr/UserConfigs/Laptops.conf according to your system
# use hyprctl devices to get your system touchpad device name
diff --git a/config/hypr/scripts/UptimeNixOS.sh b/config/hypr/scripts/UptimeNixOS.sh
index 654ae2c8..5c3085b1 100755
--- a/config/hypr/scripts/UptimeNixOS.sh
+++ b/config/hypr/scripts/UptimeNixOS.sh
@@ -1,4 +1,10 @@
#!/usr/bin/env bash
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Script parses /proc/uptime to get the system uptime
# and prints it in a human-readable format
# This is a workaround for system where `uptime` command is taken from coreutils
diff --git a/config/hypr/scripts/UserConfigsSwitcher.sh b/config/hypr/scripts/UserConfigsSwitcher.sh
index ac44b4bc..7d9968a6 100755
--- a/config/hypr/scripts/UserConfigsSwitcher.sh
+++ b/config/hypr/scripts/UserConfigsSwitcher.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Script to manage UserConfigs and UserConfigsBak
HYPR_CONFIG_DIR="$HOME/.config/hypr"
diff --git a/config/hypr/scripts/Volume.sh b/config/hypr/scripts/Volume.sh
index 41e474d0..dec7837c 100755
--- a/config/hypr/scripts/Volume.sh
+++ b/config/hypr/scripts/Volume.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Scripts for volume controls for audio and mic
iDIR="$HOME/.config/swaync/icons"
diff --git a/config/hypr/scripts/WallpaperCmd.sh b/config/hypr/scripts/WallpaperCmd.sh
new file mode 100755
index 00000000..0191ee14
--- /dev/null
+++ b/config/hypr/scripts/WallpaperCmd.sh
@@ -0,0 +1,31 @@
+#!/usr/bin/env bash
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
+# Wallpaper command selector (awww preferred, swww fallback)
+
+if command -v awww >/dev/null 2>&1; then
+ WWW_CMD="awww"
+ WWW_DAEMON="awww-daemon"
+ WWW_CACHE_DIR="$HOME/.cache/awww"
+ WWW_DAEMON_ARGS=()
+ WWW_MIGRATION_MARKER="$WWW_CACHE_DIR/.cache_cleared"
+else
+ WWW_CMD="swww"
+ WWW_DAEMON="swww-daemon"
+ WWW_CACHE_DIR="$HOME/.cache/swww"
+ WWW_DAEMON_ARGS=(--format xrgb)
+fi
+# One-time cache clear when migrating from swww to awww
+if [ "$WWW_CMD" = "awww" ]; then
+ mkdir -p "$WWW_CACHE_DIR"
+ if [ ! -f "$WWW_MIGRATION_MARKER" ]; then
+ awww clear-cache >/dev/null 2>&1 || true
+ touch "$WWW_MIGRATION_MARKER"
+ fi
+fi
+
+export WWW_CMD WWW_DAEMON WWW_CACHE_DIR WWW_DAEMON_ARGS WWW_MIGRATION_MARKER
diff --git a/config/hypr/scripts/WallpaperDaemon.sh b/config/hypr/scripts/WallpaperDaemon.sh
new file mode 100755
index 00000000..fc7f71c0
--- /dev/null
+++ b/config/hypr/scripts/WallpaperDaemon.sh
@@ -0,0 +1,66 @@
+#!/usr/bin/env bash
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
+# Start wallpaper daemon, preferring awww with swww fallback
+
+SCRIPTSDIR="$HOME/.config/hypr/scripts"
+# shellcheck source=/dev/null
+. "$SCRIPTSDIR/WallpaperCmd.sh"
+
+if command -v "$WWW_DAEMON" >/dev/null 2>&1 && command -v "$WWW_CMD" >/dev/null 2>&1; then
+ "$WWW_DAEMON" "${WWW_DAEMON_ARGS[@]}" &
+fi
+
+# Give the daemon a moment to become ready
+for _ in {1..20}; do
+ "$WWW_CMD" query >/dev/null 2>&1 && break
+ sleep 0.1
+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"
+ 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
+
+# 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
+
+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 &
+ fi
+fi
diff --git a/config/hypr/scripts/WallustSwww.sh b/config/hypr/scripts/WallustSwww.sh
index 1f0f50c7..9df3ed61 100755
--- a/config/hypr/scripts/WallustSwww.sh
+++ b/config/hypr/scripts/WallustSwww.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Wallust: derive colors from the current wallpaper and update templates
# Usage: WallustSwww.sh [absolute_path_to_wallpaper]
@@ -7,7 +12,15 @@ set -euo pipefail
# Inputs and paths
passed_path="${1:-}"
-cache_dir="$HOME/.cache/swww/"
+if command -v awww >/dev/null 2>&1; then
+ WWW="awww"
+ cache_dir="$HOME/.cache/awww/"
+ cache_dir_fallback="$HOME/.cache/swww/"
+else
+ WWW="swww"
+ cache_dir="$HOME/.cache/swww/"
+ cache_dir_fallback="$HOME/.cache/awww/"
+fi
rofi_link="$HOME/.config/rofi/.current_wallpaper"
wallpaper_current="$HOME/.config/hypr/wallpaper_effects/.wallpaper_current"
read_cached_wallpaper() {
@@ -19,7 +32,7 @@ read_cached_wallpaper() {
read_wallpaper_from_query() {
local monitor="$1"
- swww query | awk -v mon="$monitor" '
+ $WWW query | awk -v mon="$monitor" '
/^Monitor/ {
cur=$2
gsub(":", "", cur)
@@ -46,17 +59,21 @@ wallpaper_path=""
if [[ -n "$passed_path" && -f "$passed_path" ]]; then
wallpaper_path="$passed_path"
else
- # Try to read from swww cache for the focused monitor, with a short retry loop
+ # Try to read from awww/swww cache for the focused monitor, with a short retry loop
current_monitor="$(get_focused_monitor)"
cache_file="$cache_dir$current_monitor"
+ alt_cache_file="${cache_dir_fallback}${current_monitor}"
- # Wait briefly for swww to write its cache after an image change
+ # Wait briefly for awww/swww to write its cache after an image change
for i in {1..10}; do
- if [[ -f "$cache_file" ]]; then
+ if [[ -f "$cache_file" || -f "$alt_cache_file" ]]; then
break
fi
sleep 0.1
done
+ if [[ ! -f "$cache_file" && -f "$alt_cache_file" ]]; then
+ cache_file="$alt_cache_file"
+ fi
if [[ -f "$cache_file" ]]; then
# The first non-filter line is the original wallpaper path
@@ -111,9 +128,28 @@ wallust run -s "$wallpaper_path" || true
wallust_targets=(
"$HOME/.config/waybar/wallust/colors-waybar.css"
"$HOME/.config/rofi/wallust/colors-rofi.rasi"
+ "$HOME/.config/hypr/wallust/wallust-hyprland.conf"
)
wait_for_templates "$start_ts" "${wallust_targets[@]}" || true
+# Normalize Rofi selection colors to a brighter accent and readable foreground
+rofi_colors="$HOME/.config/rofi/wallust/colors-rofi.rasi"
+if [ -f "$rofi_colors" ]; then
+ accent_hex=$(sed -n 's/^\s*color13:\s*\(#[0-9A-Fa-f]\{6\}\).*/\1/p' "$rofi_colors" | head -n1)
+ [ -z "$accent_hex" ] && accent_hex=$(sed -n 's/^\s*color12:\s*\(#[0-9A-Fa-f]\{6\}\).*/\1/p' "$rofi_colors" | head -n1)
+ fg_hex=$(sed -n 's/^\s*foreground:\s*\(#[0-9A-Fa-f]\{6\}\).*/\1/p' "$rofi_colors" | head -n1)
+ if [ -n "$accent_hex" ]; then
+ sed -i -E "s|^(\s*selected-normal-background:\s*).*$|\1$accent_hex;|" "$rofi_colors"
+ sed -i -E "s|^(\s*selected-active-background:\s*).*$|\1$accent_hex;|" "$rofi_colors"
+ sed -i -E "s|^(\s*selected-urgent-background:\s*).*$|\1$accent_hex;|" "$rofi_colors"
+ fi
+ if [ -n "$fg_hex" ]; then
+ sed -i -E "s|^(\s*selected-normal-foreground:\s*).*$|\1$fg_hex;|" "$rofi_colors"
+ sed -i -E "s|^(\s*selected-active-foreground:\s*).*$|\1$fg_hex;|" "$rofi_colors"
+ sed -i -E "s|^(\s*selected-urgent-foreground:\s*).*$|\1$fg_hex;|" "$rofi_colors"
+ fi
+fi
+
# Run kitty-only wallust config to keep terminal palette separate
run_wallust_with_config() {
local cfg="$1"
@@ -125,43 +161,42 @@ run_wallust_with_config() {
}
kitty_cfg="$HOME/.config/wallust/wallust-kitty.toml"
-if [ -f "$kitty_cfg" ]; then
- kitty_ts=$(date +%s)
- run_wallust_with_config "$kitty_cfg"
- wait_for_templates "$kitty_ts" "$HOME/.config/kitty/kitty-themes/01-Wallust.conf" || true
-fi
-
-# Reload kitty colors when wallpaper-based theme is active
-kitty_wallust_theme="$HOME/.config/kitty/kitty-themes/01-Wallust.conf"
-if [ -s "$kitty_wallust_theme" ]; then
- if command -v kitty >/dev/null 2>&1; then
- kitty @ load-config >/dev/null 2>&1 || true
- kitty @ set-colors --all --configured "$kitty_wallust_theme" >/dev/null 2>&1 || true
+(
+ if [ -f "$kitty_cfg" ]; then
+ kitty_ts=$(date +%s)
+ run_wallust_with_config "$kitty_cfg"
+ wait_for_templates "$kitty_ts" "$HOME/.config/kitty/kitty-themes/01-Wallust.conf" || true
fi
- if pidof kitty >/dev/null 2>&1; then
- for pid in $(pidof kitty); do
- kill -SIGUSR1 "$pid" 2>/dev/null || true
- done
- fi
-fi
-# Normalize Ghostty palette syntax in case ':' was used by older files
-if [ -f "$HOME/.config/ghostty/wallust.conf" ]; then
- sed -i -E 's/^(\s*palette\s*=\s*)([0-9]{1,2}):/\1\2=/' "$HOME/.config/ghostty/wallust.conf" 2>/dev/null || true
-fi
+ # Reload kitty colors when wallpaper-based theme is active
+ kitty_wallust_theme="$HOME/.config/kitty/kitty-themes/01-Wallust.conf"
+ if [ -s "$kitty_wallust_theme" ]; then
+ if command -v kitty >/dev/null 2>&1; then
+ kitty @ load-config >/dev/null 2>&1 || true
+ kitty @ set-colors --all --configured "$kitty_wallust_theme" >/dev/null 2>&1 || true
+ fi
+ if pidof kitty >/dev/null 2>&1; then
+ for pid in $(pidof kitty); do
+ kill -SIGUSR1 "$pid" 2>/dev/null || true
+ done
+ fi
+ fi
-# Light wait for Ghostty colors file to be present then signal Ghostty to reload (SIGUSR2)
-for _ in 1 2 3; do
- [ -s "$HOME/.config/ghostty/wallust.conf" ] && break
- sleep 0.1
-done
-if pidof ghostty >/dev/null; then
- for pid in $(pidof ghostty); do kill -SIGUSR2 "$pid" 2>/dev/null || true; done
-fi
+ # Normalize Ghostty palette syntax in case ':' was used by older files
+ if [ -f "$HOME/.config/ghostty/wallust.conf" ]; then
+ sed -i -E 's/^(\s*palette\s*=\s*)([0-9]{1,2}):/\1\2=/' "$HOME/.config/ghostty/wallust.conf" 2>/dev/null || true
+ fi
-# Prompt Waybar to reload colors
-if command -v waybar-msg >/dev/null 2>&1; then
- waybar-msg cmd reload >/dev/null 2>&1 || true
-elif pidof waybar >/dev/null; then
- killall -SIGUSR2 waybar 2>/dev/null || true
-fi
+ # Light wait for Ghostty colors file to be present then signal Ghostty to reload (SIGUSR2)
+ for _ in 1 2 3; do
+ [ -s "$HOME/.config/ghostty/wallust.conf" ] && break
+ sleep 0.1
+ done
+ if pidof ghostty >/dev/null; then
+ for pid in $(pidof ghostty); do kill -SIGUSR2 "$pid" 2>/dev/null || true; done
+ fi
+ # Reload Hyprland so new border colors from wallust-hyprland.conf take effect
+ if command -v hyprctl >/dev/null 2>&1; then
+ hyprctl reload >/dev/null 2>&1 || true
+ fi
+) >/dev/null 2>&1 &
diff --git a/config/hypr/scripts/WaybarCava.sh b/config/hypr/scripts/WaybarCava.sh
index 98db60dd..2295f0ab 100755
--- a/config/hypr/scripts/WaybarCava.sh
+++ b/config/hypr/scripts/WaybarCava.sh
@@ -1,4 +1,10 @@
#!/usr/bin/env bash
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# WaybarCava.sh β€” safer single-instance handling, cleanup, and robustness
# Original concept by LinuxBeginnings; this variant focuses on lifecycle hardening.
diff --git a/config/hypr/scripts/WaybarLayout.sh b/config/hypr/scripts/WaybarLayout.sh
index 247ccf78..66d45a07 100755
--- a/config/hypr/scripts/WaybarLayout.sh
+++ b/config/hypr/scripts/WaybarLayout.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Script for waybar layout or configs
IFS=$'\n\t'
diff --git a/config/hypr/scripts/WaybarScripts.sh b/config/hypr/scripts/WaybarScripts.sh
index 142b548d..afb55712 100755
--- a/config/hypr/scripts/WaybarScripts.sh
+++ b/config/hypr/scripts/WaybarScripts.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ #
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# This file used on waybar modules sourcing defaults set in $HOME/.config/hypr/UserConfigs/01-UserDefaults.conf
# Define the path to the config file
diff --git a/config/hypr/scripts/WaybarStyles.sh b/config/hypr/scripts/WaybarStyles.sh
index 2ed8bf26..611e0a12 100755
--- a/config/hypr/scripts/WaybarStyles.sh
+++ b/config/hypr/scripts/WaybarStyles.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Script for waybar styles
IFS=$'\n\t'
diff --git a/config/hypr/scripts/Wlogout.sh b/config/hypr/scripts/Wlogout.sh
index e33222cc..973c5704 100755
--- a/config/hypr/scripts/Wlogout.sh
+++ b/config/hypr/scripts/Wlogout.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ ##
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# wlogout (Power, Screen Lock, Suspend, etc)
# Set variables for parameters. First numbers corresponts to Monitor Resolution
diff --git a/config/hypr/scripts/build-awww.sh b/config/hypr/scripts/build-awww.sh
new file mode 100755
index 00000000..c59c34c0
--- /dev/null
+++ b/config/hypr/scripts/build-awww.sh
@@ -0,0 +1,209 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+RED="\033[0;31m"
+GREEN="\033[0;32m"
+YELLOW="\033[1;33m"
+BLUE="\033[0;34m"
+NC="\033[0m"
+
+ICON_OK="βœ…"
+ICON_WARN="⚠️"
+ICON_ERR="❌"
+ICON_INFO="ℹ️"
+
+fail() {
+ printf "${RED}${ICON_ERR} %s${NC}\n" "$1" >&2
+ exit 1
+}
+
+info() {
+ printf "${BLUE}${ICON_INFO} %s${NC}\n" "$1"
+}
+
+warn() {
+ printf "${YELLOW}${ICON_WARN} %s${NC}\n" "$1"
+}
+
+ok() {
+ printf "${GREEN}${ICON_OK} %s${NC}\n" "$1"
+}
+
+trap 'fail "Script failed at line $LINENO."' ERR
+
+if [[ ! -t 0 ]]; then
+ fail "This script requires an interactive terminal. Run it directly in a terminal (e.g. ./build-awww.sh)."
+fi
+
+info "Starting awww installer..."
+
+if command -v awww >/dev/null 2>&1; then
+ ok "awww is already installed. Nothing to do."
+ exit 0
+fi
+
+if ! command -v git >/dev/null 2>&1; then
+ fail "git is required but not installed."
+fi
+
+detect_distro() {
+ if [[ -r /etc/os-release ]]; then
+ # shellcheck disable=SC1091
+ . /etc/os-release
+ echo "${ID:-}"
+ return
+ fi
+ echo ""
+}
+
+prompt_confirm_distro() {
+ local detected="$1"
+ local choice=""
+ if [[ -n "$detected" ]]; then
+ printf "${BLUE}${ICON_INFO} Detected distro: %s${NC}\n" "$detected" >/dev/tty
+ printf "Confirm? (Y/y to confirm, N/n to choose, Q/q to quit): " >/dev/tty
+ read -r choice </dev/tty
+ case "$choice" in
+ [Yy]) echo "$detected"; return ;;
+ [Qq]) exit 0 ;;
+ [Nn]) ;;
+ *) warn "Invalid choice, continuing to manual selection." ;;
+ esac
+ fi
+ echo "Supported distros:"
+ echo " 1) debian"
+ echo " 2) ubuntu"
+ echo " 3) arch"
+ echo " 4) opensuse"
+ echo " 5) fedora"
+ echo " 6) gentoo"
+ printf "Select your distro (1-6) or Q/q to quit: " >/dev/tty
+ read -r choice </dev/tty
+ read -r choice
+ case "$choice" in
+ 1) echo "debian" ;;
+ 2) echo "ubuntu" ;;
+ 3) echo "arch" ;;
+ 4) echo "opensuse" ;;
+ 5) echo "fedora" ;;
+ 6) echo "gentoo" ;;
+ [Qq]) exit 0 ;;
+ *) fail "Invalid selection." ;;
+ esac
+}
+
+distro="$(prompt_confirm_distro "$(detect_distro)")"
+
+install_deps_debian_ubuntu() {
+ local missing=()
+ for pkg in pkg-config liblz4-dev; do
+ dpkg -s "$pkg" >/dev/null 2>&1 || missing+=("$pkg")
+ done
+ if (( ${#missing[@]} )); then
+ info "Installing deps: ${missing[*]}"
+ sudo apt update
+ sudo apt install -y "${missing[@]}"
+ else
+ ok "All required deps already installed."
+ fi
+}
+
+install_deps_fedora() {
+ local missing=()
+ for pkg in wayland-protocols lz4-devel wayland-devel; do
+ rpm -q "$pkg" >/dev/null 2>&1 || missing+=("$pkg")
+ done
+ if (( ${#missing[@]} )); then
+ info "Installing deps: ${missing[*]}"
+ sudo dnf install -y "${missing[@]}"
+ else
+ ok "All required deps already installed."
+ fi
+}
+
+install_deps_opensuse() {
+ local missing=()
+ for pkg in pkg-config liblz4-devel; do
+ rpm -q "$pkg" >/dev/null 2>&1 || missing+=("$pkg")
+ done
+ if (( ${#missing[@]} )); then
+ info "Installing deps: ${missing[*]}"
+ sudo zypper install -y "${missing[@]}"
+ else
+ ok "All required deps already installed."
+ fi
+}
+
+install_deps_arch() {
+ local missing=()
+ for pkg in pkgconf lz4 wayland-protocols; do
+ pacman -Qi "$pkg" >/dev/null 2>&1 || missing+=("$pkg")
+ done
+ if (( ${#missing[@]} )); then
+ info "Installing deps: ${missing[*]}"
+ sudo pacman -S --needed --noconfirm "${missing[@]}"
+ else
+ ok "All required deps already installed."
+ fi
+}
+
+ensure_cargo() {
+ if command -v cargo >/dev/null 2>&1; then
+ ok "cargo is available."
+ return
+ fi
+ case "$distro" in
+ debian|ubuntu|fedora|opensuse)
+ info "Installing Rust toolchain via rustup..."
+ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
+ # shellcheck disable=SC1091
+ source "$HOME/.cargo/env"
+ ;;
+ arch)
+ info "Installing Rust toolchain..."
+ sudo pacman -S --needed --noconfirm rust
+ ;;
+ gentoo)
+ ;;
+ *)
+ fail "Unknown distro for cargo install."
+ ;;
+ esac
+ command -v cargo >/dev/null 2>&1 || fail "cargo is still not available."
+}
+
+case "$distro" in
+ debian) install_deps_debian_ubuntu ;;
+ ubuntu) install_deps_debian_ubuntu ;;
+ fedora) install_deps_fedora ;;
+ opensuse) install_deps_opensuse ;;
+ arch) install_deps_arch ;;
+ gentoo)
+ info "Installing awww via Portage..."
+ sudo emerge gui-apps/awww
+ ok "awww installed successfully."
+ exit 0
+ ;;
+ *) fail "Unsupported distro: $distro" ;;
+esac
+
+ensure_cargo
+
+info "Cloning or updating awww..."
+cd "$HOME"
+if [[ -d awww/.git ]]; then
+ git -C awww pull --rebase
+else
+ git clone https://codeberg.org/LGFae/awww.git
+fi
+
+cd "$HOME/awww"
+info "Building awww..."
+cargo build --release
+
+info "Installing binaries..."
+sudo install -vDm755 target/release/awww -t /usr/bin/
+sudo install -vDm755 target/release/awww-daemon -t /usr/bin/
+sudo install -vDm644 completions/_awww -t /usr/share/zsh/site-functions/
+
+ok "awww installed successfully."
diff --git a/config/hypr/scripts/disable.cpu.turbo.sh b/config/hypr/scripts/disable.cpu.turbo.sh
new file mode 100755
index 00000000..dafee76b
--- /dev/null
+++ b/config/hypr/scripts/disable.cpu.turbo.sh
@@ -0,0 +1,63 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+require_root() {
+ if [[ ${EUID} -ne 0 ]]; then
+ exec sudo -- "$0" "$@"
+ fi
+}
+
+write_sysfs() {
+ local path="$1"
+ local value="$2"
+ if [[ -w "$path" ]]; then
+ printf '%s' "$value" >"$path"
+ return 0
+ fi
+ return 1
+}
+
+require_root "$@"
+
+changed=0
+
+# Intel P-State turbo control
+if [[ -e /sys/devices/system/cpu/intel_pstate/no_turbo ]]; then
+ if write_sysfs /sys/devices/system/cpu/intel_pstate/no_turbo 1; then
+ changed=1
+ fi
+fi
+
+# Generic cpufreq boost control (AMD/Intel)
+if [[ -e /sys/devices/system/cpu/cpufreq/boost ]]; then
+ if write_sysfs /sys/devices/system/cpu/cpufreq/boost 0; then
+ changed=1
+ fi
+fi
+
+# Prefer a quieter governor if available
+for gov in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do
+ if [[ -w "$gov" ]]; then
+ current=$(cat "$gov")
+ if [[ "$current" != "powersave" ]] && grep -q powersave "${gov%/*}/scaling_available_governors"; then
+ printf '%s' powersave >"$gov"
+ changed=1
+ fi
+ fi
+done
+
+# Lower energy/performance preference if supported
+for epp in /sys/devices/system/cpu/cpu*/cpufreq/energy_performance_preference; do
+ if [[ -w "$epp" ]]; then
+ printf '%s' power >"$epp" 2>/dev/null || true
+ changed=1
+ fi
+done
+
+if [[ $changed -eq 1 ]]; then
+ echo "CPU turbo/boost disabled and power-saving preferences applied."
+ exit 0
+fi
+
+echo "No writable turbo/boost controls found. Check kernel driver support."
+exit 1
diff --git a/config/hypr/scripts/fastfetch-wrapper.sh b/config/hypr/scripts/fastfetch-wrapper.sh
new file mode 100755
index 00000000..ad5f7873
--- /dev/null
+++ b/config/hypr/scripts/fastfetch-wrapper.sh
@@ -0,0 +1,24 @@
+#!/usr/bin/env bash
+
+# 1. Get the specific ID and the "ID_LIKE" family
+source /etc/os-release
+SPECIFIC_ID=$ID
+FAMILY_ID=$ID_LIKE
+
+# 2. Define your asset directory
+ASSET_DIR="$HOME/.config/fastfetch/images"
+
+# 3. Selection Logic
+if [ -f "$ASSET_DIR/$SPECIFIC_ID.png" ]; then
+ # Use exact match if available (e.g., soplos.png)
+ SELECTED_LOGO="$ASSET_DIR/$SPECIFIC_ID.png"
+elif [ -n "$FAMILY_ID" ] && [ -f "$ASSET_DIR/${FAMILY_ID%% *}.png" ]; then
+ # Fallback to family (e.g., debian.png) - takes the first word of ID_LIKE
+ SELECTED_LOGO="$ASSET_DIR/${FAMILY_ID%% *}.png"
+else
+ # Let fastfetch handle it natively if no custom image found
+ fastfetch
+ exit 0
+fi
+
+fastfetch --kitty "$SELECTED_LOGO"
diff --git a/config/hypr/scripts/hyprshot.sh b/config/hypr/scripts/hyprshot.sh
index 0fb976fa..0e97d15b 100755
--- a/config/hypr/scripts/hyprshot.sh
+++ b/config/hypr/scripts/hyprshot.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
set -e
function Help() {
diff --git a/config/hypr/scripts/install-uv.sh b/config/hypr/scripts/install-uv.sh
index 3582a78e..da4b2d86 100755
--- a/config/hypr/scripts/install-uv.sh
+++ b/config/hypr/scripts/install-uv.sh
@@ -1,2 +1,8 @@
#!/usr/bin/env bash
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
curl -LsSf https://astral.sh/uv/install.sh | sh
diff --git a/config/hypr/scripts/keybinds_parser.py b/config/hypr/scripts/keybinds_parser.py
index d12e3854..5b75d81c 100755
--- a/config/hypr/scripts/keybinds_parser.py
+++ b/config/hypr/scripts/keybinds_parser.py
@@ -1,4 +1,10 @@
#!/usr/bin/env python3
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
import sys
import re
import os
diff --git a/config/hypr/scripts/rofi-emacs-keybinds b/config/hypr/scripts/rofi-emacs-keybinds
new file mode 100755
index 00000000..bee1a54d
--- /dev/null
+++ b/config/hypr/scripts/rofi-emacs-keybinds
@@ -0,0 +1,13 @@
+#!/usr/bin/env bash
+set -u
+set -o pipefail
+
+ROFI_CONFIG="${HOME}/.config/rofi/config-emacs-keybinds.rasi"
+CACHE_FILE="${HOME}/.cache/rofi-emacs-keybinds.txt"
+
+if [[ ! -s "${CACHE_FILE}" ]]; then
+ notify-send "Rofi Emacs Keybinds" "Keybind cache missing. In Emacs, run: M-x rofi-emacs-keybinds-refresh"
+ exit 1
+fi
+
+rofi -dmenu -i -p "Emacs Keybinds" -config "${ROFI_CONFIG}" < "${CACHE_FILE}"
diff --git a/config/hypr/scripts/rofi-ssh-menu.sh b/config/hypr/scripts/rofi-ssh-menu.sh
new file mode 100755
index 00000000..d1640c66
--- /dev/null
+++ b/config/hypr/scripts/rofi-ssh-menu.sh
@@ -0,0 +1,117 @@
+#!/usr/bin/env bash
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
+# Rofi SSH menu - list SSH hosts from ~/.ssh/config and connect.
+
+set -euo pipefail
+
+SSH_CONFIG="${HOME}/.ssh/config"
+ROFI_CONFIG="${HOME}/.config/rofi/config.rasi"
+MSG='Select a host to connect via SSH'
+
+notify() {
+ if command -v notify-send >/dev/null 2>&1; then
+ notify-send -u low "Rofi SSH" "$1"
+ else
+ printf '%s\n' "$1" >&2
+ fi
+}
+
+if [[ ! -f "${SSH_CONFIG}" ]]; then
+ notify "SSH config not found: ${SSH_CONFIG}"
+ exit 1
+fi
+
+# Build list: host|user|hostname
+host_entries="$(
+ awk '
+ function is_wildcard(h) { return (h ~ /[*?]/ || h ~ /^!/); }
+ function remember_hosts(list, i, n, h) {
+ delete current
+ n = split(list, parts, /[ \t]+/)
+ for (i = 1; i <= n; i++) {
+ h = parts[i]
+ if (h == "") continue
+ if (is_wildcard(h)) continue
+ current[h] = 1
+ if (!(h in seen)) {
+ seen[h] = 1
+ order[++count] = h
+ }
+ }
+ }
+ {
+ sub(/[ \t]*#.*/, "", $0)
+ if ($0 ~ /^[ \t]*$/) next
+ if ($1 == "Host") {
+ $1 = ""
+ sub(/^[ \t]+/, "", $0)
+ remember_hosts($0)
+ next
+ }
+ if ($1 == "HostName") {
+ for (h in current) hostname[h] = $2
+ next
+ }
+ if ($1 == "User") {
+ for (h in current) user[h] = $2
+ next
+ }
+ }
+ END {
+ for (i = 1; i <= count; i++) {
+ h = order[i]
+ print h "|" (h in user ? user[h] : "") "|" (h in hostname ? hostname[h] : "")
+ }
+ }
+ ' "${SSH_CONFIG}"
+)"
+
+if [[ -z "${host_entries}" ]]; then
+ notify "No SSH hosts found in ${SSH_CONFIG}"
+ exit 1
+fi
+
+menu_entries="$(
+ while IFS='|' read -r host user hostname; do
+ [[ -n "${host}" ]] || continue
+ [[ -n "${user}" ]] || user="${USER}"
+ [[ -n "${hostname}" ]] || hostname="${host}"
+ printf '%s | %s@%s\n' "${host}" "${user}" "${hostname}"
+ done <<< "${host_entries}"
+)"
+
+# Close any existing rofi before launching
+if pgrep -x "rofi" >/dev/null 2>&1; then
+ pkill rofi
+fi
+
+selection="$(printf '%s\n' "${menu_entries}" | rofi -dmenu -i -p "SSH" -mesg "${MSG}" -config "${ROFI_CONFIG}")"
+
+if [[ -z "${selection}" ]]; then
+ exit 0
+fi
+
+selected_host="${selection%% | *}"
+if [[ -z "${selected_host}" ]]; then
+ exit 0
+fi
+
+if command -v kitty >/dev/null 2>&1; then
+ exec kitty --title "SSH ${selected_host}" sh -lc "ssh ${selected_host}"
+fi
+
+if command -v ghostty >/dev/null 2>&1; then
+ exec ghostty -e sh -lc "ssh ${selected_host}"
+fi
+
+if command -v alacritty >/dev/null 2>&1; then
+ exec alacritty -e sh -lc "ssh ${selected_host}"
+fi
+
+notify "No supported terminal found (kitty, ghostty, alacritty). Unable to start SSH session."
+exit 1
diff --git a/config/hypr/scripts/sddm_wallpaper.sh b/config/hypr/scripts/sddm_wallpaper.sh
index 26f6c613..deee938c 100755
--- a/config/hypr/scripts/sddm_wallpaper.sh
+++ b/config/hypr/scripts/sddm_wallpaper.sh
@@ -1,5 +1,10 @@
#!/usr/bin/env bash
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# SDDM Wallpaper and Wallust Colors Setter
# for the upcoming changes on the simple_sddm_theme
diff --git a/config/hypr/scripts/set-default-thunar-terminal.sh b/config/hypr/scripts/set-default-thunar-terminal.sh
new file mode 100755
index 00000000..fd50eb6c
--- /dev/null
+++ b/config/hypr/scripts/set-default-thunar-terminal.sh
@@ -0,0 +1,148 @@
+#!/usr/bin/env bash
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
+#
+setup_default_terminal() {
+ echo "Setting kitty as the default terminal for Thunar and CLI apps..."
+
+ # 1. Configure XFCE/Exo (Thunar's primary helper)
+ # This handles "Open Terminal Here" and "Open with [CLI App]"
+ HELPER_DIR="$HOME/.config/xfce4"
+ mkdir -p "$HELPER_DIR"
+ KITTY_PATH="$(command -v kitty 2>/dev/null || true)"
+ if [ -z "$KITTY_PATH" ]; then
+ echo "Warning: kitty not found in PATH. Thunar may report no terminal available."
+ fi
+ # Prefer exo-preferred-applications when available (XFCE/Thunar)
+ if command -v exo-preferred-applications >/dev/null 2>&1; then
+ exo-preferred-applications --set TerminalEmulator kitty >/dev/null 2>&1 || true
+ fi
+
+ # Ensure helpers.rc exists and has a [Default] section
+ if [ ! -f "$HELPER_DIR/helpers.rc" ]; then
+ printf "[Default]\n" >"$HELPER_DIR/helpers.rc"
+ elif ! grep -q '^\[Default\]$' "$HELPER_DIR/helpers.rc"; then
+ printf "[Default]\n%s" "$(cat "$HELPER_DIR/helpers.rc")" >"$HELPER_DIR/helpers.rc"
+ fi
+
+ # Update TerminalEmulator entry in [Default] section
+ if grep -q '^TerminalEmulator=' "$HELPER_DIR/helpers.rc"; then
+ sed -i 's|^TerminalEmulator=.*|TerminalEmulator=kitty|' "$HELPER_DIR/helpers.rc"
+ else
+ sed -i '/^\[Default\]$/a TerminalEmulator=kitty' "$HELPER_DIR/helpers.rc"
+ fi
+ # Set a full path if available (GUI PATH can differ)
+ if [ -n "$KITTY_PATH" ]; then
+ if grep -q '^TerminalEmulatorPath=' "$HELPER_DIR/helpers.rc"; then
+ sed -i "s|^TerminalEmulatorPath=.*|TerminalEmulatorPath=$KITTY_PATH|" "$HELPER_DIR/helpers.rc"
+ else
+ sed -i "/^\[Default\]$/a TerminalEmulatorPath=$KITTY_PATH" "$HELPER_DIR/helpers.rc"
+ fi
+ fi
+
+ # 2. Create a User-Level "xterm" Shim
+ # Many older .desktop files and scripts have 'xterm' hardcoded.
+ # By placing this in ~/.local/bin, we intercept those calls.
+ BIN_DIR="$HOME/.local/bin"
+ mkdir -p "$BIN_DIR"
+ if ! printf "%s" "$PATH" | tr ':' '\n' | grep -qx "$BIN_DIR"; then
+ echo "Warning: $BIN_DIR is not in PATH for this session. GUI apps may still use /usr/bin/xterm."
+ fi
+
+ cat <<EOF >"$BIN_DIR/xterm"
+#!/usr/bin/env bash
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
+#
+# Shim to redirect xterm calls to kitty
+# Resolves Open with (vim/neovim/etc) opening in xterm
+args=()
+pass_through=()
+while [ \$# -gt 0 ]; do
+ case "\$1" in
+ -e)
+ shift
+ if [ \$# -gt 0 ]; then
+ pass_through+=("\$@")
+ fi
+ break
+ ;;
+ -T|-title|-geometry|-bg|-fg|-fs|-fa|-fn)
+ # Skip common xterm-only flags and their values
+ shift
+ [ \$# -gt 0 ] && shift
+ ;;
+ -class|-name)
+ shift
+ [ \$# -gt 0 ] && shift
+ ;;
+ -hold|-ls|-sb|-sk|-sr|-s)
+ # Ignore boolean flags that kitty doesn't understand
+ shift
+ ;;
+ *)
+ args+=("\$1")
+ shift
+ ;;
+ esac
+done
+
+if [ \${#pass_through[@]} -gt 0 ]; then
+ exec kitty "\${args[@]}" -- "\${pass_through[@]}"
+else
+ exec kitty "\${args[@]}"
+fi
+EOF
+ chmod +x "$BIN_DIR/xterm"
+
+ # 3. Update GLib/GIO Default Terminal (for GNOME-based backends)
+ # Some distros use gsettings to define the terminal schema.
+ if command -v gsettings >/dev/null 2>&1; then
+ gsettings set org.gnome.desktop.default-applications.terminal exec 'kitty' 2>/dev/null || true
+ fi
+
+ # 4. Refresh Mime Database
+ # Ensures Thunar sees the changes to terminal handling immediately.
+ if command -v update-desktop-database >/dev/null 2>&1; then
+ update-desktop-database ~/.local/share/applications 2>/dev/null || true
+ fi
+
+ # 5. Hide Kitty URL Handler from "Open With"
+ # Prevents Kitty URL handler from showing up for text files.
+ USER_APP_DIR="$HOME/.local/share/applications"
+ mkdir -p "$USER_APP_DIR"
+ KITTY_URL_HANDLER=""
+ for dir in $XDG_DATA_DIRS /usr/local/share /usr/share; do
+ [ -z "$dir" ] && continue
+ if [ -f "$dir/applications/kitty-url-handler.desktop" ]; then
+ KITTY_URL_HANDLER="$dir/applications/kitty-url-handler.desktop"
+ break
+ fi
+ done
+
+ if [ -n "$KITTY_URL_HANDLER" ]; then
+ cp "$KITTY_URL_HANDLER" "$USER_APP_DIR/kitty-url-handler.desktop"
+ if grep -q '^NoDisplay=' "$USER_APP_DIR/kitty-url-handler.desktop"; then
+ sed -i 's|^NoDisplay=.*|NoDisplay=true|' "$USER_APP_DIR/kitty-url-handler.desktop"
+ else
+ printf "\nNoDisplay=true\n" >>"$USER_APP_DIR/kitty-url-handler.desktop"
+ fi
+ if grep -q '^Hidden=' "$USER_APP_DIR/kitty-url-handler.desktop"; then
+ sed -i 's|^Hidden=.*|Hidden=true|' "$USER_APP_DIR/kitty-url-handler.desktop"
+ else
+ printf "Hidden=true\n" >>"$USER_APP_DIR/kitty-url-handler.desktop"
+ fi
+ fi
+
+ echo "Default terminal set to kitty successfully."
+}
+
+setup_default_terminal
diff --git a/config/hypr/scripts/update_WindowRules.sh b/config/hypr/scripts/update_WindowRules.sh
index 8b4262ba..c8d236c4 100755
--- a/config/hypr/scripts/update_WindowRules.sh
+++ b/config/hypr/scripts/update_WindowRules.sh
@@ -1,4 +1,10 @@
#!/usr/bin/env bash
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Script to update WindowRules config if Hyprland version is >= 0.53
CONFIGS_DIR="$HOME/.config/hypr/configs"
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage