aboutsummaryrefslogtreecommitdiffstats
path: root/config/hypr
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
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')
-rw-r--r--config/hypr/UserConfigs/00-Readme7
-rw-r--r--config/hypr/UserConfigs/01-UserDefaults.conf7
-rw-r--r--config/hypr/UserConfigs/ENVariables.conf7
-rw-r--r--config/hypr/UserConfigs/LaptopDisplay.conf6
-rw-r--r--config/hypr/UserConfigs/Laptops.conf7
-rw-r--r--config/hypr/UserConfigs/Startup_Apps.conf7
-rw-r--r--config/hypr/UserConfigs/UserAnimations.conf7
-rw-r--r--config/hypr/UserConfigs/UserDecorations.conf7
-rw-r--r--config/hypr/UserConfigs/UserKeybinds.conf8
-rw-r--r--config/hypr/UserConfigs/UserSettings.conf7
-rw-r--r--config/hypr/UserConfigs/WindowRules.conf13
-rw-r--r--config/hypr/UserConfigs/WorkSpaceRules.conf7
-rwxr-xr-xconfig/hypr/UserScripts/00-Readme7
-rwxr-xr-xconfig/hypr/UserScripts/RainbowBorders-low-cpu.sh6
-rwxr-xr-xconfig/hypr/UserScripts/RainbowBorders.bak.sh7
-rwxr-xr-xconfig/hypr/UserScripts/RofiBeats.sh7
-rwxr-xr-xconfig/hypr/UserScripts/RofiCalc.sh7
-rwxr-xr-xconfig/hypr/UserScripts/Tak0-Autodispatch.sh6
-rwxr-xr-xconfig/hypr/UserScripts/WallpaperAutoChange.sh14
-rwxr-xr-xconfig/hypr/UserScripts/WallpaperEffects.sh24
-rwxr-xr-xconfig/hypr/UserScripts/WallpaperRandom.sh25
-rwxr-xr-xconfig/hypr/UserScripts/WallpaperSelect.sh86
-rwxr-xr-xconfig/hypr/UserScripts/Weather.py7
-rwxr-xr-xconfig/hypr/UserScripts/Weather.sh7
-rwxr-xr-xconfig/hypr/UserScripts/WeatherWrap.sh7
-rwxr-xr-xconfig/hypr/UserScripts/ZshChangeTheme.sh7
-rw-r--r--config/hypr/configs/ENVariables.conf13
-rw-r--r--config/hypr/configs/Keybinds.conf44
-rw-r--r--config/hypr/configs/Laptops.conf7
-rw-r--r--config/hypr/configs/Startup_Apps.conf15
-rw-r--r--config/hypr/configs/SystemSettings.conf77
-rw-r--r--config/hypr/configs/WindowRules-config-v3.conf60
-rw-r--r--config/hypr/configs/WindowRules-pre-53.conf7
-rw-r--r--config/hypr/configs/WindowRules.conf60
-rwxr-xr-xconfig/hypr/initial-boot.sh11
-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
-rw-r--r--config/hypr/v2.3.22 (renamed from config/hypr/v2.3.21)0
106 files changed, 2242 insertions, 322 deletions
diff --git a/config/hypr/UserConfigs/00-Readme b/config/hypr/UserConfigs/00-Readme
index b39873b1..275919bb 100644
--- a/config/hypr/UserConfigs/00-Readme
+++ b/config/hypr/UserConfigs/00-Readme
@@ -1,4 +1,9 @@
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ #
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
KooL's Hyprland-Dots
diff --git a/config/hypr/UserConfigs/01-UserDefaults.conf b/config/hypr/UserConfigs/01-UserDefaults.conf
index 7a91336f..dd5f299a 100644
--- a/config/hypr/UserConfigs/01-UserDefaults.conf
+++ b/config/hypr/UserConfigs/01-UserDefaults.conf
@@ -1,4 +1,9 @@
-# /* ---- πŸ’« 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 a file where you put your own default apps, default search Engine etc
diff --git a/config/hypr/UserConfigs/ENVariables.conf b/config/hypr/UserConfigs/ENVariables.conf
index 67861b86..e2b3498a 100644
--- a/config/hypr/UserConfigs/ENVariables.conf
+++ b/config/hypr/UserConfigs/ENVariables.conf
@@ -1,4 +1,9 @@
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ #
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Environment variables. See https://wiki.hyprland.org/Configuring/Environment-variables/
# Set your defaults editor through ENV in ~/.config/hypr/UserConfigs/01-UserDefaults.conf
diff --git a/config/hypr/UserConfigs/LaptopDisplay.conf b/config/hypr/UserConfigs/LaptopDisplay.conf
index 9f766582..a9129190 100644
--- a/config/hypr/UserConfigs/LaptopDisplay.conf
+++ b/config/hypr/UserConfigs/LaptopDisplay.conf
@@ -1,3 +1,9 @@
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# NOTE, THIS FILE IS BEING USED by disabling Laptop display monitor behaviour when closing lid.
# See notes on Laptops.conf
diff --git a/config/hypr/UserConfigs/Laptops.conf b/config/hypr/UserConfigs/Laptops.conf
index 463f0b46..b4e3cbdc 100644
--- a/config/hypr/UserConfigs/Laptops.conf
+++ b/config/hypr/UserConfigs/Laptops.conf
@@ -1,4 +1,9 @@
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ #
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# See https://wiki.hyprland.org/Configuring/Keywords/ for more variable settings
# These configs are mostly for laptops. This is addemdum to Keybinds.conf
diff --git a/config/hypr/UserConfigs/Startup_Apps.conf b/config/hypr/UserConfigs/Startup_Apps.conf
index f87bbe15..8a3de78a 100644
--- a/config/hypr/UserConfigs/Startup_Apps.conf
+++ b/config/hypr/UserConfigs/Startup_Apps.conf
@@ -1,3 +1,8 @@
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ #
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Commands and Apps to be executed at launch
diff --git a/config/hypr/UserConfigs/UserAnimations.conf b/config/hypr/UserConfigs/UserAnimations.conf
index f2d33d93..aebff1be 100644
--- a/config/hypr/UserConfigs/UserAnimations.conf
+++ b/config/hypr/UserConfigs/UserAnimations.conf
@@ -1,4 +1,9 @@
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ #
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
animations {
enabled = yes
diff --git a/config/hypr/UserConfigs/UserDecorations.conf b/config/hypr/UserConfigs/UserDecorations.conf
index eaccff80..d962092f 100644
--- a/config/hypr/UserConfigs/UserDecorations.conf
+++ b/config/hypr/UserConfigs/UserDecorations.conf
@@ -1,4 +1,9 @@
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ #
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Decoration Settings
# Hyprland Wiki Links
diff --git a/config/hypr/UserConfigs/UserKeybinds.conf b/config/hypr/UserConfigs/UserKeybinds.conf
index 82a7e568..cc19ff78 100644
--- a/config/hypr/UserConfigs/UserKeybinds.conf
+++ b/config/hypr/UserConfigs/UserKeybinds.conf
@@ -1,11 +1,15 @@
-# /* ---- πŸ’« 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 where you put your own keybinds. Be Mindful to check as well ~/.config/hypr/configs/Keybinds.conf to avoid conflict
# if you think I should replace the Pre-defined Keybinds in ~/.config/hypr/configs/Keybinds.conf , submit an issue or let me know in DC and present me a valid reason as to why, such as conflicting with global shortcuts, etc etc
# See https://wiki.hyprland.org/Configuring/Keywords/ for more settings and variables
# See also Laptops.conf for laptops keybinds
-# /* ---- ✴️ Variables ✴️ ---- */ #
$mainMod = SUPER
$scriptsDir = $HOME/.config/hypr/scripts
$UserScripts = $HOME/.config/hypr/UserScripts
diff --git a/config/hypr/UserConfigs/UserSettings.conf b/config/hypr/UserConfigs/UserSettings.conf
index 9bd9131d..51b0adbd 100644
--- a/config/hypr/UserConfigs/UserSettings.conf
+++ b/config/hypr/UserConfigs/UserSettings.conf
@@ -1,4 +1,9 @@
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ #
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# User Settings
# This is where you put your own settings as this will not be touched during update
# if the upgrade.sh is used.
diff --git a/config/hypr/UserConfigs/WindowRules.conf b/config/hypr/UserConfigs/WindowRules.conf
index 79fbc24e..b6d65135 100644
--- a/config/hypr/UserConfigs/WindowRules.conf
+++ b/config/hypr/UserConfigs/WindowRules.conf
@@ -1,7 +1,18 @@
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ #
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# For window rules and layerrules
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
# This file is used to add or overwrite window rules
# This file will not be modified during dotfiles updates
+
+# Optional Layer rules
+# To Resolve blurred corners in rofi Uncomment
+# layerrule = blur on, ignore_alpha 0, match:namespace rofi
+
+
diff --git a/config/hypr/UserConfigs/WorkSpaceRules.conf b/config/hypr/UserConfigs/WorkSpaceRules.conf
index 78d61389..7d45ec16 100644
--- a/config/hypr/UserConfigs/WorkSpaceRules.conf
+++ b/config/hypr/UserConfigs/WorkSpaceRules.conf
@@ -1,4 +1,9 @@
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ #
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# NOTE: THIS IS NOT BEING SOURCED by hyprland
# It is only here as a guide if you want to do it manually
diff --git a/config/hypr/UserScripts/00-Readme b/config/hypr/UserScripts/00-Readme
index 54d7fff2..259fc9d9 100755
--- a/config/hypr/UserScripts/00-Readme
+++ b/config/hypr/UserScripts/00-Readme
@@ -1,4 +1,9 @@
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ #
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Place your new scripts here.
# If you need to edit a script from main script (~/.config/hypr/scripts), copy it on this directory, and edit.
diff --git a/config/hypr/UserScripts/RainbowBorders-low-cpu.sh b/config/hypr/UserScripts/RainbowBorders-low-cpu.sh
index bc0ab9ef..a8de4c89 100755
--- a/config/hypr/UserScripts/RainbowBorders-low-cpu.sh
+++ b/config/hypr/UserScripts/RainbowBorders-low-cpu.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
+# ==================================================
# RainbowBorders-low-cpu.sh β€” low-overhead animated rainbow border for Hyprland
#
# Goal
diff --git a/config/hypr/UserScripts/RainbowBorders.bak.sh b/config/hypr/UserScripts/RainbowBorders.bak.sh
index 49de9ea7..87f13c34 100755
--- a/config/hypr/UserScripts/RainbowBorders.bak.sh
+++ b/config/hypr/UserScripts/RainbowBorders.bak.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
+# ==================================================
# Smooth border cycling effect using Wallust palette or full rainbow
# Possible values: "wallust_random", "rainbow", "gradient_flow"
diff --git a/config/hypr/UserScripts/RofiBeats.sh b/config/hypr/UserScripts/RofiBeats.sh
index 64e8ee99..057d53b9 100755
--- a/config/hypr/UserScripts/RofiBeats.sh
+++ b/config/hypr/UserScripts/RofiBeats.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
+# ==================================================
# RofiBeats - unified, dynamic UI (add, remove, manage, play)
mDIR="$HOME/Music/"
diff --git a/config/hypr/UserScripts/RofiCalc.sh b/config/hypr/UserScripts/RofiCalc.sh
index 116fc6cc..40a7ca3f 100755
--- a/config/hypr/UserScripts/RofiCalc.sh
+++ b/config/hypr/UserScripts/RofiCalc.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
+# ==================================================
# /* Calculator (using qalculate) and rofi */
# /* Submitted by: https://github.com/JosephArmas */
diff --git a/config/hypr/UserScripts/Tak0-Autodispatch.sh b/config/hypr/UserScripts/Tak0-Autodispatch.sh
index 48c22515..b0607e13 100755
--- a/config/hypr/UserScripts/Tak0-Autodispatch.sh
+++ b/config/hypr/UserScripts/Tak0-Autodispatch.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
+# ==================================================
# USAGE:
# 1) Run from terminal:
# ./dispatch.sh <application_command> <target_workspace_number>
diff --git a/config/hypr/UserScripts/WallpaperAutoChange.sh b/config/hypr/UserScripts/WallpaperAutoChange.sh
index 9643c7e9..aa6cf89e 100755
--- a/config/hypr/UserScripts/WallpaperAutoChange.sh
+++ b/config/hypr/UserScripts/WallpaperAutoChange.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
+# ==================================================
# source https://wiki.archlinux.org/title/Hyprland#Using_a_script_to_change_wallpaper_every_X_minutes
# This script will randomly go through the files of a directory, setting it
@@ -10,6 +15,11 @@
wallust_refresh=$HOME/.config/hypr/scripts/RefreshNoWaybar.sh
focused_monitor=$(hyprctl monitors | awk '/^Monitor/{name=$2} /focused: yes/{print name}')
+if command -v awww >/dev/null 2>&1; then
+ WWW="awww"
+else
+ WWW="swww"
+fi
if [[ $# -lt 1 ]] || [[ ! -d $1 ]]; then
echo "Usage:
@@ -31,7 +41,7 @@ while true; do
done \
| sort -n | cut -d':' -f2- \
| while read -r img; do
- swww img -o $focused_monitor "$img"
+ $WWW img -o $focused_monitor "$img"
# Regenerate colors from the exact image path to avoid cache races
$HOME/.config/hypr/scripts/WallustSwww.sh "$img"
# Refresh UI components that depend on wallust output
diff --git a/config/hypr/UserScripts/WallpaperEffects.sh b/config/hypr/UserScripts/WallpaperEffects.sh
index caca56e1..57db3532 100755
--- a/config/hypr/UserScripts/WallpaperEffects.sh
+++ b/config/hypr/UserScripts/WallpaperEffects.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
+# ==================================================
# Wallpaper Effects using ImageMagick (SUPER SHIFT W)
# Variables
@@ -9,17 +14,26 @@ wallpaper_output="$HOME/.config/hypr/wallpaper_effects/.wallpaper_modified"
SCRIPTSDIR="$HOME/.config/hypr/scripts"
focused_monitor=$(hyprctl monitors -j | jq -r '.[] | select(.focused) | .name')
rofi_theme="$HOME/.config/rofi/config-wallpaper-effect.rasi"
+if command -v awww >/dev/null 2>&1; then
+ WWW="awww"
+else
+ WWW="swww"
+fi
# Directory for swaync
iDIR="$HOME/.config/swaync/images"
iDIRi="$HOME/.config/swaync/icons"
-# swww transition config
+# swww transition config (only when using swww)
FPS=60
TYPE="wipe"
DURATION=2
BEZIER=".43,1.19,1,.4"
-SWWW_PARAMS="--transition-fps $FPS --transition-type $TYPE --transition-duration $DURATION --transition-bezier $BEZIER"
+if [[ "$WWW" == "swww" ]]; then
+ SWWW_PARAMS="--transition-fps $FPS --transition-type $TYPE --transition-duration $DURATION --transition-bezier $BEZIER"
+else
+ SWWW_PARAMS=""
+fi
# Define ImageMagick effects
declare -A effects=(
@@ -45,7 +59,7 @@ declare -A effects=(
# Function to apply no effects
no-effects() {
- swww img -o "$focused_monitor" "$wallpaper_current" $SWWW_PARAMS &&
+ $WWW img -o "$focused_monitor" "$wallpaper_current" $SWWW_PARAMS &&
wait $!
wallust run "$wallpaper_current" -s &&
wait $!
@@ -83,7 +97,7 @@ main() {
done
sleep 1
- swww img -o "$focused_monitor" "$wallpaper_output" $SWWW_PARAMS &
+ $WWW img -o "$focused_monitor" "$wallpaper_output" $SWWW_PARAMS &
sleep 2
diff --git a/config/hypr/UserScripts/WallpaperRandom.sh b/config/hypr/UserScripts/WallpaperRandom.sh
index a9908e19..db8251f2 100755
--- a/config/hypr/UserScripts/WallpaperRandom.sh
+++ b/config/hypr/UserScripts/WallpaperRandom.sh
@@ -1,10 +1,17 @@
#!/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 Random Wallpaper ( CTRL ALT W)
PICTURES_DIR="$(xdg-user-dir PICTURES 2>/dev/null || echo "$HOME/Pictures")"
wallDIR="$PICTURES_DIR/wallpapers"
SCRIPTSDIR="$HOME/.config/hypr/scripts"
+# shellcheck source=/dev/null
+. "$SCRIPTSDIR/WallpaperCmd.sh"
focused_monitor=$(hyprctl monitors -j | jq -r '.[] | select(.focused) | .name')
@@ -12,18 +19,24 @@ PICS=($(find -L "${wallDIR}" -type f \( -name "*.jpg" -o -name "*.jpeg" -o -name
RANDOMPICS=${PICS[ $RANDOM % ${#PICS[@]} ]}
-# Transition config
+# Transition config (only when using swww)
FPS=30
TYPE="random"
DURATION=1
BEZIER=".43,1.19,1,.4"
-SWWW_PARAMS="--transition-fps $FPS --transition-type $TYPE --transition-duration $DURATION --transition-bezier $BEZIER"
+if [[ "$WWW_CMD" == "swww" ]]; then
+ SWWW_PARAMS="--transition-fps $FPS --transition-type $TYPE --transition-duration $DURATION --transition-bezier $BEZIER"
+else
+ SWWW_PARAMS=""
+fi
+if ! "$WWW_CMD" query >/dev/null 2>&1; then
+ "$WWW_DAEMON" "${WWW_DAEMON_ARGS[@]}" &
+fi
-
-swww query || swww-daemon --format xrgb && swww img -o $focused_monitor ${RANDOMPICS} $SWWW_PARAMS
+"$WWW_CMD" img -o "$focused_monitor" "$RANDOMPICS" $SWWW_PARAMS
wait $!
-"$SCRIPTSDIR/WallustSwww.sh" &&
+"$SCRIPTSDIR/WallustSwww.sh" "$RANDOMPICS" &&
wait $!
sleep 2
diff --git a/config/hypr/UserScripts/WallpaperSelect.sh b/config/hypr/UserScripts/WallpaperSelect.sh
index ed0b2846..9dafdf57 100755
--- a/config/hypr/UserScripts/WallpaperSelect.sh
+++ b/config/hypr/UserScripts/WallpaperSelect.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 script for selecting wallpapers (SUPER W)
# WALLPAPERS PATH
@@ -7,18 +12,25 @@ terminal=kitty
PICTURES_DIR="$(xdg-user-dir PICTURES 2>/dev/null || echo "$HOME/Pictures")"
wallDIR="$PICTURES_DIR/wallpapers"
SCRIPTSDIR="$HOME/.config/hypr/scripts"
+# shellcheck source=/dev/null
+. "$SCRIPTSDIR/WallpaperCmd.sh"
wallpaper_current="$HOME/.config/hypr/wallpaper_effects/.wallpaper_current"
+wallpaper_link="$HOME/.config/rofi/.current_wallpaper"
# Directory for swaync
iDIR="$HOME/.config/swaync/images"
iDIRi="$HOME/.config/swaync/icons"
-# swww transition config
+# swww transition config (only when using swww)
FPS=60
TYPE="any"
DURATION=2
BEZIER=".43,1.19,1,.4"
-SWWW_PARAMS="--transition-fps $FPS --transition-type $TYPE --transition-duration $DURATION --transition-bezier $BEZIER"
+if [[ "$WWW_CMD" == "swww" ]]; then
+ SWWW_PARAMS="--transition-fps $FPS --transition-type $TYPE --transition-duration $DURATION --transition-bezier $BEZIER"
+else
+ SWWW_PARAMS=""
+fi
# Check if package bc exists
if ! command -v bc &>/dev/null; then
@@ -46,7 +58,7 @@ rofi_override="element-icon{size:${adjusted_icon_size}%;}"
# Kill existing wallpaper daemons for video
kill_wallpaper_for_video() {
- swww kill 2>/dev/null
+ "$WWW_CMD" kill 2>/dev/null
pkill mpvpaper 2>/dev/null
pkill swaybg 2>/dev/null
pkill hyprpaper 2>/dev/null
@@ -66,7 +78,19 @@ mapfile -d '' PICS < <(find -L "${wallDIR}" -type f \( \
-iname "*.mp4" -o -iname "*.mkv" -o -iname "*.mov" -o -iname "*.webm" \) -print0)
RANDOM_PIC="${PICS[$((RANDOM % ${#PICS[@]}))]}"
-RANDOM_PIC_NAME=". random"
+RANDOM_PIC_NAME="$(basename "$RANDOM_PIC")"
+
+CURRENT_MON_PIC_PATH=$("$WWW_CMD" query 2>/dev/null | grep "$focused_monitor" | awk '{print $NF}')
+if [[ -z "$CURRENT_MON_PIC_PATH" ]]; then
+ if [[ -L "$wallpaper_link" ]]; then
+ CURRENT_MON_PIC_PATH="$(readlink -f "$wallpaper_link")"
+ elif [[ -f "$wallpaper_link" ]]; then
+ CURRENT_MON_PIC_PATH="$wallpaper_link"
+ elif [[ -f "$wallpaper_current" ]]; then
+ CURRENT_MON_PIC_PATH="$wallpaper_current"
+ fi
+fi
+CURRENT_MON_PIC_NAME=$(basename "$CURRENT_MON_PIC_PATH")
# Rofi command
rofi_command="rofi -i -show -dmenu -config $rofi_theme -theme-str $rofi_override"
@@ -75,7 +99,10 @@ rofi_command="rofi -i -show -dmenu -config $rofi_theme -theme-str $rofi_override
menu() {
IFS=$'\n' sorted_options=($(sort <<<"${PICS[*]}"))
- printf "%s\x00icon\x1f%s\n" "$RANDOM_PIC_NAME" "$RANDOM_PIC"
+ printf "%s\x00icon\x1f%s\n" "Random: $RANDOM_PIC_NAME" "$RANDOM_PIC"
+ if [[ -n "$CURRENT_MON_PIC_PATH" ]]; then
+ printf "%s\x00icon\x1f%s\n" "Current: $CURRENT_MON_PIC_NAME" "$CURRENT_MON_PIC_PATH"
+ fi
for pic_path in "${sorted_options[@]}"; do
pic_name=$(basename "$pic_path")
@@ -107,6 +134,7 @@ modify_startup_config() {
# Check if it's a live wallpaper (video)
if [[ "$selected_file" =~ \.(mp4|mkv|mov|webm)$ ]]; then
# For video wallpapers:
+ sed -i '/^\s*exec-once\s*=\s*\$scriptsDir\/WallpaperDaemon\.sh\s*$/s/^/\#/' "$startup_config"
sed -i '/^\s*exec-once\s*=\s*swww-daemon\s*--format\s*xrgb\s*$/s/^/\#/' "$startup_config"
sed -i '/^\s*#\s*exec-once\s*=\s*mpvpaper\s*.*$/s/^#\s*//;' "$startup_config"
@@ -117,6 +145,7 @@ modify_startup_config() {
echo "Configured for live wallpaper (video)."
else
# For image wallpapers:
+ sed -i '/^\s*#\s*exec-once\s*=\s*\$scriptsDir\/WallpaperDaemon\.sh\s*$/s/^\s*#\s*//;' "$startup_config"
sed -i '/^\s*#\s*exec-once\s*=\s*swww-daemon\s*--format\s*xrgb\s*$/s/^\s*#\s*//;' "$startup_config"
sed -i '/^\s*exec-once\s*=\s*mpvpaper\s*.*$/s/^/\#/' "$startup_config"
@@ -131,12 +160,20 @@ apply_image_wallpaper() {
kill_wallpaper_for_image
- if ! pgrep -x "swww-daemon" >/dev/null; then
- echo "Starting swww-daemon..."
- swww-daemon --format xrgb &
+ if ! pgrep -x "$WWW_DAEMON" >/dev/null; then
+ echo "Starting $WWW_DAEMON..."
+ "$WWW_DAEMON" "${WWW_DAEMON_ARGS[@]}" &
fi
-
- swww img -o "$focused_monitor" "$image_path" $SWWW_PARAMS
+ # Wait for daemon to be ready before applying
+ for _ in {1..20}; do
+ "$WWW_CMD" query >/dev/null 2>&1 && break
+ sleep 0.1
+ done
+ "$WWW_CMD" img -o "$focused_monitor" "$image_path" $SWWW_PARAMS || {
+ sleep 0.2
+ "$WWW_CMD" img -o "$focused_monitor" "$image_path" $SWWW_PARAMS
+ }
+ "$WWW_CMD" img -o "$focused_monitor" "$image_path" $SWWW_PARAMS
# Run additional scripts (pass the image path to avoid cache race conditions)
"$SCRIPTSDIR/WallustSwww.sh" "$image_path"
@@ -165,21 +202,32 @@ main() {
choice=$(menu | $rofi_command)
choice=$(echo "$choice" | xargs)
RANDOM_PIC_NAME=$(echo "$RANDOM_PIC_NAME" | xargs)
+ raw_choice="$choice"
+ choice="${choice#Random: }"
+ choice="${choice#Current: }"
if [[ -z "$choice" ]]; then
echo "No choice selected. Exiting."
exit 0
fi
- # Handle random selection correctly
- if [[ "$choice" == "$RANDOM_PIC_NAME" ]]; then
- choice=$(basename "$RANDOM_PIC")
- fi
-
- choice_basename=$(basename "$choice" | sed 's/\(.*\)\.[^.]*$/\1/')
+ # Resolve selection directly when using Random/Current entries
+ if [[ "$raw_choice" == Random:\ * ]]; then
+ selected_file="$RANDOM_PIC"
+ elif [[ "$raw_choice" == Current:\ * && -n "$CURRENT_MON_PIC_PATH" ]]; then
+ selected_file="$CURRENT_MON_PIC_PATH"
+ elif [[ -f "$choice" ]]; then
+ selected_file="$choice"
+ else
+ # Handle random selection by name when needed
+ if [[ "$choice" == "$RANDOM_PIC_NAME" ]]; then
+ choice=$(basename "$RANDOM_PIC")
+ fi
+ choice_basename=$(basename "$choice" | sed 's/\(.*\)\.[^.]*$/\1/')
- # Search for the selected file in the wallpapers directory, including subdirectories
- selected_file=$(find "$wallDIR" -iname "$choice_basename.*" -print -quit)
+ # Search for the selected file in the wallpapers directory, including subdirectories
+ selected_file=$(find "$wallDIR" -iname "$choice_basename.*" -print -quit)
+ fi
if [[ -z "$selected_file" ]]; then
echo "File not found. Selected choice: $choice"
diff --git a/config/hypr/UserScripts/Weather.py b/config/hypr/UserScripts/Weather.py
index e7a0fe01..6905e0e1 100755
--- a/config/hypr/UserScripts/Weather.py
+++ b/config/hypr/UserScripts/Weather.py
@@ -1,5 +1,10 @@
#!/usr/bin/env python3
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ #
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Rewritten to use Open-Meteo APIs (worldwide, no API key) for robust weather data.
# Outputs Waybar-compatible JSON and a simple text cache.
diff --git a/config/hypr/UserScripts/Weather.sh b/config/hypr/UserScripts/Weather.sh
index c01a4e12..c6683e07 100755
--- a/config/hypr/UserScripts/Weather.sh
+++ b/config/hypr/UserScripts/Weather.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
+# ==================================================
# weather info from wttr. https://github.com/chubin/wttr.in
# Remember to add city
# Function to get current city from IP address with fallback
diff --git a/config/hypr/UserScripts/WeatherWrap.sh b/config/hypr/UserScripts/WeatherWrap.sh
index 5e8b4733..1e15e4a6 100755
--- a/config/hypr/UserScripts/WeatherWrap.sh
+++ b/config/hypr/UserScripts/WeatherWrap.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
+# ==================================================
# Weather entrypoint: prefer Python (Open‑Meteo), fallback to legacy Bash (wttr.in)
SCRIPT_DIR="$(dirname "$0")"
diff --git a/config/hypr/UserScripts/ZshChangeTheme.sh b/config/hypr/UserScripts/ZshChangeTheme.sh
index 3e2f077a..94c1b448 100755
--- a/config/hypr/UserScripts/ZshChangeTheme.sh
+++ b/config/hypr/UserScripts/ZshChangeTheme.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 Oh my ZSH theme ( CTRL SHIFT O)
# preview of theme can be view here: https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
diff --git a/config/hypr/configs/ENVariables.conf b/config/hypr/configs/ENVariables.conf
index 585ae9f5..fd7831b8 100644
--- a/config/hypr/configs/ENVariables.conf
+++ b/config/hypr/configs/ENVariables.conf
@@ -1,11 +1,16 @@
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ #
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Environment variables. See https://wiki.hyprland.org/Configuring/Environment-variables/
# Set your defaults editor through ENV in ~/.config/hypr/UserConfigs/01-UserDefaults.conf
# environment-variables
-# Current Version of JakooLit Dotfiles:
-env = DOTS_VERSION,2.3.21
+# Current Version of KoolDots:
+env = DOTS_VERSION,2.3.22
### Toolkit Backend Variables ###
env = GDK_BACKEND,wayland,x11,*
@@ -24,8 +29,8 @@ env = XDG_SESSION_TYPE,wayland
### QT Variables ###
env = QT_AUTO_SCREEN_SCALE_FACTOR,1
env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
-env = QT_QPA_PLATFORMTHEME,qt5ct
env = QT_QPA_PLATFORMTHEME,qt6ct
+env = QT_STYLE_OVERRIDE,kvantum
### hyprland-qt-support ###
env = QT_QUICK_CONTROLS_STYLE,org.hyprland.style
diff --git a/config/hypr/configs/Keybinds.conf b/config/hypr/configs/Keybinds.conf
index ba0201f1..bbc93b25 100644
--- a/config/hypr/configs/Keybinds.conf
+++ b/config/hypr/configs/Keybinds.conf
@@ -1,8 +1,12 @@
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ #
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Default Keybinds
# visit https://wiki.hyprland.org/Configuring/Binds/ for more info
-# /* ---- ✴️ Variables ✴️ ---- */ #
$mainMod = SUPER
$scriptsDir = $HOME/.config/hypr/scripts
$UserConfigs = $HOME/.config/hypr/UserConfigs
@@ -11,7 +15,7 @@ $UserScripts = $HOME/.config/hypr/UserScripts
# settings for User defaults apps - set your default terminal and file manager on this file
source= $UserConfigs/01-UserDefaults.conf
-#### STANDAR ####
+#### STANDARD ####
# Common shortcuts
#bindr = $mainMod, $mainMod_L, exec, pkill rofi || rofi -show drun -modi drun,filebrowser,run,window # Super Key to Launch rofi menu
bindd = $mainMod, D, app launcher, exec, pkill rofi || true && rofi -show drun -modi drun,filebrowser,run,window
@@ -21,6 +25,7 @@ bindd = $mainMod, A, desktop overview, exec, $scriptsDir/OverviewToggle.sh # tog
#bindd = $mainMod, A, Quickshell overview, global, quickshell:overviewToggle # desktop overview (if installed)
bindd = $mainMod, Return, Open terminal, exec, $term
bindd = $mainMod, E, file manager, exec, $files
+bindd = $mainMod, C, SSH session manager, exec, $scriptsDir/rofi-ssh-menu.sh
# FEATURES / EXTRAS
bindd = $mainMod, T, Global theme switcher using Wallust, exec, $scriptsDir/ThemeChanger.sh #Global theme switcher
@@ -31,19 +36,19 @@ bindd = $mainMod, S, web search, exec, $scriptsDir/RofiSearch.sh
bindd = $mainMod CTRL, S, window switcher, exec, rofi -show window
bindd = $mainMod ALT, O, toggle blur, exec, $scriptsDir/ChangeBlur.sh
bindd = $mainMod SHIFT, G, toggle game mode, exec, $scriptsDir/GameMode.sh
-bindd = $mainMod ALT, L, toggle master/dwindle layout, exec, $scriptsDir/ChangeLayout.sh
+bindd = $mainMod ALT, L, toggle layouts, exec, $scriptsDir/ChangeLayout.sh toggle
bindd = $mainMod ALT, V, clipboard manager, exec, $scriptsDir/ClipManager.sh
bindd = $mainMod CTRL, R, rofi theme selector, exec, $scriptsDir/RofiThemeSelector.sh
bindd = $mainMod CTRL SHIFT, R, rofi theme selector (modified), exec, pkill rofi || true && $scriptsDir/RofiThemeSelector-modified.sh
bindd = $mainMod CTRL, K, Kitty theme selector, exec, $scriptsDir/Kitty_themes.sh
bindd = $mainMod SHIFT, B, Set static Rainbow Border, exec, $UserScripts/RainbowBorders-low-cpu.sh --run-once
bindd = $mainMod SHIFT, H, Toggle Mute/Unmute for Active-Window, exec, $scriptsDir/Toggle-Active-Window-Audio.sh
-bindd = ALT SHIFT, S, Hyprshot Screen Capture, exec, $scriptsDir/hyprshot.sh -m region -o %HOME/Pictures/Screenshots
+bindd = ALT SHIFT, S, Hyprshot Screen Capture, exec, $scriptsDir/hyprshot.sh -m region -o $HOME/Pictures/Screenshots
bindd = $mainMod SHIFT, F, fullscreen, fullscreen
bindd = $mainMod CTRL, F, maximize window, fullscreen, 1
bindd = $mainMod, SPACE, Float current window, togglefloating,
-bindd = $mainMod ALT, SPACE, Float all windows, exec, hyprctl dispatch workspaceopt allfloat
+bindd = $mainMod ALT, SPACE, Float all windows, exec, $scriptsDir/Float-all-Windows.sh
bindd = $mainMod SHIFT, Return, DropDown terminal, exec, $scriptsDir/Dropterminal.sh $term
# Desktop zooming or magnifier
@@ -90,14 +95,13 @@ bindd = $mainMod SHIFT, E, Quick settings menu, exec, $scriptsDir/Kool_Quick_Set
# Master Layout
bindd = $mainMod CTRL, D, remove master, layoutmsg, removemaster
bindd = $mainMod, I, add master, layoutmsg, addmaster
-# NOTE: J/K bindings are set dynamically by scripts/KeybindsLayoutInit.sh and scripts/ChangeLayout.sh
-# (we intentionally do not bind them statically here to avoid conflicts across layouts)
-# bindd = $mainMod, J, cycle next, layoutmsg, cyclenext
-# bindd = $mainMod, K, cycle previous, layoutmsg, cycleprev
+# j/k cycle windows globally
+bindd = $mainMod, j, cycle next, layoutmsg, cyclenext
+bindd = $mainMod, k, cycle previous, layoutmsg, cycleprev
bindd = $mainMod CTRL, Return, swap with master, layoutmsg, swapwithmaster
# Dwindle Layout
-bindd = $mainMod SHIFT, I, toggle split (dwindle), togglesplit
+bindd = $mainMod SHIFT, I, toggle split (dwindle), layoutmsg, togglesplit
bindd = $mainMod, P, toggle pseudo (dwindle), pseudo,
# Works on either layout (Master or Dwindle)
@@ -105,6 +109,24 @@ bindd = $mainMod, M, set split ratio 0.3, exec, hyprctl dispatch splitratio 0.3
# layout aware keybinds
exec-once = $scriptsDir/ChangeLayout.sh init
+# Direct layout binds
+bindd = $mainMod ALT, 1, layout dwindle, exec, $scriptsDir/ChangeLayout.sh dwindle
+bindd = $mainMod ALT, 2, layout master, exec, $scriptsDir/ChangeLayout.sh master
+bindd = $mainMod ALT, 3, layout scrolling, exec, $scriptsDir/ChangeLayout.sh scrolling
+bindd = $mainMod ALT, 4, layout monocle, exec, $scriptsDir/ChangeLayout.sh monocle
+
+# Scrolling Layout
+bindd = $mainMod SHIFT, period, move to right column, layoutmsg, move +col
+bindd = $mainMod SHIFT, comma, move to left column, layoutmsg, move -col
+bindd = $mainMod ALT, comma, swap columns left, layoutmsg, swapcol l
+bindd = $mainMod ALT, period, swap columns right, layoutmsg, swapcol r
+
+# Set layout to Horizontal (Standard "Tape" style)
+bindd = $mainMod ALT, H, Horizonal scroll right,exec, hyprctl keyword scrolling:direction right
+# Set layout to Vertical (Stacked "Column" style)
+bindd = $mainMod ALT, V, Vertical Scroll down,exec, hyprctl keyword scrolling:direction down
+# Create a toggle bind (e.g., Mod + Shift + S)
+bindd = $mainMod ALT, S, toggle scrolling V/H, exec, bash -c '[[ $(hyprctl getoption scrolling:direction -j | jq -r ".str") == "right" ]] && hyprctl keyword scrolling:direction down || hyprctl keyword scrolling:direction right'
# Cycle windows; if floating bring to top
bindd = ALT, tab, cycle next window, cyclenext
diff --git a/config/hypr/configs/Laptops.conf b/config/hypr/configs/Laptops.conf
index ec58fdd6..9ee2b2b2 100644
--- a/config/hypr/configs/Laptops.conf
+++ b/config/hypr/configs/Laptops.conf
@@ -1,4 +1,9 @@
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ #
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# See https://wiki.hyprland.org/Configuring/Keywords/ for more variable settings
# These configs are mostly for laptops. This is addemdum to Keybinds.conf
diff --git a/config/hypr/configs/Startup_Apps.conf b/config/hypr/configs/Startup_Apps.conf
index 67680af4..a27a12b9 100644
--- a/config/hypr/configs/Startup_Apps.conf
+++ b/config/hypr/configs/Startup_Apps.conf
@@ -1,4 +1,9 @@
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ #
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Commands and Apps to be executed at launch (vendor defaults)
$scriptsDir = $HOME/.config/hypr/scripts
$UserScripts = $HOME/.config/hypr/UserScripts
@@ -8,7 +13,7 @@ $livewallpaper=""
$wallDIR = $HOME/Pictures/wallpapers # change path manually here if needed
### wallpaper stuff ###
-exec-once = swww-daemon --format xrgb
+exec-once = $scriptsDir/WallpaperDaemon.sh
#exec-once = mpvpaper '*' -o "load-scripts=no no-audio --loop" $livewallpaper
# wallpaper random
#exec-once = $SwwwRandom $wallDIR # random wallpaper switcher every 30 minutes
@@ -16,7 +21,7 @@ exec-once = swww-daemon --format xrgb
### Startup ###
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
-exec-once = $HOME/.config/hypr/scripts/Dropterminal.sh kitty &
+exec-once = $HOME/.config/hypr/scripts/Dropterminal.sh "kitty --class kitty-dropterm" &
exec-once = $scriptsDir/Polkit.sh
exec-once = nm-applet --indicator
exec-once = nm-tray # For ubuntu
@@ -24,7 +29,7 @@ exec-once = swaync
#exec-once = ags
#exec-once = blueman-applet
#exec-once = rog-control-center
-exec-once = $scriptsDir/PortalHyprlandUbuntu2604.sh
+exec-once = $scriptsDir/PortalHyprlandUbuntu.sh
exec-once = waybar
exec-once = qs -c overview # Quickshell Overview
exec-once = hypridle
@@ -40,7 +45,7 @@ exec-once = wl-paste --type image --watch cliphist store
# Here are list of features available but disabled by default
# Persistent wallpaper
-# exec-once = swww-daemon --format xrgb && swww img $wallDIR/mecha-nostalgia.png
+# exec-once = sh -c '$HOME/.config/hypr/scripts/WallpaperDaemon.sh && (command -v awww >/dev/null 2>&1 && awww img "$wallDIR/mecha-nostalgia.png" || swww img "$wallDIR/mecha-nostalgia.png")'
# Gnome polkit for NixOS
#exec-once = $scriptsDir/Polkit-NixOS.sh
diff --git a/config/hypr/configs/SystemSettings.conf b/config/hypr/configs/SystemSettings.conf
index d7892d17..3d8122be 100644
--- a/config/hypr/configs/SystemSettings.conf
+++ b/config/hypr/configs/SystemSettings.conf
@@ -1,4 +1,9 @@
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ #
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Default settings
# This is where you put your own settings as this will not be touched during update
# if the upgrade.sh is used.
@@ -9,16 +14,42 @@
$scriptsDir = $HOME/.config/hypr/scripts
dwindle {
- pseudotile = true
+ pseudotile = false
preserve_split = true
- #smart_split = true
+ smart_resizing = true
+ use_active_for_splits = true
+ smart_split = false
+ default_split_ratio = 1.0
+ split_bias = 0
+ precise_mouse_move = false
special_scale_factor = 0.8
}
master {
- new_status = master
- new_on_top = 1
- mfact = 0.5
+ new_status = slave
+ new_on_top = false
+ new_on_active = none
+ orientation = left
+ mfact = 0.55
+ slave_count_for_center_master = 2
+ center_master_fallback = left
+ smart_resizing = true
+ drop_at_cursor = true
+ always_keep_position = false
+}
+
+scrolling {
+ # Default width of new windows (0.1 - 1.0)
+ column_width = 0.80
+ # If only one window is open, should it span the whole screen?
+ fullscreen_on_one_column = true
+ # Direction: right, left, up, or down
+ direction = right
+ # Center the focused window automatically
+ follow_focus = true
+}
+monocle {
+ # I can't find any settings on the wiki
}
general {
@@ -34,7 +65,6 @@ input {
kb_rules =
repeat_rate = 50
repeat_delay = 300
-
sensitivity = 0 #mouse sensitivity
#accel_profile = # flat or adaptive or blank or EMPTY means libinput’s default mode
numlock_by_default = true
@@ -63,20 +93,23 @@ input {
}
}
-
gestures {
- gesture = 3, horizontal, workspace
- workspace_swipe_distance = 500
+ workspace_swipe_distance = 300
+ workspace_swipe_touch = false
workspace_swipe_invert = true
workspace_swipe_min_speed_to_force = 30
workspace_swipe_cancel_ratio = 0.5
- workspace_swipe_create_new = true
- workspace_swipe_forever = true
- #workspace_swipe_use_r = true #uncomment if wanted a forever create a new workspace with swipe right
+ workspace_swipe_create_new = true
+ workspace_swipe_direction_lock = true
+ workspace_swipe_forever = false
+ workspace_swipe_use_r = false
+ close_max_timeout = 100
- gesture = 4, up, dispatcher, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | awk 'NR==1 {factor = $2; if (factor < 1) {factor = 1}; print factor * 1.5}')"
- gesture = 4, down, dispatcher, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | awk 'NR==1 {factor = $2; if (factor < 1) {factor = 1}; print factor / 1.5}')"
- gesture = 3, up, dispatcher, exec, $scriptsDir/OverviewToggle.sh
+ gesture = 3, horizontal, workspace
+ gesture = 3, up, dispatcher, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | awk 'NR==1 {factor = $2; if (factor < 1) {factor = 1}; print factor * 1.5}')"
+ gesture = 3, down, dispatcher, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | awk 'NR==1 {factor = $2; if (factor < 1) {factor = 1}; print factor / 1.5}')"
+ gesture = 4, up, dispatcher, exec, $scriptsDir/OverviewToggle.sh
+ gesture = 4, down, float
}
misc {
@@ -126,4 +159,16 @@ cursor {
enable_hyprcursor = true
warp_on_change_workspace = 2
no_warps = true
+ no_break_fs_vrr = false
+ min_refresh_rate = 24
+ hotspot_padding = 1
+ inactive_timeout = 0
+ default_monitor =
+ zoom_factor = 1.0
+ zoom_rigid = false
+ zoom_detached_camera = true
+ hide_on_key_press = true
+ hide_on_touch = false
+ hide_on_tablet = false
+ use_cpu_buffer = false
}
diff --git a/config/hypr/configs/WindowRules-config-v3.conf b/config/hypr/configs/WindowRules-config-v3.conf
index 8212e9bf..29d5c274 100644
--- a/config/hypr/configs/WindowRules-config-v3.conf
+++ b/config/hypr/configs/WindowRules-config-v3.conf
@@ -1,4 +1,9 @@
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ #
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Vendor defaults for window rules and layerrules
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
@@ -37,7 +42,7 @@ windowrule = match:title ^(KooL Hyprland Settings)$, tag +KooL_Settings
windowrule = match:class ^(nwg-displays|nwg-look)$, tag +KooL-Settings
# terminal tags
-windowrule = match:class ^(Alacritty|kitty|kitty-dropterm)$, tag +terminal
+windowrule = match:class ^(ghostty|wezterm|Alacritty|kitty|kitty-dropterm)$, tag +terminal
# email tags
windowrule = match:class ^([Tt]hunderbird|org.mozilla.Thunderbird)$, tag +email
@@ -116,6 +121,7 @@ windowrule = match:class ^([Qq]alculate-gtk)$, float on
# float popups and dialogue
windowrule = match:title ^(Authentication Required)$, float on, center on
+windowrule = match:class ^(xfce-polkit|mate-polkit|polkit-mate-authentication-agent-1)$, match:title ^(Authentication required|Authentication Required)$, float on, center on, size (monitor_w*0.35) (monitor_h*0.35)
windowrule = match:class (codium|codium-url-handler|VSCodium), match:title negative:(.*codium.*|.*VSCodium.*), float on
windowrule = match:class ^(com.heroicgameslauncher.hgl)$, match:title negative:(Heroic Games Launcher), float on
windowrule = match:class ^([Ss]team)$, match:title negative:^([Ss]team)$, float on
@@ -166,6 +172,18 @@ layerrule = match:namespace notifications, blur on
layerrule = match:namespace quickshell:overview, blur on
layerrule = match:namespace quickshell:overview, ignore_alpha 0.5
+#
+layerrule = blur on, match:namespace wallpaper
+layerrule = animation slide, match:namespace rofi
+layerrule = animation slide, match:namespace notifications
+
+# Optional Layer rules
+# To Resolve blurred corners in rofi Add to User config
+# SUPER SHIFT + E Edit User Window Rules
+#layerrule = blur on, ignore_alpha 0, match:namespace rofi
+#layerrule = blur on, match:namespace waybar
+
+
windowrule {
name = Picture-in-Picture
match:title = ^[Pp]icture-in-[Pp]icture$
@@ -189,6 +207,40 @@ windowrule {
size = (monitor_w*0.6) (monitor_h*0.6)
}
+# Named rule for Mainline Kernels
+windowrule {
+ name = Mainline Kernels
+ match:class = ^(mainline-gtk)$
+ match:title = ^(Mainline Kernels)$
+ match:initial_class = ^(mainline-gtk)$
+ match:initial_title = ^(Mainline Kernels)$
+ float = on
+ center = on
+ size = (monitor_w*0.45) (monitor_h*0.55)
+}
+
+# Named rule for Kwallet
+windowrule {
+ name = Kwallet
+ match:class = ^(org.kde.kwalletmanager)$
+ match:title = ^(Wallet Manager)$
+ match:initial_class = ^(org.kde.kwalletmanager)$
+ match:initial_title = ^(Wallet Manager)$
+ float = on
+ center = on
+ size = (monitor_w*0.6) (monitor_h*0.6)
+}
+# Named rule for NVIDIA Settings
+windowrule {
+ name = NVIDIA Settings
+ match:class = ^(nvidia-settings)$
+ match:title = ^(NVIDIA Settings)$
+ match:initial_class = ^(nvidia-settings)$
+ match:initial_title = ^(NVIDIA Settings)$
+ float = on
+ center = on
+ size = (monitor_w*0.6) (monitor_h*0.6)
+}
# Named rule for CachyOS Package Installer
windowrule {
name = CachyOS Package Installer
@@ -326,7 +378,7 @@ windowrule {
match:class = (org.gnome.Calculator|qalculate-gtk)
float = on
center = on
- size = (monitor_w*0.25) (monitor_h*0.3)
+ size = (monitor_w*0.55) (monitor_h*0.45)
}
# Named rule for Thunar Dialogs
@@ -347,5 +399,5 @@ windowrule {
match:initial_title = ^(Bitwarden)$
float = on
center = on
- size = (monitor_w*0.6) (monitor_h*0.6)
+ size = (monitor_w*0.6) (monitor_h*0.6)
}
diff --git a/config/hypr/configs/WindowRules-pre-53.conf b/config/hypr/configs/WindowRules-pre-53.conf
index 589a8acb..fc74f600 100644
--- a/config/hypr/configs/WindowRules-pre-53.conf
+++ b/config/hypr/configs/WindowRules-pre-53.conf
@@ -1,4 +1,9 @@
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ #
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Vendor defaults for window rules and layerrules
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
diff --git a/config/hypr/configs/WindowRules.conf b/config/hypr/configs/WindowRules.conf
index 8212e9bf..29d5c274 100644
--- a/config/hypr/configs/WindowRules.conf
+++ b/config/hypr/configs/WindowRules.conf
@@ -1,4 +1,9 @@
-# /* ---- πŸ’« https://github.com/LinuxBeginnings πŸ’« ---- */ #
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Vendor defaults for window rules and layerrules
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
@@ -37,7 +42,7 @@ windowrule = match:title ^(KooL Hyprland Settings)$, tag +KooL_Settings
windowrule = match:class ^(nwg-displays|nwg-look)$, tag +KooL-Settings
# terminal tags
-windowrule = match:class ^(Alacritty|kitty|kitty-dropterm)$, tag +terminal
+windowrule = match:class ^(ghostty|wezterm|Alacritty|kitty|kitty-dropterm)$, tag +terminal
# email tags
windowrule = match:class ^([Tt]hunderbird|org.mozilla.Thunderbird)$, tag +email
@@ -116,6 +121,7 @@ windowrule = match:class ^([Qq]alculate-gtk)$, float on
# float popups and dialogue
windowrule = match:title ^(Authentication Required)$, float on, center on
+windowrule = match:class ^(xfce-polkit|mate-polkit|polkit-mate-authentication-agent-1)$, match:title ^(Authentication required|Authentication Required)$, float on, center on, size (monitor_w*0.35) (monitor_h*0.35)
windowrule = match:class (codium|codium-url-handler|VSCodium), match:title negative:(.*codium.*|.*VSCodium.*), float on
windowrule = match:class ^(com.heroicgameslauncher.hgl)$, match:title negative:(Heroic Games Launcher), float on
windowrule = match:class ^([Ss]team)$, match:title negative:^([Ss]team)$, float on
@@ -166,6 +172,18 @@ layerrule = match:namespace notifications, blur on
layerrule = match:namespace quickshell:overview, blur on
layerrule = match:namespace quickshell:overview, ignore_alpha 0.5
+#
+layerrule = blur on, match:namespace wallpaper
+layerrule = animation slide, match:namespace rofi
+layerrule = animation slide, match:namespace notifications
+
+# Optional Layer rules
+# To Resolve blurred corners in rofi Add to User config
+# SUPER SHIFT + E Edit User Window Rules
+#layerrule = blur on, ignore_alpha 0, match:namespace rofi
+#layerrule = blur on, match:namespace waybar
+
+
windowrule {
name = Picture-in-Picture
match:title = ^[Pp]icture-in-[Pp]icture$
@@ -189,6 +207,40 @@ windowrule {
size = (monitor_w*0.6) (monitor_h*0.6)
}
+# Named rule for Mainline Kernels
+windowrule {
+ name = Mainline Kernels
+ match:class = ^(mainline-gtk)$
+ match:title = ^(Mainline Kernels)$
+ match:initial_class = ^(mainline-gtk)$
+ match:initial_title = ^(Mainline Kernels)$
+ float = on
+ center = on
+ size = (monitor_w*0.45) (monitor_h*0.55)
+}
+
+# Named rule for Kwallet
+windowrule {
+ name = Kwallet
+ match:class = ^(org.kde.kwalletmanager)$
+ match:title = ^(Wallet Manager)$
+ match:initial_class = ^(org.kde.kwalletmanager)$
+ match:initial_title = ^(Wallet Manager)$
+ float = on
+ center = on
+ size = (monitor_w*0.6) (monitor_h*0.6)
+}
+# Named rule for NVIDIA Settings
+windowrule {
+ name = NVIDIA Settings
+ match:class = ^(nvidia-settings)$
+ match:title = ^(NVIDIA Settings)$
+ match:initial_class = ^(nvidia-settings)$
+ match:initial_title = ^(NVIDIA Settings)$
+ float = on
+ center = on
+ size = (monitor_w*0.6) (monitor_h*0.6)
+}
# Named rule for CachyOS Package Installer
windowrule {
name = CachyOS Package Installer
@@ -326,7 +378,7 @@ windowrule {
match:class = (org.gnome.Calculator|qalculate-gtk)
float = on
center = on
- size = (monitor_w*0.25) (monitor_h*0.3)
+ size = (monitor_w*0.55) (monitor_h*0.45)
}
# Named rule for Thunar Dialogs
@@ -347,5 +399,5 @@ windowrule {
match:initial_title = ^(Bitwarden)$
float = on
center = on
- size = (monitor_w*0.6) (monitor_h*0.6)
+ size = (monitor_w*0.6) (monitor_h*0.6)
}
diff --git a/config/hypr/initial-boot.sh b/config/hypr/initial-boot.sh
index c68560ab..8ccda640 100755
--- a/config/hypr/initial-boot.sh
+++ b/config/hypr/initial-boot.sh
@@ -17,7 +17,14 @@ gtk_theme="Flat-Remix-GTK-Blue-Dark"
icon_theme="Flat-Remix-Blue-Dark"
cursor_theme="Bibata-Modern-Ice"
-swww="swww img"
+if command -v awww >/dev/null 2>&1; then
+ WWW="awww"
+ DAEMON="awww-daemon"
+else
+ WWW="swww"
+ DAEMON="swww-daemon"
+fi
+swww="$WWW img"
effect="--transition-bezier .43,1.19,1,.4 --transition-fps 30 --transition-type grow --transition-pos 0.925,0.977 --transition-duration 2"
# Check if a marker file exists.
@@ -26,7 +33,7 @@ if [ ! -f "$HOME/.config/hypr/.initial_startup_done" ]; then
# Initialize wallust and wallpaper
if [ -f "$wallpaper" ]; then
wallust run -s $wallpaper > /dev/null
- swww query || swww-daemon && $swww $wallpaper $effect
+ $WWW query || $DAEMON && $swww $wallpaper $effect
"$scriptsDir/WallustSwww.sh" > /dev/null 2>&1 &
fi
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"
diff --git a/config/hypr/v2.3.21 b/config/hypr/v2.3.22
index 51de9972..51de9972 100644
--- a/config/hypr/v2.3.21
+++ b/config/hypr/v2.3.22
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage