aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md150
-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/UserDecorations.conf2
-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.conf12
-rw-r--r--config/hypr/animations/00-default.lua26
-rw-r--r--config/hypr/animations/01-default - v2.conf18
-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.conf6
-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.conf6
-rw-r--r--config/hypr/animations/HYDE - default.lua22
-rw-r--r--config/hypr/animations/HYDE - minimal-1.conf6
-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.conf11
-rw-r--r--config/hypr/animations/HYDE - optimized.lua40
-rw-r--r--config/hypr/animations/ML4W - classic.conf2
-rw-r--r--config/hypr/animations/ML4W - classic.lua16
-rw-r--r--config/hypr/animations/ML4W - dynamic.conf6
-rw-r--r--config/hypr/animations/ML4W - dynamic.lua21
-rw-r--r--config/hypr/animations/ML4W - fast.conf7
-rw-r--r--config/hypr/animations/ML4W - fast.lua25
-rw-r--r--config/hypr/animations/ML4W - high.conf6
-rw-r--r--config/hypr/animations/ML4W - high.lua21
-rw-r--r--config/hypr/animations/ML4W - moving.conf4
-rw-r--r--config/hypr/animations/ML4W - moving.lua20
-rw-r--r--config/hypr/animations/ML4W - standard.conf2
-rw-r--r--config/hypr/animations/ML4W - standard.lua16
-rw-r--r--config/hypr/animations/Mahaveer - me-1.conf13
-rw-r--r--config/hypr/animations/Mahaveer - me-1.lua41
-rw-r--r--config/hypr/animations/Mahaveer - me-2.conf12
-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/animations/amitpadhan.conf33
-rw-r--r--config/hypr/animations/amitpadhan.lua28
-rw-r--r--config/hypr/configs/ENVariables.conf14
-rw-r--r--config/hypr/configs/Keybinds.conf40
-rw-r--r--config/hypr/configs/Startup_Apps.conf8
-rw-r--r--config/hypr/configs/SystemSettings.conf4
-rw-r--r--config/hypr/configs/WindowRules.conf10
-rw-r--r--config/hypr/configs/system_keybinds.lua416
-rw-r--r--config/hypr/hypridle.conf15
-rw-r--r--config/hypr/hyprlock-1080p.conf8
-rw-r--r--config/hypr/hyprlock.conf6
-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.sh4
-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.sh4
-rwxr-xr-xconfig/hypr/scripts/RefreshNoWaybar.sh4
-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
229 files changed, 11372 insertions, 5296 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3be76db4..6ba753ea 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,13 +1,160 @@
# Changelog — KoolDots
+## v2.3.26
+
+## Fixed:
+
+- Some animation bezier values out-of-range
+ - Fixed both hyprlang and lua config files
+
+## Updated:
+
+## Changed:
+
+- `shadow range` changed to `2` from `3`
+
+---
+
## 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
+ - `SUPER + 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 +275,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/UserDecorations.conf b/config/hypr/UserConfigs/UserDecorations.conf
index e7e30651..bef67138 100644
--- a/config/hypr/UserConfigs/UserDecorations.conf
+++ b/config/hypr/UserConfigs/UserDecorations.conf
@@ -35,7 +35,7 @@ decoration {
shadow {
enabled = true
- range = 3
+ range = 1
render_power = 1
color = $color12
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..6d2bab7a 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 = 2,
+-- 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.conf b/config/hypr/animations/00-default.conf
index f2d33d93..41ca0efb 100644
--- a/config/hypr/animations/00-default.conf
+++ b/config/hypr/animations/00-default.conf
@@ -3,13 +3,13 @@
animations {
enabled = yes
- bezier = wind, 0.05, 0.9, 0.1, 1.05
- bezier = winIn, 0.1, 1.1, 0.1, 1.1
- bezier = winOut, 0.3, -0.3, 0, 1
+ bezier = wind, 0.05, 0.9, 0.1, 1.00
+ bezier = winIn, 0.1, 1.0, 0.1, 1.0
+ bezier = winOut, 0.3, 0.0, 0, 1
bezier = liner, 1, 1, 1, 1
- bezier = overshot, 0.05, 0.9, 0.1, 1.05
+ bezier = overshot, 0.05, 0.9, 0.1, 1.00
bezier = smoothOut, 0.5, 0, 0.99, 0.99
- bezier = smoothIn, 0.5, -0.5, 0.68, 1.5
+ bezier = smoothIn, 0.5, 0.0, 0.68, 1.0
animation = windows, 1, 6, wind, slide
animation = windowsIn, 1, 5, winIn, slide
@@ -23,4 +23,4 @@ animations {
# animations for -git or version >0.42.0
animation = workspacesIn, 1, 5, winIn, slide
animation = workspacesOut, 1, 5, winOut, slide
-} \ No newline at end of file
+}
diff --git a/config/hypr/animations/00-default.lua b/config/hypr/animations/00-default.lua
new file mode 100644
index 00000000..d28ba5a1
--- /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.00 } } })
+hl.curve("winIn", { type = "bezier", points = { { 0.1, 1.0 }, { 0.1, 1.0 } } })
+hl.curve("winOut", { type = "bezier", points = { { 0.3, 0.0 }, { 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.00 } } })
+hl.curve("smoothOut", { type = "bezier", points = { { 0.5, 0 }, { 0.99, 0.99 } } })
+hl.curve("smoothIn", { type = "bezier", points = { { 0.5, 0.0 }, { 0.68, 1.0 } } })
+
+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.conf b/config/hypr/animations/01-default - v2.conf
index 7ba66b79..018e375e 100644
--- a/config/hypr/animations/01-default - v2.conf
+++ b/config/hypr/animations/01-default - v2.conf
@@ -5,16 +5,16 @@
animations {
enabled = yes
- bezier = myBezier, 0.05, 0.9, 0.1, 1.05
+ bezier = myBezier, 0.05, 0.9, 0.1, 1.00
bezier = linear, 0.0, 0.0, 1.0, 1.0
- bezier = wind, 0.05, 0.9, 0.1, 1.05
- bezier = winIn, 0.1, 1.1, 0.1, 1.1
- bezier = winOut, 0.3, -0.3, 0, 1
+ bezier = wind, 0.05, 0.9, 0.1, 1.00
+ bezier = winIn, 0.1, 1.0, 0.1, 1.0
+ bezier = winOut, 0.3, 0.0, 0, 1
bezier = slow, 0, 0.85, 0.3, 1
- bezier = overshot, 0.7, 0.6, 0.1, 1.1
- bezier = bounce, 1.1, 1.6, 0.1, 0.85
- bezier = sligshot, 1, -1, 0.15, 1.25
- bezier = nice, 0, 6.9, 0.5, -4.20
+ bezier = overshot, 0.7, 0.6, 0.1, 1.0
+ bezier = bounce, 1.0, 1.0, 0.1, 0.85
+ bezier = sligshot, 1, 0.0, 0.15, 1.00
+ bezier = nice, 0, 1.0, 0.5, 0.00
animation = windowsIn, 1, 5, slow, popin
animation = windowsOut, 1, 5, winOut, popin
@@ -24,4 +24,4 @@ animations {
animation = fade, 1, 5, overshot
animation = workspaces, 1, 5, wind
animation = windows, 1, 5, bounce, popin
-} \ No newline at end of file
+}
diff --git a/config/hypr/animations/01-default - v2.lua b/config/hypr/animations/01-default - v2.lua
new file mode 100644
index 00000000..af12ecfe
--- /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.00 } } })
+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.00 } } })
+hl.curve("winIn", { type = "bezier", points = { { 0.1, 1.0 }, { 0.1, 1.0 } } })
+hl.curve("winOut", { type = "bezier", points = { { 0.3, 0.0 }, { 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.0 } } })
+hl.curve("bounce", { type = "bezier", points = { { 1.0, 1.0 }, { 0.1, 0.85 } } })
+hl.curve("sligshot", { type = "bezier", points = { { 1, 0.0 }, { 0.15, 1.00 } } })
+hl.curve("nice", { type = "bezier", points = { { 0, 1.0 }, { 0.5, 0.00 } } })
+
+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.conf b/config/hypr/animations/END-4.conf
index 394a0a1a..fc3369e2 100644
--- a/config/hypr/animations/END-4.conf
+++ b/config/hypr/animations/END-4.conf
@@ -11,8 +11,8 @@ animations {
bezier = md3_standard, 0.2, 0, 0, 1
bezier = md3_decel, 0.05, 0.7, 0.1, 1
bezier = md3_accel, 0.3, 0, 0.8, 0.15
- bezier = overshot, 0.05, 0.9, 0.1, 1.1
- bezier = crazyshot, 0.1, 1.5, 0.76, 0.92
+ bezier = overshot, 0.05, 0.9, 0.1, 1.0
+ bezier = crazyshot, 0.1, 1.0, 0.76, 0.92
bezier = hyprnostretch, 0.05, 0.9, 0.1, 1.0
bezier = menu_decel, 0.1, 1, 0, 1
bezier = menu_accel, 0.38, 0.04, 1, 0.07
@@ -20,7 +20,7 @@ animations {
bezier = easeOutCirc, 0, 0.55, 0.45, 1
bezier = easeOutExpo, 0.16, 1, 0.3, 1
bezier = softAcDecel, 0.26, 0.26, 0.15, 1
- bezier = md2, 0.4, 0, 0.2, 1 # use with .2s duration
+ bezier = md2, 0.4, 0, 0.2, 1 # use with .2s duration
# Animation configs
animation = windows, 1, 3, md3_decel, popin 60%
animation = windowsIn, 1, 3, md3_decel, popin 60%
diff --git a/config/hypr/animations/END-4.lua b/config/hypr/animations/END-4.lua
new file mode 100644
index 00000000..1cc5ded9
--- /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.0 } } })
+hl.curve("crazyshot", { type = "bezier", points = { { 0.1, 1.0 }, { 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.conf b/config/hypr/animations/HYDE - default.conf
index 981414fd..51c20a5b 100644
--- a/config/hypr/animations/HYDE - default.conf
+++ b/config/hypr/animations/HYDE - default.conf
@@ -5,9 +5,9 @@
animations {
enabled = yes
- bezier = wind, 0.05, 0.9, 0.1, 1.05
- bezier = winIn, 0.1, 1.1, 0.1, 1.1
- bezier = winOut, 0.3, -0.3, 0, 1
+ bezier = wind, 0.05, 0.9, 0.1, 1.00
+ bezier = winIn, 0.1, 1.0, 0.1, 1.0
+ bezier = winOut, 0.3, 0.0, 0, 1
bezier = liner, 1, 1, 1, 1
animation = windows, 1, 6, wind, slide
animation = windowsIn, 1, 6, winIn, slide
diff --git a/config/hypr/animations/HYDE - default.lua b/config/hypr/animations/HYDE - default.lua
new file mode 100644
index 00000000..9bcbad6d
--- /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.00 } } })
+hl.curve("winIn", { type = "bezier", points = { { 0.1, 1.0 }, { 0.1, 1.0 } } })
+hl.curve("winOut", { type = "bezier", points = { { 0.3, 0.0 }, { 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.conf b/config/hypr/animations/HYDE - minimal-1.conf
index 909f7140..81264f3a 100644
--- a/config/hypr/animations/HYDE - minimal-1.conf
+++ b/config/hypr/animations/HYDE - minimal-1.conf
@@ -8,9 +8,9 @@ animations {
# █▄▄ █▀▀ ▀█ █ █▀▀ █▀█   █▀▀ █░█ █▀█ █░█ █▀▀
# █▄█ ██▄ █▄ █ ██▄ █▀▄   █▄▄ █▄█ █▀▄ ▀▄▀ ██▄
- bezier = wind, 0.05, 0.9, 0.1, 1.05
- bezier = winIn, 0.1, 1.1, 0.1, 1.1
- bezier = winOut, 0.3, -0.3, 0, 1
+ bezier = wind, 0.05, 0.9, 0.1, 1.00
+ bezier = winIn, 0.1, 1.0, 0.1, 1.0
+ bezier = winOut, 0.3, 0.0, 0, 1
bezier = liner, 1, 1, 1, 1
diff --git a/config/hypr/animations/HYDE - minimal-1.lua b/config/hypr/animations/HYDE - minimal-1.lua
new file mode 100644
index 00000000..53530f57
--- /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.00 } } })
+hl.curve("winIn", { type = "bezier", points = { { 0.1, 1.0 }, { 0.1, 1.0 } } })
+hl.curve("winOut", { type = "bezier", points = { { 0.3, 0.0 }, { 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.conf b/config/hypr/animations/HYDE - optimized.conf
index e325b635..911ca41b 100644
--- a/config/hypr/animations/HYDE - optimized.conf
+++ b/config/hypr/animations/HYDE - optimized.conf
@@ -7,13 +7,13 @@ animations {
enabled = true
bezier = wind, 0.05, 0.85, 0.03, 0.97
bezier = winIn, 0.07, 0.88, 0.04, 0.99
- bezier = winOut, 0.20, -0.15, 0, 1
+ bezier = winOut, 0.20, 0.00, 0, 1
bezier = liner, 1, 1, 1, 1
bezier = md3_standard, 0.12, 0, 0, 1
bezier = md3_decel, 0.05, 0.80, 0.10, 0.97
bezier = md3_accel, 0.20, 0, 0.80, 0.08
- bezier = overshot, 0.05, 0.85, 0.07, 1.04
- bezier = crazyshot, 0.1, 1.22, 0.68, 0.98
+ bezier = overshot, 0.05, 0.85, 0.07, 1.00
+ bezier = crazyshot, 0.1, 1.00, 0.68, 0.98
bezier = hyprnostretch, 0.05, 0.82, 0.03, 0.94
bezier = menu_decel, 0.05, 0.82, 0, 1
bezier = menu_accel, 0.20, 0, 0.82, 0.10
@@ -21,9 +21,10 @@ animations {
bezier = easeOutCirc, 0, 0.48, 0.38, 1
bezier = easeOutExpo, 0.10, 0.94, 0.23, 0.98
bezier = softAcDecel, 0.20, 0.20, 0.15, 1
- bezier = md2, 0.30, 0, 0.15, 1
+ bezier = md1, 0.30, 0, 0.15, 1
+ bezier = md3_decel, 0.05, 0.80, 0.10, 0.97
- bezier = OutBack, 0.28, 1.40, 0.58, 1
+ bezier = OutBack, 0.28, 1.00, 0.58, 1
bezier = easeInOutCirc, 0.78, 0, 0.15, 1
animation = border, 1, 1.6, liner
diff --git a/config/hypr/animations/HYDE - optimized.lua b/config/hypr/animations/HYDE - optimized.lua
new file mode 100644
index 00000000..7e48ca86
--- /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.00 }, { 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.00 } } })
+hl.curve("crazyshot", { type = "bezier", points = { { 0.1, 1.00 }, { 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.00 }, { 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.conf b/config/hypr/animations/ML4W - classic.conf
index 7f697afd..77f32290 100644
--- a/config/hypr/animations/ML4W - classic.conf
+++ b/config/hypr/animations/ML4W - classic.conf
@@ -5,7 +5,7 @@
animations {
enabled = true
- bezier = myBezier, 0.05, 0.9, 0.1, 1.05
+ bezier = myBezier, 0.05, 0.9, 0.1, 1.00
animation = windows, 1, 7, myBezier
animation = windowsOut, 1, 7, default, popin 80%
animation = border, 1, 10, default
diff --git a/config/hypr/animations/ML4W - classic.lua b/config/hypr/animations/ML4W - classic.lua
new file mode 100644
index 00000000..a77e4334
--- /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.00 } } })
+
+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.conf b/config/hypr/animations/ML4W - dynamic.conf
index 7c98675d..a2d65eaf 100644
--- a/config/hypr/animations/ML4W - dynamic.conf
+++ b/config/hypr/animations/ML4W - dynamic.conf
@@ -5,9 +5,9 @@
animations {
enabled = true
- bezier = wind, 0.05, 0.9, 0.1, 1.05
- bezier = winIn, 0.1, 1.1, 0.1, 1.1
- bezier = winOut, 0.3, -0.3, 0, 1
+ bezier = wind, 0.05, 0.9, 0.1, 1.00
+ bezier = winIn, 0.1, 1.0, 0.1, 1.0
+ bezier = winOut, 0.3, 0.0, 0, 1
bezier = liner, 1, 1, 1, 1
animation = windows, 1, 6, wind, slide
animation = windowsIn, 1, 6, winIn, slide
diff --git a/config/hypr/animations/ML4W - dynamic.lua b/config/hypr/animations/ML4W - dynamic.lua
new file mode 100644
index 00000000..fbb86797
--- /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.00 } } })
+hl.curve("winIn", { type = "bezier", points = { { 0.1, 1.0 }, { 0.1, 1.0 } } })
+hl.curve("winOut", { type = "bezier", points = { { 0.3, 0.0 }, { 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.conf b/config/hypr/animations/ML4W - fast.conf
index ce586478..fd9d22d8 100644
--- a/config/hypr/animations/ML4W - fast.conf
+++ b/config/hypr/animations/ML4W - fast.conf
@@ -9,16 +9,17 @@ animations {
bezier = md3_standard, 0.2, 0, 0, 1
bezier = md3_decel, 0.05, 0.7, 0.1, 1
bezier = md3_accel, 0.3, 0, 0.8, 0.15
- bezier = overshot, 0.05, 0.9, 0.1, 1.1
- bezier = crazyshot, 0.1, 1.5, 0.76, 0.92
+ bezier = overshot, 0.05, 0.9, 0.1, 1.0
+ bezier = crazyshot, 0.1, 1.0, 0.76, 0.92
bezier = hyprnostretch, 0.05, 0.9, 0.1, 1.0
bezier = fluent_decel, 0.1, 1, 0, 1
bezier = easeInOutCirc, 0.85, 0, 0.15, 1
bezier = easeOutCirc, 0, 0.55, 0.45, 1
bezier = easeOutExpo, 0.16, 1, 0.3, 1
+ bezier = md3_decel, 0.05, 0.7, 0.1, 1
animation = windows, 1, 3, md3_decel, popin 60%
animation = border, 1, 10, default
animation = fade, 1, 2.5, md3_decel
animation = workspaces, 1, 3.5, easeOutExpo, slide
animation = specialWorkspace, 1, 3, md3_decel, slidevert
-} \ No newline at end of file
+}
diff --git a/config/hypr/animations/ML4W - fast.lua b/config/hypr/animations/ML4W - fast.lua
new file mode 100644
index 00000000..f8560c89
--- /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.0 } } })
+hl.curve("crazyshot", { type = "bezier", points = { { 0.1, 1.0 }, { 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.conf b/config/hypr/animations/ML4W - high.conf
index bc38fc66..b5fdba08 100644
--- a/config/hypr/animations/ML4W - high.conf
+++ b/config/hypr/animations/ML4W - high.conf
@@ -5,9 +5,9 @@
animations {
enabled = true
- bezier = wind, 0.05, 0.9, 0.1, 1.05
- bezier = winIn, 0.1, 1.1, 0.1, 1.1
- bezier = winOut, 0.3, -0.3, 0, 1
+ bezier = wind, 0.05, 0.9, 0.1, 1.00
+ bezier = winIn, 0.1, 1.0, 0.1, 1.0
+ bezier = winOut, 0.3, 0.0, 0, 1
bezier = liner, 1, 1, 1, 1
animation = windows, 1, 6, wind, slide
animation = windowsIn, 1, 6, winIn, slide
diff --git a/config/hypr/animations/ML4W - high.lua b/config/hypr/animations/ML4W - high.lua
new file mode 100644
index 00000000..8b379167
--- /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.00 } } })
+hl.curve("winIn", { type = "bezier", points = { { 0.1, 1.0 }, { 0.1, 1.0 } } })
+hl.curve("winOut", { type = "bezier", points = { { 0.3, 0.0 }, { 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.conf b/config/hypr/animations/ML4W - moving.conf
index deb6ad32..fda1e376 100644
--- a/config/hypr/animations/ML4W - moving.conf
+++ b/config/hypr/animations/ML4W - moving.conf
@@ -6,9 +6,9 @@
animations {
enabled = true
- bezier = overshot, 0.05, 0.9, 0.1, 1.05
+ bezier = overshot, 0.05, 0.9, 0.1, 1.00
bezier = smoothOut, 0.5, 0, 0.99, 0.99
- bezier = smoothIn, 0.5, -0.5, 0.68, 1.5
+ bezier = smoothIn, 0.5, 0.0, 0.68, 1.0
animation = windows, 1, 5, overshot, slide
animation = windowsOut, 1, 3, smoothOut
animation = windowsIn, 1, 3, smoothOut
diff --git a/config/hypr/animations/ML4W - moving.lua b/config/hypr/animations/ML4W - moving.lua
new file mode 100644
index 00000000..e00b6328
--- /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.00 } } })
+hl.curve("smoothOut", { type = "bezier", points = { { 0.5, 0 }, { 0.99, 0.99 } } })
+hl.curve("smoothIn", { type = "bezier", points = { { 0.5, 0.0 }, { 0.68, 1.0 } } })
+
+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.conf b/config/hypr/animations/ML4W - standard.conf
index 7a18c604..57844bd8 100644
--- a/config/hypr/animations/ML4W - standard.conf
+++ b/config/hypr/animations/ML4W - standard.conf
@@ -5,7 +5,7 @@
animations {
enabled = true
- bezier = myBezier, 0.05, 0.9, 0.1, 1.05
+ bezier = myBezier, 0.05, 0.9, 0.1, 1.00
animation = windows, 1, 7, myBezier
animation = windowsOut, 1, 7, default, popin 80%
animation = border, 1, 10, default
diff --git a/config/hypr/animations/ML4W - standard.lua b/config/hypr/animations/ML4W - standard.lua
new file mode 100644
index 00000000..acff701b
--- /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.00 } } })
+
+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.conf b/config/hypr/animations/Mahaveer - me-1.conf
index 8db554b0..39b16e70 100644
--- a/config/hypr/animations/Mahaveer - me-1.conf
+++ b/config/hypr/animations/Mahaveer - me-1.conf
@@ -6,16 +6,16 @@
animations {
enabled = true
# Animation curves
- bezier = wind, 0.05, 0.9, 0.1, 1.05
- bezier = winIn, 0.1, 1.1, 0.1, 1.1
- bezier = winOut, 0.3, -0.3, 0, 1
+ bezier = wind, 0.05, 0.9, 0.1, 1.00
+ bezier = winIn, 0.1, 1.0, 0.1, 1.0
+ bezier = winOut, 0.3, 0.0, 0, 1
bezier = liner, 1, 1, 1, 1
# bezier = linear, 0, 0, 1, 1
bezier = md3_standard, 0.2, 0, 0, 1
bezier = md3_decel, 0.05, 0.7, 0.1, 1
bezier = md3_accel, 0.3, 0, 0.8, 0.15
- bezier = overshot, 0.05, 0.9, 0.1, 1.1
- bezier = crazyshot, 0.1, 1.5, 0.76, 0.92
+ bezier = overshot, 0.05, 0.9, 0.1, 1.0
+ bezier = crazyshot, 0.1, 1.0, 0.76, 0.92
bezier = hyprnostretch, 0.05, 0.9, 0.1, 1.0
bezier = menu_decel, 0.1, 1, 0, 1
bezier = menu_accel, 0.38, 0.04, 1, 0.07
@@ -23,7 +23,8 @@ animations {
bezier = easeOutCirc, 0, 0.55, 0.45, 1
bezier = easeOutExpo, 0.16, 1, 0.3, 1
bezier = softAcDecel, 0.26, 0.26, 0.15, 1
- bezier = md2, 0.4, 0, 0.2, 1 # use with .2s duration
+ bezier = md1, 0.4, 0, 0.2, 1 # use with .2s duration
+ bezier = md3_decel, 0.05, 0.7, 0.1, 1
# Animation configs
# animation = windows, 1, 3, md3_decel, popin 60%
diff --git a/config/hypr/animations/Mahaveer - me-1.lua b/config/hypr/animations/Mahaveer - me-1.lua
new file mode 100644
index 00000000..d916e1ce
--- /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.00 } } })
+hl.curve("winIn", { type = "bezier", points = { { 0.1, 1.0 }, { 0.1, 1.0 } } })
+hl.curve("winOut", { type = "bezier", points = { { 0.3, 0.0 }, { 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.0 } } })
+hl.curve("crazyshot", { type = "bezier", points = { { 0.1, 1.0 }, { 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.conf b/config/hypr/animations/Mahaveer - me-2.conf
index 3d9b35ae..439afafa 100644
--- a/config/hypr/animations/Mahaveer - me-2.conf
+++ b/config/hypr/animations/Mahaveer - me-2.conf
@@ -7,13 +7,13 @@
animations {
enabled = yes
- bezier = wind, 0.05, 0.9, 0.1, 1.05
- bezier = winIn, 0.1, 1.1, 0.1, 1.1
- bezier = winOut, 0.3, -0.3, 0, 1
+ bezier = wind, 0.05, 0.9, 0.1, 1.00
+ bezier = winIn, 0.1, 1.0, 0.1, 1.0
+ bezier = winOut, 0.3, 0.0, 0, 1
bezier = liner, 1, 1, 1, 1
- bezier = overshot, 0.05, 0.9, 0.1, 1.05
+ bezier = overshot, 0.05, 0.9, 0.1, 1.00
bezier = smoothOut, 0.5, 0, 0.99, 0.99
- bezier = smoothIn, 0.5, -0.5, 0.68, 1.5
+ bezier = smoothIn, 0.5, 0.0, 0.68, 1.0
animation = windows, 1, 6, wind, slide
animation = windowsIn, 1, 5, winIn, slide
@@ -27,4 +27,4 @@ animations {
# animations for -git or version >0.42.0
animation = workspacesIn, 1, 5, winIn, slide
animation = workspacesOut, 1, 5, winOut, slide
-} \ No newline at end of file
+}
diff --git a/config/hypr/animations/Mahaveer - me-2.lua b/config/hypr/animations/Mahaveer - me-2.lua
new file mode 100644
index 00000000..b3d55a75
--- /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.00 } } })
+hl.curve("winIn", { type = "bezier", points = { { 0.1, 1.0 }, { 0.1, 1.0 } } })
+hl.curve("winOut", { type = "bezier", points = { { 0.3, 0.0 }, { 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.00 } } })
+hl.curve("smoothOut", { type = "bezier", points = { { 0.5, 0 }, { 0.99, 0.99 } } })
+hl.curve("smoothIn", { type = "bezier", points = { { 0.5, 0.0 }, { 0.68, 1.0 } } })
+
+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/animations/amitpadhan.conf b/config/hypr/animations/amitpadhan.conf
new file mode 100644
index 00000000..1111e764
--- /dev/null
+++ b/config/hypr/animations/amitpadhan.conf
@@ -0,0 +1,33 @@
+# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
+# Instpired by amitpadhan525
+# https://github.com/amitpadhan525
+# name "amitpadhan"
+
+animations {
+ enabled = yes
+ # Define your custom Bezier curves
+ # Syntax: bezier = name, x1, y1, x2, y2
+ bezier = myBezier, 0.05, 0.9, 0.1, 1.0
+
+ # Define your animations
+ # Syntax: animation = name, enable, speed, curve, [style]
+ animation = windows, 1, 5, myBezier
+ animation = windowsIn, 1, 5, myBezier
+ animation = windowsOut, 1, 5, myBezier
+ animation = windowsMove, 1, 5, myBezier
+ animation = layers, 1, 5, myBezier
+ animation = layersIn, 1, 5, myBezier
+ animation = layersOut, 1, 5, myBezier
+ animation = border, 1, 10, default
+ animation = borderangle, 1, 8, default
+ animation = fade, 1, 5, default
+ animation = fadeLayersIn, 1, 5, myBezier
+ animation = fadeLayersOut, 1, 5, myBezier
+ animation = workspaces, 1, 5, myBezier, slidefade 20%
+ animation = workspacesIn, 1, 5, myBezier, slide
+ animation = workspacesOut, 1, 5, myBezier, slide
+ animation = specialWorkspace, 1, 5, myBezier, slidevert
+
+}
+
+
diff --git a/config/hypr/animations/amitpadhan.lua b/config/hypr/animations/amitpadhan.lua
new file mode 100644
index 00000000..3434e5ea
--- /dev/null
+++ b/config/hypr/animations/amitpadhan.lua
@@ -0,0 +1,28 @@
+-- 💫 https://github.com/LinuxBeginnings 💫
+-- Inspired by amitpadhan525
+-- https://github.com/amitpadhan525
+
+hl.config({
+ animations = {
+ enabled = true,
+ },
+})
+
+hl.curve("myBezier", { type = "bezier", points = { { 0.05, 0.9 }, { 0.1, 1.0 } } })
+
+hl.animation({ leaf = "windows", enabled = true, speed = 5, bezier = "myBezier" })
+hl.animation({ leaf = "windowsIn", enabled = true, speed = 5, bezier = "myBezier" })
+hl.animation({ leaf = "windowsOut", enabled = true, speed = 5, bezier = "myBezier" })
+hl.animation({ leaf = "windowsMove", enabled = true, speed = 5, bezier = "myBezier" })
+hl.animation({ leaf = "layers", enabled = true, speed = 5, bezier = "myBezier" })
+hl.animation({ leaf = "layersIn", enabled = true, speed = 5, bezier = "myBezier" })
+hl.animation({ leaf = "layersOut", enabled = true, speed = 5, bezier = "myBezier" })
+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 = 5, bezier = "default" })
+hl.animation({ leaf = "fadeLayersIn", enabled = true, speed = 5, bezier = "myBezier" })
+hl.animation({ leaf = "fadeLayersOut", enabled = true, speed = 5, bezier = "myBezier" })
+hl.animation({ leaf = "workspaces", enabled = true, speed = 5, bezier = "myBezier", style = "slidefade 20%" })
+hl.animation({ leaf = "workspacesIn", enabled = true, speed = 5, bezier = "myBezier", style = "slide" })
+hl.animation({ leaf = "workspacesOut", enabled = true, speed = 5, bezier = "myBezier", style = "slide" })
+hl.animation({ leaf = "specialWorkspace", enabled = true, speed = 5, bezier = "myBezier", style = "slidevert" })
diff --git a/config/hypr/configs/ENVariables.conf b/config/hypr/configs/ENVariables.conf
index 70f6350c..1148384a 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,*
@@ -34,7 +34,9 @@ env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
env = QT_QPA_PLATFORMTHEME,qt6ct
### 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
@@ -46,8 +48,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
@@ -76,7 +80,7 @@ env = GSK_RENDERER,ngl
### 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 d25b4335..f65fb401 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, T, File manager, exec, $files
+bindd = $mainMod, Return, Open terminal, exec, $scriptsDir/LaunchTerminal.sh "$term"
+bindd = $mainMod, T, 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
@@ -46,8 +46,13 @@ bindd = $mainMod SHIFT, B, Set static Rainbow Border, exec, $UserScripts/Rainbow
bindd = $mainMod SHIFT, H, Toggle Mute/Unmute for Active-Window, exec, $scriptsDir/Toggle-Active-Window-Audio.sh
bindd = ALT SHIFT, S, Hyprshot Screen Capture, exec, $scriptsDir/hyprshot.sh -m region -o $HOME/Pictures/Screenshots
+<<<<<<< HEAD
bindd = $mainMod ,F , Fullscreen, fullscreen
bindd = $mainMod SHIFT, F, Maximize window, fullscreen, 1
+=======
+bindd = $mainMod SHIFT, F, Fullscreen, fullscreen
+bindd = $mainMod, F, Maximize window, fullscreen, 1
+>>>>>>> upstream
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 +72,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 +102,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 +113,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 +127,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 +204,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 0d6be21e..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,6 +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 = rog-control-center
exec-once = ags
exec-once = qs
diff --git a/config/hypr/configs/SystemSettings.conf b/config/hypr/configs/SystemSettings.conf
index 5f5243d4..40389096 100644
--- a/config/hypr/configs/SystemSettings.conf
+++ b/config/hypr/configs/SystemSettings.conf
@@ -117,7 +117,7 @@ misc {
disable_splash_rendering = true
force_default_wallpaper = false
# vfr = true # Not supported past v0.54.3
- vrr = 0 # Disabling by default causes MPV to black screen when maximixes
+ vrr = 0 # Disabling by default causes MPV to black screen when maximixes
#vrr = 0,disabled, 1, alweays on, 2, only on when fullscreen
mouse_move_enables_dpms = true
enable_swallow = off
@@ -157,7 +157,7 @@ render {
cursor {
sync_gsettings_theme = true
- no_hardware_cursors = 1 # 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/hyprlock-1080p.conf b/config/hypr/hyprlock-1080p.conf
index f438e135..b0a0279c 100644
--- a/config/hypr/hyprlock-1080p.conf
+++ b/config/hypr/hyprlock-1080p.conf
@@ -1,5 +1,5 @@
# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
-# Hyprlock config for < 1080p monitor resolutions
+# Hyprlock config for < 1080p monitor resolutions
# Original config submitted by https://github.com/SherLock707
# Sourcing colors generated by wallust
@@ -17,7 +17,7 @@ background {
#path = screenshot # screenshot of your desktop
#path = $HOME/.config/hypr/wallpaper_effects/.wallpaper_modified # by wallpaper effects
path = $HOME/.config/hypr/wallpaper_effects/.wallpaper_current # current wallpaper
-
+
color = rgb(0,0,0) # color will be rendered initially until path is available
# all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
@@ -36,7 +36,7 @@ label {
monitor =
text = cmd[update:18000000] echo "<b> "$(date +'%A, %-d %B')" </b>"
color = $color13
- font_size = 48
+ font_size = 48
font_family = Victor Mono Bold Italic
position = 0, -60
halign = center
@@ -51,7 +51,7 @@ label {
#color = rgba(255, 185, 0, .8)
color = $color8
font_size = 130
- font_family = JetBrainsMono Nerd Font ExtraBold
+ font_family = JetBrainsMono Nerd Font ExtraBold
position = 0, -250
halign = center
valign = top
diff --git a/config/hypr/hyprlock.conf b/config/hypr/hyprlock.conf
index a0020875..8c357d90 100644
--- a/config/hypr/hyprlock.conf
+++ b/config/hypr/hyprlock.conf
@@ -1,5 +1,5 @@
# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ #
-# Hyprlock config for => 2k monitor resolutions
+# Hyprlock config for => 2k monitor resolutions
# Original config submitted by https://github.com/SherLock707
# Sourcing colors generated by wallust
@@ -17,7 +17,7 @@ background {
#path = screenshot # screenshot of your desktop
#path = $HOME/.config/hypr/wallpaper_effects/.wallpaper_modified # by wallpaper effects
path = $HOME/.config/hypr/wallpaper_effects/.wallpaper_current # current wallpaper
-
+
color = rgb(0,0,0) # color will be rendered initially until path is available
# all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
@@ -51,7 +51,7 @@ label {
#color = rgba(255, 185, 0, .8)
color = $color8
font_size = 173
- font_family = JetBrainsMono Nerd Font ExtraBold
+ font_family = JetBrainsMono Nerd Font ExtraBold
position = 0, -133
halign = center
valign = top
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..08415dab 100755
--- a/config/hypr/scripts/KeyHints.sh
+++ b/config/hypr/scripts/KeyHints.sh
@@ -61,8 +61,8 @@ GDK_BACKEND=$BACKEND yad \
"CTRL ALT L" "screen lock" "(hyprlock)" \
"CTRL ALT Del" "Hyprland Exit" "(NOTE: Hyprland Will exit immediately)" \
" SHIFT F" "Fullscreen" "Toggles to full screen" \
- " CTL F" "Fake Fullscreen" "Toggles to fake full screen" \
- " ALT L" "Toggle Dwindle|Floating|Monocle|Master layouts" "Hyprland Layouts" \
+ " F" "Fake Fullscreen" "Toggles to fake full screen" \
+ " 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 1b043705..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() {
diff --git a/config/hypr/scripts/RefreshNoWaybar.sh b/config/hypr/scripts/RefreshNoWaybar.sh
index e92780b1..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() {
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