aboutsummaryrefslogtreecommitdiffstats
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
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>
-rw-r--r--CHANGELOG.md72
-rwxr-xr-xDistro-Hyprland.sh7
-rw-r--r--README.md133
-rwxr-xr-xarchive/release.sh7
-rwxr-xr-xarchive/update-dots.sh6
-rwxr-xr-xarchive/upgrade.sh7
-rw-r--r--config/fastfetch/images/Arch-Logo-1.pngbin0 -> 4879423 bytes
-rw-r--r--config/fastfetch/images/Arch-Logo-2.pngbin0 -> 4267876 bytes
-rwxr-xr-xconfig/fastfetch/images/debian_swirl.pngbin0 -> 15638 bytes
-rw-r--r--config/fastfetch/images/fedora.pngbin0 -> 27194 bytes
-rw-r--r--config/fastfetch/images/gentoo1.pngbin0 -> 82212 bytes
-rw-r--r--config/fastfetch/images/gentoo2.pngbin0 -> 14086 bytes
-rwxr-xr-xconfig/fastfetch/images/nixos.pngbin0 -> 79458 bytes
-rw-r--r--config/fastfetch/images/ubuntu.jpegbin0 -> 80148 bytes
-rw-r--r--config/fastfetch/images/ubuntu.pngbin0 -> 141008 bytes
-rw-r--r--config/fastfetch/kooldots-arch.jsonc150
-rw-r--r--config/fastfetch/kooldots-debian.jsonc150
-rw-r--r--config/fastfetch/kooldots-fedora.jsonc150
-rw-r--r--config/fastfetch/kooldots-gentoo.jsonc150
-rw-r--r--config/fastfetch/kooldots-nixos.jsonc150
-rw-r--r--config/fastfetch/kooldots-ubuntu.jsonc150
-rw-r--r--config/ghostty/config (renamed from config/ghostty/ghostty.config)10
-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
-rw-r--r--config/kitty/kitty-themes/00-Default.conf1
-rw-r--r--config/kitty/kitty.conf4
-rw-r--r--config/rofi/config-emacs-keybinds.rasi41
-rw-r--r--config/rofi/config-ghostty-theme.rasi74
-rw-r--r--config/rofi/dwm-config-horiz.rasi19
-rw-r--r--config/rofi/dwm-config-vert.rasi25
-rw-r--r--config/rofi/dwm-dmenu-horiz.rasi50
-rw-r--r--config/rofi/dwm-dmenu-vert.rasi54
-rw-r--r--config/rofi/themes/KooL_TokyoNight.rasi135
-rw-r--r--config/rofi/themes/KooL_dwm.rasi86
-rw-r--r--config/systemd/user/hyprpolkitagent.service.d/override.conf7
-rw-r--r--config/waybar/ModulesCustom11
-rw-r--r--config/waybar/ModulesWorkspaces19
-rw-r--r--config/waybar/configs/TOP-ddubs-simple-bar5
-rw-r--r--config/waybar/style/Dark-Latte-Wallust-combined-v2.css8
-rw-r--r--config/waybar/style/Dark-Latte-Wallust-combined.css4
-rw-r--r--config/waybar/style/Wallust-Bordered-Chroma-Fusion-Edge.css4
-rw-r--r--config/waybar/style/Wallust-Bordered-Chroma-Simple.css73
-rw-r--r--config/waybar/style/Wallust-Box-type.css11
-rw-r--r--config/waybar/style/Wallust-Chroma-Edge.css7
-rw-r--r--config/waybar/style/Wallust-Chroma-Fusion.css4
-rw-r--r--config/waybar/style/Wallust-ML4W-modern-mixed.css14
-rw-r--r--config/waybar/style/Wallust-ML4W-modern.css8
-rwxr-xr-xcopy.sh30
-rw-r--r--docs/Hyprland-LUA-analysis-Phase1.md159
-rw-r--r--docs/copy.sh-tui-analysis-3-14-2026.md105
-rw-r--r--i18n/README/README.ua.md83
-rwxr-xr-xscripts/copy_menu.sh6
-rw-r--r--scripts/lib_apps.sh52
-rw-r--r--scripts/lib_backup.sh14
-rw-r--r--scripts/lib_copy.sh94
-rw-r--r--scripts/lib_detect.sh6
-rw-r--r--scripts/lib_prompts.sh6
-rw-r--r--scripts/lib_update.sh6
162 files changed, 4390 insertions, 541 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4e0e347b..394bd80d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,74 @@
-# Changelog — JAK's Hyprland Dotfiles
+# Changelog — KoolDots
+
+## v2.3.22
+
+- Fixed: Kitty font issue
+ - Thank you `@JasonNero` for the fix
+- Enabled `touch on tablet` in `hypr/configs/SystemSettings.conf`
+- Updated `copy.sh` to support `ghostty`
+- The ghostty config directory is now backed up
+- Restore ghostty config added to restore options
+- [S3cBar0n](https://github.com/S3cBar0n) updated `WallpaperSelect.sh`
+ - It shows filename for the random image, and current wallpaper
+ - Thanks for support Kooldots!
+- `SWWW` project is archived moving to `AWWW`
+ - It's feature, syntax compatible
+ - Already has some fixes added
+ - Created a startup script to check for `awww-daemon` or fallback to `swww-daemon`
+ - Suggest everyone remove `swww` and replace with `awww`
+ - This has been done in `NixOS-Hyprland` but you have to update to current build in main branch
+- FIXED: Long delay updating colors after wallpaper change
+- Added more app icons for `WaybarWorkspaces`
+ - Emacs
+ - Nautilus
+ - Set new default icon to terminal with red X if no icon is available
+- Fixed delay is `ScreenShot.sh` script
+ - Removed existing `sleep` commands
+ - Moved audio `Sound.sh` to background
+ - This relates to `pipewire` [issue](https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/5155)
+- Fixed delay in `Sounds.sh`
+- Now uses `paplay` for sounds
+- Rewrote core logic of `DropDownterminal.sh`
+ - Doesn't use `specialworkspace` anymore
+ - Updates to Hyprland seem to break old logic
+ - The Dropdown would flash on hide
+- Fixed all float toggle
+ - Old command drepreciated
+ - Replaced with a script `Float-All-Windows.sh` in `Keybinds.conf` file
+- Fixed Package name for `waybar-weather`
+- Added `monocle` layout
+- Experimenting with some additional layerrules
+- Improving wallpaper based theming
+ - More consistent results
+ - Reducing the time to make change effective
+- Fixed several waybar style files with inconsitent colors
+- Updated `ChangeLayout` script for scrolling
+ - Requires Hyprland v0.54+
+- Added two keybinds for scrolling layout as a start
+ - SUPERSHIFT + comma swap columns
+ - SUPERSHIFT + period move to next column
+ - SUPERALT + H Horizonal Scrolling
+ - SUPERALT + V Vertical Scrolling
+- Updated `togglesplit` to `layoutmsg,togglesplit`
+ - Has been depreciated, w/0.54 it's not supported
+ - No errors just doesn't work
+- Fixed many of the WALLUST based waybars color issues
+ - Foreground/background colors were same light color
+- Kitty now has a "No color/no theme" option
+- Updated the Headers in the scripts to:
+ - KoolDots
+ - Added Project name and URL
+ - Added License info GPLv3 to each file also
+- Added new Rofi themes:
+ - dwm Horizontal (old classic dmenu style)
+ - dwm Vertical (dmenu with small dropdown list)
+ - TokyoNight
+- Changed `fastfetch` dotfiles name to `KoolDots`
+- ENVvariables file had both QT5CT and QT6CT variables
+ ` #Added style ENV for kvantum
+env = QT_QPA_PLATFORMTHEME,qt6ct
+env = QT_STYLE_OVERRIDE,kvantum`
+ > Note: Not sure how will this will work as I don't normally use kvantum
## v2.3.21
diff --git a/Distro-Hyprland.sh b/Distro-Hyprland.sh
index 9954947d..09f801a9 100755
--- a/Distro-Hyprland.sh
+++ b/Distro-Hyprland.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 design to clone the Distro-Hyprland install scripts
diff --git a/README.md b/README.md
index 1ca83057..201050f9 100644
--- a/README.md
+++ b/README.md
@@ -15,43 +15,33 @@
<div align="center">
<br>
- <a href="#-copying--installation--update-instructions-"><kbd> <br> Installation <br> </kbd></a>&ensp;&ensp;
- <a href="https://www.youtube.com/playlist?list=PLDtGd5Fw5_GjXCznR0BzCJJDIQSZJRbxx"><kbd> <br> Youtube <br> </kbd></a>&ensp;&ensp;
+ <a href="#-installationupdate-instructions"><kbd> <br> Installation <br> </kbd></a>&ensp;&ensp;
<a href="https://github.com/LinuxBeginnings/Hyprland-Dots/wiki"><kbd> <br> Wiki <br> </kbd></a>&ensp;&ensp;
- <a href="https://github.com/LinuxBeginnings/Hyprland-Dots/discussions"><kbd> <br> Discussions <br> </kbd></a>&ensp;&ensp;
- <a href="https://github.com/LinuxBeginnings/Hyprland-Dots/wiki/Keybinds"><kbd> <br> Keybinds <br> </kbd></a>&ensp;&ensp;
- <a href="https://discord.gg/RZJgC7KAKm"><kbd> <br> Discord <br> </kbd></a>
+ <a href="https://www.youtube.com/@LinuxBeginnings"><kbd> <br> Youtube <br> </kbd></a>&ensp;&ensp;
+ <a href="https://discord.gg/RZJgC7KAKm"><kbd> <br> Discord <br> </kbd></a>&ensp;&ensp;
+ <a href="https://www.youtube.com/playlist?list=PLDtGd5Fw5_GjXCznR0BzCJJDIQSZJRbxx"><kbd> <br> Legacy Jak Videos <br> </kbd></a>&ensp;&ensp;
</div><br>
<div align="center">
-
<br/>
</div>
<h3 align="center">
<img src="https://github.com/LinuxBeginnings/Telegram-Animated-Emojis/blob/main/Activity/Sparkles.webp" alt="Sparkles" width="38" height="38" />
- KooL's Hyprland Dotfiles Showcase
+ KooL's Hyprland Dotfiles Showcase
<img src="https://github.com/LinuxBeginnings/Telegram-Animated-Emojis/blob/main/Activity/Sparkles.webp" alt="Sparkles" width="38" height="38" />
</h3>
<div align="center">
-
-https://github.com/user-attachments/assets/49bc12b2-abaf-45de-a21c-67aacd9bb872
-
+ <https://github.com/user-attachments/assets/49bc12b2-abaf-45de-a21c-67aacd9bb872>
</div>
-### 📹 A video walkthroughs
-
-- at the bottom
-
-</details>
-
---
[![Typing SVG](https://readme-typing-svg.herokuapp.com?font=Fira+Code&weight=700&size=22&pause=1000&color=F7077E&vCenter=true&width=435&height=30&lines=INSTALLATION)](https://git.io/typing-svg)
-### 🚩 🏁 Auto Distro-Hyprland install scripts cloning and starting 🇵🇭
+### 🏁 Auto Distro-Hyprland install scripts cloning and starting
> [!CAUTION]
> If you are using FISH SHELL, DO NOT use this function. Clone the Distro-Hyprland and ran install.sh instead
@@ -63,11 +53,11 @@ sh <(curl -L https://raw.githubusercontent.com/LinuxBeginnings/Hyprland-Dots/mai
```
- You can use the above command to automatically clone the `Distro-Hyprland` install scripts
-- It will clone the install script and start the `install.sh` 😎
+- It will clone the install script and start the `install.sh`
-### 👁️‍🗨️ My Hyprland install Scripts 👁️‍🗨️
+### 👁️‍🗨️ My Hyprland install Scripts
-- Automated Hyprland Scripts for Distro of choice which will pull this dotfiles if opted to install these configurations
+Automated Hyprland Scripts for Distro of choice which will pull this dotfiles if opted to install these configurations
- [Arch-Linux](https://github.com/LinuxBeginnings/Arch-Hyprland)
@@ -80,36 +70,35 @@ sh <(curl -L https://raw.githubusercontent.com/LinuxBeginnings/Hyprland-Dots/mai
- [NixOS (25.05+)](https://github.com/LinuxBeginnings/NixOS-Hyprland)
- [Ubuntu 24.04 LTS](https://github.com/LinuxBeginnings/Ubuntu-Hyprland/tree/24.04)
-- [Ubuntu 24.10 (depreciated)](https://github.com/LinuxBeginnings/Ubuntu-Hyprland/tree/24.10)
-- [Ubuntu 25.04 (depreciated)](https://github.com/LinuxBeginnings/Ubuntu-Hyprland/tree/25.04)
+- [Ubuntu 24.10 (deprecated)](https://github.com/LinuxBeginnings/Ubuntu-Hyprland/tree/24.10)
+- [Ubuntu 25.04 (deprecated)](https://github.com/LinuxBeginnings/Ubuntu-Hyprland/tree/25.04)
- [Ubuntu 25.10](https://github.com/LinuxBeginnings/Ubuntu-Hyprland/tree/25.10)
---
-### 🪧 Attention 🪧
+### 🪧 Attention
- This repo does NOT contain or will NOT install any packages. These are only pre-configured-hyprland configs or dotfiles
- refer to install scripts what packages needed to install... but at least, Hyprland packages are required
- This repo will be pulled by the Distro-Hyprland install scripts above if you opt to download pre-configured dots
-### 👀 Screenshots 👀
+### 👀 Screenshots
- All screenshots are collected here [Screenshots](https://github.com/LinuxBeginnings/screenshots/tree/main/Hyprland-ScreenShots)
-### 📦 Whats new?
+### 📦 What's new?
- To easily track changes, I will be updating the [CHANGELOGS](https://github.com/LinuxBeginnings/Hyprland-Dots/wiki/Changelogs) Screenshots will be included if worth mentioning the changes!
-> [!NOTE]
-> Kindly note that by default, Kools Dots are adjusted / configured for 2k (1440p) display without scaling.
-
-### 💥 Copying / Installation / Update instructions 💥
+### 💥 Installation/Update instructions
- [`MORE INFO HERE`](https://github.com/LinuxBeginnings/Hyprland-Dots/wiki/Install_&_Update)
> [!Note]
> The auto copy script `copy.sh` will create backups of intended directories to be copied.
> However, it's still a good idea to manually backup just incase script fails to backup your configuration.
> If you already have a hyprland configuration, uninstall it first, or create a new user, and install it with that user
+
+> To download from main branch
- Clone this repo by using `git`.
- Change directory, i.e. `cd Arch-Hyprland`
- Make `install.sh` executable `chmod +x ./install.sh`
@@ -119,16 +108,14 @@ sh <(curl -L https://raw.githubusercontent.com/LinuxBeginnings/Hyprland-Dots/mai
> Note: Ubuntu is exception, it has version specific branches
```bash
-git clone --depth=1 https://github.com/LinuxBeginnings/Hyprland-Dots.git
-cd Hyprland-Dots
+git clone --depth=1 https://github.com/LinuxBeginnings/Hyprland-Dots.git && cd Hyprland-Dots
```
-> to download from Development branch (development and testing)
-> Not recommeded for non-testing systems
+> To download from Development branch
+> Not recommended for non-testing systems
```bash
-git clone --depth=1 https://github.com/LinuxBeginnings/Hyprland-Dots.git -b development
-cd Hyprland-Dots
+git clone --depth=1 https://github.com/LinuxBeginnings/Hyprland-Dots.git -b development && cd Hyprland-Dots
```
- automatic copy/install of pre-configured dots (recommended for updating)
@@ -138,95 +125,55 @@ chmod +x copy.sh
./copy.sh
```
-- to copy/install from releases (stable) (note this is 1 version older than in main)
-
-```bash
-chmod +x release.sh
-./release.sh
-```
-
-- UPGRADE.sh function
- > [!IMPORTANT]
- > You need rsync for it to work
- > you should have already up and running KooL's Hyprland before using this function
-
-```bash
-chmod +x upgrade.sh
-./upgrade.sh
-```
-
-## ❗❗❗ DEBIAN AND UBUNTU!
-
-- Debian 13
- - Now builds Hyprland 0.51.1 from source using the `install.sh` script
- - So the current version of Hyprland-Dots is compatible only in those cases.
-
-- Ubuntu 24.04/25.10
- - We are now using a PPA to get more current versions of Hyprland.
- - So the current version of these Dotfiles are compatible if you updated to the PPA based configuration.
-
-#### ⚠️⚠️⚠️ ATTENTION - BACKUPS CREATED by SCRIPT
+#### ⚠️ BACKUPS CREATED by SCRIPT
> [!CAUTION]
-> `copy.sh`, `release.sh` and even `upgrade.sh` creates a backup!
+> `copy.sh` creates a backup!
> Kindly investigate manually contents on your `$HOME/.config`
> Delete manually any backups which you dont want.
#### 🛎️ a small note on wallpapers
-- by default, only few wallpapers will be copied (1 each dark and light plus 3 more). You will be offered to download more wallpapers. You can preview/check the additional wallpapers from [`THIS`](https://github.com/LinuxBeginnings/Wallpaper-Bank/tree/main/wallpapers) Link
-
-#### ⚠️⚠️⚠️ A MUST! after copying / Installing these dots
-
-- Press `SUPER W` and set a wallpaper. This is also to initiate wallust for waybar, kitty (tty) and rofi themes.
-- However, If you use the `copy.sh` or the `release.sh`, there will be a preset initial Wallpaper and you dont have to do this
-
-- Nvidia Owners. Make sure to edit your `~/.config/hypr/UserConfigs/ENVariables.conf` (highly recommended).
+- by default, only few wallpapers will be copied (1 each dark and light plus 3 more). You will be offered to download more wallpapers. You can preview/check the additional wallpapers from this [`LINK`](https://github.com/LinuxBeginnings/Wallpaper-Bank/tree/main/wallpapers)
-* NVIDIA users / owners, after installation, check [`THIS`](https://github.com/LinuxBeginnings/Hyprland-Dots/wiki/Notes_to_remember#--for-nvidia-gpu-users)
+#### ⚠️ after installing these dots
+- NVIDIA Owners.
+ - After installation, check [`THIS`](https://github.com/LinuxBeginnings/Hyprland-Dots/wiki/FAQ_NVIDIA)
+ - Make sure to edit your `~/.config/hypr/UserConfigs/ENVariables.conf` (highly recommended).
- If you have already set your own keybinds, monitors, etc.... Just copy over from backup created before log-out or reboot. (recommended)
-#### 📖 Known issues and possible solutions
-
-- check out this page [FAQ](https://github.com/LinuxBeginnings/Hyprland-Dots/wiki/FAQ) and [UNSOLVED ISSUES](https://github.com/LinuxBeginnings/Hyprland-Dots/wiki/Known_Issues)
-
-#### 🙋 QUESTIONS ?!?! ⁉️
+#### 🙋 QUESTIONS ?
- FAQ! Yes you can use these dotfiles to other distro! Just ensure to install proper packages first! If it makes you feel better, I use same config on my Gentoo:)
-- QUICK HINT! Click the HINT! Waybar module (note only available in Waybar default and Simple-L [TOP] layout). Can be launched by Keybind `SUPER H`
+- QUICK HINT! Click the HINT! Waybar module (only available on some layouts). Also can be launched by keybind `SUPER + H`
- More question? click here browse through this [WIKI](https://github.com/LinuxBeginnings/Hyprland-Dots/wiki/)
-- If you want the old configs, it is collected on my "Archive" repo. See [HERE](https://github.com/LinuxBeginnings/Hyprland-Dots-releases-Archive)
#### ⌨ Keybinds
-- Keybinds [`CLICK`](https://github.com/LinuxBeginnings/Hyprland-Dots/wiki/Keybinds)
+- Keybinds [`HERE`](https://github.com/LinuxBeginnings/Hyprland-Dots/wiki/Keybinds)
-#### 🙏 Special request
+### ✍️ Contributing
- If you have improvements on the dotfiles or configuration, feel free to submit a PR for improvement.
- I always welcome improvements as I am also just learning just like you guys!
+- Click [`HERE`](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/CONTRIBUTING.md) for a guide how to contribute
-#### ✍️ Contributing
+> Thanks to all who have contributed code, or support on the Discord server. Your efforts are greatly appreciated
+### 🔮 Discord Server
- Want to contribute? Click [`HERE`](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/CONTRIBUTING.md) for a guide how to contribute
> Thanks to all who have contributed code, or support on the Discord server. You efforts are greatly appreciated
-#### 🤷‍♂️ TO DO!
-
-- [ ] Tweak dots - 🚧 in constant progress
-
-#### 🔮 Discord Server
+- kindly join my [Discord](https://discord.gg/RZJgC7KAKm)
-- kindly join my [Discord](https://discord.com/invite/kool-tech-world)
-
-#### 💖 Support
+### 💖 Support
- a Star on my Github repos would be nice 🌟
-
-- Subscribe to my Youtube Channel [YouTube](https://www.youtube.com/@Ja.KooLit)
+- Subscribe to my Youtube Channel [YouTube](https://www.youtube.com/@LinuxBeginnings)
## 🫰 Thank you for the stars 🩷
+
### Document translations
- Spanish: [Código de Conducta](./i18n/CODE_OF_CONDUCT/CODE_OF_CONDUCT.es.md) · [Guía de mensajes de commit](./i18n/COMMIT_MESSAGE_GUIDELINES/COMMIT_MESSAGE_GUIDELINES.es.md) · [Guía de contribución](./i18n/CONTRIBUTING/CONTRIBUTING.es.md)
diff --git a/archive/release.sh b/archive/release.sh
index 78df3444..8262708c 100755
--- a/archive/release.sh
+++ b/archive/release.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 downloading dots from releases
# Set some colors for output messages
diff --git a/archive/update-dots.sh b/archive/update-dots.sh
index 84bd7611..4ac97bec 100755
--- a/archive/update-dots.sh
+++ b/archive/update-dots.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
IFS=$'\n\t'
diff --git a/archive/upgrade.sh b/archive/upgrade.sh
index 63375762..f8442ded 100755
--- a/archive/upgrade.sh
+++ b/archive/upgrade.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 Semi-Manual upgrading your system.
# NOTE: requires rsync
diff --git a/config/fastfetch/images/Arch-Logo-1.png b/config/fastfetch/images/Arch-Logo-1.png
new file mode 100644
index 00000000..0a587b3e
--- /dev/null
+++ b/config/fastfetch/images/Arch-Logo-1.png
Binary files differ
diff --git a/config/fastfetch/images/Arch-Logo-2.png b/config/fastfetch/images/Arch-Logo-2.png
new file mode 100644
index 00000000..b0abc76b
--- /dev/null
+++ b/config/fastfetch/images/Arch-Logo-2.png
Binary files differ
diff --git a/config/fastfetch/images/debian_swirl.png b/config/fastfetch/images/debian_swirl.png
new file mode 100755
index 00000000..d45dffce
--- /dev/null
+++ b/config/fastfetch/images/debian_swirl.png
Binary files differ
diff --git a/config/fastfetch/images/fedora.png b/config/fastfetch/images/fedora.png
new file mode 100644
index 00000000..2fdc5793
--- /dev/null
+++ b/config/fastfetch/images/fedora.png
Binary files differ
diff --git a/config/fastfetch/images/gentoo1.png b/config/fastfetch/images/gentoo1.png
new file mode 100644
index 00000000..65e6a934
--- /dev/null
+++ b/config/fastfetch/images/gentoo1.png
Binary files differ
diff --git a/config/fastfetch/images/gentoo2.png b/config/fastfetch/images/gentoo2.png
new file mode 100644
index 00000000..d9db41bf
--- /dev/null
+++ b/config/fastfetch/images/gentoo2.png
Binary files differ
diff --git a/config/fastfetch/images/nixos.png b/config/fastfetch/images/nixos.png
new file mode 100755
index 00000000..571410a7
--- /dev/null
+++ b/config/fastfetch/images/nixos.png
Binary files differ
diff --git a/config/fastfetch/images/ubuntu.jpeg b/config/fastfetch/images/ubuntu.jpeg
new file mode 100644
index 00000000..62da0561
--- /dev/null
+++ b/config/fastfetch/images/ubuntu.jpeg
Binary files differ
diff --git a/config/fastfetch/images/ubuntu.png b/config/fastfetch/images/ubuntu.png
new file mode 100644
index 00000000..f54657ed
--- /dev/null
+++ b/config/fastfetch/images/ubuntu.png
Binary files differ
diff --git a/config/fastfetch/kooldots-arch.jsonc b/config/fastfetch/kooldots-arch.jsonc
new file mode 100644
index 00000000..bb1f2cd8
--- /dev/null
+++ b/config/fastfetch/kooldots-arch.jsonc
@@ -0,0 +1,150 @@
+{
+ "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
+
+ "logo": {
+ "type": "kitty-direct",
+ "source": "$HOME/.config/fastfetch/images/Arch-Logo-2.png",
+ // "type": "small",
+ "width": 20,
+ "height": 10,
+ "padding": {
+ "top": 4,
+ "right": 4,
+ "left": 2,
+ },
+ },
+
+ "display": {
+ "separator": " ",
+ "color": {
+ "keys": "white",
+ },
+ "key": {
+ "width": 18,
+ },
+ "brightColor": false,
+ },
+
+ "modules": [
+ "break",
+ "break",
+
+ // ── Identity header ────────────────────────────────────────────
+ // {
+ // "type": "custom",
+ // "format": "\u001b[1m\u001b[38;5;197m <---- KoolDots ---->\u001b[0m"
+ // },
+ // "break",
+
+ "break",
+ // ── System ─────────────────────────────────────────────────────
+ {
+ "type": "custom",
+ "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mSYSTEM\u001b[0m \u001b[38;5;197m──────────────────────────\u001b[0m",
+ },
+ {
+ "type": "os",
+ "key": " {icon} OS",
+ },
+ {
+ "type": "kernel",
+ "key": " {icon} Kernel",
+ },
+ {
+ "type": "command",
+ "key": " {icon} Hostname",
+ "text": "printf '%s@%s' \"$USER\" \"$(hostname)\"",
+ },
+ {
+ "type": "uptime",
+ "key": " {icon} Uptime",
+ },
+ {
+ "type": "packages",
+ "key": " {icon} Packages",
+ },
+ {
+ "type": "disk",
+ "key": " {icon} OS Age",
+ "folders": "/",
+ "format": "installed {create-time:10} ({days} days ago)",
+ },
+ "break",
+
+ // ── Hardware ───────────────────────────────────────────────────
+ {
+ "type": "custom",
+ "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mHARDWARE\u001b[0m \u001b[38;5;197m────────────────────────\u001b[0m",
+ },
+ {
+ "type": "host",
+ "key": " {icon} Machine",
+ "format": "{name}",
+ },
+ {
+ "type": "cpu",
+ "key": " {icon} CPU",
+ "showPeCoreCount": true,
+ },
+ {
+ "type": "gpu",
+ "key": " {icon} GPU",
+ },
+ {
+ "type": "memory",
+ "key": " {icon} RAM",
+ "percent": {
+ "type": 3,
+ "green": 40,
+ "yellow": 75,
+ },
+ },
+ {
+ "type": "disk",
+ "key": " {icon} Disk",
+ "format": "{size-used} / {size-total} ({size-percentage})",
+ },
+ "break",
+
+ // ── Desktop ────────────────────────────────────────────────────
+ {
+ "type": "custom",
+ "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mDESKTOP\u001b[0m \u001b[38;5;197m─────────────────────────\u001b[0m",
+ },
+ {
+ "type": "wm",
+ "key": " {icon} WM",
+ },
+ {
+ "type": "command",
+ "key": "  KoolDots",
+ "text": "echo v${DOTS_VERSION}",
+ },
+ {
+ "type": "display",
+ "key": " {icon} Display",
+ "compactType": "original-with-refresh-rate",
+ },
+ {
+ "type": "shell",
+ "key": " {icon} Shell",
+ },
+ {
+ "type": "terminal",
+ "key": " {icon} Terminal",
+ },
+ {
+ "type": "editor",
+ "key": " {icon} Editor",
+ },
+ "break",
+
+ // ── Footer ─────────────────────────────────────────────────────
+ // {
+ // black → dark pink → hot pink → light pink → white
+ // "type": "custom",
+ // "format": " \u001b[48;5;232m \u001b[48;5;53m \u001b[48;5;89m \u001b[48;5;125m \u001b[48;5;161m \u001b[48;5;197m \u001b[48;5;198m \u001b[48;5;199m \u001b[48;5;205m \u001b[48;5;211m \u001b[48;5;224m \u001b[48;5;231m \u001b[0m"
+ // },
+ "break",
+ ],
+}
diff --git a/config/fastfetch/kooldots-debian.jsonc b/config/fastfetch/kooldots-debian.jsonc
new file mode 100644
index 00000000..f66233fb
--- /dev/null
+++ b/config/fastfetch/kooldots-debian.jsonc
@@ -0,0 +1,150 @@
+{
+ "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
+
+ "logo": {
+ "type": "kitty-direct",
+ "source": "$HOME/.config/fastfetch/images/debian_swirl.png",
+ // "type": "small",
+ "width": 20,
+ "height": 10,
+ "padding": {
+ "top": 4,
+ "right": 4,
+ "left": 2,
+ },
+ },
+
+ "display": {
+ "separator": " ",
+ "color": {
+ "keys": "white",
+ },
+ "key": {
+ "width": 18,
+ },
+ "brightColor": false,
+ },
+
+ "modules": [
+ "break",
+ "break",
+
+ // ── Identity header ────────────────────────────────────────────
+ // {
+ // "type": "custom",
+ // "format": "\u001b[1m\u001b[38;5;197m <---- KoolDots ---->\u001b[0m"
+ // },
+ // "break",
+
+ "break",
+ // ── System ─────────────────────────────────────────────────────
+ {
+ "type": "custom",
+ "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mSYSTEM\u001b[0m \u001b[38;5;197m──────────────────────────\u001b[0m",
+ },
+ {
+ "type": "os",
+ "key": " {icon} OS",
+ },
+ {
+ "type": "kernel",
+ "key": " {icon} Kernel",
+ },
+ {
+ "type": "command",
+ "key": " {icon} Hostname",
+ "text": "printf '%s@%s' \"$USER\" \"$(hostname)\"",
+ },
+ {
+ "type": "uptime",
+ "key": " {icon} Uptime",
+ },
+ {
+ "type": "packages",
+ "key": " {icon} Packages",
+ },
+ {
+ "type": "disk",
+ "key": " {icon} OS Age",
+ "folders": "/",
+ "format": "installed {create-time:10} ({days} days ago)",
+ },
+ "break",
+
+ // ── Hardware ───────────────────────────────────────────────────
+ {
+ "type": "custom",
+ "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mHARDWARE\u001b[0m \u001b[38;5;197m────────────────────────\u001b[0m",
+ },
+ {
+ "type": "host",
+ "key": " {icon} Machine",
+ "format": "{name}",
+ },
+ {
+ "type": "cpu",
+ "key": " {icon} CPU",
+ "showPeCoreCount": true,
+ },
+ {
+ "type": "gpu",
+ "key": " {icon} GPU",
+ },
+ {
+ "type": "memory",
+ "key": " {icon} RAM",
+ "percent": {
+ "type": 3,
+ "green": 40,
+ "yellow": 75,
+ },
+ },
+ {
+ "type": "disk",
+ "key": " {icon} Disk",
+ "format": "{size-used} / {size-total} ({size-percentage})",
+ },
+ "break",
+
+ // ── Desktop ────────────────────────────────────────────────────
+ {
+ "type": "custom",
+ "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mDESKTOP\u001b[0m \u001b[38;5;197m─────────────────────────\u001b[0m",
+ },
+ {
+ "type": "wm",
+ "key": " {icon} WM",
+ },
+ {
+ "type": "command",
+ "key": "  KoolDots",
+ "text": "echo v${DOTS_VERSION}",
+ },
+ {
+ "type": "display",
+ "key": " {icon} Display",
+ "compactType": "original-with-refresh-rate",
+ },
+ {
+ "type": "shell",
+ "key": " {icon} Shell",
+ },
+ {
+ "type": "terminal",
+ "key": " {icon} Terminal",
+ },
+ {
+ "type": "editor",
+ "key": " {icon} Editor",
+ },
+ "break",
+
+ // ── Footer ─────────────────────────────────────────────────────
+ // {
+ // black → dark pink → hot pink → light pink → white
+ // "type": "custom",
+ // "format": " \u001b[48;5;232m \u001b[48;5;53m \u001b[48;5;89m \u001b[48;5;125m \u001b[48;5;161m \u001b[48;5;197m \u001b[48;5;198m \u001b[48;5;199m \u001b[48;5;205m \u001b[48;5;211m \u001b[48;5;224m \u001b[48;5;231m \u001b[0m"
+ // },
+ "break",
+ ],
+}
diff --git a/config/fastfetch/kooldots-fedora.jsonc b/config/fastfetch/kooldots-fedora.jsonc
new file mode 100644
index 00000000..4a877680
--- /dev/null
+++ b/config/fastfetch/kooldots-fedora.jsonc
@@ -0,0 +1,150 @@
+{
+ "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
+
+ "logo": {
+ "type": "kitty-direct",
+ "source": "$HOME/.config/fastfetch/images/fedora.png",
+ // "type": "small",
+ "width": 20,
+ "height": 10,
+ "padding": {
+ "top": 4,
+ "right": 4,
+ "left": 2,
+ },
+ },
+
+ "display": {
+ "separator": " ",
+ "color": {
+ "keys": "white",
+ },
+ "key": {
+ "width": 18,
+ },
+ "brightColor": false,
+ },
+
+ "modules": [
+ "break",
+ "break",
+
+ // ── Identity header ────────────────────────────────────────────
+ // {
+ // "type": "custom",
+ // "format": "\u001b[1m\u001b[38;5;197m <---- KoolDots ---->\u001b[0m"
+ // },
+ // "break",
+
+ "break",
+ // ── System ─────────────────────────────────────────────────────
+ {
+ "type": "custom",
+ "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mSYSTEM\u001b[0m \u001b[38;5;197m──────────────────────────\u001b[0m",
+ },
+ {
+ "type": "os",
+ "key": " {icon} OS",
+ },
+ {
+ "type": "kernel",
+ "key": " {icon} Kernel",
+ },
+ {
+ "type": "command",
+ "key": " {icon} Hostname",
+ "text": "printf '%s@%s' \"$USER\" \"$(hostname)\"",
+ },
+ {
+ "type": "uptime",
+ "key": " {icon} Uptime",
+ },
+ {
+ "type": "packages",
+ "key": " {icon} Packages",
+ },
+ {
+ "type": "disk",
+ "key": " {icon} OS Age",
+ "folders": "/",
+ "format": "installed {create-time:10} ({days} days ago)",
+ },
+ "break",
+
+ // ── Hardware ───────────────────────────────────────────────────
+ {
+ "type": "custom",
+ "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mHARDWARE\u001b[0m \u001b[38;5;197m────────────────────────\u001b[0m",
+ },
+ {
+ "type": "host",
+ "key": " {icon} Machine",
+ "format": "{name}",
+ },
+ {
+ "type": "cpu",
+ "key": " {icon} CPU",
+ "showPeCoreCount": true,
+ },
+ {
+ "type": "gpu",
+ "key": " {icon} GPU",
+ },
+ {
+ "type": "memory",
+ "key": " {icon} RAM",
+ "percent": {
+ "type": 3,
+ "green": 40,
+ "yellow": 75,
+ },
+ },
+ {
+ "type": "disk",
+ "key": " {icon} Disk",
+ "format": "{size-used} / {size-total} ({size-percentage})",
+ },
+ "break",
+
+ // ── Desktop ────────────────────────────────────────────────────
+ {
+ "type": "custom",
+ "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mDESKTOP\u001b[0m \u001b[38;5;197m─────────────────────────\u001b[0m",
+ },
+ {
+ "type": "wm",
+ "key": " {icon} WM",
+ },
+ {
+ "type": "command",
+ "key": "  KoolDots",
+ "text": "echo v${DOTS_VERSION}",
+ },
+ {
+ "type": "display",
+ "key": " {icon} Display",
+ "compactType": "original-with-refresh-rate",
+ },
+ {
+ "type": "shell",
+ "key": " {icon} Shell",
+ },
+ {
+ "type": "terminal",
+ "key": " {icon} Terminal",
+ },
+ {
+ "type": "editor",
+ "key": " {icon} Editor",
+ },
+ "break",
+
+ // ── Footer ─────────────────────────────────────────────────────
+ // {
+ // black → dark pink → hot pink → light pink → white
+ // "type": "custom",
+ // "format": " \u001b[48;5;232m \u001b[48;5;53m \u001b[48;5;89m \u001b[48;5;125m \u001b[48;5;161m \u001b[48;5;197m \u001b[48;5;198m \u001b[48;5;199m \u001b[48;5;205m \u001b[48;5;211m \u001b[48;5;224m \u001b[48;5;231m \u001b[0m"
+ // },
+ "break",
+ ],
+}
diff --git a/config/fastfetch/kooldots-gentoo.jsonc b/config/fastfetch/kooldots-gentoo.jsonc
new file mode 100644
index 00000000..591f7755
--- /dev/null
+++ b/config/fastfetch/kooldots-gentoo.jsonc
@@ -0,0 +1,150 @@
+{
+ "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
+
+ "logo": {
+ "type": "kitty-direct",
+ "source": "$HOME/.config/fastfetch/images/gentoo1.png",
+ // "type": "small",
+ "width": 20,
+ "height": 10,
+ "padding": {
+ "top": 4,
+ "right": 4,
+ "left": 2
+ }
+ },
+
+ "display": {
+ "separator": " ",
+ "color": {
+ "keys": "white"
+ },
+ "key": {
+ "width": 18
+ },
+ "brightColor": false
+ },
+
+ "modules": [
+ "break",
+ "break",
+
+ // ── Identity header ────────────────────────────────────────────
+ // {
+ // "type": "custom",
+ // "format": "\u001b[1m\u001b[38;5;197m <---- KoolDots ---->\u001b[0m"
+ // },
+ // "break",
+
+ "break",
+ // ── System ─────────────────────────────────────────────────────
+ {
+ "type": "custom",
+ "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mSYSTEM\u001b[0m \u001b[38;5;197m──────────────────────────\u001b[0m"
+ },
+ {
+ "type": "os",
+ "key": " {icon} OS"
+ },
+ {
+ "type": "kernel",
+ "key": " {icon} Kernel"
+ },
+ {
+ "type": "command",
+ "key": " {icon} Hostname",
+ "text": "printf '%s@%s' \"$USER\" \"$(hostname)\""
+ },
+ {
+ "type": "uptime",
+ "key": " {icon} Uptime"
+ },
+ {
+ "type": "packages",
+ "key": " {icon} Packages"
+ },
+ {
+ "type": "disk",
+ "key": " {icon} OS Age",
+ "folders": "/",
+ "format": "installed {create-time:10} ({days} days ago)"
+ },
+ "break",
+
+ // ── Hardware ───────────────────────────────────────────────────
+ {
+ "type": "custom",
+ "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mHARDWARE\u001b[0m \u001b[38;5;197m────────────────────────\u001b[0m"
+ },
+ {
+ "type": "host",
+ "key": " {icon} Machine",
+ "format": "{name}"
+ },
+ {
+ "type": "cpu",
+ "key": " {icon} CPU",
+ "showPeCoreCount": true
+ },
+ {
+ "type": "gpu",
+ "key": " {icon} GPU"
+ },
+ {
+ "type": "memory",
+ "key": " {icon} RAM",
+ "percent": {
+ "type": 3,
+ "green": 40,
+ "yellow": 75
+ }
+ },
+ {
+ "type": "disk",
+ "key": " {icon} Disk",
+ "format": "{size-used} / {size-total} ({size-percentage})"
+ },
+ "break",
+
+ // ── Desktop ────────────────────────────────────────────────────
+ {
+ "type": "custom",
+ "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mDESKTOP\u001b[0m \u001b[38;5;197m─────────────────────────\u001b[0m"
+ },
+ {
+ "type": "wm",
+ "key": " {icon} WM"
+ },
+ {
+ "type": "command",
+ "key": "  KoolDots",
+ "text": "echo v${DOTS_VERSION}"
+ },
+ {
+ "type": "display",
+ "key": " {icon} Display",
+ "compactType": "original-with-refresh-rate"
+ },
+ {
+ "type": "shell",
+ "key": " {icon} Shell"
+ },
+ {
+ "type": "terminal",
+ "key": " {icon} Terminal"
+ },
+ {
+ "type": "editor",
+ "key": " {icon} Editor"
+ },
+ "break",
+
+ // ── Footer ─────────────────────────────────────────────────────
+ // {
+ // black → dark pink → hot pink → light pink → white
+ // "type": "custom",
+ // "format": " \u001b[48;5;232m \u001b[48;5;53m \u001b[48;5;89m \u001b[48;5;125m \u001b[48;5;161m \u001b[48;5;197m \u001b[48;5;198m \u001b[48;5;199m \u001b[48;5;205m \u001b[48;5;211m \u001b[48;5;224m \u001b[48;5;231m \u001b[0m"
+ // },
+ "break"
+ ]
+}
diff --git a/config/fastfetch/kooldots-nixos.jsonc b/config/fastfetch/kooldots-nixos.jsonc
new file mode 100644
index 00000000..54cb39e8
--- /dev/null
+++ b/config/fastfetch/kooldots-nixos.jsonc
@@ -0,0 +1,150 @@
+{
+ "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
+
+ "logo": {
+ "type": "kitty-direct",
+ "source": "$HOME/.config/fastfetch/images/nixos.png",
+ // "type": "small",
+ "width": 20,
+ "height": 10,
+ "padding": {
+ "top": 4,
+ "right": 4,
+ "left": 2,
+ },
+ },
+
+ "display": {
+ "separator": " ",
+ "color": {
+ "keys": "white",
+ },
+ "key": {
+ "width": 18,
+ },
+ "brightColor": false,
+ },
+
+ "modules": [
+ "break",
+ "break",
+
+ // ── Identity header ────────────────────────────────────────────
+ // {
+ // "type": "custom",
+ // "format": "\u001b[1m\u001b[38;5;197m <---- KoolDots ---->\u001b[0m"
+ // },
+ // "break",
+
+ "break",
+ // ── System ─────────────────────────────────────────────────────
+ {
+ "type": "custom",
+ "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mSYSTEM\u001b[0m \u001b[38;5;197m──────────────────────────\u001b[0m",
+ },
+ {
+ "type": "os",
+ "key": " {icon} OS",
+ },
+ {
+ "type": "kernel",
+ "key": " {icon} Kernel",
+ },
+ {
+ "type": "command",
+ "key": " {icon} Hostname",
+ "text": "printf '%s@%s' \"$USER\" \"$(hostname)\"",
+ },
+ {
+ "type": "uptime",
+ "key": " {icon} Uptime",
+ },
+ {
+ "type": "packages",
+ "key": " {icon} Packages",
+ },
+ {
+ "type": "disk",
+ "key": " {icon} OS Age",
+ "folders": "/",
+ "format": "installed {create-time:10} ({days} days ago)",
+ },
+ "break",
+
+ // ── Hardware ───────────────────────────────────────────────────
+ {
+ "type": "custom",
+ "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mHARDWARE\u001b[0m \u001b[38;5;197m────────────────────────\u001b[0m",
+ },
+ {
+ "type": "host",
+ "key": " {icon} Machine",
+ "format": "{name}",
+ },
+ {
+ "type": "cpu",
+ "key": " {icon} CPU",
+ "showPeCoreCount": true,
+ },
+ {
+ "type": "gpu",
+ "key": " {icon} GPU",
+ },
+ {
+ "type": "memory",
+ "key": " {icon} RAM",
+ "percent": {
+ "type": 3,
+ "green": 40,
+ "yellow": 75,
+ },
+ },
+ {
+ "type": "disk",
+ "key": " {icon} Disk",
+ "format": "{size-used} / {size-total} ({size-percentage})",
+ },
+ "break",
+
+ // ── Desktop ────────────────────────────────────────────────────
+ {
+ "type": "custom",
+ "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mDESKTOP\u001b[0m \u001b[38;5;197m─────────────────────────\u001b[0m",
+ },
+ {
+ "type": "wm",
+ "key": " {icon} WM",
+ },
+ {
+ "type": "command",
+ "key": "  KoolDots",
+ "text": "echo v${DOTS_VERSION}",
+ },
+ {
+ "type": "display",
+ "key": " {icon} Display",
+ "compactType": "original-with-refresh-rate",
+ },
+ {
+ "type": "shell",
+ "key": " {icon} Shell",
+ },
+ {
+ "type": "terminal",
+ "key": " {icon} Terminal",
+ },
+ {
+ "type": "editor",
+ "key": " {icon} Editor",
+ },
+ "break",
+
+ // ── Footer ─────────────────────────────────────────────────────
+ // {
+ // black → dark pink → hot pink → light pink → white
+ // "type": "custom",
+ // "format": " \u001b[48;5;232m \u001b[48;5;53m \u001b[48;5;89m \u001b[48;5;125m \u001b[48;5;161m \u001b[48;5;197m \u001b[48;5;198m \u001b[48;5;199m \u001b[48;5;205m \u001b[48;5;211m \u001b[48;5;224m \u001b[48;5;231m \u001b[0m"
+ // },
+ "break",
+ ],
+}
diff --git a/config/fastfetch/kooldots-ubuntu.jsonc b/config/fastfetch/kooldots-ubuntu.jsonc
new file mode 100644
index 00000000..1bf94987
--- /dev/null
+++ b/config/fastfetch/kooldots-ubuntu.jsonc
@@ -0,0 +1,150 @@
+{
+ "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
+
+ "logo": {
+ "type": "kitty-direct",
+ "source": "$HOME/.config/fastfetch/images/ubuntu.png",
+ // "type": "small",
+ "width": 20,
+ "height": 10,
+ "padding": {
+ "top": 4,
+ "right": 4,
+ "left": 2
+ }
+ },
+
+ "display": {
+ "separator": " ",
+ "color": {
+ "keys": "white"
+ },
+ "key": {
+ "width": 18
+ },
+ "brightColor": false
+ },
+
+ "modules": [
+ "break",
+ "break",
+
+ // ── Identity header ────────────────────────────────────────────
+ // {
+ // "type": "custom",
+ // "format": "\u001b[1m\u001b[38;5;197m <---- KoolDots ---->\u001b[0m"
+ // },
+ // "break",
+
+ "break",
+ // ── System ─────────────────────────────────────────────────────
+ {
+ "type": "custom",
+ "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mSYSTEM\u001b[0m \u001b[38;5;197m──────────────────────────\u001b[0m"
+ },
+ {
+ "type": "os",
+ "key": " {icon} OS"
+ },
+ {
+ "type": "kernel",
+ "key": " {icon} Kernel"
+ },
+ {
+ "type": "command",
+ "key": " {icon} Hostname",
+ "text": "printf '%s@%s' \"$USER\" \"$(hostname)\""
+ },
+ {
+ "type": "uptime",
+ "key": " {icon} Uptime"
+ },
+ {
+ "type": "packages",
+ "key": " {icon} Packages"
+ },
+ {
+ "type": "disk",
+ "key": " {icon} OS Age",
+ "folders": "/",
+ "format": "installed {create-time:10} ({days} days ago)"
+ },
+ "break",
+
+ // ── Hardware ───────────────────────────────────────────────────
+ {
+ "type": "custom",
+ "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mHARDWARE\u001b[0m \u001b[38;5;197m────────────────────────\u001b[0m"
+ },
+ {
+ "type": "host",
+ "key": " {icon} Machine",
+ "format": "{name}"
+ },
+ {
+ "type": "cpu",
+ "key": " {icon} CPU",
+ "showPeCoreCount": true
+ },
+ {
+ "type": "gpu",
+ "key": " {icon} GPU"
+ },
+ {
+ "type": "memory",
+ "key": " {icon} RAM",
+ "percent": {
+ "type": 3,
+ "green": 40,
+ "yellow": 75
+ }
+ },
+ {
+ "type": "disk",
+ "key": " {icon} Disk",
+ "format": "{size-used} / {size-total} ({size-percentage})"
+ },
+ "break",
+
+ // ── Desktop ────────────────────────────────────────────────────
+ {
+ "type": "custom",
+ "format": "\u001b[38;5;197m── \u001b[1m\u001b[38;5;231mDESKTOP\u001b[0m \u001b[38;5;197m─────────────────────────\u001b[0m"
+ },
+ {
+ "type": "wm",
+ "key": " {icon} WM"
+ },
+ {
+ "type": "command",
+ "key": "  KoolDots",
+ "text": "echo v${DOTS_VERSION}"
+ },
+ {
+ "type": "display",
+ "key": " {icon} Display",
+ "compactType": "original-with-refresh-rate"
+ },
+ {
+ "type": "shell",
+ "key": " {icon} Shell"
+ },
+ {
+ "type": "terminal",
+ "key": " {icon} Terminal"
+ },
+ {
+ "type": "editor",
+ "key": " {icon} Editor"
+ },
+ "break",
+
+ // ── Footer ─────────────────────────────────────────────────────
+ // {
+ // black → dark pink → hot pink → light pink → white
+ // "type": "custom",
+ // "format": " \u001b[48;5;232m \u001b[48;5;53m \u001b[48;5;89m \u001b[48;5;125m \u001b[48;5;161m \u001b[48;5;197m \u001b[48;5;198m \u001b[48;5;199m \u001b[48;5;205m \u001b[48;5;211m \u001b[48;5;224m \u001b[48;5;231m \u001b[0m"
+ // },
+ "break"
+ ]
+}
diff --git a/config/ghostty/ghostty.config b/config/ghostty/config
index 42b073d5..fb539f6b 100644
--- a/config/ghostty/ghostty.config
+++ b/config/ghostty/config
@@ -114,9 +114,17 @@ font-size = 12
#font-family-italic = JetBrainsMono NFM Italic
#font-family = BerkeleyMono Nerd Font
-font-family = Iosevka Nerd Font
+#font-family = Iosevka Nerd Font
# font-family = SFMono Nerd Font
+# Font families
+font-family = "Iosevkeley Mono"
+font-family-bold = "Iosevkeley Mono"
+font-family-italic = "Iosevkeley Mono"
+font-family-bold-italic = "Iosevkeley Mono"
+font-family = "Symbols Nerd Font Mono"
+
+
title = "GhosTTY"
wait-after-command = false
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
diff --git a/config/kitty/kitty-themes/00-Default.conf b/config/kitty/kitty-themes/00-Default.conf
index 640a8d68..1405d594 100644
--- a/config/kitty/kitty-themes/00-Default.conf
+++ b/config/kitty/kitty-themes/00-Default.conf
@@ -1,4 +1,3 @@
# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
# This is just created to remove all the themes
-include ./01-Wallust.conf
diff --git a/config/kitty/kitty.conf b/config/kitty/kitty.conf
index 4757ed7e..a9571d59 100644
--- a/config/kitty/kitty.conf
+++ b/config/kitty/kitty.conf
@@ -1,9 +1,9 @@
# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
# you can choose themes from $HOME/.config/kitty/kitty-themes/
-include ./kitty-themes/00-Default.conf
+include ./kitty-themes/01-Wallust.conf
-font_family FantasqueSansM Nerd Font Mono Bold
+font_family FantasqueSansM Nerd Font Mono
font_size 16.0
bold_font auto
italic_font auto
diff --git a/config/rofi/config-emacs-keybinds.rasi b/config/rofi/config-emacs-keybinds.rasi
new file mode 100644
index 00000000..cb198d43
--- /dev/null
+++ b/config/rofi/config-emacs-keybinds.rasi
@@ -0,0 +1,41 @@
+/* ---- Emacs Keybinds (rofi) ---- */
+@import "~/.config/rofi/config.rasi"
+
+mainbox {
+ children:
+ [ "inputbar", "message", "listview" ];
+}
+
+entry {
+ expand: true;
+ placeholder: " ⌨️ Search Emacs Keybinds";
+}
+
+listview {
+ columns: 2;
+ lines: 10;
+ fixed-height: false;
+ scrollbar: true;
+ spacing: 6px;
+ cycle: true;
+}
+
+window {
+ width: 90%;
+ height: inherit;
+}
+
+element {
+ orientation: horizontal;
+}
+
+element-icon {
+ size: 0%;
+}
+
+element-text {
+ horizontal-align: 0.0;
+ vertical-align: 0.5;
+ margin: 0px;
+ padding: 0px;
+}
diff --git a/config/rofi/config-ghostty-theme.rasi b/config/rofi/config-ghostty-theme.rasi
new file mode 100644
index 00000000..8d317b00
--- /dev/null
+++ b/config/rofi/config-ghostty-theme.rasi
@@ -0,0 +1,74 @@
+/* ================================================== */
+/* KoolDots (2026) */
+/* Project URL: https://github.com/LinuxBeginnings */
+/* License: GNU GPLv3 */
+/* SPDX-License-Identifier: GPL-3.0-or-later */
+/* ================================================== */
+
+/* Ghostty Theme Selector */
+
+@import "~/.config/rofi/config.rasi"
+
+/* ---- Configuration ---- */
+configuration {
+ modi: "drun";
+}
+
+/* ---- Window ---- */
+window {
+ width: inherit;
+ height: inherit;
+ border-radius: 15px;
+}
+
+mainbox {
+ children: [ "inputbar" , "listview" ];
+}
+
+/* ---- Listbox ---- */
+listbox {
+ border-radius: 12px;
+}
+
+/* ---- Inputbar ---- */
+inputbar {
+ padding: 14px;
+ border-radius: 10px;
+}
+
+entry {
+ expand: true;
+ placeholder: " 👻 Choose Ghostty theme: Enter to Apply";
+}
+
+/* ---- Listview ---- */
+listview {
+ columns: 3;
+ lines: 4;
+ spacing: 4px;
+ border-radius: 10px;
+ cycle: true;
+}
+
+/* ---- Element ---- */
+element {
+ orientation: horizontal;
+}
+
+/* ---- Message ---- */
+message {
+ border-radius: 10px;
+}
+
+textbox {
+ padding: 15px;
+}
+
+/* ---- Element ---- */
+element-icon {
+ size: 0%;
+}
+element-text {
+ horizontal-align: 0.0;
+ margin: 5px 30px 5px 30px;
+}
diff --git a/config/rofi/dwm-config-horiz.rasi b/config/rofi/dwm-config-horiz.rasi
new file mode 100644
index 00000000..e93bcc5e
--- /dev/null
+++ b/config/rofi/dwm-config-horiz.rasi
@@ -0,0 +1,19 @@
+configuration {
+ modi: "drun";
+ font: "JetBrainsMono Nerd Font 10";
+ show-icons: false;
+ terminal: "kitty";
+ drun-display-format: "{name}";
+ display-drun: " ";
+ timeout {
+ action: "kb-cancel";
+ delay: 0;
+ }
+ filebrowser {
+ directories-first: true;
+ sorting-method: "name";
+ }
+ }
+
+@theme "~/.config/rofi/dwm-dmenu-horiz.rasi"
+
diff --git a/config/rofi/dwm-config-vert.rasi b/config/rofi/dwm-config-vert.rasi
new file mode 100644
index 00000000..6e3e735e
--- /dev/null
+++ b/config/rofi/dwm-config-vert.rasi
@@ -0,0 +1,25 @@
+configuration {
+ modi: "drun";
+ font: "JetBrainsMono Nerd Font 10";
+ show-icons: false;
+ terminal: "kitty";
+ drun-display-format: "{name}";
+ display-drun: " ";
+ timeout {
+ action: "kb-cancel";
+ delay: 0;
+ }
+ filebrowser {
+ directories-first: true;
+ sorting-method: "name";
+ }
+ }
+
+@theme "~/.config/rofi/dwm-dmenu-vert.rasi"
+
+listview {
+ columns: 1;
+ lines: 12;
+ fixed-height: true;
+ layout: vertical;
+}
diff --git a/config/rofi/dwm-dmenu-horiz.rasi b/config/rofi/dwm-dmenu-horiz.rasi
new file mode 100644
index 00000000..8a433d93
--- /dev/null
+++ b/config/rofi/dwm-dmenu-horiz.rasi
@@ -0,0 +1,50 @@
+* {
+ background-color: #282828;
+ border-color: #458588;
+ text-color: #ebdbb2;
+ height: 24px;
+ font: "JetBrainsMono Nerd Font 10";
+ prompt-font: "JetBrainsMono Nerd Font 10"";
+ prompt-background: #458588;
+ prompt-foreground: #282828;
+ prompt-padding: 2px 6px;
+ selected-normal-background: #458588;
+ selected-normal-foreground: #ebdbb2;
+}
+#window {
+ anchor: north;
+ location: north;
+ width: 100%;
+ padding: 0px;
+ children: [ horibox ];
+}
+#horibox {
+ orientation: horizontal;
+ children: [ prompt, entry, listview ];
+}
+#prompt {
+ padding: @prompt-padding;
+ background-color: @prompt-background;
+ text-color: @prompt-foreground;
+ font: @prompt-font;
+}
+#listview {
+ layout: horizontal;
+ lines: 100;
+}
+#entry {
+ padding: 2px;
+ expand: false;
+ width: 10em;
+}
+#element {
+ padding: 2px 8px;
+}
+#element selected {
+ background-color: @selected-normal-background;
+ text-color: @selected-normal-foreground;
+}
+element-text {
+ background-color: inherit;
+ text-color: inherit;
+}
diff --git a/config/rofi/dwm-dmenu-vert.rasi b/config/rofi/dwm-dmenu-vert.rasi
new file mode 100644
index 00000000..a88bdaf5
--- /dev/null
+++ b/config/rofi/dwm-dmenu-vert.rasi
@@ -0,0 +1,54 @@
+* {
+ background-color: #282828;
+ border-color: #458588;
+ text-color: #ebdbb2;
+ font: "JetBrainsMono Nerd Font 10";
+ prompt-font: "JetBrainsMono Nerd Font 10";
+ prompt-background: #458588;
+ prompt-foreground: #282828;
+ prompt-padding: 2px 6px;
+ selected-normal-background: #458588;
+ selected-normal-foreground: #ebdbb2;
+}
+#window {
+ anchor: north;
+ location: north;
+ width: 35%;
+ padding: 0px;
+ children: [ mainbox ];
+}
+#mainbox {
+ orientation: vertical;
+ children: [ inputbar, listview ];
+}
+#inputbar {
+ children: [ prompt, entry ];
+}
+#prompt {
+ padding: @prompt-padding;
+ background-color: @prompt-background;
+ text-color: @prompt-foreground;
+ font: @prompt-font;
+}
+#listview {
+ layout: vertical;
+ columns: 1;
+ lines: 12;
+ fixed-height: false;
+}
+#entry {
+ padding: 2px;
+ expand: false;
+ width: 10em;
+}
+#element {
+ padding: 2px 8px;
+}
+#element selected {
+ background-color: @selected-normal-background;
+ text-color: @selected-normal-foreground;
+}
+element-text {
+ background-color: inherit;
+ text-color: inherit;
+}
diff --git a/config/rofi/themes/KooL_TokyoNight.rasi b/config/rofi/themes/KooL_TokyoNight.rasi
new file mode 100644
index 00000000..330fa716
--- /dev/null
+++ b/config/rofi/themes/KooL_TokyoNight.rasi
@@ -0,0 +1,135 @@
+/*
+ * Tokyonight colorscheme (big icons) for rofi
+ * User: w8ste
+ */
+
+
+// define colors etc.
+* {
+ bg: #24283b;
+ hv: #9274ca;
+ primary: #444b6a; // TokyoNight bright black
+ ug: #0B2447;
+ font: "Monospace 11";
+ background-color: @bg;
+ //dark: @bg;
+ border: 0px;
+ kl: #7aa2f7;
+ black: #000000;
+
+ transparent: rgba(46,52,64,0);
+}
+
+// defines different aspects of the window
+window {
+ width: 700;
+ /*since line wont work with height, i comment it out
+ if you rather control the size via height
+ just comment it out */
+ //height: 500;
+
+ orientation: horizontal;
+ location: center;
+ anchor: center;
+ transparency: "screenshot";
+ border-color: @transparent;
+ border: 0px;
+ border-radius: 6px;
+ spacing: 0;
+ children: [ mainbox ];
+}
+
+mainbox {
+ spacing: 0;
+ children: [ inputbar, message, listview ];
+}
+
+inputbar {
+ color: @kl;
+ padding: 11px;
+ border: 3px 3px 2px 3px;
+ border-color: @primary;
+ border-radius: 6px 6px 0px 0px;
+}
+
+message {
+ padding: 0;
+ border-color: @primary;
+ border: 0px 1px 1px 1px;
+}
+
+entry, prompt, case-indicator {
+ font: inherit;
+ text-color: inherit;
+}
+
+entry {
+ cursor: pointer;
+}
+
+prompt {
+ margin: 0px 5px 0px 0px;
+}
+
+listview {
+ layout: vertical;
+ //spacing: 5px;
+ padding: 8px;
+ lines: 7;
+ columns: 2;
+ border: 0px 3px 3px 3px;
+ border-radius: 0px 0px 6px 6px;
+ border-color: @primary;
+ dynamic: false;
+}
+
+element {
+ padding: 2px;
+ vertical-align: 1;
+ text-color: @kl;
+ font: inherit;
+}
+
+element-text {
+ background-color: inherit;
+ text-color: inherit;
+ vertical-align: 0.5;
+}
+
+element selected.normal {
+ text-color: @black;
+ background-color: @hv;
+}
+element normal.active {
+ background-color: @hv;
+ text-color: @black;
+}
+
+element-icon {
+ background-color: inherit;
+ text-color: inherit;
+ size: 2.5em;
+}
+
+element normal.urgent {
+ background-color: @primary;
+}
+element selected.active {
+ background-color: @hv;
+ text-color: @bg;
+}
+
+button {
+ padding: 6px;
+ color: @primary;
+ horizontal-align: 0.5;
+
+ border: 2px 0px 2px 2px;
+ border-radius: 4px 0px 0px 4px;
+ border-color: @primary;
+}
+
+button selected {
+ border: 2px 0px 2px 2px;
+ border-color: @primary;
+}
diff --git a/config/rofi/themes/KooL_dwm.rasi b/config/rofi/themes/KooL_dwm.rasi
new file mode 100644
index 00000000..6c6d2b7e
--- /dev/null
+++ b/config/rofi/themes/KooL_dwm.rasi
@@ -0,0 +1,86 @@
+configuration {
+ modi: "drun";
+ font: "JetBrainsMono Nerd Font 10";
+ show-icons: true;
+ terminal: "alacritty";
+ icon-theme: "Papirus-Dark";
+ drun-display-format: "{name}";
+ display-drun: "";
+ timeout {
+ action: "kb-cancel";
+ delay: 0;
+ }
+ filebrowser {
+ directories-first: true;
+ sorting-method: "name";
+ }
+}
+
+@theme "/dev/null"
+
+* {
+ bg: #232933;
+ fg: #d8dee9;
+ selected: #2d3543;
+ accent: #4d6a8e;
+ background-color: @bg;
+
+ color: @fg;
+ border: 0;
+ border-color: @bg;
+ margin: 0;
+ padding: 0;
+ spacing: 0;
+ highlight: none;
+}
+
+window {
+ width: 700px;
+}
+
+element {
+ padding: 6 5 7 5;
+ text-color: @fg;
+}
+
+element-text {
+ vertical-align: 0.5;
+ padding: 5px;
+}
+
+element selected {
+ background-color: @selected;
+}
+
+element-text selected {
+ background-color: @selected;
+}
+
+element-icon selected {
+ background-color: @selected;
+}
+
+element-icon {
+ size: 30;
+}
+
+inputbar {
+ children: [prompt, entry];
+}
+
+prompt {
+ text-color: @bg;
+ background-color: @accent;
+ padding: 12 12 12 12;
+}
+
+entry {
+ text-color: @bg;
+ padding: 12 5 12 0;
+}
+
+listview {
+ background-color: @bg;
+ columns: 3;
+ lines: 6;
+}
diff --git a/config/systemd/user/hyprpolkitagent.service.d/override.conf b/config/systemd/user/hyprpolkitagent.service.d/override.conf
new file mode 100644
index 00000000..04840d90
--- /dev/null
+++ b/config/systemd/user/hyprpolkitagent.service.d/override.conf
@@ -0,0 +1,7 @@
+[Unit]
+After=
+After=dbus.service
+PartOf=
+
+[Install]
+WantedBy=default.target
diff --git a/config/waybar/ModulesCustom b/config/waybar/ModulesCustom
index 8887fa1c..3abb96d4 100644
--- a/config/waybar/ModulesCustom
+++ b/config/waybar/ModulesCustom
@@ -78,6 +78,17 @@
"tooltip-format": "Left Click: Quick Tips\nRight Click: Keybinds",
},
+// External monitor brightness (ddcutil)
+"custom/brightness_external": {
+ "format": "{}",
+ "return-type": "json",
+ "interval": 2,
+ "exec": "$HOME/.config/hypr/scripts/ExternalBrightness.sh --get",
+ "on-scroll-up": "$HOME/.config/hypr/scripts/ExternalBrightness.sh --inc",
+ "on-scroll-down": "$HOME/.config/hypr/scripts/ExternalBrightness.sh --dec",
+ "tooltip": true
+},
+
"custom/dot_update": {
"format": " 󰁈 ",
"on-click": "$HOME/.config/hypr/scripts/KooLsDotsUpdate.sh",
diff --git a/config/waybar/ModulesWorkspaces b/config/waybar/ModulesWorkspaces
index 683fcfb5..c9497b74 100644
--- a/config/waybar/ModulesWorkspaces
+++ b/config/waybar/ModulesWorkspaces
@@ -180,7 +180,7 @@
},
"format": "{icon} {windows}",
"format-window-separator": " ",
- "window-rewrite-default": " ",
+ "window-rewrite-default": " <span foreground='#ff0000'>✘</span> ",
"window-rewrite": {
"title<.*amazon.*>": " ",
"title<.*reddit.*>": " ",
@@ -198,10 +198,11 @@
"class<kitty-dropterm>": " ",
"class<com.mitchellh.ghostty>": " ",
"class<org.wezfurlong.wezterm>": " ",
+ "class<play.mii.Boxxy>": " ",
"class<Warp|warp|dev.warp.Warp|warp-terminal>": "󰰭 ",
- "class<[Tt]hunderbird|[Tt]hunderbird-esr>": " ",
- "class<eu.betterbird.Betterbird>": " ",
+ "class<[Tt]hunderbird|[Tt]hunderbird-esr>": "󰊫 ",
+ "class<org.mozilla.Thunderbird|eu.betterbird.Betterbird>": "󰊫 ",
"title<.*gmail.*>": "󰊫 ",
"class<[Tt]elegram-desktop|org.telegram.desktop|io.github.tdesktop_x64.TDesktop>": " ",
@@ -217,6 +218,7 @@
"title<.*ChatGPT.*>": "󰚩 ",
"title<.*deepseek.*>": "󰚩 ",
"title<.*qwen.*>": "󰚩 ",
+ "title<.*Gemini.*>": "󰚩 ",
"class<subl>": "󰅳 ",
"class<slack>": " ",
@@ -238,11 +240,16 @@
"class<virtualbox manager>": "💽 ",
"title<virtualbox>": "💽 ",
"class<remmina|org.remmina.Remmina>": "🖥️ ",
+ "class<mainline-gtk>": " ",
"class<VSCode|code|code-url-handler|code-oss|codium|codium-url-handler|VSCodium>": "󰨞 ",
+ "class<[Aa]ntigravity>": "󰨞 ",
+ "title<.*[Aa]ntigravity.*>": "󰨞 ",
"class<dev.zed.Zed>": "󰵁",
"class<codeblocks>": "󰅩 ",
"title<.*github.*>": " ",
+ "class<com-jetpackduba-gitnuro-MainKt>": " ",
+ "title<.*Gitnuro.*>": " ",
"class<mousepad>": " ",
"class<libreoffice-writer>": " ",
"class<libreoffice-startcenter>": "󰏆 ",
@@ -253,6 +260,7 @@
"title<.*figma.*>": " ",
"title<.*jira.*>": " ",
"class<jetbrains-idea>": " ",
+ "class<emacs|Emacs>": " ",
"class<obs|com.obsproject.Studio>": " ",
@@ -261,7 +269,7 @@
"class<nwg-displays>": " ",
"class<[Pp]avucontrol|org.pulseaudio.pavucontrol>": "󱡫 ",
"class<steam>": " ",
- "class<thunar|nemo>": "󰝰 ",
+ "class<thunar|nemo|org.gnome.Nautilus>": "󰝰 ",
"class<Gparted>":"",
"class<gimp>": " ",
"class<emulator>": "📱 ",
@@ -269,6 +277,7 @@
"class<org.pipewire.Helvum>": "󰓃",
"class<localsend>":"",
"class<PrusaSlicer|UltiMaker-Cura|OrcaSlicer>": "󰹛",
+ "class<nvidia-settings>": "󰢮 ",
"class<io.github.kolunmi.Bazaar>": " ",
"title<^Bazaar$>": " ",
@@ -294,4 +303,4 @@
"title<^qs-wlogout$>": " ",
}
},
-} \ No newline at end of file
+}
diff --git a/config/waybar/configs/TOP-ddubs-simple-bar b/config/waybar/configs/TOP-ddubs-simple-bar
index 1b459c19..be5f136e 100644
--- a/config/waybar/configs/TOP-ddubs-simple-bar
+++ b/config/waybar/configs/TOP-ddubs-simple-bar
@@ -47,7 +47,10 @@
"tray",
"custom/separator#blank",
"custom/weather2",
- "group/laptop",
+ "cpu",
+ "memory",
+ "temperature",
+ "battery",
"group/status",
"custom/separator#blank",
],
diff --git a/config/waybar/style/Dark-Latte-Wallust-combined-v2.css b/config/waybar/style/Dark-Latte-Wallust-combined-v2.css
index e707c26b..12a573e2 100644
--- a/config/waybar/style/Dark-Latte-Wallust-combined-v2.css
+++ b/config/waybar/style/Dark-Latte-Wallust-combined-v2.css
@@ -53,12 +53,12 @@ tooltip {
border-bottom: 2px solid @border-color;
font-weight: bold;
font-style: normal;
- opacity: 0.8;
+ opacity: 1;
}
#taskbar button,
#workspaces button {
- color: @foreground;
+ color: @color15;
box-shadow: none;
text-shadow: none;
border-radius: 30px;
@@ -169,7 +169,7 @@ tooltip {
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
#custom-weather.sunnyDay {
- color: @foreground;
+ color: @color15;
padding-right: 6px;
padding-left: 6px;;
}
@@ -262,7 +262,7 @@ tooltip {
}
#clock {
- color: @foreground;
+ color: @color15;
border-radius: 15px;
}
diff --git a/config/waybar/style/Dark-Latte-Wallust-combined.css b/config/waybar/style/Dark-Latte-Wallust-combined.css
index bbe23b8b..9ffad565 100644
--- a/config/waybar/style/Dark-Latte-Wallust-combined.css
+++ b/config/waybar/style/Dark-Latte-Wallust-combined.css
@@ -67,13 +67,13 @@ tooltip {
border:2px solid @border-color;
font-weight: bold;
font-style: normal;
- opacity:0.8;
+ opacity: 1;
color:#FFFFFF;
}
#taskbar button,
#workspaces button {
- color: #6E6A86;
+ color: @color15;
box-shadow: none;
text-shadow: none;
border-radius: 30px;
diff --git a/config/waybar/style/Wallust-Bordered-Chroma-Fusion-Edge.css b/config/waybar/style/Wallust-Bordered-Chroma-Fusion-Edge.css
index e593b9fd..a7eb725c 100644
--- a/config/waybar/style/Wallust-Bordered-Chroma-Fusion-Edge.css
+++ b/config/waybar/style/Wallust-Bordered-Chroma-Fusion-Edge.css
@@ -119,7 +119,7 @@ tooltip {
border-radius: 25px;
padding: 0px 10px 0px 10px;
margin: 5px;
- opacity:0.8;
+ opacity: 1;
border:2px solid @border-color;
}
@@ -212,7 +212,7 @@ tooltip {
#workspaces button {
border-radius: 15px;
border:0px;
- color: @color13;
+ color: @color15;
padding-left: 2px;
padding-right: 2px;
animation: gradient_f 20s ease-in infinite;
diff --git a/config/waybar/style/Wallust-Bordered-Chroma-Simple.css b/config/waybar/style/Wallust-Bordered-Chroma-Simple.css
index 3e277f6c..c0b97f06 100644
--- a/config/waybar/style/Wallust-Bordered-Chroma-Simple.css
+++ b/config/waybar/style/Wallust-Bordered-Chroma-Simple.css
@@ -12,6 +12,14 @@
min-height: 0;
}
+/* Make group buttons themselves use readable text */
+#group-audio,
+#group-mobo_drawer {
+ background: @background;
+ color: @color15;
+ border: 2px solid @color13;
+}
+
window#waybar {
background-color: transparent;
color: @foreground;
@@ -27,12 +35,12 @@ window#waybar.empty #window {
}
tooltip {
- background-color: @color12;
+ background-color: @background;
color: @foreground;
border-radius: 10px;
border-width: 1.5px;
border-style: solid;
- border-color: @color9;
+ border-color: @color13;
transition: 0.3s;
opacity: 0.9;
}
@@ -102,6 +110,8 @@ tooltip {
#tray,
#window,
#wireplumber,
+#group-mobo_drawer,
+#group-audio,
#custom-backlight,
#custom-nightlight,
#custom-browser,
@@ -149,6 +159,7 @@ tooltip {
border: 2px solid @color13;
}
+
#cpu {
border: 2px solid @color5;
color: @foreground;
@@ -177,14 +188,14 @@ tooltip {
}
#custom-power {
- color: red;
+ color: @color13;
padding-left: 10px;
padding-right: 2px;
- border: 2px solid red;
+ border: 2px solid @color13;
}
#backlight {
- color: #f9e2af;
+ color: @color14;
padding-right: 5px;
}
@@ -213,29 +224,35 @@ tooltip {
}
#clock {
- color: #fab387;
+ color: @color13;
+}
+
+#clock:hover {
+ color: @color13;
+ background: @background;
+ border: 2px solid @color13;
}
#bluetooth {
- color: #b4befe;
+ color: @color12;
margin-right: 10px
}
#pulseaudio.microphone,
#pulseaudio {
background-color: @color12;
- color: #89b4fa;
+ color: @color15;
border: 2px solid @color13;
}
#pulseaudio.muted {
- color: #f38ba8;
+ color: @color13;
padding-right: 20px;
}
#battery {
- color: #a6e3a1;
+ color: @color10;
margin-right: 5px;
padding-right: 15px;
border: 2px solid @color14;
@@ -249,22 +266,22 @@ tooltip {
}
#battery.good {
- color: #ffd57a;
+ color: @color14;
border: 2px solid @color15;
}
#battery.warning {
- color: #fab387;
+ color: @color13;
border-left: 0px;
border: 2px solid @color12;
}
#battery.charging {
- color: #a6e3a1;
+ color: @color10;
}
#battery.critical {
- color: #f38ba8;
+ color: @color13;
border-left: 0px;
border: 2px solid @color8;
}
@@ -287,7 +304,7 @@ tooltip {
}
#custom-weather {
- color: #8eacf3;
+ color: @color12;
border-right: 0px;
margin-left: 0px;
margin-right: 5px;
@@ -315,3 +332,29 @@ tooltip {
min-height: 10px;
border-radius: 5px;
}
+
+/* Ensure group drawer modules match base style (avoid bright per-module colors) */
+#group-audio #pulseaudio,
+#group-audio #pulseaudio.microphone,
+#group-mobo_drawer #temperature,
+#group-mobo_drawer #cpu,
+#group-mobo_drawer #power-profiles-daemon,
+#group-mobo_drawer #memory,
+#group-mobo_drawer #disk {
+ background-color: @background;
+ color: @color15;
+ border: 2px solid @color13;
+}
+
+/* Global overrides for this style (match other widgets: dark bg + light text) */
+#pulseaudio,
+#pulseaudio.microphone,
+#cpu,
+#memory,
+#disk,
+#temperature,
+#power-profiles-daemon {
+ background-color: @background;
+ color: @color15;
+ border: 2px solid @color13;
+}
diff --git a/config/waybar/style/Wallust-Box-type.css b/config/waybar/style/Wallust-Box-type.css
index 6bd2a5de..7f1d3ad2 100644
--- a/config/waybar/style/Wallust-Box-type.css
+++ b/config/waybar/style/Wallust-Box-type.css
@@ -51,8 +51,8 @@ window#waybar.empty #window {
#taskbar button.active,
#workspaces button.active {
- color: @color15;
- background-color: @background;
+ color: @background;
+ background-color: @color13;
padding-left: 4px;
padding-right: 8px;
animation: gradient_f 20s ease-in infinite;
@@ -61,8 +61,8 @@ window#waybar.empty #window {
#taskbar button.focused,
#workspaces button.focused {
- color: @color15;
- background-color: @background;
+ color: @background;
+ background-color: @color13;
}
#workspaces button.urgent {
@@ -72,7 +72,8 @@ window#waybar.empty #window {
#taskbar button:hover,
#workspaces button:hover {
- color: @color15;
+ color: @background;
+ background-color: @color13;
padding-left: 2px;
padding-right: 8px;
animation: gradient_f 20s ease-in infinite;
diff --git a/config/waybar/style/Wallust-Chroma-Edge.css b/config/waybar/style/Wallust-Chroma-Edge.css
index 82125870..4a17d473 100644
--- a/config/waybar/style/Wallust-Chroma-Edge.css
+++ b/config/waybar/style/Wallust-Chroma-Edge.css
@@ -50,7 +50,7 @@ tooltip label{
#taskbar button,
#workspaces button {
background-color: transparent;
- color: grey;
+ color: @color15;
box-shadow: none;
text-shadow: none;
padding: 0px;
@@ -63,7 +63,8 @@ tooltip label{
#workspaces button.active {
background-color: transparent;
- color: #D3D3D3;
+\tcolor: @color15;
+
padding-left: 8px;
padding-right: 8px;
animation: gradient_f 20s ease-in infinite;
@@ -143,7 +144,7 @@ tooltip label{
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
#custom-weather.sunnyDay {
- color: #e5e5e5;
+\tcolor: @color15;
/* color: #bf616a; */
border-radius: 12px;
background-color: rgba(50, 50, 50, 0.1);
diff --git a/config/waybar/style/Wallust-Chroma-Fusion.css b/config/waybar/style/Wallust-Chroma-Fusion.css
index 4399f125..7113c6f4 100644
--- a/config/waybar/style/Wallust-Chroma-Fusion.css
+++ b/config/waybar/style/Wallust-Chroma-Fusion.css
@@ -119,7 +119,7 @@ tooltip {
background-color: @background-module;
border-radius: 25px;
margin: 5px 5px 5px 5px;
- opacity:0.8;
+ opacity: 1;
padding-top: 4px;
padding-bottom: 4px;
padding-right: 6px;
@@ -214,7 +214,7 @@ tooltip {
margin: 1px 1px;
border-radius: 15px;
border:0px;
- color: @color13;
+ color: @color15;
padding-left: 2px;
padding-right: 2px;
animation: gradient_f 20s ease-in infinite;
diff --git a/config/waybar/style/Wallust-ML4W-modern-mixed.css b/config/waybar/style/Wallust-ML4W-modern-mixed.css
index d627b576..f8ef2630 100644
--- a/config/waybar/style/Wallust-ML4W-modern-mixed.css
+++ b/config/waybar/style/Wallust-ML4W-modern-mixed.css
@@ -8,10 +8,10 @@
@define-color workspacesbackground1 @color12;
@define-color workspacesbackground2 @background;
@define-color bordercolor @color11;
-@define-color textcolor1 @foreground;
-@define-color textcolor2 @background;
-@define-color textcolor3 @foreground;
-@define-color iconcolor @foreground;
+@define-color textcolor1 @color15;
+@define-color textcolor2 @color7;
+@define-color textcolor3 @color15;
+@define-color iconcolor @color15;
* {
font-family: "JetBrainsMono Nerd Font";
@@ -42,7 +42,7 @@ border-bottom: 0px solid @foreground;
border: 0px;
font-weight: bold;
font-style: normal;
- opacity: 0.8;
+ opacity: 1;
color: @textcolor1;
}
@@ -54,7 +54,7 @@ border-bottom: 0px solid @foreground;
color: @textcolor1;
background-color: @workspacesbackground2;
transition: all 0.1s linear;
- opacity: 0.4;
+ opacity: 1;
}
#taskbar button.active,
@@ -93,7 +93,7 @@ tooltip label {
border-radius: 5px 5px 5px 5px;
color:white;
font-weight:normal;
- opacity:0.8;
+ opacity: 1;
}
window#waybar.empty #window {
diff --git a/config/waybar/style/Wallust-ML4W-modern.css b/config/waybar/style/Wallust-ML4W-modern.css
index 7c0e9c61..0ab8165c 100644
--- a/config/waybar/style/Wallust-ML4W-modern.css
+++ b/config/waybar/style/Wallust-ML4W-modern.css
@@ -8,10 +8,10 @@
@define-color workspacesbackground1 @color0;
@define-color workspacesbackground2 @color12;
@define-color bordercolor @color13;
-@define-color textcolor1 @foreground;
-@define-color textcolor2 @foreground;
-@define-color textcolor3 @foreground;
-@define-color iconcolor @foreground;
+@define-color textcolor1 @color15;
+@define-color textcolor2 @color7;
+@define-color textcolor3 @color15;
+@define-color iconcolor @color15;
* {
font-family: "JetBrainsMono Nerd Font";
diff --git a/copy.sh b/copy.sh
index b430595a..e301f605 100755
--- a/copy.sh
+++ b/copy.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
+# ==================================================
# Purpose:
# Orchestrates copying/upgrading LinuxBeginnings's Hyprland dotfiles into ~/.config.
# Handles interactive prompts, backups/restores, per-app tweaks, and express mode.
@@ -593,6 +598,8 @@ printf "\\n%.0s" {1..1}
restore_user_scripts "$LOG" "$EXPRESS_MODE"
printf "\n%.0s" {1..1}
+restore_terminal_configs "$LOG" "$EXPRESS_MODE"
+printf "\\n%.0s" {1..1}
restore_hypr_files "$LOG" "$EXPRESS_MODE"
printf "\n%.0s" {1..1}
@@ -633,6 +640,27 @@ chmod +x "$HOME/.config/hypr/UserScripts/"* 2>&1 | tee -a "$LOG"
# Set executable for initial-boot.sh
chmod +x "$HOME/.config/hypr/initial-boot.sh" 2>&1 | tee -a "$LOG"
+# Copy systemd user overrides (e.g., hyprpolkitagent)
+SYSTEMD_SRC="$DOTFILES_DIR/config/systemd"
+SYSTEMD_DEST="$HOME/.config/systemd"
+if [ -d "$SYSTEMD_SRC" ]; then
+ mkdir -p "$SYSTEMD_DEST"
+ cp -r "$SYSTEMD_SRC/." "$SYSTEMD_DEST/" 2>&1 | tee -a "$LOG"
+fi
+
+# Reload user systemd and ensure hyprpolkitagent is enabled/running
+if command -v systemctl >/dev/null 2>&1; then
+ if systemctl --user list-unit-files 2>/dev/null | grep -q '^hyprpolkitagent\.service'; then
+ if ! pgrep -u "$UID" -f 'xfce-polkit|polkit-gnome-authentication-agent-1|polkit-kde-authentication-agent-1|hyprpolkitagent' >/dev/null 2>&1; then
+ systemctl --user daemon-reload 2>&1 | tee -a "$LOG" || true
+ systemctl --user enable hyprpolkitagent 2>&1 | tee -a "$LOG" || true
+ systemctl --user start hyprpolkitagent 2>&1 | tee -a "$LOG" || true
+ else
+ echo "${NOTE} Polkit agent already running. Skipping hyprpolkitagent enable/start." | tee -a "$LOG"
+ fi
+ fi
+fi
+
chassis_type=$(detect_waybar_config)
if [ "$chassis_type" = "desktop" ]; then
config_file="$waybar_config"
diff --git a/docs/Hyprland-LUA-analysis-Phase1.md b/docs/Hyprland-LUA-analysis-Phase1.md
new file mode 100644
index 00000000..e08901db
--- /dev/null
+++ b/docs/Hyprland-LUA-analysis-Phase1.md
@@ -0,0 +1,159 @@
+# 🧭 Hyprland → Lua Migration Analysis (Phase 1)
+<span style="color:#7dd3fc">Focus: identify scripts/configs that **write Hyprland config files** and therefore must change for Lua.</span>
+
+---
+
+## 📌 Table of Contents
+- [🎯 Scope & Assumptions](#-scope--assumptions)
+- [🧩 Hyprland Config Entry Points](#-hyprland-config-entry-points)
+- [✍️ Direct Hyprland Config Writers (must change)](#️-direct-hyprland-config-writers-must-change)
+- [🧪 Indirect / Generated Config Writers](#-indirect--generated-config-writers)
+- [🧰 Install/Upgrade Writers (copy/restore paths)](#-installupgrade-writers-copyrestore-paths)
+- [📟 Runtime‑Only Files (no file writes)](#-runtime-only-files-no-file-writes)
+- [📝 Notes / Follow‑ups](#-notes--follow-ups)
+
+---
+
+## 🎯 Scope & Assumptions
+<span style="color:#fbbf24">Goal:</span> Identify **files that directly modify Hyprland config on disk** (or generate files sourced by Hyprland), because those will need updating for Lua.
+
+<span style="color:#a3e635">Out of scope:</span> The new Lua syntax itself.
+
+---
+
+## 🧩 Hyprland Config Entry Points
+**Primary file:** `Hyprland-Dots/config/hypr/hyprland.conf`
+
+This file **sources**:
+- `Hyprland-Dots/config/hypr/configs/*.conf`
+- `Hyprland-Dots/config/hypr/UserConfigs/*.conf`
+- `Hyprland-Dots/config/hypr/monitors.conf`
+- `Hyprland-Dots/config/hypr/workspaces.conf`
+
+Also:
+- `Hyprland-Dots/config/hypr/UserConfigs/UserDecorations.conf` **sources**
+ `~/.config/hypr/wallust/wallust-hyprland.conf`
+
+➡️ Any script that writes these files must be updated for Lua.
+
+---
+
+## ✍️ Direct Hyprland Config Writers (must change)
+These **write/overwrite Hyprland config files**:
+
+### 🖥️ Monitor Profiles
+- `Hyprland-Dots/config/hypr/scripts/MonitorProfiles.sh`
+ **Writes:** `~/.config/hypr/monitors.conf`
+ **How:** `cp` chosen profile from `Monitor_Profiles/*.conf`
+
+### 🎞️ Animations
+- `Hyprland-Dots/config/hypr/scripts/Animations.sh`
+ **Writes:** `~/.config/hypr/UserConfigs/UserAnimations.conf`
+ **How:** `cp` selected animation file into UserConfigs
+
+### 🧱 Window Rules Version Switch
+- `Hyprland-Dots/config/hypr/scripts/update_WindowRules.sh`
+ **Writes:** `~/.config/hypr/configs/WindowRules.conf`
+ **How:** backup + `cp` from `WindowRules-config-v3.conf`, then `hyprctl reload`
+
+### 🎬 Startup Apps (wallpaper switching)
+- `Hyprland-Dots/config/hypr/UserScripts/WallpaperSelect.sh`
+ **Writes:** `~/.config/hypr/UserConfigs/Startup_Apps.conf`
+ **How:** `sed -i` toggles `exec-once` lines and updates `$livewallpaper`
+
+### 🗂️ UserConfig swapper
+- `Hyprland-Dots/config/hypr/scripts/UserConfigsSwitcher.sh`
+ **Writes:** directory move/rename
+ **How:** `mv` between `UserConfigs` and `UserConfigsBak`
+
+---
+
+## 🧪 Indirect / Generated Config Writers
+These generate **files that Hyprland sources**:
+
+### 🎨 Wallust → Hyprland colors
+- `Hyprland-Dots/config/hypr/scripts/ThemeChanger.sh`
+- `Hyprland-Dots/config/hypr/scripts/WallustSwww.sh`
+
+**Writes/overwrites:**
+`~/.config/hypr/wallust/wallust-hyprland.conf`
+
+**Used by:**
+`Hyprland-Dots/config/hypr/UserConfigs/UserDecorations.conf` (sources it)
+
+➡️ The Lua migration must either keep a compatible generated file or switch the generator target.
+
+---
+
+## 🧰 Install/Upgrade Writers (copy/restore paths)
+These **modify Hyprland configs during install/upgrade**:
+
+### 🔧 `copy.sh`
+- Edits `Hyprland-Dots/config/hypr/configs/ENVariables.conf` (enables hyprcursor)
+- Modifies `~/.config/hypr/configs/Startup_Apps.conf` (quickshell migration)
+- Renames/switches `hyprlock.conf` variants (not Hyprland config, but in same dir)
+- Calls restore helpers below
+
+### 🧱 `scripts/lib_copy.sh`
+Restores/copies:
+- `~/.config/hypr/monitors.conf`
+- `~/.config/hypr/workspaces.conf`
+- `~/.config/hypr/UserConfigs/Startup_Apps.conf`
+- `~/.config/hypr/UserConfigs/WindowRules.conf`
+- `~/.config/hypr/UserConfigs/UserKeybinds.conf`
+- Additional UserConfigs overlay logic
+
+---
+
+## 📟 Runtime‑Only Files (no file writes)
+These **appear to be runtime-only** (no direct file writes detected; they act via `hyprctl`, process control, notifications, etc.):
+
+### ✅ Scripts
+- `Hyprland-Dots/config/hypr/scripts/AirplaneMode.sh`
+- `Hyprland-Dots/config/hypr/scripts/Battery.sh`
+- `Hyprland-Dots/config/hypr/scripts/BrightnessKbd.sh`
+- `Hyprland-Dots/config/hypr/scripts/Brightness.sh`
+- `Hyprland-Dots/config/hypr/scripts/ChangeBlur.sh`
+- `Hyprland-Dots/config/hypr/scripts/ChangeLayout.sh`
+- `Hyprland-Dots/config/hypr/scripts/ClipManager.sh`
+- `Hyprland-Dots/config/hypr/scripts/ExternalBrightness.sh`
+- `Hyprland-Dots/config/hypr/scripts/fastfetch-wrapper.sh`
+- `Hyprland-Dots/config/hypr/scripts/Float-all-Windows.sh`
+- `Hyprland-Dots/config/hypr/scripts/GameMode.sh`
+- `Hyprland-Dots/config/hypr/scripts/Hypridle.sh`
+- `Hyprland-Dots/config/hypr/scripts/KeybindsLayoutInit.sh`
+- `Hyprland-Dots/config/hypr/scripts/keybinds_parser.py`
+- `Hyprland-Dots/config/hypr/scripts/KeyboardLayout.sh`
+- `Hyprland-Dots/config/hypr/scripts/KeyHints.sh`
+- `Hyprland-Dots/config/hypr/scripts/KillActiveProcess.sh`
+- `Hyprland-Dots/config/hypr/scripts/LockScreen.sh`
+- `Hyprland-Dots/config/hypr/scripts/MediaCtrl.sh`
+- `Hyprland-Dots/config/hypr/scripts/OverviewToggle.sh`
+- `Hyprland-Dots/config/hypr/scripts/Polkit-NixOS.sh`
+- `Hyprland-Dots/config/hypr/scripts/Polkit.sh`
+- `Hyprland-Dots/config/hypr/scripts/PortalHyprland.sh`
+- `Hyprland-Dots/config/hypr/scripts/PortalHyprlandUbuntu.sh`
+- `Hyprland-Dots/config/hypr/scripts/RefreshNoWaybar.sh`
+- `Hyprland-Dots/config/hypr/scripts/rofi-emacs-keybinds`
+- `Hyprland-Dots/config/hypr/scripts/RofiSearch.sh`
+- `Hyprland-Dots/config/hypr/scripts/Sounds.sh`
+- `Hyprland-Dots/config/hypr/scripts/Toggle-Active-Window-Audio.sh`
+- `Hyprland-Dots/config/hypr/scripts/UptimeNixOS.sh`
+- `Hyprland-Dots/config/hypr/scripts/Volume.sh`
+- `Hyprland-Dots/config/hypr/scripts/WallpaperDaemon.sh`
+- `Hyprland-Dots/config/hypr/scripts/WaybarScripts.sh`
+- `Hyprland-Dots/config/hypr/scripts/Wlogout.sh`
+
+### ✅ UserScripts
+- `Hyprland-Dots/config/hypr/UserScripts/00-Readme`
+- `Hyprland-Dots/config/hypr/UserScripts/RofiCalc.sh`
+- `Hyprland-Dots/config/hypr/UserScripts/WallpaperRandom.sh`
+- `Hyprland-Dots/config/hypr/UserScripts/WeatherWrap.sh`
+
+---
+
+## 📝 Notes / Follow‑ups
+<span style="color:#f97316">Important:</span>
+Some scripts are **file writers but not Hyprland config writers** (e.g., `install-uv.sh`, `Distro_update.sh`, and the binary `dots-tui-ubuntu-2404`). They don’t touch Hyprland configs but do modify the system.
+
+If you want an **exact “no file writes anywhere” list**, I can do a stricter pass (including temp/status files, downloads, etc.).
diff --git a/docs/copy.sh-tui-analysis-3-14-2026.md b/docs/copy.sh-tui-analysis-3-14-2026.md
new file mode 100644
index 00000000..2b94e693
--- /dev/null
+++ b/docs/copy.sh-tui-analysis-3-14-2026.md
@@ -0,0 +1,105 @@
+# copy.sh vs TUI Installer Parity Report (2026-03-14)
+
+This report compares the Bash-based `copy.sh` flow (including helper scripts) against the Python/Textual TUI installer in `../Hyprland-Dots-TUI-Installer/`.
+
+## ✅ Parity Matches
+
+### Core Modes & Flow
+- Install / Upgrade / Express workflows exist in both.
+ - `copy.sh`, `scripts/copy_menu.sh`
+ - TUI: `src/dots_tui/__main__.py`, `src/dots_tui/screens/menu.py`, `src/dots_tui/logic/orchestrator.py`
+
+### Safety / Setup
+- Root check (both abort if root).
+- Repo update flow (stash + pull + summary).
+- Logs written to `Copy-Logs/` with per-run log file.
+
+### Hardware / OS Detection + Tweaks
+- Nvidia / VM / NixOS tweaks.
+ - `scripts/lib_detect.sh`
+ - `src/dots_tui/logic/orchestrator.py`, `src/dots_tui/logic/system.py`
+
+### User Prompts / Config Choices
+- Keyboard layout detect + confirmation.
+- Resolution selection (<1440p vs ≥1440p).
+- 12h/24h clock (waybar + hyprlock edits).
+- Default editor selection (nvim/vim).
+- Optional app enablement: asusctl, blueman, ags, quickshell.
+
+### Copy / Backup / Restore
+- Phase1 copy w/ replace prompts: fastfetch, kitty, rofi, swaync.
+- Waybar merge semantics (backup, merge configs/styles/UserModules).
+- Phase2 copy (btop, cava, hypr, etc.).
+- Restore user configs / scripts / hypr files (with express skip).
+- Duplicate UserConfigs cleanup.
+
+### Wallpapers
+- Base wallpaper copy to `~/Pictures/wallpapers`.
+- Optional 1GB Wallpaper-Bank download (skipped in express).
+
+### Finalization
+- chmod scripts, waybar symlinks, cleanup backups, wallust init.
+
+## ⚠️ Parity Gaps (Missing or Divergent Behavior)
+
+### 1) waybar-weather install + config handling
+`copy.sh` does **two things** the TUI does not:
+- **Installs waybar-weather binary**
+ - `scripts/lib_apps.sh`: `install_waybar_weather()`
+ - `copy.sh`: calls it on non-NixOS, or warns on NixOS.
+- **Copies waybar-weather config + prompts for units**
+ - `copy.sh`: block near `WAYBAR_WEATHER_SRC / DEST` (install/upgrade/express logic + Fahrenheit prompt).
+
+✅ **TUI currently has no references to waybar-weather**.
+
+---
+
+### 2) KeybindsLayoutInit always enabled
+`copy.sh` always ensures `exec-once = $scriptsDir/KeybindsLayoutInit.sh` via `ensure_keybinds_init` (called unconditionally).
+
+TUI only adds it if **one of** (asus / blueman / ags / quickshell) is enabled:
+- `src/dots_tui/logic/orchestrator.py` → `_apply_user_choices`
+
+So if user disables all optional apps, TUI skips it while `copy.sh` still adds it.
+
+---
+
+### 3) Waybar symlink enforcement
+`copy.sh` forces `~/.config/waybar/config` and `style.css` to be symlinks even if they are regular files.
+
+TUI only replaces them **if missing or already a symlink**:
+- `src/dots_tui/logic/orchestrator.py` → `_finalize_post_copy`
+
+So regular files won’t be converted in TUI.
+
+---
+
+### 4) Express mode + SDDM 12h edits
+`copy.sh` explicitly **skips SDDM 12h edits** in express mode to avoid sudo prompts.
+
+TUI still attempts SDDM edits if user chooses 12h:
+- `src/dots_tui/logic/orchestrator.py` → `_finalize_post_copy` (SDDM clock edits run whenever `clock_24h` is false).
+
+---
+
+### 5) Menu behavior / CLI flags
+- `copy.sh` supports `--tty` to force non-whiptail menu.
+- TUI has no equivalent.
+
+---
+
+## ✅ TUI-only Extras (Not in copy.sh)
+- Dry-run / plan mode (`--dry-run`).
+- Download repo (clone flow).
+- Path safety guard (prevents deletes outside `$HOME`).
+- Default wallpaper initialization if `.wallpaper_current` missing.
+
+---
+
+## Summary
+The TUI installer is **mostly aligned** with `copy.sh`, but **not full parity** due to:
+1) Missing `waybar-weather` binary + config + units prompt
+2) KeybindsLayoutInit not always added
+3) Waybar symlink enforcement behavior mismatch
+4) Express-mode SDDM 12h edits mismatch
+5) Minor CLI/menu flag mismatch
diff --git a/i18n/README/README.ua.md b/i18n/README/README.ua.md
index 03c50dd1..6a4d6b8e 100644
--- a/i18n/README/README.ua.md
+++ b/i18n/README/README.ua.md
@@ -51,37 +51,60 @@ https://github.com/user-attachments/assets/49bc12b2-abaf-45de-a21c-67aacd9bb872
---
[![Typing SVG](https://readme-typing-svg.herokuapp.com?font=Fira+Code&weight=700&size=22&pause=1000&color=F7077E&vCenter=true&width=435&height=30&lines=ВСТАНОВЛЕННЯ)](https://git.io/typing-svg)
-### 🚩 🏁 Автоматичні скрипти встановлення Hyprland для дистрибутивів, клонування та запуск 🇵🇭
-> [!УВАГА]
-> Якщо ви використовуєте FISH SHELL, НЕ використовуйте цю функцію. Натомість клонуйте Distro-Hyprland і запустіть install.sh.
-- ПРИМІТКА: для роботи потрібен пакет `curl`
+
+## 🚩 🏁 Автоматичне встановлення Distro-Hyprland (клонування і запуск) 🇵🇭
+
+> ⚠️ **УВАГА**
+> Якщо ти користуєшся FISH SHELL — **не використовуй** цю функцію. Клонуй Distro-Hyprland вручну і запускай `install.sh`.
+
+- Потрібен пакет `curl`.
+
```bash
sh <(curl -L https://raw.githubusercontent.com/LinuxBeginnings/Hyprland-Dots/main/Distro-Hyprland.sh)
+
```
-- тепер ви можете використовувати наведену вище команду для автоматичного клонування скриптів встановлення Distro-Hyprland, зазначених нижче
-- вона клонує скрипти встановлення та запускає `install.sh` 😎
+- Команда вище автоматично клонить скрипти встановлення `Distro-Hyprland`.
+
+- Після цього автоматом запуститься `install.sh` 😎
+
+
+----------
+
+## 👁️‍🗨️ Мої скрипти встановлення Hyprland 👁️‍🗨️
-### 👁️‍🗨️ Мої скрипти встановлення Hyprland 👁️‍🗨️
-- Автоматичні скрипти Hyprland для обраного дистрибутива, які завантажать ці dotfiles, якщо ви оберете встановлення цих конфігурацій
+Автоматизовані скрипти Hyprland для обраного дистрибутиву. За бажанням вони підтягнуть ці dotfiles під час інсталяції.
- [Arch-Linux](https://github.com/LinuxBeginnings/Arch-Hyprland)
+
- [OpenSUSE(Tumbleweed)](https://github.com/LinuxBeginnings/OpenSuse-Hyprland)
-- [Fedora-Linux](https://github.com/LinuxBeginnings/Fedora-Hyprland)
+
+- [Fedora-Linux (43/Rawhide)](https://github.com/LinuxBeginnings/Fedora-Hyprland)
+
- [Debian-Linux (Trixie & SID)](https://github.com/LinuxBeginnings/Debian-Hyprland)
-- [NixOS](https://github.com/LinuxBeginnings/NixOS-Hyprland)
+
+- [NixOS (25.05+)](https://github.com/LinuxBeginnings/NixOS-Hyprland)
+
- [Ubuntu 24.04 LTS](https://github.com/LinuxBeginnings/Ubuntu-Hyprland/tree/24.04)
-- [Ubuntu 24.10](https://github.com/LinuxBeginnings/Ubuntu-Hyprland/tree/24.10)
-- [Ubuntu 25.04 - (АЛЬФА-ЕТАП)](https://github.com/LinuxBeginnings/Ubuntu-Hyprland/tree/25.04)
+- [Ubuntu 24.10 (depreciated)](https://github.com/LinuxBeginnings/Ubuntu-Hyprland/tree/24.10)
+- [Ubuntu 25.04 (depreciated)](https://github.com/LinuxBeginnings/Ubuntu-Hyprland/tree/25.04)
+- [Ubuntu 25.10](https://github.com/LinuxBeginnings/Ubuntu-Hyprland/tree/25.10)
+
----
+----------
+
+## 🪧 Увага
+
+- Цей репозиторій **не містить і не встановлює жодних пакетів**. Тут лише попередньо налаштовані конфіги (dotfiles) для Hyprland.
+
+- Подивись у скриптах встановлення, які пакети потрібні. Мінімум — має бути встановлений Hyprland.
+
+- Цей репо буде автоматично підтягнутий скриптами Distro-Hyprland, якщо ти обереш встановлення з готовими конфігами.
+
-### 🪧 Увага 🪧
-- Цей репозиторій НЕ містить і НЕ встановлює жодних пакетів. Це лише попередньо налаштовані конфігурації Hyprland або dotfiles
-- зверніться до скриптів встановлення, щоб дізнатися, які пакети потрібно встановити... але принаймні пакети Hyprland потрібні 😏😏😏 очевидно!!
-- Цей репозиторій буде завантажено скриптами встановлення Distro-Hyprland, зазначеними вище, якщо ви оберете завантаження попередньо налаштованих dotfiles
+----------
### 👀 Скріншоти 👀
- Усі скріншоти зібрано тут [Скріншоти](https://github.com/LinuxBeginnings/screenshots/tree/main/Hyprland-ScreenShots)
@@ -131,9 +154,16 @@ chmod +x release.sh
chmod +x upgrade.sh
./upgrade.sh
```
+## ❗❗❗ DEBIAN ТА UBUNTU!
+
+- Debian 13
+- Тепер Hyprland 0.51.1 збирається з вихідного коду за допомогою скрипта `install.sh`
+- Тож поточна версія Hyprland-Dots сумісна лише у цих випадках.
+
+- Ubuntu 24.04/25.10
+- Тепер ми використовуємо PPA для отримання більш актуальних версій Hyprland.
+- Тож поточні версії цих Dotfile сумісні, якщо ви оновилися до конфігурації на основі PPA.
-## ❗❗❗ УВАГА ДЛЯ КОРИСТУВАЧІВ DEBIAN ТА UBUNTU!
-- Я отримую величезну кількість повідомлень щодо оновлення dotfiles Hyprland від KooL. Я зробив велику примітку у [`ВІКІ`](https://github.com/LinuxBeginnings/Hyprland-Dots/wiki/Install_&_Update)
#### ⚠️⚠️⚠️ УВАГА - РЕЗЕРВНІ КОПІЇ, СТВОРЕНІ СКРИПТОМ
> [!УВАГА]
@@ -169,10 +199,12 @@ chmod +x upgrade.sh
#### ✍️ Внесок
- Хочете зробити внесок? Клікніть [`ТУТ`](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/CONTRIBUTING.md) для посібника зі внесення внеску
+> Дякую всім, хто додав код або підтримав сервер Discord. Ваші зусилля дуже цінуються.
+
#### 🤷‍♂️ ЩО РОБИТИ!
- [ ] Налаштування dotfiles - 🚧 у постійному прогресі
-- ~~[ ] Можливо, перехід на starship? Хоча у starship обмежені теми порівняно з oh-my-zsh.~~ поки що планів немає
+
#### 🔮 Сервер Discord
- запрошую приєднатися до мого [Discord](https://discord.com/invite/kool-tech-world)
@@ -180,15 +212,14 @@ chmod +x upgrade.sh
#### 💖 Підтримка
- зірка на моїх репозиторіях GitHub була б чудовою 🌟
-- Підпишіться на мій канал YouTube [YouTube](https://www.youtube.com/@Ja.KooLit)
-
-- також ви можете підтримати через каву або btc 😊
+- Підпишіться на мій канал YouTube [YouTube](https://www.youtube.com/@Ja.KooLit)
-або
+## 🫰 Дякую за зірки 🩷
-Або ви можете пожертвувати криптовалюту на мій btc-гаманець :)
+### Document translations
+- Spanish(Іспанська): [Código de Conducta](./i18n/CODE_OF_CONDUCT/CODE_OF_CONDUCT.es.md) · [Guía de mensajes de commit](./i18n/COMMIT_MESSAGE_GUIDELINES/COMMIT_MESSAGE_GUIDELINES.es.md) · [Guía de contribución](./i18n/CONTRIBUTING/CONTRIBUTING.es.md)
-## 🫰 Дякую за зірки 🩷
+- French(Французька): [Code de Conduite](./i18n/CODE_OF_CONDUCT/CODE_OF_CONDUCT.fr.md) · [Directives pour les messages de commit](./i18n/COMMIT_MESSAGE_GUIDELINES/COMMIT_MESSAGE_GUIDELINES.fr.md) · [Guide de contribution](./i18n/CONTRIBUTING/CONTRIBUTING.fr.md)
diff --git a/scripts/copy_menu.sh b/scripts/copy_menu.sh
index 87f9301f..47843205 100755
--- a/scripts/copy_menu.sh
+++ b/scripts/copy_menu.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
+# ==================================================
# show_copy_menu
# Arguments:
diff --git a/scripts/lib_apps.sh b/scripts/lib_apps.sh
index f19fd75a..9472831d 100644
--- a/scripts/lib_apps.sh
+++ b/scripts/lib_apps.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
+# ==================================================
# App enablement and editor selection helpers.
enable_asusctl() {
@@ -67,10 +73,18 @@ install_terminal_configs() {
local base="${DOTFILES_DIR:-.}"
# Ghostty
- local GHOSTTY_SRC="$base/config/ghostty/ghostty.config"
+ local GHOSTTY_SRC="$base/config/ghostty/config"
local GHOSTTY_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/ghostty"
local GHOSTTY_DEST="$GHOSTTY_DIR/config"
if [ -f "$GHOSTTY_SRC" ]; then
+ if [ -d "$GHOSTTY_DIR" ]; then
+ BACKUP_DIR=$(get_backup_dirname)
+ local GHOSTTY_BACKUP="$GHOSTTY_DIR-backup-$BACKUP_DIR"
+ if [ ! -d "$GHOSTTY_BACKUP" ]; then
+ cp -a "$GHOSTTY_DIR" "$GHOSTTY_BACKUP" 2>&1 | tee -a "$log"
+ echo "${NOTE:-[NOTE]} - Backed up Ghostty config to $GHOSTTY_BACKUP." 2>&1 | tee -a "$log"
+ fi
+ fi
mkdir -p "$GHOSTTY_DIR"
install -m 0644 "$GHOSTTY_SRC" "$GHOSTTY_DEST" 2>&1 | tee -a "$log"
if [ -f "$GHOSTTY_DIR/wallust.conf" ]; then
@@ -140,14 +154,32 @@ install_waybar_weather_binary() {
return 0
fi
+ # Sudo handling for /usr/bin and /usr/local/bin
+ local SUDO=""
+ if [[ $EUID -ne 0 ]]; then
+ if command -v sudo >/dev/null 2>&1; then
+ SUDO="sudo"
+ else
+ _err "sudo not available; cannot write to ${INSTALL_PATH} as non-root"
+ return 1
+ fi
+ fi
+
if grep -qi '^ID=arch' /etc/os-release 2>/dev/null; then
- if command -v pacman >/dev/null 2>&1 && pacman -Qi weather-waybar >/dev/null 2>&1; then
- _log "weather-waybar already installed via pacman."
+ if command -v pacman >/dev/null 2>&1 && pacman -Qi waybar-weather >/dev/null 2>&1; then
+ _log "waybar-weather already installed via pacman."
return 0
fi
+
+ # If no package is installed but a static binary exists, remove it before AUR install
+ if [ -x /usr/bin/waybar-weather ] || [ -x /usr/local/bin/waybar-weather ]; then
+ _log "Removing waybar-weather static binary"
+ ${SUDO} rm -f /usr/bin/waybar-weather /usr/local/bin/waybar-weather || _warn "Failed to remove existing waybar-weather binary."
+ fi
+
if command -v yay >/dev/null 2>&1; then
- _log "Attempting to install AUR package 'weather-waybar' via yay"
- if yay -S --noconfirm weather-waybar; then
+ _log "Attempting to install AUR package 'waybar-weather' via yay"
+ if yay -S --noconfirm waybar-weather; then
_log "AUR install succeeded."
return 0
else
@@ -168,16 +200,6 @@ install_waybar_weather_binary() {
return 1
fi
- # Sudo handling for /usr/bin
- local SUDO=""
- if [[ $EUID -ne 0 ]]; then
- if command -v sudo >/dev/null 2>&1; then
- SUDO="sudo"
- else
- _err "sudo not available; cannot write to ${INSTALL_PATH} as non-root"
- return 1
- fi
- fi
_log "Installing prebuilt binary to ${INSTALL_PATH} from ${ASSET}"
if ${SUDO} sh -c "tmp=\$(mktemp '${INSTALL_PATH}.XXXXXX') && gzip -dc '$ASSET' > \"\$tmp\" && chmod 0755 \"\$tmp\" && mv -f \"\$tmp\" '${INSTALL_PATH}'"; then
diff --git a/scripts/lib_backup.sh b/scripts/lib_backup.sh
index 6867fb6d..b6f54f6a 100644
--- a/scripts/lib_backup.sh
+++ b/scripts/lib_backup.sh
@@ -1,9 +1,21 @@
#!/usr/bin/env bash
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
# Backup helper utilities shared by copy.sh (and future scripts).
# Create a unique backup directory name with month, day, hours, and minutes.
get_backup_dirname() {
- echo "back-up_$(date +"%m%d_%H%M")"
+ if [ -n "${BACKUP_DIR:-}" ]; then
+ echo "$BACKUP_DIR"
+ return
+ fi
+ BACKUP_DIR="back-up_$(date +"%m%d_%H%M")"
+ export BACKUP_DIR
+ echo "$BACKUP_DIR"
}
# Move a directory to a timestamped backup alongside the original.
diff --git a/scripts/lib_copy.sh b/scripts/lib_copy.sh
index 58fbe066..f6d4cdd2 100644
--- a/scripts/lib_copy.sh
+++ b/scripts/lib_copy.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
+# ==================================================
# Copy helpers split into phases to keep copy.sh lean.
copy_phase1() {
@@ -216,15 +222,15 @@ cleanup_duplicate_userconfigs() {
return
fi
- # Run de-dupe only for existing installs up to and including v2.3.19.
- # For v2.3.20 and newer, the underlying duplication bug is fixed and
- # this cleanup is no longer needed (and might mask future issues).
- if version_gte "$current_version" "2.3.20"; then
- echo "${INFO:-[INFO]} Skipping UserConfigs duplicate cleanup for detected version v$current_version (>= 2.3.20)." 2>&1 | tee -a "$log"
+ # Run de-dupe only for existing installs up to and including v2.3.18.
+ # For v2.3.19 and newer, UserConfigs should be left as-is to avoid
+ # removing user modifications.
+ if version_gte "$current_version" "2.3.19"; then
+ echo "${INFO:-[INFO]} Skipping UserConfigs duplicate cleanup for detected version v$current_version (>= 2.3.19)." 2>&1 | tee -a "$log"
return
fi
- echo "${INFO:-[INFO]} Running UserConfigs duplicate cleanup for detected version v$current_version (<= 2.3.19)." 2>&1 | tee -a "$log"
+ echo "${INFO:-[INFO]} Running UserConfigs duplicate cleanup for detected version v$current_version (<= 2.3.18)." 2>&1 | tee -a "$log"
local HYPR_DIR="$HOME/.config/hypr"
local BASE_DIR="$HYPR_DIR/configs"
@@ -342,6 +348,9 @@ restore_user_configs() {
local log="$1"
local express_mode="$2"
local old_version="$3"
+ if [ "${RUN_MODE:-}" = "install" ]; then
+ return
+ fi
local DIRPATH="$HOME/.config/hypr"
local BACKUP_DIR
@@ -353,15 +362,7 @@ restore_user_configs() {
exit 1
fi
- # In express mode we still want to run the de-dupe logic, but we skip
- # the interactive restoration prompts so the workflow stays non-blocking.
- local SKIP_RESTORE_PROMPTS=0
- if [ -d "$BACKUP_DIR_PATH" ] && [ "$express_mode" -eq 1 ]; then
- echo "${NOTE:-[NOTE]} Express mode: skipping UserConfigs restoration prompts." 2>&1 | tee -a "$log"
- SKIP_RESTORE_PROMPTS=1
- fi
-
- if [ -d "$BACKUP_DIR_PATH" ] && [ "$SKIP_RESTORE_PROMPTS" -eq 0 ]; then
+ if [ -d "$BACKUP_DIR_PATH" ]; then
local VERSION_FILE
VERSION_FILE=$(find "$DIRPATH" -maxdepth 1 -name "v*.*.*" | head -n 1)
local CURRENT_VERSION="999.9.9"
@@ -370,6 +371,10 @@ restore_user_configs() {
fi
local TARGET_VERSION="2.3.19"
+ local AUTO_RESTORE=0
+ if version_gte "$CURRENT_VERSION" "2.3.18"; then
+ AUTO_RESTORE=1
+ fi
echo -e "${NOTE:-[NOTE]} Restoring previous ${MAGENTA:-}User-Configs${RESET:-}... " 2>&1 | tee -a "$log"
printf "${WARNING:-}\\
@@ -382,13 +387,19 @@ restore_user_configs() {
" >&2
if version_gte "$CURRENT_VERSION" "$TARGET_VERSION"; then
- read -r -p "${CAT:-[ACTION]} Do you want to restore your previous UserConfigs directory? (Y/n): " restore_userconfigs_dir
- if [[ "$restore_userconfigs_dir" != [Nn]* ]]; then
- echo "${NOTE:-[NOTE]} Restoring UserConfigs directory..." 2>&1 | tee -a "$log"
+ if [ "$express_mode" -eq 1 ] || [ "$AUTO_RESTORE" -eq 1 ]; then
+ echo "${NOTE:-[NOTE]} Restoring UserConfigs directory automatically." 2>&1 | tee -a "$log"
rsync -a "$BACKUP_DIR_PATH/" "$DIRPATH/UserConfigs/" 2>&1 | tee -a "$log"
echo "${OK:-[OK]} - UserConfigs directory restored." 2>&1 | tee -a "$log"
else
- echo "${NOTE:-[NOTE]} - Skipped restoring UserConfigs." 2>&1 | tee -a "$log"
+ read -r -p "${CAT:-[ACTION]} Do you want to restore your previous UserConfigs directory? (Y/n): " restore_userconfigs_dir
+ if [[ "$restore_userconfigs_dir" != [Nn]* ]]; then
+ echo "${NOTE:-[NOTE]} Restoring UserConfigs directory..." 2>&1 | tee -a "$log"
+ rsync -a "$BACKUP_DIR_PATH/" "$DIRPATH/UserConfigs/" 2>&1 | tee -a "$log"
+ echo "${OK:-[OK]} - UserConfigs directory restored." 2>&1 | tee -a "$log"
+ else
+ echo "${NOTE:-[NOTE]} - Skipped restoring UserConfigs." 2>&1 | tee -a "$log"
+ fi
fi
else
echo -e "${NOTE:-[NOTE]} Detected version ${YELLOW:-}v$CURRENT_VERSION${RESET:-} (older than v$TARGET_VERSION). Using legacy restoration mode." 2>&1 | tee -a "$log"
@@ -419,18 +430,25 @@ restore_user_configs() {
echo "${OK:-[OK]} - Migrated overlay for ${YELLOW:-}$FILE_NAME${RESET:-}" 2>&1 | tee -a "$log"
continue
fi
-
- printf "\n${INFO:-[INFO]} Found ${YELLOW:-}$FILE_NAME${RESET:-} in hypr backup...\n"
- read -r -p "${CAT:-[ACTION]} Do you want to restore ${YELLOW:-}$FILE_NAME${RESET:-} from backup? (Y/n): " file_restore
-
- if [[ "$file_restore" != [Nn]* ]]; then
+ if [ "$express_mode" -eq 1 ] || [ "$AUTO_RESTORE" -eq 1 ]; then
if cp "$BACKUP_FILE" "$DIRPATH/UserConfigs/$FILE_NAME"; then
echo "${OK:-[OK]} - $FILE_NAME restored!" 2>&1 | tee -a "$log"
else
echo "${ERROR:-[ERROR]} - Failed to restore $FILE_NAME!" 2>&1 | tee -a "$log"
fi
else
- echo "${NOTE:-[NOTE]} - Skipped restoring $FILE_NAME." 2>&1 | tee -a "$log"
+ printf "\n${INFO:-[INFO]} Found ${YELLOW:-}$FILE_NAME${RESET:-} in hypr backup...\n"
+ read -r -p "${CAT:-[ACTION]} Do you want to restore ${YELLOW:-}$FILE_NAME${RESET:-} from backup? (Y/n): " file_restore
+
+ if [[ "$file_restore" != [Nn]* ]]; then
+ if cp "$BACKUP_FILE" "$DIRPATH/UserConfigs/$FILE_NAME"; then
+ echo "${OK:-[OK]} - $FILE_NAME restored!" 2>&1 | tee -a "$log"
+ else
+ echo "${ERROR:-[ERROR]} - Failed to restore $FILE_NAME!" 2>&1 | tee -a "$log"
+ fi
+ else
+ echo "${NOTE:-[NOTE]} - Skipped restoring $FILE_NAME." 2>&1 | tee -a "$log"
+ fi
fi
fi
done
@@ -489,6 +507,32 @@ restore_user_scripts() {
fi
}
+restore_terminal_configs() {
+ local log="$1"
+ local express_mode="$2"
+
+ local GHOSTTY_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/ghostty"
+ local BACKUP_DIR
+ BACKUP_DIR=$(get_backup_dirname)
+ local GHOSTTY_BACKUP="$GHOSTTY_DIR-backup-$BACKUP_DIR"
+
+ if [ -d "$GHOSTTY_BACKUP" ] && [ "$express_mode" -eq 1 ]; then
+ echo "${NOTE:-[NOTE]} Express mode: skipping Ghostty restore prompt." 2>&1 | tee -a "$log"
+ return
+ fi
+
+ if [ -d "$GHOSTTY_BACKUP" ] && [ "$express_mode" -eq 0 ]; then
+ echo -e "${NOTE:-[NOTE]} Restore previous ${MAGENTA:-}Ghostty${RESET:-} config?" 2>&1 | tee -a "$log"
+ read -r -p "${CAT:-[ACTION]} Do you want to restore Ghostty config from backup? (y/N): " restore_ghostty
+ if [[ "$restore_ghostty" == [Yy]* ]]; then
+ rm -rf "$GHOSTTY_DIR"
+ cp -a "$GHOSTTY_BACKUP" "$GHOSTTY_DIR" 2>&1 | tee -a "$log"
+ echo "${OK:-[OK]} - Ghostty config restored." 2>&1 | tee -a "$log"
+ else
+ echo "${NOTE:-[NOTE]} - Skipped restoring Ghostty config." 2>&1 | tee -a "$log"
+ fi
+ fi
+}
restore_hypr_files() {
local log="$1"
local express_mode="$2"
diff --git a/scripts/lib_detect.sh b/scripts/lib_detect.sh
index 5cb26c1b..2b11baac 100644
--- a/scripts/lib_detect.sh
+++ b/scripts/lib_detect.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
+# ==================================================
# Detection and environment adjustment helpers shared by copy.sh.
# Nvidia tweaks: uncomments envs and adjusts hardware cursor setting.
diff --git a/scripts/lib_prompts.sh b/scripts/lib_prompts.sh
index 6475e54d..8f2db3bc 100644
--- a/scripts/lib_prompts.sh
+++ b/scripts/lib_prompts.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
+# ==================================================
# User interaction helpers extracted from copy.sh. Each helper echoes state or sets
# globals deliberately to minimize side effects.
diff --git a/scripts/lib_update.sh b/scripts/lib_update.sh
index be0b8a0a..397e7728 100644
--- a/scripts/lib_update.sh
+++ b/scripts/lib_update.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
+# ==================================================
# run_repo_update
# Arguments:
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage