aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDonald Williams <129223418+dwilliam62@users.noreply.github.com>2026-07-01 22:06:51 -0400
committerGitHub <noreply@github.com>2026-07-01 22:06:51 -0400
commitfed1837fbdcc2acedbb8d6246a2601b26ad40369 (patch)
tree648d2d903750729e7e9df8e6af6dba4b602ef7a8
parent4361f59928384f1cf7df8e2ef348e3532e348e9b (diff)
Development branch to main v2.3.25 (#84)
* Updated version to v2.3.25 Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md modified: config/hypr/configs/ENVariables.conf modified: config/hypr/lua/env.lua renamed: config/hypr/v2.3.24 -> config/hypr/v2.3.25 * Fixed LayerRule and window rule Excessive bluring and wrong geometry to qcalculate-gtk Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md modified: config/hypr/configs/LayerRules.conf modified: config/hypr/configs/WindowRules.conf * Re-added hyprlock files Signed-off-by: Don Williams <don.e.williams@gmail.com> * Added persistant toggle for Dark/Light mode Default is dark Signed-off-by: Don Williams <don.e.williams@gmail.com> 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 modified: config/hypr/lua/startup.lua new file: config/hypr/scripts/ApplyThemeMode.sh modified: config/hypr/scripts/DarkLight.sh * Dynamic wallpaper is now also per-monitor Before a Dynamic wallpaper would replace wallpaper on all monitors Signed-off-by: Don Williams <don.e.williams@gmail.com> 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 * Improving handling of NVIDIA Hybrid laptops Especially with GDM login manager Cursors can get set incorrectly Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md modified: README.md modified: config/hypr/configs/ENVariables.conf modified: config/hypr/configs/Startup_Apps.conf modified: copy.sh modified: scripts/lib_detect.sh * Add: Set background for lock screen Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md new file: config/hypr/scripts/HyprlockWallpaperSelect.sh modified: config/hypr/scripts/Kool_Quick_Settings.sh * Fixed hyprlock wallper to get current monitor wp Signed-off-by: Don Williams <don.e.williams@gmail.com> * upd: sddm/hyprlock images use wp selelctor Rofi backgrounds come from current monitor looks better Updated all the rofi menus that use background images SDDM and Hyprlock set background use wallpaper selector but also show current monitor background in case you want that or you can pick from the avalable wallpapers Also add notification of success/failure with filename Signed-off-by: Don Williams <don.e.williams@gmail.com> 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/lua/keybinds.lua modified: config/hypr/scripts/HyprlockWallpaperSelect.sh modified: config/hypr/scripts/Kool_Quick_Settings.sh new file: config/hypr/scripts/RofiFocusedWallpaperLink.sh modified: config/hypr/scripts/sddm_wallpaper.sh modified: config/rofi/themes/KooL_style-1.rasi modified: config/rofi/themes/KooL_style-13-Vertical.rasi modified: config/rofi/themes/KooL_style-3-FullScreen-v1.rasi modified: config/rofi/themes/KooL_style-5.rasi modified: config/rofi/themes/KooL_style-6.rasi modified: config/rofi/themes/KooL_style-8.rasi * Scripts weren't executableo Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: ApplyThemeMode.sh modified: HyprlockWallpaperSelect.sh * enabled hypridle timer for monitor off Signed-off-by: Don Williams <don.e.williams@gmail.com> * Added icon for wave terminal Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/waybar/ModulesWorkspaces * Upd to Cachy breaking portals Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/PortalHyprland.sh * Fix 2 for CachyOS portal Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/PortalHyprland.sh * Fixing schema dir issue Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/PortalHyprland.sh * Still trying to fix PortalHyprland Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/PortalHyprland.sh * Try something else to fix portals in CachyOS This is occuring after OS upgrade Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/PortalHyprland.sh * Trying override to fix regression bug in cachyOS Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: new file: config/systemd/user/xdg-desktop-portal.service.d/override.conf * Hyprland-Portal script to create override Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: new file: hypr/scripts/Add-override-Hyprland-Portal.sh * Upd CHANGELOG About the new override script Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md * Fixing handling of QT variables Signed-off-by: Don Williams <don.e.williams@gmail.com> • config/hypr/configs/ENVariables.conf ◦ Changed default from org.hyprland.style to Basic. • config/hypr/lua/env.lua ◦ Changed default from org.hyprland.style to Basic. • scripts/lib_detect.sh ◦ Added adjust_qt_quick_controls_style(): ▪ Detects whether the Hyprland QML style module is actually present (*/qml/*/org/hyprland/style or Debian package installed). ▪ Sets style to org.hyprland.style only when available. ▪ Otherwise forces Basic and logs a warning. • copy.sh ◦ Calls adjust_qt_quick_controls_style "$LOG" during dotfiles setup/upgrade. On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/configs/ENVariables.conf modified: config/hypr/lua/env.lua modified: copy.sh modified: scripts/lib_detect.sh * Sync'd updated WaybarStartup.sh from main Makes sure ENV variables are set other waybar fails to start b/c xdg-desktop-portal fails to start Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/WaybarStartup.sh * Add: scrolling resize/max sample workspace rules Signed-off-by: Don Williams <don.e.williams@gmail.com> 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 modified: config/hypr/lua/keybind_helpers.lua modified: config/hypr/lua/keybinds.lua modified: config/hypr/lua/workspaces.lua new file: config/hypr/scripts/ScrollCycleColumnWidth.sh new file: config/hypr/scripts/ScrollMaximizeToggle.sh modified: config/hypr/workspaces.conf * Fixed SUPERALT F fullsize toggle in scrolling Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/configs/ENVariables.conf modified: config/hypr/configs/Startup_Apps.conf modified: config/hypr/configs/SystemSettings.conf deleted: config/hypr/hyprlock-1080p.conf modified: config/hypr/hyprlock-2k.conf modified: config/hypr/hyprlock.conf modified: config/hypr/scripts/Refresh.sh modified: config/hypr/scripts/RefreshNoWaybar.sh modified: config/hypr/scripts/ScrollMaximizeToggle.sh * Fixed columwidth resize for hyprlang On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/ScrollCycleColumnWidth.sh * Fixed keybinds for scrolling toggle and resize Matches the work done on hyprlang config files Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/lua/keybinds.lua * Set scripts executable Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/ScrollCycleColumnWidth.sh modified: config/hypr/scripts/ScrollMaximizeToggle.sh * Fixing bindings in LUA mode Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/lua/keybind_helpers.lua modified: config/hypr/lua/user_keybinds_helper.lua modified: config/hypr/lua/user_overrides.lua modified: config/hypr/scripts/ScrollMaximizeToggle.sh * Fixed loading user_decorations Changed 2 keybinds SUPER + F == Maximize SUPER + SHIFT + F == FullSreen Works in all layouts now Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md modified: config/hypr/UserConfigs/user_decorations.lua modified: config/hypr/configs/Keybinds.conf modified: config/hypr/lua/keybinds.lua modified: config/hypr/lua/user_overrides.lua * user_overrides wasn't loading system_keybinds Resulting in only user keybinds being availble Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md modified: config/hypr/lua/user_overrides.lua * Fixed LuaAutoReload script Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md modified: config/hypr/scripts/LuaAutoReload.sh * In LUA QT_THEME_OVERRIDE was hard code to kvantum If kvantum not installed then apps like KDENLIVE will fail Fixed the hyprlang config before but not in LUA workflow Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md modified: config/hypr/configs/ENVariables.conf modified: config/hypr/lua/env.lua modified: config/hypr/lua/user_overrides.lua modified: scripts/lib_detect.sh * Fixed startup that causes waybar to restart at login Signed-off-by: Don Williams <don.e.williams@gmail.com> 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 modified: config/hypr/lua/startup.lua * Changed $HOME to $(XDG_CONFIG_HOME:$HOME) in all scripts Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md modified: archive/upgrade.sh 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/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/ZshChangeTheme.sh modified: config/hypr/initial-boot.sh modified: config/hypr/scripts/Add-override-Hyprland-Portal.sh modified: config/hypr/scripts/AirplaneMode.sh modified: config/hypr/scripts/Animations.sh modified: config/hypr/scripts/ApplyThemeMode.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/ExternalBrightness.sh modified: config/hypr/scripts/Float-all-Windows.sh modified: config/hypr/scripts/GameMode.sh modified: config/hypr/scripts/Ghostty_themes.sh modified: config/hypr/scripts/HyprLayoutModule.sh modified: config/hypr/scripts/HyprlockWallpaperSelect.sh modified: config/hypr/scripts/JavaManager.sh modified: config/hypr/scripts/KeyBinds.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/LuaAutoReload.sh modified: config/hypr/scripts/MediaCtrl.sh modified: config/hypr/scripts/MonitorProfiles.sh modified: config/hypr/scripts/OverviewToggle.sh modified: config/hypr/scripts/Polkit-Diag.sh modified: config/hypr/scripts/PortalHyprlandUbuntu.sh modified: config/hypr/scripts/Refresh.sh modified: config/hypr/scripts/RefreshNoWaybar.sh modified: config/hypr/scripts/RofiEmoji.sh modified: config/hypr/scripts/RofiFocusedWallpaperLink.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/UserConfigsSwitcher.sh modified: config/hypr/scripts/Volume.sh modified: config/hypr/scripts/WallpaperDaemon.sh modified: config/hypr/scripts/WallustConfig.sh modified: config/hypr/scripts/WallustSwww.sh modified: config/hypr/scripts/WaybarLayout.sh modified: config/hypr/scripts/WaybarScripts.sh modified: config/hypr/scripts/WaybarStyles.sh modified: config/hypr/scripts/fastfetch-wrapper.sh modified: config/hypr/scripts/rofi-emacs-keybinds modified: config/hypr/scripts/rofi-ssh-menu.sh modified: config/hypr/scripts/sddm_wallpaper.sh modified: config/hypr/scripts/set-default-thunar-terminal.sh modified: config/hypr/scripts/update_WindowRules.sh modified: copy.sh modified: scripts/fix-systemsettings-lua.sh modified: scripts/lib_apps.sh modified: scripts/lib_backup.sh modified: scripts/lib_copy.sh modified: scripts/lib_prompts.sh modified: scripts/migrate-hypr-to-lua.sh * Changed return 1 to exit 0 in ubuntu portal check Signed-off-by: Don Williams <don.e.williams@gmail.com> * Fixing waybar spacing issues Signed-off-by: Don Williams <Don.e.williams@gmail.com> * Fixing formatting issues in waybar style sheets Signed-off-by: Don Williams <Don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: deleted: config/waybar/style/0-VERTICAL-Catpuccin-Mocha.css deleted: config/waybar/style/0-VERTICAL-Golden-Noir.css deleted: config/waybar/style/0-VERTICAL-Oglo-Chicklets.css modified: config/waybar/style/Black-&-White-Monochrome.css modified: config/waybar/style/Catppuccin-Frappe.css modified: config/waybar/style/Catppuccin-Mocha.css modified: config/waybar/style/Colored-Chroma-Glow.css modified: config/waybar/style/Colored-Translucent.css modified: config/waybar/style/Colorful-Aurora-Blossom.css modified: config/waybar/style/Colorful-Aurora.css modified: config/waybar/style/Colorful-Oglo-Chicklets.css modified: config/waybar/style/Colorful-Rainbow-Spectrum.css modified: config/waybar/style/Colorful-stolen-style.css modified: config/waybar/style/Dark-Golden-Eclipse.css modified: config/waybar/style/Dark-Golden-Noir.css modified: config/waybar/style/Dark-Half-Moon.css modified: config/waybar/style/Dark-Purpl.css modified: config/waybar/style/Dark-Wallust-Obsidian-Edge.css modified: config/waybar/style/Extra-Crimson.css modified: config/waybar/style/Extra-EverForest.css modified: config/waybar/style/Extra-Mauve.css modified: config/waybar/style/Extra-Modern-Combined-Transparent.css modified: config/waybar/style/Extra-Simple-Pink.css modified: config/waybar/style/Light-Monochrome-Contrast.css modified: config/waybar/style/Light-Obsidian-Glow.css modified: config/waybar/style/Rainbow-RGB-Bordered.css modified: config/waybar/style/Retro-Simple-Style.css modified: config/waybar/style/Transparent-Crystal-Clear.css modified: config/waybar/style/VERTICAL-Catpuccin-Mocha.css modified: config/waybar/style/Wallust-Bordered-Chroma-Fusion-Edge.css modified: config/waybar/style/Wallust-Bordered-Chroma-Simple.css modified: config/waybar/style/Wallust-Chroma-Edge.css modified: config/waybar/style/Wallust-Chroma-Fusion.css modified: config/waybar/style/Wallust-Chroma-Tally-V2.css modified: config/waybar/style/Wallust-Chroma-Tally.css modified: config/waybar/style/Wallust-Colored.css modified: config/waybar/style/Wallust-Simple.css modified: config/waybar/style/Wallust-Transparent-Crystal-Clear.css * Fixed Oglo Chickets.css Signed-off-by: Don Williams <Don.e.williams@gmail.com> * Fixed Oglo Chickets.css part 2 Signed-off-by: Don Williams <Don.e.williams@gmail.com> * Fixed Oglo colors Signed-off-by: Don Williams <Don.e.williams@gmail.com> * Working on Oglo still Signed-off-by: Don Williams <Don.e.williams@gmail.com> * Refactor of layout configs no longer global Now it's per monitor/workspace When you change a layout it's written to ~/.config/hypr/workspaces.conf to make it persistent Thank you @aki for finding / reporting this issue This is a way better option vs. global Signed-off-by: Don Williams <don.e.williams@gmail.com> 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 modified: config/hypr/lua/keybinds.lua modified: config/hypr/scripts/ChangeLayout.sh modified: config/hypr/scripts/HyprLayoutModule.sh modified: config/hypr/scripts/KeyHints.sh modified: config/hypr/scripts/KeybindsLayoutInit.sh new file: config/hypr/scripts/LayoutKeybindDispatch.sh new file: config/hypr/scripts/PersistWorkspaceLayout.sh modified: config/hypr/scripts/ThemeChanger.sh modified: config/hypr/scripts/WallustSwww.sh modified: config/yazi/keymap.toml modified: config/yazi/package.toml * Fixed layout script wasn't updating workspaces.conf Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/ChangeLayout.sh * Moved some scripts, fixed wallpapereffects/changer Signed-off-by: Don Williams <Don.e.williams@gmail.com> 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 modified: config/hypr/configs/Startup_Apps.conf modified: config/hypr/lua/keybinds.lua modified: config/hypr/lua/startup.lua renamed: config/hypr/UserScripts/WallpaperAutoChange.sh -> config/hypr/scripts/WallpaperAutoChange.sh renamed: config/hypr/UserScripts/WallpaperEffects.sh -> config/hypr/scripts/WallpaperEffects.sh renamed: config/hypr/UserScripts/WallpaperRandom.sh -> config/hypr/scripts/WallpaperRandom.sh renamed: config/hypr/UserScripts/WallpaperSelect.sh -> config/hypr/scripts/WallpaperSelect.sh modified: config/hypr/scripts/WallustSwww.sh renamed: config/hypr/UserScripts/ZshChangeTheme.sh -> config/hypr/scripts/ZshChangeTheme.sh * Archived UserScripts/Tak0-AutoDispatch.sh Signed-off-by: Don Williams <don.e.williams@gmail.com> * Archived UserScripts/Tak0-Autodispatch.sh Not supported and no longer needed Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: new file: archive/Tak0-Autodispatch.sh * Updated CHANGELOG * Fixing some binds in LUA mode * Fixed window pane binds in LUA mode Signed-off-by: Don Williams <don.e.williams@gmail.com> 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/lua/keybinds.lua modified: config/hypr/scripts/LayoutKeybindDispatch.sh * windowrulee: hyprland share picker * Fixed SUPER Q handing in LUA / fixed migraiton script Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md modified: config/hypr/lua/keybind_helpers.lua modified: config/hypr/lua/user_keybinds_helper.lua * Really fixed SUPER Q and migraiton template Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/lua/keybind_helpers.lua modified: config/hypr/lua/user_keybinds_helper.lua * Fixed keybinds in LUA config mode Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md new file: config/hypr/configs/system_keybinds.lua modified: config/hypr/lua/keybinds.lua * Fixed copy.sh lua files, WallpaperEffects in lua Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md modified: config/hypr/scripts/WallpaperEffects.sh modified: copy.sh * Fixed scrolling bindings copy.sh error fixed Signed-off-by: Don Williams <Don.e.williams@gmail.com> 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 modified: config/hypr/scripts/LayoutKeybindDispatch.sh modified: scripts/lib_copy.sh * Added lua files for remaining user config files Upd Lua migraiton to either port existing UserConfigs files or make sure the templates are there instead Kool_Quick_Settings menu now includes them for bothh hyprlang and lua workflows Signed-off-by: Don Williams <Don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md new file: config/hypr/UserConfigs/user_animations.lua new file: config/hypr/UserConfigs/user_defaults.lua new file: config/hypr/UserConfigs/user_env.lua new file: config/hypr/UserConfigs/user_laptops.lua new file: config/hypr/UserConfigs/user_layer_rules.lua new file: config/hypr/UserConfigs/user_settings.lua new file: config/hypr/UserConfigs/user_startup.lua new file: config/hypr/UserConfigs/user_window_rules.lua modified: config/hypr/scripts/Kool_Quick_Settings.sh modified: scripts/migrate-hypr-to-lua.sh * Added another example to sample file Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/UserConfigs/user_settings.lua * Fixed spacing on powermenus Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/waybar/style/Colorful-Aurora-Blossom.css modified: config/waybar/style/Colorful-Aurora.css modified: config/waybar/style/Colorful-Oglo-Chicklets.css modified: config/waybar/style/Colorful-Rainbow-Spectrum.css modified: config/waybar/style/Colorful-stolen-style.css modified: config/waybar/style/Extra-Rose-Pine.css modified: config/waybar/style/Light-Monochrome-Contrast.css modified: config/waybar/style/Wallust-Bordered-Chroma-Fusion-Edge.css modified: config/waybar/style/Wallust-Bordered-Chroma-Simple.css modified: config/waybar/style/Wallust-Box-type.css modified: config/waybar/style/Wallust-Chroma-Edge.css modified: config/waybar/style/Wallust-Chroma-Fusion.css modified: config/waybar/style/Wallust-Simple.css * Fixed dup keybinds,thunar launch script Signed-off-by: Don Williams <don.e.williams@gmail.com> 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 modified: config/hypr/configs/system_keybinds.lua modified: config/hypr/lua/keybinds.lua new file: config/hypr/scripts/LaunchThunar.sh modified: scripts/migrate-hypr-to-lua.sh * Added spring-curves animation Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: new file: config/hypr/animations/Spring-curves.conf new file: config/hypr/animations/Spring-curves.lua modified: config/hypr/scripts/Animations.sh * Added LUA cfg animation files to match hyprlang Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: new file: config/hypr/animations/00-default.lua new file: config/hypr/animations/01-default - v2.lua new file: config/hypr/animations/03- Disable Animation.lua new file: config/hypr/animations/END-4.lua new file: config/hypr/animations/HYDE - Vertical.lua new file: config/hypr/animations/HYDE - default.lua new file: config/hypr/animations/HYDE - minimal-1.lua new file: config/hypr/animations/HYDE - minimal-2.lua new file: config/hypr/animations/HYDE - optimized.lua new file: config/hypr/animations/ML4W - classic.lua new file: config/hypr/animations/ML4W - dynamic.lua new file: config/hypr/animations/ML4W - fast.lua new file: config/hypr/animations/ML4W - high.lua new file: config/hypr/animations/ML4W - moving.lua new file: config/hypr/animations/ML4W - standard.lua new file: config/hypr/animations/Mahaveer - me-1.lua new file: config/hypr/animations/Mahaveer - me-2.lua * Fixed layout keybinds in LUA mode (finally, I hope) Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/configs/ENVariables.conf modified: config/hypr/lua/env.lua modified: config/hypr/scripts/LayoutKeybindDispatch.sh * Fixed bindings, added launchers for term and files Signed-off-by: Don Williams <don.e.williams@gmail.com> 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 modified: config/hypr/configs/system_keybinds.lua modified: config/hypr/lua/keybinds.lua new file: config/hypr/scripts/LaunchFileManager.sh new file: config/hypr/scripts/LaunchTerminal.sh * Fixed SUPERLR in Monocle layout not working Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/configs/system_keybinds.lua modified: config/hypr/lua/keybinds.lua modified: config/hypr/scripts/LayoutKeybindDispatch.sh * Disabled nw-tray for ubuntu, now optional Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/configs/Startup_Apps.conf modified: config/hypr/lua/startup.lua * Add: starship sample config files Signed-off-by: Don Williams <Don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md new file: config/starship/starship-1-line-nix.toml new file: config/starship/starship-1-line-simple.toml new file: config/starship/starship-2-line-classic-garuda.toml new file: config/starship/starship-2-line-cool.toml new file: config/starship/starship-2-line-nixos.toml new file: config/starship/starship-chris-titus.toml new file: config/starship/starship-classic.toml new file: config/starship/starship-eric-dubois.toml new file: config/starship/starship-garuda-mokka.toml new file: config/starship/starship-instantos.toml new file: config/starship/starship-nobara.toml new file: config/starship/starship-purple-1line.toml new file: config/starship/starship-ranbow.toml new file: config/starship/starship-simple-prompt.toml new file: config/starship/starship-zen.toml * Added starship config directory to copy.sh Signed-off-by: Don Williams <Don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md modified: scripts/lib_copy.sh * Added kooldots-add-ssh-agent systemd service for ssh keys Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md modified: config/hypr/configs/ENVariables.conf modified: config/hypr/configs/Startup_Apps.conf modified: config/hypr/configs/SystemSettings.conf modified: config/hypr/lua/env.lua modified: config/hypr/lua/settings.lua new file: config/hypr/scripts/kooldots-add-ssh-agent.sh * Added info on adding keys to agent Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/kooldots-add-ssh-agent.sh * Add new menu for Change Layour rofi menu Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md modified: config/hypr/scripts/HyprLayoutModule.sh new file: config/rofi/config-layout.rasi * Removed starship- from config files look better in menu Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: renamed: config/starship/starship-1-line-nix.toml -> config/starship/1-line-nix.toml renamed: config/starship/starship-1-line-simple.toml -> config/starship/1-line-simple.toml renamed: config/starship/starship-2-line-classic-garuda.toml -> config/starship/2-line-classic-garuda.toml renamed: config/starship/starship-2-line-cool.toml -> config/starship/2-line-cool.toml renamed: config/starship/starship-2-line-nixos.toml -> config/starship/2-line-nixos.toml renamed: config/starship/starship-chris-titus.toml -> config/starship/chris-titus.toml renamed: config/starship/starship-classic.toml -> config/starship/classic.toml renamed: config/starship/starship-eric-dubois.toml -> config/starship/eric-dubois.toml renamed: config/starship/starship-garuda-mokka.toml -> config/starship/garuda-mokka.toml renamed: config/starship/starship-instantos.toml -> config/starship/instantos.toml renamed: config/starship/starship-nobara.toml -> config/starship/nobara.toml renamed: config/starship/starship-purple-1line.toml -> config/starship/purple-1line.toml renamed: config/starship/starship-ranbow.toml -> config/starship/ranbow.toml renamed: config/starship/starship-simple-prompt.toml -> config/starship/simple-prompt.toml renamed: config/starship/starship-zen.toml -> config/starship/zen.toml * Add script to change Starship prompt Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: new file: config/hypr/scripts/ChangeStarshipPrompt.sh * Added own rofi menu and title Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/ChangeStarshipPrompt.sh new file: config/rofi/config-starship.rasi * Adjusted height of starship menu Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/rofi/config-starship.rasi * Removed a duplicate and bad file Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: deleted: instantos.toml deleted: zen.toml * Removed dup prompt, adjusted rasi height add to menu Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/Kool_Quick_Settings.sh modified: config/rofi/config-starship.rasi deleted: config/starship/garuda-mokka.toml * Updated CHANGELOG for starship menu Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md * v2.3.24 title was removed by mistake Signed-off-by: Don Williams <don.e.williams@gmail.com> * Restore hyprlock-1080/hyprlock.conf Signed-off-by: Don Williams <don.e.williams@gmail.com> * Added script to toggle waybar 12/24hr Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md modified: config/hypr/scripts/Kool_Quick_Settings.sh new file: config/hypr/scripts/ToggleWaybarTime.sh * Fixed notifcation on waybar time change Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/ToggleWaybarTime.sh * Fixed ChangeStarshipPrompt not starting in LUA workflow Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: config/hypr/scripts/ChangeStarshipPrompt.sh * Added vill minimalist starship prompt Signed-off-by: Don Williams <don.e.williams@gmail.com> * Updated copy.sh to check for hyprland.lua Preventing a failed startup on next login Signed-off-by: Don Williams <don.e.williams@gmail.com> On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: CHANGELOG.md modified: copy.sh --------- Signed-off-by: Don Williams <don.e.williams@gmail.com> Signed-off-by: Don Williams <Don.e.williams@gmail.com> Co-authored-by: brockar <martin@mguz.dev>
-rw-r--r--CHANGELOG.md133
-rw-r--r--README.md2
-rwxr-xr-xarchive/Tak0-Autodispatch.sh (renamed from config/hypr/UserScripts/Tak0-Autodispatch.sh)0
-rwxr-xr-xarchive/upgrade.sh44
-rw-r--r--config/hypr/UserConfigs/user_animations.lua17
-rw-r--r--config/hypr/UserConfigs/user_decorations.lua152
-rw-r--r--config/hypr/UserConfigs/user_defaults.lua17
-rw-r--r--config/hypr/UserConfigs/user_env.lua13
-rw-r--r--config/hypr/UserConfigs/user_laptops.lua12
-rw-r--r--config/hypr/UserConfigs/user_layer_rules.lua50
-rw-r--r--config/hypr/UserConfigs/user_settings.lua27
-rw-r--r--config/hypr/UserConfigs/user_startup.lua47
-rw-r--r--config/hypr/UserConfigs/user_window_rules.lua50
-rwxr-xr-xconfig/hypr/UserScripts/00-Readme4
-rwxr-xr-xconfig/hypr/UserScripts/RainbowBorders-low-cpu.sh2
-rwxr-xr-xconfig/hypr/UserScripts/RainbowBorders.bak.sh2
-rwxr-xr-xconfig/hypr/UserScripts/RofiBeats.sh8
-rwxr-xr-xconfig/hypr/UserScripts/RofiCalc.sh2
-rwxr-xr-xconfig/hypr/UserScripts/WallpaperEffects.sh124
-rwxr-xr-xconfig/hypr/UserScripts/Weather.py2
-rw-r--r--config/hypr/animations/00-default.lua26
-rw-r--r--config/hypr/animations/01-default - v2.lua27
-rw-r--r--config/hypr/animations/03- Disable Animation.lua7
-rw-r--r--config/hypr/animations/END-4.lua34
-rw-r--r--config/hypr/animations/HYDE - Vertical.lua22
-rw-r--r--config/hypr/animations/HYDE - default.lua22
-rw-r--r--config/hypr/animations/HYDE - minimal-1.lua21
-rw-r--r--config/hypr/animations/HYDE - minimal-2.lua15
-rw-r--r--config/hypr/animations/HYDE - optimized.lua40
-rw-r--r--config/hypr/animations/ML4W - classic.lua16
-rw-r--r--config/hypr/animations/ML4W - dynamic.lua21
-rw-r--r--config/hypr/animations/ML4W - fast.lua25
-rw-r--r--config/hypr/animations/ML4W - high.lua21
-rw-r--r--config/hypr/animations/ML4W - moving.lua20
-rw-r--r--config/hypr/animations/ML4W - standard.lua16
-rw-r--r--config/hypr/animations/Mahaveer - me-1.lua41
-rw-r--r--config/hypr/animations/Mahaveer - me-2.lua26
-rw-r--r--config/hypr/animations/Spring-curves.conf25
-rw-r--r--config/hypr/animations/Spring-curves.lua28
-rw-r--r--config/hypr/configs/ENVariables.conf24
-rw-r--r--config/hypr/configs/Keybinds.conf37
-rw-r--r--config/hypr/configs/Startup_Apps.conf9
-rw-r--r--config/hypr/configs/SystemSettings.conf2
-rw-r--r--config/hypr/configs/WindowRules.conf10
-rw-r--r--config/hypr/configs/system_keybinds.lua416
-rw-r--r--config/hypr/hypridle.conf15
-rwxr-xr-xconfig/hypr/initial-boot.sh18
-rw-r--r--config/hypr/lua/env.lua6
-rw-r--r--config/hypr/lua/keybind_helpers.lua23
-rw-r--r--config/hypr/lua/keybinds.lua154
-rw-r--r--config/hypr/lua/settings.lua2
-rw-r--r--config/hypr/lua/startup.lua19
-rw-r--r--config/hypr/lua/user_keybinds_helper.lua22
-rw-r--r--config/hypr/lua/user_overrides.lua31
-rw-r--r--config/hypr/lua/workspaces.lua4
-rwxr-xr-xconfig/hypr/scripts/Add-override-Hyprland-Portal.sh2
-rwxr-xr-xconfig/hypr/scripts/AirplaneMode.sh2
-rwxr-xr-xconfig/hypr/scripts/Animations.sh42
-rwxr-xr-xconfig/hypr/scripts/ApplyThemeMode.sh11
-rwxr-xr-xconfig/hypr/scripts/Brightness.sh2
-rwxr-xr-xconfig/hypr/scripts/BrightnessKbd.sh2
-rwxr-xr-xconfig/hypr/scripts/ChangeBlur.sh2
-rwxr-xr-xconfig/hypr/scripts/ChangeLayout.sh229
-rwxr-xr-xconfig/hypr/scripts/ChangeStarshipPrompt.sh78
-rwxr-xr-xconfig/hypr/scripts/ClipManager.sh2
-rwxr-xr-xconfig/hypr/scripts/DarkLight.sh138
-rwxr-xr-xconfig/hypr/scripts/Distro_update.sh2
-rwxr-xr-xconfig/hypr/scripts/Dropterminal.sh2
-rwxr-xr-xconfig/hypr/scripts/ExternalBrightness.sh2
-rwxr-xr-xconfig/hypr/scripts/Float-all-Windows.sh2
-rwxr-xr-xconfig/hypr/scripts/GameMode.sh6
-rwxr-xr-xconfig/hypr/scripts/Ghostty_themes.sh12
-rwxr-xr-xconfig/hypr/scripts/HyprLayoutModule.sh20
-rwxr-xr-xconfig/hypr/scripts/HyprlockWallpaperSelect.sh358
-rwxr-xr-xconfig/hypr/scripts/JavaManager.sh2
-rwxr-xr-xconfig/hypr/scripts/KeyBinds.sh6
-rwxr-xr-xconfig/hypr/scripts/KeyHints.sh2
-rwxr-xr-xconfig/hypr/scripts/KeybindsLayoutInit.sh14
-rwxr-xr-xconfig/hypr/scripts/KeyboardLayout.sh6
-rwxr-xr-xconfig/hypr/scripts/KillActiveProcess.sh2
-rwxr-xr-xconfig/hypr/scripts/Kitty_themes.sh10
-rwxr-xr-xconfig/hypr/scripts/KooLsDotsUpdate.sh4
-rwxr-xr-xconfig/hypr/scripts/Kool_Quick_Settings.sh109
-rwxr-xr-xconfig/hypr/scripts/LaunchFileManager.sh122
-rwxr-xr-xconfig/hypr/scripts/LaunchTerminal.sh160
-rwxr-xr-xconfig/hypr/scripts/LaunchThunar.sh50
-rwxr-xr-xconfig/hypr/scripts/LayoutKeybindDispatch.sh219
-rwxr-xr-xconfig/hypr/scripts/LockScreen.sh2
-rwxr-xr-xconfig/hypr/scripts/LuaAutoReload.sh17
-rwxr-xr-xconfig/hypr/scripts/MediaCtrl.sh2
-rwxr-xr-xconfig/hypr/scripts/MonitorProfiles.sh20
-rwxr-xr-xconfig/hypr/scripts/OverviewToggle.sh2
-rwxr-xr-xconfig/hypr/scripts/PersistWorkspaceLayout.sh223
-rwxr-xr-xconfig/hypr/scripts/Polkit-Diag.sh2
-rwxr-xr-xconfig/hypr/scripts/PortalHyprland.sh149
-rwxr-xr-xconfig/hypr/scripts/PortalHyprlandUbuntu.sh4
-rwxr-xr-xconfig/hypr/scripts/Refresh.sh8
-rwxr-xr-xconfig/hypr/scripts/RefreshNoWaybar.sh8
-rwxr-xr-xconfig/hypr/scripts/RofiEmoji.sh2
-rwxr-xr-xconfig/hypr/scripts/RofiFocusedWallpaperLink.sh180
-rwxr-xr-xconfig/hypr/scripts/RofiSearch.sh4
-rwxr-xr-xconfig/hypr/scripts/RofiThemeSelector-modified.sh12
-rwxr-xr-xconfig/hypr/scripts/RofiThemeSelector.sh8
-rwxr-xr-xconfig/hypr/scripts/ScreenShot.sh6
-rwxr-xr-xconfig/hypr/scripts/ScrollCycleColumnWidth.sh56
-rwxr-xr-xconfig/hypr/scripts/ScrollMaximizeToggle.sh175
-rwxr-xr-xconfig/hypr/scripts/Sounds.sh2
-rwxr-xr-xconfig/hypr/scripts/Tak0-Autodispatch.sh2
-rwxr-xr-xconfig/hypr/scripts/Tak0-Per-Window-Switch.sh4
-rwxr-xr-xconfig/hypr/scripts/ThemeChanger.sh42
-rwxr-xr-xconfig/hypr/scripts/Toggle-Active-Window-Audio.sh2
-rwxr-xr-xconfig/hypr/scripts/Toggle-weather-waybar-units.sh2
-rwxr-xr-xconfig/hypr/scripts/ToggleWaybarTime.sh101
-rwxr-xr-xconfig/hypr/scripts/TouchPad.sh6
-rwxr-xr-xconfig/hypr/scripts/UserConfigsSwitcher.sh2
-rwxr-xr-xconfig/hypr/scripts/Volume.sh4
-rwxr-xr-xconfig/hypr/scripts/WallpaperAutoChange.sh (renamed from config/hypr/UserScripts/WallpaperAutoChange.sh)9
-rwxr-xr-xconfig/hypr/scripts/WallpaperDaemon.sh10
-rwxr-xr-xconfig/hypr/scripts/WallpaperEffects.sh140
-rwxr-xr-xconfig/hypr/scripts/WallpaperRandom.sh (renamed from config/hypr/UserScripts/WallpaperRandom.sh)5
-rwxr-xr-xconfig/hypr/scripts/WallpaperSelect.sh (renamed from config/hypr/UserScripts/WallpaperSelect.sh)40
-rwxr-xr-xconfig/hypr/scripts/WallustConfig.sh6
-rwxr-xr-xconfig/hypr/scripts/WallustSwww.sh58
-rwxr-xr-xconfig/hypr/scripts/WaybarLayout.sh8
-rwxr-xr-xconfig/hypr/scripts/WaybarScripts.sh6
-rwxr-xr-xconfig/hypr/scripts/WaybarStyles.sh8
-rwxr-xr-xconfig/hypr/scripts/ZshChangeTheme.sh (renamed from config/hypr/UserScripts/ZshChangeTheme.sh)4
-rwxr-xr-xconfig/hypr/scripts/fastfetch-wrapper.sh2
-rwxr-xr-xconfig/hypr/scripts/kooldots-add-ssh-agent.sh310
-rwxr-xr-xconfig/hypr/scripts/rofi-emacs-keybinds2
-rwxr-xr-xconfig/hypr/scripts/rofi-ssh-menu.sh2
-rwxr-xr-xconfig/hypr/scripts/sddm_wallpaper.sh599
-rwxr-xr-xconfig/hypr/scripts/set-default-thunar-terminal.sh2
-rwxr-xr-xconfig/hypr/scripts/update_WindowRules.sh2
-rw-r--r--config/hypr/v2.3.25 (renamed from config/hypr/v2.3.24)0
-rw-r--r--config/hypr/workspaces.conf5
-rw-r--r--config/rofi/config-layout.rasi63
-rw-r--r--config/rofi/config-starship.rasi63
-rw-r--r--config/rofi/themes/KooL_style-1.rasi2
-rw-r--r--config/rofi/themes/KooL_style-13-Vertical.rasi2
-rw-r--r--config/rofi/themes/KooL_style-3-FullScreen-v1.rasi2
-rw-r--r--config/rofi/themes/KooL_style-5.rasi2
-rw-r--r--config/rofi/themes/KooL_style-6.rasi2
-rw-r--r--config/rofi/themes/KooL_style-8.rasi2
-rw-r--r--config/starship/1-line-nix.toml79
-rw-r--r--config/starship/1-line-simple.toml173
-rw-r--r--config/starship/2-line-classic-garuda.toml146
-rw-r--r--config/starship/2-line-cool.toml65
-rw-r--r--config/starship/2-line-nixos.toml79
-rw-r--r--config/starship/chris-titus.toml129
-rw-r--r--config/starship/classic.toml250
-rw-r--r--config/starship/eric-dubois.toml191
-rw-r--r--config/starship/nobara.toml248
-rw-r--r--config/starship/purple-1line.toml79
-rw-r--r--config/starship/ranbow.toml181
-rw-r--r--config/starship/simple-prompt.toml187
-rw-r--r--config/starship/vill-minimalist.toml405
-rw-r--r--config/systemd/user/xdg-desktop-portal.service.d/override.conf4
-rw-r--r--config/waybar/ModulesWorkspaces1
-rw-r--r--config/waybar/style/0-VERTICAL-Catpuccin-Mocha.css267
-rw-r--r--config/waybar/style/0-VERTICAL-Golden-Noir.css251
-rw-r--r--config/waybar/style/0-VERTICAL-Oglo-Chicklets.css448
-rw-r--r--config/waybar/style/Black-&-White-Monochrome.css206
-rw-r--r--config/waybar/style/Catppuccin-Frappe.css162
-rw-r--r--config/waybar/style/Catppuccin-Mocha.css171
-rw-r--r--config/waybar/style/Colored-Chroma-Glow.css238
-rw-r--r--config/waybar/style/Colored-Translucent.css248
-rw-r--r--config/waybar/style/Colorful-Aurora-Blossom.css175
-rw-r--r--config/waybar/style/Colorful-Aurora.css177
-rw-r--r--config/waybar/style/Colorful-Oglo-Chicklets.css422
-rw-r--r--config/waybar/style/Colorful-Rainbow-Spectrum.css249
-rw-r--r--config/waybar/style/Colorful-stolen-style.css26
-rw-r--r--config/waybar/style/Dark-Golden-Eclipse.css144
-rw-r--r--config/waybar/style/Dark-Golden-Noir.css179
-rw-r--r--config/waybar/style/Dark-Half-Moon.css358
-rw-r--r--config/waybar/style/Dark-Latte-Wallust-combined.css218
-rw-r--r--config/waybar/style/Dark-Purpl.css208
-rw-r--r--config/waybar/style/Dark-Wallust-Obsidian-Edge.css162
-rw-r--r--config/waybar/style/Extra-Crimson.css186
-rw-r--r--config/waybar/style/Extra-EverForest.css44
-rw-r--r--config/waybar/style/Extra-Mauve.css191
-rw-r--r--config/waybar/style/Extra-Modern-Combined-Transparent.css189
-rw-r--r--config/waybar/style/Extra-Rose-Pine.css202
-rw-r--r--config/waybar/style/Extra-Simple-Pink.css180
-rw-r--r--config/waybar/style/Light-Monochrome-Contrast.css173
-rw-r--r--config/waybar/style/Light-Obsidian-Glow.css176
-rw-r--r--config/waybar/style/Rainbow-RGB-Bordered.css172
-rw-r--r--config/waybar/style/Retro-Simple-Style.css51
-rw-r--r--config/waybar/style/Transparent-Crystal-Clear.css196
-rw-r--r--config/waybar/style/VERTICAL-Catpuccin-Mocha.css27
-rw-r--r--config/waybar/style/Wallust-Bordered-Chroma-Fusion-Edge.css238
-rw-r--r--config/waybar/style/Wallust-Bordered-Chroma-Simple.css289
-rw-r--r--config/waybar/style/Wallust-Box-type.css9
-rw-r--r--config/waybar/style/Wallust-Chroma-Edge.css4
-rw-r--r--config/waybar/style/Wallust-Chroma-Fusion.css251
-rw-r--r--config/waybar/style/Wallust-Chroma-Tally-V2.css223
-rw-r--r--config/waybar/style/Wallust-Chroma-Tally.css214
-rw-r--r--config/waybar/style/Wallust-Colored.css191
-rw-r--r--config/waybar/style/Wallust-Simple.css172
-rw-r--r--config/waybar/style/Wallust-Transparent-Crystal-Clear.css206
-rw-r--r--config/yazi/keymap.toml2
-rw-r--r--config/yazi/package.toml4
-rwxr-xr-xcopy.sh132
-rwxr-xr-xscripts/fix-systemsettings-lua.sh4
-rw-r--r--scripts/lib_apps.sh4
-rw-r--r--scripts/lib_backup.sh4
-rw-r--r--scripts/lib_copy.sh87
-rw-r--r--scripts/lib_detect.sh66
-rw-r--r--scripts/lib_prompts.sh4
-rwxr-xr-xscripts/migrate-hypr-to-lua.sh82
210 files changed, 11234 insertions, 5241 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3be76db4..8f06eef0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,12 +2,142 @@
## v2.3.25
+## Fixed
+
+- Pane selection bindings fail in lua configuration
+- duplicate bindings for terminal
+- Created wrapper script for `thunar`
+ - Wasn't always starting in Debian lua config
+- keybindings in scrolling layout
+- `copy.sh` not copying all lua files
+- `WallpaperEffects.sh` in lua config it changed theme not just wallpaper
+- system keybinds in LUA config
+- handling of SUPER-Q close active in LUA config
+- keybinds handingling in LUA config
+- wallpaper effects it would not restore original wallpaper
+- wallpaper selector it was resetting waybar style sheet
+- Layout code refactor:
+ - Layouts are now per monitor/workspace
+ - When you set a layout mode, i.e. scrolling
+ - It will udpate the `~/.config/hypr/workspaces.conf` file
+ - Therefore it will be persistent on next login
+ - The current layout is shown in upper left corner
+ - This fixes issue with setting `workspaces.conf` manually
+ - When you selected a layout from menu the bindings didn't match
+ - Also previously the layout was globally applied
+ - Thanks to `@aki` for finding and reporting this issue
+- WIP: Fixing icon spacing issues in Waybar
+- Waybar would start then be restarted at login
+ - Changed start order, `ThemeMode.sh` runs before waybar start
+ - This restores users dark/light theme choice before waybar starts
+- LUA: `QT_STYLE_OVERRIDE` in LUA was hard coded to `kvantum`
+- LUA: Fixed `LuaAutoReload.sh` wasn't activating changes on save
+- LUA: `lua_user_overides.lua` wasn't loading `system_keybinds.lua`
+- `xdg-desktop-portal-hyprland` shows failed after CachyOS update
+ - A regression bug in CachyOS is causing the issue
+ - Screensharing doesn't work as a result
+ - I created a script to create and override until they release the fix
+ - In the `Hyprland-Dots` directory
+ - Often located in `~/Arch-Hyprland=/Hyprland-Dots`
+ - Run the script `config/hypr/scripts/Add-override-Hyprland-Portal.sh`
+ - I will also be uploading the script to the Discord server
+- NVIDIA Hybrid laptops have issues with cursors and GDM
+ - Added more defensive code with fallbacks
+- Dynamic wallpaper is now also per monitor
## Fixed:
- Disabled LayerRule for swaync
- Caused execessive blurring of background
- WindowRule for `qcalculate-gtk`
- Had same rule as `gnome-calculator` needed own sizing
+- Hybrid NVIDIA cursor handoff improvements
+ - Enables Xcursor fallbacks and optional setcursor refresh on hybrid laptops
+
+## Added:
+
+- Check for existing `KoolDots` installations
+ - Distros are now shipping hyprland with LUA workflow
+ - Previous `copy.sh` did not disable `~/.config/hypr/hyprland.lua`
+ - After KoolDots installation it would not start, resulting in black screen
+ - Now checks for this and backs up `.config/hypr` directory
+- Rofi menu to select starship prompt
+ - Requires that starship is already configured and running
+ - The menu is in the Quick Settings Menu `SUPER SHIFT E`
+- `config/rofi/config-layout.rasi` menu for Change Layout menu
+- `.config/hypr/scripts/kooldots-add-ssh-agent.sh`
+ - will create `systemd` user service to store ssh keys
+- Sample `starship` config files
+ - `copy.sh` now copies them to `.config/starship`
+ - Will be adding menu later
+- Migrated animation files from hyprlang to lua
+- Launch scripts for `$term` and `$files`
+ - Scripts check for presence or crashes
+ - Has several fallbacks for each
+ - kitty, ghostty, wezterm, alacritty, konsole, gnome-terminal
+ - Thunar,dolphin,nautilus, $term -e yazi
+- Added the additional LUA UserConfig files
+ - `user_settings.lua`
+ - `Window_rules.lua`
+ - `layer_rules.lua`
+ - `user_laptops.lua`
+ - `user_env.lua`
+ - `user_defaults.lua`
+ - Etc..
+- Migration to LUA script will migrate UserConfigs to LUA format
+- Keybind `SUPER + ALT + F` to maximize window in `scrolling` layout
+- Keybind `SUPER+R` to toggle column widths in `scrolling` layout
+- Sample LUA workspace rules for setting layout per monitor/workspace
+ ```lua
+ hl.workspace_rule({ workspace = "1", monitor = "HDMI-A-1", layout = "scrolling" })
+ hl.workspace_rule({ workspace = "1", monitor = "HDMI-A-1", layout = "dwindle" })
+ hl.workspace_rule({ workspace = "1", monitor = "HDMI-A-1", layout = "master" })
+ hl.workspace_rule({ workspace = "1", monitor = "HDMI-A-1", layout = "monocle" })
+ ```
+- Sample `hyprlang` (.conf) versions also
+ ```ini
+ workspace = 1, monitor:HDMI-A-1, layout:scrolling
+ workspace = 1, monitor:HDMI-A-1, layout:dwindle
+ workspace = 1, monitor:HDMI-A-1, layout:master
+ workspace = 1, monitor:HDMI-A-1, layout:monocle
+ ```
+- Menu item in Quick settings, (SUPERSHIFT + E) to set Hyprlock background
+- Dark / Light theme toggle is now persistant
+ - At startup it checks and restores selection
+ - `config/hypr/scripts/DarkLight.sh`
+ - added persistent state file:` ${XDG_STATE_HOME:-$HOME/.local/state}/hypr/theme_mode`
+ - keeps legacy sync with` ~/.cache/.theme_mode` for compatibility
+ - defaults to Dark when no saved state exists
+ - added flags:
+ - `--apply-current`
+ - `--mode Dark|Light`
+ - `--no-notify`
+ - `--preserve-wallpaper`
+ - kept normal toggle behavior for manual use
+ - `config/hypr/scripts/ApplyThemeMode.sh`
+ - startup helper that runs:
+ - `DarkLight.sh --apply-current --preserve-wallpaper --no-notify`
+ - `config/hypr/configs/Startup_Apps.conf`
+ - added startup call to re-apply saved mode:
+ - `exec-once = sh -c 'sleep 4; sh $HOME/.config/hypr/scripts/ApplyThemeMode.sh'`
+ - `config/hypr/lua/startup.lua`
+ - added equivalent startup command for Lua startup flow
+
+ ## Updated:
+ - Moved `UserScripts/Wallpaper*.sh` and `ZshChangeTheme.sh` to `$scriptsdir`
+ - They are system scripts not intended for user modification
+ - Archived `UserScripts/Tak0-Autodispatch`
+ - Not supported and no longer needed
+ - Reset binding for fullscreen and maximize
+ - `SUPER + F` is maximize
+ - `SHIFT + SHIFT + F` is fullscreen
+ - Now works in all layouts
+ - Enabled 12 min timer on turning off monitor
+ - For a very long that's been disabled by default
+ - The suspend option is still disabled
+ - Changed `$HOME` to `${XDG_CONFIG_HOME:$HOME}`
+ - Compliant with standard especially with `UWSM`
+
+---
- `Hyprlock.conf` and `Hyprlock-1080.conf` were removed, re-added
## v2.3.24
@@ -128,6 +258,9 @@
## Added:
+- System menu item to toggle 12/24hr waybar clock
+ - Under Edit System Settings `SUPER + SHIFT + E`
+ - Search for `waybar`
- `yazi` config to `copy.sh`
- Waybar widget for layouts
- Shows current layout
diff --git a/README.md b/README.md
index 8e7ba281..8c52af71 100644
--- a/README.md
+++ b/README.md
@@ -145,6 +145,8 @@ chmod +x copy.sh
- 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).
+- Hybrid Intel/NVIDIA or AMD/NVIDIA laptops may need cursor handoff fixes
+ - The installer now enables XCURSOR fallbacks and a startup cursor refresh when hybrid GPUs are detected.
- If you have already set your own keybinds, monitors, etc.... Just copy over from backup created before log-out or reboot. (recommended)
#### 🙋 QUESTIONS ?
diff --git a/config/hypr/UserScripts/Tak0-Autodispatch.sh b/archive/Tak0-Autodispatch.sh
index b0607e13..b0607e13 100755
--- a/config/hypr/UserScripts/Tak0-Autodispatch.sh
+++ b/archive/Tak0-Autodispatch.sh
diff --git a/archive/upgrade.sh b/archive/upgrade.sh
index f8442ded..ebace35a 100755
--- a/archive/upgrade.sh
+++ b/archive/upgrade.sh
@@ -81,25 +81,25 @@ LOG="Upgrade-Logs/upgrade-$(date +%d-%H%M%S)_upgrade_dotfiles.log"
# source and target versions
source_dir="config"
-target_dir="$HOME/.config"
+target_dir="${XDG_CONFIG_HOME:-$HOME/.config}"
# Specify the update source directories, their corresponding target directories, and their exclusions
declare -A directories=(
- ["config/hypr/"]="$HOME/.config/hypr/"
- ["config/kitty/"]="$HOME/.config/kitty/"
- ["config/Kvantum/"]="$HOME/.config/Kvantum/"
- ["config/nvim/"]="$HOME/.config/nvim/"
- ["config/qt5ct/"]="$HOME/.config/qt5ct"
- ["config/qt6ct/"]="$HOME/.config/qt6ct/"
- ["config/rofi/"]="$HOME/.config/rofi/"
- ["config/swaync/"]="$HOME/.config/swaync/"
- ["config/waybar/"]="$HOME/.config/waybar/"
- ["config/cava/"]="$HOME/.config/cava/"
- ["config/ags/"]="$HOME/.config/ags/"
- ["config/quickshell/"]="$HOME/.config/quickshell/"
- ["config/fastfetch/"]="$HOME/.config/fastfetch/"
- ["config/wallust/"]="$HOME/.config/wallust/"
- ["config/wlogout/"]="$HOME/.config/wlogout/"
+ ["config/hypr/"]="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/"
+ ["config/kitty/"]="${XDG_CONFIG_HOME:-$HOME/.config}/kitty/"
+ ["config/Kvantum/"]="${XDG_CONFIG_HOME:-$HOME/.config}/Kvantum/"
+ ["config/nvim/"]="${XDG_CONFIG_HOME:-$HOME/.config}/nvim/"
+ ["config/qt5ct/"]="${XDG_CONFIG_HOME:-$HOME/.config}/qt5ct"
+ ["config/qt6ct/"]="${XDG_CONFIG_HOME:-$HOME/.config}/qt6ct/"
+ ["config/rofi/"]="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/"
+ ["config/swaync/"]="${XDG_CONFIG_HOME:-$HOME/.config}/swaync/"
+ ["config/waybar/"]="${XDG_CONFIG_HOME:-$HOME/.config}/waybar/"
+ ["config/cava/"]="${XDG_CONFIG_HOME:-$HOME/.config}/cava/"
+ ["config/ags/"]="${XDG_CONFIG_HOME:-$HOME/.config}/ags/"
+ ["config/quickshell/"]="${XDG_CONFIG_HOME:-$HOME/.config}/quickshell/"
+ ["config/fastfetch/"]="${XDG_CONFIG_HOME:-$HOME/.config}/fastfetch/"
+ ["config/wallust/"]="${XDG_CONFIG_HOME:-$HOME/.config}/wallust/"
+ ["config/wlogout/"]="${XDG_CONFIG_HOME:-$HOME/.config}/wlogout/"
# Add more directories to compare as needed
)
@@ -128,7 +128,7 @@ create_backup() {
local target_dir="$1"
local backup_suffix="-b4-upgrade"
local target_base=$(basename "$target_dir")
- local backup_dir="$HOME/.config/${target_base}${backup_suffix}"
+ local backup_dir="${XDG_CONFIG_HOME:-$HOME/.config}/${target_base}${backup_suffix}"
if [ -d "$backup_dir" ]; then
echo "$NOTE Updating existing backup of the $target_dir..."
@@ -144,7 +144,7 @@ create_backup() {
# Check if the version file exists in target directory, if not exit
target_version_file=$(find "$target_dir/hypr" -name 'v*' | sort -V | tail -n 1)
if [ -z "$target_version_file" ]; then
- echo "$ERROR Version number not found in ~/.config/hypr/" 2>&1 | tee -a "$LOG"
+ echo "$ERROR Version number not found in ${XDG_CONFIG_HOME:-$HOME/.config}/hypr/" 2>&1 | tee -a "$LOG"
echo "$ERROR Upgrade your dots first by running ./copy.sh" 2>&1 | tee -a "$LOG"
exit 1
fi
@@ -200,10 +200,10 @@ if version_gt "$latest_version" "$stored_version"; then
echo "$NOTE Files or directories updated successfully to version $latest_version" 2>&1 | tee -a "$LOG"
# Set some files as executable
- chmod +x "$HOME/.config/hypr/scripts/"* 2>&1 | tee -a "$LOG"
- chmod +x "$HOME/.config/hypr/UserScripts/"* 2>&1 | tee -a "$LOG"
+ chmod +x "${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts/"* 2>&1 | tee -a "$LOG"
+ chmod +x "${XDG_CONFIG_HOME:-$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"
+ chmod +x "${XDG_CONFIG_HOME:-$HOME/.config}/hypr/initial-boot.sh" 2>&1 | tee -a "$LOG"
else
echo "$MAGENTA Upgrade declined. No files or directories changed" 2>&1 | tee -a "$LOG"
@@ -215,7 +215,7 @@ fi
printf "\n%.0s" {1..3}
echo "$(tput bold)$(tput setaf 3)ATTENTION!!!! VERY IMPORTANT NOTICE!!!! $(tput sgr0)"
echo "$(tput bold)$(tput setaf 7)If you updated waybar directory, and you have your own waybar layout and styles $(tput sgr0)"
-echo "$(tput bold)$(tput setaf 7)Copy those files from the created backup ~/.config/waybar-b4-upgrade $(tput sgr0)"
+echo "$(tput bold)$(tput setaf 7)Copy those files from the created backup ${XDG_CONFIG_HOME:-$HOME/.config}/waybar-b4-upgrade $(tput sgr0)"
echo "$(tput bold)$(tput setaf 7)Make sure to set your waybar and style before logout or reboot $(tput sgr0)"
echo "$(tput bold)$(tput setaf 7)SUPER CTRL B for Waybar Styles and SUPER ALT B for Waybar Layout $(tput sgr0)"
printf "\n%.0s" {1..3}
diff --git a/config/hypr/UserConfigs/user_animations.lua b/config/hypr/UserConfigs/user_animations.lua
new file mode 100644
index 00000000..5c5bb484
--- /dev/null
+++ b/config/hypr/UserConfigs/user_animations.lua
@@ -0,0 +1,17 @@
+-- ==================================================
+-- KoolDots (2026)
+-- Project URL: https://github.com/LinuxBeginnings
+-- License: GNU GPLv3
+-- SPDX-License-Identifier: GPL-3.0-or-later
+-- ==================================================
+-- User animation overrides template.
+-- Use this to override defaults from lua/animations.lua.
+
+-- Example:
+-- hl.config({
+-- animations = {
+-- enabled = true,
+-- },
+-- })
+--
+-- hl.animation({ leaf = "windows", enabled = true, speed = 5, bezier = "wind", style = "slide" })
diff --git a/config/hypr/UserConfigs/user_decorations.lua b/config/hypr/UserConfigs/user_decorations.lua
index 6b34666e..ba425d92 100644
--- a/config/hypr/UserConfigs/user_decorations.lua
+++ b/config/hypr/UserConfigs/user_decorations.lua
@@ -4,103 +4,61 @@
-- License: GNU GPLv3
-- SPDX-License-Identifier: GPL-3.0-or-later
-- ==================================================
+-- User decorations overrides template.
+-- Keep this repo copy as comments only; put active custom values in:
+-- ~/.config/hypr/UserConfigs/user_decorations.lua
+--
+-- Uncomment and edit examples below if you want defaults in the repo template.
--- User decorations overrides (auto-generated).
--- This file is intentionally split from other user overrides.
--- Add only user-specific Lua overrides here.
--- Example:
--- hl.config({ general = { gaps_in = 4, gaps_out = 8 } })
+-- Example general overrides:
+-- hl.config({
+-- general = {
+-- border_size = 1,
+-- gaps_in = 4,
+-- gaps_out = 6,
+-- },
+-- })
--- Source reference from UserDecorations.conf (hyprlang):
--- source = $HOME/.config/hypr/wallust/wallust-hyprland.conf
--- general {
--- border_size = 2
--- gaps_in = 2
--- gaps_out = 4
--- col.active_border = $color12
--- col.inactive_border = $color10
--- }
--- decoration {
--- rounding = 10
--- active_opacity = 1.0
--- inactive_opacity = 0.9
--- fullscreen_opacity = 1.0
--- dim_inactive = true
--- dim_strength = 0.1
--- dim_special = 0.8
--- shadow {
--- enabled = true
--- range = 3
--- render_power = 1
--- color = $color12
--- color_inactive = $color10
--- }
--- blur {
--- enabled = true
--- size = 6
--- passes = 3
--- new_optimizations = true
--- xray = true
--- ignore_opacity = true
--- special = true
--- popups = true
--- }
--- }
--- group {
--- col.border_active = $color15
--- groupbar {
--- col.active = $color0
--- }
--- }
+-- Example decoration overrides:
+-- hl.config({
+-- decoration = {
+-- rounding = 10,
+-- active_opacity = 1.0,
+-- inactive_opacity = 0.95,
+-- fullscreen_opacity = 1.0,
+-- dim_inactive = true,
+-- dim_strength = 0.1,
+-- dim_special = 0.8,
+-- shadow = {
+-- enabled = true,
+-- range = 3,
+-- render_power = 1,
+-- color = "rgba(8db4ffff)",
+-- color_inactive = "rgba(5f6578ff)",
+-- },
+-- blur = {
+-- enabled = true,
+-- size = 6,
+-- passes = 3,
+-- new_optimizations = true,
+-- xray = true,
+-- ignore_opacity = true,
+-- special = true,
+-- popups = true,
+-- },
+-- },
+-- })
-local function read_wallust_colors(path)
- local colors = {}
- local handle = io.open(path, "r")
- if not handle then
- return colors
- end
- for line in handle:lines() do
- local key, hex = line:match("^%$([%w_]+)%s*=%s*rgb%(([0-9A-Fa-f]+)%)")
- if key and hex then
- colors[key] = "rgb(" .. hex .. ")"
- end
- end
- handle:close()
- return colors
-end
-
-local wallust_path = (os.getenv("HOME") or "") .. "/.config/hypr/wallust/wallust-hyprland.conf"
-local colors = read_wallust_colors(wallust_path)
-
-if next(colors) then
- hl.config({
- general = {
- col = {
- active_border = colors.color12 or "rgba(8db4ffff)",
- inactive_border = colors.color10 or "rgba(5f6578ff)",
- },
- },
- })
-
- hl.config({
- decoration = {
- shadow = {
- color = colors.color12 or "rgba(8db4ffff)",
- color_inactive = colors.color10 or "rgba(5f6578ff)",
- },
- },
- })
-
- hl.config({
- group = {
- col = {
- border_active = colors.color15 or "rgba(ffffffff)",
- },
- groupbar = {
- col = {
- active = colors.color0 or "rgba(0f111aff)",
- },
- },
- },
- })
-end
+-- Example group styling:
+-- hl.config({
+-- group = {
+-- col = {
+-- border_active = "rgba(ffffffff)",
+-- },
+-- groupbar = {
+-- col = {
+-- active = "rgba(0f111aff)",
+-- },
+-- },
+-- },
+-- })
diff --git a/config/hypr/UserConfigs/user_defaults.lua b/config/hypr/UserConfigs/user_defaults.lua
new file mode 100644
index 00000000..dd889134
--- /dev/null
+++ b/config/hypr/UserConfigs/user_defaults.lua
@@ -0,0 +1,17 @@
+-- ==================================================
+-- KoolDots (2026)
+-- Project URL: https://github.com/LinuxBeginnings
+-- License: GNU GPLv3
+-- SPDX-License-Identifier: GPL-3.0-or-later
+-- ==================================================
+-- User defaults overrides template.
+-- This file is sourced by lua/user_defaults.lua.
+
+KOOLDOTS_DEFAULTS = KOOLDOTS_DEFAULTS or {}
+
+-- Examples:
+-- KOOLDOTS_DEFAULTS.edit = "nvim"
+-- KOOLDOTS_DEFAULTS.visual = "nvim"
+-- KOOLDOTS_DEFAULTS.term = "kitty"
+-- KOOLDOTS_DEFAULTS.files = "thunar"
+-- KOOLDOTS_DEFAULTS.search_engine = "https://duckduckgo.com/?q={}"
diff --git a/config/hypr/UserConfigs/user_env.lua b/config/hypr/UserConfigs/user_env.lua
new file mode 100644
index 00000000..12d134bb
--- /dev/null
+++ b/config/hypr/UserConfigs/user_env.lua
@@ -0,0 +1,13 @@
+-- ==================================================
+-- KoolDots (2026)
+-- Project URL: https://github.com/LinuxBeginnings
+-- License: GNU GPLv3
+-- SPDX-License-Identifier: GPL-3.0-or-later
+-- ==================================================
+-- User environment overrides template.
+-- Keep this file for personal env additions that should survive updates.
+
+-- Examples:
+-- hl.env("QT_QPA_PLATFORMTHEME", "qt6ct")
+-- hl.env("GDK_SCALE", "1")
+-- hl.env("QT_SCALE_FACTOR", "1")
diff --git a/config/hypr/UserConfigs/user_laptops.lua b/config/hypr/UserConfigs/user_laptops.lua
new file mode 100644
index 00000000..ac3c7f8c
--- /dev/null
+++ b/config/hypr/UserConfigs/user_laptops.lua
@@ -0,0 +1,12 @@
+-- ==================================================
+-- KoolDots (2026)
+-- Project URL: https://github.com/LinuxBeginnings
+-- License: GNU GPLv3
+-- SPDX-License-Identifier: GPL-3.0-or-later
+-- ==================================================
+-- User laptop overrides template.
+-- Add lid/display behavior here if you need laptop-specific logic.
+
+-- Examples:
+-- hl.monitor({ output = "eDP-1", mode = "preferred", position = "auto", scale = "1" })
+-- hl.monitor({ output = "eDP-1", disabled = true })
diff --git a/config/hypr/UserConfigs/user_layer_rules.lua b/config/hypr/UserConfigs/user_layer_rules.lua
new file mode 100644
index 00000000..ab1cbeef
--- /dev/null
+++ b/config/hypr/UserConfigs/user_layer_rules.lua
@@ -0,0 +1,50 @@
+-- ==================================================
+-- KoolDots (2026)
+-- Project URL: https://github.com/LinuxBeginnings
+-- License: GNU GPLv3
+-- SPDX-License-Identifier: GPL-3.0-or-later
+-- ==================================================
+-- User layer-rule overrides template.
+
+local user_layer_rules_helper = nil
+do
+ local source = (debug.getinfo(1, "S") or {}).source or ""
+ local source_path = source:match("^@(.+)$")
+ local source_dir = source_path and source_path:match("^(.*)/[^/]+$") or nil
+ local home = os.getenv("HOME") or ""
+ local candidate_paths = {
+ source_dir and (source_dir .. "/../lua/user_layer_rules_helper.lua") or nil,
+ home ~= "" and (home .. "/.config/hypr/lua/user_layer_rules_helper.lua") or nil,
+ home ~= "" and (home .. "/.config/hypr/user_layer_rules_helper.lua") or nil,
+ }
+
+ local tried_paths = {}
+ for _, helper_path in ipairs(candidate_paths) do
+ if helper_path then
+ table.insert(tried_paths, helper_path)
+ local f = io.open(helper_path, "r")
+ if f then
+ f:close()
+ local loaded_ok, loaded_helpers = pcall(dofile, helper_path)
+ if loaded_ok and type(loaded_helpers) == "table" and loaded_helpers.apply_layer_rule then
+ user_layer_rules_helper = loaded_helpers
+ break
+ end
+ end
+ end
+ end
+
+ if not user_layer_rules_helper then
+ error("Failed to load user_layer_rules_helper.lua from: " .. table.concat(tried_paths, ", "))
+ end
+end
+
+local apply_layer_rule = user_layer_rules_helper.apply_layer_rule
+
+-- Example:
+-- apply_layer_rule({
+-- name = "user-rofi-blur",
+-- match = { namespace = "rofi" },
+-- blur = true,
+-- ignore_alpha = 0,
+-- })
diff --git a/config/hypr/UserConfigs/user_settings.lua b/config/hypr/UserConfigs/user_settings.lua
new file mode 100644
index 00000000..ea31c0eb
--- /dev/null
+++ b/config/hypr/UserConfigs/user_settings.lua
@@ -0,0 +1,27 @@
+-- ==================================================
+-- KoolDots (2026)
+-- Project URL: https://github.com/LinuxBeginnings
+-- License: GNU GPLv3
+-- SPDX-License-Identifier: GPL-3.0-or-later
+-- ==================================================
+-- User settings overrides template.
+-- Add your personal hl.config(...) values here.
+
+-- Example:
+-- hl.config({
+-- general = {
+-- gaps_in = 4,
+-- gaps_out = 8,
+-- border_size = 1,
+-- },
+-- })
+--
+
+-- Disable cursor being centered when swap workspaces
+--
+-- hl.config({
+-- cursor = {
+-- no_warps = true,
+-- warp_on_change_workspace = 0,
+-- },
+-- })
diff --git a/config/hypr/UserConfigs/user_startup.lua b/config/hypr/UserConfigs/user_startup.lua
new file mode 100644
index 00000000..efe51c61
--- /dev/null
+++ b/config/hypr/UserConfigs/user_startup.lua
@@ -0,0 +1,47 @@
+-- ==================================================
+-- KoolDots (2026)
+-- Project URL: https://github.com/LinuxBeginnings
+-- License: GNU GPLv3
+-- SPDX-License-Identifier: GPL-3.0-or-later
+-- ==================================================
+-- User startup overrides template.
+-- Add personal exec-once commands here.
+
+local user_startup_helper = nil
+do
+ local source = (debug.getinfo(1, "S") or {}).source or ""
+ local source_path = source:match("^@(.+)$")
+ local source_dir = source_path and source_path:match("^(.*)/[^/]+$") or nil
+ local home = os.getenv("HOME") or ""
+ local candidate_paths = {
+ source_dir and (source_dir .. "/../lua/user_startup_helper.lua") or nil,
+ home ~= "" and (home .. "/.config/hypr/lua/user_startup_helper.lua") or nil,
+ home ~= "" and (home .. "/.config/hypr/user_startup_helper.lua") or nil,
+ }
+
+ local tried_paths = {}
+ for _, helper_path in ipairs(candidate_paths) do
+ if helper_path then
+ table.insert(tried_paths, helper_path)
+ local f = io.open(helper_path, "r")
+ if f then
+ f:close()
+ local loaded_ok, loaded_helpers = pcall(dofile, helper_path)
+ if loaded_ok and type(loaded_helpers) == "table" and loaded_helpers.exec_once then
+ user_startup_helper = loaded_helpers
+ break
+ end
+ end
+ end
+ end
+
+ if not user_startup_helper then
+ error("Failed to load user_startup_helper.lua from: " .. table.concat(tried_paths, ", "))
+ end
+end
+
+local exec_once = user_startup_helper.exec_once
+
+-- Examples:
+-- exec_once("blueman-applet")
+-- exec_once("$HOME/.config/hypr/UserScripts/RainbowBorders.sh")
diff --git a/config/hypr/UserConfigs/user_window_rules.lua b/config/hypr/UserConfigs/user_window_rules.lua
new file mode 100644
index 00000000..5df5dc7c
--- /dev/null
+++ b/config/hypr/UserConfigs/user_window_rules.lua
@@ -0,0 +1,50 @@
+-- ==================================================
+-- KoolDots (2026)
+-- Project URL: https://github.com/LinuxBeginnings
+-- License: GNU GPLv3
+-- SPDX-License-Identifier: GPL-3.0-or-later
+-- ==================================================
+-- User window-rule overrides template.
+
+local user_window_rules_helper = nil
+do
+ local source = (debug.getinfo(1, "S") or {}).source or ""
+ local source_path = source:match("^@(.+)$")
+ local source_dir = source_path and source_path:match("^(.*)/[^/]+$") or nil
+ local home = os.getenv("HOME") or ""
+ local candidate_paths = {
+ source_dir and (source_dir .. "/../lua/user_window_rules_helper.lua") or nil,
+ home ~= "" and (home .. "/.config/hypr/lua/user_window_rules_helper.lua") or nil,
+ home ~= "" and (home .. "/.config/hypr/user_window_rules_helper.lua") or nil,
+ }
+
+ local tried_paths = {}
+ for _, helper_path in ipairs(candidate_paths) do
+ if helper_path then
+ table.insert(tried_paths, helper_path)
+ local f = io.open(helper_path, "r")
+ if f then
+ f:close()
+ local loaded_ok, loaded_helpers = pcall(dofile, helper_path)
+ if loaded_ok and type(loaded_helpers) == "table" and loaded_helpers.apply_window_rule then
+ user_window_rules_helper = loaded_helpers
+ break
+ end
+ end
+ end
+ end
+
+ if not user_window_rules_helper then
+ error("Failed to load user_window_rules_helper.lua from: " .. table.concat(tried_paths, ", "))
+ end
+end
+
+local apply_window_rule = user_window_rules_helper.apply_window_rule
+
+-- Example:
+-- apply_window_rule({
+-- name = "user-float-pavucontrol",
+-- match = { class = "pavucontrol" },
+-- float = true,
+-- center = true,
+-- })
diff --git a/config/hypr/UserScripts/00-Readme b/config/hypr/UserScripts/00-Readme
index 259fc9d9..2b72982e 100755
--- a/config/hypr/UserScripts/00-Readme
+++ b/config/hypr/UserScripts/00-Readme
@@ -6,5 +6,5 @@
# ==================================================
# 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.
-# Make sure to update as well the keybinds in ~/.config/hypr/UserConfigs directory if any script is linked to it \ No newline at end of file
+# If you need to edit a script from main script (${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts), copy it on this directory, and edit.
+# Make sure to update as well the keybinds in ${XDG_CONFIG_HOME:-$HOME/.config}/hypr/UserConfigs directory if any script is linked to it \ No newline at end of file
diff --git a/config/hypr/UserScripts/RainbowBorders-low-cpu.sh b/config/hypr/UserScripts/RainbowBorders-low-cpu.sh
index a8de4c89..af6e378a 100755
--- a/config/hypr/UserScripts/RainbowBorders-low-cpu.sh
+++ b/config/hypr/UserScripts/RainbowBorders-low-cpu.sh
@@ -38,7 +38,7 @@
# RB_ONCE 1 to apply once and exit (no animation; default: 0)
#
# Example (slower animation):
-# RB_INTERVAL=1.5 RB_STEP_DEG=12 ~/.config/hypr/UserScripts/RainbowBorders-low-cpu.sh &
+# RB_INTERVAL=1.5 RB_STEP_DEG=12 ${XDG_CONFIG_HOME:-$HOME/.config}/hypr/UserScripts/RainbowBorders-low-cpu.sh &
#
# Notes
# - This focuses on the active border only. Animating inactive borders too
diff --git a/config/hypr/UserScripts/RainbowBorders.bak.sh b/config/hypr/UserScripts/RainbowBorders.bak.sh
index 87f13c34..7a9c7171 100755
--- a/config/hypr/UserScripts/RainbowBorders.bak.sh
+++ b/config/hypr/UserScripts/RainbowBorders.bak.sh
@@ -10,7 +10,7 @@
# Possible values: "wallust_random", "rainbow", "gradient_flow"
EFFECT_TYPE="gradient_flow"
-WALLUST_COLORS_SOURCE="$HOME/.config/hypr/wallust/wallust-hyprland.conf"
+WALLUST_COLORS_SOURCE="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/wallust/wallust-hyprland.conf"
WALLUST_COLORS=()
diff --git a/config/hypr/UserScripts/RofiBeats.sh b/config/hypr/UserScripts/RofiBeats.sh
index 057d53b9..b2371859 100755
--- a/config/hypr/UserScripts/RofiBeats.sh
+++ b/config/hypr/UserScripts/RofiBeats.sh
@@ -8,10 +8,10 @@
# RofiBeats - unified, dynamic UI (add, remove, manage, play)
mDIR="$HOME/Music/"
-iDIR="$HOME/.config/swaync/icons"
-rofi_theme="$HOME/.config/rofi/config-rofi-Beats.rasi"
-rofi_theme_menu="$HOME/.config/rofi/config-rofi-Beats-menu.rasi"
-music_list="$HOME/.config/rofi/online_music.list"
+iDIR="${XDG_CONFIG_HOME:-$HOME/.config}/swaync/icons"
+rofi_theme="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/config-rofi-Beats.rasi"
+rofi_theme_menu="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/config-rofi-Beats-menu.rasi"
+music_list="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/online_music.list"
mkdir -p "$(dirname "$music_list")"
[[ -f "$music_list" ]] || touch "$music_list"
diff --git a/config/hypr/UserScripts/RofiCalc.sh b/config/hypr/UserScripts/RofiCalc.sh
index 40a7ca3f..ccb18903 100755
--- a/config/hypr/UserScripts/RofiCalc.sh
+++ b/config/hypr/UserScripts/RofiCalc.sh
@@ -8,7 +8,7 @@
# /* Calculator (using qalculate) and rofi */
# /* Submitted by: https://github.com/JosephArmas */
-rofi_theme="$HOME/.config/rofi/config-calc.rasi"
+rofi_theme="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/config-calc.rasi"
# Kill Rofi if already running before execution
if pgrep -x "rofi" >/dev/null; then
diff --git a/config/hypr/UserScripts/WallpaperEffects.sh b/config/hypr/UserScripts/WallpaperEffects.sh
deleted file mode 100755
index 297c77fa..00000000
--- a/config/hypr/UserScripts/WallpaperEffects.sh
+++ /dev/null
@@ -1,124 +0,0 @@
-#!/usr/bin/env bash
-# ==================================================
-# 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
-terminal=kitty
-wallpaper_current="$HOME/.config/hypr/wallpaper_effects/.wallpaper_current"
-wallpaper_output="$HOME/.config/hypr/wallpaper_effects/.wallpaper_modified"
-SCRIPTSDIR="$HOME/.config/hypr/scripts"
-# shellcheck source=/dev/null
-. "$SCRIPTSDIR/WallpaperCmd.sh"
-focused_monitor=$(hyprctl monitors -j | jq -r '.[] | select(.focused) | .name')
-rofi_theme="$HOME/.config/rofi/config-wallpaper-effect.rasi"
-
-# Directory for swaync
-iDIR="$HOME/.config/swaync/images"
-iDIRi="$HOME/.config/swaync/icons"
-
-# swww/awww transition config
-FPS=60
-TYPE="wipe"
-DURATION=2
-BEZIER=".43,1.19,1,.4"
-if [[ "$WWW_CMD" == "swww" || "$WWW_CMD" == "awww" ]]; then
- SWWW_PARAMS=(--transition-fps "$FPS" --transition-type "$TYPE" --transition-duration "$DURATION" --transition-bezier "$BEZIER")
-else
- SWWW_PARAMS=()
-fi
-
-# Define ImageMagick effects
-declare -A effects=(
- ["No Effects"]="no-effects"
- ["Black & White"]="magick $wallpaper_current -colorspace gray -sigmoidal-contrast 10,40% $wallpaper_output"
- ["Blurred"]="magick $wallpaper_current -blur 0x10 $wallpaper_output"
- ["Charcoal"]="magick $wallpaper_current -charcoal 0x5 $wallpaper_output"
- ["Edge Detect"]="magick $wallpaper_current -edge 1 $wallpaper_output"
- ["Emboss"]="magick $wallpaper_current -emboss 0x5 $wallpaper_output"
- ["Frame Raised"]="magick $wallpaper_current +raise 150 $wallpaper_output"
- ["Frame Sunk"]="magick $wallpaper_current -raise 150 $wallpaper_output"
- ["Negate"]="magick $wallpaper_current -negate $wallpaper_output"
- ["Oil Paint"]="magick $wallpaper_current -paint 4 $wallpaper_output"
- ["Posterize"]="magick $wallpaper_current -posterize 4 $wallpaper_output"
- ["Polaroid"]="magick $wallpaper_current -polaroid 0 $wallpaper_output"
- ["Sepia Tone"]="magick $wallpaper_current -sepia-tone 65% $wallpaper_output"
- ["Solarize"]="magick $wallpaper_current -solarize 80% $wallpaper_output"
- ["Sharpen"]="magick $wallpaper_current -sharpen 0x5 $wallpaper_output"
- ["Vignette"]="magick $wallpaper_current -vignette 0x3 $wallpaper_output"
- ["Vignette-black"]="magick $wallpaper_current -background black -vignette 0x3 $wallpaper_output"
- ["Zoomed"]="magick $wallpaper_current -gravity Center -extent 1:1 $wallpaper_output"
-)
-
-# Function to apply no effects
-no-effects() {
- local resize_mode
- resize_mode="$(wallpaper_resize_mode "$wallpaper_current" "$focused_monitor")"
- "$WWW_CMD" img -o "$focused_monitor" --resize "$resize_mode" "$wallpaper_current" "${SWWW_PARAMS[@]}" || return 1
- if ! "$SCRIPTSDIR/WallustSwww.sh" "$wallpaper_current"; then
- notify-send -u critical -i "$iDIR/error.png" "Wallust failed" "Wallpaper theme not refreshed"
- return 1
- fi
- # Refresh rofi, waybar, wallust palettes
- sleep 0.5
- "$SCRIPTSDIR/Refresh.sh"
-
- notify-send -u low -i "$iDIR/ja.png" "No wallpaper" "effects applied"
- # copying wallpaper for rofi menu
- cp "$wallpaper_current" "$wallpaper_output"
-}
-
-# Function to run rofi menu
-main() {
- # Populate rofi menu options
- options=("No Effects")
- for effect in "${!effects[@]}"; do
- [[ "$effect" != "No Effects" ]] && options+=("$effect")
- done
-
- choice=$(printf "%s\n" "${options[@]}" | LC_COLLATE=C sort | rofi -dmenu -i -config $rofi_theme)
-
- # Process user choice
- if [[ -n "$choice" ]]; then
- if [[ "$choice" == "No Effects" ]]; then
- no-effects
- elif [[ "${effects[$choice]+exists}" ]]; then
- # Apply selected effect
- notify-send -u normal -i "$iDIR/ja.png" "Applying:" "$choice effects"
- eval "${effects[$choice]}"
-
- # intial kill process
- for pid in swaybg mpvpaper; do
- killall -SIGUSR1 "$pid"
- done
-
- sleep 1
- local resize_mode
- resize_mode="$(wallpaper_resize_mode "$wallpaper_output" "$focused_monitor")"
- "$WWW_CMD" img -o "$focused_monitor" --resize "$resize_mode" "$wallpaper_output" "${SWWW_PARAMS[@]}"
- sleep 0.5
- if ! "$SCRIPTSDIR/WallustSwww.sh" "$wallpaper_output"; then
- notify-send -u critical -i "$iDIR/error.png" "Wallust failed" "Wallpaper theme not refreshed"
- return 1
- fi
- # Refresh rofi, waybar, wallust palettes
- "${SCRIPTSDIR}/Refresh.sh"
- notify-send -u low -i "$iDIR/ja.png" "$choice" "effects applied"
- else
- echo "Effect '$choice' not recognized."
- fi
- fi
-}
-
-# Check if rofi is already running and kill it
-if pidof rofi > /dev/null; then
- pkill rofi
-fi
-
-main
-
-sleep 1
diff --git a/config/hypr/UserScripts/Weather.py b/config/hypr/UserScripts/Weather.py
index 6905e0e1..cf50076f 100755
--- a/config/hypr/UserScripts/Weather.py
+++ b/config/hypr/UserScripts/Weather.py
@@ -49,7 +49,7 @@ class WeatherData:
# Examples (zsh):
# # One-off run
# # WEATHER_UNITS can be "metric" or "imperial"
-# WEATHER_UNITS=imperial WEATHER_PLACE="Concord, NH" python3 ~/.config/hypr/UserScripts/Weather.py
+# WEATHER_UNITS=imperial WEATHER_PLACE="Concord, NH" python3 ${XDG_CONFIG_HOME:-$HOME/.config}/hypr/UserScripts/Weather.py
#
# # Persist in current shell session
# export WEATHER_UNITS=imperial
diff --git a/config/hypr/animations/00-default.lua b/config/hypr/animations/00-default.lua
new file mode 100644
index 00000000..ee629c96
--- /dev/null
+++ b/config/hypr/animations/00-default.lua
@@ -0,0 +1,26 @@
+-- Auto-generated from 00-default.conf
+
+hl.config({
+ animations = {
+ enabled = true,
+ },
+})
+
+hl.curve("wind", { type = "bezier", points = { { 0.05, 0.9 }, { 0.1, 1.05 } } })
+hl.curve("winIn", { type = "bezier", points = { { 0.1, 1.1 }, { 0.1, 1.1 } } })
+hl.curve("winOut", { type = "bezier", points = { { 0.3, -0.3 }, { 0, 1 } } })
+hl.curve("liner", { type = "bezier", points = { { 1, 1 }, { 1, 1 } } })
+hl.curve("overshot", { type = "bezier", points = { { 0.05, 0.9 }, { 0.1, 1.05 } } })
+hl.curve("smoothOut", { type = "bezier", points = { { 0.5, 0 }, { 0.99, 0.99 } } })
+hl.curve("smoothIn", { type = "bezier", points = { { 0.5, -0.5 }, { 0.68, 1.5 } } })
+
+hl.animation({ leaf = "windows", enabled = true, speed = 6, bezier = "wind", style = "slide" })
+hl.animation({ leaf = "windowsIn", enabled = true, speed = 5, bezier = "winIn", style = "slide" })
+hl.animation({ leaf = "windowsOut", enabled = true, speed = 3, bezier = "smoothOut", style = "slide" })
+hl.animation({ leaf = "windowsMove", enabled = true, speed = 5, bezier = "wind", style = "slide" })
+hl.animation({ leaf = "border", enabled = true, speed = 1, bezier = "liner" })
+hl.animation({ leaf = "borderangle", enabled = true, speed = 180, bezier = "liner", style = "loop" })
+hl.animation({ leaf = "fade", enabled = true, speed = 3, bezier = "smoothOut" })
+hl.animation({ leaf = "workspaces", enabled = true, speed = 5, bezier = "overshot" })
+hl.animation({ leaf = "workspacesIn", enabled = true, speed = 5, bezier = "winIn", style = "slide" })
+hl.animation({ leaf = "workspacesOut", enabled = true, speed = 5, bezier = "winOut", style = "slide" })
diff --git a/config/hypr/animations/01-default - v2.lua b/config/hypr/animations/01-default - v2.lua
new file mode 100644
index 00000000..1de8fab5
--- /dev/null
+++ b/config/hypr/animations/01-default - v2.lua
@@ -0,0 +1,27 @@
+-- Auto-generated from 01-default - v2.conf
+
+hl.config({
+ animations = {
+ enabled = true,
+ },
+})
+
+hl.curve("myBezier", { type = "bezier", points = { { 0.05, 0.9 }, { 0.1, 1.05 } } })
+hl.curve("linear", { type = "bezier", points = { { 0.0, 0.0 }, { 1.0, 1.0 } } })
+hl.curve("wind", { type = "bezier", points = { { 0.05, 0.9 }, { 0.1, 1.05 } } })
+hl.curve("winIn", { type = "bezier", points = { { 0.1, 1.1 }, { 0.1, 1.1 } } })
+hl.curve("winOut", { type = "bezier", points = { { 0.3, -0.3 }, { 0, 1 } } })
+hl.curve("slow", { type = "bezier", points = { { 0, 0.85 }, { 0.3, 1 } } })
+hl.curve("overshot", { type = "bezier", points = { { 0.7, 0.6 }, { 0.1, 1.1 } } })
+hl.curve("bounce", { type = "bezier", points = { { 1.1, 1.6 }, { 0.1, 0.85 } } })
+hl.curve("sligshot", { type = "bezier", points = { { 1, -1 }, { 0.15, 1.25 } } })
+hl.curve("nice", { type = "bezier", points = { { 0, 6.9 }, { 0.5, -4.20 } } })
+
+hl.animation({ leaf = "windowsIn", enabled = true, speed = 5, bezier = "slow", style = "popin" })
+hl.animation({ leaf = "windowsOut", enabled = true, speed = 5, bezier = "winOut", style = "popin" })
+hl.animation({ leaf = "windowsMove", enabled = true, speed = 5, bezier = "wind", style = "slide" })
+hl.animation({ leaf = "border", enabled = true, speed = 10, bezier = "linear" })
+hl.animation({ leaf = "borderangle", enabled = true, speed = 180, bezier = "linear", style = "loop" })
+hl.animation({ leaf = "fade", enabled = true, speed = 5, bezier = "overshot" })
+hl.animation({ leaf = "workspaces", enabled = true, speed = 5, bezier = "wind" })
+hl.animation({ leaf = "windows", enabled = true, speed = 5, bezier = "bounce", style = "popin" })
diff --git a/config/hypr/animations/03- Disable Animation.lua b/config/hypr/animations/03- Disable Animation.lua
new file mode 100644
index 00000000..80f4be52
--- /dev/null
+++ b/config/hypr/animations/03- Disable Animation.lua
@@ -0,0 +1,7 @@
+-- Auto-generated from 03- Disable Animation.conf
+
+hl.config({
+ animations = {
+ enabled = false,
+ },
+})
diff --git a/config/hypr/animations/END-4.lua b/config/hypr/animations/END-4.lua
new file mode 100644
index 00000000..ba110519
--- /dev/null
+++ b/config/hypr/animations/END-4.lua
@@ -0,0 +1,34 @@
+-- Auto-generated from END-4.conf
+
+hl.config({
+ animations = {
+ enabled = true,
+ },
+})
+
+hl.curve("linear", { type = "bezier", points = { { 0, 0 }, { 1, 1 } } })
+hl.curve("md3_standard", { type = "bezier", points = { { 0.2, 0 }, { 0, 1 } } })
+hl.curve("md3_decel", { type = "bezier", points = { { 0.05, 0.7 }, { 0.1, 1 } } })
+hl.curve("md3_accel", { type = "bezier", points = { { 0.3, 0 }, { 0.8, 0.15 } } })
+hl.curve("overshot", { type = "bezier", points = { { 0.05, 0.9 }, { 0.1, 1.1 } } })
+hl.curve("crazyshot", { type = "bezier", points = { { 0.1, 1.5 }, { 0.76, 0.92 } } })
+hl.curve("hyprnostretch", { type = "bezier", points = { { 0.05, 0.9 }, { 0.1, 1.0 } } })
+hl.curve("menu_decel", { type = "bezier", points = { { 0.1, 1 }, { 0, 1 } } })
+hl.curve("menu_accel", { type = "bezier", points = { { 0.38, 0.04 }, { 1, 0.07 } } })
+hl.curve("easeInOutCirc", { type = "bezier", points = { { 0.85, 0 }, { 0.15, 1 } } })
+hl.curve("easeOutCirc", { type = "bezier", points = { { 0, 0.55 }, { 0.45, 1 } } })
+hl.curve("easeOutExpo", { type = "bezier", points = { { 0.16, 1 }, { 0.3, 1 } } })
+hl.curve("softAcDecel", { type = "bezier", points = { { 0.26, 0.26 }, { 0.15, 1 } } })
+hl.curve("md2", { type = "bezier", points = { { 0.4, 0 }, { 0.2, 1 } } })
+
+hl.animation({ leaf = "windows", enabled = true, speed = 3, bezier = "md3_decel", style = "popin 60%" })
+hl.animation({ leaf = "windowsIn", enabled = true, speed = 3, bezier = "md3_decel", style = "popin 60%" })
+hl.animation({ leaf = "windowsOut", enabled = true, speed = 3, bezier = "md3_accel", style = "popin 60%" })
+hl.animation({ leaf = "border", enabled = true, speed = 10, bezier = "default" })
+hl.animation({ leaf = "fade", enabled = true, speed = 3, bezier = "md3_decel" })
+hl.animation({ leaf = "layersIn", enabled = true, speed = 3, bezier = "menu_decel", style = "slide" })
+hl.animation({ leaf = "layersOut", enabled = true, speed = 1.6, bezier = "menu_accel" })
+hl.animation({ leaf = "fadeLayersIn", enabled = true, speed = 2, bezier = "menu_decel" })
+hl.animation({ leaf = "fadeLayersOut", enabled = true, speed = 4.5, bezier = "menu_accel" })
+hl.animation({ leaf = "workspaces", enabled = true, speed = 7, bezier = "menu_decel", style = "slide" })
+hl.animation({ leaf = "specialWorkspace", enabled = true, speed = 3, bezier = "md3_decel", style = "slidevert" })
diff --git a/config/hypr/animations/HYDE - Vertical.lua b/config/hypr/animations/HYDE - Vertical.lua
new file mode 100644
index 00000000..e8d64192
--- /dev/null
+++ b/config/hypr/animations/HYDE - Vertical.lua
@@ -0,0 +1,22 @@
+-- Auto-generated from HYDE - Vertical.conf
+
+hl.config({
+ animations = {
+ enabled = true,
+ },
+})
+
+hl.curve("fluent_decel", { type = "bezier", points = { { 0, 0.2 }, { 0.4, 1 } } })
+hl.curve("easeOutCirc", { type = "bezier", points = { { 0, 0.55 }, { 0.45, 1 } } })
+hl.curve("easeOutCubic", { type = "bezier", points = { { 0.33, 1 }, { 0.68, 1 } } })
+hl.curve("easeinoutsine", { type = "bezier", points = { { 0.37, 0 }, { 0.63, 1 } } })
+
+hl.animation({ leaf = "windowsIn", enabled = true, speed = 1.5, bezier = "easeinoutsine", style = "popin 60%" })
+hl.animation({ leaf = "windowsOut", enabled = true, speed = 1.5, bezier = "easeOutCubic", style = "popin 60%" })
+hl.animation({ leaf = "windowsMove", enabled = true, speed = 1.5, bezier = "easeinoutsine", style = "slide" })
+hl.animation({ leaf = "fade", enabled = true, speed = 2.5, bezier = "fluent_decel" })
+hl.animation({ leaf = "fadeLayersIn", enabled = false })
+hl.animation({ leaf = "border", enabled = false })
+hl.animation({ leaf = "layers", enabled = true, speed = 1.5, bezier = "easeinoutsine", style = "popin" })
+hl.animation({ leaf = "workspaces", enabled = true, speed = 3, bezier = "fluent_decel", style = "slidefadevert 30%" })
+hl.animation({ leaf = "specialWorkspace", enabled = true, speed = 2, bezier = "fluent_decel", style = "slidefade 10%" })
diff --git a/config/hypr/animations/HYDE - default.lua b/config/hypr/animations/HYDE - default.lua
new file mode 100644
index 00000000..e9d63be7
--- /dev/null
+++ b/config/hypr/animations/HYDE - default.lua
@@ -0,0 +1,22 @@
+-- Auto-generated from HYDE - default.conf
+
+hl.config({
+ animations = {
+ enabled = true,
+ },
+})
+
+hl.curve("wind", { type = "bezier", points = { { 0.05, 0.9 }, { 0.1, 1.05 } } })
+hl.curve("winIn", { type = "bezier", points = { { 0.1, 1.1 }, { 0.1, 1.1 } } })
+hl.curve("winOut", { type = "bezier", points = { { 0.3, -0.3 }, { 0, 1 } } })
+hl.curve("liner", { type = "bezier", points = { { 1, 1 }, { 1, 1 } } })
+
+hl.animation({ leaf = "windows", enabled = true, speed = 6, bezier = "wind", style = "slide" })
+hl.animation({ leaf = "windowsIn", enabled = true, speed = 6, bezier = "winIn", style = "slide" })
+hl.animation({ leaf = "windowsOut", enabled = true, speed = 5, bezier = "winOut", style = "slide" })
+hl.animation({ leaf = "windowsMove", enabled = true, speed = 5, bezier = "wind", style = "slide" })
+hl.animation({ leaf = "border", enabled = true, speed = 1, bezier = "liner" })
+hl.animation({ leaf = "borderangle", enabled = true, speed = 30, bezier = "liner", style = "once" })
+hl.animation({ leaf = "fade", enabled = true, speed = 10, bezier = "default" })
+hl.animation({ leaf = "workspaces", enabled = true, speed = 5, bezier = "wind" })
+hl.animation({ leaf = "specialWorkspace", enabled = true, speed = 5, bezier = "wind", style = "slidevert" })
diff --git a/config/hypr/animations/HYDE - minimal-1.lua b/config/hypr/animations/HYDE - minimal-1.lua
new file mode 100644
index 00000000..9d8b4d6b
--- /dev/null
+++ b/config/hypr/animations/HYDE - minimal-1.lua
@@ -0,0 +1,21 @@
+-- Auto-generated from HYDE - minimal-1.conf
+
+hl.config({
+ animations = {
+ enabled = true,
+ },
+})
+
+hl.curve("wind", { type = "bezier", points = { { 0.05, 0.9 }, { 0.1, 1.05 } } })
+hl.curve("winIn", { type = "bezier", points = { { 0.1, 1.1 }, { 0.1, 1.1 } } })
+hl.curve("winOut", { type = "bezier", points = { { 0.3, -0.3 }, { 0, 1 } } })
+hl.curve("liner", { type = "bezier", points = { { 1, 1 }, { 1, 1 } } })
+
+hl.animation({ leaf = "windows", enabled = true, speed = 6, bezier = "wind", style = "slide" })
+hl.animation({ leaf = "windowsIn", enabled = true, speed = 6, bezier = "winIn", style = "slide" })
+hl.animation({ leaf = "windowsOut", enabled = true, speed = 5, bezier = "winOut", style = "slide" })
+hl.animation({ leaf = "windowsMove", enabled = true, speed = 5, bezier = "wind", style = "slide" })
+hl.animation({ leaf = "border", enabled = true, speed = 1, bezier = "liner" })
+hl.animation({ leaf = "borderangle", enabled = true, speed = 30, bezier = "liner", style = "once" })
+hl.animation({ leaf = "fade", enabled = true, speed = 10, bezier = "default" })
+hl.animation({ leaf = "workspaces", enabled = true, speed = 5, bezier = "wind" })
diff --git a/config/hypr/animations/HYDE - minimal-2.lua b/config/hypr/animations/HYDE - minimal-2.lua
new file mode 100644
index 00000000..0e4f45c8
--- /dev/null
+++ b/config/hypr/animations/HYDE - minimal-2.lua
@@ -0,0 +1,15 @@
+-- Auto-generated from HYDE - minimal-2.conf
+
+hl.config({
+ animations = {
+ enabled = true,
+ },
+})
+
+hl.curve("quart", { type = "bezier", points = { { 0.25, 1 }, { 0.5, 1 } } })
+
+hl.animation({ leaf = "windows", enabled = true, speed = 6, bezier = "quart", style = "slide" })
+hl.animation({ leaf = "border", enabled = true, speed = 6, bezier = "quart" })
+hl.animation({ leaf = "borderangle", enabled = true, speed = 6, bezier = "quart" })
+hl.animation({ leaf = "fade", enabled = true, speed = 6, bezier = "quart" })
+hl.animation({ leaf = "workspaces", enabled = true, speed = 6, bezier = "quart" })
diff --git a/config/hypr/animations/HYDE - optimized.lua b/config/hypr/animations/HYDE - optimized.lua
new file mode 100644
index 00000000..124542d9
--- /dev/null
+++ b/config/hypr/animations/HYDE - optimized.lua
@@ -0,0 +1,40 @@
+-- Auto-generated from HYDE - optimized.conf
+
+hl.config({
+ animations = {
+ enabled = true,
+ },
+})
+
+hl.curve("wind", { type = "bezier", points = { { 0.05, 0.85 }, { 0.03, 0.97 } } })
+hl.curve("winIn", { type = "bezier", points = { { 0.07, 0.88 }, { 0.04, 0.99 } } })
+hl.curve("winOut", { type = "bezier", points = { { 0.20, -0.15 }, { 0, 1 } } })
+hl.curve("liner", { type = "bezier", points = { { 1, 1 }, { 1, 1 } } })
+hl.curve("md3_standard", { type = "bezier", points = { { 0.12, 0 }, { 0, 1 } } })
+hl.curve("md3_decel", { type = "bezier", points = { { 0.05, 0.80 }, { 0.10, 0.97 } } })
+hl.curve("md3_accel", { type = "bezier", points = { { 0.20, 0 }, { 0.80, 0.08 } } })
+hl.curve("overshot", { type = "bezier", points = { { 0.05, 0.85 }, { 0.07, 1.04 } } })
+hl.curve("crazyshot", { type = "bezier", points = { { 0.1, 1.22 }, { 0.68, 0.98 } } })
+hl.curve("hyprnostretch", { type = "bezier", points = { { 0.05, 0.82 }, { 0.03, 0.94 } } })
+hl.curve("menu_decel", { type = "bezier", points = { { 0.05, 0.82 }, { 0, 1 } } })
+hl.curve("menu_accel", { type = "bezier", points = { { 0.20, 0 }, { 0.82, 0.10 } } })
+hl.curve("easeInOutCirc", { type = "bezier", points = { { 0.75, 0 }, { 0.15, 1 } } })
+hl.curve("easeOutCirc", { type = "bezier", points = { { 0, 0.48 }, { 0.38, 1 } } })
+hl.curve("easeOutExpo", { type = "bezier", points = { { 0.10, 0.94 }, { 0.23, 0.98 } } })
+hl.curve("softAcDecel", { type = "bezier", points = { { 0.20, 0.20 }, { 0.15, 1 } } })
+hl.curve("md2", { type = "bezier", points = { { 0.30, 0 }, { 0.15, 1 } } })
+hl.curve("OutBack", { type = "bezier", points = { { 0.28, 1.40 }, { 0.58, 1 } } })
+hl.curve("easeInOutCirc", { type = "bezier", points = { { 0.78, 0 }, { 0.15, 1 } } })
+
+hl.animation({ leaf = "border", enabled = true, speed = 1.6, bezier = "liner" })
+hl.animation({ leaf = "borderangle", enabled = true, speed = 82, bezier = "liner", style = "once" })
+hl.animation({ leaf = "windowsIn", enabled = true, speed = 3.2, bezier = "winIn", style = "slide" })
+hl.animation({ leaf = "windowsOut", enabled = true, speed = 2.8, bezier = "easeOutCirc" })
+hl.animation({ leaf = "windowsMove", enabled = true, speed = 3.0, bezier = "wind", style = "slide" })
+hl.animation({ leaf = "fade", enabled = true, speed = 1.8, bezier = "md3_decel" })
+hl.animation({ leaf = "layersIn", enabled = true, speed = 1.8, bezier = "menu_decel", style = "slide" })
+hl.animation({ leaf = "layersOut", enabled = true, speed = 1.5, bezier = "menu_accel" })
+hl.animation({ leaf = "fadeLayersIn", enabled = true, speed = 1.6, bezier = "menu_decel" })
+hl.animation({ leaf = "fadeLayersOut", enabled = true, speed = 1.8, bezier = "menu_accel" })
+hl.animation({ leaf = "workspaces", enabled = true, speed = 4.0, bezier = "menu_decel", style = "slide" })
+hl.animation({ leaf = "specialWorkspace", enabled = true, speed = 2.3, bezier = "md3_decel", style = "slidefadevert 15%" })
diff --git a/config/hypr/animations/ML4W - classic.lua b/config/hypr/animations/ML4W - classic.lua
new file mode 100644
index 00000000..76bfb491
--- /dev/null
+++ b/config/hypr/animations/ML4W - classic.lua
@@ -0,0 +1,16 @@
+-- Auto-generated from ML4W - classic.conf
+
+hl.config({
+ animations = {
+ enabled = true,
+ },
+})
+
+hl.curve("myBezier", { type = "bezier", points = { { 0.05, 0.9 }, { 0.1, 1.05 } } })
+
+hl.animation({ leaf = "windows", enabled = true, speed = 7, bezier = "myBezier" })
+hl.animation({ leaf = "windowsOut", enabled = true, speed = 7, bezier = "default", style = "popin 80%" })
+hl.animation({ leaf = "border", enabled = true, speed = 10, bezier = "default" })
+hl.animation({ leaf = "borderangle", enabled = true, speed = 8, bezier = "default" })
+hl.animation({ leaf = "fade", enabled = true, speed = 7, bezier = "default" })
+hl.animation({ leaf = "workspaces", enabled = true, speed = 6, bezier = "default" })
diff --git a/config/hypr/animations/ML4W - dynamic.lua b/config/hypr/animations/ML4W - dynamic.lua
new file mode 100644
index 00000000..13580c7b
--- /dev/null
+++ b/config/hypr/animations/ML4W - dynamic.lua
@@ -0,0 +1,21 @@
+-- Auto-generated from ML4W - dynamic.conf
+
+hl.config({
+ animations = {
+ enabled = true,
+ },
+})
+
+hl.curve("wind", { type = "bezier", points = { { 0.05, 0.9 }, { 0.1, 1.05 } } })
+hl.curve("winIn", { type = "bezier", points = { { 0.1, 1.1 }, { 0.1, 1.1 } } })
+hl.curve("winOut", { type = "bezier", points = { { 0.3, -0.3 }, { 0, 1 } } })
+hl.curve("liner", { type = "bezier", points = { { 1, 1 }, { 1, 1 } } })
+
+hl.animation({ leaf = "windows", enabled = true, speed = 6, bezier = "wind", style = "slide" })
+hl.animation({ leaf = "windowsIn", enabled = true, speed = 6, bezier = "winIn", style = "slide" })
+hl.animation({ leaf = "windowsOut", enabled = true, speed = 5, bezier = "winOut", style = "slide" })
+hl.animation({ leaf = "windowsMove", enabled = true, speed = 5, bezier = "wind", style = "slide" })
+hl.animation({ leaf = "border", enabled = true, speed = 1, bezier = "liner" })
+hl.animation({ leaf = "borderangle", enabled = true, speed = 30, bezier = "liner", style = "loop" })
+hl.animation({ leaf = "fade", enabled = true, speed = 10, bezier = "default" })
+hl.animation({ leaf = "workspaces", enabled = true, speed = 5, bezier = "wind" })
diff --git a/config/hypr/animations/ML4W - fast.lua b/config/hypr/animations/ML4W - fast.lua
new file mode 100644
index 00000000..3f628a20
--- /dev/null
+++ b/config/hypr/animations/ML4W - fast.lua
@@ -0,0 +1,25 @@
+-- Auto-generated from ML4W - fast.conf
+
+hl.config({
+ animations = {
+ enabled = true,
+ },
+})
+
+hl.curve("linear", { type = "bezier", points = { { 0, 0 }, { 1, 1 } } })
+hl.curve("md3_standard", { type = "bezier", points = { { 0.2, 0 }, { 0, 1 } } })
+hl.curve("md3_decel", { type = "bezier", points = { { 0.05, 0.7 }, { 0.1, 1 } } })
+hl.curve("md3_accel", { type = "bezier", points = { { 0.3, 0 }, { 0.8, 0.15 } } })
+hl.curve("overshot", { type = "bezier", points = { { 0.05, 0.9 }, { 0.1, 1.1 } } })
+hl.curve("crazyshot", { type = "bezier", points = { { 0.1, 1.5 }, { 0.76, 0.92 } } })
+hl.curve("hyprnostretch", { type = "bezier", points = { { 0.05, 0.9 }, { 0.1, 1.0 } } })
+hl.curve("fluent_decel", { type = "bezier", points = { { 0.1, 1 }, { 0, 1 } } })
+hl.curve("easeInOutCirc", { type = "bezier", points = { { 0.85, 0 }, { 0.15, 1 } } })
+hl.curve("easeOutCirc", { type = "bezier", points = { { 0, 0.55 }, { 0.45, 1 } } })
+hl.curve("easeOutExpo", { type = "bezier", points = { { 0.16, 1 }, { 0.3, 1 } } })
+
+hl.animation({ leaf = "windows", enabled = true, speed = 3, bezier = "md3_decel", style = "popin 60%" })
+hl.animation({ leaf = "border", enabled = true, speed = 10, bezier = "default" })
+hl.animation({ leaf = "fade", enabled = true, speed = 2.5, bezier = "md3_decel" })
+hl.animation({ leaf = "workspaces", enabled = true, speed = 3.5, bezier = "easeOutExpo", style = "slide" })
+hl.animation({ leaf = "specialWorkspace", enabled = true, speed = 3, bezier = "md3_decel", style = "slidevert" })
diff --git a/config/hypr/animations/ML4W - high.lua b/config/hypr/animations/ML4W - high.lua
new file mode 100644
index 00000000..3a0855ce
--- /dev/null
+++ b/config/hypr/animations/ML4W - high.lua
@@ -0,0 +1,21 @@
+-- Auto-generated from ML4W - high.conf
+
+hl.config({
+ animations = {
+ enabled = true,
+ },
+})
+
+hl.curve("wind", { type = "bezier", points = { { 0.05, 0.9 }, { 0.1, 1.05 } } })
+hl.curve("winIn", { type = "bezier", points = { { 0.1, 1.1 }, { 0.1, 1.1 } } })
+hl.curve("winOut", { type = "bezier", points = { { 0.3, -0.3 }, { 0, 1 } } })
+hl.curve("liner", { type = "bezier", points = { { 1, 1 }, { 1, 1 } } })
+
+hl.animation({ leaf = "windows", enabled = true, speed = 6, bezier = "wind", style = "slide" })
+hl.animation({ leaf = "windowsIn", enabled = true, speed = 6, bezier = "winIn", style = "slide" })
+hl.animation({ leaf = "windowsOut", enabled = true, speed = 5, bezier = "winOut", style = "slide" })
+hl.animation({ leaf = "windowsMove", enabled = true, speed = 5, bezier = "wind", style = "slide" })
+hl.animation({ leaf = "border", enabled = true, speed = 1, bezier = "liner" })
+hl.animation({ leaf = "borderangle", enabled = true, speed = 30, bezier = "liner", style = "once" })
+hl.animation({ leaf = "fade", enabled = true, speed = 10, bezier = "default" })
+hl.animation({ leaf = "workspaces", enabled = true, speed = 5, bezier = "wind" })
diff --git a/config/hypr/animations/ML4W - moving.lua b/config/hypr/animations/ML4W - moving.lua
new file mode 100644
index 00000000..6fadc3e0
--- /dev/null
+++ b/config/hypr/animations/ML4W - moving.lua
@@ -0,0 +1,20 @@
+-- Auto-generated from ML4W - moving.conf
+
+hl.config({
+ animations = {
+ enabled = true,
+ },
+})
+
+hl.curve("overshot", { type = "bezier", points = { { 0.05, 0.9 }, { 0.1, 1.05 } } })
+hl.curve("smoothOut", { type = "bezier", points = { { 0.5, 0 }, { 0.99, 0.99 } } })
+hl.curve("smoothIn", { type = "bezier", points = { { 0.5, -0.5 }, { 0.68, 1.5 } } })
+
+hl.animation({ leaf = "windows", enabled = true, speed = 5, bezier = "overshot", style = "slide" })
+hl.animation({ leaf = "windowsOut", enabled = true, speed = 3, bezier = "smoothOut" })
+hl.animation({ leaf = "windowsIn", enabled = true, speed = 3, bezier = "smoothOut" })
+hl.animation({ leaf = "windowsMove", enabled = true, speed = 4, bezier = "smoothIn", style = "slide" })
+hl.animation({ leaf = "border", enabled = true, speed = 5, bezier = "default" })
+hl.animation({ leaf = "fade", enabled = true, speed = 5, bezier = "smoothIn" })
+hl.animation({ leaf = "fadeDim", enabled = true, speed = 5, bezier = "smoothIn" })
+hl.animation({ leaf = "workspaces", enabled = true, speed = 6, bezier = "default" })
diff --git a/config/hypr/animations/ML4W - standard.lua b/config/hypr/animations/ML4W - standard.lua
new file mode 100644
index 00000000..04290074
--- /dev/null
+++ b/config/hypr/animations/ML4W - standard.lua
@@ -0,0 +1,16 @@
+-- Auto-generated from ML4W - standard.conf
+
+hl.config({
+ animations = {
+ enabled = true,
+ },
+})
+
+hl.curve("myBezier", { type = "bezier", points = { { 0.05, 0.9 }, { 0.1, 1.05 } } })
+
+hl.animation({ leaf = "windows", enabled = true, speed = 7, bezier = "myBezier" })
+hl.animation({ leaf = "windowsOut", enabled = true, speed = 7, bezier = "default", style = "popin 80%" })
+hl.animation({ leaf = "border", enabled = true, speed = 10, bezier = "default" })
+hl.animation({ leaf = "borderangle", enabled = true, speed = 8, bezier = "default" })
+hl.animation({ leaf = "fade", enabled = true, speed = 7, bezier = "default" })
+hl.animation({ leaf = "workspaces", enabled = true, speed = 6, bezier = "default" })
diff --git a/config/hypr/animations/Mahaveer - me-1.lua b/config/hypr/animations/Mahaveer - me-1.lua
new file mode 100644
index 00000000..5c9824ff
--- /dev/null
+++ b/config/hypr/animations/Mahaveer - me-1.lua
@@ -0,0 +1,41 @@
+-- Auto-generated from Mahaveer - me-1.conf
+
+hl.config({
+ animations = {
+ enabled = true,
+ },
+})
+
+hl.curve("wind", { type = "bezier", points = { { 0.05, 0.9 }, { 0.1, 1.05 } } })
+hl.curve("winIn", { type = "bezier", points = { { 0.1, 1.1 }, { 0.1, 1.1 } } })
+hl.curve("winOut", { type = "bezier", points = { { 0.3, -0.3 }, { 0, 1 } } })
+hl.curve("liner", { type = "bezier", points = { { 1, 1 }, { 1, 1 } } })
+hl.curve("md3_standard", { type = "bezier", points = { { 0.2, 0 }, { 0, 1 } } })
+hl.curve("md3_decel", { type = "bezier", points = { { 0.05, 0.7 }, { 0.1, 1 } } })
+hl.curve("md3_accel", { type = "bezier", points = { { 0.3, 0 }, { 0.8, 0.15 } } })
+hl.curve("overshot", { type = "bezier", points = { { 0.05, 0.9 }, { 0.1, 1.1 } } })
+hl.curve("crazyshot", { type = "bezier", points = { { 0.1, 1.5 }, { 0.76, 0.92 } } })
+hl.curve("hyprnostretch", { type = "bezier", points = { { 0.05, 0.9 }, { 0.1, 1.0 } } })
+hl.curve("menu_decel", { type = "bezier", points = { { 0.1, 1 }, { 0, 1 } } })
+hl.curve("menu_accel", { type = "bezier", points = { { 0.38, 0.04 }, { 1, 0.07 } } })
+hl.curve("easeInOutCirc", { type = "bezier", points = { { 0.85, 0 }, { 0.15, 1 } } })
+hl.curve("easeOutCirc", { type = "bezier", points = { { 0, 0.55 }, { 0.45, 1 } } })
+hl.curve("easeOutExpo", { type = "bezier", points = { { 0.16, 1 }, { 0.3, 1 } } })
+hl.curve("softAcDecel", { type = "bezier", points = { { 0.26, 0.26 }, { 0.15, 1 } } })
+hl.curve("md2", { type = "bezier", points = { { 0.4, 0 }, { 0.2, 1 } } })
+
+hl.animation({ leaf = "border", enabled = true, speed = 1, bezier = "liner" })
+hl.animation({ leaf = "borderangle", enabled = true, speed = 30, bezier = "liner", style = "once" })
+hl.animation({ leaf = "windows", enabled = true, speed = 6, bezier = "wind", style = "slide" })
+hl.animation({ leaf = "windowsIn", enabled = true, speed = 6, bezier = "winIn", style = "slide" })
+hl.animation({ leaf = "windowsOut", enabled = true, speed = 5, bezier = "winOut", style = "slide" })
+hl.animation({ leaf = "windowsMove", enabled = true, speed = 5, bezier = "wind", style = "slide" })
+hl.animation({ leaf = "fade", enabled = true, speed = 3, bezier = "md3_decel" })
+hl.animation({ leaf = "layersIn", enabled = true, speed = 3, bezier = "menu_decel", style = "slide" })
+hl.animation({ leaf = "layersOut", enabled = true, speed = 1.6, bezier = "menu_accel" })
+hl.animation({ leaf = "fadeLayersIn", enabled = true, speed = 2, bezier = "menu_decel" })
+hl.animation({ leaf = "fadeLayersOut", enabled = true, speed = 4.5, bezier = "menu_accel" })
+hl.animation({ leaf = "workspaces", enabled = true, speed = 7, bezier = "menu_decel", style = "slide" })
+hl.animation({ leaf = "workspaces", enabled = true, speed = 5, bezier = "wind" })
+hl.animation({ leaf = "specialWorkspace", enabled = true, speed = 3, bezier = "md3_decel", style = "slidefadevert 15%" })
+hl.animation({ leaf = "specialWorkspace", enabled = true, speed = 3, bezier = "md3_decel", style = "slidevert" })
diff --git a/config/hypr/animations/Mahaveer - me-2.lua b/config/hypr/animations/Mahaveer - me-2.lua
new file mode 100644
index 00000000..72feaa00
--- /dev/null
+++ b/config/hypr/animations/Mahaveer - me-2.lua
@@ -0,0 +1,26 @@
+-- Auto-generated from Mahaveer - me-2.conf
+
+hl.config({
+ animations = {
+ enabled = true,
+ },
+})
+
+hl.curve("wind", { type = "bezier", points = { { 0.05, 0.9 }, { 0.1, 1.05 } } })
+hl.curve("winIn", { type = "bezier", points = { { 0.1, 1.1 }, { 0.1, 1.1 } } })
+hl.curve("winOut", { type = "bezier", points = { { 0.3, -0.3 }, { 0, 1 } } })
+hl.curve("liner", { type = "bezier", points = { { 1, 1 }, { 1, 1 } } })
+hl.curve("overshot", { type = "bezier", points = { { 0.05, 0.9 }, { 0.1, 1.05 } } })
+hl.curve("smoothOut", { type = "bezier", points = { { 0.5, 0 }, { 0.99, 0.99 } } })
+hl.curve("smoothIn", { type = "bezier", points = { { 0.5, -0.5 }, { 0.68, 1.5 } } })
+
+hl.animation({ leaf = "windows", enabled = true, speed = 6, bezier = "wind", style = "slide" })
+hl.animation({ leaf = "windowsIn", enabled = true, speed = 5, bezier = "winIn", style = "slide" })
+hl.animation({ leaf = "windowsOut", enabled = true, speed = 3, bezier = "smoothOut", style = "slide" })
+hl.animation({ leaf = "windowsMove", enabled = true, speed = 5, bezier = "wind", style = "slide" })
+hl.animation({ leaf = "border", enabled = true, speed = 1, bezier = "liner" })
+hl.animation({ leaf = "borderangle", enabled = true, speed = 180, bezier = "liner", style = "loop" })
+hl.animation({ leaf = "fade", enabled = true, speed = 3, bezier = "smoothOut" })
+hl.animation({ leaf = "workspaces", enabled = true, speed = 5, bezier = "overshot" })
+hl.animation({ leaf = "workspacesIn", enabled = true, speed = 5, bezier = "winIn", style = "slide" })
+hl.animation({ leaf = "workspacesOut", enabled = true, speed = 5, bezier = "winOut", style = "slide" })
diff --git a/config/hypr/animations/Spring-curves.conf b/config/hypr/animations/Spring-curves.conf
new file mode 100644
index 00000000..1663d16e
--- /dev/null
+++ b/config/hypr/animations/Spring-curves.conf
@@ -0,0 +1,25 @@
+# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
+#
+# name "Spring-curves"
+
+animations {
+ enabled = yes
+
+ # Hyprland .conf uses bezier curves; these approximate the Lua spring presets.
+ bezier = spring_fast, 0.18, 0.88, 0.14, 1.0
+ bezier = spring_slow, 0.25, 0.82, 0.18, 1.0
+
+ animation = windows, 1, 1, spring_fast
+ animation = windowsIn, 1, 1, spring_fast, popin 50%
+ animation = windowsOut, 1, 1, spring_fast, popin
+ animation = border, 1, 1, spring_slow
+ animation = borderangle, 0
+ animation = fade, 1, 1, spring_slow
+ animation = zoomFactor, 1, 6, spring_fast
+ animation = layersIn, 1, 3, spring_fast, slide
+ animation = layersOut, 1, 1.6, spring_fast, slide
+ animation = fadeLayersIn, 1, 2, spring_fast
+ animation = fadeLayersOut, 1, 1.6, spring_fast
+ animation = workspaces, 1, 1, spring_slow, slide
+ animation = specialWorkspace, 1, 1, spring_slow, slidevert 80%
+}
diff --git a/config/hypr/animations/Spring-curves.lua b/config/hypr/animations/Spring-curves.lua
new file mode 100644
index 00000000..fefc3731
--- /dev/null
+++ b/config/hypr/animations/Spring-curves.lua
@@ -0,0 +1,28 @@
+-- Spring Curves
+hl.curve("spring_fast", { type = "spring", mass = 2, stiffness = 30, dampening = 15 })
+hl.curve("spring_slow", { type = "spring", mass = 2, stiffness = 15, dampening = 10 })
+
+-- Window animations
+hl.animation({ leaf = "windows", enabled = true, speed = 1, spring = "spring_fast" })
+hl.animation({ leaf = "windowsIn", enabled = true, speed = 1, spring = "spring_fast", style = "popin 50%" })
+hl.animation({ leaf = "windowsOut", enabled = true, speed = 1, spring = "spring_fast", style = "popin" })
+
+-- Border animations
+hl.animation({ leaf = "border", enabled = true, speed = 1, spring = "spring_slow" })
+hl.animation({ leaf = "borderangle", enabled = false })
+
+-- Fade
+hl.animation({ leaf = "fade", enabled = true, speed = 1, spring = "spring_slow" })
+
+-- Zoom cursor
+hl.animation({ leaf = "zoomFactor", enabled = true, speed = 6, spring = "spring_fast" })
+
+-- Layer animations
+hl.animation({ leaf = "layersIn", enabled = true, speed = 3, spring = "spring_fast", style = "slide" })
+hl.animation({ leaf = "layersOut", enabled = true, speed = 1.6, spring = "spring_fast", style = "slide" })
+hl.animation({ leaf = "fadeLayersIn", enabled = true, speed = 2, spring = "spring_fast" })
+hl.animation({ leaf = "fadeLayersOut", enabled = true, speed = 1.6, spring = "spring_fast" })
+
+-- Workspace animations
+hl.animation({ leaf = "workspaces", enabled = true, speed = 1, spring = "spring_slow", style = "slide" })
+hl.animation({ leaf = "specialWorkspace", enabled = true, speed = 1, spring = "spring_slow", style = "slidevert 80%" })
diff --git a/config/hypr/configs/ENVariables.conf b/config/hypr/configs/ENVariables.conf
index b134b60d..e8a51555 100644
--- a/config/hypr/configs/ENVariables.conf
+++ b/config/hypr/configs/ENVariables.conf
@@ -10,7 +10,7 @@
# environment-variables
# Current Version of KoolDots:
-env = DOTS_VERSION,2.3.24
+env = DOTS_VERSION,2.3.25
### Toolkit Backend Variables ###
env = GDK_BACKEND,wayland,x11,*
@@ -32,10 +32,12 @@ env = XDG_SESSION_TYPE,wayland
env = QT_AUTO_SCREEN_SCALE_FACTOR,1
env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
env = QT_QPA_PLATFORMTHEME,qt6ct
-env = QT_STYLE_OVERRIDE,kvantum
+env = QT_STYLE_OVERRIDE,Fusion
### hyprland-qt-support ###
-env = QT_QUICK_CONTROLS_STYLE,org.hyprland.style
+# Keep a safe default. copy.sh switches this to org.hyprland.style when the
+# matching QML style module is detected on the system.
+env = QT_QUICK_CONTROLS_STYLE,Basic
### xwayland apps scale fix (useful if you are use monitor scaling) ###
# Set same value if you use scaling in Monitors.conf
@@ -47,8 +49,10 @@ env = QT_SCALE_FACTOR,1
# Bibata-Modern-Ice-Cursor
# NOTE! You must have the hyprcursor version to activate this.
# https://wiki.hyprland.org/Hypr-Ecosystem/hyprcursor/
-#env = HYPRCURSOR_THEME,Bibata-Modern-Ice
-#env = HYPRCURSOR_SIZE,24
+env = HYPRCURSOR_THEME,Bibata-Modern-Ice
+env = HYPRCURSOR_SIZE,24
+env = XCURSOR_THEME,Bibata-Modern-Ice
+env = XCURSOR_SIZE,24
### firefox ###
env = MOZ_ENABLE_WAYLAND,1
@@ -61,10 +65,10 @@ env = ELECTRON_OZONE_PLATFORM_HINT,auto # auto selects Wayland if possible, X11
# This is from Hyprland Wiki. Below will be activated nvidia gpu detected
# See hyprland wiki https://wiki.hyprland.org/Nvidia/#environment-variables
-#env = LIBVA_DRIVER_NAME,nvidia
-#env = __GLX_VENDOR_LIBRARY_NAME,nvidia
-#env = NVD_BACKEND,direct
-#env = GSK_RENDERER,ngl
+env = LIBVA_DRIVER_NAME,nvidia
+env = __GLX_VENDOR_LIBRARY_NAME,nvidia
+env = NVD_BACKEND,direct
+env = GSK_RENDERER,ngl
### additional ENV's for nvidia. Caution, activate with care ###
#env = GBM_BACKEND,nvidia-drm
@@ -77,7 +81,7 @@ env = ELECTRON_OZONE_PLATFORM_HINT,auto # auto selects Wayland if possible, X11
### FOR VM and POSSIBLY NVIDIA ###
# LIBGL_ALWAYS_SOFTWARE software mesa rendering
#env = LIBGL_ALWAYS_SOFTWARE,1 # Warning. May cause hyprland to crash
-#env = WLR_RENDERER_ALLOW_SOFTWARE,1
+env = WLR_RENDERER_ALLOW_SOFTWARE,1
### nvidia firefox ###
# check this post https://github.com/elFarto/nvidia-vaapi-driver#configuration
diff --git a/config/hypr/configs/Keybinds.conf b/config/hypr/configs/Keybinds.conf
index 82693694..db666f2f 100644
--- a/config/hypr/configs/Keybinds.conf
+++ b/config/hypr/configs/Keybinds.conf
@@ -18,13 +18,13 @@ source= $UserConfigs/01-UserDefaults.conf
#### 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
+bindd = $mainMod, D, App launcher, exec, pkill rofi || true; $scriptsDir/RofiFocusedWallpaperLink.sh >/dev/null 2>&1 || true; rofi -show drun -modi drun,filebrowser,run,window
bindd = $mainMod, B, Open default browser, exec, xdg-open "https://"
bindd = $mainMod, A, Desktop overview, exec, $scriptsDir/OverviewToggle.sh # toggles quickshell or ags overview (tries QS first, falls back to AGS)
#bindd = $mainMod, A, Ags overview, exec, pkill rofi || true && ags -t 'overview' # desktop overview (if installed)
#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, Return, Open terminal, exec, $scriptsDir/LaunchTerminal.sh "$term"
+bindd = $mainMod, E, File manager, exec, $scriptsDir/LaunchFileManager.sh "$files" "$term"
bindd = $mainMod, C, SSH session manager, exec, $scriptsDir/rofi-ssh-menu.sh
# FEATURES / EXTRAS
@@ -33,7 +33,7 @@ bindd = $mainMod, H, Help / cheat sheet, exec, $scriptsDir/KeyHints.sh
bindd = $mainMod ALT, R, Refresh bar and menus, exec, $scriptsDir/Refresh.sh
bindd = $mainMod ALT, E, Emoji menu, exec, $scriptsDir/RofiEmoji.sh
bindd = $mainMod, S, Web search, exec, $scriptsDir/RofiSearch.sh
-bindd = $mainMod CTRL, S, Window switcher, exec, rofi -show window
+bindd = $mainMod CTRL, S, Window switcher, exec, $scriptsDir/RofiFocusedWallpaperLink.sh >/dev/null 2>&1 || true; 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 layouts, exec, $scriptsDir/ChangeLayout.sh toggle
@@ -47,7 +47,7 @@ bindd = $mainMod SHIFT, H, Toggle Mute/Unmute for Active-Window, exec, $scriptsD
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, F, Maximize window, fullscreen, 1
bindd = $mainMod, SPACE, Float current window, togglefloating,
bindd = $mainMod ALT, SPACE, Float all windows, exec, $scriptsDir/Float-all-Windows.sh
# NOTE: Dropterminal is currently certified only with kitty. Not all terminals behave correctly as a dropdown.
@@ -67,13 +67,13 @@ bindd = $mainMod, N, Toggle Hyprsunset - night light, exec, $scriptsDir/Hyprsuns
# FEATURES / EXTRAS (UserScripts)
bindd = $mainMod SHIFT, M, Online music, exec, $UserScripts/RofiBeats.sh
-bindd = $mainMod, W, Select Wallpaper, exec, $UserScripts/WallpaperSelect.sh
-bindd = $mainMod SHIFT, W, Wallpaper effects, exec, $UserScripts/WallpaperEffects.sh
-bindd = CTRL ALT, W, Random wallpaper, exec, $UserScripts/WallpaperRandom.sh
+bindd = $mainMod, W, Select Wallpaper, exec, $scriptsDir/WallpaperSelect.sh
+bindd = $mainMod SHIFT, W, Wallpaper effects, exec, $scriptsDir/WallpaperEffects.sh
+bindd = CTRL ALT, W, Random wallpaper, exec, $scriptsDir/WallpaperRandom.sh
bindd = $mainMod CTRL, O, Toggle active window opacity, setprop, active opaque toggle
bindd = $mainMod SHIFT, K, Search keybinds, exec, $scriptsDir/KeyBinds.sh
bindd = $mainMod SHIFT, A, Animations menu, exec, $scriptsDir/Animations.sh
-bindd = $mainMod SHIFT, O, Change ZSH (oh-my-zsh) theme, exec, $UserScripts/ZshChangeTheme.sh
+bindd = $mainMod SHIFT, O, Change ZSH (oh-my-zsh) theme, exec, $scriptsDir/ZshChangeTheme.sh
bindlnd = ALT_L, SHIFT_L, Switch keyboard layout globally, exec, $scriptsDir/KeyboardLayout.sh switch
bindlnd = SHIFT_L, ALT_L, Switch keyboard layout per-window, exec, $scriptsDir/Tak0-Per-Window-Switch.sh
bindd = $mainMod ALT, C, Calculator, exec, $UserScripts/RofiCalc.sh
@@ -97,9 +97,9 @@ 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
-# j/k cycle windows globally
-bindd = $mainMod, j, Cycle next, cyclenext
-bindd = $mainMod, k, Cycle previous, cyclenext, prev
+# j/k cycle windows (layout-aware)
+bindd = $mainMod, j, Cycle next (layout-aware), exec, $scriptsDir/LayoutKeybindDispatch.sh cycle-next
+bindd = $mainMod, k, Cycle previous (layout-aware), exec, $scriptsDir/LayoutKeybindDispatch.sh cycle-prev
bindd = $mainMod CTRL, Return, Swap with master, layoutmsg, swapwithmaster
# Dwindle Layout
@@ -108,7 +108,7 @@ bindd = $mainMod, P, Toggle pseudo (dwindle), pseudo,
# Works on either layout (Master or Dwindle)
bindd = $mainMod, M, Set split ratio 0.3, exec, hyprctl dispatch splitratio 0.3
-# layout aware keybinds
+# legacy init hook kept for compatibility; keybind behavior is now resolved dynamically
exec-once = $scriptsDir/ChangeLayout.sh init
# Direct layout binds
@@ -122,6 +122,7 @@ 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
+bindd = $mainMod, R, Cycle column width preset (scrolling), exec, bash $scriptsDir/ScrollCycleColumnWidth.sh
# Set layout to Horizontal (Standard "Tape" style)
bindd = $mainMod ALT, H, Horizonal scroll right,exec, hyprctl keyword scrolling:direction right
@@ -198,11 +199,11 @@ bindd = $mainMod CTRL, H, Move active out of group, moveoutofgroup # Move active
#bindd = $mainMod, right, Focus right, exec, bash -c 'if hyprctl activewindow -j | jq -e "((.grouped | type) == \"boolean\") or (.address == (.grouped[-1] // empty))" >/dev/null 2>&1; then hyprctl dispatch movefocus r; else hyprctl dispatch changegroupactive f; fi'
#bindd = $mainMod, left, Focus left, exec, bash -c 'if hyprctl activewindow -j | jq -e "((.grouped | type) == \"boolean\") or (.address == (.grouped[0] // empty))" >/dev/null 2>&1; then hyprctl dispatch movefocus l; else hyprctl dispatch changegroupactive b; fi'
-# Move focus with mainMod + arrow keys
-bindd = $mainMod, left, Focus left, movefocus, l
-bindd = $mainMod, right, Focus right, movefocus, r
-bindd = $mainMod, up, Focus up, movefocus, u
-bindd = $mainMod, down, Focus down, movefocus, d
+# Move focus with mainMod + arrow keys (layout-aware)
+bindd = $mainMod, left, Focus left (layout-aware), exec, $scriptsDir/LayoutKeybindDispatch.sh focus-left
+bindd = $mainMod, right, Focus right (layout-aware), exec, $scriptsDir/LayoutKeybindDispatch.sh focus-right
+bindd = $mainMod, up, Focus up (layout-aware), exec, $scriptsDir/LayoutKeybindDispatch.sh focus-up
+bindd = $mainMod, down, Focus down (layout-aware), exec, $scriptsDir/LayoutKeybindDispatch.sh focus-down
# Workspaces related
bindd = $mainMod, tab, Next workspace, workspace, m+1
diff --git a/config/hypr/configs/Startup_Apps.conf b/config/hypr/configs/Startup_Apps.conf
index bf8b3b4b..94a4837a 100644
--- a/config/hypr/configs/Startup_Apps.conf
+++ b/config/hypr/configs/Startup_Apps.conf
@@ -8,7 +8,7 @@
$scriptsDir = $HOME/.config/hypr/scripts
$UserScripts = $HOME/.config/hypr/UserScripts
$lock = $scriptsDir/LockScreen.sh
-$SwwwRandom = $UserScripts/WallpaperAutoChange.sh
+$SwwwRandom = $scriptsDir/WallpaperAutoChange.sh
$livewallpaper=""
$wallDIR = $HOME/Pictures/wallpapers # change path manually here if needed
@@ -23,13 +23,16 @@ exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CUR
exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once = $scriptsDir/Polkit.sh
exec-once = nm-applet
-exec-once = nm-tray # For ubuntu
+#exec-once = nm-tray # For ubuntu Optional now
exec-once = swaync
#exec-once = ags
#exec-once = blueman-applet
#exec-once = rog-control-center
exec-once = $scriptsDir/PortalHyprland.sh
+exec-once = sh $HOME/.config/hypr/scripts/ApplyThemeMode.sh
exec-once = sh $scriptsDir/WaybarStartup.sh
+# Cursor refresh (enabled by installer on hybrid NVIDIA/GDM setups)
+exec-once = sh -c 'sleep 0.3; hyprctl setcursor "${HYPRCURSOR_THEME:-Bibata-Modern-Ice}" "${HYPRCURSOR_SIZE:-24}"'
exec-once = qs -c overview # Quickshell Overview
exec-once = hypridle
exec-once = $scriptsDir/LuaAutoReload.sh
@@ -56,3 +59,5 @@ exec-once = wl-paste --type image --watch cliphist store
#exec-once = $scriptsDir/PortalHyprland.sh
exec-once = blueman-applet
exec-once = $scriptsDir/KeybindsLayoutInit.sh
+exec-once = ags
+exec-once = qs
diff --git a/config/hypr/configs/SystemSettings.conf b/config/hypr/configs/SystemSettings.conf
index 8e64a78a..6db89ef8 100644
--- a/config/hypr/configs/SystemSettings.conf
+++ b/config/hypr/configs/SystemSettings.conf
@@ -157,7 +157,7 @@ render {
cursor {
sync_gsettings_theme = true
- no_hardware_cursors = 2 # change to 1 if want to disable
+ no_hardware_cursors = 0 # change to 1 if want to disable
enable_hyprcursor = true
warp_on_change_workspace = 2
no_warps = true
diff --git a/config/hypr/configs/WindowRules.conf b/config/hypr/configs/WindowRules.conf
index 03ad5984..c292a6cb 100644
--- a/config/hypr/configs/WindowRules.conf
+++ b/config/hypr/configs/WindowRules.conf
@@ -567,3 +567,13 @@ windowrule {
center = on
size = (monitor_w*0.7) (monitor_h*0.75)
}
+
+# Named rule for hyprland share picker
+windowrule {
+ name = hyprland screen share picker
+ match:class = ^(hyprland-share-picker)$
+ match:title = ^(Select what to share)$
+ match:initial_class = ^(hyprland-share-picker)$
+ float = on
+ center = on
+}
diff --git a/config/hypr/configs/system_keybinds.lua b/config/hypr/configs/system_keybinds.lua
new file mode 100644
index 00000000..8223ecb9
--- /dev/null
+++ b/config/hypr/configs/system_keybinds.lua
@@ -0,0 +1,416 @@
+-- ==================================================
+-- KoolDots (2026)
+-- Project URL: https://github.com/LinuxBeginnings
+-- License: GNU GPLv3
+-- SPDX-License-Identifier: GPL-3.0-or-later
+-- ==================================================
+
+-- System defaults migrated from configs/Keybinds.conf (auto-generated).
+-- Add keybinds with bind("MODS", "KEY", fn, opts).
+-- Example:
+-- bind("SUPER", "Z", exec_cmd("thunar"), { description = "Open file manager" })
+
+local dsp = hl.dsp or hl
+local function resolve_cmd(cmd)
+ local defaults = rawget(_G, "KOOLDOTS_DEFAULTS") or {}
+ local resolved_term = defaults.term or os.getenv("TERMINAL") or "kitty"
+ local resolved_files = defaults.files or "thunar"
+ local resolved_edit = defaults.edit or os.getenv("EDITOR") or "nano"
+ cmd = tostring(cmd)
+ cmd = cmd:gsub("%$term", resolved_term)
+ cmd = cmd:gsub("%$files", resolved_files)
+ cmd = cmd:gsub("%$edit", resolved_edit)
+ return cmd
+end
+
+local function exec_cmd(cmd)
+ local resolved = resolve_cmd(cmd)
+ if dsp and dsp.exec_cmd then
+ return dsp.exec_cmd(resolved)
+ end
+ return function() hl.exec_cmd(resolved) end
+end
+
+local function shell_quote(value)
+ return "'" .. tostring(value):gsub("'", "'\\''") .. "'"
+end
+
+local function raw_dispatch_cmd(command)
+ if dsp and dsp.exec_raw then
+ return dsp.exec_raw(tostring(command))
+ end
+ local expression = "hl.dsp.exec_raw(" .. string.format("%q", tostring(command)) .. ")"
+ return exec_cmd("hyprctl dispatch " .. shell_quote(expression))
+end
+
+local function trim(value)
+ return (value or ""):gsub("^%s+", ""):gsub("%s+$", "")
+end
+
+local function chord(mods, key)
+ mods = trim(mods):gsub("%s+", " + ")
+ key = trim(key)
+ if mods == "" then
+ return key
+ end
+ return mods .. " + " .. key
+end
+
+local function key_variants(key, mods)
+ key = trim(key):gsub("^xf86", "XF86")
+ local key_aliases = {
+ XF86AudioPlayPause = "XF86AudioPlay",
+ XF86audiolowervolume = "XF86AudioLowerVolume",
+ XF86audiomute = "XF86AudioMute",
+ XF86audioraisevolume = "XF86AudioRaiseVolume",
+ XF86audiostop = "XF86AudioStop",
+ }
+ key = key_aliases[key] or key
+ local shifted_number_keys = {
+ ["code:10"] = "exclam",
+ ["code:11"] = "at",
+ ["code:12"] = "numbersign",
+ ["code:13"] = "dollar",
+ ["code:14"] = "percent",
+ ["code:15"] = "asciicircum",
+ ["code:16"] = "ampersand",
+ ["code:17"] = "asterisk",
+ ["code:18"] = "parenleft",
+ ["code:19"] = "parenright",
+ }
+ local number_keys = {
+ ["code:10"] = "1",
+ ["code:11"] = "2",
+ ["code:12"] = "3",
+ ["code:13"] = "4",
+ ["code:14"] = "5",
+ ["code:15"] = "6",
+ ["code:16"] = "7",
+ ["code:17"] = "8",
+ ["code:18"] = "9",
+ ["code:19"] = "0",
+ }
+ if mods:match("SHIFT") and shifted_number_keys[key] then
+ local number_key = number_keys[key]
+ if number_key then
+ return { shifted_number_keys[key], number_key }
+ end
+ return { shifted_number_keys[key] }
+ end
+ if number_keys[key] then
+ return { number_keys[key] }
+ end
+ return { key }
+end
+
+local function workspace_value(value)
+ value = trim(value)
+ return tonumber(value) or value
+end
+
+local function direction(value)
+ local directions = {
+ l = "left",
+ r = "right",
+ u = "up",
+ d = "down",
+ left = "left",
+ right = "right",
+ up = "up",
+ down = "down",
+ }
+ return directions[trim(value)] or trim(value)
+end
+
+local function dispatch(name, args)
+ local window_api = (dsp and dsp.window) or hl.window or {}
+ name = trim(name)
+ args = trim(args)
+ if name == "exec" then
+ return exec_cmd(args)
+ end
+ if name == "killactive" and window_api.close then
+ return window_api.close()
+ end
+ if name == "fullscreen" and window_api.fullscreen then
+ if args == "1" then
+ return window_api.fullscreen({ mode = "maximized" })
+ end
+ return window_api.fullscreen({ mode = "fullscreen" })
+ end
+ if name == "movefocus" and dsp and dsp.focus then
+ return function()
+ local ok, dispatcher = pcall(dsp.focus, { direction = direction(args) })
+ if ok and dispatcher then
+ hl.dispatch(dispatcher)
+ end
+ end
+ end
+ if name == "cyclenext" then
+ if args == "prev" or args == "b" then
+ return exec_cmd("$HOME/.config/hypr/scripts/LuaCycleWindow.sh previous")
+ end
+ return exec_cmd("$HOME/.config/hypr/scripts/LuaCycleWindow.sh next")
+ end
+ if name == "swapwindow" then
+ local swap_direction = trim(args)
+ if swap_direction == "" then
+ return nil
+ end
+ return exec_cmd("$HOME/.config/hypr/scripts/LuaSwapWindow.sh " .. swap_direction)
+ end
+ if name == "workspace" and dsp and dsp.focus then
+ return function() hl.dispatch(dsp.focus({ workspace = workspace_value(args) })) end
+ end
+ if name == "movetoworkspace" and window_api.move then
+ return function() hl.dispatch(window_api.move({ workspace = workspace_value(args) })) end
+ end
+ if name == "movetoworkspacesilent" and window_api.move then
+ return function() hl.dispatch(window_api.move({ workspace = workspace_value(args), follow = false })) end
+ end
+ if name == "togglefloating" and window_api.float then
+ return function() hl.dispatch(window_api.float({ action = "toggle" })) end
+ end
+ if name == "resizewindow" and window_api.resize then
+ return window_api.resize()
+ end
+ if name == "resizeactive" and window_api.resize then
+ local x, y = args:match("^(%-?%d+)%s+(%-?%d+)$")
+ if x and y then
+ return window_api.resize({ x = tonumber(x) or 0, y = tonumber(y) or 0, relative = true })
+ end
+ end
+ if name == "movewindow" and args == "" and window_api.drag then
+ return window_api.drag()
+ end
+ if args ~= "" then
+ return raw_dispatch_cmd(name .. " " .. args)
+ end
+ return raw_dispatch_cmd(name)
+end
+
+local function bind(mods, key, fn, opts)
+ local seen = {}
+ for _, key_variant in ipairs(key_variants(key, mods)) do
+ local key_chord = chord(mods, key_variant)
+ if not seen[key_chord] then
+ seen[key_chord] = true
+ if opts then
+ hl.bind(key_chord, fn, opts)
+ else
+ hl.bind(key_chord, fn)
+ end
+ end
+ end
+end
+
+local function unbind(mods, key)
+ if hl.unbind then
+ local seen = {}
+ for _, key_variant in ipairs(key_variants(key, mods)) do
+ local key_chord = chord(mods, key_variant)
+ if not seen[key_chord] then
+ seen[key_chord] = true
+ local ok = pcall(hl.unbind, mods, key_variant)
+ if not ok then
+ pcall(hl.unbind, key_chord)
+ end
+ end
+ end
+ end
+end
+
+-- Converted from configs/Keybinds.conf
+bind("SUPER", "D", exec_cmd("pkill rofi || true && rofi -show drun -modi drun, filebrowser, run, window"), { description = "app launcher" })
+bind("SUPER", "B", exec_cmd("xdg-open \"https://\""), { description = "open default browser" })
+bind("SUPER", "A", exec_cmd("$HOME/.config/hypr/scripts/OverviewToggle.sh"), { description = "desktop overview" })
+bind("SUPER", "Return", exec_cmd("$HOME/.config/hypr/scripts/LaunchTerminal.sh '$term'"), { description = "Open terminal" })
+bind("SUPER", "E", exec_cmd("$HOME/.config/hypr/scripts/LaunchFileManager.sh '$files' '$term'"), { description = "file manager" })
+bind("SUPER", "C", exec_cmd("$HOME/.config/hypr/scripts/rofi-ssh-menu.sh"), { description = "SSH session manager" })
+bind("SUPER", "T", exec_cmd("$HOME/.config/hypr/scripts/ThemeChanger.sh"), { description = "Global theme switcher using Wallust" })
+bind("SUPER", "H", exec_cmd("$HOME/.config/hypr/scripts/KeyHints.sh"), { description = "help / cheat sheet" })
+bind("SUPER ALT", "R", exec_cmd("$HOME/.config/hypr/scripts/Refresh.sh"), { description = "refresh bar and menus" })
+bind("SUPER ALT", "E", exec_cmd("$HOME/.config/hypr/scripts/RofiEmoji.sh"), { description = "emoji menu" })
+bind("SUPER", "S", exec_cmd("$HOME/.config/hypr/scripts/RofiSearch.sh"), { description = "web search" })
+bind("SUPER CTRL", "S", exec_cmd("rofi -show window"), { description = "window switcher" })
+bind("SUPER ALT", "O", exec_cmd("$HOME/.config/hypr/scripts/ChangeBlur.sh"), { description = "toggle blur" })
+bind("SUPER SHIFT", "G", exec_cmd("$HOME/.config/hypr/scripts/GameMode.sh"), { description = "toggle game mode" })
+bind("SUPER ALT", "L", exec_cmd("$HOME/.config/hypr/scripts/ChangeLayout.sh toggle"), { description = "toggle layouts" })
+bind("SUPER ALT", "V", exec_cmd("$HOME/.config/hypr/scripts/ClipManager.sh"), { description = "clipboard manager" })
+bind("SUPER CTRL", "R", exec_cmd("$HOME/.config/hypr/scripts/RofiThemeSelector.sh"), { description = "rofi theme selector" })
+bind("SUPER CTRL SHIFT", "R", exec_cmd("pkill rofi || true && $HOME/.config/hypr/scripts/RofiThemeSelector-modified.sh"), { description = "rofi theme selector (modified)" })
+bind("SUPER CTRL", "K", exec_cmd("$HOME/.config/hypr/scripts/Kitty_themes.sh"), { description = "Kitty theme selector" })
+bind("SUPER SHIFT", "B", exec_cmd("$HOME/.config/hypr/UserScripts/RainbowBorders-low-cpu.sh --run-once"), { description = "Set static Rainbow Border" })
+bind("SUPER SHIFT", "H", exec_cmd("$HOME/.config/hypr/scripts/Toggle-Active-Window-Audio.sh"), { description = "Toggle Mute/Unmute for Active-Window" })
+bind("ALT SHIFT", "S", exec_cmd("$HOME/.config/hypr/scripts/hyprshot.sh -m region -o $HOME/Pictures/Screenshots"), { description = "Hyprshot Screen Capture" })
+bind("SUPER SHIFT", "F", dispatch("fullscreen", ""), { description = "fullscreen" })
+bind("SUPER", "F", dispatch("fullscreen", "1"), { description = "maximize window" })
+bind("SUPER", "SPACE", dispatch("togglefloating", ""), { description = "Float current window" })
+bind("SUPER ALT", "SPACE", exec_cmd("$HOME/.config/hypr/scripts/Float-all-Windows.sh"), { description = "Float all windows" })
+bind("SUPER SHIFT", "Return", exec_cmd("$HOME/.config/hypr/scripts/Dropterminal.sh kitty"), { description = "DropDown terminal" })
+bind("SUPER ALT", "mouse_down", exec_cmd("hyprctl keyword cursor:zoom_factor \"$(hyprctl getoption cursor:zoom_factor | awk 'NR==1 {factor = $2; if (factor < 1) {factor = 1}; print factor * 2.0}')\""), { description = "zoom in" })
+bind("SUPER ALT", "mouse_up", exec_cmd("hyprctl keyword cursor:zoom_factor \"$(hyprctl getoption cursor:zoom_factor | awk 'NR==1 {factor = $2; if (factor < 1) {factor = 1}; print factor / 2.0}')\""), { description = "zoom out" })
+bind("SUPER CTRL ALT", "B", exec_cmd("pkill -SIGUSR1 waybar"), { description = "toggle waybar on/off" })
+bind("SUPER CTRL", "B", exec_cmd("$HOME/.config/hypr/scripts/WaybarStyles.sh"), { description = "waybar styles menu" })
+bind("SUPER ALT", "B", exec_cmd("$HOME/.config/hypr/scripts/WaybarLayout.sh"), { description = "waybar layout menu" })
+bind("SUPER", "N", exec_cmd("$HOME/.config/hypr/scripts/Hyprsunset.sh toggle"), { description = "Toggle Hyprsunset - night light" })
+bind("SUPER SHIFT", "M", exec_cmd("$HOME/.config/hypr/UserScripts/RofiBeats.sh"), { description = "online music" })
+bind("SUPER", "W", exec_cmd("$HOME/.config/hypr/scripts/WallpaperSelect.sh"), { description = "select wallpaper" })
+bind("SUPER SHIFT", "W", exec_cmd("$HOME/.config/hypr/scripts/WallpaperEffects.sh"), { description = "wallpaper effects" })
+bind("CTRL ALT", "W", exec_cmd("$HOME/.config/hypr/UserScripts/WallpaperRandom.sh"), { description = "random wallpaper" })
+bind("SUPER CTRL", "O", dispatch("setprop", "active opaque toggle"), { description = "toggle active window opacity" })
+bind("SUPER SHIFT", "K", exec_cmd("$HOME/.config/hypr/scripts/KeyBinds.sh"), { description = "search keybinds" })
+bind("SUPER SHIFT", "A", exec_cmd("$HOME/.config/hypr/scripts/Animations.sh"), { description = "animations menu" })
+bind("SUPER SHIFT", "R", exec_cmd("$HOME/.config/hypr/scripts/ZshChangeTheme.sh"), { description = "change oh-my-zsh theme" })
+bind("ALT_L", "SHIFT_L", exec_cmd("$HOME/.config/hypr/scripts/KeyboardLayout.sh switch"), { description = "switch keyboard layout globally", locked = true })
+bind("SHIFT_L", "ALT_L", exec_cmd("$HOME/.config/hypr/scripts/Tak0-Per-Window-Switch.sh"), { description = "switch keyboard layout per-window", locked = true })
+bind("SUPER ALT", "C", exec_cmd("$HOME/.config/hypr/UserScripts/RofiCalc.sh"), { description = "calculator" })
+bind("SUPER CTRL", "F9", dispatch("movecurrentworkspacetomonitor", "l"), { description = "move workspace to left monitor" })
+bind("SUPER CTRL", "F10", dispatch("movecurrentworkspacetomonitor", "r"), { description = "move workspace to right monitor" })
+bind("SUPER CTRL", "F11", dispatch("movecurrentworkspacetomonitor", "u"), { description = "move workspace to up monitor" })
+bind("SUPER CTRL", "F12", dispatch("movecurrentworkspacetomonitor", "d"), { description = "move workspace to down monitor" })
+bind("CTRL ALT", "Delete", exec_cmd("$HOME/.config/hypr/scripts/Logout.sh"), { description = "exit Hyprland" })
+bind("SUPER", "Q", dispatch("killactive", ""), { description = "close active window" })
+bind("SUPER SHIFT", "Q", exec_cmd("$HOME/.config/hypr/scripts/KillActiveProcess.sh"), { description = "Terminate active process" })
+bind("CTRL ALT", "L", exec_cmd("$HOME/.config/hypr/scripts/LockScreen.sh"), { description = "lock screen" })
+bind("CTRL ALT", "P", exec_cmd("$HOME/.config/hypr/scripts/Wlogout.sh"), { description = "powermenu" })
+bind("SUPER SHIFT", "N", exec_cmd("swaync-client -t -sw"), { description = "notification panel" })
+bind("SUPER SHIFT", "E", exec_cmd("$HOME/.config/hypr/scripts/Kool_Quick_Settings.sh"), { description = "Quick settings menu" })
+bind("SUPER CTRL", "D", dispatch("layoutmsg", "removemaster"), { description = "remove master" })
+bind("SUPER", "I", dispatch("layoutmsg", "addmaster"), { description = "add master" })
+bind(
+ "SUPER",
+ "j",
+ exec_cmd("$HOME/.config/hypr/scripts/LayoutKeybindDispatch.sh cycle-next"),
+ { description = "cycle next (layout-aware)" }
+)
+bind(
+ "SUPER",
+ "k",
+ exec_cmd("$HOME/.config/hypr/scripts/LayoutKeybindDispatch.sh cycle-prev"),
+ { description = "cycle previous (layout-aware)" }
+)
+bind("SUPER CTRL", "Return", dispatch("layoutmsg", "swapwithmaster"), { description = "swap with master" })
+bind("SUPER SHIFT", "I", dispatch("layoutmsg", "togglesplit"), { description = "toggle split (dwindle)" })
+bind("SUPER", "P", dispatch("pseudo", ""), { description = "toggle pseudo (dwindle)" })
+bind("SUPER", "M", exec_cmd("hyprctl dispatch splitratio 0.3"), { description = "set split ratio 0.3" })
+bind("SUPER ALT", "1", exec_cmd("$HOME/.config/hypr/scripts/ChangeLayout.sh dwindle"), { description = "layout dwindle" })
+bind("SUPER ALT", "2", exec_cmd("$HOME/.config/hypr/scripts/ChangeLayout.sh master"), { description = "layout master" })
+bind("SUPER ALT", "3", exec_cmd("$HOME/.config/hypr/scripts/ChangeLayout.sh scrolling"), { description = "layout scrolling" })
+bind("SUPER ALT", "4", exec_cmd("$HOME/.config/hypr/scripts/ChangeLayout.sh monocle"), { description = "layout monocle" })
+bind("SUPER SHIFT", "period", dispatch("layoutmsg", "move +col"), { description = "move to right column" })
+bind("SUPER SHIFT", "comma", dispatch("layoutmsg", "move -col"), { description = "move to left column" })
+bind("SUPER ALT", "comma", dispatch("layoutmsg", "swapcol l"), { description = "swap columns left" })
+bind("SUPER ALT", "period", dispatch("layoutmsg", "swapcol r"), { description = "swap columns right" })
+bind("SUPER ALT", "H", exec_cmd("hyprctl keyword scrolling:direction right"), { description = "Horizonal scroll right" })
+bind("SUPER ALT", "V", exec_cmd("hyprctl keyword scrolling:direction down"), { description = "Vertical Scroll down" })
+bind("SUPER ALT", "S", exec_cmd("bash -c '[[ $(hyprctl getoption scrolling:direction -j | jq -r \".str\") == \"right\" ]] && hyprctl keyword scrolling:direction down || hyprctl keyword scrolling:direction right'"), { description = "toggle scrolling V/H" })
+bind("ALT", "Tab", dispatch("cyclenext", ""), { description = "cycle next window" })
+bind("ALT", "Tab", dispatch("bringactivetotop", ""), { description = "bring active to top" })
+bind("", "xf86audioraisevolume", exec_cmd("$HOME/.config/hypr/scripts/Volume.sh --inc"), { description = "volume up", locked = true, ["repeat"] = true })
+bind("", "xf86audiolowervolume", exec_cmd("$HOME/.config/hypr/scripts/Volume.sh --dec"), { description = "volume down", locked = true, ["repeat"] = true })
+bind("ALT", "xf86audioraisevolume", exec_cmd("$HOME/.config/hypr/scripts/Volume.sh --inc-precise"), { description = "volume up precise", locked = true, ["repeat"] = true })
+bind("ALT", "xf86audiolowervolume", exec_cmd("$HOME/.config/hypr/scripts/Volume.sh --dec-precise"), { description = "volume down precise", locked = true, ["repeat"] = true })
+bind("", "xf86AudioMicMute", exec_cmd("$HOME/.config/hypr/scripts/Volume.sh --toggle-mic"), { description = "toggle mic mute", locked = true })
+bind("", "xf86audiomute", exec_cmd("$HOME/.config/hypr/scripts/Volume.sh --toggle"), { description = "toggle mute", locked = true })
+bind("", "xf86Sleep", exec_cmd("systemctl suspend"), { description = "sleep", locked = true })
+bind("", "xf86Rfkill", exec_cmd("$HOME/.config/hypr/scripts/AirplaneMode.sh"), { description = "airplane mode", locked = true })
+bind("", "xf86AudioPlayPause", exec_cmd("$HOME/.config/hypr/scripts/MediaCtrl.sh --pause"), { description = "play/pause", locked = true })
+bind("", "xf86AudioPause", exec_cmd("$HOME/.config/hypr/scripts/MediaCtrl.sh --pause"), { description = "pause", locked = true })
+bind("", "xf86AudioPlay", exec_cmd("$HOME/.config/hypr/scripts/MediaCtrl.sh --pause"), { description = "play", locked = true })
+bind("", "xf86AudioNext", exec_cmd("$HOME/.config/hypr/scripts/MediaCtrl.sh --nxt"), { description = "next track", locked = true })
+bind("", "xf86AudioPrev", exec_cmd("$HOME/.config/hypr/scripts/MediaCtrl.sh --prv"), { description = "previous track", locked = true })
+bind("", "xf86audiostop", exec_cmd("$HOME/.config/hypr/scripts/MediaCtrl.sh --stop"), { description = "stop", locked = true })
+bind("SUPER", "Print", exec_cmd("$HOME/.config/hypr/scripts/ScreenShot.sh --now"), { description = "screenshot now" })
+bind("SUPER SHIFT", "Print", exec_cmd("$HOME/.config/hypr/scripts/ScreenShot.sh --area"), { description = "screenshot (area)" })
+bind("SUPER CTRL", "Print", exec_cmd("$HOME/.config/hypr/scripts/ScreenShot.sh --in5"), { description = "screenshot in 5s" })
+bind("SUPER CTRL SHIFT", "Print", exec_cmd("$HOME/.config/hypr/scripts/ScreenShot.sh --in10"), { description = "screenshot in 10s" })
+bind("ALT", "Print", exec_cmd("$HOME/.config/hypr/scripts/ScreenShot.sh --active"), { description = "screenshot active window" })
+bind("SUPER SHIFT", "S", exec_cmd("$HOME/.config/hypr/scripts/ScreenShot.sh --swappy"), { description = "screenshot (swappy)" })
+bind("SUPER SHIFT", "left", dispatch("resizeactive", "-50 0"), { description = "resize left (-50)", ["repeat"] = true })
+bind("SUPER SHIFT", "right", dispatch("resizeactive", "50 0"), { description = "resize right (+50)", ["repeat"] = true })
+bind("SUPER SHIFT", "up", dispatch("resizeactive", "0 -50"), { description = "resize up (-50)", ["repeat"] = true })
+bind("SUPER SHIFT", "down", dispatch("resizeactive", "0 50"), { description = "resize down (+50)", ["repeat"] = true })
+bind("SUPER CTRL", "left", dispatch("movewindow", "l"), { description = "move window left" })
+bind("SUPER CTRL", "right", dispatch("movewindow", "r"), { description = "move window right" })
+bind("SUPER CTRL", "up", dispatch("movewindow", "u"), { description = "move window up" })
+bind("SUPER CTRL", "down", dispatch("movewindow", "d"), { description = "move window down" })
+bind("SUPER ALT", "left", dispatch("swapwindow", "l"), { description = "swap window left" })
+bind("SUPER ALT", "right", dispatch("swapwindow", "r"), { description = "swap window right" })
+bind("SUPER ALT", "up", dispatch("swapwindow", "u"), { description = "swap window up" })
+bind("SUPER ALT", "down", dispatch("swapwindow", "d"), { description = "swap window down" })
+bind("SUPER", "G", dispatch("togglegroup", ""), { description = "toggle group" })
+bind("SUPER", "Tab", dispatch("changegroupactive", "f"), { description = "Change Group Forward" })
+bind("SUPER CTRL", "tab", dispatch("changegroupactive", ""), { description = "change active in group" })
+bind("SUPER SHIFT", "Tab", dispatch("changegroupactive", "b"), { description = "Change Group Back" })
+bind("SUPER CTRL", "K", dispatch("moveintogroup", "l"), { description = "Move left into group" })
+bind("SUPER CTRL", "L", dispatch("moveintogroup", "r"), { description = "Move Right into group" })
+bind("SUPER CTRL", "H", dispatch("moveoutofgroup", ""), { description = "Move active out of group" })
+bind(
+ "SUPER",
+ "left",
+ exec_cmd("$HOME/.config/hypr/scripts/LayoutKeybindDispatch.sh focus-left"),
+ { description = "focus left (layout-aware)" }
+)
+bind(
+ "SUPER",
+ "right",
+ exec_cmd("$HOME/.config/hypr/scripts/LayoutKeybindDispatch.sh focus-right"),
+ { description = "focus right (layout-aware)" }
+)
+bind(
+ "SUPER",
+ "up",
+ exec_cmd("$HOME/.config/hypr/scripts/LayoutKeybindDispatch.sh focus-up"),
+ { description = "focus up (layout-aware)" }
+)
+bind(
+ "SUPER",
+ "down",
+ exec_cmd("$HOME/.config/hypr/scripts/LayoutKeybindDispatch.sh focus-down"),
+ { description = "focus down (layout-aware)" }
+)
+bind("SUPER", "tab", dispatch("workspace", "m+1"), { description = "next workspace" })
+bind("SUPER SHIFT", "tab", dispatch("workspace", "m-1"), { description = "previous workspace" })
+bind("SUPER SHIFT", "U", dispatch("movetoworkspace", "special"), { description = "move to special workspace" })
+bind("SUPER", "U", dispatch("togglespecialworkspace", ""), { description = "toggle special workspace" })
+bind("SUPER", "code:10", dispatch("workspace", "1"), { description = "workspace 1" })
+bind("SUPER", "code:11", dispatch("workspace", "2"), { description = "workspace 2" })
+bind("SUPER", "code:12", dispatch("workspace", "3"), { description = "workspace 3" })
+bind("SUPER", "code:13", dispatch("workspace", "4"), { description = "workspace 4" })
+bind("SUPER", "code:14", dispatch("workspace", "5"), { description = "workspace 5" })
+bind("SUPER", "code:15", dispatch("workspace", "6"), { description = "workspace 6" })
+bind("SUPER", "code:16", dispatch("workspace", "7"), { description = "workspace 7" })
+bind("SUPER", "code:17", dispatch("workspace", "8"), { description = "workspace 8" })
+bind("SUPER", "code:18", dispatch("workspace", "9"), { description = "workspace 9" })
+bind("SUPER", "code:19", dispatch("workspace", "10"), { description = "workspace 10" })
+bind("SUPER SHIFT", "code:10", dispatch("movetoworkspace", "1"), { description = "move to workspace 1" })
+bind("SUPER SHIFT", "code:11", dispatch("movetoworkspace", "2"), { description = "move to workspace 2" })
+bind("SUPER SHIFT", "code:12", dispatch("movetoworkspace", "3"), { description = "move to workspace 3" })
+bind("SUPER SHIFT", "code:13", dispatch("movetoworkspace", "4"), { description = "move to workspace 4" })
+bind("SUPER SHIFT", "code:14", dispatch("movetoworkspace", "5"), { description = "move to workspace 5" })
+bind("SUPER SHIFT", "code:15", dispatch("movetoworkspace", "6"), { description = "move to workspace 6" })
+bind("SUPER SHIFT", "code:16", dispatch("movetoworkspace", "7"), { description = "move to workspace 7" })
+bind("SUPER SHIFT", "code:17", dispatch("movetoworkspace", "8"), { description = "move to workspace 8" })
+bind("SUPER SHIFT", "code:18", dispatch("movetoworkspace", "9"), { description = "move to workspace 9" })
+bind("SUPER SHIFT", "code:19", dispatch("movetoworkspace", "10"), { description = "move to workspace 10" })
+bind("SUPER SHIFT", "bracketleft", dispatch("movetoworkspace", "-1"), { description = "move to previous workspace" })
+bind("SUPER SHIFT", "bracketright", dispatch("movetoworkspace", "+1"), { description = "move to next workspace" })
+bind("SUPER CTRL", "code:10", dispatch("movetoworkspacesilent", "1"), { description = "move silently to workspace 1" })
+bind("SUPER CTRL", "code:11", dispatch("movetoworkspacesilent", "2"), { description = "move silently to workspace 2" })
+bind("SUPER CTRL", "code:12", dispatch("movetoworkspacesilent", "3"), { description = "move silently to workspace 3" })
+bind("SUPER CTRL", "code:13", dispatch("movetoworkspacesilent", "4"), { description = "move silently to workspace 4" })
+bind("SUPER CTRL", "code:14", dispatch("movetoworkspacesilent", "5"), { description = "move silently to workspace 5" })
+bind("SUPER CTRL", "code:15", dispatch("movetoworkspacesilent", "6"), { description = "move silently to workspace 6" })
+bind("SUPER CTRL", "code:16", dispatch("movetoworkspacesilent", "7"), { description = "move silently to workspace 7" })
+bind("SUPER CTRL", "code:17", dispatch("movetoworkspacesilent", "8"), { description = "move silently to workspace 8" })
+bind("SUPER CTRL", "code:18", dispatch("movetoworkspacesilent", "9"), { description = "move silently to workspace 9" })
+bind("SUPER CTRL", "code:19", dispatch("movetoworkspacesilent", "10"), { description = "move silently to workspace 10" })
+bind("SUPER CTRL", "bracketleft", dispatch("movetoworkspacesilent", "-1"), { description = "move silently to previous workspace" })
+bind("SUPER CTRL", "bracketright", dispatch("movetoworkspacesilent", "+1"), { description = "move silently to next workspace" })
+bind("SUPER", "mouse_down", dispatch("workspace", "e+1"), { description = "next workspace" })
+bind("SUPER", "mouse_up", dispatch("workspace", "e-1"), { description = "previous workspace" })
+bind("SUPER", "period", dispatch("workspace", "e+1"), { description = "next workspace" })
+bind("SUPER", "comma", dispatch("workspace", "e-1"), { description = "previous workspace" })
+bind("SUPER", "mouse:272", dispatch("movewindow", ""), { description = "move window" })
+bind("SUPER", "mouse:273", dispatch("resizewindow", ""), { description = "resize window" })
diff --git a/config/hypr/hypridle.conf b/config/hypr/hypridle.conf
index fbf0b3ad..9ef48140 100644
--- a/config/hypr/hypridle.conf
+++ b/config/hypr/hypridle.conf
@@ -1,7 +1,7 @@
# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
# Hypridle
-# Original config submitted by https://github.com/SherLock707
-
+# Original config submitted by https://github.com/SherLock707
+
$iDIR="$HOME/.config/swaync/images/ja.png"
general {
@@ -35,12 +35,11 @@ listener {
}
# Turn off screen
-# (disabled by default)
-# listener {
-# timeout = 630 # 10.5 min
-# on-timeout = hyprctl dispatch dpms off # command to run when timeout has passed
-# on-resume = hyprctl dispatch dpms on # command to run when activity is detected after timeout has fired.
-# }
+ listener {
+ timeout = 720 # 12 min
+ on-timeout = hyprctl dispatch dpms off # command to run when timeout has passed
+ on-resume = hyprctl dispatch dpms on # command to run when activity is detected after timeout has fired.
+ }
# Suspend # disabled by default
# listener {
diff --git a/config/hypr/initial-boot.sh b/config/hypr/initial-boot.sh
index b45c31aa..84ae8c00 100755
--- a/config/hypr/initial-boot.sh
+++ b/config/hypr/initial-boot.sh
@@ -2,15 +2,15 @@
# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
# A bash script designed to run only once dotfiles installed
-# THIS SCRIPT CAN BE DELETED ONCE SUCCESSFULLY BOOTED!! And also, edit ~/.config/hypr/configs/Settings.conf
+# THIS SCRIPT CAN BE DELETED ONCE SUCCESSFULLY BOOTED!! And also, edit ${XDG_CONFIG_HOME:-$HOME/.config}/hypr/configs/Settings.conf
# NOT necessary to do since this script is only designed to run only once as long as the marker exists
-# marker file is located at ~/.config/hypr/.initial_startup_done
+# marker file is located at ${XDG_CONFIG_HOME:-$HOME/.config}/hypr/.initial_startup_done
# However, I do highly suggest not to touch it since again, as long as the marker exist, script wont run
# Variables
-scriptsDir=$HOME/.config/hypr/scripts
-wallpaper=$HOME/.config/hypr/wallpaper_effects/.wallpaper_current
-waybar_style="$HOME/.config/waybar/style/[Extra] Neon Circuit.css"
+scriptsDir=${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts
+wallpaper=${XDG_CONFIG_HOME:-$HOME/.config}/hypr/wallpaper_effects/.wallpaper_current
+waybar_style="${XDG_CONFIG_HOME:-$HOME/.config}/waybar/style/[Extra] Neon Circuit.css"
kvantum_theme="catppuccin-mocha-blue"
color_scheme="prefer-dark"
gtk_theme="Flat-Remix-GTK-Blue-Dark"
@@ -54,7 +54,7 @@ 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.
-if [ ! -f "$HOME/.config/hypr/.initial_startup_done" ]; then
+if [ ! -f "${XDG_CONFIG_HOME:-$HOME/.config}/hypr/.initial_startup_done" ]; then
# Apply appearance preferences early and synchronously to avoid startup races
# where Flatpak/libadwaita apps can default to light mode.
set_interface_pref_with_retry color-scheme "'$color_scheme'" "'$color_scheme'" || true
@@ -82,14 +82,14 @@ if [ ! -f "$HOME/.config/hypr/.initial_startup_done" ]; then
kvantummanager --set "$kvantum_theme" > /dev/null 2>&1 &
# waybar style
- #if [ -L "$HOME/.config/waybar/config" ]; then
- ## ln -sf "$waybar_style" "$HOME/.config/waybar/style.css"
+ #if [ -L "${XDG_CONFIG_HOME:-$HOME/.config}/waybar/config" ]; then
+ ## ln -sf "$waybar_style" "${XDG_CONFIG_HOME:-$HOME/.config}/waybar/style.css"
# "$scriptsDir/Refresh.sh" > /dev/null 2>&1 &
#fi
# Create a marker file to indicate that the script has been executed.
- touch "$HOME/.config/hypr/.initial_startup_done"
+ touch "${XDG_CONFIG_HOME:-$HOME/.config}/hypr/.initial_startup_done"
exit
fi
diff --git a/config/hypr/lua/env.lua b/config/hypr/lua/env.lua
index 348bf5db..cc248c20 100644
--- a/config/hypr/lua/env.lua
+++ b/config/hypr/lua/env.lua
@@ -9,7 +9,7 @@
-- - config/hypr/configs/ENVariables.conf
-- - config/hypr/UserConfigs/ENVariables.conf (active values only)
-hl.env("DOTS_VERSION", "2.3.24")
+hl.env("DOTS_VERSION", "2.3.25")
hl.env("GDK_BACKEND", "wayland,x11,*")
hl.env("QT_QPA_PLATFORM", "wayland;xcb")
hl.env("CLUTTER_BACKEND", "wayland")
@@ -19,8 +19,8 @@ hl.env("XDG_SESSION_TYPE", "wayland")
hl.env("QT_AUTO_SCREEN_SCALE_FACTOR", "1")
hl.env("QT_WAYLAND_DISABLE_WINDOWDECORATION", "1")
hl.env("QT_QPA_PLATFORMTHEME", "qt6ct")
-hl.env("QT_STYLE_OVERRIDE", "kvantum")
-hl.env("QT_QUICK_CONTROLS_STYLE", "org.hyprland.style")
+hl.env("QT_STYLE_OVERRIDE", "Fusion")
+hl.env("QT_QUICK_CONTROLS_STYLE", "Basic")
hl.env("GDK_SCALE", "1")
hl.env("QT_SCALE_FACTOR", "1")
hl.env("MOZ_ENABLE_WAYLAND", "1")
diff --git a/config/hypr/lua/keybind_helpers.lua b/config/hypr/lua/keybind_helpers.lua
index 92dc952b..97618d8f 100644
--- a/config/hypr/lua/keybind_helpers.lua
+++ b/config/hypr/lua/keybind_helpers.lua
@@ -112,17 +112,29 @@ local function dispatch(name, args)
return raw_dispatch_cmd(args)
end
- if name == "killactive" and window_api.close then
- return window_api.close()
+ if name == "killactive" then
+ if window_api.close then
+ return window_api.close()
+ end
+ if window_api.kill then
+ return window_api.kill()
+ end
+ return raw_dispatch_cmd("killactive")
end
if name == "togglefloating" and window_api.float then
return window_api.float({ action = "toggle" })
end
- if name == "fullscreen" and window_api.fullscreen then
+ if name == "fullscreen" then
+ if window_api.fullscreen then
+ if args == "1" then
+ return window_api.fullscreen({ mode = "maximized" })
+ end
+ return window_api.fullscreen({ mode = "fullscreen" })
+ end
if args == "1" then
- return window_api.fullscreen({ mode = "maximized" })
+ return exec_cmd("hyprctl dispatch 'hl.dsp.window.fullscreen({ mode = \"maximized\" })'")
end
- return window_api.fullscreen({ mode = "fullscreen" })
+ return exec_cmd("hyprctl dispatch 'hl.dsp.window.fullscreen({ mode = \"fullscreen\" })'")
end
if name == "pseudo" and window_api.pseudo then
return window_api.pseudo()
@@ -315,6 +327,7 @@ local keys_to_unbind = {
"SUPER + V",
"SUPER + W",
"SUPER + P",
+ "SUPER + R",
"SUPER + N",
"SUPER + T",
"SUPER + X",
diff --git a/config/hypr/lua/keybinds.lua b/config/hypr/lua/keybinds.lua
index 6bf71e47..3730e825 100644
--- a/config/hypr/lua/keybinds.lua
+++ b/config/hypr/lua/keybinds.lua
@@ -59,18 +59,33 @@ keybind_helpers.unbind_default_keys()
-- ==================================================
-- Section: Application launchers and utility scripts
local app_binds = {
- { "SUPER", "D", "pkill rofi || true && rofi -show drun -modi drun,filebrowser,run,window", "app launcher" },
+ {
+ "SUPER",
+ "D",
+ "pkill rofi || true; $HOME/.config/hypr/scripts/RofiFocusedWallpaperLink.sh >/dev/null 2>&1 || true; rofi -show drun -modi drun,filebrowser,run,window",
+ "app launcher",
+ },
{ "SUPER", "B", 'xdg-open "https://"', "open default browser" },
{ "SUPER", "A", "$HOME/.config/hypr/scripts/OverviewToggle.sh", "desktop overview" },
- { "SUPER", "Return", "kitty", "Open terminal" },
- { "SUPER", "E", "thunar", "file manager" },
+ { "SUPER", "Return", "$HOME/.config/hypr/scripts/LaunchTerminal.sh '$term'", "Open terminal" },
+ {
+ "SUPER",
+ "E",
+ "$HOME/.config/hypr/scripts/LaunchFileManager.sh '$files' '$term'",
+ "file manager",
+ },
{ "SUPER", "C", "$HOME/.config/hypr/scripts/rofi-ssh-menu.sh", "SSH session manager" },
{ "SUPER", "T", "$HOME/.config/hypr/scripts/ThemeChanger.sh", "Global theme switcher using Wallust" },
{ "SUPER", "H", "$HOME/.config/hypr/scripts/KeyHints.sh", "help / cheat sheet" },
{ "SUPER ALT", "R", "$HOME/.config/hypr/scripts/Refresh.sh", "refresh bar and menus" },
{ "SUPER ALT", "E", "$HOME/.config/hypr/scripts/RofiEmoji.sh", "emoji menu" },
{ "SUPER", "S", "$HOME/.config/hypr/scripts/RofiSearch.sh", "web search" },
- { "SUPER CTRL", "S", "rofi -show window", "window switcher" },
+ {
+ "SUPER CTRL",
+ "S",
+ "$HOME/.config/hypr/scripts/RofiFocusedWallpaperLink.sh >/dev/null 2>&1 || true; rofi -show window",
+ "window switcher",
+ },
{ "SUPER ALT", "O", "$HOME/.config/hypr/scripts/ChangeBlur.sh", "toggle blur" },
{ "SUPER SHIFT", "G", "$HOME/.config/hypr/scripts/GameMode.sh", "toggle game mode" },
{ "SUPER ALT", "L", "$HOME/.config/hypr/scripts/ChangeLayout.sh toggle", "toggle layouts" },
@@ -122,12 +137,12 @@ local app_binds = {
{ "SUPER ALT", "B", "$HOME/.config/hypr/scripts/WaybarLayout.sh", "waybar layout menu" },
{ "SUPER", "N", "$HOME/.config/hypr/scripts/Hyprsunset.sh toggle", "Toggle Hyprsunset - night light" },
{ "SUPER SHIFT", "M", "$HOME/.config/hypr/UserScripts/RofiBeats.sh", "online music" },
- { "SUPER", "W", "$HOME/.config/hypr/UserScripts/WallpaperSelect.sh", "select wallpaper" },
- { "SUPER SHIFT", "W", "$HOME/.config/hypr/UserScripts/WallpaperEffects.sh", "wallpaper effects" },
- { "CTRL ALT", "W", "$HOME/.config/hypr/UserScripts/WallpaperRandom.sh", "random wallpaper" },
+ { "SUPER", "W", "$HOME/.config/hypr/scripts/WallpaperSelect.sh", "select wallpaper" },
+ { "SUPER SHIFT", "W", "$HOME/.config/hypr/scripts/WallpaperEffects.sh", "wallpaper effects" },
+ { "CTRL ALT", "W", "$HOME/.config/hypr/scripts/WallpaperRandom.sh", "random wallpaper" },
{ "SUPER SHIFT", "K", "$HOME/.config/hypr/scripts/KeyBinds.sh", "search keybinds" },
{ "SUPER SHIFT", "A", "$HOME/.config/hypr/scripts/Animations.sh", "animations menu" },
- { "SUPER SHIFT", "O", "$HOME/.config/hypr/UserScripts/ZshChangeTheme.sh", "change oh-my-zsh theme" },
+ { "SUPER SHIFT", "R", "$HOME/.config/hypr/scripts/ZshChangeTheme.sh", "change oh-my-zsh theme" },
{ "SUPER ALT", "C", "$HOME/.config/hypr/UserScripts/RofiCalc.sh", "calculator" },
}
for _, app in ipairs(app_binds) do
@@ -196,7 +211,7 @@ end
-- Section: Window/session controls
bind("SUPER SHIFT", "F", dispatch("fullscreen", ""), { description = "fullscreen" })
-bind("SUPER CTRL", "F", dispatch("fullscreen", "1"), { description = "maximize window" })
+bind("SUPER", "F", dispatch("fullscreen", "1"), { description = "maximize window" })
bind("SUPER", "SPACE", dispatch("togglefloating", ""), { description = "Float current window" })
bind("SUPER CTRL", "O", dispatch("setprop", "active opaque toggle"), { description = "toggle active window opacity" })
bind(
@@ -256,12 +271,17 @@ bind(
-- Section: Layout and tiling controls
bind("SUPER CTRL", "D", dispatch("layoutmsg", "removemaster"), { description = "remove master" })
bind("SUPER", "I", dispatch("layoutmsg", "addmaster"), { description = "add master" })
-bind("SUPER", "j", exec_cmd("$HOME/.config/hypr/scripts/LuaCycleWindow.sh next"), { description = "cycle next" })
+bind(
+ "SUPER",
+ "j",
+ exec_cmd("$HOME/.config/hypr/scripts/LayoutKeybindDispatch.sh cycle-next"),
+ { description = "cycle next (layout-aware)" }
+)
bind(
"SUPER",
"k",
- exec_cmd("$HOME/.config/hypr/scripts/LuaCycleWindow.sh previous"),
- { description = "cycle previous" }
+ exec_cmd("$HOME/.config/hypr/scripts/LayoutKeybindDispatch.sh cycle-prev"),
+ { description = "cycle previous (layout-aware)" }
)
bind("SUPER CTRL", "Return", dispatch("layoutmsg", "swapwithmaster"), { description = "swap with master" })
bind("SUPER SHIFT", "I", dispatch("layoutmsg", "togglesplit"), { description = "toggle split (dwindle)" })
@@ -305,6 +325,88 @@ bind(
),
{ description = "toggle scrolling V/H" }
)
+local col_width_presets = { 0.25, 0.33, 0.5, 0.66, 0.75, 1.0 }
+local function _as_number(v)
+ if type(v) == "number" then
+ return v
+ end
+ if type(v) == "string" then
+ return tonumber(v)
+ end
+ return nil
+end
+local function _window_width(win)
+ if type(win) ~= "table" then
+ return nil
+ end
+ local sz = win.size
+ if type(sz) == "number" then
+ return sz
+ end
+ if type(sz) == "table" then
+ return _as_number(sz[1] or sz.width or sz.w)
+ end
+ return nil
+end
+local function _monitor_width(win)
+ local mon = type(win) == "table" and win.monitor or nil
+ if type(mon) == "table" then
+ local w = _as_number(mon.width or mon.w or (type(mon.size) == "table" and (mon.size[1] or mon.size.width)))
+ if w ~= nil then
+ return w
+ end
+ end
+ if hl.get_active_monitor then
+ local active_mon = hl.get_active_monitor()
+ if type(active_mon) == "table" then
+ local w = _as_number(active_mon.width or active_mon.w or (type(active_mon.size) == "table" and (active_mon.size[1] or active_mon.size.width)))
+ if w ~= nil then
+ return w
+ end
+ end
+ end
+ return nil
+end
+bind("SUPER", "R", function()
+ local ws = hl.get_active_workspace and hl.get_active_workspace() or nil
+ local ws_layout = ws and (ws.tiled_layout or ws.tiledLayout) or nil
+ if ws_layout ~= "scrolling" then
+ return
+ end
+
+ local w = hl.get_active_window and hl.get_active_window() or nil
+ local col = w ~= nil and w.layout and w.layout.column or nil
+ local current_width = nil
+ if type(col) == "table" then
+ current_width = _as_number(col.width)
+ else
+ current_width = _as_number(col)
+ end
+ if type(current_width) ~= "number" then
+ local ww = _window_width(w)
+ local mw = _monitor_width(w)
+ if type(ww) == "number" and type(mw) == "number" and mw > 0 then
+ current_width = ww / mw
+ end
+ end
+ if type(current_width) ~= "number" or current_width <= 0 then
+ return
+ end
+ if current_width > 1 then
+ current_width = 1
+ end
+
+ local closest, best = 1, math.huge
+ for i, v in ipairs(col_width_presets) do
+ local diff = math.abs(v - current_width)
+ if diff < best then
+ best, closest = diff, i
+ end
+ end
+
+ local nextIdx = closest % #col_width_presets + 1
+ hl.dispatch(hl.dsp.layout("colresize " .. tostring(col_width_presets[nextIdx])))
+end, { description = "cycle column width preset (scrolling)" })
bind("ALT", "Tab", exec_cmd("$HOME/.config/hypr/scripts/LuaCycleWindow.sh next"), { description = "cycle next window" })
-- Section: Audio, media, and hardware keys
@@ -511,10 +613,30 @@ bind("SUPER SHIFT", "Tab", dispatch("changegroupactive", "b"), { description = "
bind("SUPER CTRL", "K", dispatch("moveintogroup", "l"), { description = "Move left into group" })
bind("SUPER CTRL", "L", dispatch("moveintogroup", "r"), { description = "Move Right into group" })
bind("SUPER CTRL", "H", dispatch("moveoutofgroup", ""), { description = "Move active out of group" })
-bind("SUPER", "left", dispatch("movefocus", "l"), { description = "focus left" })
-bind("SUPER", "right", dispatch("movefocus", "r"), { description = "focus right" })
-bind("SUPER", "up", dispatch("movefocus", "u"), { description = "focus up" })
-bind("SUPER", "down", dispatch("movefocus", "d"), { description = "focus down" })
+bind(
+ "SUPER",
+ "left",
+ exec_cmd("$HOME/.config/hypr/scripts/LayoutKeybindDispatch.sh focus-left"),
+ { description = "focus left (layout-aware)" }
+)
+bind(
+ "SUPER",
+ "right",
+ exec_cmd("$HOME/.config/hypr/scripts/LayoutKeybindDispatch.sh focus-right"),
+ { description = "focus right (layout-aware)" }
+)
+bind(
+ "SUPER",
+ "up",
+ exec_cmd("$HOME/.config/hypr/scripts/LayoutKeybindDispatch.sh focus-up"),
+ { description = "focus up (layout-aware)" }
+)
+bind(
+ "SUPER",
+ "down",
+ exec_cmd("$HOME/.config/hypr/scripts/LayoutKeybindDispatch.sh focus-down"),
+ { description = "focus down (layout-aware)" }
+)
-- Section: Workspace navigation and assignment
-- Keep legacy relative workspace focus script binds commented for rollback during Lua API migration.
diff --git a/config/hypr/lua/settings.lua b/config/hypr/lua/settings.lua
index 78ae61e2..eaa5aeeb 100644
--- a/config/hypr/lua/settings.lua
+++ b/config/hypr/lua/settings.lua
@@ -159,7 +159,7 @@ hl.config({
hl.config({
cursor = {
sync_gsettings_theme = true,
- no_hardware_cursors = 2,
+ no_hardware_cursors = 0,
enable_hyprcursor = true,
warp_on_change_workspace = 2,
no_warps = true,
diff --git a/config/hypr/lua/startup.lua b/config/hypr/lua/startup.lua
index 6c189113..1fa4df82 100644
--- a/config/hypr/lua/startup.lua
+++ b/config/hypr/lua/startup.lua
@@ -25,9 +25,18 @@ local function exec_once(cmd)
local key = cmd:gsub("[^%w_.-]", "_"):sub(1, 80)
local marker = "/tmp/hypr-lua-exec-once-" .. session .. "-" .. key
local log = "/tmp/hypr-lua-startup-" .. key .. ".log"
- local readiness = "runtime=${XDG_RUNTIME_DIR:-/run/user/$(id -u)}; export XDG_RUNTIME_DIR=\"$runtime\"; for _ in $(seq 1 200); do if [ -n \"$WAYLAND_DISPLAY\" ] && [ -S \"$runtime/$WAYLAND_DISPLAY\" ]; then break; fi; for sock in \"$runtime\"/wayland-[0-9]*; do [ -S \"$sock\" ] || continue; case \"$(basename \"$sock\")\" in *awww*) continue ;; esac; export WAYLAND_DISPLAY=\"$(basename \"$sock\")\"; break 2; done; sleep 0.1; done; if [ -n \"$HYPRLAND_INSTANCE_SIGNATURE\" ]; then hypr_sock=\"$runtime/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket.sock\"; for _ in $(seq 1 200); do [ -S \"$hypr_sock\" ] && break; sleep 0.1; done; fi"
+ local readiness =
+ 'runtime=${XDG_RUNTIME_DIR:-/run/user/$(id -u)}; export XDG_RUNTIME_DIR="$runtime"; for _ in $(seq 1 200); do if [ -n "$WAYLAND_DISPLAY" ] && [ -S "$runtime/$WAYLAND_DISPLAY" ]; then break; fi; for sock in "$runtime"/wayland-[0-9]*; do [ -S "$sock" ] || continue; case "$(basename "$sock")" in *awww*) continue ;; esac; export WAYLAND_DISPLAY="$(basename "$sock")"; break 2; done; sleep 0.1; done; if [ -n "$HYPRLAND_INSTANCE_SIGNATURE" ]; then hypr_sock="$runtime/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket.sock"; for _ in $(seq 1 200); do [ -S "$hypr_sock" ] && break; sleep 0.1; done; fi'
local inner = readiness .. "; " .. cmd
- local script = "[ -e " .. shell_quote(marker) .. " ] || { touch " .. shell_quote(marker) .. " && sh -lc " .. shell_quote(inner) .. " >>" .. shell_quote(log) .. " 2>&1 & }"
+ local script = "[ -e "
+ .. shell_quote(marker)
+ .. " ] || { touch "
+ .. shell_quote(marker)
+ .. " && sh -lc "
+ .. shell_quote(inner)
+ .. " >>"
+ .. shell_quote(log)
+ .. " 2>&1 & }"
os.execute("sh -lc " .. shell_quote(script))
end
-- Prefer lifecycle-hook orchestration for clarity while keeping exec_once
@@ -39,9 +48,11 @@ local startup_commands = {
"systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP",
scriptsDir .. "/Polkit.sh",
"nm-applet",
- "nm-tray",
+ -- nm-tray now optional for ubuntu
+ -- "nm-tray",
"swaync",
scriptsDir .. "/PortalHyprland.sh",
+ "sh $HOME/.config/hypr/scripts/ApplyThemeMode.sh",
"sh " .. scriptsDir .. "/WaybarStartup.sh",
"qs -c overview",
"hypridle",
@@ -67,5 +78,5 @@ end
-- Optional startup examples retained from the original config:
-- exec_once("mpvpaper '*' -o \"load-scripts=no no-audio --loop\" \"\"")
--- exec_once(userScripts .. "/WallpaperAutoChange.sh " .. wallDir)
+-- exec_once(scriptsDir .. "/WallpaperAutoChange.sh " .. wallDir)
-- exec_once(userScripts .. "/RainbowBorders.sh")
diff --git a/config/hypr/lua/user_keybinds_helper.lua b/config/hypr/lua/user_keybinds_helper.lua
index f9d4aa0c..66398bd9 100644
--- a/config/hypr/lua/user_keybinds_helper.lua
+++ b/config/hypr/lua/user_keybinds_helper.lua
@@ -125,14 +125,26 @@ local function dispatch(name, args)
if name == "exec" then
return exec_cmd(args)
end
- if name == "killactive" and window_api.close then
- return window_api.close()
+ if name == "killactive" then
+ if window_api.close then
+ return window_api.close()
+ end
+ if window_api.kill then
+ return window_api.kill()
+ end
+ return raw_dispatch_cmd("killactive")
end
- if name == "fullscreen" and window_api.fullscreen then
+ if name == "fullscreen" then
+ if window_api.fullscreen then
+ if args == "1" then
+ return window_api.fullscreen({ mode = "maximized" })
+ end
+ return window_api.fullscreen({ mode = "fullscreen" })
+ end
if args == "1" then
- return window_api.fullscreen({ mode = "maximized" })
+ return exec_cmd("hyprctl dispatch 'hl.dsp.window.fullscreen({ mode = \"maximized\" })'")
end
- return window_api.fullscreen({ mode = "fullscreen" })
+ return exec_cmd("hyprctl dispatch 'hl.dsp.window.fullscreen({ mode = \"fullscreen\" })'")
end
if name == "movefocus" and dsp and dsp.focus then
return function()
diff --git a/config/hypr/lua/user_overrides.lua b/config/hypr/lua/user_overrides.lua
index 42502315..149962d5 100644
--- a/config/hypr/lua/user_overrides.lua
+++ b/config/hypr/lua/user_overrides.lua
@@ -11,6 +11,36 @@ local configHome = os.getenv("XDG_CONFIG_HOME") or ((os.getenv("HOME") or "") ..
local hyprDir = configHome .. "/hypr"
local systemDir = hyprDir .. "/configs"
local userDir = configHome .. "/hypr/UserConfigs"
+local function has_kvantum_qml_module()
+ local cmd = "find /usr/lib /usr/lib64 /usr/share -type d -path '*/qml/*/kvantum' -print -quit 2>/dev/null"
+ local pipe = io.popen(cmd, "r")
+ if not pipe then
+ return false
+ end
+ local output = pipe:read("*a") or ""
+ pipe:close()
+ return output:match("%S") ~= nil
+end
+
+local function apply_qt_style_fallbacks()
+ if not hl or not hl.env then
+ return
+ end
+
+ if has_kvantum_qml_module() then
+ return
+ end
+
+ local style_override = (os.getenv("QT_STYLE_OVERRIDE") or ""):lower()
+ if style_override == "kvantum" or style_override == "kvantum-dark" then
+ hl.env("QT_STYLE_OVERRIDE", "Fusion")
+ end
+
+ local quick_controls = (os.getenv("QT_QUICK_CONTROLS_STYLE") or ""):lower()
+ if quick_controls == "kvantum" then
+ hl.env("QT_QUICK_CONTROLS_STYLE", "Basic")
+ end
+end
local function load_optional(path)
local ok, err = pcall(dofile, path)
@@ -61,6 +91,7 @@ end
if not loaded_user_split then
load_optional(userDir .. "/user_overrides.lua") -- legacy single-file support
end
+apply_qt_style_fallbacks()
-- Legacy compatibility: import UserKeybinds.conf when user_keybinds.lua is missing.
do
diff --git a/config/hypr/lua/workspaces.lua b/config/hypr/lua/workspaces.lua
index 287326ca..0ed3d8bf 100644
--- a/config/hypr/lua/workspaces.lua
+++ b/config/hypr/lua/workspaces.lua
@@ -10,3 +10,7 @@
-- Example:
-- hl.workspace_rule({ workspace = "1", monitor = "eDP-1" })
+-- hl.workspace_rule({ workspace = "1", monitor = "HDMI-A-1", layout = "scrolling" })
+-- hl.workspace_rule({ workspace = "1", monitor = "HDMI-A-1", layout = "dwindle" })
+-- hl.workspace_rule({ workspace = "1", monitor = "HDMI-A-1", layout = "master" })
+-- hl.workspace_rule({ workspace = "1", monitor = "HDMI-A-1", layout = "monocle" })
diff --git a/config/hypr/scripts/Add-override-Hyprland-Portal.sh b/config/hypr/scripts/Add-override-Hyprland-Portal.sh
index 1f321d51..b8a10ba4 100755
--- a/config/hypr/scripts/Add-override-Hyprland-Portal.sh
+++ b/config/hypr/scripts/Add-override-Hyprland-Portal.sh
@@ -14,7 +14,7 @@ SCRIPT_NAME="$(basename "$0")"
DRY_RUN=0
ACTION="apply"
-OVERRIDE_DIR="$HOME/.config/systemd/user/xdg-desktop-portal.service.d"
+OVERRIDE_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/systemd/user/xdg-desktop-portal.service.d"
OVERRIDE_FILE="$OVERRIDE_DIR/override.conf"
PORTAL_UNITS=(
"xdg-desktop-portal.service"
diff --git a/config/hypr/scripts/AirplaneMode.sh b/config/hypr/scripts/AirplaneMode.sh
index 21aa04a8..17a8d9ac 100755
--- a/config/hypr/scripts/AirplaneMode.sh
+++ b/config/hypr/scripts/AirplaneMode.sh
@@ -7,7 +7,7 @@
# ==================================================
# Airplane Mode. Turning on or off all wifi using rfkill.
-notif="$HOME/.config/swaync/images/ja.png"
+notif="${XDG_CONFIG_HOME:-$HOME/.config}/swaync/images/ja.png"
# Check if any wireless device is blocked
wifi_blocked=$(rfkill list wifi | grep -o "Soft blocked: yes")
diff --git a/config/hypr/scripts/Animations.sh b/config/hypr/scripts/Animations.sh
index 5fb77750..ae93429b 100755
--- a/config/hypr/scripts/Animations.sh
+++ b/config/hypr/scripts/Animations.sh
@@ -13,22 +13,44 @@ if pidof rofi > /dev/null; then
fi
# Variables
-iDIR="$HOME/.config/swaync/images"
-SCRIPTSDIR="$HOME/.config/hypr/scripts"
-animations_dir="$HOME/.config/hypr/animations"
-UserConfigs="$HOME/.config/hypr/UserConfigs"
-rofi_theme="$HOME/.config/rofi/config-Animations.rasi"
-msg='❗NOTE:❗ This will copy animations into UserAnimations.conf'
+iDIR="${XDG_CONFIG_HOME:-$HOME/.config}/swaync/images"
+SCRIPTSDIR="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts"
+animations_dir="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/animations"
+UserConfigs="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/UserConfigs"
+rofi_theme="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/config-Animations.rasi"
+config_home="${XDG_CONFIG_HOME:-$HOME/.config}"
+hypr_dir="$config_home/hypr"
+lua_entry="$hypr_dir/hyprland.lua"
+legacy_lua_entry="$config_home/hyprland.lua"
+
+# Detect active Hyprland config mode (Lua entrypoint vs legacy .conf includes)
+if [[ -f "$lua_entry" || -f "$legacy_lua_entry" ]]; then
+ hypr_config_mode="lua"
+ animation_ext="lua"
+ target_animation_file="$UserConfigs/user_animations.lua"
+ msg='❗NOTE:❗ This will copy animations into user_animations.lua'
+else
+ hypr_config_mode="conf"
+ animation_ext="conf"
+ target_animation_file="$UserConfigs/UserAnimations.conf"
+ msg='❗NOTE:❗ This will copy animations into UserAnimations.conf'
+fi
+
# list of animation files, sorted alphabetically with numbers first
-animations_list=$(find -L "$animations_dir" -maxdepth 1 -type f | sed 's/.*\///' | sed 's/\.conf$//' | sort -V)
+animations_list=$(find -L "$animations_dir" -maxdepth 1 -type f -name "*.${animation_ext}" | sed 's/.*\///' | sed "s/\.${animation_ext}$//" | sort -V)
+
+if [[ -z "$animations_list" ]]; then
+ notify-send -u normal -i "$iDIR/ja.png" "No animation presets found" "Expected *.${animation_ext} in $animations_dir"
+ exit 0
+fi
# Rofi Menu
-chosen_file=$(echo "$animations_list" | rofi -i -dmenu -config $rofi_theme -mesg "$msg")
+chosen_file=$(echo "$animations_list" | rofi -i -dmenu -config "$rofi_theme" -mesg "$msg")
# Check if a file was selected
if [[ -n "$chosen_file" ]]; then
- full_path="$animations_dir/$chosen_file.conf"
- cp "$full_path" "$UserConfigs/UserAnimations.conf"
+ full_path="$animations_dir/$chosen_file.$animation_ext"
+ cp "$full_path" "$target_animation_file"
notify-send -u low -i "$iDIR/ja.png" "$chosen_file" "Hyprland Animation Loaded"
fi
diff --git a/config/hypr/scripts/ApplyThemeMode.sh b/config/hypr/scripts/ApplyThemeMode.sh
new file mode 100755
index 00000000..f0b45aaf
--- /dev/null
+++ b/config/hypr/scripts/ApplyThemeMode.sh
@@ -0,0 +1,11 @@
+#!/usr/bin/env bash
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
+# Re-apply saved Dark/Light mode on startup without toggling.
+
+SCRIPTSDIR="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts"
+"$SCRIPTSDIR/DarkLight.sh" --apply-current --preserve-wallpaper --no-notify
diff --git a/config/hypr/scripts/Brightness.sh b/config/hypr/scripts/Brightness.sh
index bf0f4bf1..d3f221bf 100755
--- a/config/hypr/scripts/Brightness.sh
+++ b/config/hypr/scripts/Brightness.sh
@@ -7,7 +7,7 @@
# ==================================================
# Script for Monitor backlights (if supported) using brightnessctl
-iDIR="$HOME/.config/swaync/icons"
+iDIR="${XDG_CONFIG_HOME:-$HOME/.config}/swaync/icons"
notification_timeout=1000
step=10 # INCREASE/DECREASE BY THIS VALUE
diff --git a/config/hypr/scripts/BrightnessKbd.sh b/config/hypr/scripts/BrightnessKbd.sh
index 5bd09a78..ae24b2b2 100755
--- a/config/hypr/scripts/BrightnessKbd.sh
+++ b/config/hypr/scripts/BrightnessKbd.sh
@@ -7,7 +7,7 @@
# ==================================================
# Script for keyboard backlights (if supported) using brightnessctl
-iDIR="$HOME/.config/swaync/icons"
+iDIR="${XDG_CONFIG_HOME:-$HOME/.config}/swaync/icons"
# Get keyboard brightness
get_kbd_backlight() {
diff --git a/config/hypr/scripts/ChangeBlur.sh b/config/hypr/scripts/ChangeBlur.sh
index 10b5914e..ca1be5ad 100755
--- a/config/hypr/scripts/ChangeBlur.sh
+++ b/config/hypr/scripts/ChangeBlur.sh
@@ -7,7 +7,7 @@
# ==================================================
# Script for changing blurs on the fly
-notif="$HOME/.config/swaync/images"
+notif="${XDG_CONFIG_HOME:-$HOME/.config}/swaync/images"
STATE=$(hyprctl -j getoption decoration:blur:passes | jq ".int")
diff --git a/config/hypr/scripts/ChangeLayout.sh b/config/hypr/scripts/ChangeLayout.sh
index 3c81bcbe..4e241e85 100755
--- a/config/hypr/scripts/ChangeLayout.sh
+++ b/config/hypr/scripts/ChangeLayout.sh
@@ -5,36 +5,168 @@
# 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"
+# Switch Hyprland layouts per active monitor/workspace.
+# This avoids global layout mutations and keeps workspace-specific rules intact.
+notif="${XDG_CONFIG_HOME:-$HOME/.config}/swaync/images/ja.png"
+persist_layout_script="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts/PersistWorkspaceLayout.sh"
layouts=(master dwindle scrolling monocle)
quiet_mode=0
+normalize_layout() {
+ case "$1" in
+ master | dwindle | scrolling | monocle)
+ printf '%s\n' "$1"
+ ;;
+ *)
+ printf '\n'
+ ;;
+ esac
+}
+
+wait_for_layout() {
+ local target="$1"
+ local actual=""
+ local attempt
+
+ for attempt in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15; do
+ actual="$(get_layout)"
+ if [[ "$actual" == "$target" ]]; then
+ printf '%s\n' "$actual"
+ return 0
+ fi
+ sleep 0.03
+ done
+
+ printf '%s\n' "$actual"
+ return 1
+}
+
+persist_current_workspace_layout() {
+ local target_layout="$1"
+
+ if [[ ! -x "$persist_layout_script" ]]; then
+ return 0
+ fi
+
+ "$persist_layout_script" --quiet --layout "$target_layout" >/dev/null 2>&1 || true
+}
+
+get_active_workspace_json() {
+ hyprctl -j activeworkspace 2>/dev/null || printf '{}'
+}
+
get_layout() {
- hyprctl -j getoption general:layout | jq -r '.str'
+ local ws_json layout
+
+ ws_json="$(get_active_workspace_json)"
+ layout="$(jq -r '.tiledLayout // .tiled_layout // .layout // empty' <<<"$ws_json" 2>/dev/null || true)"
+ layout="$(normalize_layout "$layout")"
+
+ if [[ -z "$layout" ]]; then
+ layout="$(hyprctl -j getoption general:layout 2>/dev/null | jq -r '.str // empty' 2>/dev/null || true)"
+ layout="$(normalize_layout "$layout")"
+ fi
+
+ if [[ -z "$layout" ]]; then
+ layout="dwindle"
+ fi
+
+ printf '%s\n' "$layout"
}
-set_hypr_layout() {
+get_workspace_selector() {
+ local ws_json="$1"
+ local ws_id ws_name
+
+ ws_id="$(jq -r '.id // empty' <<<"$ws_json" 2>/dev/null || true)"
+ ws_name="$(jq -r '.name // empty' <<<"$ws_json" 2>/dev/null || true)"
+
+ if [[ "$ws_id" =~ ^[0-9]+$ ]] && ((ws_id > 0)); then
+ printf '%s\n' "$ws_id"
+ return 0
+ fi
+
+ if [[ -n "$ws_name" && "$ws_name" != "null" ]]; then
+ if [[ "$ws_name" == name:* || "$ws_name" == special:* ]]; then
+ printf '%s\n' "$ws_name"
+ else
+ printf 'name:%s\n' "$ws_name"
+ fi
+ return 0
+ fi
+
+ return 1
+}
+
+get_workspace_label() {
+ local ws_json="$1"
+ local ws_name ws_id
+
+ ws_name="$(jq -r '.name // empty' <<<"$ws_json" 2>/dev/null || true)"
+ ws_id="$(jq -r '.id // empty' <<<"$ws_json" 2>/dev/null || true)"
+
+ if [[ -n "$ws_name" && "$ws_name" != "null" ]]; then
+ printf '%s\n' "$ws_name"
+ return
+ fi
+
+ if [[ -n "$ws_id" && "$ws_id" != "null" ]]; then
+ printf '%s\n' "$ws_id"
+ return
+ fi
+
+ printf 'current\n'
+}
+
+get_monitor_name() {
+ local ws_json="$1"
+ jq -r '.monitor // empty' <<<"$ws_json" 2>/dev/null || true
+}
+
+escape_lua_string() {
+ local value="$1"
+ value="${value//\\/\\\\}"
+ value="${value//\"/\\\"}"
+ printf '%s' "$value"
+}
+
+is_ok_output() {
+ local output="$1"
+ local normalized
+
+ normalized="$(printf '%s\n' "$output" | tr -d '\r' | sed '/^[[:space:]]*$/d')"
+ [[ -z "$normalized" || "$normalized" == "ok" ]]
+}
+
+set_workspace_layout_rule() {
local target="$1"
- local output
+ local ws_json workspace_selector monitor_name output
+ local ws_escaped monitor_escaped target_escaped
+
+ ws_json="$(get_active_workspace_json)"
+ workspace_selector="$(get_workspace_selector "$ws_json" || true)"
+ monitor_name="$(get_monitor_name "$ws_json")"
- output="$(hyprctl keyword general:layout "$target" 2>&1)"
+ if [[ -z "$workspace_selector" || -z "$monitor_name" ]]; then
+ echo "Unable to resolve active workspace context" >&2
+ return 1
+ fi
+
+ output="$(hyprctl keyword workspace "${workspace_selector}, monitor:${monitor_name}, layout:${target}" 2>&1 || true)"
if grep -q "keyword can't work with non-legacy parsers" <<<"$output"; then
- output="$(hyprctl eval "hl.config({ general = { layout = \"${target}\" } })" 2>&1)"
+ ws_escaped="$(escape_lua_string "$workspace_selector")"
+ monitor_escaped="$(escape_lua_string "$monitor_name")"
+ target_escaped="$(escape_lua_string "$target")"
+ output="$(hyprctl eval "hl.workspace_rule({ workspace = \"${ws_escaped}\", monitor = \"${monitor_escaped}\", layout = \"${target_escaped}\" })" 2>&1 || true)"
fi
- if ! grep -q "^ok$" <<<"$output"; then
+ if ! is_ok_output "$output"; then
echo "$output" >&2
return 1
fi
}
-hypr_keyword() {
- hyprctl keyword "$@" >/dev/null 2>&1 || true
-}
-
next_layout() {
local current="$1"
local i
@@ -49,65 +181,24 @@ next_layout() {
set_layout() {
local target="$1"
+ local ws_json workspace_label monitor_name actual
- if ! set_hypr_layout "$target"; then
+ ws_json="$(get_active_workspace_json)"
+ workspace_label="$(get_workspace_label "$ws_json")"
+ monitor_name="$(get_monitor_name "$ws_json")"
+
+ if ! set_workspace_layout_rule "$target"; then
if [[ "$quiet_mode" -eq 0 ]]; then
notify-send -e -u critical -i "$notif" " Layout switch failed: $target"
fi
return 1
fi
- hypr_keyword unbind SUPER,j
- hypr_keyword unbind SUPER,k
- hypr_keyword bind SUPER,j,cyclenext
- hypr_keyword bind SUPER,k,cyclenext,prev
- hypr_keyword unbind SUPER,left
- hypr_keyword unbind SUPER,right
- hypr_keyword unbind SUPER,up
- hypr_keyword unbind SUPER,down
- hypr_keyword unbind SUPER,O
-
- case "$target" in
- "dwindle")
- hypr_keyword bind SUPER,left,cyclenext,prev
- hypr_keyword bind SUPER,up,cyclenext,prev
- hypr_keyword bind SUPER,right,cyclenext
- hypr_keyword bind SUPER,down,cyclenext
- hypr_keyword bind SUPER,O,layoutmsg,togglesplit
- ;;
- "scrolling")
- hypr_keyword bind SUPER,left,cyclenext,prev
- hypr_keyword bind SUPER,up,cyclenext,prev
- hypr_keyword bind SUPER,right,cyclenext
- hypr_keyword bind SUPER,down,cyclenext
- ;;
- "monocle")
- hypr_keyword bind SUPER,left,layoutmsg,cycleprev
- hypr_keyword bind SUPER,up,layoutmsg,cycleprev
- hypr_keyword bind SUPER,right,layoutmsg,cyclenext
- hypr_keyword bind SUPER,down,layoutmsg,cyclenext
- ;;
- "master")
- hypr_keyword bind SUPER,left,movefocus,l
- hypr_keyword bind SUPER,right,movefocus,r
- hypr_keyword bind SUPER,up,movefocus,u
- hypr_keyword bind SUPER,down,movefocus,d
- ;;
- *)
- hypr_keyword bind SUPER,left,movefocus,l
- hypr_keyword bind SUPER,right,movefocus,r
- hypr_keyword bind SUPER,up,movefocus,u
- hypr_keyword bind SUPER,down,movefocus,d
- echo "Unknown layout: $target" >&2
- return 1
- ;;
- esac
-
- local actual
- actual="$(get_layout)"
+ actual="$(wait_for_layout "$target")"
if [[ "$actual" == "$target" ]]; then
+ persist_current_workspace_layout "$target"
if [[ "$quiet_mode" -eq 0 ]]; then
- notify-send -e -u low -i "$notif" " ${actual^} Layout"
+ notify-send -e -u low -i "$notif" " ${actual^} Layout · WS ${workspace_label}${monitor_name:+ @ ${monitor_name}}"
fi
else
if [[ "$quiet_mode" -eq 0 ]]; then
@@ -127,16 +218,20 @@ arg="${1:-toggle}"
case "$arg" in
init)
- set_layout "$current"
+ # No startup keybind rebinding required anymore.
+ exit 0
+ ;;
+current | status | get)
+ printf '%s\n' "$current"
;;
-toggle|next)
+toggle | next)
set_layout "$(next_layout "$current")"
;;
-master|dwindle|scrolling|monocle)
+master | dwindle | scrolling | monocle)
set_layout "$arg"
;;
*)
- echo "Usage: $(basename "$0") [--quiet|--no-notify] [toggle|next|init|master|dwindle|scrolling|monocle]" >&2
+ echo "Usage: $(basename "$0") [--quiet|--no-notify] [toggle|next|init|current|master|dwindle|scrolling|monocle]" >&2
exit 1
;;
esac
diff --git a/config/hypr/scripts/ChangeStarshipPrompt.sh b/config/hypr/scripts/ChangeStarshipPrompt.sh
new file mode 100755
index 00000000..44e50936
--- /dev/null
+++ b/config/hypr/scripts/ChangeStarshipPrompt.sh
@@ -0,0 +1,78 @@
+#!/usr/bin/env bash
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
+# Switch Starship prompt configs via Rofi.
+
+CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
+STARSHIP_DIR="$CONFIG_HOME/starship"
+HYPR_STARSHIP_DIR="$CONFIG_HOME/hypr/starship"
+STARSHIP_CONFIG="$CONFIG_HOME/starship.toml"
+BACKUP_FILE="$STARSHIP_CONFIG.original"
+ROFI_THEME="$CONFIG_HOME/rofi/config-starship.rasi"
+RESTORE_LABEL="Retore orignal prompt"
+
+if ! command -v starship >/dev/null 2>&1; then
+ echo "starship is not installed"
+ exit 1
+fi
+
+if [[ ! -f "$ROFI_THEME" ]]; then
+ echo "Rofi theme not found: $ROFI_THEME"
+ exit 1
+fi
+
+if [[ ! -d "$STARSHIP_DIR" ]]; then
+ echo "Starship config directory not found: $STARSHIP_DIR"
+ exit 1
+fi
+
+mapfile -t available_prompts < <(find "$STARSHIP_DIR" -maxdepth 1 -type f -name "*.toml" -printf "%f\n" 2>/dev/null | sort -V)
+
+if [[ ${#available_prompts[@]} -eq 0 ]]; then
+ echo "No Starship prompt files found in $STARSHIP_DIR"
+ exit 1
+fi
+
+rofi_options=("${available_prompts[@]}")
+if [[ -f "$BACKUP_FILE" ]]; then
+ rofi_options+=("$RESTORE_LABEL")
+fi
+
+selection="$(printf '%s\n' "${rofi_options[@]}" | rofi -dmenu -i -p "Select Starship Prompt" -mesg "Select Starship Prompt" -theme "$ROFI_THEME")"
+
+if [[ -z "$selection" ]]; then
+ exit 0
+fi
+
+if [[ "$selection" == "$RESTORE_LABEL" ]]; then
+ if [[ -f "$BACKUP_FILE" ]]; then
+ if [[ -L "$STARSHIP_CONFIG" ]]; then
+ rm -f "$STARSHIP_CONFIG"
+ fi
+ cp -f "$BACKUP_FILE" "$STARSHIP_CONFIG"
+ else
+ echo "Backup not found: $BACKUP_FILE"
+ fi
+ exit 0
+fi
+
+selected_path="$STARSHIP_DIR/$selection"
+if [[ ! -f "$selected_path" && -f "$HYPR_STARSHIP_DIR/$selection" ]]; then
+ selected_path="$HYPR_STARSHIP_DIR/$selection"
+fi
+
+if [[ ! -f "$selected_path" ]]; then
+ echo "Selected prompt not found: $selection"
+ exit 1
+fi
+
+if [[ -f "$STARSHIP_CONFIG" && ! -L "$STARSHIP_CONFIG" ]]; then
+ cp -f "$STARSHIP_CONFIG" "$BACKUP_FILE"
+ rm -f "$STARSHIP_CONFIG"
+fi
+
+ln -sfn "$selected_path" "$STARSHIP_CONFIG"
diff --git a/config/hypr/scripts/ClipManager.sh b/config/hypr/scripts/ClipManager.sh
index e3fbd066..19e15fd6 100755
--- a/config/hypr/scripts/ClipManager.sh
+++ b/config/hypr/scripts/ClipManager.sh
@@ -8,7 +8,7 @@
# Clipboard Manager. This script uses cliphist, rofi, and wl-copy.
# Variables
-rofi_theme="$HOME/.config/rofi/config-clipboard.rasi"
+rofi_theme="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/config-clipboard.rasi"
msg='👀 **note** CTRL DEL = cliphist del (entry) or ALT DEL - cliphist wipe (all)'
# Actions:
# CTRL Del to delete an entry
diff --git a/config/hypr/scripts/DarkLight.sh b/config/hypr/scripts/DarkLight.sh
index 5b1cc3e7..16f1a4ef 100755
--- a/config/hypr/scripts/DarkLight.sh
+++ b/config/hypr/scripts/DarkLight.sh
@@ -13,24 +13,79 @@ PICTURES_DIR="$(xdg-user-dir PICTURES 2>/dev/null || echo "$HOME/Pictures")"
wallpaper_base_path="$PICTURES_DIR/wallpapers/Dynamic-Wallpapers"
dark_wallpapers="$wallpaper_base_path/Dark"
light_wallpapers="$wallpaper_base_path/Light"
-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"
+hypr_config_path="${XDG_CONFIG_HOME:-$HOME/.config}/hypr"
+swaync_style="${XDG_CONFIG_HOME:-$HOME/.config}/swaync/style.css"
+ags_style="${XDG_CONFIG_HOME:-$HOME/.config}/ags/user/style.css"
+SCRIPTSDIR="${XDG_CONFIG_HOME:-$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"
+notif="${XDG_CONFIG_HOME:-$HOME/.config}/swaync/images/bell.png"
+wallust_rofi="${XDG_CONFIG_HOME:-$HOME/.config}/wallust/templates/colors-rofi.rasi"
+theme_state_dir="${XDG_STATE_HOME:-$HOME/.local/state}/hypr"
+theme_state_file="$theme_state_dir/theme_mode"
+legacy_theme_state_file="$HOME/.cache/.theme_mode"
-kitty_conf="$HOME/.config/kitty/kitty.conf"
+kitty_conf="${XDG_CONFIG_HOME:-$HOME/.config}/kitty/kitty.conf"
-wallust_config="$HOME/.config/wallust/wallust.toml"
+wallust_config="${XDG_CONFIG_HOME:-$HOME/.config}/wallust/wallust.toml"
pallete_dark="dark16"
pallete_light="light16"
-qt5ct_dark="$HOME/.config/qt5ct/colors/Catppuccin-Mocha.conf"
-qt5ct_light="$HOME/.config/qt5ct/colors/Catppuccin-Latte.conf"
-qt6ct_dark="$HOME/.config/qt6ct/colors/Catppuccin-Mocha.conf"
-qt6ct_light="$HOME/.config/qt6ct/colors/Catppuccin-Latte.conf"
+qt5ct_dark="${XDG_CONFIG_HOME:-$HOME/.config}/qt5ct/colors/Catppuccin-Mocha.conf"
+qt5ct_light="${XDG_CONFIG_HOME:-$HOME/.config}/qt5ct/colors/Catppuccin-Latte.conf"
+qt6ct_dark="${XDG_CONFIG_HOME:-$HOME/.config}/qt6ct/colors/Catppuccin-Mocha.conf"
+qt6ct_light="${XDG_CONFIG_HOME:-$HOME/.config}/qt6ct/colors/Catppuccin-Latte.conf"
+apply_saved_mode=0
+notify_enabled=1
+preserve_wallpaper=0
+forced_mode=""
+
+normalize_mode() {
+ case "$1" in
+ Dark|Light) printf '%s' "$1" ;;
+ *) printf '' ;;
+ esac
+}
+
+read_saved_mode() {
+ local mode=""
+ if [ -f "$theme_state_file" ]; then
+ mode="$(normalize_mode "$(tr -d '\r\n' < "$theme_state_file")")"
+ fi
+ if [ -z "$mode" ] && [ -f "$legacy_theme_state_file" ]; then
+ mode="$(normalize_mode "$(tr -d '\r\n' < "$legacy_theme_state_file")")"
+ fi
+ [ -n "$mode" ] && printf '%s' "$mode" || printf 'Dark'
+}
+
+while [ $# -gt 0 ]; do
+ case "$1" in
+ --apply-current)
+ apply_saved_mode=1
+ ;;
+ --mode)
+ shift
+ forced_mode="$(normalize_mode "${1:-}")"
+ ;;
+ --no-notify)
+ notify_enabled=0
+ ;;
+ --preserve-wallpaper)
+ preserve_wallpaper=1
+ ;;
+ --help)
+ cat <<'EOF'
+Usage: DarkLight.sh [--apply-current] [--mode Dark|Light] [--no-notify] [--preserve-wallpaper]
+ (no args) Toggle between Dark and Light and persist selection
+ --apply-current Re-apply saved mode (defaults to Dark when unset)
+ --mode <mode> Force target mode to Dark or Light
+ --no-notify Suppress notifications
+ --preserve-wallpaper Keep current wallpaper instead of choosing random Dynamic-Wallpapers image
+EOF
+ exit 0
+ ;;
+ esac
+ shift
+done
# intial kill process
for pid in waybar rofi swaync ags swaybg; do
@@ -45,28 +100,33 @@ done
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
-if [ "$(cat $HOME/.cache/.theme_mode)" = "Light" ]; then
+# Determine target theme mode
+saved_mode="$(read_saved_mode)"
+if [ -n "$forced_mode" ]; then
+ next_mode="$forced_mode"
+elif [ "$apply_saved_mode" -eq 1 ]; then
+ next_mode="$saved_mode"
+elif [ "$saved_mode" = "Light" ]; then
next_mode="Dark"
- # Logic for Dark mode
- wallpaper_path="$dark_wallpapers"
else
next_mode="Light"
- # Logic for Light mode
- wallpaper_path="$light_wallpapers"
fi
# Select Qt color scheme templates for the upcoming mode
if [ "$next_mode" = "Dark" ]; then
+ wallpaper_path="$dark_wallpapers"
qt5ct_color_scheme="$qt5ct_dark"
qt6ct_color_scheme="$qt6ct_dark"
else
+ wallpaper_path="$light_wallpapers"
qt5ct_color_scheme="$qt5ct_light"
qt6ct_color_scheme="$qt6ct_light"
fi
# Function to update theme mode for the next cycle
update_theme_mode() {
- echo "$next_mode" > "$HOME/.cache/.theme_mode"
+ mkdir -p "$theme_state_dir" "$HOME/.cache"
+ echo "$next_mode" > "$theme_state_file"
+ echo "$next_mode" > "$legacy_theme_state_file"
}
# Function to notify user
@@ -84,8 +144,8 @@ fi
# Function to set Waybar style
set_waybar_style() {
theme="$1"
- waybar_styles="$HOME/.config/waybar/style"
- waybar_style_link="$HOME/.config/waybar/style.css"
+ waybar_styles="${XDG_CONFIG_HOME:-$HOME/.config}/waybar/style"
+ waybar_style_link="${XDG_CONFIG_HOME:-$HOME/.config}/waybar/style.css"
style_prefix="\\[${theme}\\].*\\.css$"
style_file=$(find -L "$waybar_styles" -maxdepth 1 -type f -regex ".*$style_prefix" | shuf -n 1)
@@ -99,7 +159,7 @@ set_waybar_style() {
# Call the function after determining the mode
set_waybar_style "$next_mode"
-notify_user "$next_mode"
+[ "$notify_enabled" -eq 1 ] && notify_user "$next_mode"
# swaync color change
@@ -140,29 +200,31 @@ for pid_kitty in $(pidof kitty); do
done
# Set Dynamic Wallpaper for Dark or Light Mode
-if [ "$next_mode" = "Dark" ]; then
- next_wallpaper="$(find -L "${dark_wallpapers}" -type f \( -iname "*.jpg" -o -iname "*.png" \) -print0 | shuf -n1 -z | xargs -0)"
-else
- next_wallpaper="$(find -L "${light_wallpapers}" -type f \( -iname "*.jpg" -o -iname "*.png" \) -print0 | shuf -n1 -z | xargs -0)"
-fi
+if [ "$preserve_wallpaper" -eq 0 ]; then
+ if [ "$next_mode" = "Dark" ]; then
+ next_wallpaper="$(find -L "${dark_wallpapers}" -type f \( -iname "*.jpg" -o -iname "*.png" \) -print0 | shuf -n1 -z | xargs -0)"
+ else
+ next_wallpaper="$(find -L "${light_wallpapers}" -type f \( -iname "*.jpg" -o -iname "*.png" \) -print0 | shuf -n1 -z | xargs -0)"
+ fi
-# Update wallpaper using swww command
-$swww "${next_wallpaper}" $effect
+ # Update wallpaper using swww command
+ $swww "${next_wallpaper}" $effect
+fi
# Set Kvantum Manager theme & QT5/QT6 settings
if [ "$next_mode" = "Dark" ]; then
kvantum_theme="catppuccin-mocha-blue"
- #qt5ct_color_scheme="$HOME/.config/qt5ct/colors/Catppuccin-Mocha.conf"
- #qt6ct_color_scheme="$HOME/.config/qt6ct/colors/Catppuccin-Mocha.conf"
+ #qt5ct_color_scheme="${XDG_CONFIG_HOME:-$HOME/.config}/qt5ct/colors/Catppuccin-Mocha.conf"
+ #qt6ct_color_scheme="${XDG_CONFIG_HOME:-$HOME/.config}/qt6ct/colors/Catppuccin-Mocha.conf"
else
kvantum_theme="catppuccin-latte-blue"
- #qt5ct_color_scheme="$HOME/.config/qt5ct/colors/Catppuccin-Latte.conf"
- #qt6ct_color_scheme="$HOME/.config/qt6ct/colors/Catppuccin-Latte.conf"
+ #qt5ct_color_scheme="${XDG_CONFIG_HOME:-$HOME/.config}/qt5ct/colors/Catppuccin-Latte.conf"
+ #qt6ct_color_scheme="${XDG_CONFIG_HOME:-$HOME/.config}/qt6ct/colors/Catppuccin-Latte.conf"
fi
-sed -i "s|^color_scheme_path=.*$|color_scheme_path=$qt5ct_color_scheme|" "$HOME/.config/qt5ct/qt5ct.conf"
-sed -i "s|^color_scheme_path=.*$|color_scheme_path=$qt6ct_color_scheme|" "$HOME/.config/qt6ct/qt6ct.conf"
+sed -i "s|^color_scheme_path=.*$|color_scheme_path=$qt5ct_color_scheme|" "${XDG_CONFIG_HOME:-$HOME/.config}/qt5ct/qt5ct.conf"
+sed -i "s|^color_scheme_path=.*$|color_scheme_path=$qt6ct_color_scheme|" "${XDG_CONFIG_HOME:-$HOME/.config}/qt6ct/qt6ct.conf"
kvantummanager --set "$kvantum_theme"
@@ -234,8 +296,8 @@ set_custom_gtk_theme() {
gsettings set $icon_setting "$selected_icon"
## QT5ct icon_theme
- sed -i "s|^icon_theme=.*$|icon_theme=$selected_icon|" "$HOME/.config/qt5ct/qt5ct.conf"
- sed -i "s|^icon_theme=.*$|icon_theme=$selected_icon|" "$HOME/.config/qt6ct/qt6ct.conf"
+ sed -i "s|^icon_theme=.*$|icon_theme=$selected_icon|" "${XDG_CONFIG_HOME:-$HOME/.config}/qt5ct/qt5ct.conf"
+ sed -i "s|^icon_theme=.*$|icon_theme=$selected_icon|" "${XDG_CONFIG_HOME:-$HOME/.config}/qt6ct/qt6ct.conf"
# Flatpak GTK apps (icons)
if command -v flatpak &> /dev/null; then
@@ -268,7 +330,7 @@ ${SCRIPTSDIR}/Refresh.sh
sleep 0.5
# Display notifications for theme and icon changes
-notify-send -u low -i "$notif" " Themes switched to:" " $next_mode Mode"
+[ "$notify_enabled" -eq 1 ] && notify-send -u low -i "$notif" " Themes switched to:" " $next_mode Mode"
exit 0
diff --git a/config/hypr/scripts/Distro_update.sh b/config/hypr/scripts/Distro_update.sh
index b9bcae71..20a710ee 100755
--- a/config/hypr/scripts/Distro_update.sh
+++ b/config/hypr/scripts/Distro_update.sh
@@ -8,7 +8,7 @@
# Simple bash script to check and will try to update your system
# Local Paths
-iDIR="$HOME/.config/swaync/images"
+iDIR="${XDG_CONFIG_HOME:-$HOME/.config}/swaync/images"
# Check for required tools (kitty)
if ! command -v kitty &> /dev/null; then
diff --git a/config/hypr/scripts/Dropterminal.sh b/config/hypr/scripts/Dropterminal.sh
index 21349d4a..8c301f68 100755
--- a/config/hypr/scripts/Dropterminal.sh
+++ b/config/hypr/scripts/Dropterminal.sh
@@ -24,7 +24,7 @@ LOCK_FILE="/tmp/dropdown_terminal_lock"
LAST_TOGGLE_FILE="/tmp/dropdown_terminal_last_toggle"
MIN_TOGGLE_INTERVAL_MS=250
DROPDOWN_KITTY_CLASS="kitty-dropterm"
-CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
+CONFIG_HOME="${XDG_CONFIG_HOME:-${XDG_CONFIG_HOME:-$HOME/.config}}"
HYPR_DIR="$CONFIG_HOME/hypr"
LUA_ENTRY="$HYPR_DIR/hyprland.lua"
LEGACY_LUA_ENTRY="$CONFIG_HOME/hyprland.lua"
diff --git a/config/hypr/scripts/ExternalBrightness.sh b/config/hypr/scripts/ExternalBrightness.sh
index 59081e1d..f3bf2487 100755
--- a/config/hypr/scripts/ExternalBrightness.sh
+++ b/config/hypr/scripts/ExternalBrightness.sh
@@ -18,7 +18,7 @@ cache_file="/tmp/external_brightness_displays.cache"
cache_ttl=300 # 5 minutes
# Detect active Hyprland config mode (Lua entrypoint vs legacy .conf includes)
-config_home="${XDG_CONFIG_HOME:-$HOME/.config}"
+config_home="${XDG_CONFIG_HOME:-${XDG_CONFIG_HOME:-$HOME/.config}}"
hypr_dir="$config_home/hypr"
lua_entry="$hypr_dir/hyprland.lua"
legacy_lua_entry="$config_home/hyprland.lua"
diff --git a/config/hypr/scripts/Float-all-Windows.sh b/config/hypr/scripts/Float-all-Windows.sh
index 25fdc465..1f754ec5 100755
--- a/config/hypr/scripts/Float-all-Windows.sh
+++ b/config/hypr/scripts/Float-all-Windows.sh
@@ -7,7 +7,7 @@
# ==================================================
# Detect active Hyprland config mode (Lua entrypoint vs legacy .conf includes)
-config_home="${XDG_CONFIG_HOME:-$HOME/.config}"
+config_home="${XDG_CONFIG_HOME:-${XDG_CONFIG_HOME:-$HOME/.config}}"
hypr_dir="$config_home/hypr"
lua_entry="$hypr_dir/hyprland.lua"
legacy_lua_entry="$config_home/hyprland.lua"
diff --git a/config/hypr/scripts/GameMode.sh b/config/hypr/scripts/GameMode.sh
index b104179e..c3a02948 100755
--- a/config/hypr/scripts/GameMode.sh
+++ b/config/hypr/scripts/GameMode.sh
@@ -7,13 +7,13 @@
# ==================================================
# Game Mode. Turning off all animations
-notif="$HOME/.config/swaync/images/ja.png"
-SCRIPTSDIR="$HOME/.config/hypr/scripts"
+notif="${XDG_CONFIG_HOME:-$HOME/.config}/swaync/images/ja.png"
+SCRIPTSDIR="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts"
# shellcheck source=/dev/null
. "$SCRIPTSDIR/WallpaperCmd.sh"
# Detect active Hyprland config mode (Lua entrypoint vs legacy .conf includes)
-config_home="${XDG_CONFIG_HOME:-$HOME/.config}"
+config_home="${XDG_CONFIG_HOME:-${XDG_CONFIG_HOME:-$HOME/.config}}"
hypr_dir="$config_home/hypr"
lua_entry="$hypr_dir/hyprland.lua"
legacy_lua_entry="$config_home/hyprland.lua"
diff --git a/config/hypr/scripts/Ghostty_themes.sh b/config/hypr/scripts/Ghostty_themes.sh
index c3fcd792..7eef6c1c 100755
--- a/config/hypr/scripts/Ghostty_themes.sh
+++ b/config/hypr/scripts/Ghostty_themes.sh
@@ -7,14 +7,14 @@
# ==================================================
# 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"
-wallust_include_path="$HOME/.config/ghostty/wallust.conf"
+config_file="${XDG_CONFIG_HOME:-$HOME/.config}/ghostty/config"
+iDIR="${XDG_CONFIG_HOME:-$HOME/.config}/swaync/images"
+rofi_theme_primary="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/config-ghostty-theme.rasi"
+rofi_theme_fallback="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/config-edit.rasi"
+wallust_include_path="${XDG_CONFIG_HOME:-$HOME/.config}/ghostty/wallust.conf"
wallust_option_label="Set by wallpaper"
default_option_label="Default - no color"
-wallust_refresh_script="$HOME/.config/hypr/scripts/WallustSwww.sh"
+wallust_refresh_script="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts/WallustSwww.sh"
notify_user() {
local icon="$1"
diff --git a/config/hypr/scripts/HyprLayoutModule.sh b/config/hypr/scripts/HyprLayoutModule.sh
index 22f12920..14e3b524 100755
--- a/config/hypr/scripts/HyprLayoutModule.sh
+++ b/config/hypr/scripts/HyprLayoutModule.sh
@@ -9,8 +9,8 @@
IFS=$'\n\t'
-SCRIPTSDIR="$HOME/.config/hypr/scripts"
-rofi_config="$HOME/.config/rofi/config-waybar-layout.rasi"
+SCRIPTSDIR="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts"
+rofi_config="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/config-layout.rasi"
change_layout="${SCRIPTSDIR}/ChangeLayout.sh"
layouts=(dwindle scrolling monocle master)
@@ -35,7 +35,17 @@ layout_name() {
}
get_layout() {
- hyprctl -j getoption general:layout 2>/dev/null | jq -r '.str // "unknown"' 2>/dev/null
+ local layout
+
+ if [[ -x "$change_layout" ]]; then
+ layout="$("$change_layout" --quiet current 2>/dev/null || true)"
+ if [[ -n "$layout" ]]; then
+ printf '%s\n' "$layout"
+ return
+ fi
+ fi
+
+ hyprctl -j activeworkspace 2>/dev/null | jq -r '.tiledLayout // .tiled_layout // "unknown"' 2>/dev/null
}
next_layout() {
@@ -68,7 +78,7 @@ show_status() {
current="$(get_layout)"
icon="$(layout_icon "$current")"
name="$(layout_name "$current")"
- tooltip="Hyprland layout: ${name} (${icon})\n\nLeft click: Select layout\nRight click: Cycle layout\n\nOptions:\n🄳 Dwindle\n🅂 Scrolling\n🄼 Monocle\nⓜ Master"
+ tooltip="Workspace layout: ${name} (${icon})\n\nLeft click: Select layout for active workspace\nRight click: Cycle active workspace layout\n\nOptions:\n🄳 Dwindle\n🅂 Scrolling\n🄼 Monocle\nⓜ Master"
printf '{"text":"%s","tooltip":"%s","class":"%s"}\n' "$icon" "$tooltip" "$current"
}
@@ -97,7 +107,7 @@ show_menu() {
return 0
fi
- choice="$(printf '%s\n' "${options[@]}" | rofi -i -dmenu -p "Layout" -mesg "Left click selects • Right click cycles" -selected-row "$default_row" -config "$rofi_config")"
+ choice="$(printf '%s\n' "${options[@]}" | rofi -i -dmenu -p "Workspace layout" -mesg "Select layout for this workspace" -selected-row "$default_row" -config "$rofi_config")"
[[ -z "$choice" ]] && exit 0
case "$choice" in
diff --git a/config/hypr/scripts/HyprlockWallpaperSelect.sh b/config/hypr/scripts/HyprlockWallpaperSelect.sh
new file mode 100755
index 00000000..a139ca36
--- /dev/null
+++ b/config/hypr/scripts/HyprlockWallpaperSelect.sh
@@ -0,0 +1,358 @@
+#!/usr/bin/env bash
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
+# Hyprlock wallpaper selector (images + video fallback)
+
+PICTURES_DIR="$(xdg-user-dir PICTURES 2>/dev/null || echo "$HOME/Pictures")"
+wallDIR="$PICTURES_DIR/wallpapers"
+scriptsDir="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts"
+iDIR="${XDG_CONFIG_HOME:-$HOME/.config}/swaync/images"
+# shellcheck source=/dev/null
+. "$scriptsDir/WallpaperCmd.sh" 2>/dev/null || true
+
+rofi_theme="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/config-wallpaper.rasi"
+lock_cache_dir="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/wallpaper_effects"
+lock_wallpaper_link="$lock_cache_dir/.hyprlock_current"
+lock_wallpaper_current="$lock_cache_dir/.wallpaper_current"
+video_cache_dir="$HOME/.cache/hyprlock_preview"
+find_notify_send() {
+ local candidate=""
+ if candidate="$(command -v notify-send 2>/dev/null)"; then
+ [ -n "$candidate" ] && [ -x "$candidate" ] && { printf '%s\n' "$candidate"; return 0; }
+ fi
+ for candidate in /usr/bin/notify-send /usr/sbin/notify-send /bin/notify-send /sbin/notify-send; do
+ [ -x "$candidate" ] && { printf '%s\n' "$candidate"; return 0; }
+ done
+ return 1
+}
+
+NOTIFY_SEND_BIN="$(find_notify_send || true)"
+
+notify_err() {
+ if [ -n "$NOTIFY_SEND_BIN" ]; then
+ if [ -f "$iDIR/error.png" ]; then
+ "$NOTIFY_SEND_BIN" -i "$iDIR/error.png" "Hyprlock Wallpaper" "$1"
+ else
+ "$NOTIFY_SEND_BIN" "Hyprlock Wallpaper" "$1"
+ fi
+ fi
+}
+
+notify_ok() {
+ if [ -n "$NOTIFY_SEND_BIN" ]; then
+ if [ -f "$iDIR/ja.png" ]; then
+ "$NOTIFY_SEND_BIN" -i "$iDIR/ja.png" "Hyprlock Wallpaper" "$1"
+ else
+ "$NOTIFY_SEND_BIN" "Hyprlock Wallpaper" "$1"
+ fi
+ fi
+}
+
+if ! command -v rofi >/dev/null 2>&1; then
+ notify_err "rofi not found"
+ exit 1
+fi
+if ! command -v hyprctl >/dev/null 2>&1; then
+ notify_err "hyprctl not found"
+ exit 1
+fi
+if ! command -v jq >/dev/null 2>&1; then
+ notify_err "jq not found"
+ exit 1
+fi
+if ! command -v bc >/dev/null 2>&1; then
+ notify_err "bc not found"
+ exit 1
+fi
+read_wallpaper_from_query() {
+ local monitor="$1"
+ [ -n "$monitor" ] || return 1
+ "$WWW_CMD" query 2>/dev/null | awk -v mon="$monitor" '
+ {
+ line=$0
+ sub(/^Monitor[[:space:]]+/, "", line)
+ sub(/^:[[:space:]]*/, "", line)
+ mon_name=line
+ sub(/:.*/, "", mon_name)
+ gsub(/^[[:space:]]+|[[:space:]]+$/, "", mon_name)
+ if (mon_name != mon) next
+
+ path=line
+ sub(/^.*image:[[:space:]]*/, "", path)
+ gsub(/^[[:space:]]+|[[:space:]]+$/, "", path)
+ if (path != line && length(path) > 0) {
+ print path
+ exit
+ }
+ }
+ '
+}
+
+read_cached_wallpaper() {
+ local cache_file="$1"
+ [ -f "$cache_file" ] || return 1
+ awk 'NF && $0 !~ /^filter/ {print; exit}' "$cache_file"
+}
+
+read_wallpaper_from_cache() {
+ local monitor="$1"
+ local cache_root="${WWW_CACHE_DIR:-$HOME/.cache/awww}"
+ local cache_file="$cache_root/$monitor"
+ local fallback_cache=""
+ local path=""
+
+ case "$cache_root" in
+ "$HOME/.cache/awww")
+ fallback_cache="$HOME/.cache/swww/$monitor"
+ ;;
+ "$HOME/.cache/swww")
+ fallback_cache="$HOME/.cache/awww/$monitor"
+ ;;
+ esac
+
+ path="$(read_cached_wallpaper "$cache_file" 2>/dev/null || true)"
+ if [ -z "$path" ] && [ -n "$fallback_cache" ]; then
+ path="$(read_cached_wallpaper "$fallback_cache" 2>/dev/null || true)"
+ fi
+
+ [ -n "$path" ] && [ -f "$path" ] || return 1
+ printf '%s\n' "$path"
+}
+
+get_active_workspace_monitor() {
+ hyprctl activeworkspace -j 2>/dev/null | jq -r '.monitor // empty' | head -n1
+}
+
+monitor_exists() {
+ local monitor="$1"
+ [ -n "$monitor" ] || return 1
+ hyprctl monitors -j 2>/dev/null | jq -r --arg mon "$monitor" '.[] | select(.name == $mon) | .name' | grep -qx "$monitor"
+}
+
+focused_monitor=""
+requested_monitor="${1:-${HYPRLOCK_TARGET_MONITOR:-}}"
+if monitor_exists "$requested_monitor"; then
+ focused_monitor="$requested_monitor"
+fi
+if [[ -z "$focused_monitor" ]]; then
+ workspace_monitor="$(get_active_workspace_monitor)"
+ if monitor_exists "$workspace_monitor"; then
+ focused_monitor="$workspace_monitor"
+ fi
+fi
+if [[ -z "$focused_monitor" ]]; then
+ focused_monitor=$(hyprctl monitors -j | jq -r '.[] | select(.focused) | .name' | head -n1)
+fi
+if [[ -z "$focused_monitor" ]]; then
+ notify_err "Could not detect target monitor"
+ exit 1
+fi
+
+per_monitor_rofi_link="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/.current_wallpaper_${focused_monitor}"
+per_monitor_wallpaper_current="$lock_cache_dir/.wallpaper_current_${focused_monitor}"
+
+scale_factor=$(hyprctl monitors -j | jq -r --arg mon "$focused_monitor" '.[] | select(.name == $mon) | .scale')
+monitor_height=$(hyprctl monitors -j | jq -r --arg mon "$focused_monitor" '.[] | select(.name == $mon) | .height')
+icon_size=$(echo "scale=1; ($monitor_height * 3) / ($scale_factor * 150)" | bc)
+adjusted_icon_size=$(echo "$icon_size" | awk '{if ($1 < 15) $1 = 20; if ($1 > 25) $1 = 25; print $1}')
+rofi_override="element-icon{size:${adjusted_icon_size}%;}"
+
+mapfile -d '' PICS < <(find -L "${wallDIR}" -type f \( \
+ -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" -o -iname "*.gif" -o \
+ -iname "*.bmp" -o -iname "*.tiff" -o -iname "*.webp" -o \
+ -iname "*.mp4" -o -iname "*.mkv" -o -iname "*.mov" -o -iname "*.webm" \) -print0)
+
+if [ "${#PICS[@]}" -eq 0 ]; then
+ notify_err "No wallpapers found in $wallDIR"
+ exit 1
+fi
+
+RANDOM_PIC="${PICS[$((RANDOM % ${#PICS[@]}))]}"
+RANDOM_PIC_NAME="Random: $(basename "$RANDOM_PIC")"
+
+current_lock_path=""
+if [ -L "$lock_wallpaper_link" ]; then
+ current_lock_path="$(readlink -f "$lock_wallpaper_link" 2>/dev/null || true)"
+elif [ -f "$lock_wallpaper_link" ]; then
+ current_lock_path="$lock_wallpaper_link"
+fi
+current_lock_name=""
+if [ -n "$current_lock_path" ]; then
+ current_lock_name="Current: $(basename "$current_lock_path")"
+fi
+
+current_monitor_path=""
+if [ -n "${WWW_CMD:-}" ] && command -v "$WWW_CMD" >/dev/null 2>&1; then
+ current_monitor_path="$(read_wallpaper_from_query "$focused_monitor")"
+fi
+if [ -z "$current_monitor_path" ] && [ -L "$per_monitor_rofi_link" ]; then
+ current_monitor_path="$(readlink -f "$per_monitor_rofi_link" 2>/dev/null || true)"
+fi
+if [ -z "$current_monitor_path" ] && [ -f "$per_monitor_rofi_link" ]; then
+ current_monitor_path="$per_monitor_rofi_link"
+fi
+if [ -z "$current_monitor_path" ] && [ -f "$per_monitor_wallpaper_current" ]; then
+ current_monitor_path="$per_monitor_wallpaper_current"
+fi
+if [ -z "$current_monitor_path" ]; then
+ current_monitor_path="$(read_wallpaper_from_cache "$focused_monitor" 2>/dev/null || true)"
+fi
+if [ -n "$current_monitor_path" ] && [ ! -f "$current_monitor_path" ]; then
+ current_monitor_path=""
+fi
+current_monitor_name=""
+if [ -n "$current_monitor_path" ]; then
+ current_monitor_name="Current monitor: $(basename "$current_monitor_path")"
+fi
+
+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"
+ if [ -n "$current_monitor_name" ]; then
+ printf "%s\x00icon\x1f%s\n" "$current_monitor_name" "$current_monitor_path"
+ fi
+ if [ -n "$current_lock_name" ]; then
+ printf "%s\x00icon\x1f%s\n" "$current_lock_name" "$current_lock_path"
+ fi
+ for pic_path in "${sorted_options[@]}"; do
+ pic_name=$(basename "$pic_path")
+ if [[ "$pic_name" =~ \.gif$ ]]; then
+ cache_gif_image="$HOME/.cache/gif_preview/${pic_name}.png"
+ if [[ ! -f "$cache_gif_image" ]]; then
+ mkdir -p "$HOME/.cache/gif_preview"
+ magick "$pic_path[0]" -resize 1920x1080 "$cache_gif_image"
+ fi
+ printf "%s\x00icon\x1f%s\n" "$pic_name" "$cache_gif_image"
+ elif [[ "$pic_name" =~ \.(mp4|mkv|mov|webm|MP4|MKV|MOV|WEBM)$ ]]; then
+ cache_preview_image="$HOME/.cache/video_preview/${pic_name}.png"
+ if [[ ! -f "$cache_preview_image" ]]; then
+ mkdir -p "$HOME/.cache/video_preview"
+ ffmpeg -v error -y -i "$pic_path" -ss 00:00:01.000 -vframes 1 "$cache_preview_image"
+ fi
+ printf "%s\x00icon\x1f%s\n" "$pic_name" "$cache_preview_image"
+ else
+ printf "%s\x00icon\x1f%s\n" "$pic_name" "$pic_path"
+ fi
+ done
+}
+
+update_hyprlock_config() {
+ local conf="$1"
+ local path="$2"
+ [ -f "$conf" ] || return 0
+
+ if grep -qE '^[[:space:]]*path[[:space:]]*=' "$conf"; then
+ sed -i -E "s|^[[:space:]]*path[[:space:]]*=.*| path = $path|" "$conf"
+ elif grep -qE '^[[:space:]]*background[[:space:]]*{' "$conf"; then
+ sed -i -E "/^[[:space:]]*background[[:space:]]*{/a\\ path = $path" "$conf"
+ else
+ printf "\nbackground {\n path = %s\n}\n" "$path" >>"$conf"
+ fi
+}
+
+set_hyprlock_wallpaper() {
+ local selected_file="$1"
+ local target_monitor="${2:-$focused_monitor}"
+ local final_path="$selected_file"
+
+ if [ ! -f "$selected_file" ]; then
+ notify_err "Failed for $target_monitor: selected file not found"
+ return 1
+ fi
+
+ if [[ "$selected_file" =~ \.(mp4|mkv|mov|webm|MP4|MKV|MOV|WEBM)$ ]]; then
+ if ! command -v ffmpeg >/dev/null 2>&1; then
+ notify_err "Failed for $target_monitor: ffmpeg not found for video preview"
+ return 1
+ fi
+ mkdir -p "$video_cache_dir"
+ local video_name
+ video_name="$(basename "$selected_file")"
+ final_path="$video_cache_dir/${video_name}.png"
+ if ! ffmpeg -v error -y -i "$selected_file" -ss 00:00:01.000 -vframes 1 "$final_path"; then
+ notify_err "Failed for $target_monitor: could not generate video preview"
+ return 1
+ fi
+ fi
+
+ mkdir -p "$lock_cache_dir"
+ if ! ln -sf "$final_path" "$lock_wallpaper_link"; then
+ notify_err "Failed for $target_monitor: could not update hyprlock wallpaper link"
+ return 1
+ fi
+ if ! cp -f "$final_path" "$lock_wallpaper_current"; then
+ notify_err "Failed for $target_monitor: could not update lock fallback wallpaper"
+ return 1
+ fi
+
+ update_hyprlock_config "${XDG_CONFIG_HOME:-$HOME/.config}/hypr/hyprlock.conf" "$lock_wallpaper_link"
+ update_hyprlock_config "${XDG_CONFIG_HOME:-$HOME/.config}/hypr/hyprlock-2k.conf" "$lock_wallpaper_link"
+ update_hyprlock_config "${XDG_CONFIG_HOME:-$HOME/.config}/hypr/hyprlock-1080p.conf" "$lock_wallpaper_link"
+
+ pkill -USR1 hyprlock 2>/dev/null || true
+
+ local resolved_path=""
+ if [ -L "$lock_wallpaper_link" ]; then
+ resolved_path="$(readlink -f "$lock_wallpaper_link" 2>/dev/null || true)"
+ elif [ -f "$lock_wallpaper_link" ]; then
+ resolved_path="$lock_wallpaper_link"
+ fi
+
+ if [ -z "$resolved_path" ] || [ ! -f "$resolved_path" ]; then
+ notify_err "Failed for $target_monitor: hyprlock wallpaper was not applied"
+ return 1
+ fi
+
+ notify_ok "Set for $target_monitor: $(basename "$resolved_path")"
+ return 0
+}
+
+main() {
+ choice=$(menu | $rofi_command)
+ choice=$(echo "$choice" | xargs)
+
+ if [[ -z "$choice" ]]; then
+ exit 0
+ fi
+
+ if [[ "$choice" == "$RANDOM_PIC_NAME" ]]; then
+ set_hyprlock_wallpaper "$RANDOM_PIC" "$focused_monitor" || exit 1
+ return
+ fi
+ if [[ "$choice" == "$current_monitor_name" && -n "$current_monitor_path" ]]; then
+ set_hyprlock_wallpaper "$current_monitor_path" "$focused_monitor" || exit 1
+ return
+ fi
+
+ if [[ "$choice" == "$current_lock_name" && -n "$current_lock_path" ]]; then
+ set_hyprlock_wallpaper "$current_lock_path" "$focused_monitor" || exit 1
+ return
+ fi
+
+ if [[ -f "$choice" ]]; then
+ set_hyprlock_wallpaper "$choice" "$focused_monitor" || exit 1
+ return
+ fi
+
+ choice_basename=$(basename "$choice" | sed 's/\(.*\)\.[^.]*$/\1/')
+ selected_file=$(find "$wallDIR" -iname "$choice_basename.*" -print -quit)
+
+ if [[ -z "$selected_file" ]]; then
+ notify_err "Selected choice not found: $choice"
+ exit 1
+ fi
+
+ set_hyprlock_wallpaper "$selected_file" "$focused_monitor" || exit 1
+}
+
+if pidof rofi >/dev/null; then
+ pkill rofi
+fi
+
+main
diff --git a/config/hypr/scripts/JavaManager.sh b/config/hypr/scripts/JavaManager.sh
index 728c69a3..8f8f5612 100755
--- a/config/hypr/scripts/JavaManager.sh
+++ b/config/hypr/scripts/JavaManager.sh
@@ -201,7 +201,7 @@ generate_list() {
}
# --- 6. rofi ---
-THEME="$HOME/.config/rofi/config.rasi"
+THEME="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/config.rasi"
SELECTION=$(generate_list | rofi -dmenu -i \
-p "󰒓 Java" \
diff --git a/config/hypr/scripts/KeyBinds.sh b/config/hypr/scripts/KeyBinds.sh
index 1005e797..aff7b808 100755
--- a/config/hypr/scripts/KeyBinds.sh
+++ b/config/hypr/scripts/KeyBinds.sh
@@ -16,7 +16,7 @@ if pidof rofi > /dev/null; then
fi
# define the config files
-config_home="${XDG_CONFIG_HOME:-$HOME/.config}"
+config_home="${XDG_CONFIG_HOME:-${XDG_CONFIG_HOME:-$HOME/.config}}"
hypr_dir="$config_home/hypr"
keybinds_conf="$hypr_dir/configs/Keybinds.conf"
user_keybinds_conf="$hypr_dir/UserConfigs/UserKeybinds.conf"
@@ -26,7 +26,7 @@ lua_user_keybinds="$hypr_dir/UserConfigs/user_keybinds.lua"
lua_system_keybinds="$hypr_dir/configs/system_keybinds.lua"
lua_legacy_system_keybinds="$hypr_dir/UserConfigs/system_keybinds.lua"
lua_overrides="$hypr_dir/UserConfigs/user_overrides.lua"
-rofi_theme="$HOME/.config/rofi/config-keybinds.rasi"
+rofi_theme="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/config-keybinds.rasi"
msg='☣️ NOTE ☣️: Clicking with Mouse or Pressing ENTER will have NO function'
# detect active Hyprland config mode (Lua entrypoint vs legacy .conf includes)
@@ -55,7 +55,7 @@ fi
# Parse binds using the python script for speed
# The last argument must be the user config for override logic to work correctly
-display_keybinds=$("$HOME/.config/hypr/scripts/keybinds_parser.py" "${files[@]}")
+display_keybinds=$("${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts/keybinds_parser.py" "${files[@]}")
# Check for suggestions file created by python script
if [[ -f "/tmp/hypr_keybind_suggestions_file" ]]; then
diff --git a/config/hypr/scripts/KeyHints.sh b/config/hypr/scripts/KeyHints.sh
index a9f6660a..6ae8c4b5 100755
--- a/config/hypr/scripts/KeyHints.sh
+++ b/config/hypr/scripts/KeyHints.sh
@@ -62,7 +62,7 @@ GDK_BACKEND=$BACKEND yad \
"CTRL ALT Del" "Hyprland Exit" "(NOTE: Hyprland Will exit immediately)" \
" SHIFT F" "Fullscreen" "Toggles to full screen" \
" CTL F" "Fake Fullscreen" "Toggles to fake full screen" \
- " ALT L" "Toggle Dwindle|Floating|Monocle|Master layouts" "Hyprland Layouts" \
+ " ALT L" "Toggle Dwindle|Scrolling|Monocle|Master layouts" "Active workspace layout" \
" SPACEBAR" "Toggle float" "single window" \
" ALT SPACEBAR" "Toggle all windows to float" "all windows" \
" ALT O" "Toggle Blur" "normal or less blur" \
diff --git a/config/hypr/scripts/KeybindsLayoutInit.sh b/config/hypr/scripts/KeybindsLayoutInit.sh
index 280e381b..08aff951 100755
--- a/config/hypr/scripts/KeybindsLayoutInit.sh
+++ b/config/hypr/scripts/KeybindsLayoutInit.sh
@@ -5,14 +5,14 @@
# 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).
+# Legacy startup hook for layout keybind initialization.
+# Runtime keybind behavior is now resolved per keypress based on active workspace layout.
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
+scripts_dir="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts"
-# Cycle windows globally
-hyprctl keyword bind SUPER,j,cyclenext
-hyprctl keyword bind SUPER,k,cyclenext,prev
+# Keep compatibility with existing startup entries while avoiding global rebinding.
+if [[ -x "${scripts_dir}/ChangeLayout.sh" ]]; then
+ "${scripts_dir}/ChangeLayout.sh" --quiet init >/dev/null 2>&1 || true
+fi
diff --git a/config/hypr/scripts/KeyboardLayout.sh b/config/hypr/scripts/KeyboardLayout.sh
index fe092e7f..f126b895 100755
--- a/config/hypr/scripts/KeyboardLayout.sh
+++ b/config/hypr/scripts/KeyboardLayout.sh
@@ -5,10 +5,10 @@
# 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"
+# This is for changing kb_layouts. Set kb_layouts in "${XDG_CONFIG_HOME:-$HOME/.config}/hypr/UserConfigs/UserSettings.conf"
-notif_icon="$HOME/.config/swaync/images/ja.png"
-SCRIPTSDIR="$HOME/.config/hypr/scripts"
+notif_icon="${XDG_CONFIG_HOME:-$HOME/.config}/swaync/images/ja.png"
+SCRIPTSDIR="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts"
# Refined ignore list with patterns or specific device names
ignore_patterns=(
diff --git a/config/hypr/scripts/KillActiveProcess.sh b/config/hypr/scripts/KillActiveProcess.sh
index 66d6b009..9af3f813 100755
--- a/config/hypr/scripts/KillActiveProcess.sh
+++ b/config/hypr/scripts/KillActiveProcess.sh
@@ -13,7 +13,7 @@
active_pid=$(hyprctl activewindow | grep -o 'pid: [0-9]*' | cut -d' ' -f2)
if [[ -z "$active_pid" || ! "$active_pid" =~ ^[0-9]+$ ]]; then
- notify-send -u low -i "$HOME/.config/swaync/images/error.png" "Kill Active Window" "No active window PID found."
+ notify-send -u low -i "${XDG_CONFIG_HOME:-$HOME/.config}/swaync/images/error.png" "Kill Active Window" "No active window PID found."
exit 1
fi
diff --git a/config/hypr/scripts/Kitty_themes.sh b/config/hypr/scripts/Kitty_themes.sh
index 24a4ae11..0de21f8c 100755
--- a/config/hypr/scripts/Kitty_themes.sh
+++ b/config/hypr/scripts/Kitty_themes.sh
@@ -8,11 +8,11 @@
# Kitty Themes Source https://github.com/dexpota/kitty-themes #
# Define directories and variables
-kitty_themes_DiR="$HOME/.config/kitty/kitty-themes" # Kitty Themes Directory
-kitty_config="$HOME/.config/kitty/kitty.conf"
-iDIR="$HOME/.config/swaync/images" # For notifications
-rofi_theme_for_this_script="$HOME/.config/rofi/config-kitty-theme.rasi"
-wallust_refresh_script="$HOME/.config/hypr/scripts/WallustSwww.sh"
+kitty_themes_DiR="${XDG_CONFIG_HOME:-$HOME/.config}/kitty/kitty-themes" # Kitty Themes Directory
+kitty_config="${XDG_CONFIG_HOME:-$HOME/.config}/kitty/kitty.conf"
+iDIR="${XDG_CONFIG_HOME:-$HOME/.config}/swaync/images" # For notifications
+rofi_theme_for_this_script="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/config-kitty-theme.rasi"
+wallust_refresh_script="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts/WallustSwww.sh"
debug_log="${XDG_CACHE_HOME:-$HOME/.cache}/kooldots-kitty-themes.log"
# --- Helper Functions ---
diff --git a/config/hypr/scripts/KooLsDotsUpdate.sh b/config/hypr/scripts/KooLsDotsUpdate.sh
index 887993a5..0cfb42a4 100755
--- a/config/hypr/scripts/KooLsDotsUpdate.sh
+++ b/config/hypr/scripts/KooLsDotsUpdate.sh
@@ -8,8 +8,8 @@
# simple bash script to check if update is available by comparing local version and github version
# Local Paths
-local_dir="$HOME/.config/hypr"
-iDIR="$HOME/.config/swaync/images/"
+local_dir="${XDG_CONFIG_HOME:-$HOME/.config}/hypr"
+iDIR="${XDG_CONFIG_HOME:-$HOME/.config}/swaync/images/"
local_version=$(find "$local_dir" -maxdepth 1 -name 'v*' -printf '%f\n' 2>/dev/null | sort -V | tail -n 1 | sed 's/^v//')
KooL_Dots_DIR="$HOME/Hyprland-Dots"
diff --git a/config/hypr/scripts/Kool_Quick_Settings.sh b/config/hypr/scripts/Kool_Quick_Settings.sh
index 6ec02bb8..70e98459 100755
--- a/config/hypr/scripts/Kool_Quick_Settings.sh
+++ b/config/hypr/scripts/Kool_Quick_Settings.sh
@@ -49,11 +49,31 @@ fi
# variables
configs="$hypr_dir/configs"
UserConfigs="$hypr_dir/UserConfigs"
-rofi_theme="$HOME/.config/rofi/config-edit.rasi"
+rofi_theme="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/config-edit.rasi"
msg=' ⁉️ Choose what to do ⁉️'
-iDIR="$HOME/.config/swaync/images"
+iDIR="${XDG_CONFIG_HOME:-$HOME/.config}/swaync/images"
scriptsDir="$hypr_dir/scripts"
UserScripts="$hypr_dir/UserScripts"
+user_defaults_conf="$UserConfigs/01-UserDefaults.conf"
+user_defaults_lua="$UserConfigs/user_defaults.lua"
+user_env_conf="$UserConfigs/ENVariables.conf"
+user_env_lua="$UserConfigs/user_env.lua"
+user_keybinds_conf="$UserConfigs/UserKeybinds.conf"
+user_keybinds_lua="$UserConfigs/user_keybinds.lua"
+user_startup_conf="$UserConfigs/Startup_Apps.conf"
+user_startup_lua="$UserConfigs/user_startup.lua"
+user_window_rules_conf="$UserConfigs/WindowRules.conf"
+user_window_rules_lua="$UserConfigs/user_window_rules.lua"
+user_layer_rules_conf="$UserConfigs/LayerRules.conf"
+user_layer_rules_lua="$UserConfigs/user_layer_rules.lua"
+user_settings_conf="$UserConfigs/UserSettings.conf"
+user_settings_lua="$UserConfigs/user_settings.lua"
+user_decorations_conf="$UserConfigs/UserDecorations.conf"
+user_decorations_lua="$UserConfigs/user_decorations.lua"
+user_animations_conf="$UserConfigs/UserAnimations.conf"
+user_animations_lua="$UserConfigs/user_animations.lua"
+user_laptops_conf="$UserConfigs/Laptops.conf"
+user_laptops_lua="$UserConfigs/user_laptops.lua"
# Function to show info notification
show_info() {
@@ -64,6 +84,22 @@ show_info() {
fi
}
+get_context_monitor_name() {
+ if ! command -v hyprctl >/dev/null 2>&1; then
+ return 1
+ fi
+ local monitor=""
+ if command -v jq >/dev/null 2>&1; then
+ monitor="$(hyprctl activeworkspace -j 2>/dev/null | jq -r '.monitor // empty' | head -n1)"
+ if [[ -z "$monitor" ]]; then
+ monitor="$(hyprctl monitors -j 2>/dev/null | jq -r '.[] | select(.focused) | .name' | head -n1)"
+ fi
+ else
+ monitor="$(hyprctl monitors 2>/dev/null | awk '/^Monitor/{name=$2} /focused: yes/{print name; exit}')"
+ fi
+ printf '%s' "$monitor"
+}
+
# Determine whether an editor command is terminal-based (TUI)
is_tui_editor() {
local -a cmd=("$@")
@@ -103,9 +139,24 @@ resolve_system_lua_file() {
fi
}
-resolve_user_defaults_lua_file() {
- local preferred="$UserConfigs/user_defaults.lua"
- printf '%s' "$preferred"
+resolve_mode_file() {
+ local preferred="$1"
+ local fallback="$2"
+ if [[ -f "$preferred" || ! -f "$fallback" ]]; then
+ printf '%s' "$preferred"
+ else
+ printf '%s' "$fallback"
+ fi
+}
+
+resolve_user_overlay_file() {
+ local lua_file="$1"
+ local conf_file="$2"
+ if [[ "$hypr_config_mode" == "lua" ]]; then
+ resolve_mode_file "$lua_file" "$conf_file"
+ else
+ resolve_mode_file "$conf_file" "$lua_file"
+ fi
}
# Function to toggle Rainbow Borders script availability and refresh UI components
toggle_rainbow_borders() {
@@ -271,6 +322,7 @@ Edit System Default Startup Apps
Edit System Default Window Rules
Edit System Default Layer Rules
Edit System Default Settings
+Change Starship Prompt
--- UTILITIES ---
Set SDDM Wallpaper
Choose Kitty Terminal Theme
@@ -280,11 +332,13 @@ Configure Workspace Rules (nwg-displays)
GTK Settings (nwg-look)
QT Apps Settings (qt6ct)
QT Apps Settings (qt5ct)
+Set Hyprlock Wallpaper
Choose Hyprland Animations
Choose Monitor Profiles
Choose Rofi Themes
Search for Keybinds
Toggle Waybar Weather units (C/F)
+Toggle Waybar Clock (12H/24H)
Toggle Game Mode
Switch Dark-Light Theme
Rainbow Borders Mode
@@ -293,36 +347,32 @@ EOF
# Main function to handle menu selection
main() {
+ local quick_settings_monitor
+ quick_settings_monitor="$(get_context_monitor_name)"
choice=$(menu | rofi -i -dmenu -config $rofi_theme -mesg "$msg")
# Map choices to corresponding files
case "$choice" in
"Edit User Defaults")
- if [[ "$hypr_config_mode" == "lua" ]]; then file="$(resolve_user_defaults_lua_file)"; else file="$UserConfigs/01-UserDefaults.conf"; fi ;;
+ file="$(resolve_user_overlay_file "$user_defaults_lua" "$user_defaults_conf")" ;;
"Edit User ENV variables")
- if [[ "$hypr_config_mode" == "lua" ]]; then file="$UserConfigs/user_env.lua"; else file="$UserConfigs/ENVariables.conf"; fi ;;
+ file="$(resolve_user_overlay_file "$user_env_lua" "$user_env_conf")" ;;
"Edit User Keybinds")
- if [[ "$hypr_config_mode" == "lua" ]]; then file="$UserConfigs/user_keybinds.lua"; else file="$UserConfigs/UserKeybinds.conf"; fi ;;
+ file="$(resolve_user_overlay_file "$user_keybinds_lua" "$user_keybinds_conf")" ;;
"Edit User Startup Apps (overlay)")
- if [[ "$hypr_config_mode" == "lua" ]]; then file="$UserConfigs/user_startup.lua"; else file="$UserConfigs/Startup_Apps.conf"; fi ;;
+ file="$(resolve_user_overlay_file "$user_startup_lua" "$user_startup_conf")" ;;
"Edit User Window Rules (overlay)")
- if [[ "$hypr_config_mode" == "lua" ]]; then file="$UserConfigs/user_window_rules.lua"; else file="$UserConfigs/WindowRules.conf"; fi ;;
+ file="$(resolve_user_overlay_file "$user_window_rules_lua" "$user_window_rules_conf")" ;;
"Edit User Layer Rules (overlay)")
- if [[ "$hypr_config_mode" == "lua" ]]; then file="$UserConfigs/user_layer_rules.lua"; else file="$UserConfigs/LayerRules.conf"; fi ;;
+ file="$(resolve_user_overlay_file "$user_layer_rules_lua" "$user_layer_rules_conf")" ;;
"Edit User Settings")
- if [[ "$hypr_config_mode" == "lua" ]]; then
- file="$UserConfigs/user_settings.lua"
- show_info "Lua mode detected. Edit UserConfigs/user_settings.lua for user settings."
- else
- file="$configs/SystemSettings.conf"
- show_info "Editing default settings. Copy to UserConfigs/UserSettings.conf to override."
- fi ;;
+ file="$(resolve_user_overlay_file "$user_settings_lua" "$user_settings_conf")" ;;
"Edit User Decorations")
- if [[ "$hypr_config_mode" == "lua" ]]; then file="$UserConfigs/user_decorations.lua"; else file="$UserConfigs/UserDecorations.conf"; fi ;;
+ file="$(resolve_user_overlay_file "$user_decorations_lua" "$user_decorations_conf")" ;;
"Edit User Animations")
- if [[ "$hypr_config_mode" == "lua" ]]; then file="$UserConfigs/user_animations.lua"; else file="$UserConfigs/UserAnimations.conf"; fi ;;
+ file="$(resolve_user_overlay_file "$user_animations_lua" "$user_animations_conf")" ;;
"Edit User Laptop Settings")
- if [[ "$hypr_config_mode" == "lua" ]]; then file="$UserConfigs/user_laptops.lua"; else file="$UserConfigs/Laptops.conf"; fi ;;
+ file="$(resolve_user_overlay_file "$user_laptops_lua" "$user_laptops_conf")" ;;
"Edit System Default Keybinds")
if [[ "$hypr_config_mode" == "lua" ]]; then file="$(resolve_system_lua_file system_keybinds.lua)"; else file="$configs/Keybinds.conf"; fi ;;
"Edit System Default Startup Apps")
@@ -333,7 +383,14 @@ main() {
if [[ "$hypr_config_mode" == "lua" ]]; then file="$(resolve_system_lua_file system_layer_rules.lua)"; else file="$configs/LayerRules.conf"; fi ;;
"Edit System Default Settings")
if [[ "$hypr_config_mode" == "lua" ]]; then file="$(resolve_system_lua_file system_settings.lua)"; else file="$configs/SystemSettings.conf"; fi ;;
- "Set SDDM Wallpaper") $scriptsDir/sddm_wallpaper.sh --normal ;;
+ "Change Starship Prompt") "$scriptsDir/ChangeStarshipPrompt.sh" ;;
+ "Set SDDM Wallpaper")
+ if [[ -n "$quick_settings_monitor" ]]; then
+ "$scriptsDir/sddm_wallpaper.sh" --normal "$quick_settings_monitor"
+ else
+ "$scriptsDir/sddm_wallpaper.sh" --normal
+ fi
+ ;;
"Choose Kitty Terminal Theme") $scriptsDir/Kitty_themes.sh ;;
"Choose Ghostty Terminal Theme") $scriptsDir/Ghostty_themes.sh ;;
"Configure Monitors (nwg-displays)")
@@ -366,11 +423,19 @@ main() {
exit 1
fi
qt5ct ;;
+ "Set Hyprlock Wallpaper")
+ if [[ -n "$quick_settings_monitor" ]]; then
+ "$scriptsDir/HyprlockWallpaperSelect.sh" "$quick_settings_monitor"
+ else
+ "$scriptsDir/HyprlockWallpaperSelect.sh"
+ fi
+ ;;
"Choose Hyprland Animations") $scriptsDir/Animations.sh ;;
"Choose Monitor Profiles") $scriptsDir/MonitorProfiles.sh ;;
"Choose Rofi Themes") $scriptsDir/RofiThemeSelector.sh ;;
"Search for Keybinds") $scriptsDir/KeyBinds.sh ;;
"Toggle Waybar Weather units (C/F)") $scriptsDir/Toggle-weather-waybar-units.sh ;;
+ "Toggle Waybar Clock (12H/24H)") $scriptsDir/ToggleWaybarTime.sh ;;
"Toggle Game Mode") $scriptsDir/GameMode.sh ;;
"Switch Dark-Light Theme") $scriptsDir/DarkLight.sh ;;
"Rainbow Borders Mode") rainbow_borders_menu ;;
diff --git a/config/hypr/scripts/LaunchFileManager.sh b/config/hypr/scripts/LaunchFileManager.sh
new file mode 100755
index 00000000..8436451b
--- /dev/null
+++ b/config/hypr/scripts/LaunchFileManager.sh
@@ -0,0 +1,122 @@
+#!/usr/bin/env bash
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
+# Launch preferred file manager with fallback handling.
+# Usage:
+# LaunchFileManager.sh "<preferred-file-manager-cmd>" "<preferred-terminal-cmd>"
+# Examples:
+# LaunchFileManager.sh "thunar" "kitty"
+
+set -u
+
+notify_msg() {
+ local urgency="${1:-normal}"
+ local body="${2:-}"
+ if command -v notify-send >/dev/null 2>&1; then
+ notify-send -u "$urgency" "KooL Launchers" "$body"
+ fi
+}
+
+trim() {
+ local value="${1:-}"
+ value="${value#"${value%%[![:space:]]*}"}"
+ value="${value%"${value##*[![:space:]]}"}"
+ printf '%s' "$value"
+}
+
+command_bin_from_string() {
+ local cmd
+ cmd="$(trim "${1:-}")"
+ [[ -n "$cmd" ]] || return 1
+ (
+ eval "set -- $cmd"
+ printf '%s' "${1:-}"
+ ) 2>/dev/null
+}
+
+command_exists_from_string() {
+ local bin
+ bin="$(command_bin_from_string "${1:-}" 2>/dev/null || true)"
+ [[ -n "$bin" ]] || return 1
+ command -v "$bin" >/dev/null 2>&1
+}
+
+launch_command_string() {
+ local cmd
+ cmd="$(trim "${1:-}")"
+ [[ -n "$cmd" ]] || return 1
+
+ if ! command_exists_from_string "$cmd"; then
+ return 127
+ fi
+
+ (
+ eval "exec $cmd"
+ ) >/dev/null 2>&1 &
+ local pid=$!
+
+ sleep 0.35
+ if kill -0 "$pid" >/dev/null 2>&1; then
+ disown "$pid" >/dev/null 2>&1 || true
+ return 0
+ fi
+
+ wait "$pid"
+ local rc=$?
+ [[ $rc -eq 0 ]]
+}
+
+append_unique_candidate() {
+ local candidate
+ candidate="$(trim "${1:-}")"
+ [[ -n "$candidate" ]] || return 0
+ local existing
+ for existing in "${CANDIDATES[@]}"; do
+ [[ "$existing" == "$candidate" ]] && return 0
+ done
+ CANDIDATES+=("$candidate")
+}
+
+script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+terminal_launcher="$script_dir/LaunchTerminal.sh"
+
+preferred_files="$(trim "${1:-${FILE_MANAGER:-}}")"
+preferred_term="$(trim "${2:-${TERMINAL:-kitty}}")"
+
+declare -a CANDIDATES=()
+append_unique_candidate "$preferred_files"
+append_unique_candidate "thunar"
+append_unique_candidate "dolphin"
+append_unique_candidate "nautilus"
+
+reported_preferred_issue=0
+
+for candidate in "${CANDIDATES[@]}"; do
+ if launch_command_string "$candidate"; then
+ exit 0
+ fi
+
+ if [[ $reported_preferred_issue -eq 0 && -n "$preferred_files" && "$candidate" == "$preferred_files" ]]; then
+ if ! command_exists_from_string "$preferred_files"; then
+ notify_msg normal "Preferred file manager '$preferred_files' is not installed. Falling back."
+ else
+ notify_msg normal "Preferred file manager '$preferred_files' failed to launch. Falling back."
+ fi
+ reported_preferred_issue=1
+ fi
+done
+
+if command -v yazi >/dev/null 2>&1; then
+ if [[ -x "$terminal_launcher" ]] && "$terminal_launcher" "$preferred_term" "yazi"; then
+ exit 0
+ fi
+else
+ notify_msg normal "No GUI file manager was launched and 'yazi' is not installed."
+fi
+
+notify_msg critical "Unable to launch file manager. Tried preferred app, thunar, dolphin, nautilus, then terminal + yazi."
+exit 1
diff --git a/config/hypr/scripts/LaunchTerminal.sh b/config/hypr/scripts/LaunchTerminal.sh
new file mode 100755
index 00000000..8992a40d
--- /dev/null
+++ b/config/hypr/scripts/LaunchTerminal.sh
@@ -0,0 +1,160 @@
+#!/usr/bin/env bash
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
+# Launch preferred terminal with fallback handling.
+# Usage:
+# LaunchTerminal.sh "<preferred-terminal-cmd>" [payload-command]
+# Examples:
+# LaunchTerminal.sh "kitty"
+# LaunchTerminal.sh "ghostty" "yazi"
+
+set -u
+
+notify_msg() {
+ local urgency="${1:-normal}"
+ local body="${2:-}"
+ if command -v notify-send >/dev/null 2>&1; then
+ notify-send -u "$urgency" "KooL Launchers" "$body"
+ fi
+}
+
+trim() {
+ local value="${1:-}"
+ value="${value#"${value%%[![:space:]]*}"}"
+ value="${value%"${value##*[![:space:]]}"}"
+ printf '%s' "$value"
+}
+
+shell_quote() {
+ local value="${1:-}"
+ printf "'%s'" "${value//\'/\'\\\'\'}"
+}
+
+command_bin_from_string() {
+ local cmd
+ cmd="$(trim "${1:-}")"
+ [[ -n "$cmd" ]] || return 1
+ (
+ eval "set -- $cmd"
+ printf '%s' "${1:-}"
+ ) 2>/dev/null
+}
+
+command_exists_from_string() {
+ local bin
+ bin="$(command_bin_from_string "${1:-}" 2>/dev/null || true)"
+ [[ -n "$bin" ]] || return 1
+ command -v "$bin" >/dev/null 2>&1
+}
+
+launch_command_string() {
+ local cmd
+ cmd="$(trim "${1:-}")"
+ [[ -n "$cmd" ]] || return 1
+
+ if ! command_exists_from_string "$cmd"; then
+ return 127
+ fi
+
+ (
+ eval "exec $cmd"
+ ) >/dev/null 2>&1 &
+ local pid=$!
+
+ sleep 0.35
+ if kill -0 "$pid" >/dev/null 2>&1; then
+ disown "$pid" >/dev/null 2>&1 || true
+ return 0
+ fi
+
+ wait "$pid"
+ local rc=$?
+ [[ $rc -eq 0 ]]
+}
+
+build_terminal_command() {
+ local term_cmd payload bin q_payload
+ term_cmd="$(trim "${1:-}")"
+ payload="$(trim "${2:-}")"
+
+ if [[ -z "$payload" ]]; then
+ printf '%s' "$term_cmd"
+ return 0
+ fi
+
+ bin="$(command_bin_from_string "$term_cmd" 2>/dev/null || true)"
+ q_payload="$(shell_quote "$payload")"
+
+ case "$bin" in
+ gnome-terminal)
+ printf '%s -- %s' "$term_cmd" "$q_payload"
+ ;;
+ wezterm)
+ case "$term_cmd" in
+ *" start "* | "wezterm start")
+ printf '%s -- %s' "$term_cmd" "$q_payload"
+ ;;
+ *)
+ printf '%s start -- %s' "$term_cmd" "$q_payload"
+ ;;
+ esac
+ ;;
+ *)
+ printf '%s -e %s' "$term_cmd" "$q_payload"
+ ;;
+ esac
+}
+
+append_unique_candidate() {
+ local candidate
+ candidate="$(trim "${1:-}")"
+ [[ -n "$candidate" ]] || return 0
+ local existing
+ for existing in "${CANDIDATES[@]}"; do
+ [[ "$existing" == "$candidate" ]] && return 0
+ done
+ CANDIDATES+=("$candidate")
+}
+
+preferred_term="$(trim "${1:-${TERMINAL:-}}")"
+payload_cmd="$(trim "${2:-}")"
+
+declare -a CANDIDATES=()
+append_unique_candidate "$preferred_term"
+append_unique_candidate "kitty"
+append_unique_candidate "ghostty"
+append_unique_candidate "alacritty"
+append_unique_candidate "wezterm"
+append_unique_candidate "konsole"
+append_unique_candidate "gnome-terminal"
+
+reported_preferred_issue=0
+candidate_cmd=""
+
+for candidate in "${CANDIDATES[@]}"; do
+ candidate_cmd="$(build_terminal_command "$candidate" "$payload_cmd")"
+ if launch_command_string "$candidate_cmd"; then
+ exit 0
+ fi
+
+ if [[ $reported_preferred_issue -eq 0 && -n "$preferred_term" && "$candidate" == "$preferred_term" ]]; then
+ if ! command_exists_from_string "$preferred_term"; then
+ notify_msg normal "Preferred terminal '$preferred_term' is not installed. Falling back."
+ else
+ notify_msg normal "Preferred terminal '$preferred_term' failed to launch. Falling back."
+ fi
+ reported_preferred_issue=1
+ fi
+done
+
+if [[ -n "$payload_cmd" ]]; then
+ notify_msg critical "Unable to launch terminal for command '$payload_cmd'."
+else
+ notify_msg critical "Unable to launch terminal. Install one of: kitty, ghostty, alacritty, wezterm, konsole, gnome-terminal."
+fi
+
+exit 1
diff --git a/config/hypr/scripts/LaunchThunar.sh b/config/hypr/scripts/LaunchThunar.sh
new file mode 100755
index 00000000..08ff911e
--- /dev/null
+++ b/config/hypr/scripts/LaunchThunar.sh
@@ -0,0 +1,50 @@
+#!/usr/bin/env bash
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
+#
+# Launch Thunar reliably from Hyprland keybinds.
+
+runtime="${XDG_RUNTIME_DIR:-/run/user/$(id -u)}"
+
+if [ -z "${WAYLAND_DISPLAY:-}" ]; then
+ for sock in "$runtime"/wayland-[0-9]*; do
+ [ -S "$sock" ] || continue
+ case "$(basename "$sock")" in
+ *awww*) continue ;;
+ esac
+ export WAYLAND_DISPLAY="$(basename "$sock")"
+ break
+ done
+fi
+
+if [ -z "${DISPLAY:-}" ] && [ -n "${WAYLAND_DISPLAY:-}" ]; then
+ export DISPLAY=:1
+fi
+
+# If a stale daemon exists with no visible windows, restart it.
+if pgrep -x thunar >/dev/null 2>&1; then
+ if command -v hyprctl >/dev/null 2>&1; then
+ if ! python3 - <<'PY'
+import json
+import subprocess
+import sys
+
+try:
+ clients = json.loads(subprocess.check_output(["hyprctl", "clients", "-j"], text=True))
+except Exception:
+ sys.exit(0)
+
+sys.exit(0 if any((c.get("class") or "").lower() == "thunar" for c in clients) else 1)
+PY
+ then
+ thunar --quit >/dev/null 2>&1 || pkill -x thunar >/dev/null 2>&1 || true
+ sleep 0.2
+ fi
+ fi
+fi
+
+exec thunar "$HOME"
diff --git a/config/hypr/scripts/LayoutKeybindDispatch.sh b/config/hypr/scripts/LayoutKeybindDispatch.sh
new file mode 100755
index 00000000..48d3a1c5
--- /dev/null
+++ b/config/hypr/scripts/LayoutKeybindDispatch.sh
@@ -0,0 +1,219 @@
+#!/usr/bin/env bash
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
+# Dispatch layout-sensitive navigation actions per active workspace.
+# This keeps SUPER+J/K and SUPER+arrow behavior aligned with workspace rules.
+
+set -u
+
+if ! command -v hyprctl >/dev/null 2>&1; then
+ exit 0
+fi
+
+LUA_CYCLE_SCRIPT="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts/LuaCycleWindow.sh"
+
+normalize_layout() {
+ case "$1" in
+ master | dwindle | scrolling | monocle)
+ printf '%s\n' "$1"
+ ;;
+ *)
+ printf '\n'
+ ;;
+ esac
+}
+
+get_active_layout() {
+ local layout
+
+ layout="$(hyprctl -j activeworkspace 2>/dev/null | jq -r '.tiledLayout // .tiled_layout // .layout // empty' 2>/dev/null || true)"
+ layout="$(normalize_layout "$layout")"
+
+ if [[ -z "$layout" ]]; then
+ layout="$(hyprctl -j getoption general:layout 2>/dev/null | jq -r '.str // empty' 2>/dev/null || true)"
+ layout="$(normalize_layout "$layout")"
+ fi
+
+ if [[ -z "$layout" ]]; then
+ layout="dwindle"
+ fi
+
+ printf '%s\n' "$layout"
+}
+
+dispatch_quiet() {
+ local dispatcher="$1"
+ shift || true
+ if (($# > 0)); then
+ hyprctl dispatch "$dispatcher" "$@" >/dev/null 2>&1 || true
+ else
+ hyprctl dispatch "$dispatcher" >/dev/null 2>&1 || true
+ fi
+}
+
+get_active_window_address() {
+ if ! command -v jq >/dev/null 2>&1; then
+ printf '\n'
+ return 0
+ fi
+ hyprctl -j activewindow 2>/dev/null | jq -r '.address // empty' 2>/dev/null || true
+}
+
+dispatch_changed_focus() {
+ local before after dispatcher="$1"
+ shift || true
+ before="$(get_active_window_address)"
+ dispatch_quiet "$dispatcher" "$@"
+ after="$(get_active_window_address)"
+ [[ -n "$before" && -n "$after" && "$before" != "$after" ]]
+}
+
+direction_word() {
+ case "$1" in
+ l | left) printf 'left\n' ;;
+ r | right) printf 'right\n' ;;
+ u | up) printf 'up\n' ;;
+ d | down) printf 'down\n' ;;
+ *) printf 'right\n' ;;
+ esac
+}
+
+dispatch_lua_focus() {
+ local dir_word
+ dir_word="$(direction_word "$1")"
+ hyprctl dispatch "hl.dsp.focus({ direction = \"$dir_word\" })" >/dev/null 2>&1 || true
+}
+
+cycle_lua() {
+ local mode="${1:-next}"
+ if [[ -x "$LUA_CYCLE_SCRIPT" ]]; then
+ "$LUA_CYCLE_SCRIPT" "$mode" >/dev/null 2>&1 || true
+ return 0
+ fi
+ case "$mode" in
+ previous | prev | back) dispatch_lua_focus left ;;
+ *) dispatch_lua_focus right ;;
+ esac
+}
+
+cycle_next() {
+ local layout="$1"
+ case "$layout" in
+ scrolling)
+ if ! dispatch_changed_focus layoutmsg "focus r"; then
+ dispatch_lua_focus right
+ fi
+ ;;
+ monocle)
+ if ! dispatch_changed_focus layoutmsg cyclenext; then
+ cycle_lua next
+ fi
+ ;;
+ *)
+ if ! dispatch_changed_focus cyclenext; then
+ cycle_lua next
+ fi
+ ;;
+ esac
+}
+
+cycle_prev() {
+ local layout="$1"
+ case "$layout" in
+ scrolling)
+ if ! dispatch_changed_focus layoutmsg "focus l"; then
+ dispatch_lua_focus left
+ fi
+ ;;
+ monocle)
+ if ! dispatch_changed_focus layoutmsg cycleprev; then
+ cycle_lua previous
+ fi
+ ;;
+ *)
+ if ! dispatch_changed_focus cyclenext prev; then
+ cycle_lua previous
+ fi
+ ;;
+ esac
+}
+
+focus_by_layout() {
+ local layout="$1"
+ local direction="$2"
+
+ case "$layout" in
+ master)
+ if ! dispatch_changed_focus movefocus "$direction"; then
+ dispatch_lua_focus "$direction"
+ fi
+ ;;
+ monocle)
+ case "$direction" in
+ l | u) cycle_prev "$layout" ;;
+ *) cycle_next "$layout" ;;
+ esac
+ ;;
+ dwindle | scrolling)
+ case "$direction" in
+ l | u)
+ if [[ "$layout" == "scrolling" ]]; then
+ if ! dispatch_changed_focus layoutmsg "focus $direction"; then
+ dispatch_lua_focus "$direction"
+ fi
+ else
+ cycle_prev "$layout"
+ fi
+ ;;
+ *)
+ if [[ "$layout" == "scrolling" ]]; then
+ if ! dispatch_changed_focus layoutmsg "focus $direction"; then
+ dispatch_lua_focus "$direction"
+ fi
+ else
+ cycle_next "$layout"
+ fi
+ ;;
+ esac
+ ;;
+ *)
+ if ! dispatch_changed_focus movefocus "$direction"; then
+ dispatch_lua_focus "$direction"
+ fi
+ ;;
+ esac
+}
+
+layout="$(get_active_layout)"
+
+case "${1:-}" in
+cycle-next | next)
+ cycle_next "$layout"
+ ;;
+cycle-prev | prev | previous)
+ cycle_prev "$layout"
+ ;;
+focus-left | left)
+ focus_by_layout "$layout" l
+ ;;
+focus-right | right)
+ focus_by_layout "$layout" r
+ ;;
+focus-up | up)
+ focus_by_layout "$layout" u
+ ;;
+focus-down | down)
+ focus_by_layout "$layout" d
+ ;;
+layout | current-layout | status)
+ printf '%s\n' "$layout"
+ ;;
+*)
+ echo "Usage: $(basename "$0") [cycle-next|cycle-prev|focus-left|focus-right|focus-up|focus-down|layout]" >&2
+ exit 1
+ ;;
+esac
diff --git a/config/hypr/scripts/LockScreen.sh b/config/hypr/scripts/LockScreen.sh
index b795a8f7..c63a1e90 100755
--- a/config/hypr/scripts/LockScreen.sh
+++ b/config/hypr/scripts/LockScreen.sh
@@ -10,7 +10,7 @@
#pidof hyprlock || hyprlock -q
# Ensure weather cache is up-to-date before locking (Waybar/lockscreen readers)
-bash "$HOME/.config/hypr/UserScripts/WeatherWrap.sh" >/dev/null 2>&1 &
+bash "${XDG_CONFIG_HOME:-$HOME/.config}/hypr/UserScripts/WeatherWrap.sh" >/dev/null 2>&1 &
loginctl lock-session
diff --git a/config/hypr/scripts/LuaAutoReload.sh b/config/hypr/scripts/LuaAutoReload.sh
index 4a9d5040..128c1fc9 100755
--- a/config/hypr/scripts/LuaAutoReload.sh
+++ b/config/hypr/scripts/LuaAutoReload.sh
@@ -9,8 +9,23 @@
set -euo pipefail
-watch_root="$HOME/.config/hypr"
+watch_root="${XDG_CONFIG_HOME:-$HOME/.config}/hypr"
[ -d "$watch_root" ] || exit 0
+session="${HYPRLAND_INSTANCE_SIGNATURE:-default}"
+pid_file="/tmp/hypr-lua-autoreload-${session}.pid"
+
+if [ -f "$pid_file" ]; then
+ existing_pid="$(cat "$pid_file" 2>/dev/null || true)"
+ if [ -n "$existing_pid" ] && kill -0 "$existing_pid" 2>/dev/null; then
+ exit 0
+ fi
+fi
+
+echo "$$" >"$pid_file"
+cleanup() {
+ rm -f "$pid_file"
+}
+trap cleanup EXIT INT TERM
reload_hypr() {
hyprctl reload >/dev/null 2>&1 || true
diff --git a/config/hypr/scripts/MediaCtrl.sh b/config/hypr/scripts/MediaCtrl.sh
index aeabcac9..958543dc 100755
--- a/config/hypr/scripts/MediaCtrl.sh
+++ b/config/hypr/scripts/MediaCtrl.sh
@@ -7,7 +7,7 @@
# ==================================================
# Playerctl
-music_icon="$HOME/.config/swaync/icons/music.png"
+music_icon="${XDG_CONFIG_HOME:-$HOME/.config}/swaync/icons/music.png"
# Play the next track
play_next() {
diff --git a/config/hypr/scripts/MonitorProfiles.sh b/config/hypr/scripts/MonitorProfiles.sh
index 6330d45c..09467e76 100755
--- a/config/hypr/scripts/MonitorProfiles.sh
+++ b/config/hypr/scripts/MonitorProfiles.sh
@@ -13,7 +13,7 @@ if pidof rofi > /dev/null; then
fi
# Detect active Hyprland config mode (Lua entrypoint vs legacy .conf includes)
-config_home="${XDG_CONFIG_HOME:-$HOME/.config}"
+config_home="${XDG_CONFIG_HOME:-${XDG_CONFIG_HOME:-$HOME/.config}}"
hypr_dir="$config_home/hypr"
lua_entry="$hypr_dir/hyprland.lua"
legacy_lua_entry="$config_home/hyprland.lua"
@@ -35,22 +35,22 @@ if [[ -z "$hypr_config_mode" ]]; then
fi
# Variables
-iDIR="$HOME/.config/swaync/images"
-SCRIPTSDIR="$HOME/.config/hypr/scripts"
-monitor_dir="$HOME/.config/hypr/Monitor_Profiles"
-target_conf="$HOME/.config/hypr/monitors.conf"
-target_lua_user="$HOME/.config/hypr/UserConfigs/monitors.lua"
-target_lua_legacy="$HOME/.config/hypr/lua/monitors.lua"
-rofi_theme="$HOME/.config/rofi/config-Monitors.rasi"
+iDIR="${XDG_CONFIG_HOME:-$HOME/.config}/swaync/images"
+SCRIPTSDIR="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts"
+monitor_dir="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/Monitor_Profiles"
+target_conf="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/monitors.conf"
+target_lua_user="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/UserConfigs/monitors.lua"
+target_lua_legacy="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/lua/monitors.lua"
+rofi_theme="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/config-Monitors.rasi"
if [[ "$hypr_config_mode" == "lua" ]]; then
profile_ext="lua"
target="$target_lua_user"
- msg="❗NOTE:❗ This will overwrite $HOME/.config/hypr/UserConfigs/monitors.lua"
+ msg="❗NOTE:❗ This will overwrite ${XDG_CONFIG_HOME:-$HOME/.config}/hypr/UserConfigs/monitors.lua"
else
profile_ext="conf"
target="$target_conf"
- msg="❗NOTE:❗ This will overwrite $HOME/.config/hypr/monitors.conf"
+ msg="❗NOTE:❗ This will overwrite ${XDG_CONFIG_HOME:-$HOME/.config}/hypr/monitors.conf"
fi
# Define the list of files to ignore
diff --git a/config/hypr/scripts/OverviewToggle.sh b/config/hypr/scripts/OverviewToggle.sh
index 456ccef1..7c55ae82 100755
--- a/config/hypr/scripts/OverviewToggle.sh
+++ b/config/hypr/scripts/OverviewToggle.sh
@@ -9,7 +9,7 @@
set -euo pipefail
-QS_OVERVIEW_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/quickshell/overview"
+QS_OVERVIEW_DIR="${XDG_CONFIG_HOME:-${XDG_CONFIG_HOME:-$HOME/.config}}/quickshell/overview"
# 1) Prefer Quickshell when installed and configured
if command -v qs >/dev/null 2>&1 && [ -d "$QS_OVERVIEW_DIR" ]; then
diff --git a/config/hypr/scripts/PersistWorkspaceLayout.sh b/config/hypr/scripts/PersistWorkspaceLayout.sh
new file mode 100755
index 00000000..b5745880
--- /dev/null
+++ b/config/hypr/scripts/PersistWorkspaceLayout.sh
@@ -0,0 +1,223 @@
+#!/usr/bin/env bash
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
+# Persist active monitor/workspace layout back into ~/.config/hypr/workspaces.conf.
+
+set -u
+
+quiet_mode=0
+layout_override=""
+workspace_override=""
+monitor_override=""
+workspaces_file="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/workspaces.conf"
+
+usage() {
+ cat <<'EOF'
+Usage: PersistWorkspaceLayout.sh [--quiet] [--layout <layout>] [--workspace <selector>] [--monitor <monitor>] [--file <path>]
+ --quiet Suppress console notifications.
+ --layout <layout> Override layout (master|dwindle|scrolling|monocle).
+ --workspace <sel> Override workspace selector (e.g. 5, name:code, special:scratchpad).
+ --monitor <name> Override monitor name.
+ --file <path> Target workspace rules file (default: ~/.config/hypr/workspaces.conf).
+EOF
+}
+
+normalize_layout() {
+ case "$1" in
+ master | dwindle | scrolling | monocle)
+ printf '%s\n' "$1"
+ ;;
+ *)
+ printf '\n'
+ ;;
+ esac
+}
+
+require_cmd() {
+ command -v "$1" >/dev/null 2>&1 || {
+ echo "Missing dependency: $1" >&2
+ exit 1
+ }
+}
+
+get_active_workspace_json() {
+ hyprctl -j activeworkspace 2>/dev/null || printf '{}'
+}
+
+get_workspace_selector() {
+ local ws_json="$1"
+ local ws_id ws_name
+
+ ws_id="$(jq -r '.id // empty' <<<"$ws_json" 2>/dev/null || true)"
+ ws_name="$(jq -r '.name // empty' <<<"$ws_json" 2>/dev/null || true)"
+
+ if [[ "$ws_id" =~ ^[0-9]+$ ]] && ((ws_id > 0)); then
+ printf '%s\n' "$ws_id"
+ return 0
+ fi
+
+ if [[ -n "$ws_name" && "$ws_name" != "null" ]]; then
+ if [[ "$ws_name" == name:* || "$ws_name" == special:* ]]; then
+ printf '%s\n' "$ws_name"
+ else
+ printf 'name:%s\n' "$ws_name"
+ fi
+ return 0
+ fi
+
+ return 1
+}
+
+while [[ $# -gt 0 ]]; do
+ case "$1" in
+ --quiet | --no-notify)
+ quiet_mode=1
+ shift
+ ;;
+ --layout)
+ layout_override="${2:-}"
+ shift 2
+ ;;
+ --workspace)
+ workspace_override="${2:-}"
+ shift 2
+ ;;
+ --monitor)
+ monitor_override="${2:-}"
+ shift 2
+ ;;
+ --file)
+ workspaces_file="${2:-}"
+ shift 2
+ ;;
+ -h | --help)
+ usage
+ exit 0
+ ;;
+ *)
+ echo "Unknown argument: $1" >&2
+ usage >&2
+ exit 1
+ ;;
+ esac
+done
+
+require_cmd hyprctl
+require_cmd jq
+require_cmd awk
+require_cmd mktemp
+
+ws_json="$(get_active_workspace_json)"
+workspace_selector="${workspace_override:-$(get_workspace_selector "$ws_json" || true)}"
+monitor_name="${monitor_override:-$(jq -r '.monitor // empty' <<<"$ws_json" 2>/dev/null || true)}"
+
+if [[ -n "$layout_override" ]]; then
+ layout_name="$(normalize_layout "$layout_override")"
+else
+ layout_name="$(jq -r '.tiledLayout // .tiled_layout // empty' <<<"$ws_json" 2>/dev/null || true)"
+ layout_name="$(normalize_layout "$layout_name")"
+ if [[ -z "$layout_name" ]]; then
+ layout_name="$(hyprctl -j getoption general:layout 2>/dev/null | jq -r '.str // empty' 2>/dev/null || true)"
+ layout_name="$(normalize_layout "$layout_name")"
+ fi
+fi
+
+if [[ -z "$workspace_selector" || -z "$monitor_name" || -z "$layout_name" ]]; then
+ echo "Unable to resolve workspace, monitor, or layout for persistence" >&2
+ exit 1
+fi
+
+mkdir -p "$(dirname "$workspaces_file")"
+touch "$workspaces_file"
+
+tmp_file="$(mktemp "${workspaces_file}.XXXXXX")"
+cleanup() {
+ rm -f "$tmp_file"
+}
+trap cleanup EXIT
+
+awk \
+ -v target_ws="$workspace_selector" \
+ -v target_mon="$monitor_name" \
+ -v target_layout="$layout_name" '
+function trim(v) {
+ gsub(/^[[:space:]]+|[[:space:]]+$/, "", v)
+ return v
+}
+BEGIN {
+ updated = 0
+}
+{
+ line = $0
+ content = line
+ comment = ""
+ hash_pos = index(line, "#")
+ if (hash_pos > 0) {
+ content = substr(line, 1, hash_pos - 1)
+ comment = substr(line, hash_pos)
+ }
+ stripped = trim(content)
+ indent_len = match(line, /[^[:space:]]/) - 1
+ if (indent_len < 0) {
+ indent_len = length(line)
+ }
+ indent = substr(line, 1, indent_len)
+
+ if (stripped ~ /^workspace[[:space:]]*=/) {
+ sub(/^workspace[[:space:]]*=[[:space:]]*/, "", stripped)
+ token_count = split(stripped, tokens, /,/)
+ ws = trim(tokens[1])
+ mon = ""
+ extras_count = 0
+ delete extras
+
+ for (i = 2; i <= token_count; i++) {
+ token = trim(tokens[i])
+ if (token == "") {
+ continue
+ }
+ if (token ~ /^monitor:/) {
+ mon = trim(substr(token, 9))
+ continue
+ }
+ if (token ~ /^layout:/) {
+ continue
+ }
+ extras[++extras_count] = token
+ }
+
+ if (ws == target_ws && mon == target_mon) {
+ if (!updated) {
+ rebuilt = indent "workspace = " ws ", monitor:" target_mon ", layout:" target_layout
+ for (i = 1; i <= extras_count; i++) {
+ rebuilt = rebuilt ", " extras[i]
+ }
+ if (comment != "") {
+ rebuilt = rebuilt " " comment
+ }
+ print rebuilt
+ updated = 1
+ }
+ next
+ }
+ }
+
+ print line
+}
+END {
+ if (!updated) {
+ print "workspace = " target_ws ", monitor:" target_mon ", layout:" target_layout
+ }
+}
+' "$workspaces_file" >"$tmp_file"
+
+mv "$tmp_file" "$workspaces_file"
+trap - EXIT
+
+if [[ "$quiet_mode" -eq 0 ]]; then
+ printf 'Saved workspace layout: %s @ %s -> %s\n' "$workspace_selector" "$monitor_name" "$layout_name"
+fi
diff --git a/config/hypr/scripts/Polkit-Diag.sh b/config/hypr/scripts/Polkit-Diag.sh
index aa4e69a8..8e0e9f23 100755
--- a/config/hypr/scripts/Polkit-Diag.sh
+++ b/config/hypr/scripts/Polkit-Diag.sh
@@ -15,7 +15,7 @@ INSTALL_OVERRIDE=0
FORCE_OVERRIDE=0
# Systemd override details for hyprpolkitagent
-OVERRIDE_DIR="$HOME/.config/systemd/user/hyprpolkitagent.service.d"
+OVERRIDE_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/systemd/user/hyprpolkitagent.service.d"
OVERRIDE_FILE="$OVERRIDE_DIR/override.conf"
OVERRIDE_CONTENT="[Unit]
diff --git a/config/hypr/scripts/PortalHyprland.sh b/config/hypr/scripts/PortalHyprland.sh
index 3d3dc410..54ea71bb 100755
--- a/config/hypr/scripts/PortalHyprland.sh
+++ b/config/hypr/scripts/PortalHyprland.sh
@@ -10,21 +10,73 @@
set -euo pipefail
is_ubuntu_family() {
if [[ ! -r /etc/os-release ]]; then
- return 1
+ #return 1
+ # It's been reported this also addresses
+ # The xdg-desktop-portal failure when not using
+ # UWSM on Arch
+ exit 0
fi
# shellcheck disable=SC1091
. /etc/os-release
- [[ "${ID:-}" == "ubuntu" \
- || "${ID:-}" == "linuxmint" \
- || "${ID:-}" == "zorin" \
- || "${ID:-}" == "rhino" \
- || "${ID_LIKE:-}" == *ubuntu* ]]
+ [[ "${ID:-}" == "ubuntu" ||
+ "${ID:-}" == "linuxmint" ||
+ "${ID:-}" == "zorin" ||
+ "${ID:-}" == "rhino" ||
+ "${ID_LIKE:-}" == *ubuntu* ]]
}
kill_quietly() {
killall -q "$1" 2>/dev/null || true
}
+wait_for_wayland() {
+ local runtime_dir="${XDG_RUNTIME_DIR:-/run/user/$(id -u)}"
+ export XDG_RUNTIME_DIR="$runtime_dir"
+
+ if [[ -n "${WAYLAND_DISPLAY:-}" && -S "$runtime_dir/$WAYLAND_DISPLAY" ]]; then
+ return 0
+ fi
+
+ for _ in $(seq 1 120); do
+ if [[ -n "${WAYLAND_DISPLAY:-}" && -S "$runtime_dir/$WAYLAND_DISPLAY" ]]; then
+ return 0
+ fi
+
+ for socket in "$runtime_dir"/wayland-[0-9]*; do
+ [[ -S "$socket" ]] || continue
+ case "$(basename "$socket")" in
+ *awww*) continue ;;
+ esac
+ export WAYLAND_DISPLAY="$(basename "$socket")"
+ return 0
+ done
+ sleep 0.1
+ done
+
+ return 1
+}
+
+ensure_portal_env() {
+ export XDG_CURRENT_DESKTOP="${XDG_CURRENT_DESKTOP:-Hyprland}"
+ export XDG_SESSION_DESKTOP="${XDG_SESSION_DESKTOP:-Hyprland}"
+ export XDG_SESSION_TYPE="${XDG_SESSION_TYPE:-wayland}"
+ if [[ -f "/usr/share/glib-2.0/schemas/gschemas.compiled" ]]; then
+ export GSETTINGS_SCHEMA_DIR="/usr/share/glib-2.0/schemas"
+ fi
+
+ local data_dirs="${XDG_DATA_DIRS:-}"
+ if [[ -z "$data_dirs" ]]; then
+ data_dirs="/usr/local/share:/usr/share"
+ else
+ if [[ ":$data_dirs:" != *":/usr/local/share:"* ]]; then
+ data_dirs="/usr/local/share:$data_dirs"
+ fi
+ if [[ ":$data_dirs:" != *":/usr/share:"* ]]; then
+ data_dirs="$data_dirs:/usr/share"
+ fi
+ fi
+ export XDG_DATA_DIRS="$data_dirs"
+}
start_portal_binary() {
local description="$1"
@@ -38,29 +90,74 @@ start_portal_binary() {
echo "Warning: no $description binary found (checked: $*)" >&2
return 1
}
-if ! is_ubuntu_family; then
- exit 0
-fi
+stop_portal_processes() {
+ kill_quietly xdg-desktop-portal-hyprland
+ kill_quietly xdg-desktop-portal-wlr
+ kill_quietly xdg-desktop-portal-gnome
+ kill_quietly xdg-desktop-portal-gtk
+ kill_quietly xdg-desktop-portal
+}
+
+restart_portal_via_systemd() {
+ command -v systemctl >/dev/null 2>&1 || return 1
+ ensure_portal_env
+ if command -v dbus-update-activation-environment >/dev/null 2>&1; then
+ dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP XDG_SESSION_DESKTOP XDG_SESSION_TYPE XDG_DATA_DIRS GSETTINGS_SCHEMA_DIR >/dev/null 2>&1 || true
+ fi
+
+ systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP XDG_SESSION_DESKTOP XDG_SESSION_TYPE XDG_DATA_DIRS GSETTINGS_SCHEMA_DIR >/dev/null 2>&1 || true
+ systemctl --user stop xdg-desktop-portal.service xdg-desktop-portal-hyprland.service xdg-desktop-portal-gtk.service >/dev/null 2>&1 || true
+ stop_portal_processes
+ sleep 0.5
+ systemctl --user reset-failed xdg-desktop-portal-hyprland.service xdg-desktop-portal.service xdg-desktop-portal-gtk.service >/dev/null 2>&1 || true
+ systemctl --user start graphical-session.target >/dev/null 2>&1 || true
+
+ for _ in $(seq 1 30); do
+ if systemctl --user is-active --quiet graphical-session.target; then
+ break
+ fi
+ sleep 0.1
+ done
+
+ systemctl --user start xdg-desktop-portal-hyprland.service >/dev/null 2>&1 || true
+ if is_ubuntu_family; then
+ systemctl --user start xdg-desktop-portal-gtk.service >/dev/null 2>&1 || true
+ fi
-sleep 1
-kill_quietly xdg-desktop-portal-hyprland
-kill_quietly xdg-desktop-portal-wlr
-kill_quietly xdg-desktop-portal-gnome
-kill_quietly xdg-desktop-portal-gtk
-kill_quietly xdg-desktop-portal
-sleep 1
+ for _ in $(seq 1 60); do
+ if systemctl --user is-active --quiet xdg-desktop-portal-hyprland.service; then
+ return 0
+ fi
+ sleep 0.1
+ done
+ return 1
+}
-start_portal_binary "xdg-desktop-portal-hyprland" \
- /usr/lib/xdg-desktop-portal-hyprland \
- /usr/libexec/xdg-desktop-portal-hyprland
+restart_portal_manually() {
+ sleep 1
+ stop_portal_processes
+ sleep 1
-sleep 2
+ start_portal_binary "xdg-desktop-portal-hyprland" \
+ /usr/lib/xdg-desktop-portal-hyprland \
+ /usr/libexec/xdg-desktop-portal-hyprland
-start_portal_binary "xdg-desktop-portal-gtk" \
- /usr/lib/xdg-desktop-portal-gtk \
- /usr/libexec/xdg-desktop-portal-gtk
+ sleep 2
-start_portal_binary "xdg-desktop-portal" \
- /usr/lib/xdg-desktop-portal \
- /usr/libexec/xdg-desktop-portal
+ if is_ubuntu_family; then
+ start_portal_binary "xdg-desktop-portal-gtk" \
+ /usr/lib/xdg-desktop-portal-gtk \
+ /usr/libexec/xdg-desktop-portal-gtk || true
+ fi
+
+ start_portal_binary "xdg-desktop-portal" \
+ /usr/lib/xdg-desktop-portal \
+ /usr/libexec/xdg-desktop-portal
+}
+wait_for_wayland || true
+if command -v systemctl >/dev/null 2>&1; then
+ restart_portal_via_systemd || true
+else
+ restart_portal_manually
+fi
diff --git a/config/hypr/scripts/PortalHyprlandUbuntu.sh b/config/hypr/scripts/PortalHyprlandUbuntu.sh
index 86e1a6d3..79762a84 100755
--- a/config/hypr/scripts/PortalHyprlandUbuntu.sh
+++ b/config/hypr/scripts/PortalHyprlandUbuntu.sh
@@ -17,8 +17,8 @@ if [[ -r /etc/os-release ]]; then
|| "${ID:-}" == "zorin" \
|| "${ID:-}" == "rhino" \
|| "${ID_LIKE:-}" == *ubuntu* ]]; then
- if [[ -x "$HOME/.config/hypr/scripts/PortalHyprland.sh" ]]; then
- "$HOME/.config/hypr/scripts/PortalHyprland.sh"
+ if [[ -x "${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts/PortalHyprland.sh" ]]; then
+ "${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts/PortalHyprland.sh"
fi
fi
fi
diff --git a/config/hypr/scripts/Refresh.sh b/config/hypr/scripts/Refresh.sh
index 947b6bfc..ed8c4a0c 100755
--- a/config/hypr/scripts/Refresh.sh
+++ b/config/hypr/scripts/Refresh.sh
@@ -7,8 +7,8 @@
# ==================================================
# Scripts for refreshing ags, waybar, rofi, swaync, wallust
-SCRIPTSDIR=$HOME/.config/hypr/scripts
-UserScripts=$HOME/.config/hypr/UserScripts
+SCRIPTSDIR=${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts
+UserScripts=${XDG_CONFIG_HOME:-$HOME/.config}/hypr/UserScripts
# Define file_exists function
file_exists() {
@@ -32,10 +32,10 @@ pkill -f 'waybar-cava\..*\.conf' 2>/dev/null || true
# quit ags & relaunch ags
-#ags -q && ags &
+ags -q && ags &
# quit quickshell & relaunch quickshell
-#pkill qs && qs &
+pkill qs && qs &
# some process to kill (exclude waybar to avoid restart loops)
for pid in $(pidof rofi swaync ags swaybg); do
diff --git a/config/hypr/scripts/RefreshNoWaybar.sh b/config/hypr/scripts/RefreshNoWaybar.sh
index f5d564ac..c9e7464e 100755
--- a/config/hypr/scripts/RefreshNoWaybar.sh
+++ b/config/hypr/scripts/RefreshNoWaybar.sh
@@ -10,8 +10,8 @@
# Used by automatic wallpaper change
# Modified inorder to refresh rofi background, Wallust, SwayNC only
-SCRIPTSDIR=$HOME/.config/hypr/scripts
-UserScripts=$HOME/.config/hypr/UserScripts
+SCRIPTSDIR=${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts
+UserScripts=${XDG_CONFIG_HOME:-$HOME/.config}/hypr/UserScripts
# Define file_exists function
file_exists() {
@@ -31,10 +31,10 @@ for _prs in "${_ps[@]}"; do
done
# quit ags & relaunch ags
-#ags -q && ags &
+ags -q && ags &
# quit quickshell & relaunch quickshell
-#pkill qs && qs &
+pkill qs && qs &
# reload swaync
diff --git a/config/hypr/scripts/RofiEmoji.sh b/config/hypr/scripts/RofiEmoji.sh
index 539a03b6..65463abc 100755
--- a/config/hypr/scripts/RofiEmoji.sh
+++ b/config/hypr/scripts/RofiEmoji.sh
@@ -7,7 +7,7 @@
# ==================================================
# Variables
-rofi_theme="$HOME/.config/rofi/config-emoji.rasi"
+rofi_theme="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/config-emoji.rasi"
msg='** note ** 👀 Click or Return to choose || Ctrl V to Paste'
# Check if rofi is already running
diff --git a/config/hypr/scripts/RofiFocusedWallpaperLink.sh b/config/hypr/scripts/RofiFocusedWallpaperLink.sh
new file mode 100755
index 00000000..c0f8d64a
--- /dev/null
+++ b/config/hypr/scripts/RofiFocusedWallpaperLink.sh
@@ -0,0 +1,180 @@
+#!/usr/bin/env bash
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
+# Resolve focused-monitor wallpaper and refresh rofi focused wallpaper link.
+
+SCRIPTSDIR="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts"
+ROFI_FOCUSED_LINK="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/.current_wallpaper_focused"
+ROFI_GLOBAL_LINK="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/.current_wallpaper"
+WALLPAPER_CURRENT="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/wallpaper_effects/.wallpaper_current"
+
+# shellcheck source=/dev/null
+. "$SCRIPTSDIR/WallpaperCmd.sh" 2>/dev/null || true
+
+read_cached_wallpaper() {
+ local cache_file="$1"
+ [[ -f "$cache_file" ]] || return 1
+ awk 'NF && $0 !~ /^filter/ {print; exit}' "$cache_file"
+}
+
+read_wallpaper_from_query() {
+ local monitor="$1"
+ [[ -n "$monitor" ]] || return 1
+ [[ -n "${WWW_CMD:-}" ]] || return 1
+ command -v "$WWW_CMD" >/dev/null 2>&1 || return 1
+ "$WWW_CMD" query 2>/dev/null | awk -v mon="$monitor" '
+ {
+ line=$0
+ sub(/^Monitor[[:space:]]+/, "", line)
+ sub(/^:[[:space:]]*/, "", line)
+ mon_name=line
+ sub(/:.*/, "", mon_name)
+ gsub(/^[[:space:]]+|[[:space:]]+$/, "", mon_name)
+ if (mon_name != mon) next
+
+ path=line
+ sub(/^.*image:[[:space:]]*/, "", path)
+ gsub(/^[[:space:]]+|[[:space:]]+$/, "", path)
+ if (path != line && length(path) > 0) {
+ print path
+ exit
+ }
+ }
+ '
+}
+
+resolve_link_or_file() {
+ local path="$1"
+ local resolved=""
+ if [[ -L "$path" ]]; then
+ resolved="$(readlink -f "$path" 2>/dev/null || true)"
+ if [[ -n "$resolved" && -f "$resolved" ]]; then
+ printf '%s\n' "$resolved"
+ return 0
+ fi
+ fi
+ if [[ -f "$path" ]]; then
+ printf '%s\n' "$path"
+ return 0
+ fi
+ return 1
+}
+
+get_active_workspace_monitor() {
+ command -v hyprctl >/dev/null 2>&1 || return 1
+ if command -v jq >/dev/null 2>&1; then
+ hyprctl activeworkspace -j 2>/dev/null | jq -r '.monitor // empty' | head -n1
+ else
+ hyprctl monitors 2>/dev/null | awk '/^Monitor/{name=$2} /focused: yes/{print name; exit}'
+ fi
+}
+
+get_focused_monitor() {
+ command -v hyprctl >/dev/null 2>&1 || return 1
+ if command -v jq >/dev/null 2>&1; then
+ hyprctl monitors -j 2>/dev/null | jq -r '.[] | select(.focused) | .name' | head -n1
+ else
+ hyprctl monitors 2>/dev/null | awk '/^Monitor/{name=$2} /focused: yes/{print name; exit}'
+ fi
+}
+
+monitor_exists() {
+ local monitor="$1"
+ [[ -n "$monitor" ]] || return 1
+ command -v hyprctl >/dev/null 2>&1 || return 1
+ if command -v jq >/dev/null 2>&1; then
+ hyprctl monitors -j 2>/dev/null | jq -r --arg mon "$monitor" '.[] | select(.name == $mon) | .name' | grep -qx "$monitor"
+ else
+ hyprctl monitors 2>/dev/null | awk '/^Monitor/{print $2}' | grep -qx "$monitor"
+ fi
+}
+
+resolve_target_monitor() {
+ local monitor=""
+ monitor="$(get_active_workspace_monitor 2>/dev/null || true)"
+ if monitor_exists "$monitor"; then
+ printf '%s\n' "$monitor"
+ return 0
+ fi
+ monitor="$(get_focused_monitor 2>/dev/null || true)"
+ if [[ -n "$monitor" ]]; then
+ printf '%s\n' "$monitor"
+ return 0
+ fi
+ return 1
+}
+
+read_wallpaper_from_cache() {
+ local monitor="$1"
+ local cache_root="${WWW_CACHE_DIR:-$HOME/.cache/awww}"
+ local cache_file="$cache_root/$monitor"
+ local fallback_cache=""
+ local path=""
+
+ case "$cache_root" in
+ "$HOME/.cache/awww")
+ fallback_cache="$HOME/.cache/swww/$monitor"
+ ;;
+ "$HOME/.cache/swww")
+ fallback_cache="$HOME/.cache/awww/$monitor"
+ ;;
+ esac
+
+ path="$(read_cached_wallpaper "$cache_file" 2>/dev/null || true)"
+ if [[ -z "$path" && -n "$fallback_cache" ]]; then
+ path="$(read_cached_wallpaper "$fallback_cache" 2>/dev/null || true)"
+ fi
+ [[ -n "$path" && -f "$path" ]] || return 1
+ printf '%s\n' "$path"
+}
+
+resolve_focused_wallpaper() {
+ local monitor="$1"
+ local path=""
+ local per_monitor_link=""
+ local per_monitor_current=""
+
+ if [[ -n "$monitor" ]]; then
+ per_monitor_link="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/.current_wallpaper_${monitor}"
+ per_monitor_current="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/wallpaper_effects/.wallpaper_current_${monitor}"
+
+ path="$(read_wallpaper_from_query "$monitor" 2>/dev/null || true)"
+ if [[ -z "$path" ]]; then
+ path="$(resolve_link_or_file "$per_monitor_link" 2>/dev/null || true)"
+ fi
+ if [[ -z "$path" ]]; then
+ path="$(resolve_link_or_file "$per_monitor_current" 2>/dev/null || true)"
+ fi
+ if [[ -z "$path" ]]; then
+ path="$(read_wallpaper_from_cache "$monitor" 2>/dev/null || true)"
+ fi
+ fi
+
+ if [[ -z "$path" ]]; then
+ path="$(resolve_link_or_file "$ROFI_GLOBAL_LINK" 2>/dev/null || true)"
+ fi
+ if [[ -z "$path" ]]; then
+ path="$(resolve_link_or_file "$WALLPAPER_CURRENT" 2>/dev/null || true)"
+ fi
+
+ [[ -n "$path" && -f "$path" ]] || return 1
+ printf '%s\n' "$path"
+}
+
+main() {
+ local target_monitor=""
+ local wallpaper_path=""
+
+ target_monitor="$(resolve_target_monitor 2>/dev/null || true)"
+ wallpaper_path="$(resolve_focused_wallpaper "$target_monitor" 2>/dev/null || true)"
+ [[ -n "$wallpaper_path" && -f "$wallpaper_path" ]] || exit 1
+
+ mkdir -p "$(dirname "$ROFI_FOCUSED_LINK")"
+ ln -sf "$wallpaper_path" "$ROFI_FOCUSED_LINK"
+}
+
+main "$@"
diff --git a/config/hypr/scripts/RofiSearch.sh b/config/hypr/scripts/RofiSearch.sh
index 42b54d75..05520ed0 100755
--- a/config/hypr/scripts/RofiSearch.sh
+++ b/config/hypr/scripts/RofiSearch.sh
@@ -8,7 +8,7 @@
# For Searching via web browsers
# Define the path to the config file
-config_file=$HOME/.config/hypr/UserConfigs/01-UserDefaults.conf
+config_file=${XDG_CONFIG_HOME:-$HOME/.config}/hypr/UserConfigs/01-UserDefaults.conf
if ! command -v jq >/dev/null 2>&1; then
notify-send -u low "Rofi Search" "jq is required for URL encoding. Please install jq."
exit 1
@@ -33,7 +33,7 @@ if [[ -z "$Search_Engine" ]]; then
fi
# Rofi theme and message
-rofi_theme="$HOME/.config/rofi/config-search.rasi"
+rofi_theme="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/config-search.rasi"
msg='‼️ **note** ‼️ search via default web browser'
# Kill Rofi if already running before execution
diff --git a/config/hypr/scripts/RofiThemeSelector-modified.sh b/config/hypr/scripts/RofiThemeSelector-modified.sh
index 535b7313..9dfafba1 100755
--- a/config/hypr/scripts/RofiThemeSelector-modified.sh
+++ b/config/hypr/scripts/RofiThemeSelector-modified.sh
@@ -5,12 +5,12 @@
# 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
+# A modified version of Rofi-Theme-Selector, concentrating only on ~/.local and also, applying only 10 @themes in ${XDG_CONFIG_HOME:-$HOME/.config}/rofi/config.rasi
# as opposed to continous adding of //@theme
# This code is released in public domain by Dave Davenport <qball@gmpclient.org>
-iDIR="$HOME/.config/swaync/images"
+iDIR="${XDG_CONFIG_HOME:-$HOME/.config}/swaync/images"
OS="linux"
@@ -42,7 +42,7 @@ fi
TMP_CONFIG_FILE=$(${MKTEMP}).rasi
#rofi_theme_dir="${HOME}/.local/share/rofi/themes"
-rofi_config_file="${XDG_CONFIG_HOME:-${HOME}/.config}/rofi/config.rasi"
+rofi_config_file="${XDG_CONFIG_HOME:-${XDG_CONFIG_HOME:-$HOME/.config}}/rofi/config.rasi"
##
# Array with parts to the found themes.
@@ -57,7 +57,7 @@ declare -a theme_names
##
# Find themes in defined directories
find_themes() {
- directories=("$HOME/.local/share/rofi/themes" "$HOME/.config/rofi/themes")
+ directories=("$HOME/.local/share/rofi/themes" "${XDG_CONFIG_HOME:-$HOME/.config}/rofi/themes")
for TD in "${directories[@]}"; do
if [ -d "$TD" ]; then
@@ -86,8 +86,8 @@ add_theme_to_config() {
# Determine the correct path for the theme
if [[ -f "$HOME/.local/share/rofi/themes/$theme_name.rasi" ]]; then
theme_path="$HOME/.local/share/rofi/themes/$theme_name.rasi"
- elif [[ -f "$HOME/.config/rofi/themes/$theme_name.rasi" ]]; then
- theme_path="$HOME/.config/rofi/themes/$theme_name.rasi"
+ elif [[ -f "${XDG_CONFIG_HOME:-$HOME/.config}/rofi/themes/$theme_name.rasi" ]]; then
+ theme_path="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/themes/$theme_name.rasi"
else
echo "Theme not found: $theme_name"
return 1
diff --git a/config/hypr/scripts/RofiThemeSelector.sh b/config/hypr/scripts/RofiThemeSelector.sh
index db723b6f..1841b4f5 100755
--- a/config/hypr/scripts/RofiThemeSelector.sh
+++ b/config/hypr/scripts/RofiThemeSelector.sh
@@ -8,11 +8,11 @@
# Rofi Themes - Script to preview and apply themes by live-reloading the config.
# --- Configuration ---
-ROFI_THEMES_DIR_CONFIG="$HOME/.config/rofi/themes"
+ROFI_THEMES_DIR_CONFIG="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/themes"
ROFI_THEMES_DIR_LOCAL="$HOME/.local/share/rofi/themes"
-ROFI_CONFIG_FILE="$HOME/.config/rofi/config.rasi"
-ROFI_THEME_FOR_THIS_SCRIPT="$HOME/.config/rofi/config-rofi-theme.rasi" # A separate rofi theme for the picker itself
-IDIR="$HOME/.config/swaync/images" # For notifications
+ROFI_CONFIG_FILE="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/config.rasi"
+ROFI_THEME_FOR_THIS_SCRIPT="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/config-rofi-theme.rasi" # A separate rofi theme for the picker itself
+IDIR="${XDG_CONFIG_HOME:-$HOME/.config}/swaync/images" # For notifications
# --- Helper Functions ---
diff --git a/config/hypr/scripts/ScreenShot.sh b/config/hypr/scripts/ScreenShot.sh
index baad89a1..ed914552 100755
--- a/config/hypr/scripts/ScreenShot.sh
+++ b/config/hypr/scripts/ScreenShot.sh
@@ -13,9 +13,9 @@ PICTURES_DIR="$(xdg-user-dir PICTURES 2>/dev/null || echo "$HOME/Pictures")"
dir="$PICTURES_DIR/Screenshots"
file="Screenshot_${time}_${RANDOM}.png"
-iDIR="$HOME/.config/swaync/icons"
-iDoR="$HOME/.config/swaync/images"
-sDIR="$HOME/.config/hypr/scripts"
+iDIR="${XDG_CONFIG_HOME:-$HOME/.config}/swaync/icons"
+iDoR="${XDG_CONFIG_HOME:-$HOME/.config}/swaync/images"
+sDIR="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts"
active_window_class=$(hyprctl -j activewindow | jq -r '(.class)')
active_window_file="Screenshot_${time}_${active_window_class}.png"
diff --git a/config/hypr/scripts/ScrollCycleColumnWidth.sh b/config/hypr/scripts/ScrollCycleColumnWidth.sh
new file mode 100755
index 00000000..c9ab2668
--- /dev/null
+++ b/config/hypr/scripts/ScrollCycleColumnWidth.sh
@@ -0,0 +1,56 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+if ! command -v hyprctl >/dev/null 2>&1; then
+ exit 0
+fi
+
+if ! command -v jq >/dev/null 2>&1; then
+ exit 0
+fi
+
+workspace_json="$(hyprctl -j activeworkspace 2>/dev/null || true)"
+layout_name="$(jq -r '.tiledLayout // .tiled_layout // empty' <<<"$workspace_json")"
+
+if [[ "$layout_name" != "scrolling" ]]; then
+ exit 0
+fi
+
+window_json="$(hyprctl -j activewindow 2>/dev/null || true)"
+column_width="$(jq -r '.layout.column.width // .layout.column // empty' <<<"$window_json")"
+window_monitor="$(jq -r '.monitor // empty' <<<"$window_json")"
+window_width="$(jq -r '.size[0] // empty' <<<"$window_json")"
+
+if [[ -n "$column_width" && "$column_width" != "null" ]]; then
+ if ! awk -v v="$column_width" 'BEGIN { exit !(v > 0 && v <= 1.0) }'; then
+ column_width=""
+ fi
+fi
+
+if [[ -z "$column_width" || "$column_width" == "null" ]]; then
+ monitors_json="$(hyprctl -j monitors 2>/dev/null || true)"
+ monitor_width="$(jq -r --arg id "$window_monitor" '.[] | select((.id | tostring) == $id) | .width' <<<"$monitors_json" 2>/dev/null | head -n1)"
+ if [[ -n "$window_width" && -n "$monitor_width" && "$window_width" != "null" && "$monitor_width" != "null" ]]; then
+ column_width="$(awk -v w="$window_width" -v mw="$monitor_width" 'BEGIN { if (w > 0 && mw > 0) printf "%.6f", (w / mw); }')"
+ fi
+fi
+
+if [[ -z "$column_width" || "$column_width" == "null" ]]; then
+ exit 0
+fi
+
+presets=(0.25 0.33 0.5 0.66 0.75 1.0)
+closest_idx=0
+best_diff=""
+
+for idx in "${!presets[@]}"; do
+ preset="${presets[$idx]}"
+ diff="$(awk -v a="$preset" -v b="$column_width" 'BEGIN { d = a - b; if (d < 0) d = -d; printf "%.12f", d }')"
+ if [[ -z "$best_diff" ]] || awk -v d="$diff" -v b="$best_diff" 'BEGIN { exit !(d < b) }'; then
+ best_diff="$diff"
+ closest_idx="$idx"
+ fi
+done
+
+next_idx=$(( (closest_idx + 1) % ${#presets[@]} ))
+hyprctl dispatch layoutmsg "colresize ${presets[$next_idx]}" >/dev/null 2>&1 || true
diff --git a/config/hypr/scripts/ScrollMaximizeToggle.sh b/config/hypr/scripts/ScrollMaximizeToggle.sh
new file mode 100755
index 00000000..29c06eb4
--- /dev/null
+++ b/config/hypr/scripts/ScrollMaximizeToggle.sh
@@ -0,0 +1,175 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+if ! command -v hyprctl >/dev/null 2>&1; then
+ exit 1
+fi
+dispatch_ok() {
+ local dispatcher="$1"
+ shift
+ local output=""
+ case "$dispatcher" in
+ fullscreen)
+ if [[ "${1:-}" == "1" ]]; then
+ output="$(hyprctl dispatch 'hl.dsp.window.fullscreen({ mode = "maximized" })' 2>&1 || true)"
+ else
+ output="$(hyprctl dispatch 'hl.dsp.window.fullscreen({ mode = "fullscreen" })' 2>&1 || true)"
+ fi
+ ;;
+ layoutmsg)
+ local msg="${1:-}"
+ msg="${msg//\\/\\\\}"
+ msg="${msg//\"/\\\"}"
+ output="$(hyprctl dispatch "hl.dsp.layout(\"${msg}\")" 2>&1 || true)"
+ ;;
+ *)
+ output="$(hyprctl dispatch "$dispatcher" "$@" 2>&1 || true)"
+ ;;
+ esac
+ local normalized=""
+ normalized="$(printf '%s' "$output" | tr -d '\r\n')"
+ [[ -z "$normalized" || "$normalized" == "ok" ]]
+}
+
+if ! command -v jq >/dev/null 2>&1; then
+ dispatch_ok fullscreen 1 >/dev/null 2>&1 || true
+ exit 0
+fi
+
+run_layoutmsg() {
+ local msg="$1"
+ dispatch_ok layoutmsg "$msg"
+}
+toggle_maximize() {
+ local active_window_json="$1"
+ local fullscreen_state=""
+ fullscreen_state="$(jq -r '
+ (.fullscreen // .fullscreenClient // 0) as $value
+ | if ($value | type) == "boolean" then
+ (if $value then 1 else 0 end)
+ elif ($value | type) == "number" then
+ $value
+ elif ($value | type) == "string" then
+ ($value | tonumber? // 0)
+ else
+ 0
+ end
+ ' <<<"$active_window_json" 2>/dev/null || true)"
+ if [[ -n "$fullscreen_state" && "$fullscreen_state" != "null" ]] && awk -v v="$fullscreen_state" 'BEGIN { exit !(v > 0) }'; then
+ dispatch_ok fullscreen 1 >/dev/null 2>&1 || true
+ return 0
+ fi
+ return 1
+}
+
+workspace_json="$(hyprctl -j activeworkspace 2>/dev/null || true)"
+layout_name="$(jq -r '.tiledLayout // .tiled_layout // empty' <<<"$workspace_json")"
+
+if [[ "$layout_name" != "scrolling" ]]; then
+ dispatch_ok fullscreen 1 >/dev/null 2>&1 || true
+ exit 0
+fi
+
+window_json="$(hyprctl -j activewindow 2>/dev/null || true)"
+if [[ -z "$window_json" || "$window_json" == "null" ]]; then
+ exit 0
+fi
+if toggle_maximize "$window_json"; then
+ exit 0
+fi
+
+window_address="$(jq -r '.address // empty' <<<"$window_json")"
+window_width="$(jq -r '.size[0] // empty' <<<"$window_json")"
+column_width="$(jq -r '
+ .layout.column as $col
+ | if ($col | type) == "number" then $col
+ elif ($col | type) == "object" then ($col.width // empty)
+ elif ($col | type) == "string" then ($col | tonumber? // empty)
+ else empty
+ end
+' <<<"$window_json")"
+if [[ -n "$column_width" && "$column_width" != "null" ]]; then
+ if ! awk -v v="$column_width" 'BEGIN { exit !(v > 0 && v <= 1.0) }'; then
+ column_width=""
+ fi
+fi
+
+if [[ -z "$window_address" || -z "$window_width" || "$window_width" == "null" ]]; then
+ dispatch_ok fullscreen 1 >/dev/null 2>&1 || true
+ exit 0
+fi
+
+runtime_dir="${XDG_RUNTIME_DIR:-/tmp}"
+state_dir="${runtime_dir}/hypr"
+state_file="${state_dir}/scrolling-maximize-state.json"
+mkdir -p "$state_dir"
+
+if [[ ! -s "$state_file" ]]; then
+ printf '{}\n' > "$state_file"
+elif ! jq -e . "$state_file" >/dev/null 2>&1; then
+ printf '{}\n' > "$state_file"
+fi
+
+saved_width="$(jq -r --arg key "$window_address" '
+ .[$key] as $saved
+ | if ($saved | type) == "number" then $saved
+ elif ($saved | type) == "object" then ($saved.width // empty)
+ elif ($saved | type) == "string" then ($saved | tonumber? // empty)
+ else empty
+ end
+' "$state_file" 2>/dev/null || true)"
+tmp_file="$(mktemp "${state_file}.XXXXXX")"
+cleanup() {
+ rm -f "$tmp_file"
+}
+trap cleanup EXIT
+
+if [[ -n "$saved_width" && "$saved_width" != "null" ]]; then
+ restored=0
+ if run_layoutmsg "colresize ${saved_width}"; then
+ restored=1
+ elif run_layoutmsg "colresize exact ${saved_width}"; then
+ restored=1
+ fi
+ if [[ "$restored" -eq 1 ]]; then
+ jq --arg key "$window_address" 'del(.[$key])' "$state_file" > "$tmp_file"
+ mv "$tmp_file" "$state_file"
+ fi
+ trap - EXIT
+ exit 0
+fi
+if [[ -z "$column_width" || "$column_width" == "null" ]]; then
+ if run_layoutmsg "colresize 1.0"; then
+ max_width=""
+ for _ in 1 2 3 4 5 6; do
+ candidate_width="$(hyprctl -j activewindow 2>/dev/null | jq -r '.size[0] // empty')"
+ if [[ -n "$candidate_width" && "$candidate_width" != "null" ]] && awk -v v="$candidate_width" 'BEGIN { exit !(v > 0) }'; then
+ if [[ -z "$max_width" ]] || awk -v c="$candidate_width" -v m="$max_width" 'BEGIN { exit !(c > m) }'; then
+ max_width="$candidate_width"
+ fi
+ fi
+ sleep 0.05
+ done
+ if [[ -n "$max_width" ]]; then
+ column_width="$(awk -v w="$window_width" -v mw="$max_width" 'BEGIN { if (w > 0 && mw > 0) printf "%.6f", (w / mw); }')"
+ fi
+ else
+ dispatch_ok fullscreen 1 >/dev/null 2>&1 || true
+ trap - EXIT
+ exit 0
+ fi
+ if [[ -z "$column_width" || "$column_width" == "null" ]]; then
+ trap - EXIT
+ exit 0
+ fi
+ jq --arg key "$window_address" --argjson value "$column_width" '. + {($key): $value}' "$state_file" > "$tmp_file"
+ mv "$tmp_file" "$state_file"
+ trap - EXIT
+ exit 0
+fi
+
+jq --arg key "$window_address" --argjson value "$column_width" '. + {($key): $value}' "$state_file" > "$tmp_file"
+mv "$tmp_file" "$state_file"
+trap - EXIT
+
+run_layoutmsg "colresize 1.0" >/dev/null 2>&1 || dispatch_ok fullscreen 1 >/dev/null 2>&1 || true
diff --git a/config/hypr/scripts/Sounds.sh b/config/hypr/scripts/Sounds.sh
index 3af4944f..e763475c 100755
--- a/config/hypr/scripts/Sounds.sh
+++ b/config/hypr/scripts/Sounds.sh
@@ -10,7 +10,7 @@
theme="freedesktop" # Set the theme for the system sounds.
mute=false # Set to true to mute the system sounds.
-directSoundDir="$HOME/.config/hypr/sounds"
+directSoundDir="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/sounds"
# Mute individual sounds here.
muteScreenshots=false
diff --git a/config/hypr/scripts/Tak0-Autodispatch.sh b/config/hypr/scripts/Tak0-Autodispatch.sh
index cabe1672..8eea93ad 100755
--- a/config/hypr/scripts/Tak0-Autodispatch.sh
+++ b/config/hypr/scripts/Tak0-Autodispatch.sh
@@ -72,7 +72,7 @@ fi
echo "=== Deploy '$CMD' → WS $TARGET_WS @ $(date) ===" >>"$LOGFILE"
# Detect active Hyprland config mode
-config_home="${XDG_CONFIG_HOME:-$HOME/.config}"
+config_home="${XDG_CONFIG_HOME:-${XDG_CONFIG_HOME:-$HOME/.config}}"
hypr_dir="$config_home/hypr"
lua_entry="$hypr_dir/hyprland.lua"
legacy_lua_entry="$config_home/hyprland.lua"
diff --git a/config/hypr/scripts/Tak0-Per-Window-Switch.sh b/config/hypr/scripts/Tak0-Per-Window-Switch.sh
index eba3b380..cc878615 100755
--- a/config/hypr/scripts/Tak0-Per-Window-Switch.sh
+++ b/config/hypr/scripts/Tak0-Per-Window-Switch.sh
@@ -19,12 +19,12 @@
##################################################################
MAP_FILE="$HOME/.cache/kb_layout_per_window"
-ICON="$HOME/.config/swaync/images/ja.png"
+ICON="${XDG_CONFIG_HOME:-$HOME/.config}/swaync/images/ja.png"
SCRIPT_NAME="$(basename "$0")"
SCRIPT_PATH="$(readlink -f "$0")"
# Detect active Hyprland config mode
-config_home="${XDG_CONFIG_HOME:-$HOME/.config}"
+config_home="${XDG_CONFIG_HOME:-${XDG_CONFIG_HOME:-$HOME/.config}}"
hypr_dir="$config_home/hypr"
lua_entry="$hypr_dir/hyprland.lua"
legacy_lua_entry="$config_home/hyprland.lua"
diff --git a/config/hypr/scripts/ThemeChanger.sh b/config/hypr/scripts/ThemeChanger.sh
index c19908e4..f592300c 100755
--- a/config/hypr/scripts/ThemeChanger.sh
+++ b/config/hypr/scripts/ThemeChanger.sh
@@ -9,8 +9,8 @@ set -euo pipefail
# Wallust v3/v4 compatibility
wallust_args=()
# shellcheck source=/dev/null
-if [ -f "$HOME/.config/hypr/scripts/WallustConfig.sh" ]; then
- . "$HOME/.config/hypr/scripts/WallustConfig.sh"
+if [ -f "${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts/WallustConfig.sh" ]; then
+ . "${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts/WallustConfig.sh"
fi
# SPDX-FileCopyrightText: 2025-present Ahum Maitra theahummaitra@gmail.com
@@ -32,8 +32,12 @@ require rofi
# notify-send is optional
have_notify() { command -v notify-send >/dev/null 2>&1; }
capture_current_layout() {
+ if [ -x "${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts/ChangeLayout.sh" ]; then
+ "${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts/ChangeLayout.sh" --no-notify current 2>/dev/null | awk 'NF {print; exit}'
+ return 0
+ fi
if command -v jq >/dev/null 2>&1; then
- hyprctl -j getoption general:layout 2>/dev/null | jq -r '.str // empty'
+ hyprctl -j activeworkspace 2>/dev/null | jq -r '.tiledLayout // .tiled_layout // empty'
else
hyprctl getoption general:layout 2>/dev/null | awk 'NR==1 {print $2}'
fi
@@ -42,13 +46,9 @@ restore_layout_after_reload() {
local layout="$1"
[ -n "$layout" ] || return 0
- if [ -x "$HOME/.config/hypr/scripts/ChangeLayout.sh" ]; then
- if "$HOME/.config/hypr/scripts/ChangeLayout.sh" --no-notify "$layout" >/dev/null 2>&1; then
- return 0
- fi
+ if [ -x "${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts/ChangeLayout.sh" ]; then
+ "${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts/ChangeLayout.sh" --no-notify "$layout" >/dev/null 2>&1 || true
fi
-
- hyprctl keyword general:layout "$layout" >/dev/null 2>&1 || true
}
reload_hypr_preserve_layout() {
command -v hyprctl >/dev/null 2>&1 || return 0
@@ -91,9 +91,9 @@ if [ ! -s "$theme_cache" ] || [ "$cache_age" -gt "$cache_max_age" ]; then
fi
ensure_wallust_waybar_style() {
- local waybar_style="$HOME/.config/waybar/style.css"
- local colors_file="$HOME/.config/waybar/wallust/colors-waybar.css"
- local styles_dir="$HOME/.config/waybar/style"
+ local waybar_style="${XDG_CONFIG_HOME:-$HOME/.config}/waybar/style.css"
+ local colors_file="${XDG_CONFIG_HOME:-$HOME/.config}/waybar/wallust/colors-waybar.css"
+ local styles_dir="${XDG_CONFIG_HOME:-$HOME/.config}/waybar/style"
[ -f "$colors_file" ] || return 0
if [ -f "$waybar_style" ] && grep -q 'colors-waybar.css' "$waybar_style"; then
return 0
@@ -119,7 +119,7 @@ reload_running_cava_colors() {
fi
}
-wallust_hypr_colors="$HOME/.config/hypr/wallust/wallust-hyprland.conf"
+wallust_hypr_colors="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/wallust/wallust-hyprland.conf"
extract_wallust_hex() {
local key="$1"
awk -v key="$key" '
@@ -180,16 +180,16 @@ if wallust "${wallust_args[@]}" theme -- "${choice}" >"$wallust_log" 2>&1; then
# Wait until template targets exist, are newer than start_ts, and are stable (size/mtime stops changing)
# Ensure Ghostty directory exists so Wallust can write target even if Ghostty isn't installed
- mkdir -p "$HOME/.config/ghostty" || true
+ mkdir -p "${XDG_CONFIG_HOME:-$HOME/.config}/ghostty" || true
targets=(
- "$HOME/.config/waybar/wallust/colors-waybar.css"
- "$HOME/.config/rofi/wallust/colors-rofi.rasi"
- "$HOME/.config/hypr/wallust/wallust-hyprland.conf"
+ "${XDG_CONFIG_HOME:-$HOME/.config}/waybar/wallust/colors-waybar.css"
+ "${XDG_CONFIG_HOME:-$HOME/.config}/rofi/wallust/colors-rofi.rasi"
+ "${XDG_CONFIG_HOME:-$HOME/.config}/hypr/wallust/wallust-hyprland.conf"
)
# Normalize Ghostty palette syntax in case upstream templates or older targets used ':'
- ghostty_conf="$HOME/.config/ghostty/wallust.conf"
+ ghostty_conf="${XDG_CONFIG_HOME:-$HOME/.config}/ghostty/wallust.conf"
if [ -f "$ghostty_conf" ]; then
sed -i -E 's/^(\s*palette\s*=\s*)([0-9]{1,2}):/\1\2=/' "$ghostty_conf" 2>/dev/null || true
fi
@@ -239,7 +239,7 @@ if wallust "${wallust_args[@]}" theme -- "${choice}" >"$wallust_log" 2>&1; then
# Small cushion before refresh to mirror wallpaper flow
sleep 0.2
# Normalize Rofi selection colors to use the palette's accent (color12)
- rofi_colors="$HOME/.config/rofi/wallust/colors-rofi.rasi"
+ rofi_colors="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/wallust/colors-rofi.rasi"
if [ -f "$rofi_colors" ]; then
accent_hex=$(sed -n 's/^\s*color12:\s*\(#[0-9A-Fa-f]\{6\}\).*/\1/p' "$rofi_colors" | head -n1)
[ -z "$accent_hex" ] && accent_hex=$(sed -n 's/^\s*color13:\s*\(#[0-9A-Fa-f]\{6\}\).*/\1/p' "$rofi_colors" | head -n1)
@@ -258,8 +258,8 @@ if wallust "${wallust_args[@]}" theme -- "${choice}" >"$wallust_log" 2>&1; then
reload_running_cava_colors
# Refresh bars/menus after files are ready
- if [ -x "$HOME/.config/hypr/scripts/Refresh.sh" ]; then
- "$HOME/.config/hypr/scripts/Refresh.sh" >/dev/null 2>&1 || true
+ if [ -x "${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts/Refresh.sh" ]; then
+ "${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts/Refresh.sh" >/dev/null 2>&1 || true
else
if command -v waybar-msg >/dev/null 2>&1; then
waybar-msg cmd reload >/dev/null 2>&1 || true
diff --git a/config/hypr/scripts/Toggle-Active-Window-Audio.sh b/config/hypr/scripts/Toggle-Active-Window-Audio.sh
index c954541f..42d63217 100755
--- a/config/hypr/scripts/Toggle-Active-Window-Audio.sh
+++ b/config/hypr/scripts/Toggle-Active-Window-Audio.sh
@@ -7,7 +7,7 @@
# ==================================================
set -euo pipefail
-XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
+XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-${XDG_CONFIG_HOME:-$HOME/.config}}"
swayIconDir="${XDG_CONFIG_HOME}/swaync/icons"
#// Credits to sl1ng for the orginal script. Rewritten by Vyle.
diff --git a/config/hypr/scripts/Toggle-weather-waybar-units.sh b/config/hypr/scripts/Toggle-weather-waybar-units.sh
index abc089ff..bf0b102e 100755
--- a/config/hypr/scripts/Toggle-weather-waybar-units.sh
+++ b/config/hypr/scripts/Toggle-weather-waybar-units.sh
@@ -7,7 +7,7 @@
# ==================================================
# Toggle waybar-weather units between metric and imperial
-CONFIG_FILE="$HOME/.config/waybar-weather/config.toml"
+CONFIG_FILE="${XDG_CONFIG_HOME:-$HOME/.config}/waybar-weather/config.toml"
if [ ! -f "$CONFIG_FILE" ]; then
notify-send "Weather units" "Config not found: $CONFIG_FILE"
diff --git a/config/hypr/scripts/ToggleWaybarTime.sh b/config/hypr/scripts/ToggleWaybarTime.sh
new file mode 100755
index 00000000..2273c3af
--- /dev/null
+++ b/config/hypr/scripts/ToggleWaybarTime.sh
@@ -0,0 +1,101 @@
+#!/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 clock format between 12H and 24H
+
+MODULES_FILE="${XDG_CONFIG_HOME:-$HOME/.config}/waybar/Modules"
+notify_swaync() {
+ command -v notify-send >/dev/null 2>&1 || return 0
+ export XDG_RUNTIME_DIR="${XDG_RUNTIME_DIR:-/run/user/$(id -u)}"
+ local icon="${XDG_CONFIG_HOME:-$HOME/.config}/swaync/images/note.png"
+ if [ -z "${DBUS_SESSION_BUS_ADDRESS:-}" ]; then
+ local bus_path="${XDG_RUNTIME_DIR}/bus"
+ if [ -S "$bus_path" ]; then
+ export DBUS_SESSION_BUS_ADDRESS="unix:path=$bus_path"
+ fi
+ fi
+ DBUS_SESSION_BUS_ADDRESS="$DBUS_SESSION_BUS_ADDRESS" XDG_RUNTIME_DIR="$XDG_RUNTIME_DIR" \
+ notify-send -a "Waybar Time" -u low -t 2000 -i "$icon" "$@" >/dev/null 2>&1 || true
+}
+
+if [ ! -f "$MODULES_FILE" ]; then
+ notify_swaync "Modules file not found: $MODULES_FILE"
+ exit 1
+fi
+
+is_12h_active() {
+ grep -qE '^[[:space:]]*"format":[[:space:]]*" {:%I:%M %p}"' "$MODULES_FILE"
+}
+
+apply_12h() {
+ sed -i 's#^\([[:space:]]*\)//\("format": " {:%I:%M %p}".*\)#\1\2#' "$MODULES_FILE"
+ sed -i 's#^\([[:space:]]*\)\("format": " {:%H:%M:%S}".*\)#\1//\2#' "$MODULES_FILE"
+ sed -i 's#^\([[:space:]]*\)\("format": " {:%H:%M}".*\)#\1//\2#' "$MODULES_FILE"
+ sed -i 's#^\([[:space:]]*\)//\("format": "{:%I:%M %p - %d/%b}".*\)#\1\2#' "$MODULES_FILE"
+ sed -i 's#^\([[:space:]]*\)\("format": "{:%H:%M - %d/%b}".*\)#\1//\2#' "$MODULES_FILE"
+ sed -i 's#^\([[:space:]]*\)//\("format": "{:%B | %a %d, %Y | %I:%M %p}".*\)#\1\2#' "$MODULES_FILE"
+ sed -i 's#^\([[:space:]]*\)\("format": "{:%B | %a %d, %Y | %H:%M}".*\)#\1//\2#' "$MODULES_FILE"
+ sed -i 's#^\([[:space:]]*\)//\("format": "{:%A, %I:%M %P}".*\)#\1\2#' "$MODULES_FILE"
+ sed -i 's#^\([[:space:]]*\)\("format": "{:%a %d | %H:%M}".*\)#\1//\2#' "$MODULES_FILE"
+}
+
+apply_24h() {
+ sed -i 's#^\([[:space:]]*\)\("format": " {:%I:%M %p}".*\)#\1//\2#' "$MODULES_FILE"
+ sed -i 's#^\([[:space:]]*\)//\("format": " {:%H:%M:%S}".*\)#\1\2#' "$MODULES_FILE"
+ sed -i 's#^\([[:space:]]*\)//\("format": " {:%H:%M}".*\)#\1\2#' "$MODULES_FILE"
+ sed -i 's#^\([[:space:]]*\)\("format": "{:%I:%M %p - %d/%b}".*\)#\1//\2#' "$MODULES_FILE"
+ sed -i 's#^\([[:space:]]*\)//\("format": "{:%H:%M - %d/%b}".*\)#\1\2#' "$MODULES_FILE"
+ sed -i 's#^\([[:space:]]*\)\("format": "{:%B | %a %d, %Y | %I:%M %p}".*\)#\1//\2#' "$MODULES_FILE"
+ sed -i 's#^\([[:space:]]*\)//\("format": "{:%B | %a %d, %Y | %H:%M}".*\)#\1\2#' "$MODULES_FILE"
+ sed -i 's#^\([[:space:]]*\)\("format": "{:%A, %I:%M %P}".*\)#\1//\2#' "$MODULES_FILE"
+ sed -i 's#^\([[:space:]]*\)//\("format": "{:%a %d | %H:%M}".*\)#\1\2#' "$MODULES_FILE"
+}
+
+restart_waybar() {
+ local manage_with_systemd=0
+
+ if command -v systemctl >/dev/null 2>&1; then
+ if systemctl --user --quiet is-active waybar.service 2>/dev/null || systemctl --user --quiet is-enabled waybar.service 2>/dev/null; then
+ manage_with_systemd=1
+ fi
+ fi
+
+ if [ "$manage_with_systemd" -eq 1 ]; then
+ systemctl --user stop waybar.service >/dev/null 2>&1 || true
+ fi
+
+ pkill -x waybar >/dev/null 2>&1 || true
+ pkill -x '.waybar-wrapped' >/dev/null 2>&1 || true
+ sleep 0.2
+ if pgrep -x waybar >/dev/null 2>&1 || pgrep -x '.waybar-wrapped' >/dev/null 2>&1; then
+ pkill -9 -x waybar >/dev/null 2>&1 || true
+ pkill -9 -x '.waybar-wrapped' >/dev/null 2>&1 || true
+ fi
+ sleep 0.2
+
+ if [ "$manage_with_systemd" -eq 1 ]; then
+ if ! systemctl --user start waybar.service >/dev/null 2>&1; then
+ waybar >/dev/null 2>&1 &
+ fi
+ else
+ waybar >/dev/null 2>&1 &
+ fi
+}
+
+if is_12h_active; then
+ apply_24h
+ mode="24H"
+else
+ apply_12h
+ mode="12H"
+fi
+
+restart_waybar
+sleep 0.3
+
+notify_swaync "Switched to ${mode} format"
+printf 'Waybar Time: switched to %s format\n' "$mode"
diff --git a/config/hypr/scripts/TouchPad.sh b/config/hypr/scripts/TouchPad.sh
index 1042a652..73cbfb46 100755
--- a/config/hypr/scripts/TouchPad.sh
+++ b/config/hypr/scripts/TouchPad.sh
@@ -6,14 +6,14 @@
# 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
+# Edit the Touchpad_Device on ${XDG_CONFIG_HOME:-$HOME/.config}/hypr/UserConfigs/Laptops.conf according to your system
# use hyprctl devices to get your system touchpad device name
# source https://github.com/hyprwm/Hyprland/discussions/4283?sort=new#discussioncomment-8648109
set -euo pipefail
-notif="$HOME/.config/swaync/images/ja.png"
-laptops_conf="$HOME/.config/hypr/UserConfigs/Laptops.conf"
+notif="${XDG_CONFIG_HOME:-$HOME/.config}/swaync/images/ja.png"
+laptops_conf="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/UserConfigs/Laptops.conf"
touchpad_device="${TOUCHPAD_DEVICE:-}"
if [[ -z "$touchpad_device" && -f "$laptops_conf" ]]; then
diff --git a/config/hypr/scripts/UserConfigsSwitcher.sh b/config/hypr/scripts/UserConfigsSwitcher.sh
index 7d9968a6..6259f363 100755
--- a/config/hypr/scripts/UserConfigsSwitcher.sh
+++ b/config/hypr/scripts/UserConfigsSwitcher.sh
@@ -7,7 +7,7 @@
# ==================================================
# Script to manage UserConfigs and UserConfigsBak
-HYPR_CONFIG_DIR="$HOME/.config/hypr"
+HYPR_CONFIG_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/hypr"
USER_CONFIGS="$HYPR_CONFIG_DIR/UserConfigs"
USER_CONFIGS_BAK="$HYPR_CONFIG_DIR/UserConfigsBak"
diff --git a/config/hypr/scripts/Volume.sh b/config/hypr/scripts/Volume.sh
index dec7837c..c6ef8873 100755
--- a/config/hypr/scripts/Volume.sh
+++ b/config/hypr/scripts/Volume.sh
@@ -7,8 +7,8 @@
# ==================================================
# Scripts for volume controls for audio and mic
-iDIR="$HOME/.config/swaync/icons"
-sDIR="$HOME/.config/hypr/scripts"
+iDIR="${XDG_CONFIG_HOME:-$HOME/.config}/swaync/icons"
+sDIR="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts"
# Get Volume
get_volume() {
diff --git a/config/hypr/UserScripts/WallpaperAutoChange.sh b/config/hypr/scripts/WallpaperAutoChange.sh
index 5cee2a1e..a12e90d8 100755
--- a/config/hypr/UserScripts/WallpaperAutoChange.sh
+++ b/config/hypr/scripts/WallpaperAutoChange.sh
@@ -12,12 +12,13 @@
#
# NOTE: this script uses bash (not POSIX shell) for the RANDOM variable
-wallust_refresh=$HOME/.config/hypr/scripts/RefreshNoWaybar.sh
-SCRIPTSDIR="$HOME/.config/hypr/scripts"
+wallust_refresh=${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts/RefreshNoWaybar.sh
+SCRIPTSDIR="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts"
# shellcheck source=/dev/null
. "$SCRIPTSDIR/WallpaperCmd.sh"
focused_monitor=$(hyprctl monitors | awk '/^Monitor/{name=$2} /focused: yes/{print name}')
+wallpaper_base="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/wallpaper_effects/.wallpaper_base_${focused_monitor}"
if [[ $# -lt 1 ]] || [[ ! -d $1 ]]; then
echo "Usage:
@@ -41,8 +42,10 @@ while true; do
| while read -r img; do
resize_mode="$(wallpaper_resize_mode "$img" "$focused_monitor")"
"$WWW_CMD" img -o "$focused_monitor" --resize "$resize_mode" "$img"
+ mkdir -p "$(dirname "$wallpaper_base")"
+ cp -f "$img" "$wallpaper_base" || true
# Regenerate colors from the exact image path to avoid cache races
- $HOME/.config/hypr/scripts/WallustSwww.sh "$img"
+ ${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts/WallustSwww.sh "$img"
# Refresh UI components that depend on wallust output
$wallust_refresh
sleep $INTERVAL
diff --git a/config/hypr/scripts/WallpaperDaemon.sh b/config/hypr/scripts/WallpaperDaemon.sh
index 60c35a6d..aeb6c397 100755
--- a/config/hypr/scripts/WallpaperDaemon.sh
+++ b/config/hypr/scripts/WallpaperDaemon.sh
@@ -7,7 +7,7 @@
# ==================================================
# Start wallpaper daemon, preferring awww with swww fallback
-SCRIPTSDIR="$HOME/.config/hypr/scripts"
+SCRIPTSDIR="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts"
# shellcheck source=/dev/null
. "$SCRIPTSDIR/WallpaperCmd.sh"
@@ -21,8 +21,8 @@ for _ in {1..50}; do
sleep 0.1
done
-wallpaper_link="$HOME/.config/rofi/.current_wallpaper"
-wallpaper_current="$HOME/.config/hypr/wallpaper_effects/.wallpaper_current"
+wallpaper_link="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/.current_wallpaper"
+wallpaper_current="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/wallpaper_effects/.wallpaper_current"
read_cached_wallpaper() {
local cache_file="$1"
@@ -40,8 +40,8 @@ get_monitors() {
apply_wallpaper_for_monitor() {
local monitor="$1"
- local per_monitor_link="$HOME/.config/rofi/.current_wallpaper_${monitor}"
- local per_monitor_current="$HOME/.config/hypr/wallpaper_effects/.wallpaper_current_${monitor}"
+ local per_monitor_link="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/.current_wallpaper_${monitor}"
+ local per_monitor_current="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/wallpaper_effects/.wallpaper_current_${monitor}"
local wallpaper_path=""
# Prefer per-monitor symlink target if valid
diff --git a/config/hypr/scripts/WallpaperEffects.sh b/config/hypr/scripts/WallpaperEffects.sh
new file mode 100755
index 00000000..fc88ba1e
--- /dev/null
+++ b/config/hypr/scripts/WallpaperEffects.sh
@@ -0,0 +1,140 @@
+#!/usr/bin/env bash
+# ==================================================
+# 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
+terminal=kitty
+wallpaper_current="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/wallpaper_effects/.wallpaper_current"
+wallpaper_output="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/wallpaper_effects/.wallpaper_modified"
+wallpaper_base="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/wallpaper_effects/.wallpaper_base"
+wallpaper_link="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/.current_wallpaper"
+SCRIPTSDIR="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts"
+# shellcheck source=/dev/null
+. "$SCRIPTSDIR/WallpaperCmd.sh"
+focused_monitor=$(hyprctl monitors -j | jq -r '.[] | select(.focused) | .name')
+per_monitor_wallpaper_base="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/wallpaper_effects/.wallpaper_base_${focused_monitor}"
+per_monitor_wallpaper_current="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/wallpaper_effects/.wallpaper_current_${focused_monitor}"
+per_monitor_wallpaper_link="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/.current_wallpaper_${focused_monitor}"
+rofi_theme="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/config-wallpaper-effect.rasi"
+
+# Directory for swaync
+iDIR="${XDG_CONFIG_HOME:-$HOME/.config}/swaync/images"
+iDIRi="${XDG_CONFIG_HOME:-$HOME/.config}/swaync/icons"
+
+# swww/awww transition config
+FPS=60
+TYPE="wipe"
+DURATION=2
+BEZIER=".43,1.19,1,.4"
+if [[ "$WWW_CMD" == "swww" || "$WWW_CMD" == "awww" ]]; then
+ SWWW_PARAMS=(--transition-fps "$FPS" --transition-type "$TYPE" --transition-duration "$DURATION" --transition-bezier "$BEZIER")
+else
+ SWWW_PARAMS=()
+fi
+
+# Define ImageMagick effects
+declare -A effects=(
+ ["No Effects"]="no-effects"
+ ["Black & White"]="magick $wallpaper_base -colorspace gray -sigmoidal-contrast 10,40% $wallpaper_output"
+ ["Blurred"]="magick $wallpaper_base -blur 0x10 $wallpaper_output"
+ ["Charcoal"]="magick $wallpaper_base -charcoal 0x5 $wallpaper_output"
+ ["Edge Detect"]="magick $wallpaper_base -edge 1 $wallpaper_output"
+ ["Emboss"]="magick $wallpaper_base -emboss 0x5 $wallpaper_output"
+ ["Frame Raised"]="magick $wallpaper_base +raise 150 $wallpaper_output"
+ ["Frame Sunk"]="magick $wallpaper_base -raise 150 $wallpaper_output"
+ ["Negate"]="magick $wallpaper_base -negate $wallpaper_output"
+ ["Oil Paint"]="magick $wallpaper_base -paint 4 $wallpaper_output"
+ ["Posterize"]="magick $wallpaper_base -posterize 4 $wallpaper_output"
+ ["Polaroid"]="magick $wallpaper_base -polaroid 0 $wallpaper_output"
+ ["Sepia Tone"]="magick $wallpaper_base -sepia-tone 65% $wallpaper_output"
+ ["Solarize"]="magick $wallpaper_base -solarize 80% $wallpaper_output"
+ ["Sharpen"]="magick $wallpaper_base -sharpen 0x5 $wallpaper_output"
+ ["Vignette"]="magick $wallpaper_base -vignette 0x3 $wallpaper_output"
+ ["Vignette-black"]="magick $wallpaper_base -background black -vignette 0x3 $wallpaper_output"
+ ["Zoomed"]="magick $wallpaper_base -gravity Center -extent 1:1 $wallpaper_output"
+)
+persist_wallpaper_state() {
+ local source_wallpaper="$1"
+ [ -n "$source_wallpaper" ] && [ -f "$source_wallpaper" ] || return 0
+
+ mkdir -p "$(dirname "$wallpaper_current")" "$(dirname "$wallpaper_link")"
+ cp -f "$source_wallpaper" "$wallpaper_current" || true
+ ln -sf "$source_wallpaper" "$wallpaper_link" || true
+
+ if [[ -n "$focused_monitor" ]]; then
+ cp -f "$source_wallpaper" "$per_monitor_wallpaper_current" || true
+ ln -sf "$source_wallpaper" "$per_monitor_wallpaper_link" || true
+ fi
+}
+
+# Function to apply no effects
+no-effects() {
+ local resize_mode
+ resize_mode="$(wallpaper_resize_mode "$wallpaper_base" "$focused_monitor")"
+ "$WWW_CMD" img -o "$focused_monitor" --resize "$resize_mode" "$wallpaper_base" "${SWWW_PARAMS[@]}" || return 1
+ persist_wallpaper_state "$wallpaper_base"
+
+ notify-send -u low -i "$iDIR/ja.png" "No wallpaper" "effects applied"
+ # copying wallpaper for rofi menu
+ cp "$wallpaper_base" "$wallpaper_output"
+}
+
+# Function to run rofi menu
+main() {
+ # Populate rofi menu options
+ options=("No Effects")
+ for effect in "${!effects[@]}"; do
+ [[ "$effect" != "No Effects" ]] && options+=("$effect")
+ done
+
+ choice=$(printf "%s\n" "${options[@]}" | LC_COLLATE=C sort | rofi -dmenu -i -config $rofi_theme)
+
+ # Process user choice
+ if [[ -n "$choice" ]]; then
+ if [[ -f "$per_monitor_wallpaper_base" ]]; then
+ wallpaper_base="$per_monitor_wallpaper_base"
+ fi
+ if [[ ! -f "$wallpaper_base" ]]; then
+ mkdir -p "$(dirname "$wallpaper_base")"
+ cp -f "$wallpaper_current" "$wallpaper_base" || true
+ fi
+ if [[ "$choice" == "No Effects" ]]; then
+ no-effects
+ elif [[ "${effects[$choice]+exists}" ]]; then
+ # Apply selected effect
+ notify-send -u normal -i "$iDIR/ja.png" "Applying:" "$choice effects"
+ if ! eval "${effects[$choice]}"; then
+ notify-send -u critical -i "$iDIR/error.png" "Wallpaper effect failed" "$choice could not be applied"
+ return 1
+ fi
+
+ # intial kill process
+ for pid in swaybg mpvpaper; do
+ killall -SIGUSR1 "$pid" 2>/dev/null || true
+ done
+
+ sleep 1
+ local resize_mode
+ resize_mode="$(wallpaper_resize_mode "$wallpaper_output" "$focused_monitor")"
+ "$WWW_CMD" img -o "$focused_monitor" --resize "$resize_mode" "$wallpaper_output" "${SWWW_PARAMS[@]}"
+ persist_wallpaper_state "$wallpaper_output"
+ notify-send -u low -i "$iDIR/ja.png" "$choice" "effects applied"
+ else
+ echo "Effect '$choice' not recognized."
+ fi
+ fi
+}
+
+# Check if rofi is already running and kill it
+if pidof rofi > /dev/null; then
+ pkill rofi
+fi
+
+main
+
+sleep 1
diff --git a/config/hypr/UserScripts/WallpaperRandom.sh b/config/hypr/scripts/WallpaperRandom.sh
index aae80426..8480295c 100755
--- a/config/hypr/UserScripts/WallpaperRandom.sh
+++ b/config/hypr/scripts/WallpaperRandom.sh
@@ -9,11 +9,12 @@
PICTURES_DIR="$(xdg-user-dir PICTURES 2>/dev/null || echo "$HOME/Pictures")"
wallDIR="$PICTURES_DIR/wallpapers"
-SCRIPTSDIR="$HOME/.config/hypr/scripts"
+SCRIPTSDIR="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts"
# shellcheck source=/dev/null
. "$SCRIPTSDIR/WallpaperCmd.sh"
focused_monitor=$(hyprctl monitors -j | jq -r '.[] | select(.focused) | .name')
+wallpaper_base="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/wallpaper_effects/.wallpaper_base_${focused_monitor}"
PICS=($(find -L "${wallDIR}" -type f \( -name "*.jpg" -o -name "*.jpeg" -o -name "*.png" -o -name "*.pnm" -o -name "*.tga" -o -name "*.tiff" -o -name "*.webp" -o -name "*.bmp" -o -name "*.farbfeld" -o -name "*.gif" \)))
RANDOMPICS=${PICS[ $RANDOM % ${#PICS[@]} ]}
@@ -36,6 +37,8 @@ resize_mode="$(wallpaper_resize_mode "$RANDOMPICS" "$focused_monitor")"
"$WWW_CMD" img -o "$focused_monitor" --resize "$resize_mode" "$RANDOMPICS" "${SWWW_PARAMS[@]}"
wait $!
+mkdir -p "$(dirname "$wallpaper_base")"
+cp -f "$RANDOMPICS" "$wallpaper_base" || true
if ! "$SCRIPTSDIR/WallustSwww.sh" "$RANDOMPICS"; then
notify-send -u critical "Wallust failed" "Wallpaper theme not refreshed"
exit 1
diff --git a/config/hypr/UserScripts/WallpaperSelect.sh b/config/hypr/scripts/WallpaperSelect.sh
index 2e5ecd86..a1684798 100755
--- a/config/hypr/UserScripts/WallpaperSelect.sh
+++ b/config/hypr/scripts/WallpaperSelect.sh
@@ -11,15 +11,16 @@
terminal=kitty
PICTURES_DIR="$(xdg-user-dir PICTURES 2>/dev/null || echo "$HOME/Pictures")"
wallDIR="$PICTURES_DIR/wallpapers"
-SCRIPTSDIR="$HOME/.config/hypr/scripts"
+SCRIPTSDIR="${XDG_CONFIG_HOME:-$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"
+wallpaper_current="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/wallpaper_effects/.wallpaper_current"
+wallpaper_link="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/.current_wallpaper"
+wallpaper_base="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/wallpaper_effects/.wallpaper_base"
# Directory for swaync
-iDIR="$HOME/.config/swaync/images"
-iDIRi="$HOME/.config/swaync/icons"
+iDIR="${XDG_CONFIG_HOME:-$HOME/.config}/swaync/images"
+iDIRi="${XDG_CONFIG_HOME:-$HOME/.config}/swaync/icons"
# swww/awww transition config
FPS=60
@@ -40,11 +41,12 @@ if ! command -v bc &>/dev/null; then
fi
# Variables
-rofi_theme="$HOME/.config/rofi/config-wallpaper.rasi"
+rofi_theme="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/config-wallpaper.rasi"
focused_monitor=$(hyprctl monitors -j | jq -r '.[] | select(.focused) | .name')
-per_monitor_wallpaper_current="$HOME/.config/hypr/wallpaper_effects/.wallpaper_current_${focused_monitor}"
-per_monitor_wallpaper_link="$HOME/.config/rofi/.current_wallpaper_${focused_monitor}"
+per_monitor_wallpaper_current="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/wallpaper_effects/.wallpaper_current_${focused_monitor}"
+per_monitor_wallpaper_link="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/.current_wallpaper_${focused_monitor}"
+per_monitor_wallpaper_base="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/wallpaper_effects/.wallpaper_base_${focused_monitor}"
# Ensure focused_monitor is detected
if [[ -z "$focused_monitor" ]]; then
@@ -60,19 +62,14 @@ icon_size=$(echo "scale=1; ($monitor_height * 3) / ($scale_factor * 150)" | bc)
adjusted_icon_size=$(echo "$icon_size" | awk '{if ($1 < 15) $1 = 20; if ($1 > 25) $1 = 25; print $1}')
rofi_override="element-icon{size:${adjusted_icon_size}%;}"
-# Kill existing wallpaper daemons for video
+# Kill existing wallpaper daemons for video on the focused monitor only
kill_wallpaper_for_video() {
- "$WWW_CMD" kill 2>/dev/null
- pkill mpvpaper 2>/dev/null
- pkill swaybg 2>/dev/null
- pkill hyprpaper 2>/dev/null
+ pkill -f "mpvpaper.*$focused_monitor" 2>/dev/null
}
-# Kill existing wallpaper daemons for image
+# Kill existing wallpaper daemons for image on the focused monitor only
kill_wallpaper_for_image() {
- pkill mpvpaper 2>/dev/null
- pkill swaybg 2>/dev/null
- pkill hyprpaper 2>/dev/null
+ pkill -f "mpvpaper.*$focused_monitor" 2>/dev/null
}
# Retrieve wallpapers (both images & videos)
@@ -133,7 +130,7 @@ menu() {
modify_startup_config() {
local selected_file="$1"
- local startup_config="$HOME/.config/hypr/UserConfigs/Startup_Apps.conf"
+ local startup_config="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/UserConfigs/Startup_Apps.conf"
# Check if it's a live wallpaper (video)
if [[ "$selected_file" =~ \.(mp4|mkv|mov|webm)$ ]]; then
@@ -185,6 +182,9 @@ apply_image_wallpaper() {
mkdir -p "$(dirname "$per_monitor_wallpaper_current")" "$(dirname "$per_monitor_wallpaper_link")"
ln -sf "$image_path" "$per_monitor_wallpaper_link" || true
cp -f "$image_path" "$per_monitor_wallpaper_current" || true
+ mkdir -p "$(dirname "$per_monitor_wallpaper_base")"
+ cp -f "$image_path" "$per_monitor_wallpaper_base" || true
+ cp -f "$image_path" "$wallpaper_base" || true
# Run additional scripts (pass the image path to avoid cache race conditions)
if ! "$SCRIPTSDIR/WallustSwww.sh" "$image_path"; then
@@ -207,8 +207,8 @@ apply_video_wallpaper() {
fi
kill_wallpaper_for_video
- # Apply video wallpaper using mpvpaper
- mpvpaper '*' -o "load-scripts=no no-audio --loop" "$video_path" &
+ # Apply video wallpaper only to the focused monitor
+ mpvpaper "$focused_monitor" -o "load-scripts=no no-audio --loop" "$video_path" &
}
# Main function
diff --git a/config/hypr/scripts/WallustConfig.sh b/config/hypr/scripts/WallustConfig.sh
index 44ddff0b..6605a084 100755
--- a/config/hypr/scripts/WallustConfig.sh
+++ b/config/hypr/scripts/WallustConfig.sh
@@ -8,7 +8,7 @@
# Wallust version compatibility helpers
#
# Purpose:
-# - Wallust v3 reads ~/.config/wallust/wallust.toml (this repo ships a v3 config)
+# - Wallust v3 reads ${XDG_CONFIG_HOME:-$HOME/.config}/wallust/wallust.toml (this repo ships a v3 config)
# - Wallust v4 alpha uses a different config schema; users frequently install it
# via wallust-git, which will fail to parse the v3 config.
#
@@ -31,8 +31,8 @@ wallust_prepare_args() {
# Wallust v4 supports -C/--config-file.
if [ -n "$major" ] && [ "$major" -ge 4 ]; then
- local v4_cfg="$HOME/.config/wallust/wallust-v4.toml"
- local v4_kitty_cfg="$HOME/.config/wallust/wallust-kitty-v4.toml"
+ local v4_cfg="${XDG_CONFIG_HOME:-$HOME/.config}/wallust/wallust-v4.toml"
+ local v4_kitty_cfg="${XDG_CONFIG_HOME:-$HOME/.config}/wallust/wallust-kitty-v4.toml"
if [ -f "$v4_cfg" ]; then
wallust_args=(-C "$v4_cfg")
diff --git a/config/hypr/scripts/WallustSwww.sh b/config/hypr/scripts/WallustSwww.sh
index 3472d519..7807cf4c 100755
--- a/config/hypr/scripts/WallustSwww.sh
+++ b/config/hypr/scripts/WallustSwww.sh
@@ -13,15 +13,19 @@ set -euo pipefail
wallust_args=()
wallust_kitty_args=()
# shellcheck source=/dev/null
-if [ -f "$HOME/.config/hypr/scripts/WallustConfig.sh" ]; then
- . "$HOME/.config/hypr/scripts/WallustConfig.sh"
+if [ -f "${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts/WallustConfig.sh" ]; then
+ . "${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts/WallustConfig.sh"
fi
have_notify() { command -v notify-send >/dev/null 2>&1; }
wallust_log="${XDG_CACHE_HOME:-$HOME/.cache}/wallust/wallust-swww.log"
mkdir -p "$(dirname "$wallust_log")"
capture_current_layout() {
+ if [ -x "${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts/ChangeLayout.sh" ]; then
+ "${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts/ChangeLayout.sh" --no-notify current 2>/dev/null | awk 'NF {print; exit}'
+ return 0
+ fi
if command -v jq >/dev/null 2>&1; then
- hyprctl -j getoption general:layout 2>/dev/null | jq -r '.str // empty'
+ hyprctl -j activeworkspace 2>/dev/null | jq -r '.tiledLayout // .tiled_layout // empty'
else
hyprctl getoption general:layout 2>/dev/null | awk 'NR==1 {print $2}'
fi
@@ -30,13 +34,9 @@ restore_layout_after_reload() {
local layout="$1"
[ -n "$layout" ] || return 0
- if [ -x "$HOME/.config/hypr/scripts/ChangeLayout.sh" ]; then
- if "$HOME/.config/hypr/scripts/ChangeLayout.sh" --no-notify "$layout" >/dev/null 2>&1; then
- return 0
- fi
+ if [ -x "${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts/ChangeLayout.sh" ]; then
+ "${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts/ChangeLayout.sh" --no-notify "$layout" >/dev/null 2>&1 || true
fi
-
- hyprctl keyword general:layout "$layout" >/dev/null 2>&1 || true
}
reload_hypr_preserve_layout() {
command -v hyprctl >/dev/null 2>&1 || return 0
@@ -49,11 +49,11 @@ reload_hypr_preserve_layout() {
restore_layout_after_reload "$active_layout"
}
ensure_wallust_waybar_style() {
- local waybar_style="$HOME/.config/waybar/style.css"
- local colors_file="$HOME/.config/waybar/wallust/colors-waybar.css"
- local styles_dir="$HOME/.config/waybar/style"
+ local waybar_style="${XDG_CONFIG_HOME:-$HOME/.config}/waybar/style.css"
+ local colors_file="${XDG_CONFIG_HOME:-$HOME/.config}/waybar/wallust/colors-waybar.css"
+ local styles_dir="${XDG_CONFIG_HOME:-$HOME/.config}/waybar/style"
[ -f "$colors_file" ] || return 0
- if [ -f "$waybar_style" ] && grep -q 'colors-waybar.css' "$waybar_style"; then
+ if [ -f "$waybar_style" ]; then
return 0
fi
local candidates=(
@@ -88,8 +88,8 @@ else
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"
+rofi_link="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/.current_wallpaper"
+wallpaper_current="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/wallpaper_effects/.wallpaper_current"
read_cached_wallpaper() {
local cache_file="$1"
if [[ -f "$cache_file" ]]; then
@@ -163,7 +163,7 @@ mkdir -p "$(dirname "$wallpaper_current")"
cp -f "$wallpaper_path" "$wallpaper_current" || true
# Ensure Ghostty directory exists so Wallust can write target even if Ghostty isn't installed
-mkdir -p "$HOME/.config/ghostty" || true
+mkdir -p "${XDG_CONFIG_HOME:-$HOME/.config}/ghostty" || true
wait_for_templates() {
local start_ts="$1"
shift
@@ -188,7 +188,7 @@ wait_for_templates() {
return 1
}
-# Run wallust (silent) to regenerate templates defined in ~/.config/wallust/wallust.toml
+# Run wallust (silent) to regenerate templates defined in ${XDG_CONFIG_HOME:-$HOME/.config}/wallust/wallust.toml
# -s is used in this repo to keep things quiet and avoid extra prompts
start_ts=$(date +%s)
if ! wallust "${wallust_args[@]}" run -s "$wallpaper_path" >"$wallust_log" 2>&1; then
@@ -197,9 +197,9 @@ if ! wallust "${wallust_args[@]}" run -s "$wallpaper_path" >"$wallust_log" 2>&1;
exit 1
fi
wallust_targets=(
- "$HOME/.config/waybar/wallust/colors-waybar.css"
- "$HOME/.config/rofi/wallust/colors-rofi.rasi"
- "$HOME/.config/hypr/wallust/wallust-hyprland.conf"
+ "${XDG_CONFIG_HOME:-$HOME/.config}/waybar/wallust/colors-waybar.css"
+ "${XDG_CONFIG_HOME:-$HOME/.config}/rofi/wallust/colors-rofi.rasi"
+ "${XDG_CONFIG_HOME:-$HOME/.config}/hypr/wallust/wallust-hyprland.conf"
)
if ! wait_for_templates "$start_ts" "${wallust_targets[@]}"; then
have_notify && notify-send -u critical -a WallustSwww \
@@ -210,7 +210,7 @@ ensure_wallust_waybar_style
reload_running_cava_colors
# Normalize Rofi selection colors to a brighter accent and readable foreground
-rofi_colors="$HOME/.config/rofi/wallust/colors-rofi.rasi"
+rofi_colors="${XDG_CONFIG_HOME:-$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)
@@ -244,7 +244,7 @@ run_wallust_with_config() {
# Legacy fallback for builds that still honor env-based config override.
WALLUST_CONFIG="$cfg" wallust run -s "$wallpaper_path" || true
}
-wallust_hypr_colors="$HOME/.config/hypr/wallust/wallust-hyprland.conf"
+wallust_hypr_colors="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/wallust/wallust-hyprland.conf"
extract_wallust_hex() {
local key="$1"
awk -v key="$key" '
@@ -274,7 +274,7 @@ apply_hypr_border_fallback() {
}
apply_hypr_gap_fallback() {
- local decorations_lua="$HOME/.config/hypr/UserConfigs/user_decorations.lua"
+ local decorations_lua="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/UserConfigs/user_decorations.lua"
[ -s "$decorations_lua" ] || return 0
local gaps_in gaps_out border_size
gaps_in="$(sed -n 's/^[[:space:]]*gaps_in[[:space:]]*=[[:space:]]*\([0-9]\+\).*/\1/p' "$decorations_lua" | head -n1)"
@@ -289,9 +289,9 @@ apply_hypr_gap_fallback() {
# Apply Hyprland updates immediately to avoid delayed border/gap changes.
reload_hypr_preserve_layout
-kitty_cfg="$HOME/.config/wallust/wallust-kitty.toml"
+kitty_cfg="${XDG_CONFIG_HOME:-$HOME/.config}/wallust/wallust-kitty.toml"
if [ "${#wallust_kitty_args[@]}" -gt 0 ]; then
- kitty_cfg="$HOME/.config/wallust/wallust-kitty-v4.toml"
+ kitty_cfg="${XDG_CONFIG_HOME:-$HOME/.config}/wallust/wallust-kitty-v4.toml"
fi
(
if [ -f "$kitty_cfg" ]; then
@@ -300,7 +300,7 @@ fi
# Reload kitty colors when wallpaper-based theme is active.
# Use SIGUSR1 directly to avoid extra latency from kitty remote-control calls.
- kitty_wallust_theme="$HOME/.config/kitty/kitty-themes/01-Wallust.conf"
+ kitty_wallust_theme="${XDG_CONFIG_HOME:-$HOME/.config}/kitty/kitty-themes/01-Wallust.conf"
if [ -s "$kitty_wallust_theme" ]; then
if pidof kitty >/dev/null 2>&1; then
for pid in $(pidof kitty); do
@@ -310,13 +310,13 @@ 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
+ if [ -f "${XDG_CONFIG_HOME:-$HOME/.config}/ghostty/wallust.conf" ]; then
+ sed -i -E 's/^(\s*palette\s*=\s*)([0-9]{1,2}):/\1\2=/' "${XDG_CONFIG_HOME:-$HOME/.config}/ghostty/wallust.conf" 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
+ [ -s "${XDG_CONFIG_HOME:-$HOME/.config}/ghostty/wallust.conf" ] && break
sleep 0.1
done
if pidof ghostty >/dev/null; then
diff --git a/config/hypr/scripts/WaybarLayout.sh b/config/hypr/scripts/WaybarLayout.sh
index 66d45a07..51e93bb3 100755
--- a/config/hypr/scripts/WaybarLayout.sh
+++ b/config/hypr/scripts/WaybarLayout.sh
@@ -10,10 +10,10 @@
IFS=$'\n\t'
# Define directories
-waybar_layouts="$HOME/.config/waybar/configs"
-waybar_config="$HOME/.config/waybar/config"
-SCRIPTSDIR="$HOME/.config/hypr/scripts"
-rofi_config="$HOME/.config/rofi/config-waybar-layout.rasi"
+waybar_layouts="${XDG_CONFIG_HOME:-$HOME/.config}/waybar/configs"
+waybar_config="${XDG_CONFIG_HOME:-$HOME/.config}/waybar/config"
+SCRIPTSDIR="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts"
+rofi_config="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/config-waybar-layout.rasi"
msg=' 🎌 NOTE: Some waybar LAYOUT NOT fully compatible with some STYLES'
# Apply selected configuration
diff --git a/config/hypr/scripts/WaybarScripts.sh b/config/hypr/scripts/WaybarScripts.sh
index afb55712..dfd175f1 100755
--- a/config/hypr/scripts/WaybarScripts.sh
+++ b/config/hypr/scripts/WaybarScripts.sh
@@ -5,10 +5,10 @@
# 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
+# This file used on waybar modules sourcing defaults set in ${XDG_CONFIG_HOME:-$HOME/.config}/hypr/UserConfigs/01-UserDefaults.conf
# Define the path to the config file
-config_file=$HOME/.config/hypr/UserConfigs/01-UserDefaults.conf
+config_file=${XDG_CONFIG_HOME:-$HOME/.config}/hypr/UserConfigs/01-UserDefaults.conf
# Check if the config file exists
if [[ ! -f "$config_file" ]]; then
@@ -31,7 +31,7 @@ fi
# Execute accordingly based on the passed argument
launch_files() {
if [[ -z "$files" ]]; then
- notify-send -u low -i "$HOME/.config/swaync/images/error.png" "Waybar: files" "Set \$files in 01-UserDefaults.conf or install a default file manager."
+ notify-send -u low -i "${XDG_CONFIG_HOME:-$HOME/.config}/swaync/images/error.png" "Waybar: files" "Set \$files in 01-UserDefaults.conf or install a default file manager."
return 1
fi
eval "$files &"
diff --git a/config/hypr/scripts/WaybarStyles.sh b/config/hypr/scripts/WaybarStyles.sh
index 611e0a12..ab951e22 100755
--- a/config/hypr/scripts/WaybarStyles.sh
+++ b/config/hypr/scripts/WaybarStyles.sh
@@ -10,10 +10,10 @@
IFS=$'\n\t'
# Define directories
-waybar_styles="$HOME/.config/waybar/style"
-waybar_style="$HOME/.config/waybar/style.css"
-SCRIPTSDIR="$HOME/.config/hypr/scripts"
-rofi_config="$HOME/.config/rofi/config-waybar-style.rasi"
+waybar_styles="${XDG_CONFIG_HOME:-$HOME/.config}/waybar/style"
+waybar_style="${XDG_CONFIG_HOME:-$HOME/.config}/waybar/style.css"
+SCRIPTSDIR="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts"
+rofi_config="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/config-waybar-style.rasi"
msg=' 🎌 NOTE: Some waybar STYLES NOT fully compatible with some LAYOUTS'
# Apply selected style
diff --git a/config/hypr/UserScripts/ZshChangeTheme.sh b/config/hypr/scripts/ZshChangeTheme.sh
index 94c1b448..21049317 100755
--- a/config/hypr/UserScripts/ZshChangeTheme.sh
+++ b/config/hypr/scripts/ZshChangeTheme.sh
@@ -11,8 +11,8 @@
# after choosing theme, TTY need to be closed and re-open
# Variables
-iDIR="$HOME/.config/swaync/images"
-rofi_theme="$HOME/.config/rofi/config-zsh-theme.rasi"
+iDIR="${XDG_CONFIG_HOME:-$HOME/.config}/swaync/images"
+rofi_theme="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/config-zsh-theme.rasi"
if [ -n "$(grep -i nixos < /etc/os-release)" ]; then
notify-send -i "$iDIR/note.png" "NOT Supported" "Sorry NixOS does not support this KooL feature"
diff --git a/config/hypr/scripts/fastfetch-wrapper.sh b/config/hypr/scripts/fastfetch-wrapper.sh
index ad5f7873..ea76afff 100755
--- a/config/hypr/scripts/fastfetch-wrapper.sh
+++ b/config/hypr/scripts/fastfetch-wrapper.sh
@@ -6,7 +6,7 @@ SPECIFIC_ID=$ID
FAMILY_ID=$ID_LIKE
# 2. Define your asset directory
-ASSET_DIR="$HOME/.config/fastfetch/images"
+ASSET_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/fastfetch/images"
# 3. Selection Logic
if [ -f "$ASSET_DIR/$SPECIFIC_ID.png" ]; then
diff --git a/config/hypr/scripts/kooldots-add-ssh-agent.sh b/config/hypr/scripts/kooldots-add-ssh-agent.sh
new file mode 100755
index 00000000..56a62437
--- /dev/null
+++ b/config/hypr/scripts/kooldots-add-ssh-agent.sh
@@ -0,0 +1,310 @@
+#!/usr/bin/env bash
+# ==================================================
+# KoolDots (2026)
+# Project URL: https://github.com/LinuxBeginnings
+# License: GNU GPLv3
+# SPDX-License-Identifier: GPL-3.0-or-later
+# ==================================================
+# Adds a user ssh-agent systemd service and wires SSH_AUTH_SOCK into Hyprland.
+
+set -euo pipefail
+
+SCRIPT_NAME="$(basename "$0")"
+CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
+HYPR_DIR="$CONFIG_HOME/hypr"
+USER_CONFIGS_DIR="$HYPR_DIR/UserConfigs"
+ENV_CONF="$USER_CONFIGS_DIR/ENVariables.conf"
+ENV_LUA="$USER_CONFIGS_DIR/user_env.lua"
+SYSTEMD_USER_DIR="$CONFIG_HOME/systemd/user"
+SERVICE_NAME="ssh-agent"
+SERVICE_FILE="$SYSTEMD_USER_DIR/${SERVICE_NAME}.service"
+SSH_CONFIG="$HOME/.ssh/config"
+
+DRY_RUN=0
+ACTION="status"
+SHOW_SYSTEMD_STATUS=0
+SHOW_HELP=0
+
+info() { printf '[INFO] %s\n' "$*"; }
+warn() { printf '[WARN] %s\n' "$*"; }
+step() { printf '[STEP] %s\n' "$*"; }
+
+usage() {
+ cat <<USAGE
+Usage: $SCRIPT_NAME [options]
+
+Options:
+ -h, --help Show help.
+ -d, --dry-run Show what would change without writing files or running systemctl.
+ -s, --status Show installed/config status and systemctl status output.
+ -e, --enable Install/enable the user service.
+ -D, --disable Stop/disable the user service.
+ -r, --remove Disable and remove the user service file.
+
+Notes:
+ --disable has a short flag -D to avoid clashing with -d (dry-run).
+ Set HYPR_CONFIG_MODE=lua|conf|hyprlang|auto to override detection.
+ Keys must be loaded separately (e.g. ssh-add ~/.ssh/id_ed25519). AddKeysToAgent only auto-adds after first use.
+USAGE
+}
+
+ORIGINAL_ARGS=$#
+if [ "$ORIGINAL_ARGS" -eq 0 ]; then
+ SHOW_HELP=1
+ SHOW_SYSTEMD_STATUS=1
+fi
+
+while [ "$#" -gt 0 ]; do
+ case "$1" in
+ -h|--help)
+ usage
+ exit 0
+ ;;
+ -d|--dry-run)
+ DRY_RUN=1
+ ;;
+ -s|--status)
+ ACTION="status"
+ SHOW_SYSTEMD_STATUS=1
+ ;;
+ -e|--enable)
+ ACTION="enable"
+ ;;
+ -D|--disable|--disable-service|--disable)
+ ACTION="disable"
+ ;;
+ -r|--remove)
+ ACTION="remove"
+ ;;
+ *)
+ warn "Unknown option: $1"
+ usage
+ exit 1
+ ;;
+ esac
+ shift
+done
+
+run_cmd() {
+ if [ "$DRY_RUN" -eq 1 ]; then
+ printf '[DRY-RUN] %s\n' "$*"
+ return 0
+ fi
+ "$@"
+}
+
+detect_hypr_config_mode() {
+ local lua_entry="$HYPR_DIR/hyprland.lua"
+ local legacy_lua_entry="$CONFIG_HOME/hyprland.lua"
+ local mode="${HYPR_CONFIG_MODE:-}"
+ if [ -n "$mode" ]; then
+ case "${mode,,}" in
+ lua) echo "lua"; return ;;
+ conf|hyprlang) echo "conf"; return ;;
+ auto) ;;
+ *) ;;
+ esac
+ fi
+ if [ -f "$lua_entry" ] || [ -f "$legacy_lua_entry" ]; then
+ echo "lua"
+ else
+ echo "conf"
+ fi
+}
+
+service_exists() {
+ [ -f "$SERVICE_FILE" ]
+}
+
+systemctl_user() {
+ if ! command -v systemctl >/dev/null 2>&1; then
+ warn "systemctl not found; cannot manage the user service."
+ return 1
+ fi
+ run_cmd systemctl --user "$@"
+}
+
+service_status_summary() {
+ local enabled="unknown"
+ local active="unknown"
+ if command -v systemctl >/dev/null 2>&1; then
+ enabled="$(systemctl --user is-enabled "$SERVICE_NAME" 2>/dev/null || true)"
+ active="$(systemctl --user is-active "$SERVICE_NAME" 2>/dev/null || true)"
+ fi
+ if service_exists; then
+ info "Service file exists: $SERVICE_FILE"
+ else
+ warn "Service file missing: $SERVICE_FILE"
+ fi
+ info "Service enabled: ${enabled:-unknown}"
+ info "Service active: ${active:-unknown}"
+}
+
+env_present_conf() {
+ [ -f "$ENV_CONF" ] && grep -Eq '^[[:space:]]*env[[:space:]]*=[[:space:]]*SSH_AUTH_SOCK,' "$ENV_CONF"
+}
+
+env_present_lua() {
+ [ -f "$ENV_LUA" ] && grep -Eq 'hl\.env\([[:space:]]*["'\'']SSH_AUTH_SOCK["'\'']' "$ENV_LUA"
+}
+
+ensure_env_conf() {
+ if env_present_conf; then
+ info "Hyprland ENV already set in $ENV_CONF"
+ return 0
+ fi
+ step "Adding SSH_AUTH_SOCK to $ENV_CONF"
+ if [ "$DRY_RUN" -eq 1 ]; then
+ printf '[DRY-RUN] append SSH_AUTH_SOCK to %s\n' "$ENV_CONF"
+ return 0
+ fi
+ mkdir -p "$(dirname "$ENV_CONF")"
+ touch "$ENV_CONF"
+ printf '\n# SSH agent socket\nenv = SSH_AUTH_SOCK,$XDG_RUNTIME_DIR/ssh-agent.socket\n' >> "$ENV_CONF"
+}
+
+ensure_env_lua() {
+ if env_present_lua; then
+ info "Hyprland ENV already set in $ENV_LUA"
+ return 0
+ fi
+ step "Adding SSH_AUTH_SOCK to $ENV_LUA"
+ if [ "$DRY_RUN" -eq 1 ]; then
+ printf '[DRY-RUN] append SSH_AUTH_SOCK to %s\n' "$ENV_LUA"
+ return 0
+ fi
+ mkdir -p "$(dirname "$ENV_LUA")"
+ touch "$ENV_LUA"
+ cat <<'LUA' >> "$ENV_LUA"
+
+-- SSH agent socket
+hl.env("SSH_AUTH_SOCK", (os.getenv("XDG_RUNTIME_DIR") or "") .. "/ssh-agent.socket")
+LUA
+}
+
+ensure_ssh_config() {
+ if [ ! -f "$SSH_CONFIG" ]; then
+ warn "$SSH_CONFIG not found; skipping AddKeysToAgent check."
+ return 0
+ fi
+ if grep -Eq '^[[:space:]]*AddKeysToAgent[[:space:]]+yes' "$SSH_CONFIG"; then
+ info "AddKeysToAgent already set in $SSH_CONFIG"
+ return 0
+ fi
+ step "Adding AddKeysToAgent to $SSH_CONFIG"
+ if [ "$DRY_RUN" -eq 1 ]; then
+ printf '[DRY-RUN] append AddKeysToAgent to %s\n' "$SSH_CONFIG"
+ return 0
+ fi
+ printf '\n# Automatically add keys to ssh-agent\nAddKeysToAgent yes\n' >> "$SSH_CONFIG"
+}
+
+create_service_file() {
+ if service_exists; then
+ info "Service file already exists: $SERVICE_FILE"
+ return 0
+ fi
+ step "Creating systemd user service file"
+ if [ "$DRY_RUN" -eq 1 ]; then
+ printf '[DRY-RUN] create service file %s\n' "$SERVICE_FILE"
+ return 0
+ fi
+ mkdir -p "$SYSTEMD_USER_DIR"
+ cat <<'EOF' > "$SERVICE_FILE"
+[Unit]
+Description=SSH key agent
+
+[Service]
+Type=simple
+Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket
+ExecStart=/usr/bin/ssh-agent -D -a $SSH_AUTH_SOCK
+
+[Install]
+WantedBy=default.target
+EOF
+}
+
+enable_service() {
+ step "Enabling ssh-agent user service"
+ systemctl_user daemon-reload
+ systemctl_user enable --now "$SERVICE_NAME"
+}
+
+disable_service() {
+ step "Disabling ssh-agent user service"
+ systemctl_user disable --now "$SERVICE_NAME"
+}
+
+remove_service() {
+ step "Removing ssh-agent user service"
+ if service_exists; then
+ disable_service || true
+ if [ "$DRY_RUN" -eq 1 ]; then
+ printf '[DRY-RUN] remove service file %s\n' "$SERVICE_FILE"
+ else
+ rm -f "$SERVICE_FILE"
+ fi
+ systemctl_user daemon-reload
+ else
+ warn "Service file not found; nothing to remove."
+ fi
+}
+
+show_status() {
+ info "Detected Hyprland config mode: $(detect_hypr_config_mode)"
+ service_status_summary
+ info "SSH_AUTH_SOCK in ENVariables.conf: $(env_present_conf && echo yes || echo no)"
+ info "SSH_AUTH_SOCK in user_env.lua: $(env_present_lua && echo yes || echo no)"
+ if [ -f "$SSH_CONFIG" ]; then
+ info "AddKeysToAgent in ~/.ssh/config: $(grep -Eq '^[[:space:]]*AddKeysToAgent[[:space:]]+yes' "$SSH_CONFIG" && echo yes || echo no)"
+ else
+ warn "~/.ssh/config not found."
+ fi
+ if [ "$SHOW_SYSTEMD_STATUS" -eq 1 ] && command -v systemctl >/dev/null 2>&1; then
+ systemctl --user status "$SERVICE_NAME" || true
+ fi
+}
+
+apply_hypr_env() {
+ local mode
+ mode="$(detect_hypr_config_mode)"
+ if [ "$mode" = "lua" ]; then
+ ensure_env_lua
+ else
+ ensure_env_conf
+ fi
+}
+
+if [ "$SHOW_HELP" -eq 1 ]; then
+ usage
+fi
+
+case "$ACTION" in
+ status)
+ show_status
+ ;;
+ enable)
+ step "Step 1/4: Ensure service file"
+ create_service_file
+ step "Step 2/4: Enable user service"
+ enable_service
+ step "Step 3/4: Update Hyprland environment"
+ apply_hypr_env
+ step "Step 4/4: Update SSH config"
+ ensure_ssh_config
+ show_status
+ ;;
+ disable)
+ disable_service
+ show_status
+ ;;
+ remove)
+ remove_service
+ show_status
+ ;;
+ *)
+ warn "Unknown action: $ACTION"
+ usage
+ exit 1
+ ;;
+esac
diff --git a/config/hypr/scripts/rofi-emacs-keybinds b/config/hypr/scripts/rofi-emacs-keybinds
index bee1a54d..6617d3b0 100755
--- a/config/hypr/scripts/rofi-emacs-keybinds
+++ b/config/hypr/scripts/rofi-emacs-keybinds
@@ -2,7 +2,7 @@
set -u
set -o pipefail
-ROFI_CONFIG="${HOME}/.config/rofi/config-emacs-keybinds.rasi"
+ROFI_CONFIG="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/config-emacs-keybinds.rasi"
CACHE_FILE="${HOME}/.cache/rofi-emacs-keybinds.txt"
if [[ ! -s "${CACHE_FILE}" ]]; then
diff --git a/config/hypr/scripts/rofi-ssh-menu.sh b/config/hypr/scripts/rofi-ssh-menu.sh
index d1640c66..1b058f59 100755
--- a/config/hypr/scripts/rofi-ssh-menu.sh
+++ b/config/hypr/scripts/rofi-ssh-menu.sh
@@ -10,7 +10,7 @@
set -euo pipefail
SSH_CONFIG="${HOME}/.ssh/config"
-ROFI_CONFIG="${HOME}/.config/rofi/config.rasi"
+ROFI_CONFIG="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/config.rasi"
MSG='Select a host to connect via SSH'
notify() {
diff --git a/config/hypr/scripts/sddm_wallpaper.sh b/config/hypr/scripts/sddm_wallpaper.sh
index deee938c..f30bac9b 100755
--- a/config/hypr/scripts/sddm_wallpaper.sh
+++ b/config/hypr/scripts/sddm_wallpaper.sh
@@ -7,69 +7,409 @@
# ==================================================
# SDDM Wallpaper and Wallust Colors Setter
-# for the upcoming changes on the simple_sddm_theme
-
# variables
terminal=kitty
PICTURES_DIR="$(xdg-user-dir PICTURES 2>/dev/null || echo "$HOME/Pictures")"
wallDIR="$PICTURES_DIR/wallpapers"
-SCRIPTSDIR="$HOME/.config/hypr/scripts"
-wallpaper_current="$HOME/.config/hypr/wallpaper_effects/.wallpaper_current"
-wallpaper_modified="$HOME/.config/hypr/wallpaper_effects/.wallpaper_modified"
+SCRIPTSDIR="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts"
+wallpaper_link="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/.current_wallpaper"
+wallpaper_current="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/wallpaper_effects/.wallpaper_current"
+wallpaper_modified="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/wallpaper_effects/.wallpaper_modified"
+rofi_theme="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/config-wallpaper.rasi"
+# Directory for swaync
+iDIR="${XDG_CONFIG_HOME:-$HOME/.config}/swaync/images"
+iDIRi="${XDG_CONFIG_HOME:-$HOME/.config}/swaync/icons"
+video_preview_cache="$HOME/.cache/video_preview"
+sddm_video_cache="$HOME/.cache/sddm_preview"
+# shellcheck source=/dev/null
+. "$SCRIPTSDIR/WallpaperCmd.sh" 2>/dev/null || true
+
+find_notify_send() {
+ local candidate=""
+ if candidate="$(command -v notify-send 2>/dev/null)"; then
+ if [[ -n "$candidate" && -x "$candidate" ]]; then
+ printf '%s\n' "$candidate"
+ return 0
+ fi
+ fi
+ for candidate in /usr/bin/notify-send /usr/sbin/notify-send /bin/notify-send /sbin/notify-send; do
+ if [[ -x "$candidate" ]]; then
+ printf '%s\n' "$candidate"
+ return 0
+ fi
+ done
+ return 1
+}
+
+NOTIFY_SEND_BIN="$(find_notify_send || true)"
+
+notify_err() {
+ if [[ -n "$NOTIFY_SEND_BIN" ]]; then
+ if [[ -f "$iDIR/error.png" ]]; then
+ "$NOTIFY_SEND_BIN" -i "$iDIR/error.png" "SDDM" "$1"
+ else
+ "$NOTIFY_SEND_BIN" "SDDM" "$1"
+ fi
+ fi
+}
+
+notify_ok() {
+ if [[ -n "$NOTIFY_SEND_BIN" ]]; then
+ if [[ -f "$iDIR/ja.png" ]]; then
+ "$NOTIFY_SEND_BIN" -i "$iDIR/ja.png" "SDDM" "$1"
+ else
+ "$NOTIFY_SEND_BIN" "SDDM" "$1"
+ fi
+ fi
+}
+
+read_cached_wallpaper() {
+ local cache_file="$1"
+ [[ -f "$cache_file" ]] || return 1
+ awk 'NF && $0 !~ /^filter/ {print; exit}' "$cache_file"
+}
+
+read_wallpaper_from_query() {
+ local monitor="$1"
+ [[ -n "$monitor" ]] || return 1
+ [[ -n "${WWW_CMD:-}" ]] || return 1
+ command -v "$WWW_CMD" >/dev/null 2>&1 || return 1
+ "$WWW_CMD" query 2>/dev/null | awk -v mon="$monitor" '
+ {
+ line=$0
+ sub(/^Monitor[[:space:]]+/, "", line)
+ sub(/^:[[:space:]]*/, "", line)
+ mon_name=line
+ sub(/:.*/, "", mon_name)
+ gsub(/^[[:space:]]+|[[:space:]]+$/, "", mon_name)
+ if (mon_name != mon) next
+ path=line
+ sub(/^.*image:[[:space:]]*/, "", path)
+ gsub(/^[[:space:]]+|[[:space:]]+$/, "", path)
+ if (path != line && length(path) > 0) {
+ print path
+ exit
+ }
+ }
+ '
+}
+
+read_wallpaper_from_cache() {
+ local monitor="$1"
+ local cache_root="${WWW_CACHE_DIR:-$HOME/.cache/awww}"
+ local cache_file="$cache_root/$monitor"
+ local fallback_cache=""
+ local path=""
+
+ case "$cache_root" in
+ "$HOME/.cache/awww")
+ fallback_cache="$HOME/.cache/swww/$monitor"
+ ;;
+ "$HOME/.cache/swww")
+ fallback_cache="$HOME/.cache/awww/$monitor"
+ ;;
+ esac
+
+ path="$(read_cached_wallpaper "$cache_file" 2>/dev/null || true)"
+ if [[ -z "$path" && -n "$fallback_cache" ]]; then
+ path="$(read_cached_wallpaper "$fallback_cache" 2>/dev/null || true)"
+ fi
+
+ [[ -n "$path" && -f "$path" ]] || return 1
+ printf '%s\n' "$path"
+}
+
+calculate_rofi_icon_size() {
+ local monitor="$1"
+ local scale_factor=""
+ local monitor_height=""
+ local icon_size=""
+ local adjusted_icon_size=""
+
+ if [[ -z "$monitor" ]]; then
+ monitor="$(get_focused_monitor 2>/dev/null || true)"
+ fi
+
+ if [[ -z "$monitor" ]]; then
+ printf '22\n'
+ return 0
+ fi
+
+ if command -v hyprctl >/dev/null 2>&1 && command -v jq >/dev/null 2>&1 && command -v bc >/dev/null 2>&1; then
+ scale_factor="$(hyprctl monitors -j 2>/dev/null | jq -r --arg mon "$monitor" '.[] | select(.name == $mon) | .scale' | head -n1)"
+ monitor_height="$(hyprctl monitors -j 2>/dev/null | jq -r --arg mon "$monitor" '.[] | select(.name == $mon) | .height' | head -n1)"
+ if [[ -n "$scale_factor" && -n "$monitor_height" && "$scale_factor" != "null" && "$monitor_height" =~ ^[0-9]+$ ]]; then
+ icon_size="$(echo "scale=1; ($monitor_height * 3) / ($scale_factor * 150)" | bc 2>/dev/null || true)"
+ adjusted_icon_size="$(echo "$icon_size" | awk '{if ($1 < 15) $1 = 20; if ($1 > 25) $1 = 25; print int($1)}')"
+ if [[ "$adjusted_icon_size" =~ ^[0-9]+$ ]]; then
+ printf '%s\n' "$adjusted_icon_size"
+ return 0
+ fi
+ fi
+ fi
+
+ printf '22\n'
+}
+
+resolve_link_or_file() {
+ local path="$1"
+ local resolved=""
+ if [[ -L "$path" ]]; then
+ resolved="$(readlink -f "$path" 2>/dev/null || true)"
+ if [[ -n "$resolved" && -f "$resolved" ]]; then
+ printf '%s\n' "$resolved"
+ return 0
+ fi
+ fi
+ if [[ -f "$path" ]]; then
+ printf '%s\n' "$path"
+ return 0
+ fi
+ return 1
+}
+
+get_active_workspace_monitor() {
+ if ! command -v hyprctl >/dev/null 2>&1; then
+ return 1
+ fi
+ if command -v jq >/dev/null 2>&1; then
+ hyprctl activeworkspace -j 2>/dev/null | jq -r '.monitor // empty' | head -n1
+ else
+ hyprctl monitors 2>/dev/null | awk '/^Monitor/{name=$2} /focused: yes/{print name; exit}'
+ fi
+}
+
+get_focused_monitor() {
+ if ! command -v hyprctl >/dev/null 2>&1; then
+ return 1
+ fi
+ if command -v jq >/dev/null 2>&1; then
+ hyprctl monitors -j 2>/dev/null | jq -r '.[] | select(.focused) | .name' | head -n1
+ else
+ hyprctl monitors 2>/dev/null | awk '/^Monitor/{name=$2} /focused: yes/{print name; exit}'
+ fi
+}
+
+monitor_exists() {
+ local monitor="$1"
+ [[ -n "$monitor" ]] || return 1
+ command -v hyprctl >/dev/null 2>&1 || return 1
+ if command -v jq >/dev/null 2>&1; then
+ hyprctl monitors -j 2>/dev/null | jq -r --arg mon "$monitor" '.[] | select(.name == $mon) | .name' | grep -qx "$monitor"
+ else
+ hyprctl monitors 2>/dev/null | awk '/^Monitor/{print $2}' | grep -qx "$monitor"
+ fi
+}
+
+resolve_target_monitor() {
+ local requested="$1"
+ local monitor=""
+ if monitor_exists "$requested"; then
+ printf '%s\n' "$requested"
+ return 0
+ fi
+ monitor="$(get_active_workspace_monitor 2>/dev/null || true)"
+ if monitor_exists "$monitor"; then
+ printf '%s\n' "$monitor"
+ return 0
+ fi
+ monitor="$(get_focused_monitor 2>/dev/null || true)"
+ if [[ -n "$monitor" ]]; then
+ printf '%s\n' "$monitor"
+ return 0
+ fi
+ return 1
+}
+
+resolve_normal_wallpaper() {
+ local monitor="$1"
+ local path=""
+ local per_monitor_rofi_link=""
+ local per_monitor_current=""
+
+ if [[ -n "$monitor" ]]; then
+ per_monitor_rofi_link="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/.current_wallpaper_${monitor}"
+ per_monitor_current="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/wallpaper_effects/.wallpaper_current_${monitor}"
+
+ path="$(read_wallpaper_from_query "$monitor" 2>/dev/null || true)"
+ if [[ -z "$path" ]]; then
+ path="$(resolve_link_or_file "$per_monitor_rofi_link" 2>/dev/null || true)"
+ fi
+ if [[ -z "$path" ]]; then
+ path="$(resolve_link_or_file "$per_monitor_current" 2>/dev/null || true)"
+ fi
+ if [[ -z "$path" ]]; then
+ path="$(read_wallpaper_from_cache "$monitor" 2>/dev/null || true)"
+ fi
+ fi
+
+ if [[ -z "$path" ]]; then
+ path="$(resolve_link_or_file "$wallpaper_current" 2>/dev/null || true)"
+ fi
+ if [[ -z "$path" ]]; then
+ path="$(resolve_link_or_file "$wallpaper_link" 2>/dev/null || true)"
+ fi
+
+ [[ -n "$path" && -f "$path" ]] || return 1
+ printf '%s\n' "$path"
+}
+
+resolve_effects_wallpaper() {
+ local monitor="$1"
+ local path=""
+ local per_monitor_modified=""
+
+ if [[ -n "$monitor" ]]; then
+ per_monitor_modified="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/wallpaper_effects/.wallpaper_modified_${monitor}"
+ path="$(resolve_link_or_file "$per_monitor_modified" 2>/dev/null || true)"
+ fi
+
+ if [[ -z "$path" ]]; then
+ path="$(resolve_link_or_file "$wallpaper_modified" 2>/dev/null || true)"
+ fi
+ if [[ -z "$path" ]]; then
+ path="$(resolve_normal_wallpaper "$monitor" 2>/dev/null || true)"
+ fi
+
+ [[ -n "$path" && -f "$path" ]] || return 1
+ printf '%s\n' "$path"
+}
+
+resolve_current_sddm_background() {
+ local sddm_simple="$1"
+ local candidate=""
+ for candidate in "$sddm_simple/Backgrounds/default" "$sddm_simple/Backgrounds/default.jpg" "$sddm_simple/Backgrounds/default.png"; do
+ if [[ -f "$candidate" ]]; then
+ printf '%s\n' "$candidate"
+ return 0
+ fi
+ done
+ return 1
+}
+
+extract_color() {
+ local key="$1"
+ local value
+ value="$(grep -oP "$key:\\s*\\K#[A-Fa-f0-9]+" "$rofi_wallust" | head -n1)"
+ printf '%s\n' "$value"
+}
+
+prepare_sddm_wallpaper() {
+ local selected_file="$1"
+ local target_monitor="$2"
+ local prepared_path="$selected_file"
+
+ if [[ ! -f "$selected_file" ]]; then
+ notify_err "Selected file not found for ${target_monitor:-current context}."
+ return 1
+ fi
+
+ if [[ "$selected_file" =~ \.(mp4|mkv|mov|webm|MP4|MKV|MOV|WEBM)$ ]]; then
+ if ! command -v ffmpeg >/dev/null 2>&1; then
+ notify_err "ffmpeg not found; cannot convert selected video wallpaper."
+ return 1
+ fi
+ mkdir -p "$sddm_video_cache"
+ local video_name
+ video_name="$(basename "$selected_file")"
+ prepared_path="$sddm_video_cache/${video_name}.png"
+ if ! ffmpeg -v error -y -i "$selected_file" -ss 00:00:01.000 -vframes 1 "$prepared_path"; then
+ notify_err "Could not generate preview from selected video wallpaper."
+ return 1
+ fi
+ fi
+
+ printf '%s\n' "$prepared_path"
+}
+
+# Parse arguments
+mode="effects" # default
+requested_monitor="${SDDM_TARGET_MONITOR:-${HYPRLOCK_TARGET_MONITOR:-}}"
+for arg in "$@"; do
+ case "$arg" in
+ --normal)
+ mode="normal"
+ ;;
+ --effects)
+ mode="effects"
+ ;;
+ --monitor=*)
+ requested_monitor="${arg#--monitor=}"
+ ;;
+ --*)
+ ;;
+ *)
+ if [[ -z "$requested_monitor" ]]; then
+ requested_monitor="$arg"
+ fi
+ ;;
+ esac
+done
+
# Resolve SDDM themes directory (standard paths and NixOS path)
sddm_themes_dir="/usr/share/sddm/themes"
-if [ ! -d "$sddm_themes_dir" ] && [ -d "/run/current-system/sw/share/sddm/themes" ]; then
+if [[ ! -d "$sddm_themes_dir" && -d "/run/current-system/sw/share/sddm/themes" ]]; then
sddm_themes_dir="/run/current-system/sw/share/sddm/themes"
fi
sddm_simple="$sddm_themes_dir/simple_sddm_2"
+sddm_theme_conf="$sddm_simple/theme.conf"
# rofi-wallust-sddm colors path
-rofi_wallust="$HOME/.config/rofi/wallust/colors-rofi.rasi"
-sddm_theme_conf="$sddm_simple/theme.conf"
+rofi_wallust="${XDG_CONFIG_HOME:-$HOME/.config}/rofi/wallust/colors-rofi.rasi"
if [[ ! -f "$rofi_wallust" ]]; then
- notify-send -i "$iDIR/error.png" "SDDM" "Wallust colors file not found ($rofi_wallust). Aborting."
+ notify_err "Wallust colors file not found ($rofi_wallust). Aborting."
+ exit 1
+fi
+if [[ ! -d "$sddm_simple/Backgrounds" ]]; then
+ notify_err "SDDM theme backgrounds not found ($sddm_simple/Backgrounds)."
+ exit 1
+fi
+if [[ ! -f "$sddm_theme_conf" ]]; then
+ notify_err "SDDM theme config not found ($sddm_theme_conf)."
+ exit 1
+fi
+if [[ ! -d "$wallDIR" ]]; then
+ notify_err "Wallpaper directory not found ($wallDIR)."
+ exit 1
+fi
+if ! command -v rofi >/dev/null 2>&1; then
+ notify_err "rofi not found."
+ exit 1
+fi
+if ! command -v "$terminal" >/dev/null 2>&1; then
+ notify_err "Terminal '$terminal' not found."
+ exit 1
+fi
+if ! command -v sudo >/dev/null 2>&1; then
+ notify_err "sudo not found."
exit 1
fi
-# Directory for swaync
-iDIR="$HOME/.config/swaync/images"
-iDIRi="$HOME/.config/swaync/icons"
-
-# Parse arguments
-mode="effects" # default
-if [[ "$1" == "--normal" ]]; then
- mode="normal"
-elif [[ "$1" == "--effects" ]]; then
- mode="effects"
+# Abort on NixOS where this repo doesn't manage SDDM and themes are typically read-only
+if hostnamectl 2>/dev/null | grep -q 'Operating System: NixOS'; then
+ notify_err "NixOS detected: skipping SDDM background change."
+ exit 0
fi
# Abort if SDDM is not running (avoid errors on non-SDDM systems)
if command -v systemctl >/dev/null 2>&1; then
if ! systemctl is-active --quiet sddm; then
- notify-send -i "$iDIR/error.png" "SDDM" "SDDM is not running. Skipping SDDM wallpaper update."
+ notify_err "SDDM is not running. Skipping SDDM wallpaper update."
exit 0
fi
elif ! pidof sddm >/dev/null 2>&1; then
- notify-send -i "$iDIR/error.png" "SDDM" "SDDM is not running. Skipping SDDM wallpaper update."
+ notify_err "SDDM is not running. Skipping SDDM wallpaper update."
exit 0
fi
# Extract colors from rofi wallust config
-
-extract_color() {
- local key="$1"
- local value
- value=$(grep -oP "$key:\s*\K#[A-Fa-f0-9]+" "$rofi_wallust" | head -n1)
- echo "$value"
-}
-
-color0=$(extract_color "color1")
-color1=$(extract_color "color0")
-color7=$(extract_color "color14")
-color10=$(extract_color "color10")
-color12=$(extract_color "color12")
-color13=$(extract_color "color13")
-foreground=$(extract_color "foreground")
+color0="$(extract_color "color1")"
+color1="$(extract_color "color0")"
+color7="$(extract_color "color14")"
+color10="$(extract_color "color10")"
+color12="$(extract_color "color12")"
+color13="$(extract_color "color13")"
+foreground="$(extract_color "foreground")"
missing_colors=()
for var in color0 color1 color7 color10 color12 color13 foreground; do
@@ -79,57 +419,172 @@ for var in color0 color1 color7 color10 color12 color13 foreground; do
done
if [[ ${#missing_colors[@]} -gt 0 ]]; then
- notify-send -i "$iDIR/error.png" "SDDM" "Missing color(s): ${missing_colors[*]}. Run Wallust first."
+ notify_err "Missing color(s): ${missing_colors[*]}. Run Wallust first."
exit 1
fi
-#background-color=$(grep -oP 'background:\s*\K#[A-Fa-f0-9]+' "$rofi_wallust")
-# wallpaper to use
+target_monitor="$(resolve_target_monitor "$requested_monitor" 2>/dev/null || true)"
+current_monitor_path=""
if [[ "$mode" == "normal" ]]; then
- wallpaper_path="$wallpaper_current"
+ current_monitor_path="$(resolve_normal_wallpaper "$target_monitor" 2>/dev/null || true)"
else
- wallpaper_path="$wallpaper_modified"
+ current_monitor_path="$(resolve_effects_wallpaper "$target_monitor" 2>/dev/null || true)"
fi
+current_sddm_path="$(resolve_current_sddm_background "$sddm_simple" 2>/dev/null || true)"
-# Abort on NixOS where this repo doesn't manage SDDM and themes are typically read-only
-if hostnamectl 2>/dev/null | grep -q 'Operating System: NixOS'; then
- notify-send -i "$iDIR/error.png" "SDDM" "NixOS detected: skipping SDDM background change."
+current_monitor_label=""
+if [[ -n "$current_monitor_path" && -f "$current_monitor_path" ]]; then
+ if [[ -n "$target_monitor" ]]; then
+ current_monitor_label="Current monitor ($target_monitor): $(basename "$current_monitor_path")"
+ else
+ current_monitor_label="Current monitor wallpaper: $(basename "$current_monitor_path")"
+ fi
+fi
+
+current_sddm_label=""
+if [[ -n "$current_sddm_path" && -f "$current_sddm_path" ]]; then
+ current_sddm_label="Current SDDM background: $(basename "$current_sddm_path")"
+fi
+
+mapfile -d '' WALLPAPERS < <(find -L "$wallDIR" -type f \( \
+ -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.png" -o -iname "*.gif" -o \
+ -iname "*.bmp" -o -iname "*.tiff" -o -iname "*.webp" -o \
+ -iname "*.mp4" -o -iname "*.mkv" -o -iname "*.mov" -o -iname "*.webm" \
+\) -print0)
+
+if [[ ${#WALLPAPERS[@]} -eq 0 ]]; then
+ notify_err "No wallpapers found in $wallDIR."
+ exit 1
+fi
+
+random_wallpaper="${WALLPAPERS[$((RANDOM % ${#WALLPAPERS[@]}))]}"
+random_label="Random: $(basename "$random_wallpaper")"
+
+has_ffmpeg=0
+if command -v ffmpeg >/dev/null 2>&1; then
+ has_ffmpeg=1
+fi
+
+menu_message="Select SDDM wallpaper"
+if [[ -n "$target_monitor" ]]; then
+ menu_message="Select SDDM wallpaper for $target_monitor"
+fi
+rofi_icon_size="$(calculate_rofi_icon_size "$target_monitor")"
+rofi_override="element-icon{size:${rofi_icon_size}%;}"
+
+menu() {
+ local -a sorted_options=()
+ local pic_path pic_name cache_preview_image
+
+ mapfile -t sorted_options < <(printf '%s\n' "${WALLPAPERS[@]}" | sort)
+
+ printf "%s\x00icon\x1f%s\n" "$random_label" "$random_wallpaper"
+ if [[ -n "$current_monitor_label" && -n "$current_monitor_path" ]]; then
+ printf "%s\x00icon\x1f%s\n" "$current_monitor_label" "$current_monitor_path"
+ fi
+ if [[ -n "$current_sddm_label" && -n "$current_sddm_path" ]]; then
+ printf "%s\x00icon\x1f%s\n" "$current_sddm_label" "$current_sddm_path"
+ fi
+
+ for pic_path in "${sorted_options[@]}"; do
+ pic_name="$(basename "$pic_path")"
+ if [[ "$pic_name" =~ \.(mp4|mkv|mov|webm|MP4|MKV|MOV|WEBM)$ ]]; then
+ cache_preview_image="$video_preview_cache/${pic_name}.png"
+ if [[ ! -f "$cache_preview_image" && "$has_ffmpeg" -eq 1 ]]; then
+ mkdir -p "$video_preview_cache"
+ ffmpeg -v error -y -i "$pic_path" -ss 00:00:01.000 -vframes 1 "$cache_preview_image" >/dev/null 2>&1 || true
+ fi
+ if [[ -f "$cache_preview_image" ]]; then
+ printf "%s\x00icon\x1f%s\n" "$pic_name" "$cache_preview_image"
+ else
+ printf "%s\n" "$pic_name"
+ fi
+ else
+ printf "%s\x00icon\x1f%s\n" "$pic_name" "$pic_path"
+ fi
+ done
+}
+
+rofi_cmd=(rofi -i -show -dmenu -mesg "$menu_message" -theme-str "$rofi_override")
+if [[ -f "$rofi_theme" ]]; then
+ rofi_cmd+=(-config "$rofi_theme")
+fi
+
+choice="$(menu | "${rofi_cmd[@]}")"
+choice="${choice#"${choice%%[![:space:]]*}"}"
+choice="${choice%"${choice##*[![:space:]]}"}"
+
+if [[ -z "$choice" ]]; then
exit 0
fi
-# Launch terminal and apply changes
-$terminal -e bash -c "
-echo 'Enter your password to update SDDM wallpapers and colors';
+selected_file=""
+if [[ "$choice" == "$random_label" ]]; then
+ selected_file="$random_wallpaper"
+elif [[ -n "$current_monitor_label" && "$choice" == "$current_monitor_label" ]]; then
+ selected_file="$current_monitor_path"
+elif [[ -n "$current_sddm_label" && "$choice" == "$current_sddm_label" ]]; then
+ selected_file="$current_sddm_path"
+elif [[ -f "$choice" ]]; then
+ selected_file="$choice"
+else
+ choice_basename="$(basename "$choice" | sed 's/\(.*\)\.[^.]*$/\1/')"
+ selected_file="$(find -L "$wallDIR" -type f -iname "$choice_basename.*" -print -quit)"
+fi
-# Update the colors in the SDDM config
-sudo sed -i \"s/HeaderTextColor=\\\"#.*\\\"/HeaderTextColor=\\\"$color13\\\"/\" \"$sddm_theme_conf\"
-sudo sed -i \"s/DateTextColor=\\\"#.*\\\"/DateTextColor=\\\"$color13\\\"/\" \"$sddm_theme_conf\"
-sudo sed -i \"s/TimeTextColor=\\\"#.*\\\"/TimeTextColor=\\\"$color13\\\"/\" \"$sddm_theme_conf\"
-sudo sed -i \"s/DropdownSelectedBackgroundColor=\\\"#.*\\\"/DropdownSelectedBackgroundColor=\\\"$color13\\\"/\" \"$sddm_theme_conf\"
-sudo sed -i \"s/SystemButtonsIconsColor=\\\"#.*\\\"/SystemButtonsIconsColor=\\\"$color13\\\"/\" \"$sddm_theme_conf\"
-sudo sed -i \"s/SessionButtonTextColor=\\\"#.*\\\"/SessionButtonTextColor=\\\"$color13\\\"/\" \"$sddm_theme_conf\"
-sudo sed -i \"s/VirtualKeyboardButtonTextColor=\\\"#.*\\\"/VirtualKeyboardButtonTextColor=\\\"$color13\\\"/\" \"$sddm_theme_conf\"
-sudo sed -i \"s/HighlightBackgroundColor=\\\"#.*\\\"/HighlightBackgroundColor=\\\"$color12\\\"/\" \"$sddm_theme_conf\"
-sudo sed -i \"s/LoginFieldTextColor=\\\"#.*\\\"/LoginFieldTextColor=\\\"$color12\\\"/\" \"$sddm_theme_conf\"
-sudo sed -i \"s/PasswordFieldTextColor=\\\"#.*\\\"/PasswordFieldTextColor=\\\"$color12\\\"/\" \"$sddm_theme_conf\"
+if [[ -z "$selected_file" || ! -f "$selected_file" ]]; then
+ notify_err "Selected wallpaper not found: $choice"
+ exit 1
+fi
-sudo sed -i \"s/DropdownBackgroundColor=\\\"#.*\\\"/DropdownBackgroundColor=\\\"$color1\\\"/\" \"$sddm_theme_conf\"
-sudo sed -i \"s/HighlightTextColor=\\\"#.*\\\"/HighlightTextColor=\\\"$color10\\\"/\" \"$sddm_theme_conf\"
+wallpaper_path="$(prepare_sddm_wallpaper "$selected_file" "$target_monitor" 2>/dev/null || true)"
+if [[ -z "$wallpaper_path" || ! -f "$wallpaper_path" ]]; then
+ notify_err "Could not prepare selected wallpaper for SDDM."
+ exit 1
+fi
+
+# Launch terminal and apply changes
+if ! "$terminal" -e bash -c '
+set -e
+theme_conf="$1"
+wallpaper_path="$2"
+sddm_simple="$3"
+color13="$4"
+color12="$5"
+color1="$6"
+color10="$7"
+color7="$8"
-sudo sed -i \"s/PlaceholderTextColor=\\\"#.*\\\"/PlaceholderTextColor=\\\"$color7\\\"/\" \"$sddm_theme_conf\"
-sudo sed -i \"s/UserIconColor=\\\"#.*\\\"/UserIconColor=\\\"$color7\\\"/\" \"$sddm_theme_conf\"
-sudo sed -i \"s/PasswordIconColor=\\\"#.*\\\"/PasswordIconColor=\\\"$color7\\\"/\" \"$sddm_theme_conf\"
+echo "Enter your password to update SDDM wallpapers and colors"
+
+# Update the colors in the SDDM config
+sudo sed -i "s/HeaderTextColor=\"#.*\"/HeaderTextColor=\"$color13\"/" "$theme_conf"
+sudo sed -i "s/DateTextColor=\"#.*\"/DateTextColor=\"$color13\"/" "$theme_conf"
+sudo sed -i "s/TimeTextColor=\"#.*\"/TimeTextColor=\"$color13\"/" "$theme_conf"
+sudo sed -i "s/DropdownSelectedBackgroundColor=\"#.*\"/DropdownSelectedBackgroundColor=\"$color13\"/" "$theme_conf"
+sudo sed -i "s/SystemButtonsIconsColor=\"#.*\"/SystemButtonsIconsColor=\"$color13\"/" "$theme_conf"
+sudo sed -i "s/SessionButtonTextColor=\"#.*\"/SessionButtonTextColor=\"$color13\"/" "$theme_conf"
+sudo sed -i "s/VirtualKeyboardButtonTextColor=\"#.*\"/VirtualKeyboardButtonTextColor=\"$color13\"/" "$theme_conf"
+sudo sed -i "s/HighlightBackgroundColor=\"#.*\"/HighlightBackgroundColor=\"$color12\"/" "$theme_conf"
+sudo sed -i "s/LoginFieldTextColor=\"#.*\"/LoginFieldTextColor=\"$color12\"/" "$theme_conf"
+sudo sed -i "s/PasswordFieldTextColor=\"#.*\"/PasswordFieldTextColor=\"$color12\"/" "$theme_conf"
+sudo sed -i "s/DropdownBackgroundColor=\"#.*\"/DropdownBackgroundColor=\"$color1\"/" "$theme_conf"
+sudo sed -i "s/HighlightTextColor=\"#.*\"/HighlightTextColor=\"$color10\"/" "$theme_conf"
+sudo sed -i "s/PlaceholderTextColor=\"#.*\"/PlaceholderTextColor=\"$color7\"/" "$theme_conf"
+sudo sed -i "s/UserIconColor=\"#.*\"/UserIconColor=\"$color7\"/" "$theme_conf"
+sudo sed -i "s/PasswordIconColor=\"#.*\"/PasswordIconColor=\"$color7\"/" "$theme_conf"
# Copy wallpaper to SDDM theme
-# Primary: set Backgrounds/default (no extension) for simple_sddm_2
-sudo cp -f \"$wallpaper_path\" \"$sddm_simple/Backgrounds/default\" || true
-# Fallbacks: if theme ships default.jpg or default.png, update those too
-if [ -e \"$sddm_simple/Backgrounds/default.jpg\" ]; then
- sudo cp -f \"$wallpaper_path\" \"$sddm_simple/Backgrounds/default.jpg\"
+sudo cp -f "$wallpaper_path" "$sddm_simple/Backgrounds/default"
+if [ -e "$sddm_simple/Backgrounds/default.jpg" ]; then
+ sudo cp -f "$wallpaper_path" "$sddm_simple/Backgrounds/default.jpg"
fi
-if [ -e \"$sddm_simple/Backgrounds/default.png\" ]; then
- sudo cp -f \"$wallpaper_path\" \"$sddm_simple/Backgrounds/default.png\"
+if [ -e "$sddm_simple/Backgrounds/default.png" ]; then
+ sudo cp -f "$wallpaper_path" "$sddm_simple/Backgrounds/default.png"
+fi
+' _ "$sddm_theme_conf" "$wallpaper_path" "$sddm_simple" "$color13" "$color12" "$color1" "$color10" "$color7"; then
+ notify_err "Failed to update SDDM for ${target_monitor:-current context}: $(basename "$wallpaper_path")."
+ exit 1
fi
-notify-send -i \"$iDIR/ja.png\" \"SDDM\" \"Background SET\"
-" \ No newline at end of file
+notify_ok "Set for ${target_monitor:-current context}: $(basename "$wallpaper_path")."
diff --git a/config/hypr/scripts/set-default-thunar-terminal.sh b/config/hypr/scripts/set-default-thunar-terminal.sh
index fd50eb6c..cf5107cf 100755
--- a/config/hypr/scripts/set-default-thunar-terminal.sh
+++ b/config/hypr/scripts/set-default-thunar-terminal.sh
@@ -11,7 +11,7 @@ setup_default_terminal() {
# 1. Configure XFCE/Exo (Thunar's primary helper)
# This handles "Open Terminal Here" and "Open with [CLI App]"
- HELPER_DIR="$HOME/.config/xfce4"
+ HELPER_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/xfce4"
mkdir -p "$HELPER_DIR"
KITTY_PATH="$(command -v kitty 2>/dev/null || true)"
if [ -z "$KITTY_PATH" ]; then
diff --git a/config/hypr/scripts/update_WindowRules.sh b/config/hypr/scripts/update_WindowRules.sh
index 293b14e9..d9cb08e4 100755
--- a/config/hypr/scripts/update_WindowRules.sh
+++ b/config/hypr/scripts/update_WindowRules.sh
@@ -7,7 +7,7 @@
# ==================================================
# Script to update WindowRules config if Hyprland version is >= 0.53
-CONFIGS_DIR="$HOME/.config/hypr/configs"
+CONFIGS_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/configs"
TARGET_FILE="$CONFIGS_DIR/WindowRules.conf"
get_hyprland_version() {
diff --git a/config/hypr/v2.3.24 b/config/hypr/v2.3.25
index e69de29b..e69de29b 100644
--- a/config/hypr/v2.3.24
+++ b/config/hypr/v2.3.25
diff --git a/config/hypr/workspaces.conf b/config/hypr/workspaces.conf
index 5417d940..52a4d94d 100644
--- a/config/hypr/workspaces.conf
+++ b/config/hypr/workspaces.conf
@@ -21,6 +21,11 @@
# workspace = 6, monitor:DP-2
# workspace = 7, monitor:DP-2
# workspace = 8, monitor:DP-2
+# Assigning workspace + layout to a monitor. Below are just examples
+# workspace = 1, monitor:HDMI-A-1, layout:scrolling
+# workspace = 1, monitor:HDMI-A-1, layout:dwindle
+# workspace = 1, monitor:HDMI-A-1, layout:master
+# workspace = 1, monitor:HDMI-A-1, layout:monocle
# example rules (from wiki)
diff --git a/config/rofi/config-layout.rasi b/config/rofi/config-layout.rasi
new file mode 100644
index 00000000..d94178cd
--- /dev/null
+++ b/config/rofi/config-layout.rasi
@@ -0,0 +1,63 @@
+/* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */
+/* Layout Selector (compact) */
+
+@import "~/.config/rofi/config-rofi-theme.rasi"
+
+/* ---- Mainbox ---- */
+mainbox {
+ children: [ "message", "listview" ];
+ spacing: 10px;
+ padding: 12px;
+}
+
+/* ---- Window ---- */
+window {
+ width: 520px;
+ height: 320px;
+}
+
+/* ---- Entry ---- */
+entry {
+ enabled: false;
+}
+
+/* ---- Message ---- */
+message {
+ enabled: true;
+ margin: 0px 6px 0px 6px;
+ padding: 10px;
+ border-radius: 10px;
+ background-color: inherit;
+}
+
+textbox {
+ text-color: inherit;
+ background-color: inherit;
+}
+
+/* ---- Listview ---- */
+listview {
+ columns: 1;
+ lines: 4;
+ fixed-height: true;
+ margin: 8px 10px;
+ padding: 6px;
+ scrollbar: false;
+ spacing: 4px;
+ cycle: true;
+}
+
+element {
+ padding: 6px;
+}
+
+/* ---- Elements ---- */
+element-icon {
+ size: 0%;
+}
+element-text {
+ horizontal-align: 0.0;
+ vertical-align: 0.5;
+ margin: 0px;
+ padding: 0px;
+}
diff --git a/config/rofi/config-starship.rasi b/config/rofi/config-starship.rasi
new file mode 100644
index 00000000..983f8658
--- /dev/null
+++ b/config/rofi/config-starship.rasi
@@ -0,0 +1,63 @@
+/* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */
+/* Starship Selector (tall) */
+
+@import "~/.config/rofi/config-rofi-theme.rasi"
+
+/* ---- Mainbox ---- */
+mainbox {
+ children: [ "message", "listview" ];
+ spacing: 10px;
+ padding: 12px;
+}
+
+/* ---- Window ---- */
+window {
+ width: 520px;
+ height: 620;
+}
+
+/* ---- Entry ---- */
+entry {
+ enabled: false;
+}
+
+/* ---- Message ---- */
+message {
+ enabled: true;
+ margin: 0px 6px 0px 6px;
+ padding: 10px;
+ border-radius: 10px;
+ background-color: inherit;
+}
+
+textbox {
+ text-color: inherit;
+ background-color: inherit;
+}
+
+/* ---- Listview ---- */
+listview {
+ columns: 1;
+ lines: 13;
+ fixed-height: true;
+ margin: 8px 10px;
+ padding: 6px;
+ scrollbar: false;
+ spacing: 4px;
+ cycle: true;
+}
+
+element {
+ padding: 6px;
+}
+
+/* ---- Elements ---- */
+element-icon {
+ size: 0%;
+}
+element-text {
+ horizontal-align: 0.0;
+ vertical-align: 0.5;
+ margin: 0px;
+ padding: 0px;
+}
diff --git a/config/rofi/themes/KooL_style-1.rasi b/config/rofi/themes/KooL_style-1.rasi
index 6a3d8f08..fdfc955e 100644
--- a/config/rofi/themes/KooL_style-1.rasi
+++ b/config/rofi/themes/KooL_style-1.rasi
@@ -69,7 +69,7 @@ inputbar {
border-radius: 20px;
orientation: horizontal;
children: ["entry", "dummy", "mode-switcher" ];
- background-image: url("~/.config/rofi/.current_wallpaper", width);
+ background-image: url("~/.config/rofi/.current_wallpaper_focused", width);
}
/* ---- Entry input ---- */
diff --git a/config/rofi/themes/KooL_style-13-Vertical.rasi b/config/rofi/themes/KooL_style-13-Vertical.rasi
index 218251a4..e591f6b2 100644
--- a/config/rofi/themes/KooL_style-13-Vertical.rasi
+++ b/config/rofi/themes/KooL_style-13-Vertical.rasi
@@ -95,7 +95,7 @@ inputbar {
border-radius: 10px;
border-color: @border-color;
background-color: @background;
- background-image: url("~/.config/rofi/.current_wallpaper", width);
+ background-image: url("~/.config/rofi/.current_wallpaper_focused", width);
children: [ "textbox-prompt-colon","entry" ];
border: 0px;
}
diff --git a/config/rofi/themes/KooL_style-3-FullScreen-v1.rasi b/config/rofi/themes/KooL_style-3-FullScreen-v1.rasi
index ab3107f1..591f078f 100644
--- a/config/rofi/themes/KooL_style-3-FullScreen-v1.rasi
+++ b/config/rofi/themes/KooL_style-3-FullScreen-v1.rasi
@@ -82,7 +82,7 @@ inputbar {
border-radius: 20px;
orientation: horizontal;
children: ["entry", "dummy", "mode-switcher" ];
- background-image: url("~/.config/rofi/.current_wallpaper", width);
+ background-image: url("~/.config/rofi/.current_wallpaper_focused", width);
}
/* ---- Entry input ---- */
diff --git a/config/rofi/themes/KooL_style-5.rasi b/config/rofi/themes/KooL_style-5.rasi
index 8370158c..0c22762d 100644
--- a/config/rofi/themes/KooL_style-5.rasi
+++ b/config/rofi/themes/KooL_style-5.rasi
@@ -59,7 +59,7 @@ mainbox {
enabled: true;
orientation: vertical;
padding: 8px;
- background-image: url("~/.config/rofi/.current_wallpaper", width);
+ background-image: url("~/.config/rofi/.current_wallpaper_focused", width);
children: [ "inputbar", "listbox" ];
border-radius: 12px;
}
diff --git a/config/rofi/themes/KooL_style-6.rasi b/config/rofi/themes/KooL_style-6.rasi
index 1172fb92..8320ecc8 100644
--- a/config/rofi/themes/KooL_style-6.rasi
+++ b/config/rofi/themes/KooL_style-6.rasi
@@ -69,7 +69,7 @@ inputbar {
border-radius: 25px;
orientation: horizontal;
children: ["entry", "dummy", "mode-switcher" ];
- background-image: url("~/.config/rofi/.current_wallpaper", width);
+ background-image: url("~/.config/rofi/.current_wallpaper_focused", width);
}
/* ---- Entry input ---- */
diff --git a/config/rofi/themes/KooL_style-8.rasi b/config/rofi/themes/KooL_style-8.rasi
index b369ea96..80265dc6 100644
--- a/config/rofi/themes/KooL_style-8.rasi
+++ b/config/rofi/themes/KooL_style-8.rasi
@@ -66,7 +66,7 @@ inputbar {
padding: 4em;
children: [ "textbox-prompt-colon", "entry" ];
background-color: transparent;
- background-image: url("~/.config/rofi/.current_wallpaper", width);
+ background-image: url("~/.config/rofi/.current_wallpaper_focused", width);
}
textbox-prompt-colon {
diff --git a/config/starship/1-line-nix.toml b/config/starship/1-line-nix.toml
new file mode 100644
index 00000000..e3b534b5
--- /dev/null
+++ b/config/starship/1-line-nix.toml
@@ -0,0 +1,79 @@
+add_newline = true
+format = "$nix_shell$hostname$directory$git_branch$git_state$git_status$character"
+palette = "base16"
+
+[character]
+error_symbol = "[❯](red)"
+success_symbol = "[❯](#5597b9)"
+vimcmd_symbol = "[❮](cyan)"
+
+[directory]
+style = "#5597b9"
+
+[git_branch]
+format = "on [$symbol$branch]($style)[](#0e4975) "
+style = "fg:#5597b9 bg:#0e4975"
+symbol = "[](#0e4975) "
+
+[git_state]
+format = "([$state( $progress_current/$progress_total)]($style)) "
+style = "bright-black"
+
+[git_status]
+conflicted = ""
+deleted = ""
+format = "[[(*$conflicted$untracked$modified$staged$renamed$deleted)](218)($ahead_behind$stashed)]($style)"
+renamed = ""
+stashed = "≡"
+style = "cyan"
+
+[nix_shell]
+format = "[$symbol]($style) "
+style = ""
+symbol = "🐚"
+
+[palettes.base16]
+base00 = "#0a1b37"
+base01 = "#0e4975"
+base02 = "#0870a3"
+base03 = "#04abe0"
+base04 = "#b1bbbc"
+base05 = "#efe0c3"
+base06 = "#fdeead"
+base07 = "#fff2c5"
+base08 = "#3a9cbf"
+base09 = "#279bc4"
+base0A = "#e76865"
+base0B = "#c8797a"
+base0C = "#6693bc"
+base0D = "#5597b9"
+base0E = "#e9646b"
+base0F = "#6c97ba"
+base10 = "#0a1b37"
+base11 = "#0a1b37"
+base12 = "#3a9cbf"
+base13 = "#e76865"
+base14 = "#c8797a"
+base15 = "#6693bc"
+base16 = "#5597b9"
+base17 = "#e9646b"
+black = "#0a1b37"
+blue = "#5597b9"
+bright-black = "#04abe0"
+bright-blue = "#5597b9"
+bright-cyan = "#6693bc"
+bright-green = "#c8797a"
+bright-magenta = "#e9646b"
+bright-purple = "#e9646b"
+bright-red = "#3a9cbf"
+bright-white = "#fff2c5"
+bright-yellow = "#e76865"
+brown = "#6c97ba"
+cyan = "#6693bc"
+green = "#c8797a"
+magenta = "#e9646b"
+orange = "#279bc4"
+purple = "#e9646b"
+red = "#3a9cbf"
+white = "#efe0c3"
+yellow = "#e76865"
diff --git a/config/starship/1-line-simple.toml b/config/starship/1-line-simple.toml
new file mode 100644
index 00000000..0cf72924
--- /dev/null
+++ b/config/starship/1-line-simple.toml
@@ -0,0 +1,173 @@
+"$schema" = 'https://starship.rs/config-schema.json'
+
+command_timeout = 120
+palette = 'catppuccin_mocha'
+add_newline = false
+[character]
+# Note the use of Catppuccin color 'peach'
+success_symbol = "[[](green) ❯](peach)"
+error_symbol = "[[](red) ❯](peach)"
+vimcmd_symbol = "[❮](subtext1)" # For use with zsh-vi-mode
+
+
+
+[palettes.catppuccin_mocha]
+rosewater = "#f5e0dc"
+flamingo = "#f2cdcd"
+pink = "#f5c2e7"
+mauve = "#cba6f7"
+red = "#f38ba8"
+maroon = "#eba0ac"
+peach = "#fab387"
+yellow = "#f9e2af"
+green = "#a6e3a1"
+teal = "#94e2d5"
+sky = "#89dceb"
+sapphire = "#74c7ec"
+blue = "#89b4fa"
+lavender = "#b4befe"
+text = "#cdd6f4"
+subtext1 = "#bac2de"
+subtext0 = "#a6adc8"
+overlay2 = "#9399b2"
+overlay1 = "#7f849c"
+overlay0 = "#6c7086"
+surface2 = "#585b70"
+surface1 = "#45475a"
+surface0 = "#313244"
+base = "#1e1e2e"
+mantle = "#181825"
+crust = "#11111b"
+
+[aws]
+symbol = " "
+
+[buf]
+symbol = " "
+
+[c]
+symbol = " "
+
+[cmake]
+symbol = " "
+
+[conda]
+symbol = " "
+
+[crystal]
+symbol = " "
+
+[dart]
+symbol = " "
+
+[directory]
+read_only = " 󰌾"
+truncation_length = 4
+style = "bold lavender"
+
+[docker_context]
+symbol = " "
+
+[elixir]
+symbol = " "
+
+[elm]
+symbol = " "
+
+[fennel]
+symbol = " "
+
+[fossil_branch]
+symbol = " "
+
+[git_branch]
+symbol = " "
+style = "bold mauve"
+
+[git_commit]
+tag_symbol = '  '
+
+[golang]
+symbol = " "
+
+[guix_shell]
+symbol = " "
+
+[haskell]
+symbol = " "
+
+[haxe]
+symbol = " "
+
+[hg_branch]
+symbol = " "
+
+[hostname]
+ssh_symbol = " "
+
+[java]
+symbol = " "
+
+[julia]
+symbol = " "
+
+[kotlin]
+symbol = " "
+
+[lua]
+symbol = " "
+
+[memory_usage]
+symbol = "󰍛 "
+
+[meson]
+symbol = "󰔷 "
+
+[nim]
+symbol = "󰆥 "
+
+[nix_shell]
+symbol = " "
+
+[nodejs]
+symbol = " "
+
+[ocaml]
+symbol = " "
+
+[package]
+symbol = "󰏗 "
+
+[perl]
+symbol = " "
+
+[php]
+symbol = " "
+
+[pijul_channel]
+symbol = " "
+
+[python]
+symbol = " "
+
+[rlang]
+symbol = "󰟔 "
+
+[ruby]
+symbol = " "
+
+[rust]
+symbol = "󱘗 "
+
+[scala]
+symbol = " "
+
+[swift]
+symbol = " "
+
+[zig]
+symbol = " "
+
+[gradle]
+symbol = " "
+
diff --git a/config/starship/2-line-classic-garuda.toml b/config/starship/2-line-classic-garuda.toml
new file mode 100644
index 00000000..5ec1c550
--- /dev/null
+++ b/config/starship/2-line-classic-garuda.toml
@@ -0,0 +1,146 @@
+## FIRST LINE/ROW: Info & Status
+# First param ─┌
+[username]
+format = " [╭─$user]($style)@"
+show_always = true
+style_root = "bold red"
+style_user = "bold red"
+
+# Second param
+[hostname]
+disabled = false
+format = "[$hostname]($style) in "
+ssh_only = false
+style = "bold dimmed red"
+
+# Third param
+[directory]
+style = "purple"
+truncate_to_repo = true
+truncation_length = 0
+truncation_symbol = "repo: "
+
+# Fourth param
+[sudo]
+disabled = false
+
+# Before all the version info (python, nodejs, php, etc.)
+[git_status]
+ahead = "⇡${count}"
+behind = "⇣${count}"
+deleted = "x"
+diverged = "⇕⇡${ahead_count}⇣${behind_count}"
+style = "white"
+
+# Last param in the first line/row
+[cmd_duration]
+disabled = false
+format = "took [$duration]($style)"
+min_time = 1
+
+
+## SECOND LINE/ROW: Prompt
+# Somethere at the beginning
+[battery]
+charging_symbol = ""
+disabled = true
+discharging_symbol = ""
+full_symbol = ""
+
+[[battery.display]] # "bold red" style when capacity is between 0% and 10%
+disabled = false
+style = "bold red"
+threshold = 15
+
+[[battery.display]] # "bold yellow" style when capacity is between 10% and 30%
+disabled = true
+style = "bold yellow"
+threshold = 50
+
+[[battery.display]] # "bold green" style when capacity is between 10% and 30%
+disabled = true
+style = "bold green"
+threshold = 80
+
+# Prompt: optional param 1
+[time]
+disabled = true
+format = " 🕙 $time($style)\n"
+style = "bright-white"
+time_format = "%T"
+
+# Prompt: param 2
+[character]
+error_symbol = " [×](bold red)"
+success_symbol = " [╰─λ](bold red)"
+
+# SYMBOLS
+[status]
+disabled = false
+format = '[\[$symbol$status_common_meaning$status_signal_name$status_maybe_int\]]($style)'
+map_symbol = true
+pipestatus = true
+symbol = "🔴"
+
+[aws]
+symbol = " "
+
+[conda]
+symbol = " "
+
+[dart]
+symbol = " "
+
+[docker_context]
+symbol = " "
+
+[elixir]
+symbol = " "
+
+[elm]
+symbol = " "
+
+[git_branch]
+symbol = " "
+
+[golang]
+symbol = " "
+
+[hg_branch]
+symbol = " "
+
+[java]
+symbol = " "
+
+[julia]
+symbol = " "
+
+[nim]
+symbol = " "
+
+[nix_shell]
+symbol = " "
+
+[nodejs]
+symbol = " "
+
+[package]
+symbol = " "
+
+[perl]
+symbol = " "
+
+[php]
+symbol = " "
+
+[python]
+symbol = " "
+
+[ruby]
+symbol = " "
+
+[rust]
+symbol = " "
+
+[swift]
+symbol = "ﯣ "
diff --git a/config/starship/2-line-cool.toml b/config/starship/2-line-cool.toml
new file mode 100644
index 00000000..0aae3558
--- /dev/null
+++ b/config/starship/2-line-cool.toml
@@ -0,0 +1,65 @@
+format = """
+[░▒▓](#a3aed2)\
+[  ](bg:#a3aed2 fg:#090c0c)\
+[](bg:#769ff0 fg:#a3aed2)\
+$directory\
+[](fg:#769ff0 bg:#394260)\
+$git_branch\
+$git_status\
+[](fg:#394260 bg:#212736)\
+$nodejs\
+$rust\
+$golang\
+$php\
+[](fg:#212736 bg:#1d2230)\
+$time\
+[ ](fg:#1d2230)\
+\n$character"""
+
+[directory]
+style = "fg:#e3e5e5 bg:#769ff0"
+format = "[ $path ]($style)"
+truncation_length = 3
+truncation_symbol = "…/"
+
+[directory.substitutions]
+"Documents" = " "
+"Downloads" = " "
+"Music" = " "
+"Pictures" = " "
+
+[git_branch]
+symbol = ""
+style = "bg:#394260"
+format = '[[ $symbol $branch ](fg:#769ff0 bg:#394260)]($style)'
+
+[git_status]
+style = "bg:#394260"
+format = '[[($all_status$ahead_behind )](fg:#769ff0 bg:#394260)]($style)'
+
+[nodejs]
+symbol = ""
+style = "bg:#212736"
+format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)'
+
+[rust]
+symbol = ""
+style = "bg:#212736"
+format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)'
+
+[golang]
+symbol = "ﳑ"
+style = "bg:#212736"
+format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)'
+
+[php]
+symbol = ""
+style = "bg:#212736"
+format = '[[ $symbol ($version) ](fg:#769ff0 bg:#212736)]($style)'
+
+[time]
+disabled = true
+time_format = "%R" # Hour:Minute Format
+style = "bg:#1d2230"
+format = '[[  $time ](fg:#a0a9cb bg:#1d2230)]($style)'
+
diff --git a/config/starship/2-line-nixos.toml b/config/starship/2-line-nixos.toml
new file mode 100644
index 00000000..4f21fd5e
--- /dev/null
+++ b/config/starship/2-line-nixos.toml
@@ -0,0 +1,79 @@
+add_newline = false
+format = "$nix_shell$hostname$directory$git_branch$git_state$git_status\n$character"
+palette = "base16"
+
+[character]
+error_symbol = "[❯](red)"
+success_symbol = "[❯](#5597b9)"
+vimcmd_symbol = "[❮](cyan)"
+
+[directory]
+style = "#5597b9"
+
+[git_branch]
+format = "on [$symbol$branch]($style)[](#0e4975) "
+style = "fg:#5597b9 bg:#0e4975"
+symbol = "[](#0e4975) "
+
+[git_state]
+format = "([$state( $progress_current/$progress_total)]($style)) "
+style = "bright-black"
+
+[git_status]
+conflicted = ""
+deleted = ""
+format = "[[(*$conflicted$untracked$modified$staged$renamed$deleted)](218)($ahead_behind$stashed)]($style)"
+renamed = ""
+stashed = "≡"
+style = "cyan"
+
+[nix_shell]
+format = "[$symbol]($style) "
+style = ""
+symbol = "🐚"
+
+[palettes.base16]
+base00 = "#0a1b37"
+base01 = "#0e4975"
+base02 = "#0870a3"
+base03 = "#04abe0"
+base04 = "#b1bbbc"
+base05 = "#efe0c3"
+base06 = "#fdeead"
+base07 = "#fff2c5"
+base08 = "#3a9cbf"
+base09 = "#279bc4"
+base0A = "#e76865"
+base0B = "#c8797a"
+base0C = "#6693bc"
+base0D = "#5597b9"
+base0E = "#e9646b"
+base0F = "#6c97ba"
+base10 = "#0a1b37"
+base11 = "#0a1b37"
+base12 = "#3a9cbf"
+base13 = "#e76865"
+base14 = "#c8797a"
+base15 = "#6693bc"
+base16 = "#5597b9"
+base17 = "#e9646b"
+black = "#0a1b37"
+blue = "#5597b9"
+bright-black = "#04abe0"
+bright-blue = "#5597b9"
+bright-cyan = "#6693bc"
+bright-green = "#c8797a"
+bright-magenta = "#e9646b"
+bright-purple = "#e9646b"
+bright-red = "#3a9cbf"
+bright-white = "#fff2c5"
+bright-yellow = "#e76865"
+brown = "#6c97ba"
+cyan = "#6693bc"
+green = "#c8797a"
+magenta = "#e9646b"
+orange = "#279bc4"
+purple = "#e9646b"
+red = "#3a9cbf"
+white = "#efe0c3"
+yellow = "#e76865"
diff --git a/config/starship/chris-titus.toml b/config/starship/chris-titus.toml
new file mode 100644
index 00000000..dcf96bda
--- /dev/null
+++ b/config/starship/chris-titus.toml
@@ -0,0 +1,129 @@
+format = """
+[](#3B4252)\
+$python\
+$username\
+[](bg:#434C5E fg:#3B4252)\
+$directory\
+[](fg:#434C5E bg:#4C566A)\
+$git_branch\
+$git_status\
+[](fg:#4C566A bg:#86BBD8)\
+$c\
+$elixir\
+$elm\
+$golang\
+$haskell\
+$java\
+$julia\
+$nodejs\
+$nim\
+$rust\
+[](fg:#86BBD8 bg:#06969A)\
+$docker_context\
+[](fg:#06969A bg:#33658A)\
+$time\
+[ ](fg:#33658A)\
+"""
+command_timeout = 5000
+# Disable the blank line at the start of the prompt
+# add_newline = false
+
+# You can also replace your username with a neat symbol like  to save some space
+[username]
+show_always = true
+style_user = "bg:#3B4252"
+style_root = "bg:#3B4252"
+format = '[$user ]($style)'
+
+[directory]
+style = "bg:#434C5E"
+format = "[ $path ]($style)"
+truncation_length = 3
+truncation_symbol = "…/"
+
+# Here is how you can shorten some long paths by text replacement
+# similar to mapped_locations in Oh My Posh:
+[directory.substitutions]
+"Documents" = " "
+"Downloads" = " "
+"Music" = " "
+"Pictures" = " "
+# Keep in mind that the order matters. For example:
+# "Important Documents" = "  "
+# will not be replaced, because "Documents" was already substituted before.
+# So either put "Important Documents" before "Documents" or use the substituted version:
+# "Important  " = "  "
+
+[c]
+symbol = " "
+style = "bg:#86BBD8"
+format = '[ $symbol ($version) ]($style)'
+
+[docker_context]
+symbol = " "
+style = "bg:#06969A"
+format = '[ $symbol $context ]($style) $path'
+
+[elixir]
+symbol = " "
+style = "bg:#86BBD8"
+format = '[ $symbol ($version) ]($style)'
+
+[elm]
+symbol = " "
+style = "bg:#86BBD8"
+format = '[ $symbol ($version) ]($style)'
+
+[git_branch]
+symbol = ""
+style = "bg:#4C566A"
+format = '[ $symbol $branch ]($style)'
+
+[git_status]
+style = "bg:#4C566A"
+format = '[$all_status$ahead_behind ]($style)'
+
+[golang]
+symbol = " "
+style = "bg:#86BBD8"
+format = '[ $symbol ($version) ]($style)'
+
+[haskell]
+symbol = " "
+style = "bg:#86BBD8"
+format = '[ $symbol ($version) ]($style)'
+
+[java]
+symbol = " "
+style = "bg:#86BBD8"
+format = '[ $symbol ($version) ]($style)'
+
+[julia]
+symbol = " "
+style = "bg:#86BBD8"
+format = '[ $symbol ($version) ]($style)'
+
+[nodejs]
+symbol = ""
+style = "bg:#86BBD8"
+format = '[ $symbol ($version) ]($style)'
+
+[nim]
+symbol = " "
+style = "bg:#86BBD8"
+format = '[ $symbol ($version) ]($style)'
+
+[python]
+style = "bg:#3B4252"
+format = '[(\($virtualenv\) )]($style)'
+
+[rust]
+symbol = ""
+style = "bg:#86BBD8"
+format = '[ $symbol ($version) ]($style)'
+
+[time]
+disabled = false
+time_format = "%R" # Hour:Minute Format
+style = "bg:#33658A"
+format = '[ $time ]($style)'
diff --git a/config/starship/classic.toml b/config/starship/classic.toml
new file mode 100644
index 00000000..8dd1645f
--- /dev/null
+++ b/config/starship/classic.toml
@@ -0,0 +1,250 @@
+palette = "catppuccin_mocha"
+
+[palettes.catppuccin_mocha]
+rosewater = "#f5e0dc"
+flamingo = "#f2cdcd"
+pink = "#f5c2e7"
+mauve = "#cba6f7"
+red = "#f38ba8"
+maroon = "#eba0ac"
+peach = "#fab387"
+yellow = "#f9e2af"
+green = "#a6e3a1"
+teal = "#94e2d5"
+sky = "#89dceb"
+sapphire = "#74c7ec"
+blue = "#89b4fa"
+lavender = "#b4befe"
+text = "#cdd6f4"
+subtext1 = "#bac2de"
+subtext0 = "#a6adc8"
+overlay2 = "#9399b2"
+overlay1 = "#7f849c"
+overlay0 = "#6c7086"
+surface2 = "#585b70"
+surface1 = "#45475a"
+surface0 = "#313244"
+base = "#1e1e2e"
+mantle = "#181825"
+crust = "#11111b"
+
+## FIRST LINE/ROW: Info & Status
+[username]
+format = "[$user]($style)@"
+show_always = true
+style_root = "bold red"
+style_user = "bold mauve"
+
+[hostname]
+disabled = false
+format = "[$hostname]($style) in "
+ssh_only = false
+style = "bold maroon"
+ssh_symbol = " "
+
+[directory]
+style = "bold peach"
+truncate_to_repo = true
+truncation_length = 0
+truncation_symbol = "repo: "
+read_only = ""
+
+[git_metrics]
+disabled = false
+added_style = 'bold green'
+format = '[+$added]($added_style)/[-$deleted]($deleted_style) '
+
+[sudo]
+disabled = false
+
+[git_status]
+ahead = "${count}"
+behind = "${count}"
+deleted = "x"
+diverged = "${ahead_count}${behind_count}"
+style = "text"
+
+[git_branch]
+symbol = " "
+style = "bold green"
+
+[nix_shell]
+format = 'via [$symbol(($name))]($style) '
+symbol = " "
+
+[cmd_duration]
+disabled = false
+style="bold flamingo"
+format = "took [$duration]($style)"
+show_milliseconds = true
+show_notifications = false
+min_time_to_notify = 30_000
+
+## SECOND LINE/ROW: Prompt
+[battery]
+charging_symbol = ""
+disabled = true
+discharging_symbol = ""
+full_symbol = ""
+
+[[battery.display]] # "bold red" style when capacity is between 0% and 15%
+disabled = false
+style = "bold red"
+threshold = 15
+
+[[battery.display]] # "bold peach" style when capacity is between 15% and 50%
+disabled = true
+style = "bold peach"
+threshold = 50
+
+[[battery.display]] # "bold green" style when capacity is between 50% and 90%
+disabled = true
+style = "bold green"
+threshold = 90
+
+[status]
+disabled = false
+format = '[\[$symbol$status_common_meaning$status_signal_name$status_maybe_int\]]($style)'
+map_symbol = true
+pipestatus = true
+symbol = "✖"
+not_executable_symbol = ""
+not_found_symbol = ""
+sigint_symbol = "󰟾"
+signal_symbol = ""
+
+[os]
+disabled = true
+format = ' [$symbol]($style)'
+style = "bold mauve"
+
+[character]
+error_symbol = ""
+success_symbol = "❯(bold green)"
+
+# SYMBOLS
+[git_commit]
+tag_symbol = '  '
+
+[golang]
+symbol = " "
+
+[guix_shell]
+symbol = " "
+
+[haskell]
+symbol = " "
+
+[haxe]
+symbol = " "
+
+[hg_branch]
+symbol = " "
+
+[java]
+symbol = " "
+
+[julia]
+symbol = " "
+
+[kotlin]
+symbol = " "
+
+[lua]
+symbol = " "
+
+[memory_usage]
+symbol = "󰍛 "
+
+[meson]
+symbol = "󰔷 "
+
+[nim]
+symbol = "󰆥 "
+
+[nodejs]
+symbol = " "
+
+[ocaml]
+symbol = " "
+
+[os.symbols]
+Alpaquita = " "
+Alpine = " "
+AlmaLinux = " "
+Amazon = " "
+Android = " "
+Arch = " "
+Artix = " "
+CentOS = " "
+Debian = " "
+DragonFly = " "
+Emscripten = " "
+EndeavourOS = " "
+Fedora = " "
+FreeBSD = " "
+Garuda = "󰛓 "
+Gentoo = " "
+HardenedBSD = "󰞌 "
+Illumos = "󰈸 "
+Kali = " "
+Linux = " "
+Mabox = " "
+Macos = " "
+Manjaro = " "
+Mariner = " "
+MidnightBSD = " "
+Mint = " "
+NetBSD = " "
+NixOS = " "
+OpenBSD = "󰈺 "
+openSUSE = " "
+OracleLinux = "󰌷 "
+Pop = " "
+Raspbian = " "
+Redhat = " "
+RedHatEnterprise = " "
+RockyLinux = " "
+Redox = "󰀘 "
+Solus = "󰠳 "
+SUSE = " "
+Ubuntu = " "
+Unknown = " "
+Void = " "
+Windows = "󰍲 "
+
+[package]
+symbol = "󰏗 "
+
+[perl]
+symbol = " "
+
+[php]
+symbol = " "
+
+[pijul_channel]
+symbol = " "
+
+[python]
+symbol = " "
+
+[rlang]
+symbol = "󰟔 "
+
+[ruby]
+symbol = " "
+
+[rust]
+symbol = "󱘗 "
+
+[scala]
+symbol = " "
+
+[swift]
+symbol = " "
+
+[zig]
+symbol = " "
+
+[gradle]
+symbol = " "
diff --git a/config/starship/eric-dubois.toml b/config/starship/eric-dubois.toml
new file mode 100644
index 00000000..4c3a8c42
--- /dev/null
+++ b/config/starship/eric-dubois.toml
@@ -0,0 +1,191 @@
+"$schema" = 'https://starship.rs/config-schema.json'
+
+format = """
+[](surface0)\
+$os\
+$username\
+[](bg:peach fg:surface0)\
+$directory\
+[](fg:peach bg:green)\
+$git_branch\
+$git_status\
+[](fg:green bg:teal)\
+$c\
+$rust\
+$golang\
+$nodejs\
+$php\
+$java\
+$kotlin\
+$haskell\
+$python\
+[](fg:teal bg:blue)\
+$docker_context\
+[](fg:blue bg:pink)\
+$time\
+[ ](fg:pink)\
+$line_break$character"""
+
+palette = 'catppuccin_mocha'
+
+[palettes.gruvbox_dark]
+color_fg0 = '#fbf1c7'
+color_bg1 = '#3c3836'
+color_bg3 = '#665c54'
+color_blue = '#458588'
+color_aqua = '#689d6a'
+color_green = '#98971a'
+color_orange = '#d65d0e'
+color_purple = '#b16286'
+color_red = '#cc241d'
+color_yellow = '#d79921'
+
+[palettes.catppuccin_mocha]
+rosewater = "#f5e0dc"
+flamingo = "#f2cdcd"
+pink = "#f5c2e7"
+orange = "#cba6f7"
+red = "#f38ba8"
+maroon = "#eba0ac"
+peach = "#fab387"
+yellow = "#f9e2af"
+green = "#a6e3a1"
+teal = "#94e2d5"
+sky = "#89dceb"
+sapphire = "#74c7ec"
+blue = "#89b4fa"
+lavender = "#b4befe"
+text = "#cdd6f4"
+subtext1 = "#bac2de"
+subtext0 = "#a6adc8"
+overlay2 = "#9399b2"
+overlay1 = "#7f849c"
+overlay0 = "#6c7086"
+surface2 = "#585b70"
+surface1 = "#45475a"
+surface0 = "#313244"
+base = "#1e1e2e"
+mantle = "#181825"
+crust = "#11111b"
+
+[os]
+disabled = false
+style = "bg:surface0 fg:text"
+
+[os.symbols]
+Windows = "󰍲"
+Ubuntu = "󰕈"
+SUSE = ""
+Raspbian = "󰐿"
+Mint = "󰣭"
+Macos = ""
+Manjaro = ""
+Linux = "󰌽"
+Gentoo = "󰣨"
+Fedora = "󰣛"
+Alpine = ""
+Amazon = ""
+Android = ""
+Arch = "󰣇"
+Artix = "󰣇"
+CentOS = ""
+Debian = "󰣚"
+Redhat = "󱄛"
+RedHatEnterprise = "󱄛"
+
+[username]
+show_always = true
+style_user = "bg:surface0 fg:text"
+style_root = "bg:surface0 fg:text"
+format = '[ $user ]($style)'
+
+[directory]
+style = "fg:mantle bg:peach"
+format = "[ $path ]($style)"
+truncation_length = 3
+truncation_symbol = "…/"
+
+[directory.substitutions]
+"Documents" = "󰈙 "
+"Downloads" = " "
+"Music" = "󰝚 "
+"Pictures" = " "
+"Developer" = "󰲋 "
+
+[git_branch]
+symbol = ""
+style = "bg:teal"
+format = '[[ $symbol $branch ](fg:base bg:green)]($style)'
+
+[git_status]
+style = "bg:teal"
+format = '[[($all_status$ahead_behind )](fg:base bg:green)]($style)'
+
+[nodejs]
+symbol = ""
+style = "bg:teal"
+format = '[[ $symbol( $version) ](fg:base bg:teal)]($style)'
+
+[c]
+symbol = " "
+style = "bg:teal"
+format = '[[ $symbol( $version) ](fg:base bg:teal)]($style)'
+
+[rust]
+symbol = ""
+style = "bg:teal"
+format = '[[ $symbol( $version) ](fg:base bg:teal)]($style)'
+
+[golang]
+symbol = ""
+style = "bg:teal"
+format = '[[ $symbol( $version) ](fg:base bg:teal)]($style)'
+
+[php]
+symbol = ""
+style = "bg:teal"
+format = '[[ $symbol( $version) ](fg:base bg:teal)]($style)'
+
+[java]
+symbol = " "
+style = "bg:teal"
+format = '[[ $symbol( $version) ](fg:base bg:teal)]($style)'
+
+[kotlin]
+symbol = ""
+style = "bg:teal"
+format = '[[ $symbol( $version) ](fg:base bg:teal)]($style)'
+
+[haskell]
+symbol = ""
+style = "bg:teal"
+format = '[[ $symbol( $version) ](fg:base bg:teal)]($style)'
+
+[python]
+symbol = ""
+style = "bg:teal"
+format = '[[ $symbol( $version) ](fg:base bg:teal)]($style)'
+
+[docker_context]
+symbol = ""
+style = "bg:mantle"
+format = '[[ $symbol( $context) ](fg:#83a598 bg:color_bg3)]($style)'
+
+[time]
+disabled = false
+# time_format = "%R"
+time_format = "%I:%M %p"
+style = "pink"
+format = '[[  $time ](fg:mantle bg:pink)]($style)'
+
+[line_break]
+disabled = false
+
+[character]
+disabled = false
+success_symbol = '[>](bold fg:green)'
+error_symbol = '[>](bold fg:red)'
+vimcmd_symbol = '[<](bold fg:creen)'
+vimcmd_replace_one_symbol = '[<](bold fg:purple)'
+vimcmd_replace_symbol = '[<](bold fg:purple)'
+vimcmd_visual_symbol = '[<](bold fg:lavender)'
diff --git a/config/starship/nobara.toml b/config/starship/nobara.toml
new file mode 100644
index 00000000..8e189039
--- /dev/null
+++ b/config/starship/nobara.toml
@@ -0,0 +1,248 @@
+palette = "catppuccin_macchiato"
+format = """
+[░▒▓](crust)\
+$os\
+[](bg:lavender fg:crust)\
+$directory\
+[ ](fg:lavender bg:surface0)\
+$git_branch\
+$git_status\
+$hg_branch\
+[ ](fg:surface0 bg:crust)\
+[▓▒░](crust)\
+[ ◦•](surface2)\
+$fill\
+[•◦ ](surface2)\
+[░▒▓](crust)\
+[ ](fg:surface0 bg:crust)\
+$status\
+$cmd_duration\
+[ ](fg:crust bg:surface0)\
+$battery\
+[▓▒░](crust)
+[·](surface0)\
+[·](surface2)\
+[•](overlay1)\
+[ ](teal)\
+"""
+
+[fill]
+symbol = "·"
+style = "surface2"
+
+[directory]
+style = "fg:surface0 bg:lavender"
+format = "[ $path ]($style)"
+truncation_length = 3
+truncation_symbol = "…/"
+
+[directory.substitutions]
+"~" = "  "
+"Applications" = "  "
+"Desktop" = "  "
+"Developer" = "  "
+"Documents" = " 󰈙 "
+"Downloads" = "  "
+"Games" = "  "
+"GitHub" = "  "
+"Library" = "  "
+"Movies" = "  "
+"Music" = "  "
+"Pictures" = "  "
+"Projects" = "  "
+"Public" = "  "
+"Screenshots" = " 󱣴 "
+"Videos" = "  "
+"Thunderbird" = "  "
+"source" = " 󰈹 "
+"comm" = "  "
+
+
+[git_branch]
+symbol = ""
+style = "bg:surface0"
+format = '[[ $symbol $branch ](fg:lavender bg:surface0)]($style)'
+
+[git_status]
+style = "bg:surface0"
+format = '[[($all_status$ahead_behind )](fg:lavender bg:surface0)]($style)'
+
+[hg_branch]
+disabled = false
+symbol = ""
+style = "bg:surface0"
+format = '[[ $symbol $branch ](fg:lavender bg:surface0)]($style)'
+
+[cmd_duration]
+disabled = false
+min_time = 0
+show_milliseconds = true
+style = "fg:text bg:surface0"
+format = '[$duration]($style)'
+
+[status]
+symbol = '  '
+success_symbol = '  '
+not_executable_symbol = '  '
+not_found_symbol = '  '
+map_symbol = true
+disabled = false
+style = 'fg:text bg:surface0'
+format = '[$symbol]($style)'
+
+
+[battery]
+disabled = false
+full_symbol = ''
+charging_symbol = '⚡️'
+discharging_symbol = ''
+unknown_symbol = ''
+empty_symbol = ''
+format = '[[ $symbol $percentage ](fg:text bg:crust)]($style)'
+
+[[battery.display]]
+threshold = 25
+discharging_symbol = ''
+style = 'fg:yellow bg:crust'
+
+[[battery.display]]
+threshold = 10
+discharging_symbol = ''
+style = 'fg:peach bg:crust'
+
+[[battery.display]]
+threshold = 5
+discharging_symbol = ''
+style = 'bold fg:red bg:crust'
+
+[os]
+format = '[ $symbol]($style)'
+style = 'fg:lavender bg:crust'
+disabled = false
+
+[os.symbols]
+Arch = " "
+Debian = " "
+Fedora = " "
+FreeBSD = " "
+Linux = " "
+Macos = " "
+NixOS = "󱄅 "
+Nobara = " "
+Pop = " "
+Raspbian = " "
+Ubuntu = " "
+Unknown = " "
+
+# palette tables should be last in the config ⚓️
+[palettes.catppuccin_macchiato]
+rosewater = "#f4dbd6"
+flamingo = "#f0c6c6"
+pink = "#f5bde6"
+mauve = "#c6a0f6"
+red = "#ed8796"
+maroon = "#ee99a0"
+peach = "#f5a97f"
+yellow = "#eed49f"
+green = "#a6da95"
+teal = "#8bd5ca"
+sky = "#91d7e3"
+sapphire = "#7dc4e4"
+blue = "#8aadf4"
+lavender = "#b7bdf8"
+text = "#cad3f5"
+subtext1 = "#b8c0e0"
+subtext0 = "#a5adcb"
+overlay2 = "#939ab7"
+overlay1 = "#8087a2"
+overlay0 = "#6e738d"
+surface2 = "#5b6078"
+surface1 = "#494d64"
+surface0 = "#363a4f"
+base = "#24273a"
+mantle = "#1e2030"
+crust = "#181926"
+
+[palettes.catppuccin_frappe]
+rosewater = "#f2d5cf"
+flamingo = "#eebebe"
+pink = "#f4b8e4"
+mauve = "#ca9ee6"
+red = "#e78284"
+maroon = "#ea999c"
+peach = "#ef9f76"
+yellow = "#e5c890"
+green = "#a6d189"
+teal = "#81c8be"
+sky = "#99d1db"
+sapphire = "#85c1dc"
+blue = "#8caaee"
+lavender = "#babbf1"
+text = "#c6d0f5"
+subtext1 = "#b5bfe2"
+subtext0 = "#a5adce"
+overlay2 = "#949cbb"
+overlay1 = "#838ba7"
+overlay0 = "#737994"
+surface2 = "#626880"
+surface1 = "#51576d"
+surface0 = "#414559"
+base = "#303446"
+mantle = "#292c3c"
+crust = "#232634"
+
+[palettes.catppuccin_latte]
+rosewater = "#dc8a78"
+flamingo = "#dd7878"
+pink = "#ea76cb"
+mauve = "#8839ef"
+red = "#d20f39"
+maroon = "#e64553"
+peach = "#fe640b"
+yellow = "#df8e1d"
+green = "#40a02b"
+teal = "#179299"
+sky = "#04a5e5"
+sapphire = "#209fb5"
+blue = "#1e66f5"
+lavender = "#7287fd"
+text = "#4c4f69"
+subtext1 = "#5c5f77"
+subtext0 = "#6c6f85"
+overlay2 = "#7c7f93"
+overlay1 = "#8c8fa1"
+overlay0 = "#9ca0b0"
+surface2 = "#acb0be"
+surface1 = "#bcc0cc"
+surface0 = "#ccd0da"
+base = "#eff1f5"
+mantle = "#e6e9ef"
+crust = "#dce0e8"
+
+[palettes.catppuccin_mocha]
+rosewater = "#f5e0dc"
+flamingo = "#f2cdcd"
+pink = "#f5c2e7"
+mauve = "#cba6f7"
+red = "#f38ba8"
+maroon = "#eba0ac"
+peach = "#fab387"
+yellow = "#f9e2af"
+green = "#a6e3a1"
+teal = "#94e2d5"
+sky = "#89dceb"
+sapphire = "#74c7ec"
+blue = "#89b4fa"
+lavender = "#b4befe"
+text = "#cdd6f4"
+subtext1 = "#bac2de"
+subtext0 = "#a6adc8"
+overlay2 = "#9399b2"
+overlay1 = "#7f849c"
+overlay0 = "#6c7086"
+surface2 = "#585b70"
+surface1 = "#45475a"
+surface0 = "#313244"
+base = "#1e1e2e"
+mantle = "#181825"
+crust = "#11111b"
diff --git a/config/starship/purple-1line.toml b/config/starship/purple-1line.toml
new file mode 100644
index 00000000..878a0c54
--- /dev/null
+++ b/config/starship/purple-1line.toml
@@ -0,0 +1,79 @@
+add_newline = true
+format = "$nix_shell$hostname$directory$git_branch$git_state$git_status\n$character"
+palette = "base16"
+
+[character]
+error_symbol = "[❯](red)"
+success_symbol = "[❯](#c76aeb)"
+vimcmd_symbol = "[❮](cyan)"
+
+[directory]
+style = "#c76aeb"
+
+[git_branch]
+format = "on [$symbol$branch]($style)[](#4e3593) "
+style = "fg:#c76aeb bg:#4e3593"
+symbol = "[](#4e3593) "
+
+[git_state]
+format = "([$state( $progress_current/$progress_total)]($style)) "
+style = "bright-black"
+
+[git_status]
+conflicted = ""
+deleted = ""
+format = "[[(*$conflicted$untracked$modified$staged$renamed$deleted)](218)($ahead_behind$stashed)]($style)"
+renamed = ""
+stashed = "≡"
+style = "cyan"
+
+[nix_shell]
+format = "[$symbol]($style) "
+style = ""
+symbol = "🐚"
+
+[palettes.base16]
+base00 = "#191837"
+base01 = "#4e3593"
+base02 = "#7d4fcd"
+base03 = "#da72f3"
+base04 = "#ef99ff"
+base05 = "#f1dafd"
+base06 = "#fcecf6"
+base07 = "#fbeeff"
+base08 = "#ba6eeb"
+base09 = "#c668f1"
+base0A = "#c86ae2"
+base0B = "#f243e6"
+base0C = "#c36ced"
+base0D = "#c76aeb"
+base0E = "#b274ea"
+base0F = "#ec43e7"
+base10 = "#191837"
+base11 = "#191837"
+base12 = "#ba6eeb"
+base13 = "#c86ae2"
+base14 = "#f243e6"
+base15 = "#c36ced"
+base16 = "#c76aeb"
+base17 = "#b274ea"
+black = "#191837"
+blue = "#c76aeb"
+bright-black = "#da72f3"
+bright-blue = "#c76aeb"
+bright-cyan = "#c36ced"
+bright-green = "#f243e6"
+bright-magenta = "#b274ea"
+bright-purple = "#b274ea"
+bright-red = "#ba6eeb"
+bright-white = "#fbeeff"
+bright-yellow = "#c86ae2"
+brown = "#ec43e7"
+cyan = "#c36ced"
+green = "#f243e6"
+magenta = "#b274ea"
+orange = "#c668f1"
+purple = "#b274ea"
+red = "#ba6eeb"
+white = "#f1dafd"
+yellow = "#c86ae2"
diff --git a/config/starship/ranbow.toml b/config/starship/ranbow.toml
new file mode 100644
index 00000000..7cca5ee9
--- /dev/null
+++ b/config/starship/ranbow.toml
@@ -0,0 +1,181 @@
+"$schema" = 'https://starship.rs/config-schema.json'
+
+format = """
+[](color_orange)\
+$os\
+$username\
+[](bg:color_yellow fg:color_orange)\
+$directory\
+[](fg:color_yellow bg:color_aqua)\
+$git_branch\
+$git_status\
+[](fg:color_aqua bg:color_blue)\
+$c\
+$cpp\
+$rust\
+$golang\
+$nodejs\
+$php\
+$java\
+$kotlin\
+$haskell\
+$python\
+[](fg:color_blue bg:color_bg3)\
+$docker_context\
+$conda\
+$pixi\
+[](fg:color_bg3 bg:color_bg1)\
+$time\
+[ ](fg:color_bg1)\
+$line_break$character"""
+
+palette = 'gruvbox_dark'
+
+[palettes.gruvbox_dark]
+color_fg0 = '#fbf1c7'
+color_bg1 = '#3c3836'
+color_bg3 = '#665c54'
+color_blue = '#458588'
+color_aqua = '#689d6a'
+color_green = '#98971a'
+color_orange = '#d65d0e'
+color_purple = '#b16286'
+color_red = '#cc241d'
+color_yellow = '#d79921'
+
+[os]
+disabled = false
+style = "bg:color_orange fg:color_fg0"
+
+[os.symbols]
+Windows = "󰍲"
+Ubuntu = "󰕈"
+SUSE = ""
+Raspbian = "󰐿"
+Mint = "󰣭"
+Macos = "󰀵"
+Manjaro = ""
+Linux = "󰌽"
+Gentoo = "󰣨"
+Fedora = "󰣛"
+Alpine = ""
+Amazon = ""
+Android = ""
+AOSC = ""
+Arch = "󰣇"
+Artix = "󰣇"
+EndeavourOS = ""
+CentOS = ""
+Debian = "󰣚"
+Redhat = "󱄛"
+RedHatEnterprise = "󱄛"
+Pop = ""
+
+[username]
+show_always = true
+style_user = "bg:color_orange fg:color_fg0"
+style_root = "bg:color_orange fg:color_fg0"
+format = '[ $user ]($style)'
+
+[directory]
+style = "fg:color_fg0 bg:color_yellow"
+format = "[ $path ]($style)"
+truncation_length = 3
+truncation_symbol = "…/"
+
+[directory.substitutions]
+"Documents" = "󰈙 "
+"Downloads" = " "
+"Music" = "󰝚 "
+"Pictures" = " "
+"Developer" = "󰲋 "
+
+[git_branch]
+symbol = ""
+style = "bg:color_aqua"
+format = '[[ $symbol $branch ](fg:color_fg0 bg:color_aqua)]($style)'
+
+[git_status]
+style = "bg:color_aqua"
+format = '[[($all_status$ahead_behind )](fg:color_fg0 bg:color_aqua)]($style)'
+
+[nodejs]
+symbol = ""
+style = "bg:color_blue"
+format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
+
+[c]
+symbol = " "
+style = "bg:color_blue"
+format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
+
+[cpp]
+symbol = " "
+style = "bg:color_blue"
+format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
+
+[rust]
+symbol = ""
+style = "bg:color_blue"
+format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
+
+[golang]
+symbol = ""
+style = "bg:color_blue"
+format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
+
+[php]
+symbol = ""
+style = "bg:color_blue"
+format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
+
+[java]
+symbol = ""
+style = "bg:color_blue"
+format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
+
+[kotlin]
+symbol = ""
+style = "bg:color_blue"
+format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
+
+[haskell]
+symbol = ""
+style = "bg:color_blue"
+format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
+
+[python]
+symbol = ""
+style = "bg:color_blue"
+format = '[[ $symbol( $version) ](fg:color_fg0 bg:color_blue)]($style)'
+
+[docker_context]
+symbol = ""
+style = "bg:color_bg3"
+format = '[[ $symbol( $context) ](fg:#83a598 bg:color_bg3)]($style)'
+
+[conda]
+style = "bg:color_bg3"
+format = '[[ $symbol( $environment) ](fg:#83a598 bg:color_bg3)]($style)'
+
+[pixi]
+style = "bg:color_bg3"
+format = '[[ $symbol( $version)( $environment) ](fg:color_fg0 bg:color_bg3)]($style)'
+
+[time]
+disabled = false
+time_format = "%R"
+style = "bg:color_bg1"
+format = '[[  $time ](fg:color_fg0 bg:color_bg1)]($style)'
+
+[line_break]
+disabled = false
+
+[character]
+disabled = false
+success_symbol = '[](bold fg:color_green)'
+error_symbol = '[](bold fg:color_red)'
+vimcmd_symbol = '[](bold fg:color_green)'
+vimcmd_replace_one_symbol = '[](bold fg:color_purple)'
+vimcmd_replace_symbol = '[](bold fg:color_purple)'
+vimcmd_visual_symbol = '[](bold fg:color_yellow)'
diff --git a/config/starship/simple-prompt.toml b/config/starship/simple-prompt.toml
new file mode 100644
index 00000000..bf659198
--- /dev/null
+++ b/config/starship/simple-prompt.toml
@@ -0,0 +1,187 @@
+[character]
+success_symbol = "[>](bold green)"
+error_symbol = "[x](bold red)"
+vimcmd_symbol = "[<](bold green)"
+
+[git_commit]
+tag_symbol = " tag "
+
+[git_status]
+ahead = ">"
+behind = "<"
+diverged = "<>"
+renamed = "r"
+deleted = "x"
+
+[aws]
+symbol = "aws "
+
+[bun]
+symbol = "bun "
+
+[c]
+symbol = "C "
+
+[cobol]
+symbol = "cobol "
+
+[conda]
+symbol = "conda "
+
+[crystal]
+symbol = "cr "
+
+[cmake]
+symbol = "cmake "
+
+[daml]
+symbol = "daml "
+
+[dart]
+symbol = "dart "
+
+[deno]
+symbol = "deno "
+
+[dotnet]
+symbol = ".NET "
+
+[directory]
+read_only = " ro"
+
+[docker_context]
+symbol = "docker "
+
+[elixir]
+symbol = "exs "
+
+[elm]
+symbol = "elm "
+
+[git_branch]
+symbol = "git "
+
+[golang]
+symbol = "go "
+
+[guix_shell]
+symbol = "guix "
+
+[hg_branch]
+symbol = "hg "
+
+[java]
+symbol = "java "
+
+[julia]
+symbol = "jl "
+
+[kotlin]
+symbol = "kt "
+
+[lua]
+symbol = "lua "
+
+[nodejs]
+symbol = "nodejs "
+
+[memory_usage]
+symbol = "memory "
+
+[meson]
+symbol = "meson "
+
+[nim]
+symbol = "nim "
+
+[nix_shell]
+symbol = "nix "
+
+[ocaml]
+symbol = "ml "
+
+[opa]
+symbol = "opa "
+
+[os.symbols]
+Alpine = "alp "
+Amazon = "amz "
+Android = "andr "
+Arch = "rch "
+CentOS = "cent "
+Debian = "deb "
+DragonFly = "dfbsd "
+Emscripten = "emsc "
+EndeavourOS = "ndev "
+Fedora = "fed "
+FreeBSD = "fbsd "
+Garuda = "garu "
+Gentoo = "gent "
+HardenedBSD = "hbsd "
+Illumos = "lum "
+Linux = "lnx "
+Macos = "mac "
+Manjaro = "mjo "
+Mariner = "mrn "
+MidnightBSD = "mid "
+Mint = "mint "
+NetBSD = "nbsd "
+NixOS = "nix "
+OpenBSD = "obsd "
+openSUSE = "osuse "
+OracleLinux = "orac "
+Pop = "pop "
+Raspbian = "rasp "
+Redhat = "rhl "
+RedHatEnterprise = "rhel "
+Redox = "redox "
+Solus = "sol "
+SUSE = "suse "
+Ubuntu = "ubnt "
+Unknown = "unk "
+Windows = "win "
+
+[package]
+symbol = "pkg "
+
+[perl]
+symbol = "pl "
+
+[php]
+symbol = "php "
+
+[pulumi]
+symbol = "pulumi "
+
+[purescript]
+symbol = "purs "
+
+[python]
+symbol = "py "
+
+[raku]
+symbol = "raku "
+
+[ruby]
+symbol = "rb "
+
+[rust]
+symbol = "rs "
+
+[scala]
+symbol = "scala "
+
+[spack]
+symbol = "spack "
+
+[sudo]
+symbol = "sudo "
+
+[swift]
+symbol = "swift "
+
+[terraform]
+symbol = "terraform "
+
+[zig]
+symbol = "zig "
diff --git a/config/starship/vill-minimalist.toml b/config/starship/vill-minimalist.toml
new file mode 100644
index 00000000..509b861b
--- /dev/null
+++ b/config/starship/vill-minimalist.toml
@@ -0,0 +1,405 @@
+# "$schema" = 'https://starship.rs/config-schema.json'
+add_newline = false
+format = """\
+ 󰣇 \
+ $directory\
+ $git_branch$git_commit$git_state $git_status\
+ $character\n
+"""
+right_format = """
+$singularity\
+$kubernetes\
+$vcsh\
+$hg_branch\
+$pijul_channel\
+$c\
+$cmake\
+$cobol\
+$daml\
+$dart\
+$deno\
+$dotnet\
+$elixir\
+$elm\
+$erlang\
+$fennel\
+$golang\
+$guix_shell\
+$haskell\
+$haxe\
+$helm\
+$java\
+$julia\
+$kotlin\
+$gradle\
+$lua\
+$nim\
+$nodejs\
+$ocaml\
+$opa\
+$perl\
+$pulumi\
+$purescript\
+$python\
+$raku\
+$rlang\
+$red\
+$ruby\
+$rust\
+$scala\
+$solidity\
+$swift\
+$terraform\
+$vlang\
+$vagrant\
+$zig\
+$buf\
+$conda\
+$meson\
+$spack\
+$memory_usage\
+$aws\
+$gcloud\
+$openstack\
+$azure\
+$cpp\
+$kotlin\
+$ocaml\
+$pixi\
+$rlang\
+$php\
+$crystal\
+$custom\
+$status\
+$os\
+$time"""
+
+continuation_prompt = '▶▶ '
+
+
+# style_choices:
+# bold
+# italic
+# underline
+# dimmed
+# inverted
+# blink
+# hidden
+# strikethrough
+# bg:<color>
+# fg:<color>
+# <color>
+# none
+
+#NOTE: you can customize the symbols, e.g:
+# [character]
+# success_symbol = "[  ]($bold fg:#f8f8f2)"
+# error_symbol = "[ ➤ ]($bold fg:#fb4934)"
+
+[directory]
+disabled = false
+format = "[$path](bold fg:#8be9fd)"
+truncate_to_repo = false
+# home_symbol = ""
+
+[git_branch]
+format = " [  $branch](fg:#9198a1)"
+
+[git_status]
+ahead = '⇡${count}'
+behind = '⇣${count}'
+diverged = '⇕⇡${ahead_count}⇣${behind_count}'
+format = '[[( $all_status$ahead_behind )](fg:#769ff0)]($style)'
+style = "bg:#394260"
+
+
+[time]
+disabled = false
+format = '[[  $time ](fg:#a0a9cb )]($style)'
+time_format = "%R" # Hour:Minute Format
+
+[deno]
+format = " [deno](italic) [ ](green bold)"
+version_format = "${raw}"
+
+[lua]
+format = " [lua](italic) [${symbol}]($style)"
+style = "bold bright-yellow"
+symbol = "⨀ "
+version_format = "${raw}"
+
+[nodejs]
+detect_extensions = []
+detect_files = ["package-lock.json", "yarn.lock"]
+detect_folders = ["node_modules"]
+format = "[ ](bold bright-green)"
+version_format = "${raw}"
+
+[python]
+format = "[${symbol}(${virtualenv}) ${version}]($style)"
+style = "bold bright-yellow"
+symbol = "[ ](bold bright-blue)"
+version_format = "${raw}"
+
+[ruby]
+format = " [rb](italic) [${symbol}]($style)"
+style = "bold red"
+symbol = " "
+version_format = "${raw}"
+
+[rust]
+style = "bold bright-red"
+format = " rs(italic) $symbol($style)"
+symbol = " "
+
+[swift]
+format = " [sw](italic) [${symbol}]($style)"
+style = "bold bright-red"
+symbol = " "
+version_format = "${raw}"
+
+[aws]
+disabled = true
+format = " [aws](italic) [$symbol $profile $region]($style)"
+style = "bold blue"
+symbol = " "
+
+[buf]
+style = "bold bright-red"
+format = " [buf](italic) [$symbol $buf_version]($style)"
+symbol = "■ "
+
+[c]
+style = "bold bright-cyan"
+format = " [$symbol(-$name)]($style)"
+symbol = "ℂ "
+
+[cpp]
+style = "bold bright-cyan"
+format = " [cpp](italic) [$symbol]($style)"
+symbol = " "
+
+[kotlin]
+format = " [kotlin](italic) [$symbol]($style)"
+style = "bold bright-red"
+symbol = " "
+
+[ocaml]
+format = " [ocaml](italic) [$symbol]($style)"
+style = "bold bright-yellow"
+symbol = " "
+
+[perl]
+format = " [perl](italic) [$symbol]($style)"
+style = "bold bright-cyan"
+symbol = " "
+
+[php]
+format = " [php](italic) [$symbol]($style)"
+style = "bold bright-red"
+symbol = " "
+
+[pixi]
+format = " [pixi](italic) [$symbol]($style)"
+style = "bold bright-yellow"
+symbol = "pixi "
+
+[rlang]
+format = " [rlang](italic) [$symbol]($style)"
+style = "bold bright-cyan"
+symbol = " "
+
+[meson]
+format = " [meson](italic) [$symbol]($style)"
+style = "bold bright-red"
+symbol = "meson "
+
+[conda]
+style = "bold bright-red"
+format = " conda [$symbol$environment]($style)"
+symbol = "◯ "
+
+[dart]
+style = "bold bright-cyan"
+format = " dart [$symbol]($style)"
+symbol = " "
+
+
+[elixir]
+style = "bold bright-yellow"
+format = " exs [$symbol OTP $otp_version ]($style)"
+symbol = " "
+
+[elm]
+style = "bold bright-red"
+format = " elm [$symbol]($style)"
+symbol = "◩ "
+
+[golang]
+style = "bold bright-blue"
+format = " go [$symbol]($style)"
+symbol = "∩ "
+
+[haskell]
+style = "bold bright-yellow"
+format = " hs [$symbol]($style)"
+symbol = "❯λ "
+
+[java]
+style = "bold bright-red"
+format = " java [${symbol}]($style)"
+symbol = " "
+
+[julia]
+style = "bold bright-cyan"
+format = " jl [$symbol]($style)"
+symbol = "◎ "
+
+[memory_usage]
+style = "bold bright-cyan"
+format = " mem [${ram}( ${swap})]($style)"
+symbol = "▪▫▪ "
+
+[nim]
+style = "bold bright-yellow"
+format = " nim [$symbol]($style)"
+symbol = "▴▲▴ "
+
+[nix_shell]
+format = '[$symbol nix⎪$state⎪]($style) [$name](italic dimmed white)'
+impure_msg = '[⌽](bold dimmed red)'
+pure_msg = '[⌾](bold dimmed green)'
+style = 'bold italic dimmed blue'
+symbol = ' '
+unknown_msg = '[◌](bold dimmed ellow)'
+
+[spack]
+style = "bold bright-yellow"
+format = " spack [$symbol$environment]($style)"
+symbol = "◇ "
+
+
+[zig]
+style = "bold bright-yellow"
+format = " zig [$symbol]($style)"
+symbol = " "
+
+
+[scala]
+format = " scala [$symbol]($style)"
+symbol = " "
+
+[singularity]
+style = "bold bright-yellow"
+format = " [singularity](italic) [$symbol]($style)"
+symbol = "singularity "
+
+[kubernetes]
+style = "bold bright-cyan"
+format = " [kubernetes](italic) [$symbol]($style)"
+symbol = " "
+
+[vcsh]
+style = "bold bright-red"
+format = " [vcsh](italic) [$symbol]($style)"
+symbol = "vcsh "
+
+[cobol]
+style = "bold bright-yellow"
+format = " [cobol](italic) [$symbol]($style)"
+symbol = "cobol "
+
+[daml]
+style = "bold bright-cyan"
+format = " [daml](italic) [$symbol]($style)"
+symbol = "daml "
+
+[dotnet]
+style = "bold bright-red"
+format = " [dotnet](italic) [$symbol]($style)"
+symbol = ".NET "
+
+[erlang]
+style = "bold bright-yellow"
+format = " [erlang](italic) [$symbol]($style)"
+symbol = " "
+
+[fennel]
+style = "bold bright-cyan"
+format = " [fennel](italic) [$symbol]($style)"
+symbol = " "
+
+[haxe]
+style = "bold bright-red"
+format = " [haxe](italic) [$symbol]($style)"
+symbol = " "
+
+[helm]
+style = "bold bright-yellow"
+format = " [helm](italic) [$symbol]($style)"
+symbol = "helm "
+
+[opa]
+style = "bold bright-cyan"
+format = " [opa](italic) [$symbol]($style)"
+symbol = "opa "
+
+[pulumi]
+format = " [pulumi](italic) [$symbol]($style)"
+style = "bold bright-red"
+symbol = "pulumi "
+
+[purescript]
+style = "bold bright-yellow"
+format = " [purescript](italic) [$symbol]($style)"
+symbol = " "
+
+[raku]
+style = "bold bright-cyan"
+format = " [raku](italic) [$symbol]($style)"
+symbol = "raku "
+
+[red]
+style = "bold bright-red"
+format = " [red](italic) [$symbol]($style)"
+symbol = "red "
+
+[solidity]
+style = "bold bright-yellow"
+format = " [solidity](italic) [$symbol]($style)"
+symbol = " "
+
+[terraform]
+style = "bold bright-cyan"
+format = " [terraform](italic) [$symbol]($style)"
+symbol = "terraform "
+
+[vlang]
+format = " [vlang](italic) [$symbol]($style)"
+style = "bold bright-red"
+symbol = "vlang "
+
+[vagrant]
+format = " [vagrant](italic) [$symbol]($style)"
+style = "bold bright-yellow"
+symbol = "vagrant "
+
+[gcloud]
+format = " [gcloud](italic) [$symbol]($style)"
+style = "bold bright-cyan"
+symbol = "gcloud "
+
+[openstack]
+format = " [openstack](italic) [$symbol]($style)"
+style = "bold bright-red"
+symbol = "openstack "
+
+[azure]
+format = " [azure](italic) [$symbol]($style)"
+style = "bold bright-yellow"
+symbol = " "
+
+[crystal]
+format = " [crystal](italic) [$symbol]($style)"
+style = "bold bright-cyan"
+symbol = " "
diff --git a/config/systemd/user/xdg-desktop-portal.service.d/override.conf b/config/systemd/user/xdg-desktop-portal.service.d/override.conf
new file mode 100644
index 00000000..22ce3905
--- /dev/null
+++ b/config/systemd/user/xdg-desktop-portal.service.d/override.conf
@@ -0,0 +1,4 @@
+[Unit]
+Requisite=
+Requires=graphical-session.target
+After=graphical-session.target
diff --git a/config/waybar/ModulesWorkspaces b/config/waybar/ModulesWorkspaces
index 15f5da5b..fe75ea19 100644
--- a/config/waybar/ModulesWorkspaces
+++ b/config/waybar/ModulesWorkspaces
@@ -198,6 +198,7 @@
"class<kitty-dropterm>": " ",
"class<com.mitchellh.ghostty>": " ",
"class<org.wezfurlong.wezterm>": " ",
+ "class<waveterm>": " 🌊",
"class<play.mii.Boxxy>": " ",
"class<Warp|warp|dev.warp.Warp|warp-terminal>": "󰰭 ",
diff --git a/config/waybar/style/0-VERTICAL-Catpuccin-Mocha.css b/config/waybar/style/0-VERTICAL-Catpuccin-Mocha.css
deleted file mode 100644
index a72b2694..00000000
--- a/config/waybar/style/0-VERTICAL-Catpuccin-Mocha.css
+++ /dev/null
@@ -1,267 +0,0 @@
-/* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */
-/* Vertical Catpuccin Mocha */
-/* As stated on title, best style for vertical layout waybar config */
-
-* {
- font-family: "JetBrainsMono Nerd Font";
- font-weight: bold;
- min-height: 0;
- /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
- /* NOTE: Waybar v14+ ignores % font-size values */
- font-size: 99%;
- font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
-}
-
-@import "../waybar/style/catppuccin-themes/mocha.css";
-
-window#waybar {
- background-color: @base;
- border-radius: 5px;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
-}
-
-tooltip {
- background: @base;
- opacity: 1;
- border-radius: 10px;
- border-width: 2px;
- border-style: solid;
- border-color: @sapphire;
-}
-
-/* Waybar scaling: adjust tooltip label font-size to scale the bar */
-tooltip label {
- color: @blue;
- /* Waybar scaling: adjust tooltip label font-size to scale the bar */
- font-size: 14px;
-}
-
-#taskbar button,
-#workspaces button {
- color: @surface2;
- background-color: transparent;
- padding-top: 4px;
- padding-bottom: 4px;
- padding-right: 6px;
- padding-left: 4px;
-}
-
-#taskbar button.active,
-#workspaces button.active {
- color: @maroon;
-}
-
-#taskbar button.focused,
-#workspaces button.focused {
- color: @rosewater;
- background: transparent;
- border-radius: 15px;
-}
-
-#workspaces button.urgent {
- color: #11111b;
- background: transparent;
- border-radius: 15px;
-}
-
-#taskbar button:hover,
-#workspaces button:hover {
- background: transparent;
- color: @flamingo;
- border-radius: 15px;
-}
-
-#backlight,
-#backlight-slider,
-#battery,
-#bluetooth,
-#clock,
-#cpu,
-#disk,
-#idle_inhibitor,
-#keyboard-state,
-#memory,
-#mode,
-#mpris,
-#network,
-#power-profiles-daemon,
-#pulseaudio,
-#pulseaudio-slider,
-#taskbar button,
-#taskbar,
-#temperature,
-#tray,
-#window,
-#wireplumber,
-#workspaces,
-#custom-backlight,
-#custom-nightlight,
-#custom-browser,
-#custom-cava_mviz,
-#custom-cycle_wall,
-#custom-dot_update,
-#custom-file_manager,
-#custom-keybinds,
-#custom-keyboard,
-#custom-light_dark,
-#custom-nightlight,
-#custom-lock,
-#custom-hint,
-#custom-hypridle,
-#custom-hypr_layout,
-#custom-menu,
-#custom-playerctl,
-#custom-power_vertical,
-#custom-power,
-#custom-quit,
-#custom-reboot,
-#custom-settings,
-#custom-spotify,
-#custom-swaync,
-#custom-tty,
-#custom-updater,
-#custom-hyprpicker,
-#custom-weather,
-#custom-weather2,
-#custom-weather.clearNight,
-#custom-weather.cloudyFoggyDay,
-#custom-weather.cloudyFoggyNight,
-#custom-weather.default,
-#custom-weather.rainyDay,
-#custom-weather.rainyNight,
-#custom-weather.severe,
-#custom-weather.showyIcyDay,
-#custom-weather.snowyIcyNight,
-#custom-weather.sunnyDay {
- opacity: 1;
- padding-top: 4px;
- padding-bottom: 4px;
- padding-right: 6px;
- padding-left: 6px;
-}
-
-#idle_inhibitor {
- color: @pink;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
-}
-
-#mpris {
- color: @rosewater;
-}
-
-#battery {
- color: #a6e3a1;
- padding-left: 15px;
- border-radius: 15px 0 0 15px;
-}
-
-@keyframes blink {
- to {
- background-color: #ffffff;
- color: #333333;
- }
-}
-
-#battery.critical:not(.charging) {
- color: #f53c3c;
- animation-name: blink;
- animation-duration: 0.5s;
- animation-timing-function: linear;
- animation-iteration-count: infinite;
- animation-direction: alternate;
-}
-
-#custom-lock,
-#custom-power {
- color: @red;
- border-radius: 15px;
- font-weight: bolder;
- padding-left: 1px;
-}
-
-#network {
- background-color: transparent;
- color: @mauve;
-}
-
-#backlight {
- color: @flamingo;
-}
-
-
-#custom-weather {
- color: @green;
- border-radius: 15px;
- background-color: transparent;
-}
-
-#custom-menu {
- color: #89b4fa;
-}
-
-#pulseaudio {
- background-color: transparent;
- color: @blue;
-}
-
-#clock,
-#clock-calender {
- color: @sapphire;
-}
-
-#backlight-slider slider,
-#pulseaudio-slider slider {
- min-height: 7px;
- min-width: 15px;
- opacity: 0;
- background-color: @text;
- border-radius: 3px;
- box-shadow: 1px 5px 6px 1px #272727;
-}
-
-#backlight-slider trough,
-#pulseaudio-slider trough {
- min-height: 100px;
- min-width: 7px;
- border-radius: 5px;
- background-color: @surface0;
-}
-
-window#waybar.bottombar #backlight-slider trough,
-window#waybar.bottombar #pulseaudio-slider trough {
- min-height: 7px;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
-}
-
-#backlight-slider highlight,
-#pulseaudio-slider highlight {
- min-width: 5px;
- border-radius: 5px;
- background-color: @blue;
-}
-
-/* --- tray readability override (global) --- */
-#tray > *,
-#tray > .passive,
-#tray > .active,
-#tray > .needs-attention {
- background: rgba(137, 180, 250, 0.55);
- border-radius: 8px;
- border: 1px solid rgba(17, 17, 27, 0.35);
- margin-left: 1px;
- margin-right: 1px;
- padding-left: 2px;
- padding-right: 2px;
- color: rgba(17, 17, 27, 0.98);
- -gtk-icon-effect: none;
-}
-
-#tray image {
- background: transparent;
- color: rgba(17, 17, 27, 0.98);
- -gtk-icon-style: symbolic;
- -gtk-icon-effect: none;
- opacity: 1;
-}
diff --git a/config/waybar/style/0-VERTICAL-Golden-Noir.css b/config/waybar/style/0-VERTICAL-Golden-Noir.css
deleted file mode 100644
index 45a6fe5a..00000000
--- a/config/waybar/style/0-VERTICAL-Golden-Noir.css
+++ /dev/null
@@ -1,251 +0,0 @@
-/* ----------- 💫 https://github.com/LinuxBeginnings 💫 -------- */
-/* ...............Golden Noir................ */
-/* --- 👍 designed by https://github.com/Krautt 👍 --- */
-
-* {
- font-family: "JetBrainsMono Nerd Font";
- font-weight: bold;
- min-height: 0;
- /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
- /* NOTE: Waybar v14+ ignores % font-size values */
- font-size: 99%;
- font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
-}
-
-window#waybar {
- background: #040406;
- border-radius: 30px;
- color: #cba6f7;
-
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
-}
-
-window#waybar.hidden {
- opacity: 0.5;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
-}
-
-tooltip {
- background: #1e1e2e;
- border-radius: 10px;
- border-width: 2px;
- border-style: solid;
- border-color: #11111b;
- color: #ffd700;
-}
-
-/*-----module groups----*/
-.modules-left,
-.modules-right {
- padding-top: 2px;
- padding-bottom: 2px;
- padding-right: 4px;
- padding-left: 4px;
-
-}
-
-.modules-center {
- border-top: 1px solid #ffd700;
- border-bottom: 1px solid #ffd700;
- border-radius: 20px;
- padding-top: 2px;
- padding-bottom: 2px;
- padding-right: 4px;
- padding-left: 4px;
-}
-
-#taskbar button,
-#workspaces button {
- color: #6E6A86;
- box-shadow: none;
- text-shadow: none;
- padding: 0px;
- border-radius: 9px;
- padding-left: 4px;
- padding-right: 4px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.682);
-}
-
-#taskbar button.active,
-#workspaces button.active {
- color: #ffd700;
- border-radius: 50%;
- background-color: black;
- border-radius: 15px 15px 15px 15px;
- padding-left: 5px;
- padding-right: 5px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
-}
-
-#workspaces button.focused {
- color: #d8dee9;
-}
-
-#workspaces button.urgent {
- color: #11111b;
- border-radius: 10px;
-}
-
-#taskbar button:hover,
-#workspaces button:hover {
- color: #ffd700;
- border-radius: 15px;
- padding-left: 2px;
- padding-right: 2px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
-}
-
-#backlight,
-#backlight-slider,
-#battery,
-#bluetooth,
-#clock,
-#cpu,
-#disk,
-#idle_inhibitor,
-#keyboard-state,
-#memory,
-#mode,
-#mpris,
-#network,
-#power-profiles-daemon,
-#pulseaudio,
-#pulseaudio-slider,
-#taskbar,
-#temperature,
-#tray,
-#window,
-#wireplumber,
-#workspaces,
-#custom-backlight,
-#custom-nightlight,
-#custom-browser,
-#custom-cava_mviz,
-#custom-cycle_wall,
-#custom-dot_update,
-#custom-file_manager,
-#custom-keybinds,
-#custom-keyboard,
-#custom-light_dark,
-#custom-nightlight,
-#custom-lock,
-#custom-hint,
-#custom-hypridle,
-#custom-hypr_layout,
-#custom-menu,
-#custom-playerctl,
-#custom-power_vertical,
-#custom-power,
-#custom-quit,
-#custom-reboot,
-#custom-settings,
-#custom-spotify,
-#custom-swaync,
-#custom-tty,
-#custom-updater,
-#custom-hyprpicker,
-#custom-weather,
-#custom-weather2,
-#custom-weather.clearNight,
-#custom-weather.cloudyFoggyDay,
-#custom-weather.cloudyFoggyNight,
-#custom-weather.default,
-#custom-weather.rainyDay,
-#custom-weather.rainyNight,
-#custom-weather.severe,
-#custom-weather.showyIcyDay,
-#custom-weather.snowyIcyNight,
-#custom-weather.sunnyDay {
- color: #e5d9f5;
- padding-top: 5px;
- padding-bottom: 5px;
- padding-right: 5px;
- padding-left: 5px;
-}
-
-#temperature.critical {
- background-color: #ff0000;
-}
-
-@keyframes blink {
- to {
- color: #000000;
- }
-}
-
-/*-----Indicators----*/
-#custom-hypridle.notactive,
-#idle_inhibitor.activated {
- color: #39FF14;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
-}
-
-#battery.critical:not(.charging) {
- color: #f53c3c;
- animation-name: blink;
- animation-duration: 3.0s;
- animation-timing-function: steps(12);
- animation-iteration-count: infinite;
- animation-direction: alternate;
-}
-
-#backlight-slider slider,
-#pulseaudio-slider slider {
- min-height: 7px;
- min-width: 15px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
-}
-
-#backlight-slider trough,
-#pulseaudio-slider trough {
- min-height: 100px;
- min-width: 7px;
- border-radius: 5px;
- background-color: #22252a;
-}
-
-window#waybar.bottombar #backlight-slider trough,
-window#waybar.bottombar #pulseaudio-slider trough {
- min-height: 7px;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
-}
-
-#backlight-slider highlight,
-#pulseaudio-slider highlight {
- min-width: 5px;
- border-radius: 5px;
- background-color: #ba5663;
-}
-
-/* --- tray readability override (global) --- */
-#tray > *,
-#tray > .passive,
-#tray > .active,
-#tray > .needs-attention {
- background: rgba(137, 180, 250, 0.55);
- border-radius: 8px;
- border: 1px solid rgba(17, 17, 27, 0.35);
- margin-left: 1px;
- margin-right: 1px;
- padding-left: 2px;
- padding-right: 2px;
- color: rgba(17, 17, 27, 0.98);
- -gtk-icon-effect: none;
-}
-
-#tray image {
- background: transparent;
- color: rgba(17, 17, 27, 0.98);
- -gtk-icon-style: symbolic;
- -gtk-icon-effect: none;
- opacity: 1;
-}
diff --git a/config/waybar/style/0-VERTICAL-Oglo-Chicklets.css b/config/waybar/style/0-VERTICAL-Oglo-Chicklets.css
deleted file mode 100644
index 90b287fd..00000000
--- a/config/waybar/style/0-VERTICAL-Oglo-Chicklets.css
+++ /dev/null
@@ -1,448 +0,0 @@
-/* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */
-/* Oglo Chicklets */
-
-* {
- font-family: "JetBrainsMono Nerd Font", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
- /* NOTE: Waybar v14+ ignores % font-size values */
- font-size: 99%;
- font-weight: bold;
-}
-
-window#waybar {
- background-color: #232a2e;
- border-bottom: 8px solid #1d2327;
- color: #d3c6aa;
- transition-property: background-color;
- transition-duration: .5s;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
-}
-
-window#waybar.hidden {
- opacity: 0.2;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
-}
-
-/*
-window#waybar.empty {
- background-color: transparent;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
-}
-window#waybar.solo {
- background-color: #FFFFFF;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
-}
-*/
-
-button {
- all: unset;
- background-color: #778f52;
- color: #2d353b;
- border: none;
- border-bottom: 8px solid #5d743e;
- border-radius: 5px;
- padding-left: 5px;
- padding-right: 5px;
- transition: transform 0.1s ease-in-out;
-}
-
-button:hover {
- background: inherit;
- background-color: #92ab6c;
- border-bottom: 8px solid #788f57;
-}
-
-button.active {
- background: inherit;
- background-color: #a5be7e;
- border-bottom: 8px solid #8aa168;
-}
-
-#mode {
- background-color: #64727D;
- border-bottom: 3px solid #ffffff;
-}
-
-#backlight,
-#backlight-slider,
-#battery,
-#bluetooth,
-#clock,
-#cpu,
-#disk,
-#idle_inhibitor,
-#keyboard-state,
-#memory,
-#mode,
-#mpris,
-#network,
-#power-profiles-daemon,
-#pulseaudio,
-#pulseaudio-slider,
-#taskbar,
-#temperature,
-#tray,
-#window,
-#wireplumber,
-#workspaces,
-#custom-backlight,
-#custom-nightlight,
-#custom-browser,
-#custom-cava_mviz,
-#custom-cycle_wall,
-#custom-dot_update,
-#custom-file_manager,
-#custom-keybinds,
-#custom-keyboard,
-#custom-light_dark,
-#custom-nightlight,
-#custom-lock,
-#custom-hint,
-#custom-hypridle,
-#custom-hypr_layout,
-#custom-menu,
-#custom-playerctl,
-#custom-power_vertical,
-#custom-power,
-#custom-quit,
-#custom-reboot,
-#custom-settings,
-#custom-spotify,
-#custom-swaync,
-#custom-tty,
-#custom-updater,
-#custom-hyprpicker,
-#custom-weather,
-#custom-weather2,
-#custom-weather.clearNight,
-#custom-weather.cloudyFoggyDay,
-#custom-weather.cloudyFoggyNight,
-#custom-weather.default,
-#custom-weather.rainyDay,
-#custom-weather.rainyNight,
-#custom-weather.severe,
-#custom-weather.showyIcyDay,
-#custom-weather.snowyIcyNight,
-#custom-weather.sunnyDay{
- color: #ffffff;
- padding-top: 2px;
- padding-bottom: 2px;
- border-radius: 5px;
- padding-left: 5px;
- padding-right: 5px;
-}
-
-#window,
-#workspaces {
- margin: 5px;
-}
-
-/* If workspaces is the leftmost module, omit left margin */
-.modules-left > widget:first-child > #workspaces {
- margin-left: 0;
-}
-
-/* If workspaces is the rightmost module, omit right margin */
-.modules-right > widget:last-child > #workspaces {
- margin-right: 0;
-}
-
-#window {
- background-color: #343f44;
- color: #d3c6aa;
- border-bottom: 8px solid #2b3539;
-}
-
-#custom-swaync {
- background-color: #778f52;
- color: #2d353b;
- border-bottom: 8px solid #5d743e;
-}
-
-#custom-menu {
- background-color: #778f52;
- color: #2d353b;
- border-bottom: 8px solid #5d743e;
-}
-
-#custom-power {
- background-color: #ee606a;
- color: #2d353b;
- border-bottom: 8px solid #ca4853;
- padding-left: 5px;
-}
-
-#custom-power_vertical{
- background-color: #ee606a;
- color: #2d353b;
- border-bottom: 8px solid #ca4853;
-}
-
-#clock {
- background-color: #96a84c;
- color: #2d353b;
- border-bottom: 8px solid #7a8c37;
-}
-
-#battery {
- background-color: #3a998f;
- color: #2d353b;
- border-bottom: 8px solid #227d74;
-}
-
-@keyframes blink {
- to {
- background-color: #ffffff;
- color: #000000;
- }
-}
-
-#battery.critical:not(.charging) {
- background-color: #ee606a;
- color: #2d353b;
- border-bottom: 8px solid #ca4853;
- animation-name: blink;
- animation-duration: 3.0s;
- animation-timing-function: steps(12);
- animation-iteration-count: infinite;
- animation-direction: alternate;
-}
-
-label:focus {
- background-color: #000000;
-}
-
-#cpu {
- background-color: #778f52;
- color: #2d353b;
- border-bottom: 8px solid #5d743e;
-}
-
-#memory {
- background-color: #d980ad;
- color: #2d353b;
- border-bottom: 8px solid #b86790;
-}
-
-#disk {
- background-color: #964B00;
- border-bottom: 8px solid #793300;
-}
-
-#custom-lock,
-#custom-light_dark,
-#custom-nightlight,
-#backlight {
- background-color: #64b6ac;
- color: #2d353b;
- border-bottom: 8px solid #4f9990;
- padding-left: 5px;
-}
-
-#network {
- background-color: #2980b9;
-}
-
-#network.disconnected {
- background-color: #f53c3c;
-}
-
-#pulseaudio {
- background-color: #d8ac47;
- color: #2d353b;
- border-bottom: 8px solid #b78f30;
-}
-
-#pulseaudio.muted {
- background-color: #90b1b1;
- color: #2a5c45;
-}
-
-#wireplumber {
- background-color: #fff0f5;
- color: #000000;
-}
-
-#wireplumber.muted {
- background-color: #f53c3c;
-}
-
-#custom-media {
- background-color: #66cc99;
- color: #2a5c45;
- min-width: 100px;
-}
-
-#custom-media.custom-spotify {
- background-color: #66cc99;
-}
-
-#custom-media.custom-vlc {
- background-color: #ffa000;
-}
-
-#temperature {
- background-color: #f0932b;
- border-bottom: 8px solid #b78f30;
-}
-
-#temperature.critical {
- background-color: #eb4d4b;
-}
-
-#tray {
- background-color: #e67f51;
- color: #2d353b;;
- border-bottom: 8px solid #c3653b;
-}
-
-#tray > .passive {
- -gtk-icon-effect: dim;
-}
-
-#tray > .needs-attention {
- -gtk-icon-effect: highlight;
- background-color: #eb4d4b;
-}
-
-#idle_inhibitor {
- background-color: #2d3436;
- border-bottom: 8px solid #7a8c37;
-}
-
-#idle_inhibitor.activated {
- background-color: #ecf0f1;
- border-bottom: 8px solid #7a8c37;
- color: #2d3436;
-}
-
-#mpd {
- background-color: #66cc99;
- color: #2a5c45;
-}
-
-#mpd.disconnected {
- background-color: #f53c3c;
-}
-
-#mpd.stopped {
- background-color: #90b1b1;
-}
-
-#mpd.paused {
- background-color: #51a37a;
-}
-
-#language {
- background: #00b093;
- color: #740864;
- min-width: 16px;
-}
-
-#keyboard-state {
- background: #97e1ad;
- color: #000000;
- min-width: 16px;
- border-bottom: 8px solid #78b48a;
-}
-
-#keyboard-state > label {
- padding: 0 5px;
-}
-
-#keyboard-state > label.locked {
- background: rgba(0, 0, 0, 0.2);
-}
-
-#scratchpad {
- background: rgba(0, 0, 0, 0.2);
-}
-
-#scratchpad.empty {
- background-color: transparent;
-}
-
-tooltip {
- background-color: #232a2e;
- border: none;
- border-bottom: 8px solid #1d2327;
-}
-
-tooltip decoration {
- box-shadow: none;
-}
-
-tooltip decoration:backdrop {
- box-shadow: none;
-}
-
-/* Waybar scaling: adjust tooltip label font-size to scale the bar */
-tooltip label {
- color: #d3c6aa;
- padding-left: 5px;
- padding-right: 5px;
- padding-top: 0px;
- padding-bottom: 5px;
- /* Waybar scaling: adjust tooltip label font-size to scale the bar */
- font-size: 14px;
-}
-
-
-#backlight-slider slider,
-#pulseaudio-slider slider {
- min-height: 7px;
- min-width: 15px;
- opacity: 0;
- background-color: #ffa000;
- border-radius: 3px;
- box-shadow: 1px 5px 6px 1px #272727;
-}
-
-#backlight-slider trough,
-#pulseaudio-slider trough {
- min-height: 100px;
- min-width: 7px;
- border-radius: 5px;
- background-color: #d8ac47;
-}
-
-window#waybar.bottombar #backlight-slider trough,
-window#waybar.bottombar #pulseaudio-slider trough {
- min-height: 7px;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
-}
-
-#backlight-slider highlight,
-#pulseaudio-slider highlight {
- min-width: 5px;
- border-radius: 5px;
- background-color: #64b6ac;
-}
-
-/* --- tray readability override (global) --- */
-#tray > *,
-#tray > .passive,
-#tray > .active,
-#tray > .needs-attention {
- background: rgba(137, 180, 250, 0.55);
- border-radius: 8px;
- border: 1px solid rgba(17, 17, 27, 0.35);
- margin-left: 1px;
- margin-right: 1px;
- padding-left: 2px;
- padding-right: 2px;
- color: rgba(17, 17, 27, 0.98);
- -gtk-icon-effect: none;
-}
-
-#tray image {
- background: transparent;
- color: rgba(17, 17, 27, 0.98);
- -gtk-icon-style: symbolic;
- -gtk-icon-effect: none;
- opacity: 1;
-}
diff --git a/config/waybar/style/Black-&-White-Monochrome.css b/config/waybar/style/Black-&-White-Monochrome.css
index 60ff6e6e..03fadbf1 100644
--- a/config/waybar/style/Black-&-White-Monochrome.css
+++ b/config/waybar/style/Black-&-White-Monochrome.css
@@ -2,112 +2,112 @@
/* Black & White MonoChrome */
* {
- font-family: "JetBrainsMono Nerd Font";
- font-weight: bold;
- min-height: 0;
- /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
- /* NOTE: Waybar v14+ ignores % font-size values */
- font-size: 99%;
- font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ min-height: 0;
+ /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
+ /* NOTE: Waybar v14+ ignores % font-size values */
+ font-size: 99%;
+ font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
}
window#waybar,
window#waybar.empty,
window#waybar.empty #window {
- background-color: transparent;
- padding: 0px;
- border: 0px;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background-color: transparent;
+ padding: 0px;
+ border: 0px;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
tooltip {
- color: white;
- background: #1e1e2e;
- opacity: 0.8;
- border-radius: 10px;
- border-width: 2px;
- border-style: solid;
- border-color: white;
+ color: white;
+ background: #1e1e2e;
+ opacity: 0.8;
+ border-radius: 10px;
+ border-width: 2px;
+ border-style: solid;
+ border-color: white;
}
/* Waybar scaling: adjust tooltip label font-size to scale the bar */
-tooltip label{
- color: #cdd6f4;
- /* Waybar scaling: adjust tooltip label font-size to scale the bar */
- font-size: 14px;
+tooltip label {
+ color: #cdd6f4;
+ /* Waybar scaling: adjust tooltip label font-size to scale the bar */
+ font-size: 14px;
}
/*-----module groups----*/
.modules-right {
- background-color: black;
- color: white;
- border-bottom: 1px;
- border-style: solid;
- border-color: white;
- border-radius: 10px;
- padding-top: 2px;
- padding-bottom: 2px;
- padding-right: 4px;
- padding-left: 4px;
+ background-color: black;
+ color: white;
+ border-bottom: 1px;
+ border-style: solid;
+ border-color: white;
+ border-radius: 10px;
+ padding-top: 2px;
+ padding-bottom: 2px;
+ padding-right: 4px;
+ padding-left: 4px;
}
.modules-center {
- background-color: black;
- color: white;
- border-bottom: 1px;
- border-style: solid;
- border-color: white;
- border-radius: 10px;
- padding-top: 2px;
- padding-bottom: 2px;
- padding-right: 4px;
- padding-left: 4px;
+ background-color: black;
+ color: white;
+ border-bottom: 1px;
+ border-style: solid;
+ border-color: white;
+ border-radius: 10px;
+ padding-top: 2px;
+ padding-bottom: 2px;
+ padding-right: 4px;
+ padding-left: 4px;
}
.modules-left {
- background-color: black;
- color: white;
- border-bottom: 1px;
- border-style: solid;
- border-color: white;
- border-radius: 10px;
- padding-top: 2px;
- padding-bottom: 2px;
- padding-right: 4px;
- padding-left: 4px;
+ background-color: black;
+ color: white;
+ border-bottom: 1px;
+ border-style: solid;
+ border-color: white;
+ border-radius: 10px;
+ padding-top: 2px;
+ padding-bottom: 2px;
+ padding-right: 4px;
+ padding-left: 4px;
}
/*-----modules indv----*/
#taskbar button,
#workspaces button {
- color: dimgrey;
- box-shadow: none;
- text-shadow: none;
- padding: 0px;
- border-radius: 9px;
- padding-left: 4px;
- padding-right: 4px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.682);
+ color: dimgrey;
+ box-shadow: none;
+ text-shadow: none;
+ padding: 0px;
+ border-radius: 9px;
+ padding-left: 4px;
+ padding-right: 4px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.5s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#taskbar button:hover,
#workspaces button:hover {
- color: white;
- background-color: #7f849c;
- padding-left: 2px;
- padding-right: 2px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: white;
+ background-color: #7f849c;
+ padding-left: 2px;
+ padding-right: 2px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#taskbar button.active,
#workspaces button.active {
- color: white;
- padding-left: 8px;
- padding-right: 8px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: white;
+ padding-left: 8px;
+ padding-right: 8px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#workspaces button.persistent {
- border-radius: 10px;
+ border-radius: 10px;
}
#backlight,
@@ -164,68 +164,68 @@ tooltip label{
#custom-weather.clearNight,
#custom-weather.cloudyFoggyDay,
#custom-weather.cloudyFoggyNight,
-#custom-weather.default,
+#custom-weather.default,
#custom-weather.rainyDay,
#custom-weather.rainyNight,
#custom-weather.severe,
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
#custom-weather.sunnyDay {
- padding-top: 4px;
- padding-bottom: 4px;
- padding-right: 6px;
- padding-left: 6px;
+ padding-top: 4px;
+ padding-bottom: 4px;
+ padding-right: 6px;
+ padding-left: 6px;
}
/*-----Indicators----*/
#custom-hypridle.notactive,
#idle_inhibitor.activated {
- color: #39FF14;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
+ color: #39ff14;
+ border-top: 8px solid rgba(0, 0, 0, 0.2);
}
#pulseaudio.muted {
- color: #cc3436;
+ color: #cc3436;
}
#temperature.critical {
- color: red;
+ color: red;
}
@keyframes blink {
- to {
- color: #000000;
- }
+ to {
+ color: #000000;
+ }
}
#battery.critical:not(.charging) {
- color: #f53c3c;
- animation-name: blink;
- animation-duration: 3.0s;
- animation-timing-function: steps(12);
- animation-iteration-count: infinite;
- animation-direction: alternate;
+ color: #f53c3c;
+ animation-name: blink;
+ animation-duration: 3s;
+ animation-timing-function: steps(12);
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
}
#backlight-slider slider,
#pulseaudio-slider slider {
- min-width: 0px;
- min-height: 0px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
+ min-width: 0px;
+ min-height: 0px;
+ opacity: 0;
+ background-image: none;
+ border: none;
+ box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
- min-width: 80px;
- min-height: 5px;
- border-radius: 5px;
+ min-width: 80px;
+ min-height: 5px;
+ border-radius: 5px;
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
- min-height: 10px;
- border-radius: 5px;
+ min-height: 10px;
+ border-radius: 5px;
}
/* --- tray readability override (global) --- */
diff --git a/config/waybar/style/Catppuccin-Frappe.css b/config/waybar/style/Catppuccin-Frappe.css
index 228098a6..3778bad0 100644
--- a/config/waybar/style/Catppuccin-Frappe.css
+++ b/config/waybar/style/Catppuccin-Frappe.css
@@ -2,13 +2,13 @@
/* Catppuccin Frappe */
* {
- font-family: "JetBrainsMono Nerd Font";
- font-weight: bold;
- min-height: 0;
- /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
- /* NOTE: Waybar v14+ ignores % font-size values */
- font-size: 99%;
- font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ min-height: 0;
+ /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
+ /* NOTE: Waybar v14+ ignores % font-size values */
+ font-size: 99%;
+ font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
}
@import "../waybar/style/catppuccin-themes/frappe.css";
@@ -33,43 +33,43 @@ window#waybar.hidden {
#taskbar button,
#workspaces button {
- box-shadow: none;
- text-shadow: none;
- padding: 4px;
- border-radius: 9px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.682);
+ box-shadow: none;
+ text-shadow: none;
+ padding: 4px;
+ border-radius: 9px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.5s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#taskbar button:hover,
#workspaces button:hover {
- border-radius: 10px;
- color: @overlay0;
- background-color: @surface0;
- padding-left: 2px;
- padding-right: 2px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ border-radius: 10px;
+ color: @overlay0;
+ background-color: @surface0;
+ padding-left: 2px;
+ padding-right: 2px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#workspaces button.persistent {
- color: @surface1;
- border-radius: 10px;
+ color: @surface1;
+ border-radius: 10px;
}
#taskbar button.active,
#workspaces button.active {
- color: @peach;
- border-radius: 10px;
- padding-left: 8px;
- padding-right: 8px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: @peach;
+ border-radius: 10px;
+ padding-left: 8px;
+ padding-right: 8px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#workspaces button.urgent {
- color: @red;
- border-radius: 0px;
+ color: @red;
+ border-radius: 0px;
}
#backlight,
@@ -127,32 +127,32 @@ window#waybar.hidden {
#custom-weather.clearNight,
#custom-weather.cloudyFoggyDay,
#custom-weather.cloudyFoggyNight,
-#custom-weather.default,
+#custom-weather.default,
#custom-weather.rainyDay,
#custom-weather.rainyNight,
#custom-weather.severe,
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
#custom-weather.sunnyDay {
- padding-top: 4px;
- padding-bottom: 4px;
- padding-right: 6px;
- padding-left: 6px;
+ padding-top: 4px;
+ padding-bottom: 4px;
+ padding-right: 6px;
+ padding-left: 6px;
}
/*-----Indicators----*/
#custom-hypridle.notactive,
#idle_inhibitor.activated {
- color: #39FF14;
- border-bottom: 3px solid @sapphire;
+ color: #39ff14;
+ border-bottom: 3px solid @sapphire;
}
#backlight {
- color: @blue;
+ color: @blue;
}
#battery {
- color: @green;
+ color: @green;
}
@keyframes blink {
@@ -162,43 +162,43 @@ window#waybar.hidden {
}
#battery.critical:not(.charging) {
- background-color: @red;
- color: @theme_text_color;
- animation-name: blink;
- animation-duration: 3.0s;
- animation-timing-function: steps(12);
- animation-iteration-count: infinite;
- animation-direction: alternate;
- box-shadow: inset 0 -3px transparent;
+ background-color: @red;
+ color: @theme_text_color;
+ animation-name: blink;
+ animation-duration: 3s;
+ animation-timing-function: steps(12);
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
+ box-shadow: inset 0 -3px transparent;
}
#bluetooth {
- color: @blue;
+ color: @blue;
}
#clock {
- color: @yellow;
+ color: @yellow;
}
#cpu {
- color: @green;
+ color: @green;
}
#custom-keyboard,
#memory {
- color: @sky;
+ color: @sky;
}
#disk {
- color: @sapphire;
+ color: @sapphire;
}
#temperature {
- color: @teal;
+ color: @teal;
}
#temperature.critical {
- background-color: @red;
+ background-color: @red;
}
#tray > .passive {
@@ -209,87 +209,87 @@ window#waybar.hidden {
}
#keyboard-state {
- color: @flamingo;
+ color: @flamingo;
}
#custom-cava_mviz {
- color: @pink;
+ color: @pink;
}
#custom-menu {
- color: @rosewater;
+ color: @rosewater;
}
#custom-power {
- color: @red;
+ color: @red;
}
#custom-updater {
- color: @red;
+ color: @red;
}
#custom-light_dark {
- color: @blue;
+ color: @blue;
}
#custom-weather {
- color: @lavender;
+ color: @lavender;
}
#custom-lock {
- color: @maroon;
+ color: @maroon;
}
#pulseaudio {
- color: @sapphire;
+ color: @sapphire;
}
#pulseaudio.bluetooth {
- color: @pink;
+ color: @pink;
}
#pulseaudio.muted {
- color: @red;
+ color: @red;
}
#window {
- color: @mauve;
+ color: @mauve;
}
#mpris {
- color:@lavender;
+ color: @lavender;
}
#network {
- color: @teal;
+ color: @teal;
}
#network.disconnected,
#network.disabled {
- background-color: @surface0;
- color: @text;
+ background-color: @surface0;
+ color: @text;
}
#backlight-slider slider,
#pulseaudio-slider slider {
- min-width: 0px;
- min-height: 0px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
+ min-width: 0px;
+ min-height: 0px;
+ opacity: 0;
+ background-image: none;
+ border: none;
+ box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
- min-width: 80px;
- min-height: 5px;
- border-radius: 5px;
+ min-width: 80px;
+ min-height: 5px;
+ border-radius: 5px;
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
- min-height: 10px;
- border-radius: 5px;
+ min-height: 10px;
+ border-radius: 5px;
}
/* --- tray readability override (global) --- */
diff --git a/config/waybar/style/Catppuccin-Mocha.css b/config/waybar/style/Catppuccin-Mocha.css
index e1bd0eee..5d760224 100644
--- a/config/waybar/style/Catppuccin-Mocha.css
+++ b/config/waybar/style/Catppuccin-Mocha.css
@@ -2,99 +2,102 @@
/* Catppuccin Mocha */
* {
- font-family: "JetBrainsMono Nerd Font";
- font-weight: bold;
- min-height: 0;
- /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
- /* NOTE: Waybar v14+ ignores % font-size values */
- font-size: 99%;
- font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ min-height: 0;
+ /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
+ /* NOTE: Waybar v14+ ignores % font-size values */
+ font-size: 99%;
+ font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
}
@import "../waybar/style/catppuccin-themes/mocha.css";
window#waybar {
- transition-property: background-color;
- transition-duration: 0.5s;
- background: transparent;
- border-radius: 10px;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ transition-property: background-color;
+ transition-duration: 0.5s;
+ background: transparent;
+ border-radius: 10px;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
window#waybar.hidden {
- opacity: 0.2;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ opacity: 0.2;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
window#waybar.empty,
window#waybar.empty #window {
- background-color: transparent;
- padding: 0px;
- border: 0px;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background-color: transparent;
+ padding: 0px;
+ border: 0px;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
#taskbar button,
#workspaces button {
- color: @overlay1;
- box-shadow: none;
- text-shadow: none;
- padding: 0px;
- border-radius: 9px;
- padding-left: 4px;
- padding-right: 4px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.682);
+ color: @overlay1;
+ box-shadow: none;
+ text-shadow: none;
+ padding: 0px;
+ border-radius: 9px;
+ padding-left: 4px;
+ padding-right: 4px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.5s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#taskbar button:hover,
#workspaces button:hover {
- border-radius: 10px;
- color: @peach;
- background-color: @surface0;
- padding-left: 2px;
- padding-right: 2px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ border-radius: 10px;
+ color: @peach;
+ background-color: @surface0;
+ padding-left: 2px;
+ padding-right: 2px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#workspaces button.persistent {
- color: @surface1;
- border-radius: 10px;
+ color: @surface1;
+ border-radius: 10px;
}
#taskbar button.active,
#workspaces button.active {
- color: @mauve;
- border-radius: 10px;
- padding-left: 8px;
- padding-right: 8px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: @mauve;
+ border-radius: 10px;
+ padding-left: 8px;
+ padding-right: 8px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#workspaces button.urgent {
- color: @red;
- border-radius: 0px;
+ color: @red;
+ border-radius: 0px;
}
/* This section can be use if you want to separate waybar modules */
-.modules-left, .modules-center, .modules-right {
- background: @theme_base_color;
- border: 0.5px solid @overlay0;
- padding-top: 2px;
- padding-bottom: 2px;
- padding-right: 4px;
- padding-left: 4px;
- border-radius: 10px;
-}
+.modules-left,
+.modules-center,
+.modules-right {
+ background: @theme_base_color;
+ border: 0.5px solid @overlay0;
+ padding-top: 2px;
+ padding-bottom: 2px;
+ padding-right: 4px;
+ padding-left: 4px;
+ border-radius: 10px;
+}
-.modules-left, .modules-right {
- border: 1px solid @blue;
-}
+.modules-left,
+.modules-right {
+ border: 1px solid @blue;
+}
#backlight,
#backlight-slider,
@@ -151,23 +154,23 @@ window#waybar.empty #window {
#custom-weather.clearNight,
#custom-weather.cloudyFoggyDay,
#custom-weather.cloudyFoggyNight,
-#custom-weather.default,
+#custom-weather.default,
#custom-weather.rainyDay,
#custom-weather.rainyNight,
#custom-weather.severe,
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
#custom-weather.sunnyDay {
- padding-top: 4px;
- padding-bottom: 4px;
- padding-right: 6px;
- padding-left: 6px;
+ padding-top: 4px;
+ padding-bottom: 4px;
+ padding-right: 6px;
+ padding-left: 6px;
}
/*-----Indicators----*/
#custom-hypridle.notactive,
#idle_inhibitor.activated {
- color: #39FF14;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
+ color: #39ff14;
+ border-top: 8px solid rgba(0, 0, 0, 0.2);
}
#bluetooth,
@@ -188,11 +191,11 @@ window#waybar.empty #window {
#battery.critical:not(.charging) {
background-color: @red;
color: @theme_text_color;
- animation-name: blink;
- animation-duration: 3.0s;
- animation-timing-function: steps(12);
- animation-iteration-count: infinite;
- animation-direction: alternate;
+ animation-name: blink;
+ animation-duration: 3s;
+ animation-timing-function: steps(12);
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
box-shadow: inset 0 -3px transparent;
}
@@ -233,7 +236,7 @@ window#waybar.empty #window {
}
#custom-cava_mviz {
- color: @pink;
+ color: @pink;
}
#custom-menu {
@@ -276,7 +279,7 @@ window#waybar.empty #window {
}
#mpris {
- color:@lavender;
+ color: @lavender;
}
#network {
@@ -290,25 +293,25 @@ window#waybar.empty #window {
#backlight-slider slider,
#pulseaudio-slider slider {
- min-width: 0px;
- min-height: 0px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
+ min-width: 0px;
+ min-height: 0px;
+ opacity: 0;
+ background-image: none;
+ border: none;
+ box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
- min-width: 80px;
- min-height: 5px;
- border-radius: 5px;
+ min-width: 80px;
+ min-height: 5px;
+ border-radius: 5px;
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
- min-height: 10px;
- border-radius: 5px;
+ min-height: 10px;
+ border-radius: 5px;
}
/* --- tray readability override (global) --- */
diff --git a/config/waybar/style/Colored-Chroma-Glow.css b/config/waybar/style/Colored-Chroma-Glow.css
index 4a1c8e4f..2e561e2a 100644
--- a/config/waybar/style/Colored-Chroma-Glow.css
+++ b/config/waybar/style/Colored-Chroma-Glow.css
@@ -2,103 +2,103 @@
/* Chroma Glow */
* {
- font-family: "JetBrainsMono Nerd Font";
- font-weight: bold;
- min-height: 0;
- /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
- /* NOTE: Waybar v14+ ignores % font-size values */
- font-size: 99%;
- font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ min-height: 0;
+ /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
+ /* NOTE: Waybar v14+ ignores % font-size values */
+ font-size: 99%;
+ font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
}
window#waybar {
- background-color: transparent;
- color: #ffffff;
- transition-property: background-color;
- transition-duration: .5s;
- border-radius: 10px;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background-color: transparent;
+ color: #ffffff;
+ transition-property: background-color;
+ transition-duration: 0.5s;
+ border-radius: 10px;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
window#waybar.hidden {
- opacity: 0.1;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ opacity: 0.1;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
window#waybar.empty,
window#waybar.empty #window {
- padding: 0px;
- border: 0px;
- background-color: transparent;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ padding: 0px;
+ border: 0px;
+ background-color: transparent;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
tooltip {
- color: #40a02b;
- background: #1e1e2e;
- opacity: 0.8;
- border-radius: 10px;
- border-width: 2px;
- border-style: solid;
- border-color: #11111b;
+ color: #40a02b;
+ background: #1e1e2e;
+ opacity: 0.8;
+ border-radius: 10px;
+ border-width: 2px;
+ border-style: solid;
+ border-color: #11111b;
}
/* Waybar scaling: adjust tooltip label font-size to scale the bar */
-tooltip label{
- color: #cdd6f4;
- /* Waybar scaling: adjust tooltip label font-size to scale the bar */
- font-size: 14px;
+tooltip label {
+ color: #cdd6f4;
+ /* Waybar scaling: adjust tooltip label font-size to scale the bar */
+ font-size: 14px;
}
#taskbar button,
#workspaces button {
- background-color: transparent;
- color: grey;
- box-shadow: none;
- text-shadow: none;
- padding: 0px;
- border-radius: 9px;
- padding-left: 4px;
- padding-right: 4px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.682);
+ background-color: transparent;
+ color: grey;
+ box-shadow: none;
+ text-shadow: none;
+ padding: 0px;
+ border-radius: 9px;
+ padding-left: 4px;
+ padding-right: 4px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.5s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#taskbar button.active,
#workspaces button.active {
- background-color: transparent;
- color: #D3D3D3;
- padding-left: 8px;
- padding-right: 8px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ background-color: transparent;
+ color: #d3d3d3;
+ padding-left: 8px;
+ padding-right: 8px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#taskbar button:hover,
#workspaces button:hover {
- background: rgba(0, 0, 0, 0.2);
- color: #D3D3D3;
- padding-left: 2px;
- padding-right: 2px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ background: rgba(0, 0, 0, 0.2);
+ color: #d3d3d3;
+ padding-left: 2px;
+ padding-right: 2px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#workspaces button.focused {
- background-color: #bbccdd;
- color: #323232;
+ background-color: #bbccdd;
+ color: #323232;
}
#workspaces button.urgent {
- background-color: #eb4d4b;
+ background-color: #eb4d4b;
}
#mode {
- background-color: #64727D;
- border-bottom: 3px solid #ffffff;
+ background-color: #64727d;
+ border-bottom: 3px solid #ffffff;
}
#backlight,
@@ -155,17 +155,17 @@ tooltip label{
#custom-weather.clearNight,
#custom-weather.cloudyFoggyDay,
#custom-weather.cloudyFoggyNight,
-#custom-weather.default,
+#custom-weather.default,
#custom-weather.rainyDay,
#custom-weather.rainyNight,
#custom-weather.severe,
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
#custom-weather.sunnyDay {
- padding-top: 4px;
- padding-bottom: 4px;
- padding-right: 6px;
- padding-left: 6px;
+ padding-top: 4px;
+ padding-bottom: 4px;
+ padding-right: 6px;
+ padding-left: 6px;
}
/* If workspaces is the leftmost module, omit left margin */
@@ -177,15 +177,15 @@ tooltip label{
}
#clock {
- color: #fe640b;
+ color: #fe640b;
}
#custom-updater {
- color: #7287fd;
+ color: #7287fd;
}
#battery {
- color: #32CD32;
+ color: #32cd32;
}
/* #battery.charging {
@@ -194,157 +194,157 @@ tooltip label{
} */
@keyframes blink {
- to {
- background-color: #ffffff;
- color: #333333;
- }
+ to {
+ background-color: #ffffff;
+ color: #333333;
+ }
}
#battery.critical:not(.charging) {
- color: #f53c3c;
- animation-name: blink;
- animation-duration: 3.0s;
- animation-timing-function: steps(12);
- animation-iteration-count: infinite;
- animation-direction: alternate;
+ color: #f53c3c;
+ animation-name: blink;
+ animation-duration: 3s;
+ animation-timing-function: steps(12);
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
}
label:focus {
- background-color: #000000;
+ background-color: #000000;
}
#custom-keyboard,
-#custom-menu{
- color: yellow;
- /*padding: 3px;*/
+#custom-menu {
+ color: yellow;
+ /*padding: 3px;*/
}
#cpu {
- color: blue;
+ color: blue;
}
#memory {
- color: green;
+ color: green;
}
#custom-light_dark,
#custom-nightlight,
#backlight {
- color: white;
+ color: white;
}
#bluetooth {
- color: blue;
+ color: blue;
}
#network {
- color: #dd7878;
+ color: #dd7878;
}
#network.disconnected {
- color: #df3320;
+ color: #df3320;
}
#custom-swaync,
#custom-keybinds {
- color: #1e66f5;
+ color: #1e66f5;
}
#wireplumber,
#pulseaudio {
- color: green;
+ color: green;
}
#wireplumber.muted,
#pulseaudio.muted {
- color: grey;
+ color: grey;
}
#custom-power {
- color: red;
+ color: red;
}
#keyboard-state {
- color: #dd7878;
+ color: #dd7878;
}
#disk {
- color: brown;
+ color: brown;
}
#custom-weather {
- color: #df8e1d;
+ color: #df8e1d;
}
#custom-lock {
- color: #ffa000;
+ color: #ffa000;
}
#temperature {
- color: #FF5349;
+ color: #ff5349;
}
#temperature.critical {
- background-color: #ff0000;
+ background-color: #ff0000;
}
#tray {
- /* background-color: #505050; */
+ /* background-color: #505050; */
}
/*-----Indicators----*/
#custom-hypridle.notactive,
#idle_inhibitor.activated {
- color: #39FF14;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
+ color: #39ff14;
+ border-top: 8px solid rgba(0, 0, 0, 0.2);
}
#mpd {
- color: #2a5c45;
+ color: #2a5c45;
}
#mpd.disconnected {
- background-color: #f53c3c;
+ background-color: #f53c3c;
}
#mpd.stopped {
- background-color: #90b1b1;
+ background-color: #90b1b1;
}
#mpd.paused {
- background-color: #51a37a;
+ background-color: #51a37a;
}
#custom-language {
- color: #7da6ff;
- min-width: 16px;
+ color: #7da6ff;
+ min-width: 16px;
}
#custom-separator {
- color: #606060;
+ color: #606060;
}
#backlight-slider slider,
#pulseaudio-slider slider {
- min-width: 0px;
- min-height: 0px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
+ min-width: 0px;
+ min-height: 0px;
+ opacity: 0;
+ background-image: none;
+ border: none;
+ box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
- min-width: 80px;
- min-height: 5px;
- border-radius: 5px;
+ min-width: 80px;
+ min-height: 5px;
+ border-radius: 5px;
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
- min-height: 10px;
- border-radius: 5px;
+ min-height: 10px;
+ border-radius: 5px;
}
/* --- tray readability override (global) --- */
diff --git a/config/waybar/style/Colored-Translucent.css b/config/waybar/style/Colored-Translucent.css
index 12818f6c..42f4474a 100644
--- a/config/waybar/style/Colored-Translucent.css
+++ b/config/waybar/style/Colored-Translucent.css
@@ -2,10 +2,10 @@
/* Translucent */
@define-color critical #ff0000; /* critical color */
-@define-color warning #f3f809; /* warning color */
-@define-color fgcolor #ffffff; /* foreground color */
-@define-color bgcolor #303030; /* background color */
-@define-color bgcolor #222436; /* background color */
+@define-color warning #f3f809; /* warning color */
+@define-color fgcolor #ffffff; /* foreground color */
+@define-color bgcolor #303030; /* background color */
+@define-color bgcolor #222436; /* background color */
@define-color alert #df3320;
@define-color accent1 #ff7a93;
@@ -16,86 +16,86 @@
@define-color accent6 #0db9d7;
* {
-font-family: "JetBrainsMono Nerd Font";
-font-weight: bold;
-min-height: 0;
-/* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
-/* NOTE: Waybar v14+ ignores % font-size values */
-font-size: 99%;
-font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ min-height: 0;
+ /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
+ /* NOTE: Waybar v14+ ignores % font-size values */
+ font-size: 99%;
+ font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
}
window#waybar {
- background-color: rgba(0,0,0,0.3);
- color: #ffffff;
- transition-property: background-color;
- transition-duration: .5s;
- border-radius: 10px;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background-color: rgba(0, 0, 0, 0.3);
+ color: #ffffff;
+ transition-property: background-color;
+ transition-duration: 0.5s;
+ border-radius: 10px;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
window#waybar.hidden {
- opacity: 0.1;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ opacity: 0.1;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
tooltip {
- background: #1e1e2e;
- opacity: 0.6;
- border-radius: 10px;
- border-width: 2px;
- border-style: solid;
- border-color: #11111b;
+ background: #1e1e2e;
+ opacity: 0.6;
+ border-radius: 10px;
+ border-width: 2px;
+ border-style: solid;
+ border-color: #11111b;
}
#taskbar button,
#workspaces button {
- background-color: transparent;
- color: @fgcolor;
- box-shadow: none;
- text-shadow: none;
- padding: 4px;
- border-radius: 9px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.682);
+ background-color: transparent;
+ color: @fgcolor;
+ box-shadow: none;
+ text-shadow: none;
+ padding: 4px;
+ border-radius: 9px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.5s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#taskbar button.active,
#workspaces button.active {
- background-color: rgba(0, 0, 0, 0.2);
- color: @accent2;
- padding-left: 8px;
- padding-right: 8px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ background-color: rgba(0, 0, 0, 0.2);
+ color: @accent2;
+ padding-left: 8px;
+ padding-right: 8px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#taskbar button:hover,
#workspaces button:hover {
- background: rgba(0, 0, 0, 0.2);
- color: @accent3;
- padding-left: 2px;
- padding-right: 2px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ background: rgba(0, 0, 0, 0.2);
+ color: @accent3;
+ padding-left: 2px;
+ padding-right: 2px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#workspaces button.focused {
- background-color: rgba(0, 0, 0, 0.35);
- color: @accent5;
- /* box-shadow: inset 0 -3px #ffffff; */
+ background-color: rgba(0, 0, 0, 0.35);
+ color: @accent5;
+ /* box-shadow: inset 0 -3px #ffffff; */
}
#workspaces button.urgent {
- background-color: #eb4d4b;
- color: #ffffff;
+ background-color: #eb4d4b;
+ color: #ffffff;
}
#mode {
- background-color: #64727D;
- border-bottom: 3px solid #ffffff;
+ background-color: #64727d;
+ border-bottom: 3px solid #ffffff;
}
#backlight,
@@ -153,17 +153,17 @@ tooltip {
#custom-weather.clearNight,
#custom-weather.cloudyFoggyDay,
#custom-weather.cloudyFoggyNight,
-#custom-weather.default,
+#custom-weather.default,
#custom-weather.rainyDay,
#custom-weather.rainyNight,
#custom-weather.severe,
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
#custom-weather.sunnyDay {
- padding-top: 4px;
- padding-bottom: 4px;
- padding-right: 6px;
- padding-left: 6px;
+ padding-top: 4px;
+ padding-bottom: 4px;
+ padding-right: 6px;
+ padding-left: 6px;
}
/* If workspaces is the leftmost module, omit left margin */
@@ -175,15 +175,15 @@ tooltip {
}
#clock {
- color: @accent2;
+ color: @accent2;
}
#custom-updater {
- color: #7287fd;
+ color: #7287fd;
}
#battery {
- color: @accent5;
+ color: @accent5;
}
/* #battery.charging {
@@ -192,175 +192,175 @@ tooltip {
} */
@keyframes blink {
- to {
- background-color: #ffffff;
- color: #333333;
- }
+ to {
+ background-color: #ffffff;
+ color: #333333;
+ }
}
#battery.critical:not(.charging) {
- color: @critical;
- animation-name: blink;
- animation-duration: 3.0s;
- animation-timing-function: steps(12);
- animation-iteration-count: infinite;
- animation-direction: alternate;
+ color: @critical;
+ animation-name: blink;
+ animation-duration: 3s;
+ animation-timing-function: steps(12);
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
}
label:focus {
- background-color: #000000;
+ background-color: #000000;
}
-#custom-menu{
- color: #FFFFFF;
- /*padding: 3px;*/
+#custom-menu {
+ color: #ffffff;
+ /*padding: 3px;*/
}
#custom-keyboard,
#cpu {
- color: @accent1;
+ color: @accent1;
}
#memory {
- color: @accent3;
+ color: @accent3;
}
#backlight {
- color: #cdd6f4;
+ color: #cdd6f4;
}
#bluetooth {
- color: #1e66f5;
+ color: #1e66f5;
}
#network {
- color: @accent3;
+ color: @accent3;
}
#network.disconnected {
- color: @alert;
+ color: @alert;
}
#pulseaudio {
- color: @accent4;
+ color: @accent4;
}
#pulseaudio-muted {
- color: @accent2;
+ color: @accent2;
}
#wireplumber {
- color: @accent4;
+ color: @accent4;
}
#wireplumber-muted {
- color: @accent2;
+ color: @accent2;
}
-#pluseaudio-source-muted{
- color: #a0a0a0;
+#pluseaudio-source-muted {
+ color: #a0a0a0;
}
#custom-power {
- color: #cc3436;
+ color: #cc3436;
}
#disk {
- color: @accent5;
+ color: @accent5;
}
#custom-power_profile {
- color: @accent3;
+ color: @accent3;
}
#custom-media {
- background-color: #66cc99;
- color: #2a5c45;
- min-width: 100px;
+ background-color: #66cc99;
+ color: #2a5c45;
+ min-width: 100px;
}
#custom-weather {
- color: #66cc99;
+ color: #66cc99;
}
#custom-weather2 {
- color: #66cc99;
+ color: #66cc99;
}
#custom-lock {
- color: #ffa000;
+ color: #ffa000;
}
#keyboard-state,
#temperature {
- color: @accent6;
- /* background-color: #f0932b; */
+ color: @accent6;
+ /* background-color: #f0932b; */
}
#temperature.critical {
- background-color: @critical;
+ background-color: @critical;
}
#tray {
- /* background-color: #505050; */
+ /* background-color: #505050; */
}
#custom-hypridle,
#idle_inhibitor {
- color: #f9e2af;
- /*background-color: #2d3436;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);*/
+ color: #f9e2af;
+ /*background-color: #2d3436; */
+ border-top: 8px solid rgba(0, 0, 0, 0.2);
}
/*-----Indicators----*/
#custom-hypridle.notactive,
#idle_inhibitor.activated {
- color: #39FF14;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
+ color: #39ff14;
+ border-top: 8px solid rgba(0, 0, 0, 0.2);
}
#mpd {
- color: #2a5c45;
+ color: #2a5c45;
}
#mpd.disconnected {
- background-color: #f53c3c;
+ background-color: #f53c3c;
}
#mpd.stopped {
- background-color: #90b1b1;
+ background-color: #90b1b1;
}
#mpd.paused {
- background-color: #51a37a;
+ background-color: #51a37a;
}
#custom-language {
- color: @accent5;
- min-width: 16px;
+ color: @accent5;
+ min-width: 16px;
}
#custom-separator {
- color: #606060;
+ color: #606060;
}
#backlight-slider slider,
#pulseaudio-slider slider {
- min-width: 0px;
- min-height: 0px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
+ min-width: 0px;
+ min-height: 0px;
+ opacity: 0;
+ background-image: none;
+ border: none;
+ box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
- min-width: 80px;
- min-height: 5px;
- border-radius: 5px;
+ min-width: 80px;
+ min-height: 5px;
+ border-radius: 5px;
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
- min-height: 10px;
- border-radius: 5px;
+ min-height: 10px;
+ border-radius: 5px;
}
/* --- tray readability override (global) --- */
diff --git a/config/waybar/style/Colorful-Aurora-Blossom.css b/config/waybar/style/Colorful-Aurora-Blossom.css
index cb1e9269..6b7ebc89 100644
--- a/config/waybar/style/Colorful-Aurora-Blossom.css
+++ b/config/waybar/style/Colorful-Aurora-Blossom.css
@@ -2,92 +2,102 @@
/* Aurora Blossom */
* {
- font-family: "JetBrainsMono Nerd Font";
- font-weight: bold;
- /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
- /* NOTE: Waybar v14+ ignores % font-size values */
- font-size: 99%;
- font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
+ /* NOTE: Waybar v14+ ignores % font-size values */
+ font-size: 99%;
+ font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
}
window#waybar {
- background: transparent;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background: transparent;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
-window#waybar.empty ,
+window#waybar.empty,
window#waybar.empty #window {
- background-color: transparent;
- padding: 0px;
- border: 0px;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background-color: transparent;
+ padding: 0px;
+ border: 0px;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
tooltip {
- color: black;
- background-image: linear-gradient(45deg, #7287fd 10%, #209fb5 54%, #8839ef 90%);
- opacity: 0.8;
- border-radius: 10px;
+ color: black;
+ background-image: linear-gradient(
+ 45deg,
+ #7287fd 10%,
+ #209fb5 54%,
+ #8839ef 90%
+ );
+ opacity: 0.8;
+ border-radius: 10px;
}
/* Waybar scaling: adjust tooltip label font-size to scale the bar */
-tooltip label{
- color: black;
- /* Waybar scaling: adjust tooltip label font-size to scale the bar */
- font-size: 14px;
+tooltip label {
+ color: black;
+ /* Waybar scaling: adjust tooltip label font-size to scale the bar */
+ font-size: 14px;
}
/*-----module groups----*/
.modules-left,
.modules-center,
.modules-right {
- background-image: linear-gradient(45deg, #7287fd 10%, #209fb5 54%, #8839ef 90%);
- color: black;
- border-radius: 6px;
- padding-top: 2px;
- padding-bottom: 2px;
- padding-right: 4px;
- padding-left: 4px;
+ background-image: linear-gradient(
+ 45deg,
+ #7287fd 10%,
+ #209fb5 54%,
+ #8839ef 90%
+ );
+ color: black;
+ border-radius: 6px;
+ padding-top: 2px;
+ padding-bottom: 2px;
+ padding-right: 4px;
+ padding-left: 4px;
}
/*-----modules indv----*/
#taskbar button,
#workspaces button {
- color: black;
- box-shadow: none;
- text-shadow: none;
- padding: 0px;
- border-radius: 9px;
- padding-left: 4px;
- padding-right: 4px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.682);
+ color: black;
+ box-shadow: none;
+ text-shadow: none;
+ padding: 0px;
+ border-radius: 9px;
+ padding-left: 4px;
+ padding-right: 4px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.5s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#taskbar button:hover,
#workspaces button:hover {
- color: grey;
- background-color: rgba(0,153,153,0.2);
- padding-left: 2px;
- padding-right: 2px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: grey;
+ background-color: rgba(0, 153, 153, 0.2);
+ padding-left: 2px;
+ padding-right: 2px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#taskbar button.active,
#workspaces button.active {
- color: grey;
- padding-left: 8px;
- padding-right: 8px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: grey;
+ padding-left: 8px;
+ padding-right: 8px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#workspaces button.persistent {
- border-radius: 10px;
+ border-radius: 10px;
}
#backlight,
@@ -145,72 +155,73 @@ tooltip label{
#custom-weather.clearNight,
#custom-weather.cloudyFoggyDay,
#custom-weather.cloudyFoggyNight,
-#custom-weather.default,
+#custom-weather.default,
#custom-weather.rainyDay,
#custom-weather.rainyNight,
#custom-weather.severe,
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
#custom-weather.sunnyDay {
- padding-top: 4px;
- padding-bottom: 4px;
- padding-right: 6px;
- padding-left: 6px;
+ padding-top: 4px;
+ padding-bottom: 4px;
+ padding-right: 6px;
+ padding-left: 6px;
}
#custom-power {
- padding: 1px 3px;
+ padding-right: 2px;
+ padding-left: 2px;
}
/*-----Indicators----*/
#custom-hypridle.notactive,
#idle_inhibitor.activated {
- color: #39FF14;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
+ color: #39ff14;
+ border-top: 8px solid rgba(0, 0, 0, 0.2);
}
#pulseaudio.muted {
- color: #cc3436;
+ color: #cc3436;
}
#temperature.critical {
- color: #cc3436;
+ color: #cc3436;
}
@keyframes blink {
- to {
- color: #000000;
- }
+ to {
+ color: #000000;
+ }
}
#battery.critical:not(.charging) {
- color: #f53c3c;
- animation-name: blink;
- animation-duration: 3.0s;
- animation-timing-function: steps(12);
- animation-iteration-count: infinite;
- animation-direction: alternate;
+ color: #f53c3c;
+ animation-name: blink;
+ animation-duration: 3s;
+ animation-timing-function: steps(12);
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
}
#backlight-slider slider,
#pulseaudio-slider slider {
- min-width: 0px;
- min-height: 0px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
+ min-width: 0px;
+ min-height: 0px;
+ opacity: 0;
+ background-image: none;
+ border: none;
+ box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
- background-color: #7f849c;
- min-width: 80px;
- min-height: 5px;
- border-radius: 5px;
+ background-color: #7f849c;
+ min-width: 80px;
+ min-height: 5px;
+ border-radius: 5px;
}
#pulseaudio-slider highlight,
#backlight-slider highlight {
- min-width: 10px;
- border-radius: 5px;
+ min-width: 10px;
+ border-radius: 5px;
}
/* --- tray readability override (global) --- */
diff --git a/config/waybar/style/Colorful-Aurora.css b/config/waybar/style/Colorful-Aurora.css
index d56cdd22..9ce23f99 100644
--- a/config/waybar/style/Colorful-Aurora.css
+++ b/config/waybar/style/Colorful-Aurora.css
@@ -2,80 +2,85 @@
/* Aurora */
* {
-font-family: "JetBrainsMono Nerd Font";
-font-weight: bold;
-/* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
-/* NOTE: Waybar v14+ ignores % font-size values */
-font-size: 99%;
-font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
+ /* NOTE: Waybar v14+ ignores % font-size values */
+ font-size: 99%;
+ font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
}
window#waybar,
window#waybar.empty,
window#waybar.empty #window {
- background-color: transparent;
- padding: 0px;
- border: 0px;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background-color: transparent;
+ padding: 0px;
+ border: 0px;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
tooltip {
- color: black;
- background-image: linear-gradient(45deg, #7287fd 10%, #209fb5 54%, #8839ef 90%);
- opacity: 0.8;
- border-radius: 10px;
+ color: black;
+ background-image: linear-gradient(
+ 45deg,
+ #7287fd 10%,
+ #209fb5 54%,
+ #8839ef 90%
+ );
+ opacity: 0.8;
+ border-radius: 10px;
}
/* Waybar scaling: adjust tooltip label font-size to scale the bar */
-tooltip label{
- color: black;
- /* Waybar scaling: adjust tooltip label font-size to scale the bar */
- font-size: 14px;
+tooltip label {
+ color: black;
+ /* Waybar scaling: adjust tooltip label font-size to scale the bar */
+ font-size: 14px;
}
/*-----module groups----*/
.modules-left,
.modules-center,
.modules-right {
- padding-top: 2px;
- padding-bottom: 2px;
- padding-right: 4px;
- padding-left: 4px;
+ padding-top: 2px;
+ padding-bottom: 2px;
+ padding-right: 4px;
+ padding-left: 4px;
}
/*-----modules indv----*/
#taskbar button,
#workspaces button {
- color: grey;
- box-shadow: none;
- text-shadow: none;
- padding: 0px;
- border-radius: 9px;
- padding-left: 4px;
- padding-right: 4px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.682);
+ color: grey;
+ box-shadow: none;
+ text-shadow: none;
+ padding: 0px;
+ border-radius: 9px;
+ padding-left: 4px;
+ padding-right: 4px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.5s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#taskbar button:hover,
#workspaces button:hover {
- color: black;
- background-color: rgba(0,153,153,0.2);
- padding-left: 2px;
- padding-right: 2px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: black;
+ background-color: rgba(0, 153, 153, 0.2);
+ padding-left: 2px;
+ padding-right: 2px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#taskbar button.active,
#workspaces button.active {
- color: black;
- padding-left: 8px;
- padding-right: 8px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: black;
+ padding-left: 8px;
+ padding-right: 8px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#workspaces button.persistent {
- border-radius: 10px;
+ border-radius: 10px;
}
#backlight,
@@ -132,91 +137,91 @@ tooltip label{
#custom-weather.clearNight,
#custom-weather.cloudyFoggyDay,
#custom-weather.cloudyFoggyNight,
-#custom-weather.default,
+#custom-weather.default,
#custom-weather.rainyDay,
#custom-weather.rainyNight,
#custom-weather.severe,
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
#custom-weather.sunnyDay {
- background-image: linear-gradient(45deg, #95E6CB, #59C2FF, #D2A6FF);
- color: black;
- border: 1px;
- border-style: solid;
- border-radius: 6px;
- padding-top: 4px;
- padding-bottom: 4px;
- padding-right: 6px;
- padding-left: 6px;
+ background-image: linear-gradient(45deg, #95e6cb, #59c2ff, #d2a6ff);
+ color: black;
+ border: 1px;
+ border-style: solid;
+ border-radius: 6px;
+ padding-top: 4px;
+ padding-bottom: 4px;
+ padding-right: 6px;
+ padding-left: 6px;
}
#backlight {
- padding-right: 2px;
+ padding-right: 2px;
}
#custom-power {
- padding-left: 10px;
- padding-right: 2px;
+ padding-left: 0px;
+ padding-right: 2px;
}
#custom-menu {
- padding-right: 8px;
+ padding-right: 8px;
}
#custom-cycle_wall {
- padding-right: 2px;
+ padding-right: 2px;
}
#network {
- padding-right: 12px;
+ padding-right: 12px;
}
/*-----Indicators----*/
#custom-hypridle.notactive,
#idle_inhibitor.activated {
- color: #39FF14;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
+ color: #39ff14;
+ border-top: 8px solid rgba(0, 0, 0, 0.2);
}
#pulseaudio.muted {
- color: #cc3436;
+ color: #cc3436;
}
#temperature.critical {
- background: red;
- color: black;
+ background: red;
+ color: black;
}
@keyframes blink {
- to {
- color: #000000;
- }
+ to {
+ color: #000000;
+ }
}
#battery.critical:not(.charging) {
- color: #f53c3c;
- animation-name: blink;
- animation-duration: 3.0s;
- animation-timing-function: steps(12);
- animation-iteration-count: infinite;
- animation-direction: alternate;
+ color: #f53c3c;
+ animation-name: blink;
+ animation-duration: 3s;
+ animation-timing-function: steps(12);
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
}
#backlight-slider slider,
#pulseaudio-slider slider {
- min-width: 0px;
- min-height: 0px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
+ min-width: 0px;
+ min-height: 0px;
+ opacity: 0;
+ background-image: none;
+ border: none;
+ box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
- background-color: #7f849c;
- min-width: 80px;
- min-height: 5px;
- border-radius: 5px;
+ background-color: #7f849c;
+ min-width: 80px;
+ min-height: 5px;
+ border-radius: 5px;
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
- min-height: 10px;
- border-radius: 5px;
+ min-height: 10px;
+ border-radius: 5px;
}
/* --- tray readability override (global) --- */
diff --git a/config/waybar/style/Colorful-Oglo-Chicklets.css b/config/waybar/style/Colorful-Oglo-Chicklets.css
index e870c3e7..e0c574da 100644
--- a/config/waybar/style/Colorful-Oglo-Chicklets.css
+++ b/config/waybar/style/Colorful-Oglo-Chicklets.css
@@ -2,68 +2,72 @@
/* Oglo Chicklets */
* {
- font-family: "JetBrainsMono Nerd Font", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
- /* NOTE: Waybar v14+ ignores % font-size values */
- font-size: 99%;
- font-weight: bold;
+ font-family:
+ "JetBrainsMono Nerd Font", FontAwesome, Roboto, Helvetica, Arial, sans-serif;
+ /* NOTE: Waybar v14+ ignores % font-size values */
+ font-size: 99%;
+ font-weight: bold;
}
window#waybar {
- background-color: #232a2e;
- border-bottom: 8px solid #1d2327;
- color: #d3c6aa;
- transition-property: background-color;
- transition-duration: .5s;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background-color: #232a2e;
+ border-bottom: 8px solid #1d2327;
+ color: #d3c6aa;
+ transition-property: background-color;
+ transition-duration: 0.5s;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
window#waybar.hidden {
- opacity: 0.2;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ opacity: 0.2;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
/*
window#waybar.empty {
- background-color: transparent;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background-color: transparent;
+ font-size: 14px;
}
+*/
+
+/*
window#waybar.solo {
- background-color: #FFFFFF;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background-color: #ffffff;
+ font-size: 14px;
}
*/
button {
- all: unset;
- background-color: #778f52;
- color: #2d353b;
- border: none;
- border-bottom: 8px solid #5d743e;
- border-radius: 5px;
- padding-left: 15px;
- padding-right: 15px;
- transition: transform 0.1s ease-in-out;
+ all: unset;
+ background-color: #778f52;
+ color: #2d353b;
+ border: none;
+ border-bottom: 8px solid #5d743e;
+ border-radius: 5px;
+ padding-left: 15px;
+ padding-right: 15px;
+ padding-top: 2px;
+ padding-bottom: 2px;
+ transition: transform 0.1s ease-in-out;
}
button:hover {
- background: inherit;
- background-color: #92ab6c;
- border-bottom: 8px solid #788f57;
+ background: inherit;
+ background-color: #92ab6c;
+ border-bottom: 8px solid #788f57;
}
button.active {
- background: inherit;
- background-color: #a5be7e;
- border-bottom: 8px solid #8aa168;
+ background: inherit;
+ background-color: #a5be7e;
+ border-bottom: 8px solid #8aa168;
}
#mode {
- background-color: #64727D;
- border-bottom: 3px solid #ffffff;
+ background-color: #64727d;
+ border-bottom: 3px solid #ffffff;
}
#backlight,
@@ -74,14 +78,13 @@ button.active {
#cpu,
#disk,
#idle_inhibitor,
-#keyboard-state,
#memory,
#mode,
#mpris,
#network,
#power-profiles-daemon,
#pulseaudio,
-#pulseaudio-slider,
+#pulseaudio-slider,
#taskbar,
#temperature,
#tray,
@@ -120,249 +123,329 @@ button.active {
#custom-weather.clearNight,
#custom-weather.cloudyFoggyDay,
#custom-weather.cloudyFoggyNight,
-#custom-weather.default,
+#custom-weather.default,
#custom-weather.rainyDay,
#custom-weather.rainyNight,
#custom-weather.severe,
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
-#custom-weather.sunnyDay{
- color: #ffffff;
- padding-top: 2px;
- padding-bottom: 2px;
- border-radius: 5px;
- padding-left: 5px;
- padding-right: 5px;
+#custom-weather.sunnyDay {
+ color: #ffffff;
+ padding-top: 2px;
+ padding-bottom: 2px;
+ border-radius: 5px;
+ padding-left: 5px;
+ padding-right: 5px;
}
#window,
-#workspaces {
- margin: 0 4px;
+#custom-hypr_layout,
+#custom-cava_mviz,
+#custom-playerctl,
+#custom-spotify,
+#custom-media,
+#custom-updater {
+ margin: 0 4px;
+}
+
+#battery,
+#cpu,
+#memory,
+#disk,
+#network,
+#pulseaudio,
+#tray,
+#idle_inhibitor,
+#custom-swaync,
+#custom-menu,
+#custom-power {
+ margin-top: 2px;
+ margin-bottom: 2px;
}
/* If workspaces is the leftmost module, omit left margin */
.modules-left > widget:first-child > #workspaces {
- margin-left: 0;
+ margin-left: 0;
}
/* If workspaces is the rightmost module, omit right margin */
.modules-right > widget:last-child > #workspaces {
- margin-right: 0;
+ margin-right: 0;
}
-#window {
- background-color: #343f44;
- color: #d3c6aa;
- border-bottom: 8px solid #2b3539;
+#window,
+#custom-hypr_layout,
+#custom-cava_mviz,
+#custom-playerctl,
+#custom-spotify,
+#custom-media,
+#custom-updater {
+ background-color: #2980b9;
+ color: #ffffff;
+ border-bottom: 8px solid #1f618d;
+ padding-top: 2px;
+ padding-bottom: 2px;
+}
+
+#custom-weather2 {
+ background-color: #343f44;
+ color: #d3c6aa;
+ border-bottom: 8px solid #2b3539;
+ padding-top: 2px;
+ padding-bottom: 2px;
}
#custom-swaync {
- background-color: #778f52;
- color: #2d353b;
- border-bottom: 8px solid #5d743e;
+ background-color: #778f52;
+ color: #2d353b;
+ border-bottom: 8px solid #5d743e;
}
#custom-menu {
- background-color: #778f52;
- color: #2d353b;
- border-bottom: 8px solid #5d743e;
+ background-color: #778f52;
+ color: #2d353b;
+ border-bottom: 8px solid #5d743e;
}
#custom-power {
- background-color: #ee606a;
- color: #2d353b;
- border-bottom: 8px solid #ca4853;
- padding-left: 10px;
+ background-color: #ee606a;
+ color: #2d353b;
+ border-bottom: 8px solid #ca4853;
+ padding-left: 2px;
}
-#custom-power_vertical{
- background-color: #ee606a;
- color: #2d353b;
- border-bottom: 8px solid #ca4853;
+#custom-power_vertical {
+ background-color: #ee606a;
+ color: #2d353b;
+ border-bottom: 8px solid #ca4853;
}
#clock {
- background-color: #96a84c;
- color: #2d353b;
- border-bottom: 8px solid #7a8c37;
+ background-color: #96a84c;
+ color: #2d353b;
+ border-bottom: 8px solid #7a8c37;
}
#battery {
- background-color: #3a998f;
- color: #2d353b;
- border-bottom: 8px solid #227d74;
+ background-color: #3a998f;
+ color: #2d353b;
+ border-bottom: 8px solid #227d74;
}
@keyframes blink {
- to {
- background-color: #ffffff;
- color: #000000;
- }
+ to {
+ background-color: #ffffff;
+ color: #000000;
+ }
}
#battery.critical:not(.charging) {
- background-color: #ee606a;
- color: #2d353b;
- border-bottom: 8px solid #ca4853;
- animation-name: blink;
- animation-duration: 3.0s;
- animation-timing-function: steps(12);
- animation-iteration-count: infinite;
- animation-direction: alternate;
+ background-color: #ee606a;
+ color: #2d353b;
+ border-bottom: 8px solid #ca4853;
+ animation-name: blink;
+ animation-duration: 3s;
+ animation-timing-function: steps(12);
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
}
label:focus {
- background-color: #000000;
+ background-color: #000000;
}
#cpu {
- background-color: #778f52;
- color: #2d353b;
- border-bottom: 8px solid #5d743e;
+ background-color: #778f52;
+ color: #2d353b;
+ border-bottom: 8px solid #5d743e;
}
#memory {
- background-color: #d980ad;
- color: #2d353b;
- border-bottom: 8px solid #b86790;
+ background-color: #d980ad;
+ color: #2d353b;
+ border-bottom: 8px solid #b86790;
}
#disk {
- background-color: #964B00;
- border-bottom: 8px solid #793300;
+ background-color: #964b00;
+ border-bottom: 8px solid #793300;
}
#custom-lock,
#custom-light_dark,
#custom-nightlight,
#backlight {
- background-color: #64b6ac;
- color: #2d353b;
- border-bottom: 8px solid #4f9990;
- padding-left: 10px;
+ background-color: #64b6ac;
+ color: #2d353b;
+ border-bottom: 8px solid #4f9990;
+ padding-left: 10px;
}
#network {
- background-color: #2980b9;
+ background-color: #2980b9;
+ border-bottom: 8px solid #1f618d;
}
#network.disconnected {
- background-color: #f53c3c;
+ background-color: #f53c3c;
+ border-bottom: 8px solid #c0392b;
}
#pulseaudio {
- background-color: #d8ac47;
- color: #2d353b;
- border-bottom: 8px solid #b78f30;
+ background-color: #d8ac47;
+ color: #2d353b;
+ border-bottom: 8px solid #b78f30;
}
#pulseaudio.muted {
- background-color: #90b1b1;
- color: #2a5c45;
+ background-color: #90b1b1;
+ color: #2a5c45;
+ border-bottom: 8px solid #729292;
}
#wireplumber {
- background-color: #fff0f5;
- color: #000000;
+ background-color: #fff0f5;
+ color: #000000;
+ border-bottom: 8px solid #e0d1d6;
}
#wireplumber.muted {
- background-color: #f53c3c;
+ background-color: #f53c3c;
+ border-bottom: 8px solid #c0392b;
}
#custom-media {
- background-color: #66cc99;
- color: #2a5c45;
- min-width: 100px;
+ background-color: #66cc99;
+ color: #2a5c45;
+ min-width: 100px;
+ border-bottom: 8px solid #51a37a;
}
#custom-media.custom-spotify {
- background-color: #66cc99;
+ background-color: #66cc99;
}
#custom-media.custom-vlc {
- background-color: #ffa000;
+ background-color: #ffa000;
}
#temperature {
- background-color: #f0932b;
- border-bottom: 8px solid #b78f30;
+ background-color: #f0932b;
+ border-bottom: 8px solid #b78f30;
}
#temperature.critical {
- background-color: #eb4d4b;
+ background-color: #eb4d4b;
+ border-bottom: 8px solid #b73d3b;
}
#tray {
- background-color: #e67f51;
- color: #2d353b;;
- border-bottom: 8px solid #c3653b;
+ background-color: #e67f51;
+ color: #2d353b;
+ border-bottom: 8px solid #c3653b;
}
#tray > .passive {
- -gtk-icon-effect: dim;
+ -gtk-icon-effect: dim;
}
#tray > .needs-attention {
- -gtk-icon-effect: highlight;
- background-color: #eb4d4b;
+ -gtk-icon-effect: highlight;
+ background-color: #eb4d4b;
+ border-bottom: 8px solid #b73d3b;
}
#idle_inhibitor {
- background-color: #2d3436;
- border-bottom: 8px solid #1d2327;
+ background-color: #96a84c;
+ border-bottom: 8px solid #7a8c37;
+ color: #2d3436;
}
#idle_inhibitor.activated {
- background-color: #ecf0f1;
- border-bottom: 8px solid #7a8c37;
- color: #2d3436;
+ background-color: #eb4d4b;
+ border-bottom: 8px solid #7a8c37;
+ color: #2d3436;
}
#mpd {
- background-color: #66cc99;
- color: #2a5c45;
+ background-color: #66cc99;
+ color: #2a5c45;
+ border-bottom: 8px solid #51a37a;
}
#mpd.disconnected {
- background-color: #f53c3c;
+ background-color: #f53c3c;
+ border-bottom: 8px solid #c0392b;
}
#mpd.stopped {
- background-color: #90b1b1;
+ background-color: #90b1b1;
+ border-bottom: 8px solid #729292;
}
#mpd.paused {
- background-color: #51a37a;
+ background-color: #51a37a;
+ border-bottom: 8px solid #3d7a5c;
}
#language {
- background: #00b093;
- color: #740864;
- min-width: 16px;
+ background: #00b093;
+ color: #740864;
+ min-width: 16px;
+ border-bottom: 8px solid #008c75;
+}
+
+/* Specific styling for left workspaces to match center window */
+.modules-left #workspaces button {
+ background-color: #2980b9;
+ color: #ffffff;
+ border-bottom: 8px solid #1f618d;
+ padding-top: 2px;
+ padding-bottom: 2px;
+}
+
+.modules-left #workspaces button.active {
+ background-color: #3498db;
+ border-bottom: 8px solid #2980b9;
+ padding-top: 2px;
+ padding-bottom: 2px;
+}
+
+.modules-left #workspaces button:hover {
+ background-color: #3498db;
+ border-bottom: 8px solid #2980b9;
+ padding-top: 2px;
+ padding-bottom: 2px;
}
#keyboard-state {
- background: #97e1ad;
- color: #000000;
- min-width: 16px;
- border-bottom: 8px solid #78b48a;
+ background-color: #97e1ad;
+ color: #000000;
+ border-bottom: 8px solid #558b66;
+ padding-left: 10px;
+ padding-right: 10px;
+ padding-top: 2px;
+ padding-bottom: 2px;
+ margin-left: 4px;
+ margin-right: 4px;
+ border-radius: 5px;
}
#keyboard-state > label {
- padding: 0 5px;
+ padding: 0 5px;
+ background-color: transparent;
}
#keyboard-state > label.locked {
- background: rgba(0, 0, 0, 0.2);
+ background: rgba(0, 0, 0, 0.2);
}
#scratchpad {
- background: rgba(0, 0, 0, 0.2);
+ background: rgba(0, 0, 0, 0.2);
}
#scratchpad.empty {
- background-color: transparent;
+ background-color: transparent;
}
tooltip {
@@ -390,47 +473,46 @@ tooltip label {
font-size: 14px;
}
-
#pulseaudio-slider slider {
- min-width: 0px;
- min-height: 0px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
+ min-width: 0px;
+ min-height: 0px;
+ opacity: 0;
+ background-image: none;
+ border: none;
+ box-shadow: none;
}
#pulseaudio-slider trough {
- background-color: #7f849c;
- min-width: 80px;
- min-height: 5px;
- border-radius: 5px;
+ background-color: #7f849c;
+ min-width: 80px;
+ min-height: 5px;
+ border-radius: 5px;
}
#pulseaudio-slider highlight {
- min-height: 10px;
- border-radius: 5px;
+ min-height: 10px;
+ border-radius: 5px;
}
#backlight-slider slider {
- min-width: 0px;
- min-height: 0px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
+ min-width: 0px;
+ min-height: 0px;
+ opacity: 0;
+ background-image: none;
+ border: none;
+ box-shadow: none;
}
#backlight-slider trough {
- background-color: #7f849c;
- min-width: 80px;
- min-height: 10px;
- border-radius: 5px;
+ background-color: #7f849c;
+ min-width: 80px;
+ min-height: 10px;
+ border-radius: 5px;
}
#backlight-slider highlight {
- min-width: 10px;
- border-radius: 5px;
+ min-width: 10px;
+ border-radius: 5px;
}
/* --- tray readability override (global) --- */
diff --git a/config/waybar/style/Colorful-Rainbow-Spectrum.css b/config/waybar/style/Colorful-Rainbow-Spectrum.css
index a23fb79a..88deb406 100644
--- a/config/waybar/style/Colorful-Rainbow-Spectrum.css
+++ b/config/waybar/style/Colorful-Rainbow-Spectrum.css
@@ -2,86 +2,86 @@
/* Rainbow Spectrum */
* {
-font-family: "JetBrainsMono Nerd Font";
-font-weight: bold;
-min-height: 0;
-/* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
-/* NOTE: Waybar v14+ ignores % font-size values */
-font-size: 99%;
-font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ min-height: 0;
+ /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
+ /* NOTE: Waybar v14+ ignores % font-size values */
+ font-size: 99%;
+ font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
}
window#waybar {
- background-color: rgba(0,0,0,0);
- transition-property: background-color;
- transition-duration: .5s;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background-color: rgba(0, 0, 0, 0);
+ transition-property: background-color;
+ transition-duration: 0.5s;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
window#waybar.hidden {
- opacity: 0.5;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ opacity: 0.5;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
window#waybar.empty,
window#waybar.empty #window {
- padding: 0px;
- border: 0px;
- background-color: transparent;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ padding: 0px;
+ border: 0px;
+ background-color: transparent;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
tooltip {
- background: #1e1e2e;
- opacity: 0.8;
- border-radius: 10px;
- border-width: 2px;
- border-style: solid;
- border-color: #11111b;
+ background: #1e1e2e;
+ opacity: 0.8;
+ border-radius: 10px;
+ border-width: 2px;
+ border-style: solid;
+ border-color: #11111b;
}
/* Waybar scaling: adjust tooltip label font-size to scale the bar */
-tooltip label{
- color: #cdd6f4;
- /* Waybar scaling: adjust tooltip label font-size to scale the bar */
- font-size: 14px;
+tooltip label {
+ color: #cdd6f4;
+ /* Waybar scaling: adjust tooltip label font-size to scale the bar */
+ font-size: 14px;
}
#taskbar button,
#workspaces button {
- background-color: #d9e0ee;
- color: #3A3B3C;
- box-shadow: none;
- text-shadow: none;
- padding: 0px;
- border-radius: 9px;
- padding-left: 4px;
- padding-right: 4px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.682);
+ background-color: #d9e0ee;
+ color: #3a3b3c;
+ box-shadow: none;
+ text-shadow: none;
+ padding: 0px;
+ border-radius: 9px;
+ padding-left: 4px;
+ padding-right: 4px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.5s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#taskbar button.active,
#workspaces button.active {
- background-color: #eba0ac;
- color: #3A3B3C;
- padding-left: 8px;
- padding-right: 8px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ background-color: #eba0ac;
+ color: #3a3b3c;
+ padding-left: 8px;
+ padding-right: 8px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#taskbar button:hover,
#workspaces button:hover {
- background: #eb6f92;
- color: #f6c177;
- padding-left: 3px;
- padding-right: 3px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ background: #eb6f92;
+ color: #f6c177;
+ padding-left: 3px;
+ padding-right: 3px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#backlight,
@@ -139,96 +139,96 @@ tooltip label{
#custom-weather.clearNight,
#custom-weather.cloudyFoggyDay,
#custom-weather.cloudyFoggyNight,
-#custom-weather.default,
+#custom-weather.default,
#custom-weather.rainyDay,
#custom-weather.rainyNight,
#custom-weather.severe,
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
#custom-weather.sunnyDay {
- border-radius: 16px;
- color: #3A3B3C;
- border: 1px solid #b4befe;
- padding-top: 4px;
- padding-bottom: 4px;
- padding-right: 6px;
- padding-left: 6px;
+ border-radius: 16px;
+ color: #3a3b3c;
+ border: 1px solid #b4befe;
+ padding-top: 4px;
+ padding-bottom: 4px;
+ padding-right: 6px;
+ padding-left: 6px;
}
#backlight {
- background-color: #cba6f7;
+ background-color: #cba6f7;
}
#battery {
- background-color: #f9e2af;
+ background-color: #f9e2af;
}
@keyframes blink {
- to {
- color: #000000;
- }
+ to {
+ color: #000000;
+ }
}
#battery.critical:not(.charging) {
- background-color: #f38ba8;
- color: #f38ba8;
- animation-name: blink;
- animation-duration: 3.0s;
- animation-timing-function: steps(12);
- animation-iteration-count: infinite;
- animation-direction: alternate;
+ background-color: #f38ba8;
+ color: #f38ba8;
+ animation-name: blink;
+ animation-duration: 3s;
+ animation-timing-function: steps(12);
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
}
#clock {
- background-color: #a6e3a1;
+ background-color: #a6e3a1;
}
#mpris {
- background-color: #fab387;
- color: black;
+ background-color: #fab387;
+ color: black;
}
#custom-keyboard,
#keyboard-state,
#keyboard-state label,
#keyboard-state label.locked,
#cpu {
- background-color: #89dceb;
+ background-color: #89dceb;
}
#memory {
- background-color: #eba0ac;
+ background-color: #eba0ac;
}
#disk {
- background-color: #b4befe;
+ background-color: #b4befe;
}
#tray {
- background-color: #b4befe;
+ background-color: #b4befe;
}
#tray > .passive {
- -gtk-icon-effect: dim;
+ -gtk-icon-effect: dim;
}
#tray > .needs-attention {
- -gtk-icon-effect: highlight;
+ -gtk-icon-effect: highlight;
}
#custom-menu {
- background-color: #f5c2e7;
- /*padding: 1px;*/
- padding-right: 10px;
- border-radius: 16px;
- color: #3A3B3C;
- border: 1px solid #b4befe;
+ background-color: #f5c2e7;
+ /*padding: 1px;*/
+ padding-right: 10px;
+ border-radius: 16px;
+ color: #3a3b3c;
+ border: 1px solid #b4befe;
}
#custom-power {
- background-color: #f38ba8;
- padding: 0px 0px 0px 6px;
+ background-color: #f38ba8;
+ padding: 0px 0px 0px 0px;
}
#custom-updater {
- background-color: #e6ed7b;
+ background-color: #e6ed7b;
}
#custom-cava_mviz,
@@ -237,35 +237,35 @@ tooltip label{
#custom-file_manager,
#custom-tty,
#custom-settings {
- background: linear-gradient(45deg, #14e81e 10%, #017ed5 54%, #8d00c4 90%);
+ background: linear-gradient(45deg, #14e81e 10%, #017ed5 54%, #8d00c4 90%);
}
#custom-cycle_wall {
- background-color: #94e2d5;
+ background-color: #94e2d5;
}
#custom-swaync,
#custom-weather {
- background-color: #cba6f7;
+ background-color: #cba6f7;
}
#custom-reboot,
#wireplumber {
- background-color: #a6e3a1;
+ background-color: #a6e3a1;
}
#wireplumber.muted {
- background-color: #313244;
- color: #cdd6f4;
+ background-color: #313244;
+ color: #cdd6f4;
}
#custom-lock {
- background-color: #89dceb;
+ background-color: #89dceb;
}
#custom-quit,
#temperature {
- background-color: #86b4fa;
+ background-color: #86b4fa;
}
#temperature.critical {
@@ -277,67 +277,68 @@ tooltip label{
#custom-nightlight,
#custom-hypridle,
#idle_inhibitor {
- background-color: #86b4fa;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
+ background-color: #86b4fa;
+ border-bottom: 0px solid rgba(0, 0, 0, 0.2);
}
/*-----Indicators----*/
#custom-hypridle.notactive,
#idle_inhibitor.activated {
- color: #39FF14;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
+ color: #39ff14;
+ border-bottom: 0px solid rgba(0, 0, 0, 0.2);
}
#bluetooth {
- background-color: #89dceb;
+ background-color: #89dceb;
}
#window {
- background-color: #89dceb;
+ background-color: #89dceb;
}
#custom-hint,
#pulseaudio {
- background-color: #fab387;
+ background-color: #fab387;
}
#pulseaudio.bluetooth {
- background-color: #f5c2e7;
+ background-color: #f5c2e7;
}
#pulseaudio.muted {
- background-color: #313244;
- color: #cdd6f4;
+ background-color: #313244;
+ color: #cdd6f4;
}
#network {
- background-color: #89b4fa;
- padding-right: 12px;
+ background-color: #89b4fa;
+ padding-right: 12px;
}
-#network.disconnected,#network.disabled {
- background-color: #313244;
- color: #cdd6f4;
+#network.disconnected,
+#network.disabled {
+ background-color: #313244;
+ color: #cdd6f4;
}
#backlight-slider slider,
#pulseaudio-slider slider {
- min-width: 0px;
- min-height: 0px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
+ min-width: 0px;
+ min-height: 0px;
+ opacity: 0;
+ background-image: none;
+ border: none;
+ box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
- min-width: 80px;
- min-height: 5px;
- border-radius: 5px;
+ min-width: 80px;
+ min-height: 5px;
+ border-radius: 5px;
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
- min-height: 10px;
- border-radius: 5px;
+ min-height: 10px;
+ border-radius: 5px;
}
/* --- tray readability override (global) --- */
diff --git a/config/waybar/style/Colorful-stolen-style.css b/config/waybar/style/Colorful-stolen-style.css
index b3ba6149..35d96a0a 100644
--- a/config/waybar/style/Colorful-stolen-style.css
+++ b/config/waybar/style/Colorful-stolen-style.css
@@ -1,13 +1,13 @@
/* ----------- 💫 https://github.com/LinuxBeginnings 💫 -------- */
/* ....[Colorful] Stolen ......... */
* {
- font-family: "JetBrainsMono Nerd Font";
- font-weight: bold;
- min-height: 0;
- /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
- /* NOTE: Waybar v14+ ignores % font-size values */
- font-size: 99%;
- font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ min-height: 0;
+ /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
+ /* NOTE: Waybar v14+ ignores % font-size values */
+ font-size: 99%;
+ font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
}
window#waybar {
@@ -126,7 +126,7 @@ window#waybar.empty #window {
#idle_inhibitor {
color: #7aa2f7;
- border-bottom: 2px solid #455a64;
+ border-top: 2px solid #455a64;
}
#backlight {
@@ -189,7 +189,6 @@ window#waybar.empty #window {
#custom-niflveil.empty {
color: #c0caf5;
-
}
#cpu {
@@ -247,17 +246,15 @@ window#waybar.empty #window {
}
#custom-menu {
-
color: #7dcfff;
padding-left: 14px;
padding-right: 12px;
}
#custom-power {
-
color: #f7768e;
- padding-left: 8px;
- padding-right: 17px;
+ padding-left: 6px;
+ padding-right: 10px;
}
#custom-updater {
@@ -266,7 +263,6 @@ window#waybar.empty #window {
border-radius: 20px;
padding-left: 10pt;
padding-right: 12px;
-
}
#custom-light_dark {
@@ -275,7 +271,6 @@ window#waybar.empty #window {
#custom-weather {
color: #9fe044;
-
}
#custom-speaker {
@@ -284,7 +279,6 @@ window#waybar.empty #window {
#pulseaudio {
color: #faba4a;
-
}
#pulseaudio.bluetooth {
diff --git a/config/waybar/style/Dark-Golden-Eclipse.css b/config/waybar/style/Dark-Golden-Eclipse.css
index 0a8e7fe4..2a45a91a 100644
--- a/config/waybar/style/Dark-Golden-Eclipse.css
+++ b/config/waybar/style/Dark-Golden-Eclipse.css
@@ -2,26 +2,25 @@
/* Golden Eclipse */
* {
-font-family: "JetBrainsMono Nerd Font";
-font-weight: bold;
-min-height: 0;
-/* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
-/* NOTE: Waybar v14+ ignores % font-size values */
-font-size: 99%;
-font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
-padding: 1px;
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ min-height: 0;
+ /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
+ /* NOTE: Waybar v14+ ignores % font-size values */
+ font-size: 99%;
+ font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
+ padding: 1px;
}
-
window#waybar {
transition-property: background-color;
transition-duration: 0.5s;
- background: #000000;
- padding-top: 3px;
- padding-bottom: 3px;
- padding-right: 4px;
- padding-left: 4px;
- border-radius: 12px;
+ background: #000000;
+ padding-top: 3px;
+ padding-bottom: 3px;
+ padding-right: 4px;
+ padding-left: 4px;
+ border-radius: 12px;
/* Waybar scaling: adjust font-size to scale the bar */
font-size: 14px;
}
@@ -51,7 +50,7 @@ window#waybar.hidden {
#network,
#power-profiles-daemon,
#pulseaudio,
-#pulseaudio-slider,
+#pulseaudio-slider,
#taskbar,
#temperature,
#tray,
@@ -89,18 +88,18 @@ window#waybar.hidden {
#custom-weather.clearNight,
#custom-weather.cloudyFoggyDay,
#custom-weather.cloudyFoggyNight,
-#custom-weather.default,
+#custom-weather.default,
#custom-weather.rainyDay,
#custom-weather.rainyNight,
#custom-weather.severe,
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
-#custom-weather.sunnyDay{
- color: #fcba03;
- padding-top: 3px;
- padding-bottom: 3px;
- padding-right: 6px;
- padding-left: 6px;
+#custom-weather.sunnyDay {
+ color: #fcba03;
+ padding-top: 3px;
+ padding-bottom: 3px;
+ padding-right: 6px;
+ padding-left: 6px;
}
#temperature.critical {
@@ -115,73 +114,72 @@ window#waybar.hidden {
}
@keyframes blink {
- to {
- color: #000000;
- }
+ to {
+ color: #000000;
+ }
}
/*-----Indicators----*/
#custom-hypridle.notactive,
#idle_inhibitor.activated {
- color: cyan;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
+ color: cyan;
+ border-top: 8px solid rgba(0, 0, 0, 0.2);
}
#battery.critical:not(.charging) {
- color: #f53c3c;
- animation-name: blink;
- animation-duration: 3.0s;
- animation-timing-function: steps(12);
- animation-iteration-count: infinite;
- animation-direction: alternate;
+ color: #f53c3c;
+ animation-name: blink;
+ animation-duration: 3s;
+ animation-timing-function: steps(12);
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
}
#taskbar button,
#workspaces button {
- box-shadow: none;
- text-shadow: none;
- padding: 0px;
- border-radius: 9px;
- padding-left: 4px;
- padding-right: 4px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.682);
- color: #fcba03;
+ box-shadow: none;
+ text-shadow: none;
+ padding: 0px;
+ border-radius: 9px;
+ padding-left: 4px;
+ padding-right: 4px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.5s cubic-bezier(0.55, -0.68, 0.48, 1.682);
+ color: #fcba03;
}
#taskbar button:hover,
#workspaces button:hover {
- border-radius: 10px;
- color: #a6adc8;
- background-color: #ffeb8a;
- padding-left: 2px;
- padding-right: 2px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ border-radius: 10px;
+ color: #a6adc8;
+ background-color: #ffeb8a;
+ padding-left: 2px;
+ padding-right: 2px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#workspaces button.persistent {
- color: #fcba03;
- border-radius: 10px;
+ color: #fcba03;
+ border-radius: 10px;
}
#taskbar button.active,
#workspaces button.active {
- color: black;
- background-color: #fcba03;
- border-radius: 10px;
- padding-left: 8px;
- padding-right: 8px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: black;
+ background-color: #fcba03;
+ border-radius: 10px;
+ padding-left: 8px;
+ padding-right: 8px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#workspaces button.urgent {
- color: red;
- border-radius: 0px;
+ color: red;
+ border-radius: 0px;
}
-
#pulseaudio.muted {
color: red;
}
@@ -194,25 +192,25 @@ window#waybar.hidden {
#backlight-slider slider,
#pulseaudio-slider slider {
- min-width: 0px;
- min-height: 0px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
+ min-width: 0px;
+ min-height: 0px;
+ opacity: 0;
+ background-image: none;
+ border: none;
+ box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
- min-width: 80px;
- min-height: 5px;
- border-radius: 5px;
+ min-width: 80px;
+ min-height: 5px;
+ border-radius: 5px;
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
- min-height: 10px;
- border-radius: 5px;
+ min-height: 10px;
+ border-radius: 5px;
}
/* --- tray readability override (global) --- */
diff --git a/config/waybar/style/Dark-Golden-Noir.css b/config/waybar/style/Dark-Golden-Noir.css
index edfd3c7f..d9b4c33c 100644
--- a/config/waybar/style/Dark-Golden-Noir.css
+++ b/config/waybar/style/Dark-Golden-Noir.css
@@ -3,101 +3,100 @@
/* --- 👍 designed by https://github.com/Krautt 👍 --- */
* {
- font-family: "JetBrainsMono Nerd Font";
- font-weight: bold;
- min-height: 0;
- /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
- /* NOTE: Waybar v14+ ignores % font-size values */
- font-size: 99%;
- font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ min-height: 0;
+ /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
+ /* NOTE: Waybar v14+ ignores % font-size values */
+ font-size: 99%;
+ font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
}
window#waybar {
- background: #040406;
- border-radius: 30px;
- color: #cba6f7;
+ background: #040406;
+ border-radius: 30px;
+ color: #cba6f7;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
window#waybar.hidden {
- opacity: 0.5;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ opacity: 0.5;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
tooltip {
- background: #1e1e2e;
- border-radius: 10px;
- border-width: 2px;
- border-style: solid;
- border-color: #11111b;
- color: #ffd700;
+ background: #1e1e2e;
+ border-radius: 10px;
+ border-width: 2px;
+ border-style: solid;
+ border-color: #11111b;
+ color: #ffd700;
}
/*-----module groups----*/
.modules-left,
.modules-right {
- padding-top: 2px;
- padding-bottom: 2px;
- padding-right: 4px;
- padding-left: 4px;
-
+ padding-top: 2px;
+ padding-bottom: 2px;
+ padding-right: 4px;
+ padding-left: 4px;
}
.modules-center {
- border-left: 1px solid #ffd700;
- border-right: 1px solid #ffd700;
- border-radius: 20px;
- padding-top: 2px;
- padding-bottom: 2px;
- padding-right: 4px;
- padding-left: 4px;
+ border-left: 1px solid #ffd700;
+ border-right: 1px solid #ffd700;
+ border-radius: 20px;
+ padding-top: 2px;
+ padding-bottom: 2px;
+ padding-right: 4px;
+ padding-left: 4px;
}
#taskbar button,
#workspaces button {
- color: #6E6A86;
- box-shadow: none;
- text-shadow: none;
- padding: 0px;
- border-radius: 9px;
- padding-left: 4px;
- padding-right: 4px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.682);
+ color: #6e6a86;
+ box-shadow: none;
+ text-shadow: none;
+ padding: 0px;
+ border-radius: 9px;
+ padding-left: 4px;
+ padding-right: 4px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.5s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#taskbar button.active,
#workspaces button.active {
- color: #ffd700;
- border-radius: 50%;
- background-color: black;
- border-radius: 15px 15px 15px 15px;
- padding-left: 8px;
- padding-right: 8px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: #ffd700;
+ border-radius: 50%;
+ background-color: black;
+ border-radius: 15px 15px 15px 15px;
+ padding-left: 8px;
+ padding-right: 8px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#workspaces button.focused {
- color: #d8dee9;
+ color: #d8dee9;
}
#workspaces button.urgent {
- color: #11111b;
- border-radius: 10px;
+ color: #11111b;
+ border-radius: 10px;
}
#taskbar button:hover,
#workspaces button:hover {
- color: #ffd700;
- border-radius: 15px;
- padding-left: 2px;
- padding-right: 2px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: #ffd700;
+ border-radius: 15px;
+ padding-left: 2px;
+ padding-right: 2px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#backlight,
@@ -154,69 +153,69 @@ tooltip {
#custom-weather.clearNight,
#custom-weather.cloudyFoggyDay,
#custom-weather.cloudyFoggyNight,
-#custom-weather.default,
+#custom-weather.default,
#custom-weather.rainyDay,
#custom-weather.rainyNight,
#custom-weather.severe,
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
#custom-weather.sunnyDay {
- color: #e5d9f5;
- padding-top: 5px;
- padding-bottom: 5px;
- padding-right: 6px;
- padding-left: 6px;
+ color: #e5d9f5;
+ padding-top: 5px;
+ padding-bottom: 5px;
+ padding-right: 6px;
+ padding-left: 6px;
}
#temperature.critical {
- background-color: #ff0000;
+ background-color: #ff0000;
}
@keyframes blink {
- to {
- color: #000000;
- }
+ to {
+ color: #000000;
+ }
}
/*-----Indicators----*/
#custom-hypridle.notactive,
#idle_inhibitor.activated {
- color: #39FF14;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
+ color: #39ff14;
+ border-top: 8px solid rgba(0, 0, 0, 0.2);
}
#battery.critical:not(.charging) {
- color: #f53c3c;
- animation-name: blink;
- animation-duration: 3.0s;
- animation-timing-function: steps(12);
- animation-iteration-count: infinite;
- animation-direction: alternate;
+ color: #f53c3c;
+ animation-name: blink;
+ animation-duration: 3s;
+ animation-timing-function: steps(12);
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
}
#backlight-slider slider,
#pulseaudio-slider slider {
- min-width: 0px;
- min-height: 0px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
+ min-width: 0px;
+ min-height: 0px;
+ opacity: 0;
+ background-image: none;
+ border: none;
+ box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
- min-width: 80px;
- min-height: 5px;
- border-radius: 5px;
- background-color: #22252a;
+ min-width: 80px;
+ min-height: 5px;
+ border-radius: 5px;
+ background-color: #22252a;
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
- min-height: 10px;
- border-radius: 5px;
- background-color: #ba5663;
+ min-height: 10px;
+ border-radius: 5px;
+ background-color: #ba5663;
}
/* --- tray readability override (global) --- */
diff --git a/config/waybar/style/Dark-Half-Moon.css b/config/waybar/style/Dark-Half-Moon.css
index 797a1c68..776ffcc3 100644
--- a/config/waybar/style/Dark-Half-Moon.css
+++ b/config/waybar/style/Dark-Half-Moon.css
@@ -4,45 +4,46 @@
/* --- 👍 shared by https://github.com/TomekBobrowicz 👍 --- */
* {
- font-family: "JetBrainsMono Nerd Font";
- font-weight: bold;
- min-height: 0;
- /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
- /* NOTE: Waybar v14+ ignores % font-size values */
- font-size: 99%;
- font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ min-height: 0;
+ /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
+ /* NOTE: Waybar v14+ ignores % font-size values */
+ font-size: 99%;
+ font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
}
-
window#waybar {
- background-color: rgba(26,27,38,0);
- border-bottom: 1px solid rgba(26,27,38,0);
+ background-color: rgba(26, 27, 38, 0);
+ border-bottom: 1px solid rgba(26, 27, 38, 0);
border-radius: 0px;
- color: #E6B673;
+ color: #e6b673;
/* Waybar scaling: adjust font-size to scale the bar */
font-size: 14px;
}
-#waybar.empty, #waybar.tiled, #waybar.floating {
- background-color: transparent;
+#waybar.empty,
+#waybar.tiled,
+#waybar.floating {
+ background-color: transparent;
}
window#waybar.empty,
window#waybar.empty #window {
- background-color: transparent;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background-color: transparent;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
#taskbar,
#workspaces {
- background: #0F1419;
+ background: #0f1419;
margin: 5px;
padding: 0px 1px;
border-radius: 15px;
border: 0px;
font-style: normal;
- color: #0F1419;
+ color: #0f1419;
}
#taskbar button,
@@ -51,10 +52,10 @@ window#waybar.empty #window {
margin: 4px 3px;
border-radius: 15px;
border: 0px;
- color: #0F1419;
- background: linear-gradient(45deg, #95E6CB, #59C2FF, #D2A6FF);
+ color: #0f1419;
+ background: linear-gradient(45deg, #95e6cb, #59c2ff, #d2a6ff);
opacity: 0.5;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#taskbar button.active,
@@ -63,70 +64,69 @@ window#waybar.empty #window {
margin: 4px 3px;
border-radius: 15px;
border: 0px;
- color: #0F1419;
- background: linear-gradient(45deg, #59C2FF, #D2A6FF);
- opacity: 1.0;
+ color: #0f1419;
+ background: linear-gradient(45deg, #59c2ff, #d2a6ff);
+ opacity: 1;
min-width: 40px;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#workspaces button:hover {
border-radius: 15px;
- color: #0F1419;
- background: linear-gradient(45deg, #59C2FF, #D2A6FF);
+ color: #0f1419;
+ background: linear-gradient(45deg, #59c2ff, #d2a6ff);
opacity: 0.8;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
-
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
@keyframes gradient_horizontal {
-0% {
- background-position: 0% 50%;
- }
-50% {
- background-position: 100% 50%;
- }
-100% {
- background-position: 0% 50%;
- }
+ 0% {
+ background-position: 0% 50%;
+ }
+ 50% {
+ background-position: 100% 50%;
+ }
+ 100% {
+ background-position: 0% 50%;
+ }
}
@keyframes swiping {
-0% {
- background-position: 0% 200%;
- }
-100% {
- background-position: 200% 200%;
- }
+ 0% {
+ background-position: 0% 200%;
+ }
+ 100% {
+ background-position: 200% 200%;
+ }
}
tooltip {
-background: #0F1419;
-border: 1px solid #D2A6FF;
-border-radius: 10px;
+ background: #0f1419;
+ border: 1px solid #d2a6ff;
+ border-radius: 10px;
}
/* Waybar scaling: adjust tooltip label font-size to scale the bar */
tooltip label {
-color: #F3F4F5;
-/* Waybar scaling: adjust tooltip label font-size to scale the bar */
-font-size: 14px;
+ color: #f3f4f5;
+ /* Waybar scaling: adjust tooltip label font-size to scale the bar */
+ font-size: 14px;
}
#window {
- color: #E6E1CF;
- background: #0F1419;
- border-radius: 50px 50px;
- margin: 5px;
- padding: 2px 15px;
+ color: #e6e1cf;
+ background: #0f1419;
+ border-radius: 50px 50px;
+ margin: 5px;
+ padding: 2px 15px;
}
#temperature,
#memory {
- color: #E6B673;
- background: #0F1419;
- border-radius: 50px 50px;
- margin: 5px;
- padding: 2px 15px;
+ color: #e6b673;
+ background: #0f1419;
+ border-radius: 50px 50px;
+ margin: 5px;
+ padding: 2px 15px;
}
#custom-light_dark,
@@ -137,205 +137,205 @@ font-size: 14px;
#custom-hypr_layout,
#idle_inhibitor,
#clock {
- color: #B8CC52;
- background: #0F1419;
- border-radius: 50px 50px;
- margin: 5px;
- padding: 2px 15px;
+ color: #b8cc52;
+ background: #0f1419;
+ border-radius: 50px 50px;
+ margin: 5px;
+ padding: 2px 15px;
}
/*-----Indicators----*/
#custom-hypridle.notactive,
#idle_inhibitor.activated {
- color: #39FF14;
- border-bottom: 1px solid rgba(26,27,38,0);
+ color: #39ff14;
+ border-top: 6px solid rgba(26, 27, 38, 0);
}
#bluetooth {
- color: blue;
- background: #0F1419;
- border-radius: 50px 50px;
- margin: 5px;
- padding: 2px 15px;
+ color: blue;
+ background: #0f1419;
+ border-radius: 50px 50px;
+ margin: 5px;
+ padding: 2px 15px;
}
#custom-playerctl,
#power-profiles-daemon,
#custom-cycle_wall,
#cpu {
- color: #F3F4F5;
- background: #0F1419;
- border-radius: 50px 50px;
- margin: 5px;
- padding: 2px 15px;
+ color: #f3f4f5;
+ background: #0f1419;
+ border-radius: 50px 50px;
+ margin: 5px;
+ padding: 2px 15px;
}
#disk {
- color: #B8CC52;
- background: #0F1419;
- border-radius: 50px 50px;
- margin: 5px;
- padding: 2px 15px;
+ color: #b8cc52;
+ background: #0f1419;
+ border-radius: 50px 50px;
+ margin: 5px;
+ padding: 2px 15px;
}
#backlight,
#battery {
- color: #F07178;
- background: #0F1419;
- border-radius: 50px 50px;
- margin: 5px;
- padding: 2px 15px;
+ color: #f07178;
+ background: #0f1419;
+ border-radius: 50px 50px;
+ margin: 5px;
+ padding: 2px 15px;
}
#mpris {
- color: #F07178;
- background: #0F1419;
- border-radius: 50px 50px;
- margin: 5px;
- padding-left: 8px;
- padding-right: 2px;
+ color: #f07178;
+ background: #0f1419;
+ border-radius: 50px 50px;
+ margin: 5px;
+ padding-left: 8px;
+ padding-right: 2px;
}
#backlight {
- color: white;
- background: #0F1419;
- border-radius: 50px 50px;
- margin: 5px;
- padding: 2px 15px;
+ color: white;
+ background: #0f1419;
+ border-radius: 50px 50px;
+ margin: 5px;
+ padding: 2px 15px;
}
#network {
- color: #FF8F40;
- background: #0F1419;
- border-radius: 50px 50px;
- margin: 5px;
- padding: 2px 15px;
+ color: #ff8f40;
+ background: #0f1419;
+ border-radius: 50px 50px;
+ margin: 5px;
+ padding: 2px 15px;
}
#custom-hyprbindings {
- color: #D2A6FF;
- background: #0F1419;
- background: #0F1419;
- border-radius: 50px 50px;
- margin: 5px;
- padding: 2px 15px;
+ color: #d2a6ff;
+ background: #0f1419;
+ background: #0f1419;
+ border-radius: 50px 50px;
+ margin: 5px;
+ padding: 2px 15px;
}
#tray {
- color: #E6E1CF;
- background: #0F1419;
- border-radius: 50px 50px;
- margin: 5px;
- padding: 2px 15px;
+ color: #e6e1cf;
+ background: #0f1419;
+ border-radius: 50px 50px;
+ margin: 5px;
+ padding: 2px 15px;
}
#pulseaudio {
- color: #59C2FF;
- background: #0F1419;
- border-radius: 50px 50px;
- margin: 5px;
- padding: 2px 15px;
+ color: #59c2ff;
+ background: #0f1419;
+ border-radius: 50px 50px;
+ margin: 5px;
+ padding: 2px 15px;
}
#custom-notification {
- color: #95E6CB;
- background: #0F1419;
- border-radius: 50px 50px;
- margin: 5px;
- padding: 2px 15px;
+ color: #95e6cb;
+ background: #0f1419;
+ border-radius: 50px 50px;
+ margin: 5px;
+ padding: 2px 15px;
}
#custom-browser,
#custom-file_manager,
#custom-tty,
#custom-settings {
- border-radius: 50px 50px;
- margin: 5px;
- padding: 2px 15px;
- color: #0F1419;
- background: linear-gradient(45deg, #95E6CB, #59C2FF, #D2A6FF);
+ border-radius: 50px 50px;
+ margin: 5px;
+ padding: 2px 15px;
+ color: #0f1419;
+ background: linear-gradient(45deg, #95e6cb, #59c2ff, #d2a6ff);
}
#custom-weather {
- color: #59C2FF;
- background: #0F1419;
- border-radius: 50px 50px;
- margin: 5px;
- padding: 2px 15px;
+ color: #59c2ff;
+ background: #0f1419;
+ border-radius: 50px 50px;
+ margin: 5px;
+ padding: 2px 15px;
}
#custom-weather2 {
- color: #59C2FF;
- background: #0F1419;
- border-radius: 50px 50px;
- margin: 5px;
- padding: 2px 15px;
+ color: #59c2ff;
+ background: #0f1419;
+ border-radius: 50px 50px;
+ margin: 5px;
+ padding: 2px 15px;
}
#custom-menu {
- color: #59C2FF;
- background: #0F1419;
- border-radius: 0px 15px 50px 0px;
- margin: 5px 5px 5px 0px;
- padding: 1px 15px;
+ color: #59c2ff;
+ background: #0f1419;
+ border-radius: 0px 15px 50px 0px;
+ margin: 5px 5px 5px 0px;
+ padding: 1px 15px;
}
#custom-power {
- color: #D2A6FF;
- background: #0F1419;
- border-radius: 15px 0px 0px 50px;
- margin: 5px 0px;
- padding: 2px 5px 2px 15px;
-}
+ color: #d2a6ff;
+ background: #0f1419;
+ border-radius: 15px 0px 0px 50px;
+ margin: 5px 0px;
+ padding: 2px 5px 2px 15px;
+}
#custom-lock {
- color: red;
- background: #0F1419;
- border-radius: 50px 50px;
- margin: 5px;
- padding: 2px 15px;
+ color: red;
+ background: #0f1419;
+ border-radius: 50px 50px;
+ margin: 5px;
+ padding: 2px 15px;
}
#custom-power_vertical,
#keyboard-state {
- color: green;
- background: #0F1419;
- border-radius: 50px 50px;
- margin: 5px;
- padding: 2px 15px;
+ color: green;
+ background: #0f1419;
+ border-radius: 50px 50px;
+ margin: 5px;
+ padding: 2px 15px;
}
#battery.critical:not(.charging) {
- color: #f53c3c;
- animation-name: blink;
- animation-duration: 3.0s;
- animation-timing-function: steps(12);
- animation-iteration-count: infinite;
- animation-direction: alternate;
+ color: #f53c3c;
+ animation-name: blink;
+ animation-duration: 3s;
+ animation-timing-function: steps(12);
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
}
#backlight-slider slider,
#pulseaudio-slider slider {
- min-width: 0px;
- min-height: 0px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
+ min-width: 0px;
+ min-height: 0px;
+ opacity: 0;
+ background-image: none;
+ border: none;
+ box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
- min-width: 80px;
- min-height: 5px;
- border-radius: 5px;
- background-color: #6E6A86;
+ min-width: 80px;
+ min-height: 5px;
+ border-radius: 5px;
+ background-color: #6e6a86;
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
- min-height: 10px;
- border-radius: 5px;
- background-color: purple;
+ min-height: 10px;
+ border-radius: 5px;
+ background-color: purple;
}
/* --- tray readability override (global) --- */
diff --git a/config/waybar/style/Dark-Latte-Wallust-combined.css b/config/waybar/style/Dark-Latte-Wallust-combined.css
index 898c3dc2..7f698cb5 100644
--- a/config/waybar/style/Dark-Latte-Wallust-combined.css
+++ b/config/waybar/style/Dark-Latte-Wallust-combined.css
@@ -17,106 +17,106 @@
@define-color button-color @color11;
@define-color button-hover @color13;
-@import '../../.config/waybar/wallust/colors-waybar.css';
+@import "../../.config/waybar/wallust/colors-waybar.css";
@import "../waybar/style/catppuccin-themes/latte.css";
* {
- font-family: "JetBrainsMono Nerd Font";
- font-weight: bold;
- min-height: 0;
- /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
- /* NOTE: Waybar v14+ ignores % font-size values */
- font-size: 99%;
- font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ min-height: 0;
+ /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
+ /* NOTE: Waybar v14+ ignores % font-size values */
+ font-size: 99%;
+ font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
}
window#waybar {
- background: transparent;
- border-radius: 0px;
- color: #cba6f7;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background: transparent;
+ border-radius: 0px;
+ color: #cba6f7;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
window#waybar.hidden {
- opacity: 0;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ opacity: 0;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
tooltip {
- background: #1e1e2e;
- border-radius: 12px;
- border-width: 1px;
- border-style: solid;
- border-color: @border-color;
- color: #ffffff;
+ background: #1e1e2e;
+ border-radius: 12px;
+ border-width: 1px;
+ border-style: solid;
+ border-color: @border-color;
+ color: #ffffff;
}
/*-----module groups----*/
.modules-left,
.modules-center,
.modules-right {
- background-color: @background-module;
- border-radius:15px;
- border-bottom:2px solid @border-color;
- padding-top: 2px;
- padding-bottom: 0px;
- padding-right: 4px;
- padding-left: 4px;
+ background-color: @background-module;
+ border-radius: 15px;
+ border-bottom: 2px solid @border-color;
+ padding-top: 2px;
+ padding-bottom: 0px;
+ padding-right: 4px;
+ padding-left: 4px;
}
#workspaces {
- padding: 0px 1px;
- border-radius: 15px;
- border:2px solid @border-color;
- font-weight: bold;
- font-style: normal;
- opacity: 1;
- color:#FFFFFF;
+ padding: 0px 1px;
+ border-radius: 15px;
+ border: 2px solid @border-color;
+ font-weight: bold;
+ font-style: normal;
+ opacity: 1;
+ color: #ffffff;
}
-#taskbar button,
+#taskbar button,
#workspaces button {
- color: @color15;
- box-shadow: none;
- text-shadow: none;
- border-radius: 30px;
- padding-left: 4px;
- padding-right: 4px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.682);
+ color: @color15;
+ box-shadow: none;
+ text-shadow: none;
+ border-radius: 30px;
+ padding-left: 4px;
+ padding-right: 4px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.5s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#taskbar button.active,
#workspaces button.active {
- color: #ffd700;
- border-radius: 50%;
- background-color: black;
- border-radius: 15px 15px 15px 15px;
- padding-left: 8px;
- padding-right: 8px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: #ffd700;
+ border-radius: 50%;
+ background-color: black;
+ border-radius: 15px 15px 15px 15px;
+ padding-left: 8px;
+ padding-right: 8px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#workspaces button.focused {
- color: #d8dee9;
+ color: #d8dee9;
}
#workspaces button.urgent {
- color: #11111b;
- border-radius: 10px;
+ color: #11111b;
+ border-radius: 10px;
}
#taskbar button:hover,
#workspaces button:hover {
- color: #ffd700;
- border-radius: 10px;
- padding-left: 2px;
- padding-right: 2px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: #ffd700;
+ border-radius: 10px;
+ padding-left: 2px;
+ padding-right: 2px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#backlight,
@@ -173,120 +173,122 @@ tooltip {
#custom-weather.clearNight,
#custom-weather.cloudyFoggyDay,
#custom-weather.cloudyFoggyNight,
-#custom-weather.default,
+#custom-weather.default,
#custom-weather.rainyDay,
#custom-weather.rainyNight,
#custom-weather.severe,
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
#custom-weather.sunnyDay {
- color: #e5d9f5;
- padding-right: 6px;
- padding-left: 6px;;
+ color: #e5d9f5;
+ padding-right: 6px;
+ padding-left: 6px;
}
#temperature.critical {
- background-color: #ff0000;
+ background-color: #ff0000;
}
@keyframes blink {
- to {
- color: #000000;
- }
+ to {
+ color: #000000;
+ }
}
#backlight-slider slider,
#pulseaudio-slider slider {
- min-width: 0px;
- min-height: 0px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
+ min-width: 0px;
+ min-height: 0px;
+ opacity: 0;
+ background-image: none;
+ border: none;
+ box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
- min-width: 80px;
- min-height: 5px;
- border-radius: 5px;
- background-color: #22252a;
+ min-width: 80px;
+ min-height: 5px;
+ border-radius: 5px;
+ background-color: #22252a;
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
- min-height: 10px;
- border-radius: 5px;
- background-color: #ba5663;
+ min-height: 10px;
+ border-radius: 5px;
+ background-color: #ba5663;
}
#pulseaudio-slider,
#pulseaudio {
- color: @color13;
+ color: @color13;
}
#pulseaudio.muted {
- color: red;
+ color: red;
}
#memory {
- color: @sapphire;
+ color: @sapphire;
}
#cpu {
- color: @mauve;
+ color: @mauve;
}
#battery {
- color: @rosewater;
+ color: @rosewater;
}
#disk {
- color: @sky;
+ color: @sky;
}
#temperature.critical {
- background-color: @red;
+ background-color: @red;
}
#battery.critical:not(.charging) {
- color: #f53c3c;
- animation-name: blink;
- animation-duration: 3.0s;
- animation-timing-function: steps(12);
- animation-iteration-count: infinite;
- animation-direction: alternate;
+ color: #f53c3c;
+ animation-name: blink;
+ animation-duration: 3s;
+ animation-timing-function: steps(12);
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
}
#custom-hypridle,
#custom-lock,
#idle_inhibitor {
- color: @teal;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
+ color: @teal;
+ padding-top: 8px;
+ border-bottom: 8px solid rgba(0, 0, 0, 0);
}
/*-----Indicators----*/
#custom-hypridle.notactive,
#idle_inhibitor.activated {
- color: #39FF14;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
+ color: #39ff14;
+ padding-top: 8px;
+ border-bottom: 8px solid rgba(0, 0, 0, 0);
}
-
#clock#2 {
- color: #efe8f7;
+ color: #efe8f7;
}
#clock {
- color: @sapphire;
- border-radius: 15px;
- border:2px solid @border-color;
+ color: @sapphire;
+ border-radius: 15px;
+ border: 2px solid @border-color;
}
#custom-updates {
- color: @yellow;
+ color: @yellow;
+}
+#swaync {
+ color: #ffd700;
}
-#swaync{
- color: #ffd700;}
/* --- tray readability override (global) --- */
#tray > *,
diff --git a/config/waybar/style/Dark-Purpl.css b/config/waybar/style/Dark-Purpl.css
index 9fa8f628..586aca3b 100644
--- a/config/waybar/style/Dark-Purpl.css
+++ b/config/waybar/style/Dark-Purpl.css
@@ -3,105 +3,105 @@
/* --- 👍 designed by https://github.com/Krautt 👍 --- */
* {
- font-family: "JetBrainsMono Nerd Font";
- font-weight: bold;
- min-height: 0;
- /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
- /* NOTE: Waybar v14+ ignores % font-size values */
- font-size: 99%;
- font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ min-height: 0;
+ /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
+ /* NOTE: Waybar v14+ ignores % font-size values */
+ font-size: 99%;
+ font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
}
window#waybar {
- background: #100214;
- color: #cba6f7;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background: #100214;
+ color: #cba6f7;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
window#waybar.hidden {
- opacity: 0.5;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ opacity: 0.5;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
tooltip {
- background: #1e1e2e;
- border-radius: 10px;
- border-width: 2px;
- border-style: solid;
- border-color: #11111b;
- color: #cba6f7;
+ background: #1e1e2e;
+ border-radius: 10px;
+ border-width: 2px;
+ border-style: solid;
+ border-color: #11111b;
+ color: #cba6f7;
}
/*-----module groups----*/
.modules-right {
- border: 3px solid #20052a;
- border-radius: 100px 0px 0px 0px;
- background-color: #3d174b;
- padding-top: 2px;
- padding-bottom: 2px;
- padding-right: 5px;
- padding-left: 5px;
+ border: 3px solid #20052a;
+ border-radius: 100px 0px 0px 0px;
+ background-color: #3d174b;
+ padding-top: 2px;
+ padding-bottom: 2px;
+ padding-right: 5px;
+ padding-left: 5px;
}
.modules-center {
- padding-top: 2px;
- padding-bottom: 2px;
- padding-right: 4px;
- padding-left: 4px;
+ padding-top: 2px;
+ padding-bottom: 2px;
+ padding-right: 4px;
+ padding-left: 4px;
}
.modules-left {
- /*background-color: #1e1e2e;*/
- border: 3px solid #20052a;
- border-radius: 0px 0px 100px 0px;
- background-color: #441a53;
- padding-top: 2px;
- padding-bottom: 2px;
- padding-right: 5px;
- padding-left: 5px;
+ /*background-color: #1e1e2e;*/
+ border: 3px solid #20052a;
+ border-radius: 0px 0px 100px 0px;
+ background-color: #441a53;
+ padding-top: 2px;
+ padding-bottom: 2px;
+ padding-right: 5px;
+ padding-left: 5px;
}
#taskbar button,
#workspaces button {
- color: #6E6A86;
- box-shadow: none;
- text-shadow: none;
- padding: 0px;
- border-radius: 9px;
- padding-left: 4px;
- padding-right: 4px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.682);
+ color: #6e6a86;
+ box-shadow: none;
+ text-shadow: none;
+ padding: 0px;
+ border-radius: 9px;
+ padding-left: 4px;
+ padding-right: 4px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.5s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#workspaces button.active {
- color: #cba6f7;
- border-radius: 20%;
- background-color: black;
- padding-left: 8px;
- padding-right: 8px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: #cba6f7;
+ border-radius: 20%;
+ background-color: black;
+ padding-left: 8px;
+ padding-right: 8px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#workspaces button.focused {
- color: #d8dee9;
+ color: #d8dee9;
}
#workspaces button.urgent {
- color: #11111b;
- border-radius: 10px;
+ color: #11111b;
+ border-radius: 10px;
}
#workspaces button:hover {
- color: #9CCFD8;
- border-radius: 15px;
- padding-left: 2px;
- padding-right: 2px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: #9ccfd8;
+ border-radius: 15px;
+ padding-left: 2px;
+ padding-right: 2px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#backlight,
@@ -158,84 +158,84 @@ tooltip {
#custom-weather.clearNight,
#custom-weather.cloudyFoggyDay,
#custom-weather.cloudyFoggyNight,
-#custom-weather.default,
+#custom-weather.default,
#custom-weather.rainyDay,
#custom-weather.rainyNight,
#custom-weather.severe,
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
#custom-weather.sunnyDay {
- color: whitesmoke;
- padding-top: 4px;
- padding-bottom: 4px;
- padding-right: 6px;
- padding-left: 6px;
+ color: whitesmoke;
+ padding-top: 4px;
+ padding-bottom: 4px;
+ padding-right: 6px;
+ padding-left: 6px;
}
#temperature.critical {
- background-color: #ff0000;
+ background-color: #ff0000;
}
@keyframes blink {
- to {
- color: #000000;
- }
+ to {
+ color: #000000;
+ }
}
/*-----Indicators----*/
#custom-hypridle.notactive,
#idle_inhibitor.activated {
- color: #39FF14;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
+ color: #39ff14;
+ border-top: 8px solid rgba(0, 0, 0, 0.2);
}
#taskbar button.active {
- background-color: purple;
- padding-left: 12px;
- padding-right: 12px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ background-color: purple;
+ padding-left: 12px;
+ padding-right: 12px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#taskbar button:hover {
- padding-left: 3px;
- padding-right: 3px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ padding-left: 3px;
+ padding-right: 3px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#battery.critical:not(.charging) {
- color: #f53c3c;
- animation-name: blink;
- animation-duration: 3.0s;
- animation-timing-function: steps(12);
- animation-iteration-count: infinite;
- animation-direction: alternate;
+ color: #f53c3c;
+ animation-name: blink;
+ animation-duration: 3s;
+ animation-timing-function: steps(12);
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
}
#backlight-slider slider,
#pulseaudio-slider slider {
- min-width: 0px;
- min-height: 0px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
+ min-width: 0px;
+ min-height: 0px;
+ opacity: 0;
+ background-image: none;
+ border: none;
+ box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
- min-width: 80px;
- min-height: 5px;
- border-radius: 5px;
- background-color: #6E6A86;
+ min-width: 80px;
+ min-height: 5px;
+ border-radius: 5px;
+ background-color: #6e6a86;
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
- min-height: 10px;
- border-radius: 5px;
- background-color: purple;
+ min-height: 10px;
+ border-radius: 5px;
+ background-color: purple;
}
/* --- tray readability override (global) --- */
diff --git a/config/waybar/style/Dark-Wallust-Obsidian-Edge.css b/config/waybar/style/Dark-Wallust-Obsidian-Edge.css
index 84199a7e..dc255123 100644
--- a/config/waybar/style/Dark-Wallust-Obsidian-Edge.css
+++ b/config/waybar/style/Dark-Wallust-Obsidian-Edge.css
@@ -1,96 +1,96 @@
/* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */
/* Dark - Obsidian Edge */
-@import '../../.config/waybar/wallust/colors-waybar.css';
+@import "../../.config/waybar/wallust/colors-waybar.css";
* {
-font-family: "JetBrainsMono Nerd Font";
-font-weight: bold;
-min-height: 0;
-/* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
-/* NOTE: Waybar v14+ ignores % font-size values */
-font-size: 99%;
-font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ min-height: 0;
+ /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
+ /* NOTE: Waybar v14+ ignores % font-size values */
+ font-size: 99%;
+ font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
}
window#waybar {
- background: black;
- border-radius: 12px;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background: black;
+ border-radius: 12px;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
window#waybar.hidden {
- opacity: 0.5;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ opacity: 0.5;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
tooltip {
- color: @foreground;
- background: rgba(0, 0, 0, 0.8);
- border-radius: 10px;
+ color: @foreground;
+ background: rgba(0, 0, 0, 0.8);
+ border-radius: 10px;
}
/* Waybar scaling: adjust tooltip label font-size to scale the bar */
tooltip label {
- color: @foreground;
- padding-right: 2px;
- padding-left: 2px;
- /* Waybar scaling: adjust tooltip label font-size to scale the bar */
- font-size: 14px;
+ color: @foreground;
+ padding-right: 2px;
+ padding-left: 2px;
+ /* Waybar scaling: adjust tooltip label font-size to scale the bar */
+ font-size: 14px;
}
/*-----module groups----*/
.modules-left,
.modules-center,
.modules-right {
- border: 0px solid #b4befe;
- border-radius: 10px;
- padding-top: 2px;
- padding-bottom: 2px;
- padding-right: 4px;
- padding-left: 4px;
+ border: 0px solid #b4befe;
+ border-radius: 10px;
+ padding-top: 2px;
+ padding-bottom: 2px;
+ padding-right: 4px;
+ padding-left: 4px;
}
#taskbar button,
#workspaces button {
- color: @color12;
- box-shadow: none;
- text-shadow: none;
- padding: 4px;
- border-radius: 9px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.682);
+ color: @color12;
+ box-shadow: none;
+ text-shadow: none;
+ padding: 4px;
+ border-radius: 9px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.5s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#taskbar button.active,
#workspaces button.active {
- color: @foreground;
- border-radius: 15px 15px 15px 15px;
- padding-left: 8px;
- padding-right: 8px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: @foreground;
+ border-radius: 15px 15px 15px 15px;
+ padding-left: 8px;
+ padding-right: 8px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#workspaces button.focused {
- color: #d8dee9;
+ color: #d8dee9;
}
#workspaces button.urgent {
- color: #11111b;
- border-radius: 10px;
+ color: #11111b;
+ border-radius: 10px;
}
#taskbar button:hover,
#workspaces button:hover {
- color: @color9;
- border-radius: 15px;
- padding-left: 2px;
- padding-right: 2px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: @color9;
+ border-radius: 15px;
+ padding-left: 2px;
+ padding-right: 2px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#backlight,
@@ -147,68 +147,68 @@ tooltip label {
#custom-weather.clearNight,
#custom-weather.cloudyFoggyDay,
#custom-weather.cloudyFoggyNight,
-#custom-weather.default,
+#custom-weather.default,
#custom-weather.rainyDay,
#custom-weather.rainyNight,
#custom-weather.severe,
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
#custom-weather.sunnyDay {
- color: @foreground;
- border-radius: 8px;
- padding-top: 5px;
- padding-bottom: 5px;
- padding-right: 6px;
- padding-left: 6px;
+ color: @foreground;
+ border-radius: 8px;
+ padding-top: 5px;
+ padding-bottom: 5px;
+ padding-right: 6px;
+ padding-left: 6px;
}
#temperature.critical {
- background-color: #ff0000;
+ background-color: #ff0000;
}
@keyframes blink {
- to {
- color: #000000;
- }
+ to {
+ color: #000000;
+ }
}
/*-----Indicators----*/
#custom-hypridle.notactive,
#idle_inhibitor.activated {
- color: #39FF14;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
+ color: #39ff14;
+ border-top: 8px solid rgba(0, 0, 0, 0.2);
}
#battery.critical:not(.charging) {
- color: #f53c3c;
- animation-name: blink;
- animation-duration: 3.0s;
- animation-timing-function: steps(12);
- animation-iteration-count: infinite;
- animation-direction: alternate;
+ color: #f53c3c;
+ animation-name: blink;
+ animation-duration: 3s;
+ animation-timing-function: steps(12);
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
}
#backlight-slider slider,
#pulseaudio-slider slider {
- min-width: 0px;
- min-height: 0px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
+ min-width: 0px;
+ min-height: 0px;
+ opacity: 0;
+ background-image: none;
+ border: none;
+ box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
- min-width: 80px;
- min-height: 5px;
- border-radius: 5px;
+ min-width: 80px;
+ min-height: 5px;
+ border-radius: 5px;
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
- min-height: 10px;
- border-radius: 5px;
+ min-height: 10px;
+ border-radius: 5px;
}
/* --- tray readability override (global) --- */
diff --git a/config/waybar/style/Extra-Crimson.css b/config/waybar/style/Extra-Crimson.css
index 3a326a02..fbfb80cf 100644
--- a/config/waybar/style/Extra-Crimson.css
+++ b/config/waybar/style/Extra-Crimson.css
@@ -2,90 +2,90 @@
/* ..........Crimson.................. */
/* --- 👍 designed by https://github.com/Krautt 👍 --- */
-*{
-font-family: "JetBrainsMono Nerd Font";
-font-weight: bold;
-/* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
-/* NOTE: Waybar v14+ ignores % font-size values */
-font-size: 99%;
-font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
+* {
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
+ /* NOTE: Waybar v14+ ignores % font-size values */
+ font-size: 99%;
+ font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
}
-
+
window#waybar {
- background: #240303;
- color: wheat;
- border-radius: 0px 0px 100px 100px;
- border: 1px solid grey;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background: #240303;
+ color: wheat;
+ border-radius: 0px 0px 100px 100px;
+ border: 1px solid grey;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
-
+
window#waybar.hidden {
- opacity: 0.5;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
-}
+ opacity: 0.5;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
+}
tooltip {
- background: #240303;
- border-radius: 10px;
- border-width: 2px;
- border-style: solid;
- border-color: #11111b;
- color: wheat;
+ background: #240303;
+ border-radius: 10px;
+ border-width: 2px;
+ border-style: solid;
+ border-color: #11111b;
+ color: wheat;
}
/*-----module groups----*/
.modules-left,
.modules-center,
.modules-right {
- padding-top: 2px;
- padding-bottom: 2px;
- padding-right: 4px;
- padding-left: 4px;
+ padding-top: 2px;
+ padding-bottom: 2px;
+ padding-right: 4px;
+ padding-left: 4px;
}
#taskbar button,
#workspaces button {
- color: wheat;
- box-shadow: none;
- text-shadow: none;
- padding: 4px;
- border-radius: 9px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.682);
+ color: wheat;
+ box-shadow: none;
+ text-shadow: none;
+ padding: 4px;
+ border-radius: 9px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.5s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
-#taskbar button.active,
+#taskbar button.active,
#workspaces button.active {
- color: rgb(108, 18, 18);
- background-color: #000000;
- border: 1px solid grey;
- border-radius: 15px 15px 15px 15px;
- padding-left: 8px;
- padding-right: 8px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: rgb(108, 18, 18);
+ background-color: #000000;
+ border: 1px solid grey;
+ border-radius: 15px 15px 15px 15px;
+ padding-left: 8px;
+ padding-right: 8px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
-
+
#workspaces button.focused {
- color: #d8dee9;
+ color: #d8dee9;
}
-
+
#workspaces button.urgent {
- color: #11111b;
- border-radius: 10px;
+ color: #11111b;
+ border-radius: 10px;
}
-#taskbar button:hover,
+#taskbar button:hover,
#workspaces button:hover {
- color: rgb(71, 14, 14);
- background-color: #000000;
- border-radius: 15px;
- padding-left: 3px;
- padding-right: 3px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: rgb(71, 14, 14);
+ background-color: #000000;
+ border-radius: 15px;
+ padding-left: 3px;
+ padding-right: 3px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#backlight,
@@ -142,69 +142,69 @@ tooltip {
#custom-weather.clearNight,
#custom-weather.cloudyFoggyDay,
#custom-weather.cloudyFoggyNight,
-#custom-weather.default,
+#custom-weather.default,
#custom-weather.rainyDay,
#custom-weather.rainyNight,
#custom-weather.severe,
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
#custom-weather.sunnyDay {
- color: wheat;
- padding-top: 5px;
- padding-bottom: 5px;
- padding-right: 6px;
- padding-left: 6px;
+ color: wheat;
+ padding-top: 5px;
+ padding-bottom: 5px;
+ padding-right: 6px;
+ padding-left: 6px;
}
-
+
#temperature.critical {
- background-color: #ff0000;
+ background-color: #ff0000;
}
-
+
@keyframes blink {
- to {
- color: #000000;
- }
+ to {
+ color: #000000;
+ }
}
/*-----Indicators----*/
#custom-hypridle.notactive,
#idle_inhibitor.activated {
- color: #39FF14;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
+ color: #39ff14;
+ border-top: 8px solid rgba(0, 0, 0, 0.2);
}
-
+
#battery.critical:not(.charging) {
- color: #f53c3c;
- animation-name: blink;
- animation-duration: 3.0s;
- animation-timing-function: steps(12);
- animation-iteration-count: infinite;
- animation-direction: alternate;
+ color: #f53c3c;
+ animation-name: blink;
+ animation-duration: 3s;
+ animation-timing-function: steps(12);
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
}
-
+
#backlight-slider slider,
#pulseaudio-slider slider {
- min-width: 0px;
- min-height: 0px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
+ min-width: 0px;
+ min-height: 0px;
+ opacity: 0;
+ background-image: none;
+ border: none;
+ box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
- min-width: 80px;
- min-height: 5px;
- border-radius: 5px;
- background-color: #22252a;
+ min-width: 80px;
+ min-height: 5px;
+ border-radius: 5px;
+ background-color: #22252a;
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
- min-height: 10px;
- border-radius: 5px;
- background-color: #ba5663;
+ min-height: 10px;
+ border-radius: 5px;
+ background-color: #ba5663;
}
/* --- tray readability override (global) --- */
diff --git a/config/waybar/style/Extra-EverForest.css b/config/waybar/style/Extra-EverForest.css
index e91221ba..c3ae5668 100644
--- a/config/waybar/style/Extra-EverForest.css
+++ b/config/waybar/style/Extra-EverForest.css
@@ -53,9 +53,9 @@ window#waybar {
}
window#waybar.hidden {
- opacity: 0.5;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ opacity: 0.5;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
#window {
@@ -179,7 +179,7 @@ window#waybar.hidden {
background-color: @red;
color: @fg;
animation-name: blink;
- animation-duration: 3.0s;
+ animation-duration: 3s;
animation-timing-function: steps(12);
animation-iteration-count: infinite;
animation-direction: alternate;
@@ -227,14 +227,14 @@ window#waybar.hidden {
border-radius: 5px;
margin-left: 5px;
background-color: @blue;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
+ border-top: 8px solid rgba(0, 0, 0, 0.2);
color: @black;
}
/*-----Indicators----*/
#custom-hypridle.notactive,
#idle_inhibitor.activated {
background-color: @fg;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
+ border-bottom: 8px solid rgba(0, 0, 0, 0.2);
color: @bg0;
}
@@ -248,27 +248,27 @@ window#waybar.hidden {
#backlight-slider slider,
#pulseaudio-slider slider {
- min-width: 0px;
- min-height: 0px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
+ min-width: 0px;
+ min-height: 0px;
+ opacity: 0;
+ background-image: none;
+ border: none;
+ box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
- min-width: 80px;
- min-height: 5px;
- border-radius: 5px;
- background-color: #22252a;
+ min-width: 80px;
+ min-height: 5px;
+ border-radius: 5px;
+ background-color: #22252a;
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
- min-height: 10px;
- border-radius: 5px;
- background-color: #ba5663;
+ min-height: 10px;
+ border-radius: 5px;
+ background-color: #ba5663;
}
#backlight,
@@ -324,15 +324,15 @@ window#waybar.hidden {
#custom-weather.clearNight,
#custom-weather.cloudyFoggyDay,
#custom-weather.cloudyFoggyNight,
-#custom-weather.default,
+#custom-weather.default,
#custom-weather.rainyDay,
#custom-weather.rainyNight,
#custom-weather.severe,
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
#custom-weather.sunnyDay {
- padding-right: 5px;
- padding-left: 5px;
+ padding-right: 5px;
+ padding-left: 5px;
}
/* --- tray readability override (global) --- */
diff --git a/config/waybar/style/Extra-Mauve.css b/config/waybar/style/Extra-Mauve.css
index 2c8ad2af..10da92c5 100644
--- a/config/waybar/style/Extra-Mauve.css
+++ b/config/waybar/style/Extra-Mauve.css
@@ -3,108 +3,108 @@
/* --- 👍 designed by https://github.com/CelestiaKai 👍 --- */
* {
- font-family: "JetBrainsMono Nerd Font";
- font-weight: bold;
- min-height: 0;
- /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
- /* NOTE: Waybar v14+ ignores % font-size values */
- font-size: 99%;
- font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ min-height: 0;
+ /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
+ /* NOTE: Waybar v14+ ignores % font-size values */
+ font-size: 99%;
+ font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
}
window#waybar {
- background: #11111b;
- color: #cba6f7;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background: #11111b;
+ color: #cba6f7;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
window#waybar.hidden {
- opacity: 0.5;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ opacity: 0.5;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
tooltip {
- background: #1e1e2e;
- border-radius: 10px;
- border-width: 2px;
- border-style: solid;
- border-color: #11111b;
- color: #cba6f7;
+ background: #1e1e2e;
+ border-radius: 10px;
+ border-width: 2px;
+ border-style: solid;
+ border-color: #11111b;
+ color: #cba6f7;
}
/*-----module groups----*/
.modules-left,
.modules-right {
- border: 3px solid #11111b;
- border-radius: 10px 10px 10px 10px;
- background-color: #313244;
- padding-top: 2px;
- padding-bottom: 2px;
- padding-right: 4px;
- padding-left: 4px;
+ border: 3px solid #11111b;
+ border-radius: 10px 10px 10px 10px;
+ background-color: #313244;
+ padding-top: 2px;
+ padding-bottom: 2px;
+ padding-right: 4px;
+ padding-left: 4px;
}
.modules-center {
- padding-top: 2px;
- padding-bottom: 2px;
- padding-right: 4px;
- padding-left: 4px;
+ padding-top: 2px;
+ padding-bottom: 2px;
+ padding-right: 4px;
+ padding-left: 4px;
}
#taskbar button,
#workspaces button {
- color: #6E6A86;
- box-shadow: none;
- text-shadow: none;
- padding: 0px;
- border-radius: 9px;
- padding-left: 4px;
- padding-right: 4px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.682);
+ color: #6e6a86;
+ box-shadow: none;
+ text-shadow: none;
+ padding: 0px;
+ border-radius: 9px;
+ padding-left: 4px;
+ padding-right: 4px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.5s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#taskbar button.active,
#workspaces button.active {
- color: #1e1e1e;
- border-radius: 30%;
- background-color: #cba6f7;
- padding-left: 6px;
- padding-right: 8px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: #1e1e1e;
+ border-radius: 30%;
+ background-color: #cba6f7;
+ padding-left: 6px;
+ padding-right: 8px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#workspaces button.active:hover {
- color: #1e1e1e;
- border-radius: 30%;
- background-color: #cba6f7;
- padding-left: 6px;
- padding-right: 8px;
+ color: #1e1e1e;
+ border-radius: 30%;
+ background-color: #cba6f7;
+ padding-left: 6px;
+ padding-right: 8px;
}
#workspaces button.focused {
- color: #d8dee9;
+ color: #d8dee9;
}
#workspaces button.urgent {
- border-radius: 30%;
- background-color: #cba6f7;
- color: #1e1e1e;
+ border-radius: 30%;
+ background-color: #cba6f7;
+ color: #1e1e1e;
}
#taskbar button:hover,
#workspaces button:hover {
- color: #1e1e1e;
- border: 3px solid #1e1e2e;
- background-color: #cba6f7;
- border-radius: 30%;
- padding-left: 4px;
- padding-right: 4px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: #1e1e1e;
+ border: 3px solid #1e1e2e;
+ background-color: #cba6f7;
+ border-radius: 30%;
+ padding-left: 4px;
+ padding-right: 4px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#backlight,
@@ -161,70 +161,69 @@ tooltip {
#custom-weather.clearNight,
#custom-weather.cloudyFoggyDay,
#custom-weather.cloudyFoggyNight,
-#custom-weather.default,
+#custom-weather.default,
#custom-weather.rainyDay,
#custom-weather.rainyNight,
#custom-weather.severe,
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
#custom-weather.sunnyDay {
- color: whitesmoke;
- padding-top: 4px;
- padding-bottom: 4px;
- padding-right: 6px;
- padding-left: 6px;
-
+ color: whitesmoke;
+ padding-top: 4px;
+ padding-bottom: 4px;
+ padding-right: 6px;
+ padding-left: 6px;
}
#temperature.critical {
- background-color: #ff0000;
+ background-color: #ff0000;
}
@keyframes blink {
- to {
- color: #000000;
- }
+ to {
+ color: #000000;
+ }
}
/*-----Indicators----*/
#custom-hypridle.notactive,
#idle_inhibitor.activated {
- color: #39FF14;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
+ color: #39ff14;
+ border-bottom: 3px solid rgba(0, 0, 0, 0.2);
}
#battery.critical:not(.charging) {
- color: #f53c3c;
- animation-name: blink;
- animation-duration: 3.0s;
- animation-timing-function: steps(12);
- animation-iteration-count: infinite;
- animation-direction: alternate;
+ color: #f53c3c;
+ animation-name: blink;
+ animation-duration: 3s;
+ animation-timing-function: steps(12);
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
}
#backlight-slider slider,
#pulseaudio-slider slider {
- min-width: 0px;
- min-height: 0px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
+ min-width: 0px;
+ min-height: 0px;
+ opacity: 0;
+ background-image: none;
+ border: none;
+ box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
- min-width: 80px;
- min-height: 5px;
- border-radius: 5px;
- background-color: #6E6A86;
+ min-width: 80px;
+ min-height: 5px;
+ border-radius: 5px;
+ background-color: #6e6a86;
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
- min-height: 10px;
- border-radius: 5px;
- background-color: purple;
+ min-height: 10px;
+ border-radius: 5px;
+ background-color: purple;
}
/* --- tray readability override (global) --- */
diff --git a/config/waybar/style/Extra-Modern-Combined-Transparent.css b/config/waybar/style/Extra-Modern-Combined-Transparent.css
index 353c321c..7a4a9f77 100644
--- a/config/waybar/style/Extra-Modern-Combined-Transparent.css
+++ b/config/waybar/style/Extra-Modern-Combined-Transparent.css
@@ -30,93 +30,93 @@
@define-color textcolor3 @foreground;
@define-color iconcolor @foreground;
-@import '../../.config/waybar/wallust/colors-waybar.css';
+@import "../../.config/waybar/wallust/colors-waybar.css";
@import "../waybar/style/catppuccin-themes/latte.css";
* {
- font-family: "JetBrainsMono Nerd Font";
- font-weight: bold;
- min-height: 0;
- /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
- /* NOTE: Waybar v14+ ignores % font-size values */
- font-size: 99%;
- font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ min-height: 0;
+ /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
+ /* NOTE: Waybar v14+ ignores % font-size values */
+ font-size: 99%;
+ font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
}
window#waybar {
- background-color: transparent;
- border-radius: 6px;
- padding-top: 2px;
- padding-bottom: 0px;
- padding-right: 4px;
- padding-left: 4px;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background-color: transparent;
+ border-radius: 6px;
+ padding-top: 2px;
+ padding-bottom: 0px;
+ padding-right: 4px;
+ padding-left: 4px;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
tooltip {
- background: #1e1e2e;
- border-radius: 12px;
- border-width: 1px;
- border-style: solid;
- border-color: @border-color;
- color: #ffffff;
+ background: #1e1e2e;
+ border-radius: 12px;
+ border-width: 1px;
+ border-style: solid;
+ border-color: @border-color;
+ color: #ffffff;
}
#taskbar button,
#workspaces button {
- padding: 0px 3px;
- margin: 3px 2px;
- border-radius: 4px;
- color: @textcolor1;
- background-color: @workspacesbackground2;
- transition: all 0.1s linear;
- opacity: 0.4;
+ padding: 0px 3px;
+ margin: 3px 2px;
+ border-radius: 4px;
+ color: @textcolor1;
+ background-color: @workspacesbackground2;
+ transition: all 0.1s linear;
+ opacity: 0.4;
}
#taskbar button.active,
#workspaces button.active {
- color: @textcolor1;
- background: @workspacesbackground2;
- border-radius: 4px;
- min-width: 30px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
- opacity: 1.0;
+ color: @textcolor1;
+ background: @workspacesbackground2;
+ border-radius: 4px;
+ min-width: 30px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
+ opacity: 1;
}
#taskbar button:hover,
#workspaces button:hover {
- color: @red;
- background: @workspacesbackground2;
- border-radius: 3px;
- opacity:0.6;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: @red;
+ background: @workspacesbackground2;
+ border-radius: 3px;
+ opacity: 0.6;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#workspaces button.focused {
- color: #d8dee9;
+ color: #d8dee9;
}
#workspaces button.urgent {
- color: #11111b;
- border-radius: 10px;
+ color: #11111b;
+ border-radius: 10px;
}
/*-----module groups----*/
.modules-left,
.modules-right {
- background-color: transparent;
+ background-color: transparent;
}
.modules-center {
- background-color: @background-module;
- border-radius: 0px 0px 45px 45px;
- padding-top: 8px;
- padding-bottom: 8px;
- padding-left: 10px;
- padding-right: 6px;
+ background-color: @background-module;
+ border-radius: 0px 0px 45px 45px;
+ padding-top: 8px;
+ padding-bottom: 8px;
+ padding-left: 10px;
+ padding-right: 6px;
}
#backlight,
@@ -181,77 +181,77 @@ tooltip {
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
#custom-weather.sunnyDay {
- color: white;
- padding-right: 6px;
- padding-left: 6px;
+ color: white;
+ padding-right: 6px;
+ padding-left: 6px;
}
#temperature.critical {
- background-color: #ff0000;
+ background-color: #ff0000;
}
@keyframes blink {
- to {
- color: #000000;
- }
+ to {
+ color: #000000;
+ }
}
#custom-hint {
- color: @peach;
- padding-right: 6px;
- padding-left: 6px;
+ color: @peach;
+ padding-right: 6px;
+ padding-left: 6px;
}
#pulseaudio.muted {
- color: red;
+ color: red;
}
#temperature.critical {
- background-color: @red;
+ background-color: @red;
}
#battery.critical:not(.charging) {
- color: #f53c3c;
- animation-name: blink;
- animation-duration: 3.0s;
- animation-timing-function: steps(12);
- animation-iteration-count: infinite;
- animation-direction: alternate;
+ color: #f53c3c;
+ animation-name: blink;
+ animation-duration: 3s;
+ animation-timing-function: steps(12);
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
}
#pulseaudio-slider,
#pulseaudio {
- color: @foreground;
+ color: @foreground;
}
#backlight-slider slider,
#pulseaudio-slider slider {
- min-width: 0px;
- min-height: 0px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
+ min-width: 0px;
+ min-height: 0px;
+ opacity: 0;
+ background-image: none;
+ border: none;
+ box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
- min-width: 80px;
- min-height: 5px;
- border-radius: 5px;
+ min-width: 80px;
+ min-height: 5px;
+ border-radius: 5px;
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
- min-height: 10px;
- border-radius: 5px;
+ min-height: 10px;
+ border-radius: 5px;
}
#custom-hypridle,
#custom-lock,
#idle_inhibitor {
- color: @teal;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
+ color: @teal;
+ border-bottom: 2px solid rgba(0, 0, 0, 0.2);
}
#custom-weather,
@@ -266,29 +266,30 @@ tooltip {
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
#custom-weather.sunnyDay {
- color: @lavender;
- padding-right: 6px;
- padding-left: 6px;
+ color: @lavender;
+ padding-right: 6px;
+ padding-left: 6px;
}
/*-----Indicators----*/
#custom-hypridle.notactive,
#idle_inhibitor.activated {
- color: #39FF14;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
+ color: #39ff14;
+ border-top: 2px solid rgba(0, 0, 0, 0.2);
}
#clock {
- color: @sapphire;
- border-radius: 15px;
+ color: @sapphire;
+ border-radius: 15px;
}
#custom-updates {
- color: @yellow;
+ color: @yellow;
}
-#custom-swaync{
- color: #ffd700;}
+#custom-swaync {
+ color: #ffd700;
+}
/* --- tray readability override (global) --- */
#tray > *,
diff --git a/config/waybar/style/Extra-Rose-Pine.css b/config/waybar/style/Extra-Rose-Pine.css
index 94b40f7b..cfbf0e94 100644
--- a/config/waybar/style/Extra-Rose-Pine.css
+++ b/config/waybar/style/Extra-Rose-Pine.css
@@ -1,7 +1,6 @@
/* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */
/* Rose Pine */
-
@define-color bar-bg rgba(0, 0, 0, 0);
@define-color main-bg #26233a;
@define-color main-fg #ebbcba;
@@ -11,103 +10,103 @@
@define-color wb-hvr-fg #f6c177;
* {
- font-family: "JetBrainsMono Nerd Font";
- font-weight: bold;
- /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
- /* NOTE: Waybar v14+ ignores % font-size values */
- font-size: 99%;
- font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
- border-radius: 12px;
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
+ /* NOTE: Waybar v14+ ignores % font-size values */
+ font-size: 99%;
+ font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
+ border-radius: 12px;
}
window#waybar {
- background: @bar-bg;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background: @bar-bg;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
window#waybar.empty,
window#waybar.empty #window {
- background-color: transparent;
- padding: 0px;
- border: 0px;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background-color: transparent;
+ padding: 0px;
+ border: 0px;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
tooltip {
- background: @main-bg;
- color: @main-fg;
- border-radius: 8px;
- border-width: 0px;
+ background: @main-bg;
+ color: @main-fg;
+ border-radius: 8px;
+ border-width: 0px;
}
#taskbar button,
#workspaces button {
- box-shadow: none;
- text-shadow: none;
- padding: 0px;
- border-bottom: 2px;
- border-color: #2B5D34;
- border-style: solid;
- border-radius: 10px;
- padding-left: 2px;
- padding-right: 4px;
- background: @main-bg;
- color: @main-fg;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.682);
+ box-shadow: none;
+ text-shadow: none;
+ padding: 0px;
+ border-bottom: 2px;
+ border-color: #2b5d34;
+ border-style: solid;
+ border-radius: 10px;
+ padding-left: 2px;
+ padding-right: 4px;
+ background: @main-bg;
+ color: @main-fg;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.5s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#workspaces button.active {
- background: @wb-act-bg;
- color: @wb-act-fg;
- padding-left: 2px;
- padding-right: 4px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ background: @wb-act-bg;
+ color: @wb-act-fg;
+ padding-left: 2px;
+ padding-right: 4px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#workspaces button:hover {
- background: @wb-hvr-bg;
- color: @wb-hvr-fg;
- padding-left: 2px;
- padding-right: 2px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ background: @wb-hvr-bg;
+ color: @wb-hvr-fg;
+ padding-left: 2px;
+ padding-right: 2px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#taskbar button {
- box-shadow: none;
- text-shadow: none;
- padding: 0px;
- border-bottom: 2px;
- border-color: #2B5D34;
- border-style: solid;
- border-radius: 10px;
- padding-left: 3px;
- padding-right: 3px;
- color: @wb-color;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.682);
+ box-shadow: none;
+ text-shadow: none;
+ padding: 0px;
+ border-bottom: 2px;
+ border-color: #2b5d34;
+ border-style: solid;
+ border-radius: 10px;
+ padding-left: 3px;
+ padding-right: 3px;
+ color: @wb-color;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.5s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#taskbar button.active {
- background: @wb-act-bg;
- color: @wb-act-color;
- padding-left: 8px;
- padding-right: 8px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ background: @wb-act-bg;
+ color: @wb-act-color;
+ padding-left: 8px;
+ padding-right: 8px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#taskbar button:hover {
- background: @wb-hvr-bg;
- color: @wb-hvr-color;
- padding-left: 3px;
- padding-right: 3px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ background: @wb-hvr-bg;
+ color: @wb-hvr-color;
+ padding-left: 3px;
+ padding-right: 3px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#backlight,
@@ -162,35 +161,35 @@ tooltip {
#custom-weather.clearNight,
#custom-weather.cloudyFoggyDay,
#custom-weather.cloudyFoggyNight,
-#custom-weather.default,
+#custom-weather.default,
#custom-weather.rainyDay,
#custom-weather.rainyNight,
#custom-weather.severe,
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
#custom-weather.sunnyDay {
- color: @main-fg;
- background: @main-bg;
- opacity: 1;
- border-bottom: 2px;
- border-color: #2B5D34;
- border-style: solid;
- border-radius: 10px;
- padding-top: 4px;
- padding-bottom: 4px;
- padding-right: 6px;
- padding-left: 6px;
+ color: @main-fg;
+ background: @main-bg;
+ opacity: 1;
+ border-bottom: 2px;
+ border-color: #2b5d34;
+ border-style: solid;
+ border-radius: 10px;
+ padding-top: 4px;
+ padding-bottom: 4px;
+ padding-right: 6px;
+ padding-left: 6px;
}
#temperature.critical {
- background-color: red;
+ background-color: red;
}
/*-----Indicators----*/
#custom-hypridle.notactive,
#idle_inhibitor.activated {
- color: #39FF14;
- border-bottom: 2px;
+ color: #39ff14;
+ border-bottom: 2px;
}
@keyframes blink {
@@ -203,7 +202,7 @@ tooltip {
background-color: red;
color: white;
animation-name: blink;
- animation-duration: 3.0s;
+ animation-duration: 3s;
animation-timing-function: steps(12);
animation-iteration-count: infinite;
animation-direction: alternate;
@@ -211,42 +210,43 @@ tooltip {
}
#backlight {
- padding-right: 2px;
+ padding-right: 2px;
}
#network {
- padding-right: 12px;
+ padding-right: 12px;
}
#custom-power {
- padding-right: 1px;
+ padding-left: 0px;
+ padding-right: 1px;
}
#group-motherboard,
#group-laptop,
#group-audio {
- color: @main-fg;
- background-color: @main-bg;
+ color: @main-fg;
+ background-color: @main-bg;
}
#backlight-slider slider,
#pulseaudio-slider slider {
- min-width: 0px;
- min-height: 0px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
+ min-width: 0px;
+ min-height: 0px;
+ opacity: 0;
+ background-image: none;
+ border: none;
+ box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
- min-width: 80px;
- min-height: 5px;
- border-radius: 5px;
+ min-width: 80px;
+ min-height: 5px;
+ border-radius: 5px;
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
- min-height: 10px;
- border-radius: 5px;
+ min-height: 10px;
+ border-radius: 5px;
}
/* --- tray readability override (global) --- */
diff --git a/config/waybar/style/Extra-Simple-Pink.css b/config/waybar/style/Extra-Simple-Pink.css
index 9b69a8bd..072580fe 100644
--- a/config/waybar/style/Extra-Simple-Pink.css
+++ b/config/waybar/style/Extra-Simple-Pink.css
@@ -3,100 +3,99 @@
/* --- 👍 designed by https://github.com/Krautt 👍 --- */
* {
- font-family: "JetBrainsMono Nerd Font";
- font-weight: bold;
- min-height: 0;
- /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
- /* NOTE: Waybar v14+ ignores % font-size values */
- font-size: 99%;
- font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ min-height: 0;
+ /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
+ /* NOTE: Waybar v14+ ignores % font-size values */
+ font-size: 99%;
+ font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
}
window#waybar {
- background: black;
- border-radius: 50px;
- color: whitesmoke;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background: black;
+ border-radius: 50px;
+ color: whitesmoke;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
window#waybar.hidden {
- opacity: 0.5;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ opacity: 0.5;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
tooltip {
- background: #1e1e2e;
- border-radius: 10px;
- border-width: 2px;
- border-style: solid;
- border-color: #11111b;
- color: pink;
+ background: #1e1e2e;
+ border-radius: 10px;
+ border-width: 2px;
+ border-style: solid;
+ border-color: #11111b;
+ color: pink;
}
/*-----module groups----*/
.modules-left,
.modules-right {
- border: 5px solid #19141b;
- border-radius: 50px 50px 50px 50px;
- background-color: #ba5663;
- padding-top: 2px;
- padding-bottom: 2px;
- padding-right: 4px;
- padding-left: 4px;
+ border: 5px solid #19141b;
+ border-radius: 50px 50px 50px 50px;
+ background-color: #ba5663;
+ padding-top: 2px;
+ padding-bottom: 2px;
+ padding-right: 4px;
+ padding-left: 4px;
}
.modules-center {
- background-color: black;
- padding-top: 2px;
- padding-bottom: 2px;
- padding-right: 4px;
- padding-left: 4px;
+ background-color: black;
+ padding-top: 2px;
+ padding-bottom: 2px;
+ padding-right: 4px;
+ padding-left: 4px;
}
#taskbar button,
#workspaces button {
- color: pink;
- box-shadow: none;
- text-shadow: none;
- border-radius: 9px;
- padding-left: 4px;
- padding-right: 4px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.682);
+ color: pink;
+ box-shadow: none;
+ text-shadow: none;
+ border-radius: 9px;
+ padding-left: 4px;
+ padding-right: 4px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.5s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#taskbar button.active,
#workspaces button.active {
- color: whitesmoke;
- background-color: pink;
- border-radius: 15px 15px 15px 15px;
- padding-left: 8px;
- padding-right: 8px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
-
+ color: whitesmoke;
+ background-color: pink;
+ border-radius: 15px 15px 15px 15px;
+ padding-left: 8px;
+ padding-right: 8px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#workspaces button.focused {
- color: #c42a60;
+ color: #c42a60;
}
#workspaces button.urgent {
- color: #11111b;
- border-radius: 10px;
+ color: #11111b;
+ border-radius: 10px;
}
#taskbar button:hover,
#workspaces button:hover {
- color: #ba5663;
- background-color: #0d0a0d;
- border-radius: 15px;
- padding-left: 2px;
- padding-right: 2px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: #ba5663;
+ background-color: #0d0a0d;
+ border-radius: 15px;
+ padding-left: 2px;
+ padding-right: 2px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#backlight,
@@ -154,70 +153,69 @@ tooltip {
#custom-weather.clearNight,
#custom-weather.cloudyFoggyDay,
#custom-weather.cloudyFoggyNight,
-#custom-weather.default,
+#custom-weather.default,
#custom-weather.rainyDay,
#custom-weather.rainyNight,
#custom-weather.severe,
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
#custom-weather.sunnyDay {
- color: whitesmoke;
- padding-top: 2px;
- padding-bottom: 2px;
- padding-right: 4px;
- padding-left: 4px;
-
+ color: whitesmoke;
+ padding-top: 2px;
+ padding-bottom: 2px;
+ padding-right: 4px;
+ padding-left: 4px;
}
#temperature.critical {
- background-color: #ff0000;
+ background-color: #ff0000;
}
@keyframes blink {
- to {
- color: #000000;
- }
+ to {
+ color: #000000;
+ }
}
/*-----Indicators----*/
#custom-hypridle.notactive,
#idle_inhibitor.activated {
- color: #39FF14;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
+ color: #39ff14;
+ border-bottom: 1px solid rgba(0, 0, 0, 0.2);
}
#battery.critical:not(.charging) {
- color: #f53c3c;
- animation-name: blink;
- animation-duration: 3.0s;
- animation-timing-function: steps(12);
- animation-iteration-count: infinite;
- animation-direction: alternate;
+ color: #f53c3c;
+ animation-name: blink;
+ animation-duration: 3s;
+ animation-timing-function: steps(12);
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
}
#backlight-slider slider,
#pulseaudio-slider slider {
- min-width: 0px;
- min-height: 0px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
+ min-width: 0px;
+ min-height: 0px;
+ opacity: 0;
+ background-image: none;
+ border: none;
+ box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
- min-width: 80px;
- min-height: 5px;
- border-radius: 5px;
- background-color: #22252a;
+ min-width: 80px;
+ min-height: 5px;
+ border-radius: 5px;
+ background-color: #22252a;
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
- min-height: 10px;
- border-radius: 5px;
- background-color: #ba5663;
+ min-height: 10px;
+ border-radius: 5px;
+ background-color: #ba5663;
}
/* --- tray readability override (global) --- */
diff --git a/config/waybar/style/Light-Monochrome-Contrast.css b/config/waybar/style/Light-Monochrome-Contrast.css
index afa18d0b..7992e63d 100644
--- a/config/waybar/style/Light-Monochrome-Contrast.css
+++ b/config/waybar/style/Light-Monochrome-Contrast.css
@@ -2,92 +2,92 @@
/* Light - MonoChrome Contrast */
* {
-font-family: "JetBrainsMono Nerd Font";
-font-weight: bold;
-min-height: 0;
-/* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
-/* NOTE: Waybar v14+ ignores % font-size values */
-font-size: 99%;
-font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ min-height: 0;
+ /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
+ /* NOTE: Waybar v14+ ignores % font-size values */
+ font-size: 99%;
+ font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
}
window#waybar,
window#waybar.empty,
window#waybar.empty #window {
- background-color: transparent;
- padding: 0px;
- border: 0px;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background-color: transparent;
+ padding: 0px;
+ border: 0px;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
tooltip {
- color: white;
- background: #1e1e2e;
- opacity: 0.8;
- border-radius: 10px;
- border-width: 2px;
- border-style: solid;
- border-color: white;
+ color: white;
+ background: #1e1e2e;
+ opacity: 0.8;
+ border-radius: 10px;
+ border-width: 2px;
+ border-style: solid;
+ border-color: white;
}
/* Waybar scaling: adjust tooltip label font-size to scale the bar */
-tooltip label{
- color: #cdd6f4;
- /* Waybar scaling: adjust tooltip label font-size to scale the bar */
- font-size: 14px;
+tooltip label {
+ color: #cdd6f4;
+ /* Waybar scaling: adjust tooltip label font-size to scale the bar */
+ font-size: 14px;
}
/*-----module groups----*/
.modules-left,
.modules-center,
.modules-right {
- background-color: white;
- color: black;
- border-bottom: 2px;
- border-style: solid;
- border-color: black;
- border-radius: 10px;
- padding-top: 2px;
- padding-bottom: 2px;
- padding-right: 4px;
- padding-left: 4px;
+ background-color: white;
+ color: black;
+ border-bottom: 2px;
+ border-style: solid;
+ border-color: black;
+ border-radius: 10px;
+ padding-top: 2px;
+ padding-bottom: 2px;
+ padding-right: 4px;
+ padding-left: 4px;
}
/*-----modules indv----*/
#taskbar button,
#workspaces button {
- color: black;
- box-shadow: none;
- text-shadow: none;
- padding: 0px;
- border-radius: 9px;
- padding-left: 4px;
- padding-right: 4px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.682);
+ color: black;
+ box-shadow: none;
+ text-shadow: none;
+ padding: 0px;
+ border-radius: 9px;
+ padding-left: 4px;
+ padding-right: 4px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.5s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#taskbar button:hover,
#workspaces button:hover {
- color: grey;
- background-color: rgba(0,153,153,0.2);
- padding-left: 2px;
- padding-right: 2px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: grey;
+ background-color: rgba(0, 153, 153, 0.2);
+ padding-left: 2px;
+ padding-right: 2px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#taskbar button.active,
#workspaces button.active {
- background-color: grey;
- color: black;
- padding-left: 8px;
- padding-right: 8px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ background-color: grey;
+ color: black;
+ padding-left: 8px;
+ padding-right: 8px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#workspaces button.persistent {
- border-radius: 10px;
+ border-radius: 10px;
}
#backlight,
@@ -144,72 +144,73 @@ tooltip label{
#custom-weather.clearNight,
#custom-weather.cloudyFoggyDay,
#custom-weather.cloudyFoggyNight,
-#custom-weather.default,
+#custom-weather.default,
#custom-weather.rainyDay,
#custom-weather.rainyNight,
#custom-weather.severe,
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
#custom-weather.sunnyDay {
- padding-top: 4px;
- padding-bottom: 4px;
- padding-right: 6px;
- padding-left: 6px;
+ padding-top: 4px;
+ padding-bottom: 4px;
+ padding-right: 6px;
+ padding-left: 6px;
}
#custom-power {
- padding: 1px 3px;
+ padding-right: 2px;
+ padding-left: 1px;
}
/*-----Indicators----*/
#custom-hypridle.notactive,
#idle_inhibitor.activated {
- color: #39FF14;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
+ color: #39ff14;
+ border-bottom: 0px solid rgba(0, 0, 0, 0.2);
}
#pulseaudio.muted {
- color: #cc3436;
+ color: #cc3436;
}
#temperature.critical {
- color: #cc3436;
+ color: #cc3436;
}
@keyframes blink {
- to {
- color: #000000;
- }
+ to {
+ color: #000000;
+ }
}
#battery.critical:not(.charging) {
- color: #f53c3c;
- animation-name: blink;
- animation-duration: 3.0s;
- animation-timing-function: steps(12);
- animation-iteration-count: infinite;
- animation-direction: alternate;
+ color: #f53c3c;
+ animation-name: blink;
+ animation-duration: 3s;
+ animation-timing-function: steps(12);
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
}
#backlight-slider slider,
#pulseaudio-slider slider {
- min-width: 0px;
- min-height: 0px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
+ min-width: 0px;
+ min-height: 0px;
+ opacity: 0;
+ background-image: none;
+ border: none;
+ box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
- min-width: 80px;
- min-height: 5px;
- border-radius: 5px;
- background-color: grey;
+ min-width: 80px;
+ min-height: 5px;
+ border-radius: 5px;
+ background-color: grey;
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
- min-height: 10px;
- border-radius: 5px;
+ min-height: 10px;
+ border-radius: 5px;
}
/* --- tray readability override (global) --- */
diff --git a/config/waybar/style/Light-Obsidian-Glow.css b/config/waybar/style/Light-Obsidian-Glow.css
index ab428569..6b0b36f1 100644
--- a/config/waybar/style/Light-Obsidian-Glow.css
+++ b/config/waybar/style/Light-Obsidian-Glow.css
@@ -2,81 +2,81 @@
/* Light - Obsidian Glow */
* {
-font-family: "JetBrainsMono Nerd Font";
-font-weight: bold;
-min-height: 0;
-/* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
-/* NOTE: Waybar v14+ ignores % font-size values */
-font-size: 99%;
-font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ min-height: 0;
+ /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
+ /* NOTE: Waybar v14+ ignores % font-size values */
+ font-size: 99%;
+ font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
}
window#waybar {
- background: white;
- border-radius: 12px;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background: white;
+ border-radius: 12px;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
window#waybar.hidden {
- opacity: 0.7;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ opacity: 0.7;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
tooltip {
- background: white;
- border-radius: 10px;
+ background: white;
+ border-radius: 10px;
}
/* Waybar scaling: adjust tooltip label font-size to scale the bar */
tooltip label {
- color: #373737;
- padding-right: 2px;
- padding-left: 2px;
- /* Waybar scaling: adjust tooltip label font-size to scale the bar */
- font-size: 14px;
+ color: #373737;
+ padding-right: 2px;
+ padding-left: 2px;
+ /* Waybar scaling: adjust tooltip label font-size to scale the bar */
+ font-size: 14px;
}
#taskbar button,
#workspaces button {
- color: #585b70;
- box-shadow: none;
- text-shadow: none;
- padding: 0px;
- border-radius: 9px;
- padding-left: 4px;
- padding-right: 4px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.682);
+ color: #585b70;
+ box-shadow: none;
+ text-shadow: none;
+ padding: 0px;
+ border-radius: 9px;
+ padding-left: 4px;
+ padding-right: 4px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.5s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#workspaces button.active {
- background-color: dimgrey;
- color: #000000;
- border-radius: 15px 15px 15px 15px;
- padding-left: 8px;
- padding-right: 8px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ background-color: dimgrey;
+ color: #000000;
+ border-radius: 15px 15px 15px 15px;
+ padding-left: 8px;
+ padding-right: 8px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#workspaces button.focused {
- color: #000000;
+ color: #000000;
}
#workspaces button.urgent {
- color: #000000;
- border-radius: 10px;
+ color: #000000;
+ border-radius: 10px;
}
#workspaces button:hover {
- color: #000000;
- border-radius: 15px;
- padding-left: 2px;
- padding-right: 2px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: #000000;
+ border-radius: 15px;
+ padding-left: 2px;
+ padding-right: 2px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#backlight,
@@ -133,86 +133,86 @@ tooltip label {
#custom-weather.clearNight,
#custom-weather.cloudyFoggyDay,
#custom-weather.cloudyFoggyNight,
-#custom-weather.default,
+#custom-weather.default,
#custom-weather.rainyDay,
#custom-weather.rainyNight,
#custom-weather.severe,
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
#custom-weather.sunnyDay {
- color: #000000;
- border-radius: 8px;
- padding-top: 4px;
- padding-bottom: 4px;
- padding-right: 6px;
- padding-left: 6px;
+ color: #000000;
+ border-radius: 8px;
+ padding-top: 4px;
+ padding-bottom: 4px;
+ padding-right: 6px;
+ padding-left: 6px;
}
#temperature.critical {
- background-color: #ff0000;
+ background-color: #ff0000;
}
@keyframes blink {
- to {
- color: #000000;
- }
+ to {
+ color: #000000;
+ }
}
/*-----Indicators----*/
#custom-hypridle.notactive,
#idle_inhibitor.activated {
- color: #39FF14;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
+ color: #39ff14;
+ border-bottom: 0px solid rgba(0, 0, 0, 0.2);
}
#taskbar button.active {
- background-color: #585b70;
- color: #cdd6f4;
- padding-left: 12px;
- padding-right: 12px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ background-color: #585b70;
+ color: #cdd6f4;
+ padding-left: 12px;
+ padding-right: 12px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#taskbar button:hover {
- padding-left: 3px;
- padding-right: 3px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ padding-left: 3px;
+ padding-right: 3px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#battery.critical:not(.charging) {
- color: #f53c3c;
- animation-name: blink;
- animation-duration: 3.0s;
- animation-timing-function: steps(12);
- animation-iteration-count: infinite;
- animation-direction: alternate;
+ color: #f53c3c;
+ animation-name: blink;
+ animation-duration: 3s;
+ animation-timing-function: steps(12);
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
}
#backlight-slider slider,
#pulseaudio-slider slider {
- min-width: 0px;
- min-height: 0px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
+ min-width: 0px;
+ min-height: 0px;
+ opacity: 0;
+ background-image: none;
+ border: none;
+ box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
- min-width: 80px;
- min-height: 5px;
- border-radius: 5px;
- background-color: grey;
+ min-width: 80px;
+ min-height: 5px;
+ border-radius: 5px;
+ background-color: grey;
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
- min-height: 10px;
- border-radius: 5px;
- background-color: #ba5663;
+ min-height: 10px;
+ border-radius: 5px;
+ background-color: #ba5663;
}
/* --- tray readability override (global) --- */
diff --git a/config/waybar/style/Rainbow-RGB-Bordered.css b/config/waybar/style/Rainbow-RGB-Bordered.css
index 932f75b8..53306120 100644
--- a/config/waybar/style/Rainbow-RGB-Bordered.css
+++ b/config/waybar/style/Rainbow-RGB-Bordered.css
@@ -3,87 +3,89 @@
/* Designed by https://github.com/0xl30 */
* {
- font-family: "JetBrainsMono Nerd Font";
- font-weight: bold;
- min-height: 0;
- /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
- /* NOTE: Waybar v14+ ignores % font-size values */
- font-size: 99%;
- font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ min-height: 0;
+ /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
+ /* NOTE: Waybar v14+ ignores % font-size values */
+ font-size: 99%;
+ font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
}
@import "../waybar/style/catppuccin-themes/rgbmocha.css";
window#waybar {
- transition-property: background-color;
- transition-duration: 0.5s;
- background: transparent;
- border-radius: 2px;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ transition-property: background-color;
+ transition-duration: 0.5s;
+ background: transparent;
+ border-radius: 2px;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
window#waybar.hidden {
- opacity: 0.2;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ opacity: 0.2;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
window#waybar.empty,
window#waybar.empty #window {
- background-color: transparent;
- padding: 0px;
- border: 0px;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background-color: transparent;
+ padding: 0px;
+ border: 0px;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
#taskbar button,
#workspaces button {
- color: @overlay1;
- box-shadow: none;
- text-shadow: none;
- padding: 0px;
- border-radius: 9px;
- padding-left: 4px;
- padding-right: 4px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.682);
+ color: @overlay1;
+ box-shadow: none;
+ text-shadow: none;
+ padding: 0px;
+ border-radius: 9px;
+ padding-left: 4px;
+ padding-right: 4px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.5s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#taskbar button:hover,
#workspaces button:hover {
- border-radius: 10px;
- color: @peach;
- background-color: @surface0;
- padding-left: 2px;
- padding-right: 2px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ border-radius: 10px;
+ color: @peach;
+ background-color: @surface0;
+ padding-left: 2px;
+ padding-right: 2px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#workspaces button.persistent {
- color: @surface1;
- border-radius: 10px;
+ color: @surface1;
+ border-radius: 10px;
}
#taskbar button.active,
#workspaces button.active {
- color: @mauve;
- border-radius: 10px;
- padding-left: 8px;
- padding-right: 8px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: @mauve;
+ border-radius: 10px;
+ padding-left: 8px;
+ padding-right: 8px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#workspaces button.urgent {
- color: @red;
- border-radius: 0px;
+ color: @red;
+ border-radius: 0px;
}
/* This section can be use if you want to separate waybar modules */
-.modules-left, .modules-center, .modules-right {
+.modules-left,
+.modules-center,
+.modules-right {
background: @theme_base_color;
border: 2px solid transparent;
padding-top: 2px;
@@ -92,11 +94,20 @@ window#waybar.empty #window {
padding-left: 4px;
border-radius: 0px;
- border-image: linear-gradient(90deg, red, orange, yellow, green, blue, indigo, violet) 1;
- animation: rainbow-gradient 20s ease-in-out infinite; /* Adjust timing as needed */
+ border-image: linear-gradient(
+ 90deg,
+ red,
+ orange,
+ yellow,
+ green,
+ blue,
+ indigo,
+ violet
+ )
+ 1;
+ animation: rainbow-gradient 20s ease-in-out infinite; /* Adjust timing as needed */
}
-
#backlight,
#backlight-slider,
#battery,
@@ -152,23 +163,23 @@ window#waybar.empty #window {
#custom-weather.clearNight,
#custom-weather.cloudyFoggyDay,
#custom-weather.cloudyFoggyNight,
-#custom-weather.default,
+#custom-weather.default,
#custom-weather.rainyDay,
#custom-weather.rainyNight,
#custom-weather.severe,
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
#custom-weather.sunnyDay {
- padding-top: 4px;
- padding-bottom: 4px;
- padding-right: 6px;
- padding-left: 6px;
+ padding-top: 4px;
+ padding-bottom: 4px;
+ padding-right: 6px;
+ padding-left: 6px;
}
/*-----Indicators----*/
#custom-hypridle.notactive,
#idle_inhibitor.activated {
- color: #39FF14;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
+ color: #39ff14;
+ border-bottom: 0px solid rgba(0, 0, 0, 0.2);
}
#bluetooth,
@@ -190,7 +201,7 @@ window#waybar.empty #window {
background-color: @red;
color: @theme_text_color;
animation-name: blink;
- animation-duration: 3.0s;
+ animation-duration: 3s;
animation-timing-function: steps(12);
animation-iteration-count: infinite;
animation-direction: alternate;
@@ -234,17 +245,24 @@ window#waybar.empty #window {
}
#custom-cava_mviz {
- animation: rainbow-text 0.80s linear infinite;
+ animation: rainbow-text 0.8s linear infinite;
}
@keyframes rainbow-text {
- 0% { color: rgb(0, 247, 198); } /* Low amplitude */
- 42% { color: rgb(60, 0, 179); } /* Mid amplitude */
- 71% { color: indigo; } /* Higher amplitude */
- 100% { color: rgb(234, 0, 255); } /* Maximum amplitude */
+ 0% {
+ color: rgb(0, 247, 198);
+ } /* Low amplitude */
+ 42% {
+ color: rgb(60, 0, 179);
+ } /* Mid amplitude */
+ 71% {
+ color: indigo;
+ } /* Higher amplitude */
+ 100% {
+ color: rgb(234, 0, 255);
+ } /* Maximum amplitude */
}
-
#custom-menu {
color: @rosewater;
}
@@ -285,7 +303,7 @@ window#waybar.empty #window {
}
#mpris {
- color:@lavender;
+ color: @lavender;
}
#network {
@@ -299,25 +317,25 @@ window#waybar.empty #window {
#backlight-slider slider,
#pulseaudio-slider slider {
- min-width: 0px;
- min-height: 0px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
+ min-width: 0px;
+ min-height: 0px;
+ opacity: 0;
+ background-image: none;
+ border: none;
+ box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
- min-width: 80px;
- min-height: 5px;
- border-radius: 5px;
+ min-width: 80px;
+ min-height: 5px;
+ border-radius: 5px;
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
- min-height: 10px;
- border-radius: 5px;
+ min-height: 10px;
+ border-radius: 5px;
}
/* --- tray readability override (global) --- */
diff --git a/config/waybar/style/Retro-Simple-Style.css b/config/waybar/style/Retro-Simple-Style.css
index 03ae4a33..49725bfd 100644
--- a/config/waybar/style/Retro-Simple-Style.css
+++ b/config/waybar/style/Retro-Simple-Style.css
@@ -9,14 +9,13 @@
@define-color green #b8bb26;
* {
- font-family: "JetBrainsMono Nerd Font";
- font-weight: bold;
- min-height: 0;
- /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
- /* NOTE: Waybar v14+ ignores % font-size values */
- font-size: 99%;
- font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
-
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ min-height: 0;
+ /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
+ /* NOTE: Waybar v14+ ignores % font-size values */
+ font-size: 99%;
+ font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
}
window#waybar {
@@ -102,7 +101,7 @@ window#waybar {
#custom-weather.clearNight,
#custom-weather.cloudyFoggyDay,
#custom-weather.cloudyFoggyNight,
-#custom-weather.default,
+#custom-weather.default,
#custom-weather.rainyDay,
#custom-weather.rainyNight,
#custom-weather.severe,
@@ -131,7 +130,7 @@ window#waybar {
background-color: @red;
color: white;
animation-name: blink;
- animation-duration: 3.0s;
+ animation-duration: 3s;
animation-timing-function: steps(12);
animation-iteration-count: infinite;
animation-direction: alternate;
@@ -141,8 +140,8 @@ window#waybar {
/*-----Indicators----*/
#custom-hypridle.notactive,
#idle_inhibitor.activated {
- color: #39FF14;
- border-bottom: 3px solid yellow;
+ color: #39ff14;
+ border-bottom: 0px solid yellow;
}
#battery.critical,
@@ -154,7 +153,7 @@ window#waybar {
}
#temperature.critical {
- background-color: red;
+ background-color: red;
}
#battery.charging {
@@ -164,27 +163,27 @@ window#waybar {
#backlight-slider slider,
#pulseaudio-slider slider {
- min-width: 0px;
- min-height: 0px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
+ min-width: 0px;
+ min-height: 0px;
+ opacity: 0;
+ background-image: none;
+ border: none;
+ box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
- min-width: 80px;
- min-height: 5px;
- border-radius: 5px;
- background-color: @dim;
+ min-width: 80px;
+ min-height: 5px;
+ border-radius: 5px;
+ background-color: @dim;
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
- min-height: 10px;
- border-radius: 5px;
- background-color: @green;
+ min-height: 10px;
+ border-radius: 5px;
+ background-color: @green;
}
/* --- tray readability override (global) --- */
diff --git a/config/waybar/style/Transparent-Crystal-Clear.css b/config/waybar/style/Transparent-Crystal-Clear.css
index ae4f57c0..4e4fb3fa 100644
--- a/config/waybar/style/Transparent-Crystal-Clear.css
+++ b/config/waybar/style/Transparent-Crystal-Clear.css
@@ -2,79 +2,78 @@
/* .......Crystal Clear....................... */
/* --- 👍 designed by https://github.com/Krautt 👍 --- */
-*{
- font-family: "JetBrainsMono Nerd Font";
- font-weight: bold;
- min-height: 0;
- /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
- /* NOTE: Waybar v14+ ignores % font-size values */
- font-size: 99%;
- font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
+* {
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ min-height: 0;
+ /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
+ /* NOTE: Waybar v14+ ignores % font-size values */
+ font-size: 99%;
+ font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
}
-
+
window#waybar {
- background:transparent;
- border-radius: 1px;
- color: whitesmoke;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background: transparent;
+ border-radius: 1px;
+ color: whitesmoke;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
-
+
window#waybar.hidden {
- opacity: 0.5;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ opacity: 0.5;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
-window#waybar.empty
-window#waybar.empty #window {
- padding: 0px;
- border: 0px;
- background-color: transparent;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+window#waybar.empty window#waybar.empty #window {
+ padding: 0px;
+ border: 0px;
+ background-color: transparent;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
-#taskbar button,
+#taskbar button,
#workspaces button {
- color: #6E6A86;
- box-shadow: none;
- text-shadow: none;
- padding: 0px;
- border-radius: 9px;
- padding-left: 4px;
- padding-right: 4px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.682);
+ color: #6e6a86;
+ box-shadow: none;
+ text-shadow: none;
+ padding: 0px;
+ border-radius: 9px;
+ padding-left: 4px;
+ padding-right: 4px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.5s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
-
+
#workspaces button.active {
- color: whitesmoke;
- border-radius: 15px 15px 15px 15px;
- padding-left: 8px;
- padding-right: 8px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: whitesmoke;
+ border-radius: 15px 15px 15px 15px;
+ padding-left: 8px;
+ padding-right: 8px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
-
+
#workspaces button.focused {
- color: #d8dee9;
+ color: #d8dee9;
}
-
+
#workspaces button.urgent {
- color: #11111b;
- border-radius: 10px;
+ color: #11111b;
+ border-radius: 10px;
}
-
+
#workspaces button:hover {
- color: whitesmoke;
- border-radius: 15px;
- padding-left: 2px;
- padding-right: 2px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: whitesmoke;
+ border-radius: 15px;
+ padding-left: 2px;
+ padding-right: 2px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
-
+
#backlight,
#battery,
#bluetooth,
@@ -127,83 +126,82 @@ window#waybar.empty #window {
#custom-weather.clearNight,
#custom-weather.cloudyFoggyDay,
#custom-weather.cloudyFoggyNight,
-#custom-weather.default
-#custom-weather.rainyDay,
+#custom-weather.default #custom-weather.rainyDay,
#custom-weather.rainyNight,
#custom-weather.severe,
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
#custom-weather.sunnyDay {
- padding-top: 4px;
- padding-bottom: 4px;
- padding-right: 6px;
- padding-left: 6px;
+ padding-top: 4px;
+ padding-bottom: 4px;
+ padding-right: 6px;
+ padding-left: 6px;
}
-
+
#temperature.critical {
- background-color: #ff0000;
+ background-color: #ff0000;
}
-
+
@keyframes blink {
- to {
- color: #000000;
- }
+ to {
+ color: #000000;
+ }
}
/*-----Indicators----*/
#custom-hypridle.notactive,
#idle_inhibitor.activated {
- color: #39FF14;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
+ color: #39ff14;
+ border-bottom: 0px solid rgba(0, 0, 0, 0.2);
}
#taskbar button:hover {
- padding-left: 3px;
- padding-right: 3px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ padding-left: 3px;
+ padding-right: 3px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
-
+
#taskbar button.active {
- background-color: #7f849c;
- padding-left: 12px;
- padding-right: 12px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ background-color: #7f849c;
+ padding-left: 12px;
+ padding-right: 12px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
-
+
#battery.critical:not(.charging) {
- color: #f53c3c;
- animation-name: blink;
- animation-duration: 3.0s;
- animation-timing-function: steps(12);
- animation-iteration-count: infinite;
- animation-direction: alternate;
+ color: #f53c3c;
+ animation-name: blink;
+ animation-duration: 3s;
+ animation-timing-function: steps(12);
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
}
#backlight-slider slider,
#pulseaudio-slider slider {
- min-width: 0px;
- min-height: 0px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
+ min-width: 0px;
+ min-height: 0px;
+ opacity: 0;
+ background-image: none;
+ border: none;
+ box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
- min-width: 80px;
- min-height: 10px;
- border-radius: 5px;
- background-color: black;
+ min-width: 80px;
+ min-height: 10px;
+ border-radius: 5px;
+ background-color: black;
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
- min-height: 10px;
- border-radius: 5px;
- background-color: wheat;
+ min-height: 10px;
+ border-radius: 5px;
+ background-color: wheat;
}
/* --- tray readability override (global) --- */
diff --git a/config/waybar/style/VERTICAL-Catpuccin-Mocha.css b/config/waybar/style/VERTICAL-Catpuccin-Mocha.css
index f2fecff9..7c092fa2 100644
--- a/config/waybar/style/VERTICAL-Catpuccin-Mocha.css
+++ b/config/waybar/style/VERTICAL-Catpuccin-Mocha.css
@@ -3,13 +3,13 @@
/* As stated on title, best style for vertical layout waybar config */
* {
- font-family: "JetBrainsMono Nerd Font";
- font-weight: bold;
- min-height: 0;
- /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
- /* NOTE: Waybar v14+ ignores % font-size values */
- font-size: 99%;
- font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ min-height: 0;
+ /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
+ /* NOTE: Waybar v14+ ignores % font-size values */
+ font-size: 99%;
+ font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
}
@import "../waybar/style/catppuccin-themes/mocha.css";
@@ -41,10 +41,10 @@ tooltip label {
#workspaces button {
color: @surface2;
background-color: transparent;
- padding-top: 4px;
- padding-bottom: 4px;
- padding-right: 6px;
- padding-left: 4px;
+ padding-top: 4px;
+ padding-bottom: 4px;
+ padding-right: 6px;
+ padding-left: 4px;
}
#taskbar button.active,
@@ -126,7 +126,7 @@ tooltip label {
#custom-weather.clearNight,
#custom-weather.cloudyFoggyDay,
#custom-weather.cloudyFoggyNight,
-#custom-weather.default,
+#custom-weather.default,
#custom-weather.rainyDay,
#custom-weather.rainyNight,
#custom-weather.severe,
@@ -142,7 +142,7 @@ tooltip label {
#idle_inhibitor {
color: @pink;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
+ border-bottom: 0px solid rgba(0, 0, 0, 0.2);
}
#mpris {
@@ -188,7 +188,6 @@ tooltip label {
color: @flamingo;
}
-
#custom-weather {
color: @green;
border-radius: 15px;
diff --git a/config/waybar/style/Wallust-Bordered-Chroma-Fusion-Edge.css b/config/waybar/style/Wallust-Bordered-Chroma-Fusion-Edge.css
index 6426a420..71215c29 100644
--- a/config/waybar/style/Wallust-Bordered-Chroma-Fusion-Edge.css
+++ b/config/waybar/style/Wallust-Bordered-Chroma-Fusion-Edge.css
@@ -17,48 +17,48 @@
@define-color button-color @color11;
@define-color button-hover @color9;
-@import '../../.config/waybar/wallust/colors-waybar.css';
+@import "../../.config/waybar/wallust/colors-waybar.css";
@import "../waybar/style/catppuccin-themes/latte.css";
* {
- font-family: "JetBrainsMono Nerd Font";
- font-weight: bold;
- min-height: 0;
- /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
- /* NOTE: Waybar v14+ ignores % font-size values */
- font-size: 99%;
- font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ min-height: 0;
+ /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
+ /* NOTE: Waybar v14+ ignores % font-size values */
+ font-size: 99%;
+ font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
}
window#waybar {
- background: linear-gradient(0deg, @border-color, black);
- /*background: rgba(1, 117, 84, 0.5);*/
- /*background: @transparent;*/
- border-bottom-right-radius: 20px;
- border-bottom-left-radius: 20px;
- border-top-left-radius: 20px;
- border-top-right-radius: 20px;
- border:2px solid black;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background: linear-gradient(0deg, @border-color, black);
+ /*background: rgba(1, 117, 84, 0.5);*/
+ /*background: @transparent;*/
+ border-bottom-right-radius: 20px;
+ border-bottom-left-radius: 20px;
+ border-top-left-radius: 20px;
+ border-top-right-radius: 20px;
+ border: 2px solid black;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
window#waybar.empty,
window#waybar.empty #window {
- background-color: transparent;
- padding: 0px;
- border: 0px;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background-color: transparent;
+ padding: 0px;
+ border: 0px;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
tooltip {
- background-color: transparent;
- border-radius: 10px;
- border-width: 1px;
- border-style: solid;
- border-color: #11111b;
- color: @border-color;
+ background-color: transparent;
+ border-radius: 10px;
+ border-width: 1px;
+ border-style: solid;
+ border-color: #11111b;
+ color: @border-color;
}
#backlight,
@@ -114,70 +114,69 @@ tooltip {
#custom-weather.clearNight,
#custom-weather.cloudyFoggyDay,
#custom-weather.cloudyFoggyNight,
-#custom-weather.default,
+#custom-weather.default,
#custom-weather.rainyDay,
#custom-weather.rainyNight,
#custom-weather.severe,
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
#custom-weather.sunnyDay {
- background-color: @background-module;
- border-radius: 25px;
- padding: 0px 10px 0px 10px;
- margin: 5px;
- opacity: 1;
- border:2px solid @border-color;
-
+ background-color: @background-module;
+ border-radius: 25px;
+ padding: 0px 10px 0px 10px;
+ margin: 5px;
+ opacity: 1;
+ border: 2px solid @border-color;
}
#custom-power {
- color: red;
- padding: 0px 0px 0px 7px;
- opacity:1.0;
+ color: red;
+ padding: 0px 0px 0px 0px;
+ opacity: 1;
}
#backlight {
- padding: 0px 2px 0px 6px;
+ padding: 0px 2px 0px 6px;
}
#custom-light_dark,
#custom-nightlight,
-#custom-menu{
- color: @flamingo;
- padding: 0px 8px 0px 4px;
- opacity:1.0;
+#custom-menu {
+ color: @flamingo;
+ padding: 0px 8px 0px 4px;
+ opacity: 1;
}
#custom-weather,
#custom-weather2,
#custom-updates {
- color: @yellow;
+ color: @yellow;
}
#mpris {
- padding-right: 2px;
+ padding-right: 2px;
}
#keyboard-state,
#clock {
- color: @sapphire;
+ color: @sapphire;
}
#temperature {
- color: @rosewater;
+ color: @rosewater;
}
#network {
- padding-left: 2px;
- color: @rosewater;
+ padding-left: 2px;
+ color: @rosewater;
}
#custom-swaync,
#custom-hint,
#tray {
- color: aliceblue;
+ color: aliceblue;
}
#taskbar,
-#window {
- color:#FFFFFF;
+#window {
+ color: #ffffff;
}
#bluetooth,
@@ -185,141 +184,140 @@ tooltip {
#custom-cycle_wall,
#custom-keyboard,
#custom-light_dark {
- color: @lavender;
+ color: @lavender;
}
#custom-lock,
#custom-hypridle,
#idle_inhibitor {
- color: @teal;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
+ color: @teal;
+ border-bottom: 0px solid rgba(0, 0, 0, 0.2);
}
/*-----Indicators----*/
#custom-hypridle.notactive,
#idle_inhibitor.activated {
- color: #39FF14;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
+ color: #39ff14;
+ border-bottom: 0px solid rgba(0, 0, 0, 0.2);
}
-#custom-cava_mviz{
- color: @color2;
+#custom-cava_mviz {
+ color: @color2;
}
#workspaces {
- border-radius: 25px;
- border:2px solid @border-color;
- opacity:0.8;
- color:#FFFFFF;
- margin: 6px;
-
+ border-radius: 25px;
+ border: 2px solid @border-color;
+ opacity: 0.8;
+ color: #ffffff;
+ margin: 6px;
}
#taskbar button,
#workspaces button {
- border-radius: 15px;
- border:0px;
- color: @color15;
- padding-left: 2px;
- padding-right: 2px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.682);
- opacity:0.8;
+ border-radius: 15px;
+ border: 0px;
+ color: @color15;
+ padding-left: 2px;
+ padding-right: 2px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.5s cubic-bezier(0.55, -0.68, 0.48, 1.682);
+ opacity: 0.8;
}
#taskbar button.active,
#workspaces button.active {
- color: #FFFFFF;
- background: @button-color;
- border-radius: 25px;
- padding-left: 4px;
- padding-right: 4px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
- opacity:1.0;
+ color: #ffffff;
+ background: @button-color;
+ border-radius: 25px;
+ padding-left: 4px;
+ padding-right: 4px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
+ opacity: 1;
}
#workspaces button.empty {
- color: #FFFFFF;
- opacity:1.0;
+ color: #ffffff;
+ opacity: 1;
}
#taskbar button:hover,
#workspaces button:hover {
- color: #FFFFFF;
- background: @button-hover;
- border-radius: 15px;
- opacity:1.0;
- padding-left: 2px;
- padding-right: 2px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: #ffffff;
+ background: @button-hover;
+ border-radius: 15px;
+ opacity: 1;
+ padding-left: 2px;
+ padding-right: 2px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#pulseaudio-slider,
#pulseaudio {
- color: @color13;
+ color: @color13;
}
#pulseaudio.muted {
- color: red;
+ color: red;
}
#memory {
- color: @sapphire;
+ color: @sapphire;
}
#cpu {
- color: @mauve;
+ color: @mauve;
}
#battery {
- color: @rosewater;
+ color: @rosewater;
}
#disk {
- color: @sky;
+ color: @sky;
}
#temperature.critical {
- background-color: red;
+ background-color: red;
}
@keyframes blink {
- to {
- color: #000000;
- }
+ to {
+ color: #000000;
+ }
}
#battery.critical:not(.charging) {
- color: #f53c3c;
- animation-name: blink;
- animation-duration: 3.0s;
- animation-timing-function: steps(12);
- animation-iteration-count: infinite;
- animation-direction: alternate;
+ color: #f53c3c;
+ animation-name: blink;
+ animation-duration: 3s;
+ animation-timing-function: steps(12);
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
}
#backlight-slider slider,
#pulseaudio-slider slider {
- min-width: 0px;
- min-height: 0px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
+ min-width: 0px;
+ min-height: 0px;
+ opacity: 0;
+ background-image: none;
+ border: none;
+ box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
- min-width: 80px;
- min-height: 5px;
- border-radius: 5px;
+ min-width: 80px;
+ min-height: 5px;
+ border-radius: 5px;
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
- min-height: 10px;
- border-radius: 5px;
+ min-height: 10px;
+ border-radius: 5px;
}
/* --- tray readability override (global) --- */
diff --git a/config/waybar/style/Wallust-Bordered-Chroma-Simple.css b/config/waybar/style/Wallust-Bordered-Chroma-Simple.css
index 3f51751a..05ad5f91 100644
--- a/config/waybar/style/Wallust-Bordered-Chroma-Simple.css
+++ b/config/waybar/style/Wallust-Bordered-Chroma-Simple.css
@@ -1,97 +1,96 @@
/* ----------- 💫 https://github.com/LinuxBeginnings 💫 -------- */
/* Wallust Bordered - Chroma Simple */
-@import '../../.config/waybar/wallust/colors-waybar.css';
-
+@import "../../.config/waybar/wallust/colors-waybar.css";
* {
- font-family: "JetBrainsMono Nerd Font";
- font-weight: bold;
- /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
- /* NOTE: Waybar v14+ ignores % font-size values */
- font-size: 99%;
- min-height: 0;
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
+ /* NOTE: Waybar v14+ ignores % font-size values */
+ font-size: 99%;
+ min-height: 0;
}
/* Make group buttons themselves use readable text */
#group-audio,
#group-mobo_drawer {
- background: @background;
- color: @color15;
- border: 2px solid @color13;
+ background: @background;
+ color: @color15;
+ border: 2px solid @color13;
}
window#waybar {
- background-color: transparent;
- color: @foreground;
- padding-left: 15px;
- padding-right: 15px;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background-color: transparent;
+ color: @foreground;
+ padding-left: 15px;
+ padding-right: 15px;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
window#waybar.empty,
window#waybar.empty #window {
- background-color: transparent;
- padding: 0px;
- border: 0px;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background-color: transparent;
+ padding: 0px;
+ border: 0px;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
tooltip {
- background-color: @background;
- color: @foreground;
- border-radius: 10px;
- border-width: 1.5px;
- border-style: solid;
- border-color: @color13;
- transition: 0.3s;
- opacity: 0.9;
+ background-color: @background;
+ color: @foreground;
+ border-radius: 10px;
+ border-width: 1.5px;
+ border-style: solid;
+ border-color: @color13;
+ transition: 0.3s;
+ opacity: 0.9;
}
#taskbar button,
#workspaces {
- border-radius: 20px;
- background: @background;
- opacity: 1;
- padding: 0px 10px;
- margin: 0;
- margin-top: 5px;
- border: 2px solid @color12;
+ border-radius: 20px;
+ background: @background;
+ opacity: 1;
+ padding: 0px 10px;
+ margin: 0;
+ margin-top: 5px;
+ border: 2px solid @color12;
}
#workspaces button {
- color: @color10;
- box-shadow: none;
- text-shadow: none;
- padding-right: 12px;
- border-radius: 9px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.682);
+ color: @color10;
+ box-shadow: none;
+ text-shadow: none;
+ padding-right: 12px;
+ border-radius: 9px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.5s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#taskbar button.active,
#workspaces button.active {
- color: @color12;
- padding-right: 12px;
- background-color: @background;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: @color12;
+ padding-right: 12px;
+ background-color: @background;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#workspaces button.urgent {
- color: #11111b;
- border-radius: 10px;
+ color: #11111b;
+ border-radius: 10px;
}
#taskbar button:hover,
#workspaces button:hover {
- color: @color12;
- padding-left: 0px;
- padding-right: 2px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: @color12;
+ padding-left: 0px;
+ padding-right: 2px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#backlight,
@@ -156,140 +155,138 @@ tooltip {
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
#custom-weather.sunnyDay {
- border-radius: 20px;
- background: @background;
- opacity: 1;
- padding: 0px 10px;
- margin: 0;
- margin-top: 5px;
- border: 2px solid @color13;
+ border-radius: 20px;
+ background: @background;
+ opacity: 1;
+ padding: 0px 10px;
+ margin: 0;
+ margin-top: 5px;
+ border: 2px solid @color13;
}
-
#cpu {
- border: 2px solid @color5;
- color: @foreground;
- background: @color12;
+ border: 2px solid @color5;
+ color: @foreground;
+ background: @color12;
}
#memory {
- color: @foreground;
- background: @color12;
+ color: @foreground;
+ background: @color12;
}
#disk {
- color: @foreground;
- background: @color12;
- border: 2px solid @color13;
+ color: @foreground;
+ background: @color12;
+ border: 2px solid @color13;
}
-#temperature{
- color: @foreground;
- background: @color12;
+#temperature {
+ color: @foreground;
+ background: @color12;
}
#temperature.critical {
- color: red;
- border: 2px solid red;
+ color: red;
+ border: 2px solid red;
}
#custom-power {
- color: @color13;
- padding-left: 10px;
- padding-right: 2px;
- border: 2px solid @color13;
+ color: @color13;
+ padding-left: 1px;
+ padding-right: 2px;
+ border: 2px solid @color13;
}
#backlight {
- color: @color14;
- padding-right: 5px;
+ color: @color14;
+ padding-right: 5px;
}
#tray {
- border-radius: 20px;
- margin-right: 5px;
-/* padding: 0px 4px; */
- padding-left: 15px;
- padding-right: 15px;
- border: 2px solid @color7;
+ border-radius: 20px;
+ margin-right: 5px;
+ /* padding: 0px 4px; */
+ padding-left: 15px;
+ padding-right: 15px;
+ border: 2px solid @color7;
}
#mpris {
- padding-left: 16px;
+ padding-left: 16px;
}
#tray.empty {
- background-color: transparent;
- border-color: transparent;
- border: 0px;
+ background-color: transparent;
+ border-color: transparent;
+ border: 0px;
}
#window {
- margin-left: 5px;
- margin-right: 5px;
- border: 2px solid @color9;
+ margin-left: 5px;
+ margin-right: 5px;
+ border: 2px solid @color9;
}
#clock {
- color: @color13;
+ color: @color13;
}
#clock:hover {
- color: @color13;
- background: @background;
- border: 2px solid @color13;
+ color: @color13;
+ background: @background;
+ border: 2px solid @color13;
}
-
#bluetooth {
- color: @color12;
- margin-right: 10px
-}
+ color: @color12;
+ margin-right: 10px;
+}
#pulseaudio.microphone,
#pulseaudio {
- background-color: @color12;
- color: @color15;
- border: 2px solid @color13;
+ background-color: @color12;
+ color: @color15;
+ border: 2px solid @color13;
}
#pulseaudio.muted {
- color: @color13;
- padding-right: 20px;
+ color: @color13;
+ padding-right: 20px;
}
#battery {
- color: @color10;
- margin-right: 5px;
- padding-right: 15px;
- border: 2px solid @color14;
+ color: @color10;
+ margin-right: 5px;
+ padding-right: 15px;
+ border: 2px solid @color14;
}
/*-----Indicators----*/
#custom-hypridle.notactive,
#idle_inhibitor.activated {
- color: #39FF14;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
+ color: #39ff14;
+ border-bottom: 0px solid rgba(0, 0, 0, 0.2);
}
#battery.good {
- color: @color14;
- border: 2px solid @color15;
+ color: @color14;
+ border: 2px solid @color15;
}
#battery.warning {
- color: @color13;
- border-left: 0px;
- border: 2px solid @color12;
+ color: @color13;
+ border-left: 0px;
+ border: 2px solid @color12;
}
#battery.charging {
- color: @color10;
+ color: @color10;
}
#battery.critical {
- color: @color13;
- border-left: 0px;
- border: 2px solid @color8;
+ color: @color13;
+ border-left: 0px;
+ border: 2px solid @color8;
}
@keyframes blink {
@@ -302,7 +299,7 @@ tooltip {
background-color: red;
color: white;
animation-name: blink;
- animation-duration: 3.0s;
+ animation-duration: 3s;
animation-timing-function: steps(12);
animation-iteration-count: infinite;
animation-direction: alternate;
@@ -310,33 +307,33 @@ tooltip {
}
#custom-weather {
- color: @color12;
- border-right: 0px;
- margin-left: 0px;
- margin-right: 5px;
+ color: @color12;
+ border-right: 0px;
+ margin-left: 0px;
+ margin-right: 5px;
}
#backlight-slider slider,
#pulseaudio-slider slider {
- min-width: 0px;
- min-height: 0px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
+ min-width: 0px;
+ min-height: 0px;
+ opacity: 0;
+ background-image: none;
+ border: none;
+ box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
- min-width: 80px;
- min-height: 5px;
- border-radius: 5px;
+ min-width: 80px;
+ min-height: 5px;
+ border-radius: 5px;
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
- min-height: 10px;
- border-radius: 5px;
+ min-height: 10px;
+ border-radius: 5px;
}
/* Ensure group drawer modules match base style (avoid bright per-module colors) */
@@ -347,9 +344,9 @@ tooltip {
#group-mobo_drawer #power-profiles-daemon,
#group-mobo_drawer #memory,
#group-mobo_drawer #disk {
- background-color: @background;
- color: @color15;
- border: 2px solid @color13;
+ background-color: @background;
+ color: @color15;
+ border: 2px solid @color13;
}
/* Global overrides for this style (match other widgets: dark bg + light text) */
@@ -360,9 +357,9 @@ tooltip {
#disk,
#temperature,
#power-profiles-daemon {
- background-color: @background;
- color: @color15;
- border: 2px solid @color13;
+ background-color: @background;
+ color: @color15;
+ border: 2px solid @color13;
}
/* --- tray readability override (global) --- */
diff --git a/config/waybar/style/Wallust-Box-type.css b/config/waybar/style/Wallust-Box-type.css
index b5d0424f..76a76ca7 100644
--- a/config/waybar/style/Wallust-Box-type.css
+++ b/config/waybar/style/Wallust-Box-type.css
@@ -162,16 +162,17 @@ window#waybar.empty #window {
}
#custom-power {
- padding-right: 2px;
+ padding-right: 0px;
+ padding-left: 0px;
}
/*-----Indicators----*/
#custom-hypridle.notactive,
#idle_inhibitor.activated {
color: #39ff14;
- border-bottom-width: 5px;
- border-bottom-color: @color12;
- border-bottom-style: solid;
+ border-bottom-width: 5px;
+ border-bottom-color: @color12;
+ border-bottom-style: solid;
}
#network {
diff --git a/config/waybar/style/Wallust-Chroma-Edge.css b/config/waybar/style/Wallust-Chroma-Edge.css
index b1d6811b..c7acf7f0 100644
--- a/config/waybar/style/Wallust-Chroma-Edge.css
+++ b/config/waybar/style/Wallust-Chroma-Edge.css
@@ -198,7 +198,7 @@ tooltip label {
#custom-power {
color: #cc3436;
- padding: 0px 0px 0px 6px;
+ padding: 0px 0px 0px 0px;
}
#custom-launcher {
@@ -353,7 +353,7 @@ label:focus {
#custom-hypridle.notactive,
#idle_inhibitor.activated {
color: #39ff14;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
+ border-bottom: 0px solid rgba(0, 0, 0, 0.2);
}
#temperature {
diff --git a/config/waybar/style/Wallust-Chroma-Fusion.css b/config/waybar/style/Wallust-Chroma-Fusion.css
index 808c7e9b..07ef6094 100644
--- a/config/waybar/style/Wallust-Chroma-Fusion.css
+++ b/config/waybar/style/Wallust-Chroma-Fusion.css
@@ -17,47 +17,47 @@
@define-color button-color @color11;
@define-color button-hover @color12;
-@import '../../.config/waybar/wallust/colors-waybar.css';
+@import "../../.config/waybar/wallust/colors-waybar.css";
@import "../waybar/style/catppuccin-themes/latte.css";
* {
- font-family: "JetBrainsMono Nerd Font";
- font-weight: bold;
- min-height: 0;
- /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
- /* NOTE: Waybar v14+ ignores % font-size values */
- font-size: 99%;
- font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ min-height: 0;
+ /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
+ /* NOTE: Waybar v14+ ignores % font-size values */
+ font-size: 99%;
+ font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
}
window#waybar {
- background: linear-gradient(0deg, @border-color, black);
- /*background: rgba(1, 117, 84, 0.5);*/
- /*background: @transparent;*/
- border-bottom-right-radius: 20px;
- border-bottom-left-radius: 20px;
- border-top-left-radius: 20px;
- border-top-right-radius: 20px;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background: linear-gradient(0deg, @border-color, black);
+ /*background: rgba(1, 117, 84, 0.5);*/
+ /*background: @transparent;*/
+ border-bottom-right-radius: 20px;
+ border-bottom-left-radius: 20px;
+ border-top-left-radius: 20px;
+ border-top-right-radius: 20px;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
window#waybar.empty,
window#waybar.empty #window {
- background-color: transparent;
- padding: 0px;
- border: 0px;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background-color: transparent;
+ padding: 0px;
+ border: 0px;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
tooltip {
- background-color: @background-module;
- border-radius: 10px;
- border-width: 2px;
- border-style: solid;
- border-color: #11111b;
- color: @color2;
+ background-color: @background-module;
+ border-radius: 10px;
+ border-width: 2px;
+ border-style: solid;
+ border-color: #11111b;
+ color: @color2;
}
#backlight,
@@ -115,67 +115,67 @@ tooltip {
#custom-weather.clearNight,
#custom-weather.cloudyFoggyDay,
#custom-weather.cloudyFoggyNight,
-#custom-weather.default,
+#custom-weather.default,
#custom-weather.rainyDay,
#custom-weather.rainyNight,
#custom-weather.severe,
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
#custom-weather.sunnyDay {
- background-color: @background-module;
- border-radius: 25px;
- margin: 5px 5px 5px 5px;
- opacity: 1;
- padding-top: 4px;
- padding-bottom: 4px;
- padding-right: 6px;
- padding-left: 6px;
+ background-color: @background-module;
+ border-radius: 25px;
+ margin: 5px 5px 5px 5px;
+ opacity: 1;
+ padding-top: 4px;
+ padding-bottom: 4px;
+ padding-right: 6px;
+ padding-left: 6px;
}
#backlight {
- padding: 0px 2px 0px 6px;
+ padding: 0px 2px 0px 6px;
}
#custom-power {
- color: red;
- padding: 0px 0px 0px 6px;
- opacity:1.0;
+ color: red;
+ padding: 0px 0px 0px 0px;
+ opacity: 1;
}
#custom-light_dark,
#custom-nightlight,
-#custom-menu{
- color: @flamingo;
- padding: 0px 8px 0px 4px;
- opacity:1.0;
+#custom-menu {
+ color: @flamingo;
+ padding: 0px 8px 0px 4px;
+ opacity: 1;
}
#mpris {
- color: @sapphire;
- padding-right: 0px;
+ color: @sapphire;
+ padding-right: 0px;
}
#custom-swaync,
#custom-weather,
#custom-weather2,
#custom-updater {
- color: @yellow;
+ color: @yellow;
}
#keyboard-state,
#clock {
- color: @sapphire;
+ color: @sapphire;
}
#network,
#temperature {
- color: @rosewater;
+ color: @rosewater;
}
#custom-hint,
#tray {
- color: aliceblue;
+ color: aliceblue;
}
#taskbar,
-#window {
- color:#FFFFFF;
+#window {
+ color: #ffffff;
}
#bluetooth,
@@ -183,150 +183,149 @@ tooltip {
#custom-cycle_wall,
#custom-keyboard,
#custom-light_dark {
- color: @lavender;
+ color: @lavender;
}
#custom-cava_mviz {
- color: @color15;
- background-color: rgba(15, 96, 95, 0.65);
- border: 1px solid @color10;
+ color: @color15;
+ background-color: rgba(15, 96, 95, 0.65);
+ border: 1px solid @color10;
}
#custom-lock,
#custom-hypridle,
#idle_inhibitor {
- color: @teal;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
+ color: @teal;
+ border-bottom: 0px solid rgba(0, 0, 0, 0.2);
}
/*-----Indicators----*/
#custom-hypridle.notactive,
#idle_inhibitor.activated {
- color: #39FF14;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
+ color: #39ff14;
+ border-bottom: 0px solid rgba(0, 0, 0, 0.2);
}
#workspaces {
- margin: 3px 3px 3px 3px;
- padding: 0px 1px;
- border-radius: 25px;
- font-weight: bold;
- font-style: normal;
- opacity:0.8;
- color:#FFFFFF;
-
+ margin: 3px 3px 3px 3px;
+ padding: 0px 1px;
+ border-radius: 25px;
+ font-weight: bold;
+ font-style: normal;
+ opacity: 0.8;
+ color: #ffffff;
}
#taskbar button,
#workspaces button {
- margin: 1px 1px;
- border-radius: 15px;
- border: 1px solid transparent;
- background: transparent;
- color: @color15;
- padding-left: 2px;
- padding-right: 2px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.682);
- opacity:0.8;
+ margin: 1px 1px;
+ border-radius: 15px;
+ border: 1px solid transparent;
+ background: transparent;
+ color: @color15;
+ padding-left: 2px;
+ padding-right: 2px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.5s cubic-bezier(0.55, -0.68, 0.48, 1.682);
+ opacity: 0.8;
}
#taskbar button.active,
#workspaces button.active {
- color: @color0;
- background: @color12;
- border: 1px solid @color15;
- border-radius: 15px;
- padding-left: 4px;
- padding-right: 4px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
- opacity:1.0;
+ color: @color0;
+ background: @color12;
+ border: 1px solid @color15;
+ border-radius: 15px;
+ padding-left: 4px;
+ padding-right: 4px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
+ opacity: 1;
}
#workspaces button.empty {
- color: #FFFFFF;
- opacity:1.0;
+ color: #ffffff;
+ opacity: 1;
}
#taskbar button:hover,
#workspaces button:hover {
- color: @color0;
- background: @color11;
- border: 1px solid @color15;
- border-radius: 15px;
- opacity:1.0;
- padding-left: 2px;
- padding-right: 2px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: @color0;
+ background: @color11;
+ border: 1px solid @color15;
+ border-radius: 15px;
+ opacity: 1;
+ padding-left: 2px;
+ padding-right: 2px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#pulseaudio-slider,
#pulseaudio {
- color: @color13;
+ color: @color13;
}
#pulseaudio.muted {
- color: red;
+ color: red;
}
#memory {
- color: @sapphire;
+ color: @sapphire;
}
#cpu {
- color: @mauve;
+ color: @mauve;
}
#battery {
- color: @rosewater;
+ color: @rosewater;
}
#disk {
- color: @sky;
+ color: @sky;
}
#temperature.critical {
- background-color: red;
+ background-color: red;
}
@keyframes blink {
- to {
- color: #000000;
- }
+ to {
+ color: #000000;
+ }
}
#battery.critical:not(.charging) {
- color: #f53c3c;
- animation-name: blink;
- animation-duration: 3.0s;
- animation-timing-function: steps(12);
- animation-iteration-count: infinite;
- animation-direction: alternate;
+ color: #f53c3c;
+ animation-name: blink;
+ animation-duration: 3s;
+ animation-timing-function: steps(12);
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
}
#backlight-slider slider,
#pulseaudio-slider slider {
- min-width: 0px;
- min-height: 0px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
+ min-width: 0px;
+ min-height: 0px;
+ opacity: 0;
+ background-image: none;
+ border: none;
+ box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
- min-width: 80px;
- min-height: 5px;
- border-radius: 5px;
+ min-width: 80px;
+ min-height: 5px;
+ border-radius: 5px;
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
- min-height: 10px;
- border-radius: 5px;
+ min-height: 10px;
+ border-radius: 5px;
}
/* --- tray readability override (global) --- */
diff --git a/config/waybar/style/Wallust-Chroma-Tally-V2.css b/config/waybar/style/Wallust-Chroma-Tally-V2.css
index 4fd9e6b3..be00b262 100644
--- a/config/waybar/style/Wallust-Chroma-Tally-V2.css
+++ b/config/waybar/style/Wallust-Chroma-Tally-V2.css
@@ -1,74 +1,79 @@
/* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */
/* Wallust - Chroma Tally v2 */
-/* edited by: https://github.com/prateekshukla1108 */
+/* edited by: https://github.com/prateekshukla1108 */
-@import '../../.config/waybar/wallust/colors-waybar.css';
+@import "../../.config/waybar/wallust/colors-waybar.css";
* {
- font-family: "JetBrainsMono Nerd Font";
- font-weight: bold;
- min-height: 0;
- /* NOTE: Waybar v14+ ignores % font-size values */
- font-size: 99%;
- font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ min-height: 0;
+ /* NOTE: Waybar v14+ ignores % font-size values */
+ font-size: 99%;
+ font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
}
window#waybar {
- background: @color0; /* Dark background */
- border-radius: 12px;
- border-bottom: 2px;
- border-style: solid;
- border-color: @color7; /* Light border */
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background: @color0; /* Dark background */
+ border-radius: 12px;
+ border-bottom: 2px;
+ border-style: solid;
+ border-color: @color7; /* Light border */
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
#workspaces {
- background: transparent;
- padding: 2px;
- border-radius: 15px;
- border: 0px;
- font-style: normal;
- color: @color7; /* Light text */
+ background: transparent;
+ padding: 2px;
+ border-radius: 15px;
+ border: 0px;
+ font-style: normal;
+ color: @color7; /* Light text */
}
#taskbar button,
#workspaces button {
- padding: 0px 5px;
- border-radius: 15px;
- border: 0px;
- color: @color7; /* Light text */
- background: linear-gradient(45deg, @color5, @color6, @color7); /* Lighter gradient */
- opacity: 0.5;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ padding: 0px 5px;
+ border-radius: 15px;
+ border: 0px;
+ color: @color7; /* Light text */
+ background: linear-gradient(
+ 45deg,
+ @color5,
+ @color6,
+ @color7
+ ); /* Lighter gradient */
+ opacity: 0.5;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#taskbar button.active,
#workspaces button.active {
- padding: 0px 5px;
- border-radius: 15px;
- border: 0px;
- color: @color7; /* Light text */
- background: linear-gradient(45deg, @color5, @color6); /* Lighter gradient */
- opacity: 1.0;
- min-width: 40px;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ padding: 0px 5px;
+ border-radius: 15px;
+ border: 0px;
+ color: @color7; /* Light text */
+ background: linear-gradient(45deg, @color5, @color6); /* Lighter gradient */
+ opacity: 1;
+ min-width: 40px;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#workspaces button:hover {
- border-radius: 15px;
- color: @color7; /* Light text */
- background: linear-gradient(45deg, @color6, @color7); /* Lighter gradient */
- opacity: 0.8;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ border-radius: 15px;
+ color: @color7; /* Light text */
+ background: linear-gradient(45deg, @color6, @color7); /* Lighter gradient */
+ opacity: 0.8;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
tooltip {
- background: @background-alt; /* Theme-neutral tooltip background */
- opacity: 0.8;
- border-radius: 6px;
- color: @color7; /* Light text */
+ background: @background-alt; /* Theme-neutral tooltip background */
+ opacity: 0.8;
+ border-radius: 6px;
+ color: @color7; /* Light text */
}
#backlight,
@@ -125,108 +130,108 @@ tooltip {
#custom-weather.clearNight,
#custom-weather.cloudyFoggyDay,
#custom-weather.cloudyFoggyNight,
-#custom-weather.default,
+#custom-weather.default,
#custom-weather.rainyDay,
#custom-weather.rainyNight,
#custom-weather.severe,
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
#custom-weather.sunnyDay {
- padding-top: 5px;
- padding-bottom: 5px;
- padding-right: 6px;
- padding-left: 6px;
- color: @color6; /* Lighter - changed from color5 */
+ padding-top: 5px;
+ padding-bottom: 5px;
+ padding-right: 6px;
+ padding-left: 6px;
+ color: @color6; /* Lighter - changed from color5 */
}
#clock {
- color: @color6; /* Lighter */
+ color: @color6; /* Lighter */
}
#backlight {
- color: @color5; /* Lighter */
+ color: @color5; /* Lighter */
}
#battery {
- color: @color6; /* Lighter */
+ color: @color6; /* Lighter */
}
#battery.charging {
- color: @color7; /* Lightest */
+ color: @color7; /* Lightest */
}
@keyframes blink {
- to {
- color: @color4; /* Slightly lighter blink color */
- background-color: @color7; /* Lightest */
- }
+ to {
+ color: @color4; /* Slightly lighter blink color */
+ background-color: @color7; /* Lightest */
+ }
}
#battery.critical:not(.charging) {
- background: @color5; /* Lighter background */
- color: @color7; /* Lightest */
- animation-name: blink;
- animation-duration: 3.0s;
- animation-timing-function: steps(12);
- animation-iteration-count: infinite;
- animation-direction: alternate;
+ background: @color5; /* Lighter background */
+ color: @color7; /* Lightest */
+ animation-name: blink;
+ animation-duration: 3s;
+ animation-timing-function: steps(12);
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
}
#cpu {
- color: @color6; /* Lighter */
+ color: @color6; /* Lighter */
}
#disk {
- color: @color5; /* Lighter */
+ color: @color5; /* Lighter */
}
#custom-keyboard,
#memory {
- color: @color6; /* Lighter */
+ color: @color6; /* Lighter */
}
#network.disabled {
- color: @color5; /* Lighter */
+ color: @color5; /* Lighter */
}
-#network{
- color: @color6; /* Lighter */
+#network {
+ color: @color6; /* Lighter */
}
#network.disconnected {
- color: @color5; /* Lighter */
+ color: @color5; /* Lighter */
}
#pulseaudio {
- color: @color7; /* Lightest */
+ color: @color7; /* Lightest */
}
#pulseaudio.muted {
- color: @color5; /* Lighter */
+ color: @color5; /* Lighter */
}
#custom-light_dark,
#custom-nightlight,
#temperature {
- color: @color6; /* Lighter */
+ color: @color6; /* Lighter */
}
#temperature.critical {
- color: @color5; /* Lighter */
+ color: @color5; /* Lighter */
}
#keyboard-state,
#custom-hypridle,
#idle_inhibitor {
- color: @color5; /* Lighter */
- border-bottom: 2px;
+ color: @color5; /* Lighter */
+ border-bottom: 0px;
}
/*-----Indicators----*/
#custom-hypridle.notactive,
#idle_inhibitor.activated {
- color: @color4; /* Slightly lighter */
- border-bottom: 2px;
+ color: @color4; /* Slightly lighter */
+ border-bottom: 0px;
}
#tray {
@@ -234,54 +239,54 @@ tooltip {
#custom-swaync,
#custom-menu {
- color: @color7; /* Lightest */
- padding-left: 8px;
+ color: @color7; /* Lightest */
+ padding-left: 8px;
}
-#custom-power{
- color: @color6; /* Lighter */
+#custom-power {
+ color: @color6; /* Lighter */
}
-#window{
- border-style: hidden;
+#window {
+ border-style: hidden;
+}
+
+#custom-lock,
+#bluetooth {
+ color: @color5; /* Lighter */
}
-#custom-lock,
-#bluetooth{
- color: @color5; /* Lighter */
+#custom-cava_mviz {
+ color: @color7; /* Lightest */
}
-#custom-cava_mviz{
- color: @color7; /* Lightest */
-}
-
-#custom-weather{
- color: @color5; /* Lighter */
+#custom-weather {
+ color: @color5; /* Lighter */
}
#backlight-slider slider,
#pulseaudio-slider slider {
- min-width: 0px;
- min-height: 0px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
+ min-width: 0px;
+ min-height: 0px;
+ opacity: 0;
+ background-image: none;
+ border: none;
+ box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
- min-width: 80px;
- min-height: 5px;
- border-radius: 5px;
- background-color: @color2; /* Slightly darker trough */
+ min-width: 80px;
+ min-height: 5px;
+ border-radius: 5px;
+ background-color: @color2; /* Slightly darker trough */
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
- min-height: 10px;
- border-radius: 5px;
- background-color: @color6; /* Lighter highlight */
+ min-height: 10px;
+ border-radius: 5px;
+ background-color: @color6; /* Lighter highlight */
}
/* --- tray readability override (global) --- */
diff --git a/config/waybar/style/Wallust-Chroma-Tally.css b/config/waybar/style/Wallust-Chroma-Tally.css
index faa6c206..372f6b6c 100644
--- a/config/waybar/style/Wallust-Chroma-Tally.css
+++ b/config/waybar/style/Wallust-Chroma-Tally.css
@@ -1,73 +1,72 @@
/* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */
/* Wallust - Chroma Tally */
-@import '../../.config/waybar/wallust/colors-waybar.css';
+@import "../../.config/waybar/wallust/colors-waybar.css";
* {
-font-family: "JetBrainsMono Nerd Font";
-font-weight: bold;
-min-height: 0;
-/* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
-/* NOTE: Waybar v14+ ignores % font-size values */
-font-size: 99%;
-font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ min-height: 0;
+ /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
+ /* NOTE: Waybar v14+ ignores % font-size values */
+ font-size: 99%;
+ font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
}
window#waybar {
- background: rgba (0, 0, 0, 0.5);
- border-radius: 12px;
- border-bottom: 2px;
- border-style: solid;
- border-color: @color12;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background: rgba (0, 0, 0, 0.5);
+ border-radius: 12px;
+ border-bottom: 2px;
+ border-style: solid;
+ border-color: @color12;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
#workspaces {
- background: transparent;
- padding: 2px;
- border-radius: 15px;
- border: 0px;
- font-style: normal;
- color: #0F1419;
+ background: transparent;
+ padding: 2px;
+ border-radius: 15px;
+ border: 0px;
+ font-style: normal;
+ color: #0f1419;
}
#taskbar button,
#workspaces button {
- padding: 0px 5px;
- border-radius: 15px;
- border: 0px;
- color: #0F1419;
- background: linear-gradient(45deg, #95E6CB, #59C2FF, #D2A6FF);
- opacity: 0.5;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ padding: 0px 5px;
+ border-radius: 15px;
+ border: 0px;
+ color: #0f1419;
+ background: linear-gradient(45deg, #95e6cb, #59c2ff, #d2a6ff);
+ opacity: 0.5;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#taskbar button.active,
#workspaces button.active {
- padding: 0px 5px;
- border-radius: 15px;
- border: 0px;
- color: #0F1419;
- background: linear-gradient(45deg, #59C2FF, #D2A6FF);
- opacity: 1.0;
- min-width: 40px;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ padding: 0px 5px;
+ border-radius: 15px;
+ border: 0px;
+ color: #0f1419;
+ background: linear-gradient(45deg, #59c2ff, #d2a6ff);
+ opacity: 1;
+ min-width: 40px;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#workspaces button:hover {
- border-radius: 15px;
- color: #0F1419;
- background: linear-gradient(45deg, #59C2FF, #D2A6FF);
- opacity: 0.8;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
-
+ border-radius: 15px;
+ color: #0f1419;
+ background: linear-gradient(45deg, #59c2ff, #d2a6ff);
+ opacity: 0.8;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
tooltip {
- background: #1e1e2e;
- opacity: 0.8;
- border-radius: 6px;
+ background: #1e1e2e;
+ opacity: 0.8;
+ border-radius: 6px;
}
#backlight,
@@ -124,112 +123,111 @@ tooltip {
#custom-weather.clearNight,
#custom-weather.cloudyFoggyDay,
#custom-weather.cloudyFoggyNight,
-#custom-weather.default,
+#custom-weather.default,
#custom-weather.rainyDay,
#custom-weather.rainyNight,
#custom-weather.severe,
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
#custom-weather.sunnyDay {
- padding-top: 5px;
- padding-bottom: 5px;
- padding-right: 6px;
- padding-left: 6px;
+ padding-top: 5px;
+ padding-bottom: 5px;
+ padding-right: 6px;
+ padding-left: 6px;
}
-
+
/* -----------------------------------------------------------------------------
* Module styles
* -------------------------------------------------------------------------- */
-
#clock {
- color:#a3be8c;
+ color: #a3be8c;
}
#backlight {
- color: #ebcb8b;
+ color: #ebcb8b;
}
#battery {
- color: #d8dee9;
+ color: #d8dee9;
}
#battery.charging {
- color: #81a1c1;
+ color: #81a1c1;
}
@keyframes blink {
- to {
- color: #4c566a;
- background-color: #eceff4;
- }
+ to {
+ color: #4c566a;
+ background-color: #eceff4;
+ }
}
#battery.critical:not(.charging) {
- background: #bf616a;
- color: #eceff4;
- animation-name: blink;
- animation-duration: 3.0s;
- animation-timing-function: steps(12);
- animation-iteration-count: infinite;
- animation-direction: alternate;
+ background: #bf616a;
+ color: #eceff4;
+ animation-name: blink;
+ animation-duration: 3s;
+ animation-timing-function: steps(12);
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
}
#cpu {
- color: #a3be8c;
+ color: #a3be8c;
}
#disk {
- color: #94e2d5;
+ color: #94e2d5;
}
#custom-keyboard,
#memory {
- color: #d3869b;
+ color: #d3869b;
}
#network.disabled {
- color:#bf616a;
+ color: #bf616a;
}
-#network{
- color:#a3be8c;
+#network {
+ color: #a3be8c;
}
#network.disconnected {
- color: #bf616a;
+ color: #bf616a;
}
#pulseaudio {
- color: #04a5e5;
+ color: #04a5e5;
}
#pulseaudio.muted {
- color: #9ca0b0;
+ color: #9ca0b0;
}
#custom-light_dark,
#custom-nightlight,
#temperature {
- color: #7287fd;
+ color: #7287fd;
}
#temperature.critical {
- color: #bf616a;
+ color: #bf616a;
}
#keyboard-state,
#custom-hypridle,
#idle_inhibitor {
- color: #ebcb8b;
- border-bottom: 2px;
+ color: #ebcb8b;
+ border-bottom: 0px;
}
/*-----Indicators----*/
#custom-hypridle.notactive,
#idle_inhibitor.activated {
- color: #39FF14;
- border-bottom: 2px;
+ color: #39ff14;
+ border-bottom: 0px;
}
#tray {
@@ -237,51 +235,51 @@ tooltip {
#custom-swaync,
#custom-menu {
- color: yellow;
- padding-left: 8px;
+ color: yellow;
+ padding-left: 8px;
}
-#custom-power{
- color: #eba0ac;
+#custom-power {
+ color: #eba0ac;
}
-#window{
- border-style: hidden;
+#window {
+ border-style: hidden;
+}
+
+#custom-lock,
+#bluetooth {
+ color: #d08770;
}
-#custom-lock,
-#bluetooth{
- color:#d08770;
+#custom-cava_mviz {
+ color: @color11;
}
-#custom-cava_mviz{
- color: @color11;
-}
-
-#custom-weather{
- color:#d08770;
+#custom-weather {
+ color: #d08770;
}
#backlight-slider slider,
#pulseaudio-slider slider {
- min-width: 0px;
- min-height: 0px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
+ min-width: 0px;
+ min-height: 0px;
+ opacity: 0;
+ background-image: none;
+ border: none;
+ box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
- min-width: 80px;
- min-height: 5px;
- border-radius: 5px;
+ min-width: 80px;
+ min-height: 5px;
+ border-radius: 5px;
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
- min-height: 10px;
- border-radius: 5px;
+ min-height: 10px;
+ border-radius: 5px;
}
/* --- tray readability override (global) --- */
diff --git a/config/waybar/style/Wallust-Colored.css b/config/waybar/style/Wallust-Colored.css
index f4bc3eef..137a48ad 100644
--- a/config/waybar/style/Wallust-Colored.css
+++ b/config/waybar/style/Wallust-Colored.css
@@ -1,116 +1,115 @@
/* ----------- 💫 https://github.com/LinuxBeginnings 💫 -------- */
/* Wallust Colored*/
-@import '../../.config/waybar/wallust/colors-waybar.css';
+@import "../../.config/waybar/wallust/colors-waybar.css";
* {
- font-family: "JetBrainsMono Nerd Font";
- font-weight: bold;
- min-height: 0;
- /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
- /* NOTE: Waybar v14+ ignores % font-size values */
- font-size: 96%;
- font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ min-height: 0;
+ /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
+ /* NOTE: Waybar v14+ ignores % font-size values */
+ font-size: 96%;
+ font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
}
window#waybar.hidden {
- opacity: 0.5;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ opacity: 0.5;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
window#waybar,
window#waybar.empty #window {
- padding: 0px;
- border: 0px;
- background-color: transparent;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ padding: 0px;
+ border: 0px;
+ background-color: transparent;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
-
tooltip {
- background: @background;
- border-radius: 10px;
- border-width: 1px;
- border-style: solid;
- border-color: @color15;
+ background: @background;
+ border-radius: 10px;
+ border-width: 1px;
+ border-style: solid;
+ border-color: @color15;
}
/*-----module groups----*/
.modules-right {
- border: 3px solid @color12;
- border-radius: 40px 0px 0px 0px;
- background-color: @background-alt;
- padding-top: 2px;
- padding-bottom: 2px;
- padding-right: 4px;
- padding-left: 4px;
+ border: 3px solid @color12;
+ border-radius: 0px 0px 0px 0px;
+ background-color: @background-alt;
+ padding-top: 2px;
+ padding-bottom: 2px;
+ padding-right: 4px;
+ padding-left: 4px;
}
.modules-center {
- border: 3px solid @color7;
- border-radius: 60px 0px 60px 0px;
- background-color: @background;
- padding-top: 2px;
- padding-bottom: 2px;
- padding-right: 4px;
- padding-left: 4px;
+ border: 3px solid @color7;
+ border-radius: 0px 0px 60px 0px;
+ background-color: @background;
+ padding-top: 2px;
+ padding-bottom: 2px;
+ padding-right: 4px;
+ padding-left: 4px;
}
.modules-left {
- border: 3px solid @color12;
- border-radius: 0px 0px 40px 0px;
- background-color: @background-alt;
- padding-top: 2px;
- padding-bottom: 2px;
- padding-right: 4px;
- padding-left: 4px;
+ border: 3px solid @color12;
+ border-radius: 0px 0px 0px 0px;
+ background-color: @background-alt;
+ padding-top: 2px;
+ padding-bottom: 2px;
+ padding-right: 4px;
+ padding-left: 4px;
}
#taskbar button,
#workspaces button {
- color: @foreground;
- box-shadow: none;
- text-shadow: none;
- padding: 0px;
- border-radius: 9px;
- padding-left: 4px;
- padding-right: 4px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.682);
+ color: @foreground;
+ box-shadow: none;
+ text-shadow: none;
+ padding: 0px;
+ border-radius: 9px;
+ padding-left: 4px;
+ padding-right: 4px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.5s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#taskbar button.active,
#workspaces button.active {
- color: @background;
- background-color: @color7;
- padding-left: 8px;
- padding-right: 8px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: @background;
+ background-color: @color7;
+ padding-left: 8px;
+ padding-right: 8px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#workspaces button.focused {
- color: @color4;
+ color: @color4;
}
#workspaces button.urgent {
- color: #11111b;
- border-radius: 10px;
+ color: #11111b;
+ border-radius: 10px;
}
#taskbar button:hover,
#workspaces button:hover {
- color: @color4;
- padding-left: 2px;
- padding-right: 2px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: @color4;
+ padding-left: 2px;
+ padding-right: 2px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#clock#2 {
- color: @color6;
+ color: @color6;
}
#backlight,
@@ -174,64 +173,64 @@ tooltip {
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
#custom-weather.sunnyDay {
- color: @foreground;
- padding-top: 4px;
- padding-bottom: 4px;
- padding-right: 6px;
- padding-left: 6px;
+ color: @foreground;
+ padding-top: 4px;
+ padding-bottom: 4px;
+ padding-right: 6px;
+ padding-left: 6px;
}
#temperature.critical {
- background-color: #ff0000;
+ background-color: #ff0000;
}
@keyframes blink {
- to {
- color: #000000;
- }
+ to {
+ color: #000000;
+ }
}
/*-----Indicators----*/
#custom-hypridle.notactive,
#idle_inhibitor.activated {
- color: #39FF14;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
+ color: #39ff14;
+ border-bottom: 0px solid rgba(0, 0, 0, 0.2);
}
#battery.critical:not(.charging) {
- color: #f53c3c;
- animation-name: blink;
- animation-duration: 3.0s;
- animation-timing-function: steps(12);
- animation-iteration-count: infinite;
- animation-direction: alternate;
+ color: #f53c3c;
+ animation-name: blink;
+ animation-duration: 3s;
+ animation-timing-function: steps(12);
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
}
#backlight-slider slider,
#pulseaudio-slider slider {
- min-width: 0px;
- min-height: 0px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
+ min-width: 0px;
+ min-height: 0px;
+ opacity: 0;
+ background-image: none;
+ border: none;
+ box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
- min-width: 80px;
- min-height: 5px;
- border-radius: 5px;
+ min-width: 80px;
+ min-height: 5px;
+ border-radius: 5px;
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
- min-height: 10px;
- border-radius: 5px;
+ min-height: 10px;
+ border-radius: 5px;
}
#custom-cava_mviz {
- padding-right: 10px;
+ padding-right: 10px;
}
/* --- tray readability override (global) --- */
diff --git a/config/waybar/style/Wallust-Simple.css b/config/waybar/style/Wallust-Simple.css
index 052f7b79..4708349f 100644
--- a/config/waybar/style/Wallust-Simple.css
+++ b/config/waybar/style/Wallust-Simple.css
@@ -1,92 +1,94 @@
/* ----------- 💫 https://github.com/LinuxBeginnings 💫 -------- */
/* Wallust - Simple */
-*{
-font-family: "JetBrainsMono Nerd Font";
-font-weight: bold;
-min-height: 0;
-/* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
-/* NOTE: Waybar v14+ ignores % font-size values */
-font-size: 99%;
-font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
+* {
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ min-height: 0;
+ /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
+ /* NOTE: Waybar v14+ ignores % font-size values */
+ font-size: 99%;
+ font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
}
-@import '../../.config/waybar/wallust/colors-waybar.css';
+@import "../../.config/waybar/wallust/colors-waybar.css";
-#waybar.empty, #waybar.tiled, #waybar.floating {
- background-color: transparent;
+#waybar.empty,
+#waybar.tiled,
+#waybar.floating {
+ background-color: transparent;
}
window#waybar,
window#waybar.empty,
window#waybar.empty #window {
- background-color: transparent;
- padding: 0px;
- border: 0px;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background-color: transparent;
+ padding: 0px;
+ border: 0px;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
tooltip {
- color: @color13;
- background: @color10;
- opacity: 1.0;
- border-radius: 10px;
+ color: @color13;
+ background: @color10;
+ opacity: 1;
+ border-radius: 10px;
}
/*-----module groups----*/
.modules-left,
.modules-center,
.modules-right {
- background-color: @color0;
- border: 0.5px solid @color15;
- border-radius: 10px;
- padding-top: 2px;
- padding-bottom: 2px;
- padding-right: 4px;
- padding-left: 4px;
+ background-color: @color0;
+ border: 0.5px solid @color15;
+ border-radius: 10px;
+ padding-top: 2px;
+ padding-bottom: 2px;
+ padding-right: 4px;
+ padding-left: 4px;
}
/*-----modules indv----*/
#taskbar button,
#workspaces button {
- color: @color2;
- box-shadow: none;
- text-shadow: none;
- padding: 0px;
- border-radius: 9px;
- padding-left: 4px;
- padding-right: 4px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.682);
+ color: @color2;
+ box-shadow: none;
+ text-shadow: none;
+ padding: 0px;
+ border-radius: 9px;
+ padding-left: 4px;
+ padding-right: 4px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.5s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#taskbar button.active,
#workspaces button.active {
- color: @foreground;
- background-color: @color2;
- padding-left: 8px;
- padding-right: 8px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: @foreground;
+ background-color: @color2;
+ padding-left: 8px;
+ padding-right: 8px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#workspaces button.focused {
- color: @color4;
+ color: @color4;
}
#workspaces button.urgent {
- color: #11111b;
- border-radius: 10px;
+ color: #11111b;
+ border-radius: 10px;
}
#taskbar button:hover,
#workspaces button:hover {
- color: @color4;
- padding-left: 2px;
- padding-right: 2px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: @color4;
+ padding-left: 2px;
+ padding-right: 2px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
#backlight,
@@ -151,75 +153,75 @@ tooltip {
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
#custom-weather.sunnyDay {
- color: @color12;
- padding-top: 4px;
- padding-bottom: 4px;
- padding-right: 6px;
- padding-left: 6px;;
+ color: @color12;
+ padding-top: 4px;
+ padding-bottom: 4px;
+ padding-right: 6px;
+ padding-left: 6px;
}
#mode {
- color: #cc3436;
- font-weight: bold;
+ color: #cc3436;
+ font-weight: bold;
}
#custom-power {
- /*background-color: rgba(0,119,179,0.6);*/
- /*border-radius: 50px;*/
- padding: 1px 3px;
+ /*background-color: rgba(0,119,179,0.6);*/
+ /*border-radius: 50px;*/
+ padding: 0px 3px;
}
/*-----Indicators----*/
#custom-hypridle.notactive,
#idle_inhibitor.activated {
- color: #39FF14;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
+ color: #39ff14;
+ border-bottom: 0px solid rgba(0, 0, 0, 0.2);
}
#pulseaudio.muted {
- color: #cc3436;
+ color: #cc3436;
}
#pulseaudio-microphone.muted {
- color: #cc3436;
+ color: #cc3436;
}
#temperature.critical {
- background-color: #ff0000;
+ background-color: #ff0000;
}
@keyframes blink {
- to {
- color: #000000;
- }
+ to {
+ color: #000000;
+ }
}
#battery.critical:not(.charging) {
- color: #f53c3c;
- animation-name: blink;
- animation-duration: 3.0s;
- animation-timing-function: steps(12);
- animation-iteration-count: infinite;
- animation-direction: alternate;
+ color: #f53c3c;
+ animation-name: blink;
+ animation-duration: 3s;
+ animation-timing-function: steps(12);
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
}
#backlight-slider slider,
#pulseaudio-slider slider {
- min-width: 0px;
- min-height: 0px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
+ min-width: 0px;
+ min-height: 0px;
+ opacity: 0;
+ background-image: none;
+ border: none;
+ box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
- min-width: 80px;
- min-height: 5px;
- border-radius: 5px;
+ min-width: 80px;
+ min-height: 5px;
+ border-radius: 5px;
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
- min-height: 10px;
- border-radius: 5px;
+ min-height: 10px;
+ border-radius: 5px;
}
/* --- tray readability override (global) --- */
diff --git a/config/waybar/style/Wallust-Transparent-Crystal-Clear.css b/config/waybar/style/Wallust-Transparent-Crystal-Clear.css
index a6541a59..48651c18 100644
--- a/config/waybar/style/Wallust-Transparent-Crystal-Clear.css
+++ b/config/waybar/style/Wallust-Transparent-Crystal-Clear.css
@@ -2,115 +2,112 @@
/* ....Wallust Transparent - Crystal Clear........ */
/* --- 👍 original designed by https://github.com/Krautt 👍 --- */
-@import '../../.config/waybar/wallust/colors-waybar.css';
+@import "../../.config/waybar/wallust/colors-waybar.css";
@define-color critical #ff0000; /* critical color */
-@define-color warning #f3f809; /* warning color */
-@define-color text @color12; /* text color */
-@define-color text-alt @color13; /* text alternative color */
-@define-color bg @color7; /* background color */
+@define-color warning #f3f809; /* warning color */
+@define-color text @color12; /* text color */
+@define-color text-alt @color13; /* text alternative color */
+@define-color bg @color7; /* background color */
-*{
- font-family: "JetBrainsMono Nerd Font";
- font-weight: bold;
- min-height: 0;
- /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
- /* NOTE: Waybar v14+ ignores % font-size values */
- font-size: 99%;
- font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
+* {
+ font-family: "JetBrainsMono Nerd Font";
+ font-weight: bold;
+ min-height: 0;
+ /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */
+ /* NOTE: Waybar v14+ ignores % font-size values */
+ font-size: 99%;
+ font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
}
-
+
window#waybar {
- background:transparent;
- border-radius: 1px;
- color: @text;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background: transparent;
+ border-radius: 1px;
+ color: @text;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
-
+
window#waybar.hidden {
- opacity: 0.5;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ opacity: 0.5;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
window#waybar.empty {
- background-color: transparent;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
+ background-color: transparent;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
}
-
+
window#waybar.empty #window {
- padding: 0px;
- border: 0px;
- background-color: transparent;
- /* Waybar scaling: adjust font-size to scale the bar */
- font-size: 14px;
-}
+ padding: 0px;
+ border: 0px;
+ background-color: transparent;
+ /* Waybar scaling: adjust font-size to scale the bar */
+ font-size: 14px;
+}
/*-----module groups----*/
.modules-right {
-
}
.modules-center {
-
}
.modules-left {
-
}
tooltip {
- color: @color12;
- background: @color10;
- opacity: 0.8;
- border-radius: 10px;
- border-width: 1px;
- border-style: solid;
+ color: @color12;
+ background: @color10;
+ opacity: 0.8;
+ border-radius: 10px;
+ border-width: 1px;
+ border-style: solid;
}
#taskbar button,
#workspaces button {
- color: @text-alt;
- box-shadow: none;
- text-shadow: none;
- padding: 0px;
- border-radius: 9px;
- padding-left: 4px;
- padding-right: 4px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.5s cubic-bezier(.55,-0.68,.48,1.682);
+ color: @text-alt;
+ box-shadow: none;
+ text-shadow: none;
+ padding: 0px;
+ border-radius: 9px;
+ padding-left: 4px;
+ padding-right: 4px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.5s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
-
+
#taskbar button.active,
#workspaces button.active {
- color: @text;
- border-radius: 15px 15px 15px 15px;
- padding-left: 8px;
- padding-right: 8px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: @text;
+ border-radius: 15px 15px 15px 15px;
+ padding-left: 8px;
+ padding-right: 8px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
-
+
#workspaces button.focused {
- color: @text-alt;
+ color: @text-alt;
}
-
+
#workspaces button.urgent {
- color: @warning;
- border-radius: 10px;
+ color: @warning;
+ border-radius: 10px;
}
-#taskbar button:hover,
+#taskbar button:hover,
#workspaces button:hover {
- color: @text;
- border-radius: 15px;
- padding-left: 2px;
- padding-right: 2px;
- animation: gradient_f 20s ease-in infinite;
- transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682);
+ color: @text;
+ border-radius: 15px;
+ padding-left: 2px;
+ padding-right: 2px;
+ animation: gradient_f 20s ease-in infinite;
+ transition: all 0.3s cubic-bezier(0.55, -0.68, 0.48, 1.682);
}
-
+
#backlight,
#battery,
#bluetooth,
@@ -162,68 +159,67 @@ tooltip {
#custom-weather.clearNight,
#custom-weather.cloudyFoggyDay,
#custom-weather.cloudyFoggyNight,
-#custom-weather.default
-#custom-weather.rainyDay,
+#custom-weather.default #custom-weather.rainyDay,
#custom-weather.rainyNight,
#custom-weather.severe,
#custom-weather.showyIcyDay,
#custom-weather.snowyIcyNight,
#custom-weather.sunnyDay {
- padding-top: 4px;
- padding-bottom: 4px;
- padding-right: 6px;
- padding-left: 6px;
+ padding-top: 4px;
+ padding-bottom: 4px;
+ padding-right: 6px;
+ padding-left: 6px;
}
-
+
#temperature.critical {
- background-color: #ff0000;
+ background-color: #ff0000;
}
-
+
@keyframes blink {
- to {
- color: #000000;
- }
+ to {
+ color: #000000;
+ }
}
/*-----Indicators----*/
#custom-hypridle.notactive,
#idle_inhibitor.activated {
- color: #39FF14;
- border-bottom: 8px solid rgba(0, 0, 0, 0.2);
+ color: #39ff14;
+ border-bottom: 0px solid rgba(0, 0, 0, 0.2);
}
-
+
#battery.critical:not(.charging) {
- color: @critical;
- animation-name: blink;
- animation-duration: 3.0s;
- animation-timing-function: steps(12);
- animation-iteration-count: infinite;
- animation-direction: alternate;
+ color: @critical;
+ animation-name: blink;
+ animation-duration: 3s;
+ animation-timing-function: steps(12);
+ animation-iteration-count: infinite;
+ animation-direction: alternate;
}
#backlight-slider slider,
#pulseaudio-slider slider {
- min-width: 0px;
- min-height: 0px;
- opacity: 0;
- background-image: none;
- border: none;
- box-shadow: none;
+ min-width: 0px;
+ min-height: 0px;
+ opacity: 0;
+ background-image: none;
+ border: none;
+ box-shadow: none;
}
#backlight-slider trough,
#pulseaudio-slider trough {
- min-width: 80px;
- min-height: 10px;
- border-radius: 5px;
- background-color: black;
+ min-width: 80px;
+ min-height: 10px;
+ border-radius: 5px;
+ background-color: black;
}
#backlight-slider highlight,
#pulseaudio-slider highlight {
- min-height: 10px;
- border-radius: 5px;
- background-color: wheat;
+ min-height: 10px;
+ border-radius: 5px;
+ background-color: wheat;
}
/* --- tray readability override (global) --- */
diff --git a/config/yazi/keymap.toml b/config/yazi/keymap.toml
index ba212c92..d64f76da 100644
--- a/config/yazi/keymap.toml
+++ b/config/yazi/keymap.toml
@@ -41,7 +41,7 @@ prepend_keymap = [
{ on = "S", run = "search fd", desc = "Search files by name using fd" },
{ on = [
"T",
- ], run = "plugin --sync hide-preview", desc = "Hide or show the preview" },
+ ], run = "plugin toggle-pane min-preview", desc = "Hide or show the preview" },
{ on = [
"y",
], run = [
diff --git a/config/yazi/package.toml b/config/yazi/package.toml
index deedca73..961e3e13 100644
--- a/config/yazi/package.toml
+++ b/config/yazi/package.toml
@@ -23,10 +23,6 @@ use = "yazi-rs/plugins:smart-filter"
rev = "1db18bb"
hash = "c887903a63a2ff520081b6d90a4b3392"
-[[plugin.deps]]
-use = "yazi-rs/plugins:hide-preview"
-rev = "1db18bb"
-hash = "99aa06d3014798d86001c324468d497f"
[[plugin.deps]]
use = "yazi-rs/plugins:git"
diff --git a/copy.sh b/copy.sh
index af7cbe69..cd2a3cec 100755
--- a/copy.sh
+++ b/copy.sh
@@ -6,7 +6,7 @@
# SPDX-License-Identifier: GPL-3.0-or-later
# ==================================================
# Purpose:
-# Orchestrates copying/upgrading LinuxBeginnings's Hyprland dotfiles into ~/.config.
+# Orchestrates copying/upgrading LinuxBeginnings's Hyprland dotfiles into ${XDG_CONFIG_HOME:-$HOME/.config}.
# Handles interactive prompts, backups/restores, per-app tweaks, and express mode.
#
# Layout (high-level; future modularization targets):
@@ -35,11 +35,11 @@
# - Consider modularizing remaining app-specific tweaks/prompts.
clear
-wallpaper=$HOME/.config/hypr/wallpaper_effects/.wallpaper_current
+wallpaper=${XDG_CONFIG_HOME:-$HOME/.config}/hypr/wallpaper_effects/.wallpaper_current
# Defaults updated to normalized names
-waybar_style="$HOME/.config/waybar/style/Extra-Prismatic-Glow.css"
-waybar_config="$HOME/.config/waybar/configs/TOP-Default"
-waybar_config_laptop="$HOME/.config/waybar/configs/TOP-Default-Laptop"
+waybar_style="${XDG_CONFIG_HOME:-$HOME/.config}/waybar/style/Extra-Prismatic-Glow.css"
+waybar_config="${XDG_CONFIG_HOME:-$HOME/.config}/waybar/configs/TOP-Default"
+waybar_config_laptop="${XDG_CONFIG_HOME:-$HOME/.config}/waybar/configs/TOP-Default-Laptop"
# Set some colors for output messages
OK="$(tput setaf 2)[OK]$(tput sgr0)"
@@ -147,7 +147,7 @@ version_gte() {
}
get_installed_dotfiles_version() {
- local hypr_dir="$HOME/.config/hypr"
+ local hypr_dir="${XDG_CONFIG_HOME:-$HOME/.config}/hypr"
if [ -d "$hypr_dir" ]; then
# Pick the highest semantic version among files named vX.Y.Z
find "$hypr_dir" -maxdepth 1 -type f -name 'v*.*.*' -printf '%f\n' 2>/dev/null |
@@ -165,6 +165,55 @@ express_supported() {
fi
version_gte "$current_version" "$MIN_EXPRESS_VERSION"
}
+config_home() {
+ echo "${XDG_CONFIG_HOME:-$HOME/.config}"
+}
+
+is_kooldots_config() {
+ local hypr_dir
+ hypr_dir="$(config_home)/hypr"
+ [ -d "$hypr_dir" ] || return 1
+ find "$hypr_dir" -maxdepth 1 -type f -name 'v*.*.*' -print -quit | grep -q .
+}
+
+is_oem_lua_config() {
+ local cfg_home
+ cfg_home="$(config_home)"
+ [ -f "$cfg_home/hyprland.lua" ] || [ -f "$cfg_home/hypr/hyprland.lua" ]
+}
+
+require_kooldots_for_upgrade() {
+ if is_kooldots_config; then
+ return 0
+ fi
+ echo "${WARN} Existing KoolDots config not deteced - run fresh install"
+ return 1
+}
+
+prepare_fresh_install_hypr() {
+ local log="${1:-/dev/null}"
+ local cfg_home
+ local hypr_dir
+ local backup_suffix
+ cfg_home="$(config_home)"
+ hypr_dir="$cfg_home/hypr"
+
+ if ! is_kooldots_config && ! is_oem_lua_config; then
+ return 0
+ fi
+
+ backup_suffix="$(get_backup_dirname)"
+
+ if [ -d "$hypr_dir" ]; then
+ mv "$hypr_dir" "${hypr_dir}-${backup_suffix}" 2>&1 | tee -a "$log"
+ echo "${NOTE} - Backed up existing hypr config to ${hypr_dir}-${backup_suffix}" 2>&1 | tee -a "$log"
+ fi
+
+ if [ -f "$cfg_home/hyprland.lua" ]; then
+ mv "$cfg_home/hyprland.lua" "$cfg_home/hyprland.lua-${backup_suffix}" 2>&1 | tee -a "$log"
+ echo "${NOTE} - Backed up existing hyprland.lua to ${cfg_home}/hyprland.lua-${backup_suffix}" 2>&1 | tee -a "$log"
+ fi
+}
print_usage() {
cat <<'EOF'
Usage: copy.sh [--upgrade] [--express-upgrade] [--help]
@@ -230,6 +279,9 @@ if [ -z "$RUN_MODE" ]; then
EXPRESS_MODE=0
;;
upgrade)
+ if ! require_kooldots_for_upgrade; then
+ continue
+ fi
RUN_MODE="upgrade"
UPGRADE_MODE=1
EXPRESS_MODE=0
@@ -239,6 +291,9 @@ if [ -z "$RUN_MODE" ]; then
echo "${WARN} Express mode requires installed dotfiles v${MIN_EXPRESS_VERSION} or newer. Please choose another option."
continue
fi
+ if ! require_kooldots_for_upgrade; then
+ continue
+ fi
RUN_MODE="express"
UPGRADE_MODE=1
EXPRESS_MODE=1
@@ -263,6 +318,12 @@ if [ -z "$RUN_MODE" ]; then
fi
fi
+if [ "$RUN_MODE" = "upgrade" ] || [ "$RUN_MODE" = "express" ]; then
+ if ! require_kooldots_for_upgrade; then
+ exit 1
+ fi
+fi
+
# Check if running as root. If root, script will exit
if [[ $EUID -eq 0 ]]; then
echo "${ERROR} This script should ${WARNING}NOT${RESET} be executed as root!! Exiting......."
@@ -342,10 +403,14 @@ fi
if [ "$EXPRESS_MODE" -eq 1 ]; then
echo "${INFO} Express mode enabled. Optional restore prompts will be skipped." 2>&1 | tee -a "$LOG"
fi
+if [ "$RUN_MODE" = "install" ]; then
+ prepare_fresh_install_hypr "$LOG"
+fi
detect_nvidia_adjust "$LOG"
detect_vm_adjust "$LOG"
detect_nixos_adjust "$LOG"
+adjust_qt_quick_controls_style "$LOG"
# NixOS: report missing waybar-weather without attempting to install
is_nixos() {
grep -qi '^ID=nixos' /etc/os-release 2>/dev/null
@@ -363,6 +428,8 @@ if [ -d "$HOME/.icons/Bibata-Modern-Ice/hyprcursors" ]; then
echo "${INFO} Bibata-Hyprcursor directory detected. Activating Hyprcursor...." 2>&1 | tee -a "$LOG" || true
sed -i 's/^#env = HYPRCURSOR_THEME,Bibata-Modern-Ice/env = HYPRCURSOR_THEME,Bibata-Modern-Ice/' "$HYPRCURSOR_ENV_FILE"
sed -i 's/^#env = HYPRCURSOR_SIZE,24/env = HYPRCURSOR_SIZE,24/' "$HYPRCURSOR_ENV_FILE"
+ sed -i 's/^#env = XCURSOR_THEME,Bibata-Modern-Ice/env = XCURSOR_THEME,Bibata-Modern-Ice/' "$HYPRCURSOR_ENV_FILE"
+ sed -i 's/^#env = XCURSOR_SIZE,24/env = XCURSOR_SIZE,24/' "$HYPRCURSOR_ENV_FILE"
fi
printf "\n%.0s" {1..1}
@@ -431,10 +498,10 @@ prompt_express_upgrade "$EXPRESS_SUPPORTED" "$LOG"
set -e
-# Check if the ~/.config/ directory exists
-if [ ! -d "$HOME/.config" ]; then
- echo "${ERROR} - $HOME/.config directory does not exist. Creating it now."
- mkdir -p "$HOME/.config" && echo "Directory created successfully." || echo "Failed to create directory."
+# Check if the ${XDG_CONFIG_HOME:-$HOME/.config}/ directory exists
+if [ ! -d "${XDG_CONFIG_HOME:-$HOME/.config}" ]; then
+ echo "${ERROR} - ${XDG_CONFIG_HOME:-$HOME/.config} directory does not exist. Creating it now."
+ mkdir -p "${XDG_CONFIG_HOME:-$HOME/.config}" && echo "Directory created successfully." || echo "Failed to create directory."
fi
printf "${INFO} - copying dotfiles ${SKY_BLUE}first${RESET} part\n"
@@ -444,13 +511,14 @@ copy_waybar "$LOG"
printf "\n%.0s" {1..1}
printf "${INFO} - Copying dotfiles ${SKY_BLUE}second${RESET} part\n"
copy_phase2 "$LOG"
+ensure_lua_keybinds "$LOG"
printf "\\n%.0s" {1..1}
# waybar-weather config handling:
# - install (fresh copy): always overwrite and prompt for units
# - upgrade (non-express): copy only if missing; prompt only if copied
# - express: copy only if missing; never prompt
WAYBAR_WEATHER_SRC="$DOTFILES_DIR/config/waybar-weather"
-WAYBAR_WEATHER_DEST="$HOME/.config/waybar-weather"
+WAYBAR_WEATHER_DEST="${XDG_CONFIG_HOME:-$HOME/.config}/waybar-weather"
WAYBAR_WEATHER_COPIED=0
if [ "$RUN_MODE" = "install" ]; then
@@ -515,7 +583,7 @@ fi
if command -v ags >/dev/null 2>&1; then
echo -e "${NOTE} - ${YELLOW}ags${RESET} is detected as installed"
- DIRPATH_AGS="$HOME/.config/ags"
+ DIRPATH_AGS="${XDG_CONFIG_HOME:-$HOME/.config}/ags"
if [ ! -d "$DIRPATH_AGS" ]; then
echo "${INFO} - ags config not found, copying new config."
@@ -556,7 +624,7 @@ INSTALLED_VERSION_AT_START="$(get_installed_dotfiles_version || true)"
if command -v qs >/dev/null 2>&1; then
echo -e "${NOTE} - ${YELLOW}quickshell${RESET} is detected as installed"
- DIRPATH_QS="$HOME/.config/quickshell"
+ DIRPATH_QS="${XDG_CONFIG_HOME:-$HOME/.config}/quickshell"
if [ ! -d "$DIRPATH_QS" ]; then
echo "${INFO} - quickshell config not found, copying new config."
@@ -603,7 +671,7 @@ if command -v qs >/dev/null 2>&1; then
fi
# Check for old quickshell startup commands and update them
- HYPR_STARTUP="$HOME/.config/hypr/configs/Startup_Apps.conf"
+ HYPR_STARTUP="${XDG_CONFIG_HOME:-$HOME/.config}/hypr/configs/Startup_Apps.conf"
if [ -f "$HYPR_STARTUP" ]; then
if grep -q '^exec-once = qs\s*$\|^exec-once = qs &' "$HYPR_STARTUP"; then
echo "${NOTE} - Found old Quickshell startup command, updating to new overview config..." 2>&1 | tee -a "$LOG"
@@ -637,14 +705,14 @@ rofi_DIR="$HOME/.local/share/rofi/themes"
if [ ! -d "$rofi_DIR" ]; then
mkdir -p "$rofi_DIR"
fi
-if [ -d "$HOME/.config/rofi/themes" ]; then
- if [ -z "$(ls -A $HOME/.config/rofi/themes)" ]; then
- echo '/* Dummy Rofi theme */' >"$HOME/.config/rofi/themes/dummy.rasi"
+if [ -d "${XDG_CONFIG_HOME:-$HOME/.config}/rofi/themes" ]; then
+ if [ -z "$(ls -A ${XDG_CONFIG_HOME:-$HOME/.config}/rofi/themes)" ]; then
+ echo '/* Dummy Rofi theme */' >"${XDG_CONFIG_HOME:-$HOME/.config}/rofi/themes/dummy.rasi"
fi
- ln -snf "$HOME/.config/rofi/themes/"* "$HOME/.local/share/rofi/themes/"
+ ln -snf "${XDG_CONFIG_HOME:-$HOME/.config}/rofi/themes/"* "$HOME/.local/share/rofi/themes/"
# Delete the dummy file if it was created
- if [ -f "$HOME/.config/rofi/themes/dummy.rasi" ]; then
- rm "$HOME/.config/rofi/themes/dummy.rasi"
+ if [ -f "${XDG_CONFIG_HOME:-$HOME/.config}/rofi/themes/dummy.rasi" ]; then
+ rm "${XDG_CONFIG_HOME:-$HOME/.config}/rofi/themes/dummy.rasi"
fi
fi
@@ -660,14 +728,14 @@ else
fi
# Set some files as executable
-chmod +x "$HOME/.config/hypr/scripts/"* 2>&1 | tee -a "$LOG"
-chmod +x "$HOME/.config/hypr/UserScripts/"* 2>&1 | tee -a "$LOG"
+chmod +x "${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts/"* 2>&1 | tee -a "$LOG"
+chmod +x "${XDG_CONFIG_HOME:-$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"
+chmod +x "${XDG_CONFIG_HOME:-$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"
+SYSTEMD_DEST="${XDG_CONFIG_HOME:-$HOME/.config}/systemd"
if [ -d "$SYSTEMD_SRC" ]; then
mkdir -p "$SYSTEMD_DEST"
cp -r "$SYSTEMD_SRC/." "$SYSTEMD_DEST/" 2>&1 | tee -a "$LOG"
@@ -698,7 +766,7 @@ fi
# Ensure waybar config uses the normalized default.
# - If the current path is not a symlink (regular file), convert it to a symlink.
# - If the symlink points somewhere else (or is broken), reset it to the new default.
-WAYBAR_CONFIG_LINK="$HOME/.config/waybar/config"
+WAYBAR_CONFIG_LINK="${XDG_CONFIG_HOME:-$HOME/.config}/waybar/config"
WAYBAR_CONFIG_TARGET="$config_file"
if [ -e "$WAYBAR_CONFIG_TARGET" ]; then
if [ -L "$WAYBAR_CONFIG_LINK" ]; then
@@ -714,12 +782,12 @@ else
fi
# Remove inappropriate waybar configs
-rm -rf "$HOME/.config/waybar/configs/[TOP] Default$config_remove" \
- "$HOME/.config/waybar/configs/[BOT] Default$config_remove" \
- "$HOME/.config/waybar/configs/[TOP] Default$config_remove (old v1)" \
- "$HOME/.config/waybar/configs/[TOP] Default$config_remove (old v2)" \
- "$HOME/.config/waybar/configs/[TOP] Default$config_remove (old v3)" \
- "$HOME/.config/waybar/configs/[TOP] Default$config_remove (old v4)" 2>&1 | tee -a "$LOG" || true
+rm -rf "${XDG_CONFIG_HOME:-$HOME/.config}/waybar/configs/[TOP] Default$config_remove" \
+ "${XDG_CONFIG_HOME:-$HOME/.config}/waybar/configs/[BOT] Default$config_remove" \
+ "${XDG_CONFIG_HOME:-$HOME/.config}/waybar/configs/[TOP] Default$config_remove (old v1)" \
+ "${XDG_CONFIG_HOME:-$HOME/.config}/waybar/configs/[TOP] Default$config_remove (old v2)" \
+ "${XDG_CONFIG_HOME:-$HOME/.config}/waybar/configs/[TOP] Default$config_remove (old v3)" \
+ "${XDG_CONFIG_HOME:-$HOME/.config}/waybar/configs/[TOP] Default$config_remove (old v4)" 2>&1 | tee -a "$LOG" || true
printf "\n%.0s" {1..1}
@@ -787,7 +855,7 @@ fi
# Ensure waybar style uses the normalized default.
# - If the current path is not a symlink (regular file), convert it to a symlink.
# - If the symlink points somewhere else (or is broken), reset it to the new default.
-WAYBAR_STYLE_LINK="$HOME/.config/waybar/style.css"
+WAYBAR_STYLE_LINK="${XDG_CONFIG_HOME:-$HOME/.config}/waybar/style.css"
WAYBAR_STYLE_TARGET="$waybar_style"
if [ -e "$WAYBAR_STYLE_TARGET" ]; then
if [ -L "$WAYBAR_STYLE_LINK" ]; then
diff --git a/scripts/fix-systemsettings-lua.sh b/scripts/fix-systemsettings-lua.sh
index e1b550fc..42515d87 100755
--- a/scripts/fix-systemsettings-lua.sh
+++ b/scripts/fix-systemsettings-lua.sh
@@ -5,11 +5,11 @@
# License: GNU GPLv3
# SPDX-License-Identifier: GPL-3.0-or-later
# ==================================================
-# Regenerate ~/.config/hypr/configs/system_settings.lua from SystemSettings.conf.
+# Regenerate ${XDG_CONFIG_HOME:-$HOME/.config}/hypr/configs/system_settings.lua from SystemSettings.conf.
set -euo pipefail
-CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
+CONFIG_HOME="${XDG_CONFIG_HOME:-${XDG_CONFIG_HOME:-$HOME/.config}}"
HYPR_DIR="${CONFIG_HOME}/hypr"
CONFIGS_DIR="${HYPR_DIR}/configs"
LEGACY_DIR="${CONFIGS_DIR}/LegacyConfigs"
diff --git a/scripts/lib_apps.sh b/scripts/lib_apps.sh
index 579b5fd2..55c457d5 100644
--- a/scripts/lib_apps.sh
+++ b/scripts/lib_apps.sh
@@ -74,7 +74,7 @@ install_terminal_configs() {
# Ghostty
local GHOSTTY_SRC="$base/config/ghostty/config"
- local GHOSTTY_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/ghostty"
+ local GHOSTTY_DIR="${XDG_CONFIG_HOME:-${XDG_CONFIG_HOME:-$HOME/.config}}/ghostty"
local GHOSTTY_DEST="$GHOSTTY_DIR/config"
if [ -f "$GHOSTTY_SRC" ]; then
if [ -d "$GHOSTTY_DIR" ]; then
@@ -96,7 +96,7 @@ install_terminal_configs() {
# WezTerm
local WEZTERM_SRC="$base/config/wezterm/wezterm.lua"
- local WEZTERM_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/wezterm"
+ local WEZTERM_DIR="${XDG_CONFIG_HOME:-${XDG_CONFIG_HOME:-$HOME/.config}}/wezterm"
local WEZTERM_DEST="$WEZTERM_DIR/wezterm.lua"
if [ -f "$WEZTERM_SRC" ]; then
mkdir -p "$WEZTERM_DIR"
diff --git a/scripts/lib_backup.sh b/scripts/lib_backup.sh
index b6f54f6a..5abcf0eb 100644
--- a/scripts/lib_backup.sh
+++ b/scripts/lib_backup.sh
@@ -30,12 +30,12 @@ backup_dir() {
mv "$dir" "${dir}-backup-${backup_suffix}" 2>&1 | tee -a "$log"
}
-# Cleanup old backups under ~/.config, keeping the newest for each base dir.
+# Cleanup old backups under ${XDG_CONFIG_HOME:-$HOME/.config}, keeping the newest for each base dir.
# mode: "auto" (no prompts) or "prompt" (asks before delete); log optional.
cleanup_backups() {
local mode="${1:-prompt}"
local log="${2:-/dev/null}"
- local CONFIG_DIR="$HOME/.config"
+ local CONFIG_DIR="${XDG_CONFIG_HOME:-$HOME/.config}"
local BACKUP_PREFIX="-backup"
for DIR in "$CONFIG_DIR"/*; do
diff --git a/scripts/lib_copy.sh b/scripts/lib_copy.sh
index 9a1c0444..f31ca1a8 100644
--- a/scripts/lib_copy.sh
+++ b/scripts/lib_copy.sh
@@ -12,10 +12,10 @@ copy_phase1() {
local base="${DOTFILES_DIR:-.}"
local dirs="fastfetch kitty rofi swaync"
for DIR2 in $dirs; do
- local DIRPATH="$HOME/.config/$DIR2"
+ local DIRPATH="${XDG_CONFIG_HOME:-$HOME/.config}/$DIR2"
if [ -d "$DIRPATH" ]; then
while true; do
- printf "\n${INFO:-[INFO]} Found ${YELLOW:-}$DIR2${RESET:-} config found in ~/.config/\n"
+ printf "\n${INFO:-[INFO]} Found ${YELLOW:-}$DIR2${RESET:-} config found in ${XDG_CONFIG_HOME:-$HOME/.config}/\n"
echo -n "${CAT:-[ACTION]} Do you want to replace ${YELLOW:-}$DIR2${RESET:-} config? (y/n): "
read DIR1_CHOICE
case "$DIR1_CHOICE" in
@@ -23,17 +23,17 @@ copy_phase1() {
BACKUP_DIR=$(get_backup_dirname)
mv "$DIRPATH" "$DIRPATH-backup-$BACKUP_DIR" 2>&1 | tee -a "$log"
echo -e "${NOTE:-[NOTE]} - Backed up $DIR2 to $DIRPATH-backup-$BACKUP_DIR." 2>&1 | tee -a "$log"
- cp -r "$base/config/$DIR2" "$HOME/.config/$DIR2" 2>&1 | tee -a "$log"
+ cp -r "$base/config/$DIR2" "${XDG_CONFIG_HOME:-$HOME/.config}/$DIR2" 2>&1 | tee -a "$log"
echo -e "${OK:-[OK]} - Replaced $DIR2 with new configuration." 2>&1 | tee -a "$log"
if [ "$DIR2" = "rofi" ]; then
if [ -d "$DIRPATH-backup-$BACKUP_DIR/themes" ]; then
for file in "$DIRPATH-backup-$BACKUP_DIR/themes"/*; do
[ -e "$file" ] || continue
- cp -n "$file" "$HOME/.config/rofi/themes/" >>"$log" 2>&1 || true
+ cp -n "$file" "${XDG_CONFIG_HOME:-$HOME/.config}/rofi/themes/" >>"$log" 2>&1 || true
done || true
fi
if [ -f "$DIRPATH-backup-$BACKUP_DIR/0-shared-fonts.rasi" ]; then
- cp "$DIRPATH-backup-$BACKUP_DIR/0-shared-fonts.rasi" "$HOME/.config/rofi/0-shared-fonts.rasi" >>"$log" 2>&1
+ cp "$DIRPATH-backup-$BACKUP_DIR/0-shared-fonts.rasi" "${XDG_CONFIG_HOME:-$HOME/.config}/rofi/0-shared-fonts.rasi" >>"$log" 2>&1
fi
fi
break
@@ -46,7 +46,7 @@ copy_phase1() {
esac
done
else
- cp -r "$base/config/$DIR2" "$HOME/.config/$DIR2" 2>&1 | tee -a "$log"
+ cp -r "$base/config/$DIR2" "${XDG_CONFIG_HOME:-$HOME/.config}/$DIR2" 2>&1 | tee -a "$log"
echo -e "${OK:-[OK]} - Copy completed for ${YELLOW:-}$DIR2${RESET:-}" 2>&1 | tee -a "$log"
fi
done
@@ -56,7 +56,7 @@ copy_waybar() {
local log="$1"
local base="${DOTFILES_DIR:-.}"
local DIRW="waybar"
- local DIRPATHw="$HOME/.config/$DIRW"
+ local DIRPATHw="${XDG_CONFIG_HOME:-$HOME/.config}/$DIRW"
if [ -d "$DIRPATHw" ]; then
while true; do
echo -n "${CAT:-[ACTION]} Do you want to replace ${YELLOW:-}$DIRW${RESET:-} config? (y/n): "
@@ -80,23 +80,23 @@ copy_waybar() {
for dir in "$DIRPATHw-backup-$BACKUP_DIR/configs"/*; do
[ -e "$dir" ] || continue
if [ -d "$dir" ]; then
- target_dir="$HOME/.config/waybar/configs/$(basename "$dir")"
- [ -d "$target_dir" ] || cp -r "$dir" "$HOME/.config/waybar/configs/"
+ target_dir="${XDG_CONFIG_HOME:-$HOME/.config}/waybar/configs/$(basename "$dir")"
+ [ -d "$target_dir" ] || cp -r "$dir" "${XDG_CONFIG_HOME:-$HOME/.config}/waybar/configs/"
fi
done
for file in "$DIRPATHw-backup-$BACKUP_DIR/configs"/*; do
[ -e "$file" ] || continue
- target_file="$HOME/.config/waybar/configs/$(basename "$file")"
- [ -e "$target_file" ] || cp "$file" "$HOME/.config/waybar/configs/"
+ target_file="${XDG_CONFIG_HOME:-$HOME/.config}/waybar/configs/$(basename "$file")"
+ [ -e "$target_file" ] || cp "$file" "${XDG_CONFIG_HOME:-$HOME/.config}/waybar/configs/"
done || true
for file in "$DIRPATHw-backup-$BACKUP_DIR/style"/*; do
[ -e "$file" ] || continue
if [ -d "$file" ]; then
- target_dir="$HOME/.config/waybar/style/$(basename "$file")"
- [ -d "$target_dir" ] || cp -r "$file" "$HOME/.config/waybar/style/"
+ target_dir="${XDG_CONFIG_HOME:-$HOME/.config}/waybar/style/$(basename "$file")"
+ [ -d "$target_dir" ] || cp -r "$file" "${XDG_CONFIG_HOME:-$HOME/.config}/waybar/style/"
else
- target_file="$HOME/.config/waybar/style/$(basename "$file")"
- [ -e "$target_file" ] || cp "$file" "$HOME/.config/waybar/style/"
+ target_file="${XDG_CONFIG_HOME:-$HOME/.config}/waybar/style/$(basename "$file")"
+ [ -e "$target_file" ] || cp "$file" "${XDG_CONFIG_HOME:-$HOME/.config}/waybar/style/"
fi
done || true
BACKUP_FILEw="$DIRPATHw-backup-$BACKUP_DIR/UserModules"
@@ -119,16 +119,16 @@ copy_waybar() {
copy_phase2() {
local log="$1"
local base="${DOTFILES_DIR:-.}"
- local DIR="btop cava hypr Kvantum qt5ct qt6ct swappy wallust wlogout yazi"
+ local DIR="btop cava hypr Kvantum qt5ct qt6ct starship swappy wallust wlogout yazi"
for DIR_NAME in $DIR; do
- local DIRPATH="$HOME/.config/$DIR_NAME"
+ local DIRPATH="${XDG_CONFIG_HOME:-$HOME/.config}/$DIR_NAME"
if [ -d "$DIRPATH" ]; then
echo -e "\n${NOTE:-[NOTE]} - Config for ${YELLOW:-}$DIR_NAME${RESET:-} found, attempting to back up."
BACKUP_DIR=$(get_backup_dirname)
mv "$DIRPATH" "$DIRPATH-backup-$BACKUP_DIR" 2>&1 | tee -a "$log"
fi
if [ -d "$base/config/$DIR_NAME" ]; then
- cp -r "$base/config/$DIR_NAME/" "$HOME/.config/$DIR_NAME" 2>&1 | tee -a "$log"
+ cp -r "$base/config/$DIR_NAME/" "${XDG_CONFIG_HOME:-$HOME/.config}/$DIR_NAME" 2>&1 | tee -a "$log"
echo "${OK:-[OK]} - Copy of config for ${YELLOW:-}$DIR_NAME${RESET:-} completed!" 2>&1 | tee -a "$log"
else
echo "${ERROR:-[ERROR]} - Directory config/$DIR_NAME does not exist to copy." 2>&1 | tee -a "$log"
@@ -137,13 +137,48 @@ copy_phase2() {
install_terminal_configs "$log"
}
+ensure_lua_keybinds() {
+ local log="$1"
+ local base="${DOTFILES_DIR:-.}"
+ local src_root="$base/config/hypr"
+ local dst_root="${XDG_CONFIG_HOME:-$HOME/.config}/hypr"
+ local copied=0
+ local rel_dir src_dir src_file rel_path dst_file
+
+ for rel_dir in configs UserConfigs lua; do
+ src_dir="$src_root/$rel_dir"
+ [ -d "$src_dir" ] || continue
+
+ while IFS= read -r -d '' src_file; do
+ rel_path="${src_file#$src_root/}"
+ dst_file="$dst_root/$rel_path"
+
+ if [ ! -f "$dst_file" ]; then
+ mkdir -p "$(dirname "$dst_file")"
+ if cp -f "$src_file" "$dst_file" 2>&1 | tee -a "$log"; then
+ copied=1
+ echo "${NOTE:-[NOTE]} - Added missing Lua file: ${YELLOW:-}$rel_path${RESET:-}" 2>&1 | tee -a "$log"
+ else
+ echo "${ERROR:-[ERROR]} - Failed to add missing Lua file: ${YELLOW:-}$rel_path${RESET:-}" 2>&1 | tee -a "$log"
+ fi
+ fi
+ done < <(find "$src_dir" -maxdepth 1 -type f -name '*.lua' -print0)
+ done
+
+ if [ "$copied" -eq 1 ]; then
+ echo "${OK:-[OK]} - Lua fallback copy completed." 2>&1 | tee -a "$log"
+ else
+ echo "${INFO:-[INFO]} - Lua fallback check: no missing Lua files detected." 2>&1 | tee -a "$log"
+ fi
+}
+
# Restore Animations and Monitor Profiles plus key hypr files from backup
restore_hypr_assets() {
local log="$1"
local express_mode="$2"
- local HYPR_DIR="$HOME/.config/hypr"
- local CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
+ local HYPR_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/hypr"
+ local CONFIG_HOME="${XDG_CONFIG_HOME:-${XDG_CONFIG_HOME:-$HOME/.config}}"
local BACKUP_DIR
BACKUP_DIR=$(get_backup_dirname)
local BACKUP_HYPR_PATH="$HYPR_DIR-backup-$BACKUP_DIR"
@@ -272,7 +307,7 @@ cleanup_duplicate_userconfigs() {
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 HYPR_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/hypr"
local BASE_DIR="$HYPR_DIR/configs"
local USER_DIR="$HYPR_DIR/UserConfigs"
@@ -389,7 +424,7 @@ restore_user_configs() {
local express_mode="$2"
local old_version="$3"
- local DIRPATH="$HOME/.config/hypr"
+ local DIRPATH="${XDG_CONFIG_HOME:-$HOME/.config}/hypr"
local BACKUP_DIR
BACKUP_DIR=$(get_backup_dirname)
local BACKUP_DIR_PATH="$DIRPATH-backup-$BACKUP_DIR/UserConfigs"
@@ -535,7 +570,7 @@ restore_user_scripts() {
local log="$1"
local express_mode="$2"
- local DIRSHPATH="$HOME/.config/hypr"
+ local DIRSHPATH="${XDG_CONFIG_HOME:-$HOME/.config}/hypr"
local BACKUP_DIR
BACKUP_DIR=$(get_backup_dirname)
local BACKUP_DIR_PATH_S="$DIRSHPATH-backup-$BACKUP_DIR/UserScripts"
@@ -573,7 +608,7 @@ restore_terminal_configs() {
local log="$1"
local express_mode="$2"
- local GHOSTTY_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/ghostty"
+ local GHOSTTY_DIR="${XDG_CONFIG_HOME:-${XDG_CONFIG_HOME:-$HOME/.config}}/ghostty"
local BACKUP_DIR
BACKUP_DIR=$(get_backup_dirname)
local GHOSTTY_BACKUP="$GHOSTTY_DIR-backup-$BACKUP_DIR"
@@ -599,7 +634,7 @@ restore_hypr_files() {
local log="$1"
local express_mode="$2"
- local DIRPATH="$HOME/.config/hypr"
+ local DIRPATH="${XDG_CONFIG_HOME:-$HOME/.config}/hypr"
local BACKUP_DIR
BACKUP_DIR=$(get_backup_dirname)
local BACKUP_DIR_PATH_F="$DIRPATH-backup-$BACKUP_DIR"
@@ -611,7 +646,7 @@ restore_hypr_files() {
fi
if [ -d "$BACKUP_DIR_PATH_F" ] && [ "$express_mode" -eq 0 ]; then
- echo -e "${NOTE:-[NOTE]} Restoring some files in ${MAGENTA:-}$HOME/.config/hypr directory${RESET:-}..." 2>&1 | tee -a "$log"
+ echo -e "${NOTE:-[NOTE]} Restoring some files in ${MAGENTA:-}${XDG_CONFIG_HOME:-$HOME/.config}/hypr directory${RESET:-}..." 2>&1 | tee -a "$log"
for FILE_RESTORE in "${FILES_2_RESTORE[@]}"; do
local BACKUP_FILE="$BACKUP_DIR_PATH_F/$FILE_RESTORE"
diff --git a/scripts/lib_detect.sh b/scripts/lib_detect.sh
index 2b11baac..5bb42c3f 100644
--- a/scripts/lib_detect.sh
+++ b/scripts/lib_detect.sh
@@ -10,13 +10,35 @@
# Nvidia tweaks: uncomments envs and adjusts hardware cursor setting.
detect_nvidia_adjust() {
local log="$1"
- if lspci -k | grep -A 2 -E "(VGA|3D)" | grep -iq nvidia; then
+ local pci_info
+ local has_nvidia=0
+ local has_intel=0
+ local has_amd=0
+ pci_info="$(lspci -k | grep -A 2 -E "(VGA|3D)" || true)"
+ if echo "$pci_info" | grep -iq nvidia; then
+ has_nvidia=1
+ fi
+ if echo "$pci_info" | grep -iq intel; then
+ has_intel=1
+ fi
+ if echo "$pci_info" | grep -Eiq 'amd|advanced micro devices|ati'; then
+ has_amd=1
+ fi
+ if [ "$has_nvidia" -eq 1 ]; then
echo "${INFO:-[INFO]} Nvidia GPU detected. Setting up proper env's and configs" 2>&1 | tee -a "$log" || true
sed -i '/env = LIBVA_DRIVER_NAME,nvidia/s/^#//' config/hypr/configs/ENVariables.conf
sed -i '/env = __GLX_VENDOR_LIBRARY_NAME,nvidia/s/^#//' config/hypr/configs/ENVariables.conf
sed -i '/env = NVD_BACKEND,direct/s/^#//' config/hypr/configs/ENVariables.conf
sed -i '/env = GSK_RENDERER,ngl/s/^#//' config/hypr/configs/ENVariables.conf
- sed -i 's/^\([[:space:]]*no_hardware_cursors[[:space:]]*=[[:space:]]*\)2/\1 1/' config/hypr/configs/SystemSettings.conf
+ if [ "$has_intel" -eq 1 ] || [ "$has_amd" -eq 1 ]; then
+ echo "${INFO:-[INFO]} Hybrid GPU detected (Intel/NVIDIA or AMD/NVIDIA). Applying cursor handoff fixes." 2>&1 | tee -a "$log" || true
+ sed -i -E 's/^([[:space:]]*no_hardware_cursors[[:space:]]*=[[:space:]]*)[0-9]+/\1 0/' config/hypr/configs/SystemSettings.conf
+ sed -i -E 's/^([[:space:]]*no_hardware_cursors[[:space:]]*=[[:space:]]*)[0-9]+/\1 0/' config/hypr/lua/settings.lua
+ sed -i '/hyprctl setcursor/s/^#//' config/hypr/configs/Startup_Apps.conf
+ else
+ sed -i -E 's/^([[:space:]]*no_hardware_cursors[[:space:]]*=[[:space:]]*)[0-9]+/\1 1/' config/hypr/configs/SystemSettings.conf
+ sed -i -E 's/^([[:space:]]*no_hardware_cursors[[:space:]]*=[[:space:]]*)[0-9]+/\1 1/' config/hypr/lua/settings.lua
+ fi
fi
}
@@ -44,6 +66,46 @@ detect_nixos_adjust() {
grep -qx '\$scriptsDir/Polkit.sh' "$DISABLE_SA" || echo '$scriptsDir/Polkit.sh' >>"$DISABLE_SA"
fi
}
+# Qt Quick Controls style safety: enable Hyprland style only when module exists.
+adjust_qt_quick_controls_style() {
+ local log="$1"
+ local env_conf="config/hypr/configs/ENVariables.conf"
+ local env_lua="config/hypr/lua/env.lua"
+ local style="Basic"
+ local qt_style_override="Fusion"
+ local has_kvantum_qml=0
+
+ if find /usr/lib /usr/lib64 /usr/share -type d -path '*/qml/*/org/hyprland/style' -print -quit 2>/dev/null | grep -q .; then
+ style="org.hyprland.style"
+ elif command -v dpkg >/dev/null 2>&1 && dpkg -s qml6-module-org-hyprland-style >/dev/null 2>&1; then
+ style="org.hyprland.style"
+ fi
+
+ if find /usr/lib /usr/lib64 /usr/share -type d -path '*/qml/*/kvantum' -print -quit 2>/dev/null | grep -q .; then
+ has_kvantum_qml=1
+ qt_style_override="kvantum"
+ fi
+
+ if [ -f "$env_conf" ]; then
+ sed -i -E "s|^env = QT_QUICK_CONTROLS_STYLE,.*$|env = QT_QUICK_CONTROLS_STYLE,${style}|" "$env_conf"
+ sed -i -E "s|^env = QT_STYLE_OVERRIDE,.*$|env = QT_STYLE_OVERRIDE,${qt_style_override}|" "$env_conf"
+ fi
+ if [ -f "$env_lua" ]; then
+ sed -i -E "s|^hl\\.env\\(\"QT_QUICK_CONTROLS_STYLE\", \".*\"\\)$|hl.env(\"QT_QUICK_CONTROLS_STYLE\", \"${style}\")|" "$env_lua"
+ sed -i -E "s|^hl\\.env\\(\"QT_STYLE_OVERRIDE\", \".*\"\\)$|hl.env(\"QT_STYLE_OVERRIDE\", \"${qt_style_override}\")|" "$env_lua"
+ fi
+
+ if [ "$style" = "org.hyprland.style" ]; then
+ echo "${INFO:-[INFO]} hyprland Qt style module detected. Using QT_QUICK_CONTROLS_STYLE=$style" 2>&1 | tee -a "$log" || true
+ else
+ echo "${WARN:-[WARN]} hyprland Qt style module not found. Using QT_QUICK_CONTROLS_STYLE=Basic to avoid Qt app crashes." 2>&1 | tee -a "$log" || true
+ fi
+ if [ "$has_kvantum_qml" -eq 1 ]; then
+ echo "${INFO:-[INFO]} Kvantum QML module detected. Using QT_STYLE_OVERRIDE=kvantum" 2>&1 | tee -a "$log" || true
+ else
+ echo "${WARN:-[WARN]} Kvantum QML module not found. Using QT_STYLE_OVERRIDE=Fusion as fallback." 2>&1 | tee -a "$log" || true
+ fi
+}
# Decide waybar config/style based on chassis type. Echoes chosen config path.
detect_waybar_config() {
diff --git a/scripts/lib_prompts.sh b/scripts/lib_prompts.sh
index 8f2db3bc..bd8d9c75 100644
--- a/scripts/lib_prompts.sh
+++ b/scripts/lib_prompts.sh
@@ -45,7 +45,7 @@ You need to set it Manually
Setting a wrong Keyboard Layout will cause Hyprland to crash
If you are not sure, just type ${YELLOW}us${RESET}
-${SKYBLUE}You can change later in ~/.config/hypr/UserConfigs/UserSettings.conf${RESET}
+${SKYBLUE}You can change later in ${XDG_CONFIG_HOME:-$HOME/.config}/hypr/UserConfigs/UserSettings.conf${RESET}
${MAGENTA} NOTE:${RESET}
• You can also set more than 2 keyboard layouts
@@ -93,7 +93,7 @@ You need to set it Manually
Setting a wrong Keyboard Layout will cause Hyprland to crash
If you are not sure, just type ${YELLOW}us${RESET}
-${SKYBLUE}You can change later in ~/.config/hypr/UserConfigs/UserSettings.conf${RESET}
+${SKYBLUE}You can change later in ${XDG_CONFIG_HOME:-$HOME/.config}/hypr/UserConfigs/UserSettings.conf${RESET}
${MAGENTA} NOTE:${RESET}
• You can also set more than 2 keyboard layouts
diff --git a/scripts/migrate-hypr-to-lua.sh b/scripts/migrate-hypr-to-lua.sh
index ccbd6ed9..a3e4c78c 100755
--- a/scripts/migrate-hypr-to-lua.sh
+++ b/scripts/migrate-hypr-to-lua.sh
@@ -12,7 +12,7 @@ set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
SRC_HYPR_DIR="$REPO_DIR/config/hypr"
-DEST_HYPR_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/hypr"
+DEST_HYPR_DIR="${XDG_CONFIG_HOME:-${XDG_CONFIG_HOME:-$HOME/.config}}/hypr"
BACKUP_DIR="${DEST_HYPR_DIR}-backup-lua-$(date +%Y%m%d-%H%M%S)"
MIGRATION_TS="$(date +%Y%m%d-%H%M%S)"
DRY_RUN=0
@@ -49,6 +49,7 @@ DEST_WORKSPACES_CONF="$DEST_HYPR_DIR/workspaces.conf"
DEST_LUA_WORKSPACES="$DEST_HYPR_DIR/lua/workspaces.lua"
SOURCE_LUA_ENTRY_ENABLED="$SRC_HYPR_DIR/hyprland.lua"
SOURCE_LUA_ENTRY_DISABLED="$SRC_HYPR_DIR/hyprland.lua.disable"
+SRC_USER_LUA_TEMPLATES_DIR="$SRC_HYPR_DIR/UserConfigs"
DEST_LUA_ENTRY="$DEST_HYPR_DIR/hyprland.lua"
DEST_LUA_ENTRY_DISABLED="$DEST_HYPR_DIR/hyprland.lua.disable"
SOURCE_LUA_ENTRY=""
@@ -163,6 +164,51 @@ restore_latest_conf_backup() {
fi
}
+has_active_hyprlang_content() {
+ local source_conf="$1"
+ [ -f "$source_conf" ] || return 1
+ grep -Eq '^[[:space:]]*[^#[:space:]]' "$source_conf"
+}
+
+lua_file_is_generated() {
+ local lua_path="$1"
+ [ -f "$lua_path" ] || return 1
+ grep -Eq 'auto-generated|Converted from|No active entries were found|Source reference from' "$lua_path"
+}
+
+ensure_template_for_empty_user_conf() {
+ local source_conf="$1"
+ local target_lua="$2"
+ local template_lua="$3"
+
+ [ -f "$template_lua" ] || return 0
+
+ if has_active_hyprlang_content "$source_conf"; then
+ return 0
+ fi
+
+ if [ -f "$target_lua" ] && ! lua_file_is_generated "$target_lua"; then
+ echo "[INFO] Preserving customized Lua file for empty/default source: $target_lua"
+ return 0
+ fi
+
+ cp -f "$template_lua" "$target_lua"
+ echo "[OK] Ensured template for empty/default source: $source_conf -> $target_lua"
+}
+
+ensure_templates_for_empty_user_configs() {
+ ensure_template_for_empty_user_conf "$USER_ENV_VARS" "$USER_CONFIGS_DIR/user_env.lua" "$SRC_USER_LUA_TEMPLATES_DIR/user_env.lua"
+ ensure_template_for_empty_user_conf "$USER_STARTUP_APPS" "$USER_CONFIGS_DIR/user_startup.lua" "$SRC_USER_LUA_TEMPLATES_DIR/user_startup.lua"
+ ensure_template_for_empty_user_conf "$USER_WINDOW_RULES" "$USER_CONFIGS_DIR/user_window_rules.lua" "$SRC_USER_LUA_TEMPLATES_DIR/user_window_rules.lua"
+ ensure_template_for_empty_user_conf "$USER_LAYER_RULES" "$USER_CONFIGS_DIR/user_layer_rules.lua" "$SRC_USER_LUA_TEMPLATES_DIR/user_layer_rules.lua"
+ ensure_template_for_empty_user_conf "$USER_KEYBINDS" "$USER_CONFIGS_DIR/user_keybinds.lua" "$SRC_USER_LUA_TEMPLATES_DIR/user_keybinds.lua"
+ ensure_template_for_empty_user_conf "$USER_SETTINGS" "$USER_CONFIGS_DIR/user_settings.lua" "$SRC_USER_LUA_TEMPLATES_DIR/user_settings.lua"
+ ensure_template_for_empty_user_conf "$USER_DECORATIONS" "$USER_CONFIGS_DIR/user_decorations.lua" "$SRC_USER_LUA_TEMPLATES_DIR/user_decorations.lua"
+ ensure_template_for_empty_user_conf "$USER_ANIMATIONS" "$USER_CONFIGS_DIR/user_animations.lua" "$SRC_USER_LUA_TEMPLATES_DIR/user_animations.lua"
+ ensure_template_for_empty_user_conf "$USER_LAPTOPS" "$USER_CONFIGS_DIR/user_laptops.lua" "$SRC_USER_LUA_TEMPLATES_DIR/user_laptops.lua"
+ ensure_template_for_empty_user_conf "$USER_CONFIGS_DIR/01-UserDefaults.conf" "$USER_CONFIGS_DIR/user_defaults.lua" "$SRC_USER_LUA_TEMPLATES_DIR/user_defaults.lua"
+}
+
if [ "$YES" -eq 0 ]; then
if [ "$REVERT" -eq 1 ]; then
printf "[ACTION] Continue and revert Lua migration using latest legacy archives? [y/N] "
@@ -199,10 +245,15 @@ if [ "$DRY_RUN" -eq 1 ]; then
fi
if [ -f "$DEST_LUA_ENTRY_DISABLED" ]; then
echo "[DRY-RUN] Would enable Lua entrypoint: $DEST_LUA_ENTRY_DISABLED -> $DEST_LUA_ENTRY"
+ fi
+ if [ -n "$SOURCE_LUA_ENTRY" ]; then
+ if [ -f "$DEST_LUA_ENTRY" ]; then
+ echo "[DRY-RUN] Would refresh Lua entrypoint from template: $SOURCE_LUA_ENTRY -> $DEST_LUA_ENTRY"
+ else
+ echo "[DRY-RUN] Would install Lua entrypoint: $SOURCE_LUA_ENTRY -> $DEST_LUA_ENTRY"
+ fi
elif [ -f "$DEST_LUA_ENTRY" ]; then
- echo "[DRY-RUN] Lua entrypoint already enabled: $DEST_LUA_ENTRY"
- elif [ -n "$SOURCE_LUA_ENTRY" ]; then
- echo "[DRY-RUN] Would install Lua entrypoint: $SOURCE_LUA_ENTRY -> $DEST_LUA_ENTRY"
+ echo "[DRY-RUN] Lua entrypoint already enabled: $DEST_LUA_ENTRY (no source template available to refresh)"
fi
echo "[DRY-RUN] Would replace Lua module directory: $DEST_HYPR_DIR/lua"
echo "[DRY-RUN] Would generate split configs/UserConfigs Lua overlays:"
@@ -223,6 +274,7 @@ if [ "$DRY_RUN" -eq 1 ]; then
echo "[DRY-RUN] - $USER_CONFIGS_DIR/user_animations.lua"
echo "[DRY-RUN] - $USER_CONFIGS_DIR/user_laptops.lua"
echo "[DRY-RUN] - $USER_CONFIGS_DIR/user_defaults.lua"
+ echo "[DRY-RUN] Would ensure repo Lua templates for empty/default UserConfigs/*.conf files."
echo "[DRY-RUN] - $DEST_LUA_MONITORS (generated from $DEST_MONITORS_CONF)"
echo "[DRY-RUN] - $DEST_LUA_WORKSPACES (generated from $DEST_WORKSPACES_CONF)"
if [ -d "$USER_CONFIGS_DIR" ]; then
@@ -264,11 +316,12 @@ if [ -f "$DEST_LUA_ENTRY_DISABLED" ]; then
mv "$DEST_LUA_ENTRY_DISABLED" "$DEST_LUA_ENTRY"
echo "[OK] Enabled Lua entrypoint: $DEST_LUA_ENTRY"
fi
-elif [ -f "$DEST_LUA_ENTRY" ]; then
- echo "[INFO] Lua entrypoint already enabled: $DEST_LUA_ENTRY"
-elif [ -n "$SOURCE_LUA_ENTRY" ]; then
+fi
+if [ -n "$SOURCE_LUA_ENTRY" ]; then
cp -f "$SOURCE_LUA_ENTRY" "$DEST_LUA_ENTRY"
- echo "[OK] Installed Lua entrypoint: $SOURCE_LUA_ENTRY -> $DEST_LUA_ENTRY"
+ echo "[OK] Installed/updated Lua entrypoint: $SOURCE_LUA_ENTRY -> $DEST_LUA_ENTRY"
+elif [ -f "$DEST_LUA_ENTRY" ]; then
+ echo "[INFO] Lua entrypoint already enabled: $DEST_LUA_ENTRY (source template unavailable; keeping existing entrypoint)"
else
echo "[ERROR] Unable to locate a Lua entrypoint to enable." >&2
exit 1
@@ -1483,16 +1536,16 @@ system_keybind_lines = [
" end",
" if name == \"cyclenext\" then",
" if args == \"prev\" or args == \"b\" then",
- " return exec_cmd(\"$HOME/.config/hypr/scripts/LuaCycleWindow.sh previous\")",
+ " return exec_cmd(\"${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts/LuaCycleWindow.sh previous\")",
" end",
- " return exec_cmd(\"$HOME/.config/hypr/scripts/LuaCycleWindow.sh next\")",
+ " return exec_cmd(\"${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts/LuaCycleWindow.sh next\")",
" end",
" if name == \"swapwindow\" then",
" local swap_direction = trim(args)",
" if swap_direction == \"\" then",
" return nil",
" end",
- " return exec_cmd(\"$HOME/.config/hypr/scripts/LuaSwapWindow.sh \" .. swap_direction)",
+ " return exec_cmd(\"${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts/LuaSwapWindow.sh \" .. swap_direction)",
" end",
" if name == \"workspace\" and dsp and dsp.focus then",
" return function() hl.dispatch(dsp.focus({ workspace = workspace_value(args) })) end",
@@ -1688,7 +1741,7 @@ startup_lines = [
"-- User startup overrides (auto-generated).",
"-- Add commands with exec_once(\"your command\")",
"-- Example:",
- "-- exec_once(\"$HOME/.config/hypr/UserScripts/MyStartup.sh\")",
+ "-- exec_once(\"${XDG_CONFIG_HOME:-$HOME/.config}/hypr/UserScripts/MyStartup.sh\")",
"",
"local user_startup_helper = nil",
"do",
@@ -1870,7 +1923,7 @@ keybind_lines = [
"-- Add keybinds with bind(\"MODS\", \"KEY\", fn, opts).",
"-- Example:",
"-- bind(\"SUPER\", \"Z\", exec_cmd(\"ghostty\"), { description = \"Launch ghostty\" })",
- "-- Helper functions live in ~/.config/hypr/lua/user_keybinds_helper.lua so they can be updated separately.",
+ "-- Helper functions live in ${XDG_CONFIG_HOME:-$HOME/.config}/hypr/lua/user_keybinds_helper.lua so they can be updated separately.",
"local user_keybinds_helper = nil",
"do",
" local source = (debug.getinfo(1, \"S\") or {}).source or \"\"",
@@ -2085,6 +2138,7 @@ for name, source in [
lines.append(f"-- No active entries were found in {source.name}.")
write_file(files_out[name], lines)
PY
+ensure_templates_for_empty_user_configs
cat > "$USER_OVERRIDES_SHIM" <<'LUA'
-- ==================================================
@@ -2094,7 +2148,7 @@ cat > "$USER_OVERRIDES_SHIM" <<'LUA'
-- SPDX-License-Identifier: GPL-3.0-or-later
-- ==================================================
-- Auto-generated by scripts/migrate-hypr-to-lua.sh.
--- Loads split system/user Lua files from ~/.config/hypr/configs and ~/.config/hypr/UserConfigs.
+-- Loads split system/user Lua files from ${XDG_CONFIG_HOME:-$HOME/.config}/hypr/configs and ${XDG_CONFIG_HOME:-$HOME/.config}/hypr/UserConfigs.
local configHome = os.getenv("XDG_CONFIG_HOME") or ((os.getenv("HOME") or "") .. "/.config")
local hyprDir = configHome .. "/hypr"
local systemDir = hyprDir .. "/configs"
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage