diff options
| -rw-r--r-- | CHANGELOG.md | 59 | ||||
| -rw-r--r-- | README.md | 16 | ||||
| -rwxr-xr-x | archive/update-dots.sh (renamed from update-dots.sh) | 0 | ||||
| -rwxr-xr-x | assets/waybar-weather.gz | bin | 0 -> 4187086 bytes | |||
| -rw-r--r-- | config/fastfetch/config-compact-legacy.jsonc | 86 | ||||
| -rw-r--r-- | config/fastfetch/config-compact.jsonc | 94 | ||||
| -rw-r--r-- | config/fastfetch/config.jsonc | 255 | ||||
| -rw-r--r-- | config/fastfetch/config.legacy.jsonc | 132 | ||||
| -rw-r--r-- | config/hypr/UserConfigs/WindowRules.conf | 1 | ||||
| -rwxr-xr-x | config/hypr/UserScripts/RainbowBorders-low-cpu.sh | 231 | ||||
| -rw-r--r-- | config/hypr/configs/ENVariables.conf | 2 | ||||
| -rw-r--r-- | config/hypr/configs/Keybinds.conf | 4 | ||||
| -rw-r--r-- | config/hypr/configs/Startup_Apps.conf | 1 | ||||
| -rw-r--r-- | config/hypr/configs/WindowRules-config-v3.conf | 272 | ||||
| -rw-r--r-- | config/hypr/configs/WindowRules.conf | 255 | ||||
| -rw-r--r-- | config/hypr/monitors.conf | 2 | ||||
| -rwxr-xr-x | config/hypr/scripts/Kitty_themes.sh | 61 | ||||
| -rwxr-xr-x | config/hypr/scripts/Kool_Quick_Settings.sh | 2 | ||||
| -rwxr-xr-x | config/hypr/scripts/PortalHyprlandUbuntu2604.sh | 15 | ||||
| -rwxr-xr-x | config/hypr/scripts/Refresh.sh | 3 | ||||
| -rwxr-xr-x | config/hypr/scripts/Tak0-Per-Window-Switch.sh | 21 | ||||
| -rwxr-xr-x | config/hypr/scripts/Toggle-Active-Window-Audio.sh | 147 | ||||
| -rwxr-xr-x | config/hypr/scripts/Toggle-weather-waybar-units.sh | 33 | ||||
| -rwxr-xr-x | config/hypr/scripts/WallustSwww.sh | 31 | ||||
| -rwxr-xr-x | config/hypr/scripts/WaybarCava.sh | 12 | ||||
| l--------- | config/hypr/scripts/dots-tui | 1 | ||||
| -rwxr-xr-x | config/hypr/scripts/dots-tui-ubuntu-2404 | bin | 0 -> 17736736 bytes | |||
| -rwxr-xr-x | config/hypr/scripts/hyprshot.sh | 317 | ||||
| -rwxr-xr-x | config/hypr/scripts/install-uv.sh | 2 | ||||
| -rw-r--r-- | config/hypr/v2.3.21 (renamed from config/hypr/v2.3.20) | 0 | ||||
| -rw-r--r-- | config/hypr/wallpaper_effects/.wallpaper_current | bin | 1598923 -> 6708144 bytes | |||
| -rw-r--r-- | config/kitty/kitty.conf | 5 | ||||
| -rw-r--r-- | config/rofi/00-terminal.rasi | 8 | ||||
| -rw-r--r-- | config/rofi/config.rasi | 3 | ||||
| -rw-r--r-- | config/wallust/templates/colors-waybar.css | 2 | ||||
| -rw-r--r-- | config/wallust/wallust-kitty.toml | 11 | ||||
| -rw-r--r-- | config/wallust/wallust.toml | 4 | ||||
| -rw-r--r-- | config/waybar-weather/cityname.txt | 13 | ||||
| -rw-r--r-- | config/waybar-weather/config.toml | 176 | ||||
| -rw-r--r-- | config/waybar-weather/geolocation.txt | 13 | ||||
| -rw-r--r-- | config/waybar/ModulesCustom | 12 | ||||
| l--------- | config/waybar/config | 2 | ||||
| -rw-r--r-- | config/waybar/configs/BOT-&-Left-SouthWest (renamed from config/waybar/configs/[BOT & Left] SouthWest) | 2 | ||||
| -rw-r--r-- | config/waybar/configs/BOT-&-Right-SouthEast (renamed from config/waybar/configs/[BOT & Right] SouthEast) | 2 | ||||
| -rw-r--r-- | config/waybar/configs/BOT-Camellia (renamed from config/waybar/configs/[BOT] Camellia) | 0 | ||||
| -rw-r--r-- | config/waybar/configs/BOT-Chrysanthemum (renamed from config/waybar/configs/[BOT] Chrysanthemum) | 0 | ||||
| -rw-r--r-- | config/waybar/configs/BOT-Default (renamed from config/waybar/configs/[BOT] Default) | 2 | ||||
| -rw-r--r-- | config/waybar/configs/BOT-Default-Laptop (renamed from config/waybar/configs/[BOT] Default Laptop) | 2 | ||||
| -rw-r--r-- | config/waybar/configs/BOT-Gardenia (renamed from config/waybar/configs/[BOT] Gardenia) | 0 | ||||
| -rw-r--r-- | config/waybar/configs/BOT-Peony (renamed from config/waybar/configs/[BOT] Peony) | 0 | ||||
| -rw-r--r-- | config/waybar/configs/BOT-Simple (renamed from config/waybar/configs/[BOT] Simple) | 0 | ||||
| -rw-r--r-- | config/waybar/configs/BOT-Sleek (renamed from config/waybar/configs/[BOT] Sleek) | 0 | ||||
| -rw-r--r-- | config/waybar/configs/LEFT-WestWing (renamed from config/waybar/configs/[LEFT] WestWing) | 0 | ||||
| -rw-r--r-- | config/waybar/configs/LEFT-WestWing-v2 (renamed from config/waybar/configs/[LEFT] WestWing v2) | 0 | ||||
| -rw-r--r-- | config/waybar/configs/RIGHT-EastWing (renamed from config/waybar/configs/[RIGHT] EastWing) | 0 | ||||
| -rw-r--r-- | config/waybar/configs/RIGHT-EastWing-v2 (renamed from config/waybar/configs/[RIGHT] EastWing v2) | 0 | ||||
| -rw-r--r-- | config/waybar/configs/TOP-&-BOT-SummitSplit (renamed from config/waybar/configs/[TOP & BOT] SummitSplit) | 2 | ||||
| -rw-r--r-- | config/waybar/configs/TOP-&-BOT-SummitSplit-glass (renamed from config/waybar/configs/[TOP & BOT] SummitSplit-glass) | 2 | ||||
| -rw-r--r-- | config/waybar/configs/TOP-&-BOT-SummitSplit-v2 (renamed from config/waybar/configs/[TOP & BOT] SummitSplit v2) | 0 | ||||
| -rw-r--r-- | config/waybar/configs/TOP-&-BOT-SummitSplit-v3 | 79 | ||||
| -rw-r--r-- | config/waybar/configs/TOP-&-Left-NorthWest (renamed from config/waybar/configs/[TOP & Left] NorthWest) | 2 | ||||
| -rw-r--r-- | config/waybar/configs/TOP-&-Right-NorthEast (renamed from config/waybar/configs/[TOP & Right] NorthEast) | 2 | ||||
| -rw-r--r-- | config/waybar/configs/TOP-0-Ja-0 (renamed from config/waybar/configs/[TOP] 0-Ja-0) | 0 | ||||
| -rw-r--r-- | config/waybar/configs/TOP-Arrow (renamed from config/waybar/configs/[TOP] Arrow) | 0 | ||||
| -rw-r--r-- | config/waybar/configs/TOP-Camellia (renamed from config/waybar/configs/[TOP] Camellia) | 0 | ||||
| -rw-r--r-- | config/waybar/configs/TOP-Chrysanthemum (renamed from config/waybar/configs/[TOP] Chrysanthemum) | 0 | ||||
| -rw-r--r-- | config/waybar/configs/TOP-Default (renamed from config/waybar/configs/[TOP] Default) | 2 | ||||
| -rw-r--r-- | config/waybar/configs/TOP-Default-Laptop (renamed from config/waybar/configs/[TOP] Default Laptop) | 2 | ||||
| -rw-r--r-- | config/waybar/configs/TOP-Default-Laptop-glass (renamed from config/waybar/configs/[TOP] Default Laptop-glass) | 2 | ||||
| -rw-r--r-- | config/waybar/configs/TOP-Default-Laptop-old-v1 (renamed from config/waybar/configs/[TOP] Default Laptop (old v1)) | 2 | ||||
| -rw-r--r-- | config/waybar/configs/TOP-Default-Laptop-old-v2 (renamed from config/waybar/configs/[TOP] Default Laptop (old v2)) | 2 | ||||
| -rw-r--r-- | config/waybar/configs/TOP-Default-Laptop-old-v3 (renamed from config/waybar/configs/[TOP] Default Laptop (old v3)) | 2 | ||||
| -rw-r--r-- | config/waybar/configs/TOP-Default-Laptop-old-v4 (renamed from config/waybar/configs/[TOP] Default Laptop (old v4)) | 2 | ||||
| -rw-r--r-- | config/waybar/configs/TOP-Default-Laptop-old-v5 (renamed from config/waybar/configs/[TOP] Default Laptop (old v5)) | 2 | ||||
| -rw-r--r-- | config/waybar/configs/TOP-Default-old-v1 (renamed from config/waybar/configs/[TOP] Default (old v1)) | 2 | ||||
| -rw-r--r-- | config/waybar/configs/TOP-Default-old-v2 (renamed from config/waybar/configs/[TOP] Default (old v2)) | 2 | ||||
| -rw-r--r-- | config/waybar/configs/TOP-Default-old-v3 (renamed from config/waybar/configs/[TOP] Default (old v3)) | 2 | ||||
| -rw-r--r-- | config/waybar/configs/TOP-Default-old-v4 (renamed from config/waybar/configs/[TOP] Default (old v4)) | 2 | ||||
| -rw-r--r-- | config/waybar/configs/TOP-Everforest (renamed from config/waybar/configs/[TOP] Everforest) | 0 | ||||
| -rw-r--r-- | config/waybar/configs/TOP-Everforest-glass (renamed from config/waybar/configs/[TOP] Everforest-glass) | 0 | ||||
| -rw-r--r-- | config/waybar/configs/TOP-Gardenia (renamed from config/waybar/configs/[TOP] Gardenia) | 0 | ||||
| -rw-r--r-- | config/waybar/configs/TOP-Minimal-Long (renamed from config/waybar/configs/[TOP] Minimal - Long) | 0 | ||||
| -rw-r--r-- | config/waybar/configs/TOP-Minimal-Short (renamed from config/waybar/configs/[TOP] Minimal - Short) | 2 | ||||
| -rw-r--r-- | config/waybar/configs/TOP-Peony (renamed from config/waybar/configs/[TOP] Peony) | 0 | ||||
| -rw-r--r-- | config/waybar/configs/TOP-Simple (renamed from config/waybar/configs/[TOP] Simple) | 0 | ||||
| -rw-r--r-- | config/waybar/configs/TOP-Simpliest (renamed from config/waybar/configs/[TOP] Simpliest) | 0 | ||||
| -rw-r--r-- | config/waybar/configs/TOP-Sleek (renamed from config/waybar/configs/[TOP] Sleek) | 0 | ||||
| -rw-r--r-- | config/waybar/configs/TOP-ddubs-simple-bar | 54 | ||||
| l--------- | config/waybar/style.css | 2 | ||||
| -rw-r--r-- | config/waybar/style/0-VERTICAL-Catpuccin-Mocha.css (renamed from config/waybar/style/[0 VERTICAL] [Catpuccin] Mocha.css) | 8 | ||||
| -rw-r--r-- | config/waybar/style/0-VERTICAL-Golden-Noir.css (renamed from config/waybar/style/[0 VERTICAL] Golden Noir.css) | 8 | ||||
| -rw-r--r-- | config/waybar/style/0-VERTICAL-Oglo-Chicklets.css (renamed from config/waybar/style/[0 VERTICAL] Oglo Chicklets.css) | 8 | ||||
| -rw-r--r-- | config/waybar/style/Black-&-White-Monochrome.css (renamed from config/waybar/style/[Black & White] Monochrome.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/Catppuccin-Frappe.css (renamed from config/waybar/style/[Catppuccin] Frappe.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/Catppuccin-Latte.css (renamed from config/waybar/style/[Catppuccin] Latte.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/Catppuccin-Mocha.css (renamed from config/waybar/style/[Catppuccin] Mocha.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/Colored-Chroma-Glow.css (renamed from config/waybar/style/[Colored] Chroma Glow.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/Colored-Translucent.css (renamed from config/waybar/style/[Colored] Translucent.css) | 18 | ||||
| -rw-r--r-- | config/waybar/style/Colorful-Aurora-Blossom.css (renamed from config/waybar/style/[Colorful] Aurora Blossom.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/Colorful-Aurora.css (renamed from config/waybar/style/[Colorful] Aurora.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/Colorful-Oglo-Chicklets.css (renamed from config/waybar/style/[Colorful] Oglo Chicklets.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/Colorful-Rainbow-Spectrum.css (renamed from config/waybar/style/[Colorful] Rainbow Spectrum.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/Colorful-stolen-style.css (renamed from config/waybar/style/[Colorful] stolen-style.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/Crystal-Clear-Glass.css (renamed from config/waybar/style/Crystal Clear Glass.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/Dark-Golden-Eclipse.css (renamed from config/waybar/style/[Dark] Golden Eclipse.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/Dark-Golden-Noir.css (renamed from config/waybar/style/[Dark] Golden Noir.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/Dark-Half-Moon.css (renamed from config/waybar/style/[Dark] Half-Moon.css) | 9 | ||||
| -rw-r--r-- | config/waybar/style/Dark-Latte-Wallust-combined-v2.css (renamed from config/waybar/style/[Dark] Latte-Wallust combined v2.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/Dark-Latte-Wallust-combined.css (renamed from config/waybar/style/[Dark] Latte-Wallust combined.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/Dark-Purpl.css (renamed from config/waybar/style/[Dark] Purpl.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/Dark-Wallust-Obsidian-Edge.css (renamed from config/waybar/style/[Dark] Wallust Obsidian Edge.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/Extra-Arrow.css (renamed from config/waybar/style/[Extra] Arrow.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/Extra-Crimson.css (renamed from config/waybar/style/[Extra] Crimson.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/Extra-EverForest.css (renamed from config/waybar/style/[Extra] EverForest.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/Extra-ML4W-starter.css (renamed from config/waybar/style/[Extra] ML4W starter.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/Extra-Mauve.css (renamed from config/waybar/style/[Extra] Mauve.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/Extra-Modern-Combined-Transparent.css (renamed from config/waybar/style/[Extra] Modern-Combined - Transparent.css) | 25 | ||||
| -rw-r--r-- | config/waybar/style/Extra-Modern-Combined.css (renamed from config/waybar/style/[Extra] Modern-Combined.css) | 24 | ||||
| -rw-r--r-- | config/waybar/style/Extra-Neon-Circuit.css (renamed from config/waybar/style/[Extra] Neon Circuit.css) | 4 | ||||
| -rw-r--r-- | config/waybar/style/Extra-Prismatic-Glow.css (renamed from config/waybar/style/[Extra] Prismatic Glow.css) | 5 | ||||
| -rw-r--r-- | config/waybar/style/Extra-Rose-Pine.css (renamed from config/waybar/style/[Extra] Rose Pine.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/Extra-Simple-Pink.css (renamed from config/waybar/style/[Extra] Simple Pink.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/Light-Monochrome-Contrast.css (renamed from config/waybar/style/[Light] Monochrome Contrast.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/Light-Obsidian-Glow.css (renamed from config/waybar/style/[Light] Obsidian Glow.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/ML4W-Glass-3d.css (renamed from config/waybar/style/ML4W Glass-3d.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/ML4W-Glass.css (renamed from config/waybar/style/ML4W Glass.css) | 17 | ||||
| -rw-r--r-- | config/waybar/style/Rainbow-RGB-Bordered.css (renamed from config/waybar/style/[Rainbow] RGB Bordered.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/Retro-Simple-Style.css (renamed from config/waybar/style/[Retro] Simple Style.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/Transparent-Crystal-Clear.css (renamed from config/waybar/style/[Transparent] Crystal Clear.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/VERTICAL-Catpuccin-Mocha.css (renamed from config/waybar/style/[VERTICAL] [Catpuccin] Mocha.css) | 8 | ||||
| -rw-r--r-- | config/waybar/style/Wallust-Bordered-Chroma-Fusion-Edge.css (renamed from config/waybar/style/[Wallust Bordered] Chroma Fusion Edge.css) | 4 | ||||
| -rw-r--r-- | config/waybar/style/Wallust-Bordered-Chroma-Simple.css (renamed from config/waybar/style/[Wallust Bordered] Chroma Simple.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/Wallust-Box-type.css (renamed from config/waybar/style/[Wallust] Box type.css) | 20 | ||||
| -rw-r--r-- | config/waybar/style/Wallust-Chroma-Edge.css (renamed from config/waybar/style/[Wallust] Chroma Edge.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/Wallust-Chroma-Fusion.css (renamed from config/waybar/style/[Wallust] Chroma Fusion.css) | 4 | ||||
| -rw-r--r-- | config/waybar/style/Wallust-Chroma-Tally-V2.css (renamed from config/waybar/style/[Wallust] Chroma Tally V2.css) | 5 | ||||
| -rw-r--r-- | config/waybar/style/Wallust-Chroma-Tally.css (renamed from config/waybar/style/[Wallust] Chroma Tally.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/Wallust-Colored.css (renamed from config/waybar/style/[Wallust] Colored.css) | 5 | ||||
| -rw-r--r-- | config/waybar/style/Wallust-ML4W-modern-mixed.css (renamed from config/waybar/style/[WALLUST] ML4W-modern-mixed.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/Wallust-ML4W-modern.css (renamed from config/waybar/style/[WALLUST] ML4W-modern.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/Wallust-Simple.css (renamed from config/waybar/style/[Wallust] Simple.css) | 3 | ||||
| -rw-r--r-- | config/waybar/style/Wallust-Transparent-Crystal-Clear.css (renamed from config/waybar/style/[Wallust Transparent] Crystal Clear.css) | 3 | ||||
| -rw-r--r-- | config/waybar/wallust/colors-waybar.css | 2 | ||||
| -rwxr-xr-x | copy.sh | 250 | ||||
| -rw-r--r-- | i18n/CODE_OF_CONDUCT/CODE_OF_CONDUCT.es.md (renamed from CODE_OF_CONDUCT.es.md) | 0 | ||||
| -rw-r--r-- | i18n/CODE_OF_CONDUCT/CODE_OF_CONDUCT.fr.md | 85 | ||||
| -rw-r--r-- | i18n/COMMIT_MESSAGE_GUIDELINES/COMMIT_MESSAGE_GUIDELINES.es.md (renamed from COMMIT_MESSAGE_GUIDELINES.es.md) | 0 | ||||
| -rw-r--r-- | i18n/COMMIT_MESSAGE_GUIDELINES/COMMIT_MESSAGE_GUIDELINES.fr.md | 149 | ||||
| -rw-r--r-- | i18n/CONTRIBUTING/CONTRIBUTING.es.md (renamed from CONTRIBUTING.es.md) | 0 | ||||
| -rw-r--r-- | i18n/CONTRIBUTING/CONTRIBUTING.fr.md | 68 | ||||
| -rw-r--r-- | i18n/README/README.de.md (renamed from i18n/README.de.md) | 11 | ||||
| -rw-r--r-- | i18n/README/README.fr.md | 249 | ||||
| -rw-r--r-- | i18n/README/README.jp.md (renamed from i18n/README.jp.md) | 11 | ||||
| -rw-r--r-- | i18n/README/README.ro.md (renamed from i18n/README.ro.md) | 11 | ||||
| -rw-r--r-- | i18n/README/README.ru.md (renamed from i18n/README.ru.md) | 11 | ||||
| -rw-r--r-- | i18n/README/README.ua.md (renamed from i18n/README.ua.md) | 11 | ||||
| -rw-r--r-- | scripts/lib_apps.sh | 172 | ||||
| -rw-r--r-- | scripts/lib_copy.sh | 25 | ||||
| -rw-r--r-- | scripts/lib_prompts.sh | 34 |
159 files changed, 3247 insertions, 606 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index b277578a..4e0e347b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,64 @@ # Changelog — JAK's Hyprland Dotfiles +## v2.3.21 + +- Added script from `@ivy` and `@sl1ng` to Toggle audio on active Wundow + - `$HOME/.config/hypr/scripts/Toggle-Active-Window-Audio.sh` + - Keybind is `SUPER + SHIFT + H` (hush) + - Added check for `pactl` otherwise keybind fails silently +- Added check for ubunutu v26.04 in startup + - For as of yet unknown reason waybar won't startup without this + ``` + exec-once = /usr/libexec/xdg-desktop-portal-hyprland & + exec-once = /usr/libexec/xdg-desktop-portal & + exec-once = waybar + ``` +- Updated `waybar-weather` + - Created default files in `.config/waybar-weather` + - You can manually override settings or providers + - The defaults should work for most users + - Added question during install to set `metric` or `imperial` Temp units + - Added Menu item is Quick Settings to toggle units + - Note: After changing units click on the weather widget to update units +- Updated look of `fastfetch` compact config file +- Fixed no tooltips when `waybar cava` running + - Thank you Max Gangel for the fix! +- Added check for `rsync` in `copy.sh` +- Fixed two more style sheets with hardcoded colors that broke with global theme +- Fixed Window Rules for `zapzap` +- Added French Translations + - Moved docs to proper i18n locations + - Thank you @Loris383v +- Fixed `waybar-cava` starting many new processes + - When you switched waybarconfigs, old processes remained + - This is especially bad with mulitple monitors + - New code kills the `waybar-cava` processes on refresh +- Fixed setting SDDM/Wallpaper/Waybar defaults on update/installs +- Added WindowRule for proton-laucher games +- Added WindowRule for CachyOS Kernel Manager +- Added WindowRule for CachyOS Hello app +- Added WindowRule for CachyOS Package Installer app +- Added `Hyprshot` screenshot tool set to region capture + - `ALT + S` Saves to clipboard and `~/Pictures/Screenshots/` + - Not all keyboards have `PrtScr` button + - `hyprshot.sh` is fast, simple, no system bell sound +- Fixed start CLI apps from rofi like `htop`, `btop` being started with `xterm` + - This made the apps run in light mode with tiny fonts + - Now they are started with `kitty` +- Added alternative `RainbowBorders-low-cpu.sh` + - Based on code from `DemiGoD` + - I added variables for finer control + - Some tweaks to lower CPU further + - Added `-h/--help` + - Added `--run-once` to set RainbowBorders but no animation +- Added 'TOP-ddubs-simple-bar' +- Fixed CSS formatting in `ML4W-Glass.css` +- Added keybind for "Static Rainbow border" + - Run `RainbowBorders-low-cpu --exec-once` to set the rainbow border w/o animation + - Updated `Picture-in-Picture` rule + - Works properly with `Brave` and other chromium browsers + - Thanks to `Goodborn` for the fix + ## v2.3.20 - Bugfix release @@ -1,8 +1,9 @@ -[](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/i18n/README.jp.md) -[](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/i18n/README.ro.md) -[](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/i18n/README.ru.md) -[](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/i18n/README.ua.md) -[](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/i18n/README.de.md) +[](./i18n/README/README.jp.md) +[](./i18n/README/README.ro.md) +[](./i18n/README/README.ru.md) +[](./i18n/README/README.ua.md) +[](./i18n/README/README.de.md) +[](./i18n/README/README.fr.md) <h3 align="center"> <img align="center" width="80%" src=https://github.com/user-attachments/assets/bc18bd4d-944b-4d5f-a119-7578fa38f9b4 /> @@ -225,6 +226,9 @@ chmod +x upgrade.sh - Subscribe to my Youtube Channel [YouTube](https://www.youtube.com/@Ja.KooLit) +## 🫰 Thank you for the stars 🩷 ### Document translations -- Spanish: [Código de Conducta](./CODE_OF_CONDUCT.es.md) · [Guía de mensajes de commit](./COMMIT_MESSAGE_GUIDELINES.es.md) · [Guía de contribución](./CONTRIBUTING.es.md) +- Spanish: [Código de Conducta](./i18n/CODE_OF_CONDUCT/CODE_OF_CONDUCT.es.md) · [Guía de mensajes de commit](./i18n/COMMIT_MESSAGE_GUIDELINES/COMMIT_MESSAGE_GUIDELINES.es.md) · [Guía de contribución](./i18n/CONTRIBUTING/CONTRIBUTING.es.md) + +- French: [Code de Conduite](./i18n/CODE_OF_CONDUCT/CODE_OF_CONDUCT.fr.md) · [Directives pour les messages de commit](./i18n/COMMIT_MESSAGE_GUIDELINES/COMMIT_MESSAGE_GUIDELINES.fr.md) · [Guide de contribution](./i18n/CONTRIBUTING/CONTRIBUTING.fr.md) diff --git a/update-dots.sh b/archive/update-dots.sh index 84bd7611..84bd7611 100755 --- a/update-dots.sh +++ b/archive/update-dots.sh diff --git a/assets/waybar-weather.gz b/assets/waybar-weather.gz Binary files differnew file mode 100755 index 00000000..693fd90a --- /dev/null +++ b/assets/waybar-weather.gz diff --git a/config/fastfetch/config-compact-legacy.jsonc b/config/fastfetch/config-compact-legacy.jsonc new file mode 100644 index 00000000..156cb6df --- /dev/null +++ b/config/fastfetch/config-compact-legacy.jsonc @@ -0,0 +1,86 @@ +/* ----------- 💫 https://github.com/LinuxBeginnings 💫 -------- */ + +{ + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": { + "padding": { + "top": 2 + }, + "type": "small" + }, + "display": { + "separator": " -> " + }, + "modules": [ + "break", + { + "type": "title", + "keyWidth": 10, + "format": " {6}{7}{8}" + }, + { + "type": "custom", + "format": " ─────────────────────────── " + }, + { + "type": "kernel", + "key": " ", + "keyColor": "yellow" + }, + { + "keyColor": "blue", + "key": " ", + "text": "echo Jakoolit: v${DOTS_VERSION}", + "type": "command" + }, + { + "type": "wm", + "key": " ", + "keyColor": "magenta" + }, + { + "type": "shell", + "key": " ", + "keyColor": "yellow" + }, + { + "type": "terminal", + "key": " ", + "keyColor": "blue" + }, + /* + { + "type": "packages", + "key": " ", + "keyColor": "yellow" + }, + */ + { + "type": "memory", + "key": " ", + "keyColor": "magenta", + // format: used / total + "format": "{1} / {2}" + }, + { + "type": "uptime", + "key": " ", + "keyColor": "green" + }, + { + "type": "command", + "key": " ", + "keyColor": "magenta", + "text": "echo $(( ($(date +%s) - $(stat -c %W /)) / 86400 )) days" + }, + { + "type": "custom", + "format": " ─────────────────────────── " + }, + { + "type": "custom", + "format": " \u001b[31m \u001b[32m \u001b[33m \u001b[34m \u001b[35m \u001b[36m \u001b[37m \u001b[90m " + }, + "break" + ] +} diff --git a/config/fastfetch/config-compact.jsonc b/config/fastfetch/config-compact.jsonc index 156cb6df..d88e1d32 100644 --- a/config/fastfetch/config-compact.jsonc +++ b/config/fastfetch/config-compact.jsonc @@ -1,86 +1,66 @@ -/* ----------- 💫 https://github.com/LinuxBeginnings 💫 -------- */ - +/** + * ┏┓┏┓┏┓┏┳┓┏┓┏┓┏┳┓┏┓┓┏ + * ┣ ┣┫┗┓ ┃ ┣ ┣ ┃ ┃ ┣┫ + * ┻ ┛┗┗┛ ┻ ┻ ┗┛ ┻ ┗┛┛┗ + * + */ { "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", "logo": { + // "type": "auto", + // x."source": "~/.config/fastfetch/logo.png", + // "height": 10, "padding": { - "top": 2 + "top": 3, + "right": 2 }, "type": "small" }, "display": { - "separator": " -> " + "separator": " " }, "modules": [ "break", + "break", + "break", + "break", { - "type": "title", - "keyWidth": 10, - "format": " {6}{7}{8}" + "type": "os", + "key": " ", + "keyColor": "31" }, { - "type": "custom", - "format": " ─────────────────────────── " - }, - { "type": "kernel", - "key": " ", - "keyColor": "yellow" - }, - { - "keyColor": "blue", - "key": " ", - "text": "echo Jakoolit: v${DOTS_VERSION}", - "type": "command" - }, - { - "type": "wm", - "key": " ", - "keyColor": "magenta" + "key": " ", + "keyColor": "32" }, { "type": "shell", - "key": " ", - "keyColor": "yellow" + "key": " ", + "keyColor": "34" }, { "type": "terminal", - "key": " ", - "keyColor": "blue" - }, - /* - { - "type": "packages", - "key": " ", - "keyColor": "yellow" + "key": " ", + "keyColor": "35" }, - */ { - "type": "memory", - "key": " ", - "keyColor": "magenta", - // format: used / total - "format": "{1} / {2}" + "type": "wm", + "key": " ", + "keyColor": "36" }, { "type": "uptime", - "key": " ", - "keyColor": "green" - }, - { - "type": "command", - "key": " ", - "keyColor": "magenta", - "text": "echo $(( ($(date +%s) - $(stat -c %W /)) / 86400 )) days" - }, - { - "type": "custom", - "format": " ─────────────────────────── " - }, - { - "type": "custom", - "format": " \u001b[31m \u001b[32m \u001b[33m \u001b[34m \u001b[35m \u001b[36m \u001b[37m \u001b[90m " + "key": " ", + "keyColor": "31" }, - "break" + { + "type": "command", + "key": " ", + "keyColor": "36", + "shell": "/bin/bash", + "text": "echo \"Jak's dotfiles: v$DOTS_VERSION\"" + }, + "break" ] } diff --git a/config/fastfetch/config.jsonc b/config/fastfetch/config.jsonc index a3fa54e5..d183de3c 100644 --- a/config/fastfetch/config.jsonc +++ b/config/fastfetch/config.jsonc @@ -1,132 +1,131 @@ -/* ----------- 💫 https://github.com/LinuxBeginnings 💫 -------- */ - { -"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", -"logo": { -"padding": { -"top": 1 -} -}, -"display": { -"separator": " " -}, -"modules": [ - "break", - { - "type": "os", - "key": " DISTRO", - "keyColor": "yellow" - }, - - { - "type": "kernel", - "key": "│ ├", - "keyColor": "yellow" - }, - { - "type": "command", - "key": "│ ├", - "text": "echo LinuxBeginnings Version: ${DOTS_VERSION}", - "keyColor": "yellow" - }, - { - "type": "packages", - "key": "│ ├", - "keyColor": "yellow" - }, - { - "type": "shell", - "key": "│ └", - "keyColor": "yellow" - }, - { - "type": "wm", - "key": " DE/WM", - "keyColor": "blue" - }, - { - "type": "wmtheme", - "key": "│ ├", - "keyColor": "blue" - }, - { - "type": "icons", - "key": "│ ├", - "keyColor": "blue" - }, - { - "type": "cursor", - "key": "│ ├", - "keyColor": "blue" - }, - { - "type": "terminalfont", - "key": "│ ├", - "keyColor": "blue" - }, - { - "type": "terminal", - "key": "│ └", - "keyColor": "blue" - }, - { - "type": "host", - "key": " SYSTEM", - "keyColor": "green" - }, - { - "type": "cpu", - "key": "│ ├", - "keyColor": "green" - }, - { - "type": "gpu", - "key": "│ ├", - "format": "{2}", - "keyColor": "green" - }, - { - "type": "display", - "key": "│ ├", - "keyColor": "green", - "compactType": "original-with-refresh-rate" - }, - { - "type": "memory", - "key": "│ ├", - "keyColor": "green" - }, - { - "type": "swap", - "key": "│ ├", - "keyColor": "green" - }, - { - "type": "uptime", - "key": "│ ├", - "keyColor": "green" - }, - { - "type": "display", - "key": "│ └", - "keyColor": "green" - }, - { - "type": "sound", - "key": " AUDIO", - "format": "{2}", - "keyColor": "magenta" - }, - { - "type": "player", - "key": "│ ├", - "keyColor": "magenta" - }, - { - "type": "media", - "key": "│ └", - "keyColor": "magenta" + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", + "logo": { + // "type": "kitty", + // "source": "~/.config/fastfetch/ubuntu.png", + // "height": 10, + // "width": 20, + "type": "small", + "padding": { + "top": 3, + "left": 1 + } }, - "break" + "modules": [ + "break", + { + "type": "custom", + "format": "\u001b[90m┌──────────────────────Hardware──────────────────────┐" + }, + { + "type": "host", + "key": " PC", + "keyColor": "green" + }, + { + "type": "cpu", + "key": "│ ├", + "keyColor": "green" + }, + { + "type": "gpu", + "key": "│ ├", + "keyColor": "green" + }, + { + "type": "memory", + "key": "│ ├", + "keyColor": "green" + }, + { + "type": "disk", + "key": "└ └", + "keyColor": "green" + }, + { + "type": "custom", + "format": "\u001b[90m└────────────────────────────────────────────────────┘" + }, + "break", + { + "type": "custom", + "format": "\u001b[90m┌──────────────────────Software──────────────────────┐" + }, + { + "type": "os", + "key": " OS", + "keyColor": "yellow" + }, + { + "type": "kernel", + "key": "│ ├", + "keyColor": "yellow" + }, + { + "type": "bios", + "key": "│ ├", + "keyColor": "yellow" + }, + { + "type": "packages", + "key": "│ ├", + "keyColor": "yellow" + }, + { + "type": "shell", + "key": "└ └", + "keyColor": "yellow" + }, + { + "type": "wm", + "key": " WM", + "keyColor": "blue" + }, + { + "type": "lm", + "key": "│ ├", + "keyColor": "blue" + }, + { + "type": "wmtheme", + "key": "│ ├", + "keyColor": "blue" + }, + { + "type": "terminal", + "key": "└ └", + "keyColor": "blue" + }, + { + "type": "custom", + "format": "\u001b[90m└────────────────────────────────────────────────────┘" + }, + "break", + { + "type": "custom", + "format": "\u001b[90m┌─────────────────Uptime / Age / DT──────────────────┐" + }, + { + "type": "command", + "key": " OS Age ", + "keyColor": "magenta", + "text": "birth_install=$(stat -c %W /); current=$(date +%s); time_progression=$((current - birth_install)); days_difference=$((time_progression / 86400)); echo $days_difference days" + }, + { + "type": "uptime", + "key": " Uptime ", + "keyColor": "magenta" + }, + { + "type": "command", + "key": " Dots Ver ", + "text": "echo v${DOTS_VERSION}", + "keyColor": "magenta" + }, + { + "type": "custom", + "format": "\u001b[90m└────────────────────────────────────────────────────┘" + }, + "break" ] } diff --git a/config/fastfetch/config.legacy.jsonc b/config/fastfetch/config.legacy.jsonc new file mode 100644 index 00000000..a3fa54e5 --- /dev/null +++ b/config/fastfetch/config.legacy.jsonc @@ -0,0 +1,132 @@ +/* ----------- 💫 https://github.com/LinuxBeginnings 💫 -------- */ + +{ +"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", +"logo": { +"padding": { +"top": 1 +} +}, +"display": { +"separator": " " +}, +"modules": [ + "break", + { + "type": "os", + "key": " DISTRO", + "keyColor": "yellow" + }, + + { + "type": "kernel", + "key": "│ ├", + "keyColor": "yellow" + }, + { + "type": "command", + "key": "│ ├", + "text": "echo LinuxBeginnings Version: ${DOTS_VERSION}", + "keyColor": "yellow" + }, + { + "type": "packages", + "key": "│ ├", + "keyColor": "yellow" + }, + { + "type": "shell", + "key": "│ └", + "keyColor": "yellow" + }, + { + "type": "wm", + "key": " DE/WM", + "keyColor": "blue" + }, + { + "type": "wmtheme", + "key": "│ ├", + "keyColor": "blue" + }, + { + "type": "icons", + "key": "│ ├", + "keyColor": "blue" + }, + { + "type": "cursor", + "key": "│ ├", + "keyColor": "blue" + }, + { + "type": "terminalfont", + "key": "│ ├", + "keyColor": "blue" + }, + { + "type": "terminal", + "key": "│ └", + "keyColor": "blue" + }, + { + "type": "host", + "key": " SYSTEM", + "keyColor": "green" + }, + { + "type": "cpu", + "key": "│ ├", + "keyColor": "green" + }, + { + "type": "gpu", + "key": "│ ├", + "format": "{2}", + "keyColor": "green" + }, + { + "type": "display", + "key": "│ ├", + "keyColor": "green", + "compactType": "original-with-refresh-rate" + }, + { + "type": "memory", + "key": "│ ├", + "keyColor": "green" + }, + { + "type": "swap", + "key": "│ ├", + "keyColor": "green" + }, + { + "type": "uptime", + "key": "│ ├", + "keyColor": "green" + }, + { + "type": "display", + "key": "│ └", + "keyColor": "green" + }, + { + "type": "sound", + "key": " AUDIO", + "format": "{2}", + "keyColor": "magenta" + }, + { + "type": "player", + "key": "│ ├", + "keyColor": "magenta" + }, + { + "type": "media", + "key": "│ └", + "keyColor": "magenta" + }, + "break" + ] +} diff --git a/config/hypr/UserConfigs/WindowRules.conf b/config/hypr/UserConfigs/WindowRules.conf index 460c9a2a..79fbc24e 100644 --- a/config/hypr/UserConfigs/WindowRules.conf +++ b/config/hypr/UserConfigs/WindowRules.conf @@ -4,3 +4,4 @@ # This file is used to add or overwrite window rules # This file will not be modified during dotfiles updates + diff --git a/config/hypr/UserScripts/RainbowBorders-low-cpu.sh b/config/hypr/UserScripts/RainbowBorders-low-cpu.sh new file mode 100755 index 00000000..bc0ab9ef --- /dev/null +++ b/config/hypr/UserScripts/RainbowBorders-low-cpu.sh @@ -0,0 +1,231 @@ +#!/usr/bin/env bash +# RainbowBorders-low-cpu.sh — low-overhead animated rainbow border for Hyprland +# +# Goal +# Animate Hyprland's active border with a rotating rainbow gradient while +# minimizing CPU usage on older systems by: +# - Using a modest update rate (default 1.0s) and larger angle steps +# - Avoiding subshell-heavy work inside the loop +# - Using Hyprland's command socket via socat when available +# - Quoting/validating inputs and suppressing noisy output +# - Preventing multiple concurrent instances +# - Optionally restoring the previous border value on exit +# +# Credits +# Initial source/idea by: DemiGoD +# Adaptation and optimization for low-CPU usage by: Hyprland-Dots maintainers +# +# Usage +# You can customize behavior via environment variables when launching: +# RB_INTERVAL Float seconds between updates (default: 1.0) +# RB_STEP_DEG Integer degrees per tick (default: 10) +# RB_START_DEG Integer starting angle (default: 0) +# RB_TARGET Hypr option to update (default: general:col.active_border) +# RB_COLORS Space-separated color list (default: 10-color rainbow below) +# RB_RESTORE If "1", attempt to restore previous value on exit (loop mode; default: 1) +# RB_LOCKFILE Path to a PID lock file (loop mode; default: /tmp/hypr-rainbowborders.lock) +# RB_TRANSPORT auto|socat|hyprctl (default: auto) +# - socat: send each command via Hyprland's command socket +# using socat (one short-lived connection per tick) +# - hyprctl: spawn hyprctl each tick +# - auto: prefer socat if possible, otherwise hyprctl +# 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 & +# +# Notes +# - This focuses on the active border only. Animating inactive borders too +# will increase updates and CPU usage. +# - Higher RB_INTERVAL (e.g., 1.0–2.0s) and larger RB_STEP_DEG (10–20) +# reduce per-second work substantially. + +set -u + +# Defaults (can be overridden by env vars) +RB_INTERVAL="${RB_INTERVAL:-1.0}" +RB_STEP_DEG="${RB_STEP_DEG:-10}" +RB_START_DEG="${RB_START_DEG:-0}" +RB_TARGET="${RB_TARGET:-general:col.active_border}" +RB_COLORS_DEFAULT="0xffff0000 0xffff8000 0xffffff00 0xff80ff00 0xff00ff00 0xff00ff80 0xff00ffff 0xff0080ff 0xff0000ff 0xff8000ff" +RB_COLORS="${RB_COLORS:-$RB_COLORS_DEFAULT}" +RB_RESTORE="${RB_RESTORE:-1}" +RB_LOCKFILE="${RB_LOCKFILE:-/tmp/hypr-rainbowborders.lock}" +RB_TRANSPORT="${RB_TRANSPORT:-auto}" +RB_ONCE="${RB_ONCE:-0}" + +# ---------- helpers ---------- +log() { printf '[RainbowBorders-low-cpu] %s\n' "$*" >&2; } + +die() { log "ERROR: $*"; exit 1; } + +usage() { + cat <<'EOF' +Usage: RainbowBorders-low-cpu.sh [options] + +Options: + -h, --help Show this help and exit + --once, --run-once, -1 + Apply the current gradient once and exit (no animation). + In this mode, RB_RESTORE is ignored (the color persists). + +Environment overrides: + RB_INTERVAL Seconds between updates (default: 1.0) + RB_STEP_DEG Degrees per tick (default: 10) + RB_START_DEG Starting angle (default: 0) + RB_TARGET Hypr option to update (default: general:col.active_border) + RB_COLORS Space-separated colors (default: 10-color rainbow) + RB_RESTORE 1 to restore previous value on exit (loop mode only; default: 1) + RB_LOCKFILE PID lock path (loop mode only; default: /tmp/hypr-rainbowborders.lock) + RB_TRANSPORT auto|socat|hyprctl (default: auto) + RB_ONCE 1 for one-shot mode (same as --once) + +Examples: + Animate (light CPU): + RB_INTERVAL=1.5 RB_STEP_DEG=12 ./RainbowBorders-low-cpu.sh & + + Set a static rainbow once (no animation): + ./RainbowBorders-low-cpu.sh --once +EOF +} + +is_float() { [[ "$1" =~ ^[0-9]+(\.[0-9]+)?$|^\.[0-9]+$ ]]; } + +is_int() { [[ "$1" =~ ^[0-9]+$ ]]; } + +# ---------- parse CLI flags ---------- +while (( $# )); do + case "$1" in + -h|--help) usage; exit 0 ;; + --once|--run-once|-1) RB_ONCE=1 ;; + *) log "Unknown option: $1"; usage; exit 2 ;; + esac + shift +done + +# ---------- validation ---------- +if ! is_float "$RB_INTERVAL"; then + log "WARN: RB_INTERVAL='$RB_INTERVAL' invalid; defaulting to 1.0" + RB_INTERVAL="1.0" +fi +if ! is_int "$RB_STEP_DEG"; then + log "WARN: RB_STEP_DEG='$RB_STEP_DEG' invalid; defaulting to 10" + RB_STEP_DEG="10" +fi +if ! is_int "$RB_START_DEG"; then + log "WARN: RB_START_DEG='$RB_START_DEG' invalid; defaulting to 0" + RB_START_DEG="0" +fi + +# ---------- single-instance lock (PID file) ---------- +cleanup_lock() { [[ -f "$RB_LOCKFILE" ]] && rm -f "$RB_LOCKFILE"; } + +if [[ "$RB_ONCE" != "1" ]]; then + if [[ -f "$RB_LOCKFILE" ]]; then + oldpid="$(cat "$RB_LOCKFILE" 2>/dev/null || true)" + if [[ -n "${oldpid:-}" ]] && kill -0 "$oldpid" 2>/dev/null; then + log "Another instance is running (pid=$oldpid). Exiting." + exit 0 + else + # Stale lock + rm -f "$RB_LOCKFILE" || true + fi + fi + printf '%d' "$$" >"$RB_LOCKFILE" 2>/dev/null || die "Cannot write lockfile $RB_LOCKFILE" +fi + +# ---------- transport (socat vs hyprctl) ---------- +RB_MODE="" +RB_SOCK="" + +open_transport() { + local want="$RB_TRANSPORT" + local uid; uid=$(id -u 2>/dev/null || echo 0) + local base="${XDG_RUNTIME_DIR:-/run/user/$uid}" + local sig="${HYPRLAND_INSTANCE_SIGNATURE:-}" + if [[ -n "$sig" ]]; then + RB_SOCK="$base/hypr/$sig/.socket.sock" + fi + + # Prefer socat if requested/allowed and socket is available + if [[ "$want" == "socat" || "$want" == "auto" ]]; then + if command -v socat >/dev/null 2>&1 && [[ -n "$RB_SOCK" && -S "$RB_SOCK" ]]; then + RB_MODE="socat" + return 0 + elif [[ "$want" == "socat" ]]; then + die "RB_TRANSPORT=socat requested but 'socat' or Hyprland socket is unavailable" + fi + fi + + # Fallback to hyprctl: require presence and connectivity + command -v hyprctl >/dev/null 2>&1 || die "hyprctl not found and socat transport unavailable" + if ! hyprctl monitors >/dev/null 2>&1; then + die "hyprctl cannot reach a running Hyprland instance" + fi + RB_MODE="hyprctl" + return 0 +} + +open_transport || exit 1 +log "Using transport: $RB_MODE" + +# ---------- optional restore of previous border value ---------- +PREV_VALUE="" +if [[ "$RB_RESTORE" == "1" && "$RB_ONCE" != "1" ]]; then + if command -v hyprctl >/dev/null 2>&1; then + # hyprctl getoption <opt> prints various formats; try common keys + PREV_VALUE="$(hyprctl getoption "$RB_TARGET" 2>/dev/null \ + | sed -n 's/^.*str:[[:space:]]\+//p; s/^.*string:[[:space:]]\+//p; s/^.*value:[[:space:]]\+//p' \ + | tail -n1)" + fi +fi + +restore_previous() { + if [[ "$RB_RESTORE" == "1" && -n "${PREV_VALUE:-}" ]]; then + if [[ "$RB_MODE" == "socat" ]]; then + printf 'keyword %s %s\n' "$RB_TARGET" "$PREV_VALUE" | socat - "UNIX-CONNECT:$RB_SOCK" >/dev/null 2>&1 || true + else + hyprctl keyword "$RB_TARGET" "$PREV_VALUE" >/dev/null 2>&1 || true + fi + fi +} + +on_exit() { + restore_previous + cleanup_lock +} + +# In loop mode, set traps for cleanup/restore +if [[ "$RB_ONCE" != "1" ]]; then + trap on_exit INT TERM EXIT +fi + +# ---------- main logic ---------- +angle=$(( RB_START_DEG % 360 )) +STEP=$(( RB_STEP_DEG % 360 )) +(( STEP == 0 )) && STEP=10 + +write_border() { + local a="$1" + if [[ "$RB_MODE" == "socat" ]]; then + printf 'keyword %s %s %sdeg\n' "$RB_TARGET" "$RB_COLORS" "$a" | socat - "UNIX-CONNECT:$RB_SOCK" >/dev/null 2>&1 || true + else + hyprctl keyword "$RB_TARGET" "$RB_COLORS ${a}deg" >/dev/null 2>&1 || true + fi +} + +if [[ "$RB_ONCE" == "1" ]]; then + # Single write and exit; do not restore previous (intended to persist) + write_border "$angle" || log "WARN: one-shot write failed" + exit 0 +fi + +# Prime first write (avoid waiting one interval) +write_border "$angle" || log "WARN: initial write failed" + +while :; do + # Advance angle and write; failures are non-fatal to keep CPU use minimal + angle=$(( (angle + STEP) % 360 )) + write_border "$angle" + sleep "$RB_INTERVAL" +done diff --git a/config/hypr/configs/ENVariables.conf b/config/hypr/configs/ENVariables.conf index e40773ac..585ae9f5 100644 --- a/config/hypr/configs/ENVariables.conf +++ b/config/hypr/configs/ENVariables.conf @@ -5,7 +5,7 @@ # environment-variables # Current Version of JakooLit Dotfiles: -env = DOTS_VERSION,2.3.20 +env = DOTS_VERSION,2.3.21 ### Toolkit Backend Variables ### env = GDK_BACKEND,wayland,x11,* diff --git a/config/hypr/configs/Keybinds.conf b/config/hypr/configs/Keybinds.conf index 57cc7d8d..ba0201f1 100644 --- a/config/hypr/configs/Keybinds.conf +++ b/config/hypr/configs/Keybinds.conf @@ -35,6 +35,10 @@ bindd = $mainMod ALT, L, toggle master/dwindle layout, exec, $scriptsDir/ChangeL bindd = $mainMod ALT, V, clipboard manager, exec, $scriptsDir/ClipManager.sh bindd = $mainMod CTRL, R, rofi theme selector, exec, $scriptsDir/RofiThemeSelector.sh bindd = $mainMod CTRL SHIFT, R, rofi theme selector (modified), exec, pkill rofi || true && $scriptsDir/RofiThemeSelector-modified.sh +bindd = $mainMod CTRL, K, Kitty theme selector, exec, $scriptsDir/Kitty_themes.sh +bindd = $mainMod SHIFT, B, Set static Rainbow Border, exec, $UserScripts/RainbowBorders-low-cpu.sh --run-once +bindd = $mainMod SHIFT, H, Toggle Mute/Unmute for Active-Window, exec, $scriptsDir/Toggle-Active-Window-Audio.sh +bindd = ALT SHIFT, S, Hyprshot Screen Capture, exec, $scriptsDir/hyprshot.sh -m region -o %HOME/Pictures/Screenshots bindd = $mainMod SHIFT, F, fullscreen, fullscreen bindd = $mainMod CTRL, F, maximize window, fullscreen, 1 diff --git a/config/hypr/configs/Startup_Apps.conf b/config/hypr/configs/Startup_Apps.conf index c0ca9c41..67680af4 100644 --- a/config/hypr/configs/Startup_Apps.conf +++ b/config/hypr/configs/Startup_Apps.conf @@ -24,6 +24,7 @@ exec-once = swaync #exec-once = ags #exec-once = blueman-applet #exec-once = rog-control-center +exec-once = $scriptsDir/PortalHyprlandUbuntu2604.sh exec-once = waybar exec-once = qs -c overview # Quickshell Overview exec-once = hypridle diff --git a/config/hypr/configs/WindowRules-config-v3.conf b/config/hypr/configs/WindowRules-config-v3.conf index a1fd0985..8212e9bf 100644 --- a/config/hypr/configs/WindowRules-config-v3.conf +++ b/config/hypr/configs/WindowRules-config-v3.conf @@ -17,8 +17,6 @@ # windowrule = match:tag games*, workspace 8 # windowrule = match:tag multimedia*, workspace 9 silent - - # TAGS - add apps under appropriate tag to use the same settings # browser tags windowrule = match:class ^([Ff]irefox|org.mozilla.firefox|[Ff]irefox-esr|[Ff]irefox-bin)$, tag +browser @@ -26,9 +24,9 @@ windowrule = match:class ^([Gg]oogle-chrome(-beta|-dev|-unstable)?)$, tag +brows windowrule = match:class ^(chrome-.+-Default)$, tag +browser windowrule = match:class ^([Cc]hromium)$, tag +browser windowrule = match:class ^([Mm]icrosoft-edge(-stable|-beta|-dev|-unstable))$, tag +browser -windowrule = match:class ^(Brave-browser(-beta|-dev|-unstable)?)$, tag +browser +windowrule = match:class ^([Bb]rave-browser(-beta|-dev|-unstable)?)$, tag +browser windowrule = match:class ^([Tt]horium-browser|[Cc]achy-browser)$, tag +browser -windowrule = match:class ^(zen)$, tag +browser +windowrule = match:class ^(zen-alpha|zen)$, tag +browser # notif tags windowrule = match:class ^(swaync-control-center|swaync-notification-window|swaync-client|class)$, tag +notif @@ -42,7 +40,7 @@ windowrule = match:class ^(nwg-displays|nwg-look)$, tag +KooL-Settings windowrule = match:class ^(Alacritty|kitty|kitty-dropterm)$, tag +terminal # email tags -windowrule = match:class ^([Tt]hunderbird|org.gnome.Evolution)$, tag +email +windowrule = match:class ^([Tt]hunderbird|org.mozilla.Thunderbird)$, tag +email windowrule = match:class ^(eu.betterbird.Betterbird)$, tag +email windowrule = match:class ^(org.gnome.Evolution)$, tag +email @@ -58,7 +56,7 @@ windowrule = match:class ^(com.obsproject.Studio)$, tag +screenshare # IM tags windowrule = match:class ^([Dd]iscord|[Ww]ebCord|[Vv]esktop)$, tag +im windowrule = match:class ^([Ff]erdium)$, tag +im -windowrule = match:class ^([Ww]hatsapp-for-linux)$, tag +im +windowrule = match:class ^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$, tag +im windowrule = match:class ^(org.telegram.desktop|io.github.tdesktop_x64.TDesktop)$, tag +im windowrule = match:class ^(teams-for-linux)$, tag +im windowrule = match:class ^(im.riot.Riot|Element)$, tag +im @@ -66,6 +64,7 @@ windowrule = match:class ^(im.riot.Riot|Element)$, tag +im # game tags windowrule = match:class ^(gamescope)$, tag +games windowrule = match:class ^(steam_app_\\d+)$, tag +games +windowrule = match:xdg_tag ^(proton-game)$, tag +games # gamestore tags windowrule = match:class ^([Ss]team)$, tag +gamestore @@ -107,55 +106,41 @@ windowrule = match:class ^(evince)$, tag +viewer windowrule = match:class ^(eog|org.gnome.Loupe)$, tag +viewer # Some special override rules -windowrule = match:tag multimedia_video, no_blur on -windowrule = match:tag multimedia_video, opacity 1.0 - -# POSITION -# windowrule = match:floating true, center on -windowrule = match:tag KooL_Cheat, center on -windowrule = match:class ([Tt]hunar) match:title negative:(.*[Tt]hunar.*), center on -windowrule = match:title ^(ROG Control)$, center on -windowrule = match:tag KooL-Settings, center on -windowrule = match:title ^(Keybindings)$, center on -windowrule = match:class ^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$, center on -windowrule = match:class ^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$, center on -windowrule = match:class ^([Ff]erdium)$, center on -windowrule = match:title ^(Picture-in-Picture)$, move 72% 7% - -# windowrule to avoid idle for fullscreen apps -windowrule = match:fullscreen true, idle_inhibit fullscreen +windowrule = match:tag multimedia, no_blur on +windowrule = match:tag multimedia, opacity 1.0 # FLOAT -windowrule = match:tag KooL_Cheat, float on -windowrule = match:tag wallpaper, float on -windowrule = match:tag settings, float on -windowrule = match:tag viewer, float on -windowrule = match:tag KooL-Settings, float on windowrule = match:class ([Zz]oom|onedriver|onedriver-launcher), float on -windowrule = match:class (org.gnome.Calculator) match:title (Calculator), float on windowrule = match:class ^(mpv|com.github.rafostar.Clapper)$, float on windowrule = match:class ^([Qq]alculate-gtk)$, float on -windowrule = match:class ^([Ff]erdium)$, float on -windowrule = match:title ^(Picture-in-Picture)$, float on -# windowrule - ######### float popups and dialogue ####### +# float popups and dialogue windowrule = match:title ^(Authentication Required)$, float on, center on -windowrule = match:class (codium|codium-url-handler|VSCodium) match:title negative:(.*codium.*|.*VSCodium.*), float on -windowrule = match:class ^(com.heroicgameslauncher.hgl)$ match:title negative:(Heroic Games Launcher), float on -windowrule = match:class ^([Ss]team)$ match:title negative:^([Ss]team)$, float on -windowrule = match:class ([Tt]hunar) match:title negative:(.*[Tt]hunar.*), float on - +windowrule = match:class (codium|codium-url-handler|VSCodium), match:title negative:(.*codium.*|.*VSCodium.*), float on +windowrule = match:class ^(com.heroicgameslauncher.hgl)$, match:title negative:(Heroic Games Launcher), float on +windowrule = match:class ^([Ss]team)$, match:title negative:^([Ss]team)$, float on windowrule = match:title ^(Add Folder to Workspace)$, float on, size (monitor_w*0.7) (monitor_h*0.6), center on - windowrule = match:title ^(Save As)$, float on, size (monitor_w*0.7) (monitor_h*0.6), center on - windowrule = match:initial_title (Open Files), float on, size (monitor_w*0.7) (monitor_h*0.6) - windowrule = match:title ^(SDDM Background)$, float on, center on, size (monitor_w*0.16) (monitor_h*0.12) +windowrule = match:class ^(yad)$, float on, center on, size (monitor_w*0.2) (monitor_h*0.2) +windowrule = match:class ^(hyprland-donate-screen)$, float on, center on + +# SIZE + +# POSITION +windowrule = match:title ^(ROG Control)$, center on +windowrule = match:title ^(Keybindings)$, center on +windowrule = match:class ^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$, center on +windowrule = match:class ^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$, center on +windowrule = match:class ^(nm-connection-editor)$, center on +windowrule = match:class ^(nm-applet)$, match:title ^(Wi-Fi Network Authentication Required)$, center on -# YAD dialog for wallpaper confirmation -windowrule = match:class ^(yad)$ match:title ^(YAD)$, float on, center on, size (monitor_w*0.2) (monitor_h*0.2) -# END of float popups and dialogue ####### +# windowrule to avoid idle for fullscreen apps +windowrule = match:fullscreen true, idle_inhibit fullscreen +windowrule = idle_inhibit fullscreen, match:fullscreen 1 +windowrule = idle_inhibit fullscreen, match:class .* +windowrule = idle_inhibit fullscreen, match:title .* # OPACITY windowrule = match:tag browser, opacity 0.99 0.8 @@ -164,28 +149,15 @@ windowrule = match:tag im, opacity 0.94 0.86 windowrule = match:tag multimedia, opacity 0.94 0.86 windowrule = match:tag file-manager, opacity 0.9 0.8 windowrule = match:tag terminal, opacity 0.9 0.7 -windowrule = match:tag settings, opacity 0.8 0.7 -windowrule = match:tag viewer, opacity 0.82 0.75 -windowrule = match:tag wallpaper, opacity 0.9 0.7 windowrule = match:class ^(gedit|org.gnome.TextEditor|mousepad)$, opacity 0.8 0.7 windowrule = match:class ^(deluge)$, opacity 0.9 0.8 windowrule = match:class ^(seahorse)$, opacity 0.9 0.8 -# SIZE -windowrule = match:tag KooL_Cheat, size (monitor_w*0.65) (monitor_h*0.9) -windowrule = match:tag wallpaper, size (monitor_w*0.7) (monitor_h*0.7) -windowrule = match:tag settings, size (monitor_w*0.7) (monitor_h*0.7) -windowrule = match:class ^([Ff]erdium)$, size (monitor_w*0.6) (monitor_h*0.7) -windowrule = match:class (org.gnome.Calculator|qalculate-gtk), center on, size (monitor_w*0.25) (monitor_h*0.3) - - # BLUR & FULLSCREEN -windowrule = match:tag games, no_blur on, fullscreen 0 -windowrule = match:tag games, fullscreen 0 -# This not gonna take the focus to the window that appears when -# hovering over some of the parts of the IntelliJ Products -windowrule = match:class ^(jetbrains-*), no_initial_focus on +# This not gonna take the focus to the window that appears +# when hovering over some of the parts of the IntelliJ Products +windowrule = match:class ^(jetbrains-.*)$, no_initial_focus on windowrule = match:title ^(wind.*)$, no_initial_focus on # LAYER RULES @@ -194,16 +166,9 @@ layerrule = match:namespace notifications, blur on layerrule = match:namespace quickshell:overview, blur on layerrule = match:namespace quickshell:overview, ignore_alpha 0.5 -# Named rules for special cases -windowrule { - name = Whatsapp-zapzap - match:class = ^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$ - size = (monitor_w*0.6) (monitor_h*0.7) - center = on -} windowrule { name = Picture-in-Picture - match:title = ^(Picture-in-Picture)$ + match:title = ^[Pp]icture-in-[Pp]icture$ float = on move = 72% 7% opacity = 0.95 0.75 @@ -211,13 +176,176 @@ windowrule { keep_aspect_ratio = on size = (monitor_w*0.3) (monitor_h*0.3) } -# Thunar copy progress dialog + +# Named rule for CachyOS Kernel Manager +windowrule { + name = CachyOS Kernel Manager + match:class = ^(org.cachyos.KernelManager)$ + match:title = ^(CachyOS Kernel Manager)$ + match:initial_class = ^(org.cachyos.KernelManager)$ + match:initial_title = ^(CachyOS Kernel Manager)$ + float = on + center = on + size = (monitor_w*0.6) (monitor_h*0.6) +} + +# Named rule for CachyOS Package Installer windowrule { - name = Thunar-Progress-bar - match:class = ^(thunar)$ - match:title = ^(File Operation Progress)$ + name = CachyOS Package Installer + match:class = ^(org.cachyos.cachyos-pi)$ + match:title = ^(CachyOS Package Installer)$ + match:initial_class = ^(org.cachyos.cachyos-pi)$ + match:initial_title = ^(CachyOS Package Installer)$ float = on center = on - size = (monitor_w*0.26) (monitor_h*0.18) + size = (monitor_w*0.6) (monitor_h*0.6) } +# Named rule for CachyOS Hello +windowrule { + name = CachyOS Hello + match:class = ^(CachyOSHello)$ + match:title = ^(CachyOS Hello)$ + match:initial_class = ^(CachyOSHello)$ + match:initial_title = ^(CachyOS Hello)$ + float = on + center = on + size = (monitor_w*0.6) (monitor_h*0.6) +} + +# Named rule for Cache Cleaner - Octopi +windowrule { + name = Cache Cleaner - Octopi + match:class = ^(octopi-cachecleaner)$ + match:title = ^(Cache Cleaner - Octopi)$ + match:initial_class = ^(octopi-cachecleaner)$ + match:initial_title = ^(Cache Cleaner - Octopi)$ + float = on + center = on + size = (monitor_w*0.6) (monitor_h*0.6) +} + +# Named rule for Octopi Package Manager +windowrule { + name = Octopi Package Manager + match:class = ^(octopi)$ + match:title = ^(Octopi)$ + match:initial_class = ^(octopi)$ + match:initial_title = ^(Octopi)$ + float = on + center = on + size = (monitor_w*0.6) (monitor_h*0.6) +} + +# Named rule for Repository Editor - Octopi +windowrule { + name = Repository Editor - Octopi + match:class = ^(octopi-repoeditor)$ + match:title = ^(Repository Editor - Octopi)$ + match:initial_class = ^(octopi-repoeditor)$ + match:initial_title = ^(Repository Editor - Octop)$ + float = on + center = on + size = (monitor_w*0.6) (monitor_h*0.6) +} + +# Named rule for KooL Cheat (tag) +windowrule { + name = KooL Cheat (tag) + match:tag = KooL_Cheat + float = on + center = on + size = (monitor_w*0.65) (monitor_h*0.9) +} + +# Named rule for Wallpaper (tag) +windowrule { + name = Wallpaper (tag) + match:tag = wallpaper + float = on + center = on + size = (monitor_w*0.7) (monitor_h*0.7) + opacity = 0.9 0.7 +} + +# Named rule for Settings (tag) +windowrule { + name = Settings (tag) + match:tag = settings + float = on + center = on + size = (monitor_w*0.7) (monitor_h*0.7) + opacity = 0.8 0.7 +} + +# Named rule for Viewer (tag) +windowrule { + name = Viewer (tag) + match:tag = viewer + float = on + center = on + opacity = 0.82 0.75 +} + +# Named rule for KooL Settings (tag) +windowrule { + name = KooL Settings (tag) + match:tag = KooL-Settings + float = on + center = on +} + +# Named rule for Multimedia Video (tag) +windowrule { + name = Multimedia Video (tag) + match:tag = multimedia_video + no_blur = on + opacity = 1.0 +} + +# Named rule for Games (tag) +windowrule { + name = Games (tag) + match:tag = games + no_blur = on + fullscreen = 0 +} + +# Named rule for Ferdium +windowrule { + name = Ferdium + match:class = ^([Ff]erdium)$ + float = on + center = on + size = (monitor_w*0.6) (monitor_h*0.7) +} + +# Named rule for Calculators +windowrule { + name = Calculators + match:class = (org.gnome.Calculator|qalculate-gtk) + float = on + center = on + size = (monitor_w*0.25) (monitor_h*0.3) +} + +# Named rule for Thunar Dialogs +windowrule { + name = Thunar Dialogs + match:class = ([Tt]hunar) + match:title = negative:(.*[Tt]hunar.*) + float = on + center = on +} + +# Named rule for Bitwarden +windowrule { + name = Bitwarden + match:class = ^(Bitwarden)$ + match:title = ^(Bitwarden)$ + match:initial_class = ^(Bitwarden)$ + match:initial_title = ^(Bitwarden)$ + float = on + center = on + size = (monitor_w*0.6) (monitor_h*0.6) +} diff --git a/config/hypr/configs/WindowRules.conf b/config/hypr/configs/WindowRules.conf index e94cc536..8212e9bf 100644 --- a/config/hypr/configs/WindowRules.conf +++ b/config/hypr/configs/WindowRules.conf @@ -17,8 +17,6 @@ # windowrule = match:tag games*, workspace 8 # windowrule = match:tag multimedia*, workspace 9 silent - - # TAGS - add apps under appropriate tag to use the same settings # browser tags windowrule = match:class ^([Ff]irefox|org.mozilla.firefox|[Ff]irefox-esr|[Ff]irefox-bin)$, tag +browser @@ -26,7 +24,7 @@ windowrule = match:class ^([Gg]oogle-chrome(-beta|-dev|-unstable)?)$, tag +brows windowrule = match:class ^(chrome-.+-Default)$, tag +browser windowrule = match:class ^([Cc]hromium)$, tag +browser windowrule = match:class ^([Mm]icrosoft-edge(-stable|-beta|-dev|-unstable))$, tag +browser -windowrule = match:class ^(Brave-browser(-beta|-dev|-unstable)?)$, tag +browser +windowrule = match:class ^([Bb]rave-browser(-beta|-dev|-unstable)?)$, tag +browser windowrule = match:class ^([Tt]horium-browser|[Cc]achy-browser)$, tag +browser windowrule = match:class ^(zen-alpha|zen)$, tag +browser @@ -58,7 +56,7 @@ windowrule = match:class ^(com.obsproject.Studio)$, tag +screenshare # IM tags windowrule = match:class ^([Dd]iscord|[Ww]ebCord|[Vv]esktop)$, tag +im windowrule = match:class ^([Ff]erdium)$, tag +im -windowrule = match:class ^([Ww]hatsapp-for-linux)$, tag +im +windowrule = match:class ^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$, tag +im windowrule = match:class ^(org.telegram.desktop|io.github.tdesktop_x64.TDesktop)$, tag +im windowrule = match:class ^(teams-for-linux)$, tag +im windowrule = match:class ^(im.riot.Riot|Element)$, tag +im @@ -66,6 +64,7 @@ windowrule = match:class ^(im.riot.Riot|Element)$, tag +im # game tags windowrule = match:class ^(gamescope)$, tag +games windowrule = match:class ^(steam_app_\\d+)$, tag +games +windowrule = match:xdg_tag ^(proton-game)$, tag +games # gamestore tags windowrule = match:class ^([Ss]team)$, tag +gamestore @@ -107,42 +106,19 @@ windowrule = match:class ^(evince)$, tag +viewer windowrule = match:class ^(eog|org.gnome.Loupe)$, tag +viewer # Some special override rules -windowrule = match:tag multimedia_video, no_blur on -windowrule = match:tag multimedia_video, opacity 1.0 windowrule = match:tag multimedia, no_blur on windowrule = match:tag multimedia, opacity 1.0 -# POSITION -windowrule = match:tag KooL_Cheat, center on -windowrule = match:tag KooL-Settings, center on -windowrule = match:title ^(ROG Control)$, center on -windowrule = match:title ^(Keybindings)$, center on -windowrule = match:class ^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$, center on -windowrule = match:class ^([Ff]erdium)$, center on - -# windowrule to avoid idle for fullscreen apps -windowrule = match:fullscreen true, idle_inhibit fullscreen -windowrule = idle_inhibit fullscreen, match:fullscreen 1 -windowrule = idle_inhibit fullscreen, match:class ^(*)$ -windowrule = idle_inhibit fullscreen, match:title ^(*)$ - # FLOAT -windowrule = match:tag KooL_Cheat, float on -windowrule = match:tag wallpaper, float on, center on -windowrule = match:tag settings, float on, center on -windowrule = match:tag viewer, float on, center on -windowrule = match:tag KooL-Settings, float on, center on windowrule = match:class ([Zz]oom|onedriver|onedriver-launcher), float on -windowrule = match:class (org.gnome.Calculator|qalculate-gtk), float on windowrule = match:class ^(mpv|com.github.rafostar.Clapper)$, float on windowrule = match:class ^([Qq]alculate-gtk)$, float on -windowrule = match:class ^([Ff]erdium)$, float on -# popups and dialogue +# float popups and dialogue windowrule = match:title ^(Authentication Required)$, float on, center on -windowrule = match:class (codium|codium-url-handler|VSCodium) match:title negative:(.*codium.*|.*VSCodium.*), float on -windowrule = match:class ^(com.heroicgameslauncher.hgl)$ match:title negative:(Heroic Games Launcher), float on -windowrule = match:class ^([Ss]team)$ match:title negative:^([Ss]team)$, float on +windowrule = match:class (codium|codium-url-handler|VSCodium), match:title negative:(.*codium.*|.*VSCodium.*), float on +windowrule = match:class ^(com.heroicgameslauncher.hgl)$, match:title negative:(Heroic Games Launcher), float on +windowrule = match:class ^([Ss]team)$, match:title negative:^([Ss]team)$, float on windowrule = match:title ^(Add Folder to Workspace)$, float on, size (monitor_w*0.7) (monitor_h*0.6), center on windowrule = match:title ^(Save As)$, float on, size (monitor_w*0.7) (monitor_h*0.6), center on windowrule = match:initial_title (Open Files), float on, size (monitor_w*0.7) (monitor_h*0.6) @@ -150,6 +126,22 @@ windowrule = match:title ^(SDDM Background)$, float on, center on, size (monitor windowrule = match:class ^(yad)$, float on, center on, size (monitor_w*0.2) (monitor_h*0.2) windowrule = match:class ^(hyprland-donate-screen)$, float on, center on +# SIZE + +# POSITION +windowrule = match:title ^(ROG Control)$, center on +windowrule = match:title ^(Keybindings)$, center on +windowrule = match:class ^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$, center on +windowrule = match:class ^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$, center on +windowrule = match:class ^(nm-connection-editor)$, center on +windowrule = match:class ^(nm-applet)$, match:title ^(Wi-Fi Network Authentication Required)$, center on + +# windowrule to avoid idle for fullscreen apps +windowrule = match:fullscreen true, idle_inhibit fullscreen +windowrule = idle_inhibit fullscreen, match:fullscreen 1 +windowrule = idle_inhibit fullscreen, match:class .* +windowrule = idle_inhibit fullscreen, match:title .* + # OPACITY windowrule = match:tag browser, opacity 0.99 0.8 windowrule = match:tag projects, opacity 0.9 0.8 @@ -157,28 +149,15 @@ windowrule = match:tag im, opacity 0.94 0.86 windowrule = match:tag multimedia, opacity 0.94 0.86 windowrule = match:tag file-manager, opacity 0.9 0.8 windowrule = match:tag terminal, opacity 0.9 0.7 -windowrule = match:tag settings, opacity 0.8 0.7 -windowrule = match:tag viewer, opacity 0.82 0.75 -windowrule = match:tag wallpaper, opacity 0.9 0.7 windowrule = match:class ^(gedit|org.gnome.TextEditor|mousepad)$, opacity 0.8 0.7 windowrule = match:class ^(deluge)$, opacity 0.9 0.8 windowrule = match:class ^(seahorse)$, opacity 0.9 0.8 -windowrule = match:title ^(Picture-in-Picture)$, opacity 0.95 0.75 - -# SIZE -windowrule = match:tag KooL_Cheat, size (monitor_w*0.65) (monitor_h*0.9) -windowrule = match:tag wallpaper, size (monitor_w*0.7) (monitor_h*0.7) -windowrule = match:tag settings, size (monitor_w*0.7) (monitor_h*0.7) -windowrule = match:class ^([Ff]erdium)$, size (monitor_w*0.6) (monitor_h*0.7) - # BLUR & FULLSCREEN -windowrule = match:tag games, no_blur on, fullscreen 0 -windowrule = match:tag games, fullscreen 0 -# This not gonna take the focus to the window that appears when -# hovering over some of the parts of the IntelliJ Products -windowrule = match:class ^(jetbrains-*), no_initial_focus on +# This not gonna take the focus to the window that appears +# when hovering over some of the parts of the IntelliJ Products +windowrule = match:class ^(jetbrains-.*)$, no_initial_focus on windowrule = match:title ^(wind.*)$, no_initial_focus on # LAYER RULES @@ -187,16 +166,9 @@ layerrule = match:namespace notifications, blur on layerrule = match:namespace quickshell:overview, blur on layerrule = match:namespace quickshell:overview, ignore_alpha 0.5 -# Named rules for special cases -windowrule { - name = Whatsapp-zapzap - match:class = ^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$ - size = (monitor_w*0.6) (monitor_h*0.7) - center = on -} windowrule { name = Picture-in-Picture - match:title = ^(Picture-in-Picture)$ + match:title = ^[Pp]icture-in-[Pp]icture$ float = on move = 72% 7% opacity = 0.95 0.75 @@ -204,13 +176,176 @@ windowrule { keep_aspect_ratio = on size = (monitor_w*0.3) (monitor_h*0.3) } -# Thunar copy progress dialog + +# Named rule for CachyOS Kernel Manager +windowrule { + name = CachyOS Kernel Manager + match:class = ^(org.cachyos.KernelManager)$ + match:title = ^(CachyOS Kernel Manager)$ + match:initial_class = ^(org.cachyos.KernelManager)$ + match:initial_title = ^(CachyOS Kernel Manager)$ + float = on + center = on + size = (monitor_w*0.6) (monitor_h*0.6) +} + +# Named rule for CachyOS Package Installer +windowrule { + name = CachyOS Package Installer + match:class = ^(org.cachyos.cachyos-pi)$ + match:title = ^(CachyOS Package Installer)$ + match:initial_class = ^(org.cachyos.cachyos-pi)$ + match:initial_title = ^(CachyOS Package Installer)$ + float = on + center = on + size = (monitor_w*0.6) (monitor_h*0.6) +} + +# Named rule for CachyOS Hello +windowrule { + name = CachyOS Hello + match:class = ^(CachyOSHello)$ + match:title = ^(CachyOS Hello)$ + match:initial_class = ^(CachyOSHello)$ + match:initial_title = ^(CachyOS Hello)$ + float = on + center = on + size = (monitor_w*0.6) (monitor_h*0.6) +} + +# Named rule for Cache Cleaner - Octopi +windowrule { + name = Cache Cleaner - Octopi + match:class = ^(octopi-cachecleaner)$ + match:title = ^(Cache Cleaner - Octopi)$ + match:initial_class = ^(octopi-cachecleaner)$ + match:initial_title = ^(Cache Cleaner - Octopi)$ + float = on + center = on + size = (monitor_w*0.6) (monitor_h*0.6) +} + +# Named rule for Octopi Package Manager +windowrule { + name = Octopi Package Manager + match:class = ^(octopi)$ + match:title = ^(Octopi)$ + match:initial_class = ^(octopi)$ + match:initial_title = ^(Octopi)$ + float = on + center = on + size = (monitor_w*0.6) (monitor_h*0.6) +} + +# Named rule for Repository Editor - Octopi +windowrule { + name = Repository Editor - Octopi + match:class = ^(octopi-repoeditor)$ + match:title = ^(Repository Editor - Octopi)$ + match:initial_class = ^(octopi-repoeditor)$ + match:initial_title = ^(Repository Editor - Octop)$ + float = on + center = on + size = (monitor_w*0.6) (monitor_h*0.6) +} + +# Named rule for KooL Cheat (tag) +windowrule { + name = KooL Cheat (tag) + match:tag = KooL_Cheat + float = on + center = on + size = (monitor_w*0.65) (monitor_h*0.9) +} + +# Named rule for Wallpaper (tag) +windowrule { + name = Wallpaper (tag) + match:tag = wallpaper + float = on + center = on + size = (monitor_w*0.7) (monitor_h*0.7) + opacity = 0.9 0.7 +} + +# Named rule for Settings (tag) +windowrule { + name = Settings (tag) + match:tag = settings + float = on + center = on + size = (monitor_w*0.7) (monitor_h*0.7) + opacity = 0.8 0.7 +} + +# Named rule for Viewer (tag) +windowrule { + name = Viewer (tag) + match:tag = viewer + float = on + center = on + opacity = 0.82 0.75 +} + +# Named rule for KooL Settings (tag) windowrule { - name = Thunar-Progress-bar - match:class = ^(thunar)$ - match:title = ^(File Operation Progress)$ + name = KooL Settings (tag) + match:tag = KooL-Settings float = on center = on - size = (monitor_w*0.26) (monitor_h*0.18) } +# Named rule for Multimedia Video (tag) +windowrule { + name = Multimedia Video (tag) + match:tag = multimedia_video + no_blur = on + opacity = 1.0 +} + +# Named rule for Games (tag) +windowrule { + name = Games (tag) + match:tag = games + no_blur = on + fullscreen = 0 +} + +# Named rule for Ferdium +windowrule { + name = Ferdium + match:class = ^([Ff]erdium)$ + float = on + center = on + size = (monitor_w*0.6) (monitor_h*0.7) +} + +# Named rule for Calculators +windowrule { + name = Calculators + match:class = (org.gnome.Calculator|qalculate-gtk) + float = on + center = on + size = (monitor_w*0.25) (monitor_h*0.3) +} + +# Named rule for Thunar Dialogs +windowrule { + name = Thunar Dialogs + match:class = ([Tt]hunar) + match:title = negative:(.*[Tt]hunar.*) + float = on + center = on +} + +# Named rule for Bitwarden +windowrule { + name = Bitwarden + match:class = ^(Bitwarden)$ + match:title = ^(Bitwarden)$ + match:initial_class = ^(Bitwarden)$ + match:initial_title = ^(Bitwarden)$ + float = on + center = on + size = (monitor_w*0.6) (monitor_h*0.6) +} diff --git a/config/hypr/monitors.conf b/config/hypr/monitors.conf index dc24fa5c..2f79d4fd 100644 --- a/config/hypr/monitors.conf +++ b/config/hypr/monitors.conf @@ -36,7 +36,7 @@ monitor=,highres,auto,1 #monitor = HDMI-A-1, preferred,auto,1 # QEMU-KVM, virtual box or vmware -#monitor = Virtual-1, 1920x1080@60,auto,1 +monitor = Virtual-1, 1920x1080@60,auto,1 # to disable a monitor #monitor=name,disable diff --git a/config/hypr/scripts/Kitty_themes.sh b/config/hypr/scripts/Kitty_themes.sh index 585bc7fc..8bc6e0f0 100755 --- a/config/hypr/scripts/Kitty_themes.sh +++ b/config/hypr/scripts/Kitty_themes.sh @@ -16,14 +16,20 @@ notify_user() { # Function to apply the selected kitty theme apply_kitty_theme_to_config() { local theme_name_to_apply="$1" + local apply_mode="${2:-preview}" if [ -z "$theme_name_to_apply" ]; then echo "Error: No theme name provided to apply_kitty_theme_to_config." >&2 return 1 fi + local theme_file_path_to_apply + if [ "$theme_name_to_apply" = "Set by wallpaper" ]; then + theme_file_path_to_apply="$kitty_themes_DiR/00-Default.conf" + else + theme_file_path_to_apply="$kitty_themes_DiR/$theme_name_to_apply.conf" + fi - local theme_file_path_to_apply="$kitty_themes_DiR/$theme_name_to_apply.conf" if [ ! -f "$theme_file_path_to_apply" ]; then - notify_user "$iDIR/error.png" "Error" "Theme file not found: $theme_name_to_apply.conf" + notify_user "$iDIR/error.png" "Error" "Theme file not found: $(basename "$theme_file_path_to_apply")" return 1 fi @@ -31,23 +37,31 @@ apply_kitty_theme_to_config() { temp_kitty_config_file=$(mktemp) cp "$kitty_config" "$temp_kitty_config_file" + local include_target + include_target="include ./kitty-themes/$(basename "$theme_file_path_to_apply")" + if grep -q -E '^[#[:space:]]*include\s+\./kitty-themes/.*\.conf' "$temp_kitty_config_file"; then - sed -i -E "s|^([#[:space:]]*include\s+\./kitty-themes/).*\.conf|include ./kitty-themes/$theme_name_to_apply.conf|g" "$temp_kitty_config_file" + sed -i -E "s|^([#[:space:]]*include\s+\./kitty-themes/).*\.conf|$include_target|g" "$temp_kitty_config_file" else if [ -s "$temp_kitty_config_file" ] && [ "$(tail -c1 "$temp_kitty_config_file")" != "" ]; then echo >>"$temp_kitty_config_file" fi - echo "include ./kitty-themes/$theme_name_to_apply.conf" >>"$temp_kitty_config_file" + echo "$include_target" >>"$temp_kitty_config_file" fi cp "$temp_kitty_config_file" "$kitty_config" rm "$temp_kitty_config_file" - - for pid_kitty in $(pidof kitty); do - if [ -n "$pid_kitty" ]; then - kill -SIGUSR1 "$pid_kitty" + if pidof kitty >/dev/null 2>&1; then + if [ "$apply_mode" = "apply" ] && command -v kitty >/dev/null 2>&1; then + kitty @ load-config >/dev/null 2>&1 + kitty @ set-colors --all --configured "$theme_file_path_to_apply" >/dev/null 2>&1 fi - done + for pid_kitty in $(pidof kitty); do + if [ -n "$pid_kitty" ]; then + kill -SIGUSR1 "$pid_kitty" + fi + done + fi return 0 } @@ -65,7 +79,8 @@ fi original_kitty_config_content_backup=$(cat "$kitty_config") -mapfile -t available_theme_names < <(find "$kitty_themes_DiR" -maxdepth 1 -name "*.conf" -type f -printf "%f\n" | sed 's/\.conf$//' | sort) +mapfile -t available_theme_names < <(find "$kitty_themes_DiR" -maxdepth 1 -name "*.conf" -type f -printf "%f\n" | sed 's/\.conf$//' | grep -v -E '^(00-Default|01-Wallust)$' | sort) +available_theme_names=("Set by wallpaper" "${available_theme_names[@]}") if [ ${#available_theme_names[@]} -eq 0 ]; then notify_user "$iDIR/error.png" "No Kitty Themes" "No .conf files found in $kitty_themes_DiR." @@ -73,7 +88,10 @@ if [ ${#available_theme_names[@]} -eq 0 ]; then fi current_selection_index=0 -current_active_theme_name=$(awk -F'include ./kitty-themes/|\\.conf' '/^[[:space:]]*include \.\/kitty-themes\/.*\.conf/{print $2; exit}' "$kitty_config") +current_active_theme_name=$(awk -F'include ./kitty-themes/|\\.conf' '/^[[:space:]]*include \\.\/kitty-themes\/.*\\.conf/{print $2; exit}' "$kitty_config") +if [ "$current_active_theme_name" = "00-Default" ]; then + current_active_theme_name="Set by wallpaper" +fi if [ -n "$current_active_theme_name" ]; then for i in "${!available_theme_names[@]}"; do @@ -85,14 +103,6 @@ if [ -n "$current_active_theme_name" ]; then fi while true; do - theme_to_preview_now="${available_theme_names[$current_selection_index]}" - - if ! apply_kitty_theme_to_config "$theme_to_preview_now"; then - echo "$original_kitty_config_content_backup" >"$kitty_config" - for pid_kitty in $(pidof kitty); do if [ -n "$pid_kitty" ]; then kill -SIGUSR1 "$pid_kitty"; fi; done - notify_user "$iDIR/error.png" "Preview Error" "Failed to apply $theme_to_preview_now. Reverted." - exit 1 - fi rofi_input_list="" for theme_name_in_list in "${available_theme_names[@]}"; do @@ -104,16 +114,24 @@ while true; do rofi -dmenu -i \ -format 'i' \ -p "Kitty Theme" \ - -mesg "Preview: ${theme_to_preview_now} | Enter: Preview | Ctrl+S: Apply & Exit | Esc: Cancel" \ + -mesg "Enter: Preview | Ctrl+S: Apply & Exit | Esc: Cancel" \ -config "$rofi_theme_for_this_script" \ -selected-row "$current_selection_index" \ - -kb-custom-1 "Control+s") # MODIFIED HERE: Changed to Control+s for custom action 1 + -kb-custom-1 "Control+s") rofi_exit_code=$? if [ $rofi_exit_code -eq 0 ]; then if [[ "$chosen_index_from_rofi" =~ ^[0-9]+$ ]] && [ "$chosen_index_from_rofi" -lt "${#available_theme_names[@]}" ]; then current_selection_index="$chosen_index_from_rofi" + theme_to_preview_now="${available_theme_names[$current_selection_index]}" + if ! apply_kitty_theme_to_config "$theme_to_preview_now" "preview"; then + echo "$original_kitty_config_content_backup" >"$kitty_config" + for pid_kitty in $(pidof kitty); do if [ -n "$pid_kitty" ]; then kill -SIGUSR1 "$pid_kitty"; fi; done + notify_user "$iDIR/error.png" "Preview Error" "Failed to apply $theme_to_preview_now. Reverted." + exit 1 + fi + continue else : fi @@ -123,6 +141,7 @@ while true; do for pid_kitty in $(pidof kitty); do if [ -n "$pid_kitty" ]; then kill -SIGUSR1 "$pid_kitty"; fi; done break elif [ $rofi_exit_code -eq 10 ]; then # This is the exit code for -kb-custom-1 + apply_kitty_theme_to_config "$theme_to_preview_now" "apply" notify_user "$iDIR/ja.png" "Kitty Theme Applied" "$theme_to_preview_now" break else diff --git a/config/hypr/scripts/Kool_Quick_Settings.sh b/config/hypr/scripts/Kool_Quick_Settings.sh index 2e4004c5..5081fe72 100755 --- a/config/hypr/scripts/Kool_Quick_Settings.sh +++ b/config/hypr/scripts/Kool_Quick_Settings.sh @@ -202,6 +202,7 @@ Choose Hyprland Animations Choose Monitor Profiles Choose Rofi Themes Search for Keybinds +Toggle Waybar Weather units (C/F) Toggle Game Mode Switch Dark-Light Theme Rainbow Borders Mode @@ -263,6 +264,7 @@ main() { "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 Game Mode") $scriptsDir/GameMode.sh ;; "Switch Dark-Light Theme") $scriptsDir/DarkLight.sh ;; "Rainbow Borders Mode") rainbow_borders_menu ;; diff --git a/config/hypr/scripts/PortalHyprlandUbuntu2604.sh b/config/hypr/scripts/PortalHyprlandUbuntu2604.sh new file mode 100755 index 00000000..5cb3c01b --- /dev/null +++ b/config/hypr/scripts/PortalHyprlandUbuntu2604.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ ## +# Ubuntu 26.04 workaround: start portals manually before waybar. + +set -euo pipefail + +if [[ -r /etc/os-release ]]; then + # shellcheck disable=SC1091 + . /etc/os-release + if [[ "${ID:-}" == "ubuntu" && "${VERSION_ID:-}" == "26.04" ]]; then + if [[ -x "$HOME/.config/hypr/scripts/PortalHyprland.sh" ]]; then + "$HOME/.config/hypr/scripts/PortalHyprland.sh" + fi + fi +fi diff --git a/config/hypr/scripts/Refresh.sh b/config/hypr/scripts/Refresh.sh index 10901dbb..95248b35 100755 --- a/config/hypr/scripts/Refresh.sh +++ b/config/hypr/scripts/Refresh.sh @@ -22,6 +22,9 @@ for _prs in "${_ps[@]}"; do fi done +# Clean up any Waybar-spawned cava instances (unique temp conf names) +pkill -f 'waybar-cava\..*\.conf' 2>/dev/null || true + # added since wallust sometimes not applying killall -SIGUSR2 waybar # Added sleep for GameMode causing multiple waybar diff --git a/config/hypr/scripts/Tak0-Per-Window-Switch.sh b/config/hypr/scripts/Tak0-Per-Window-Switch.sh index 6cd0c564..3ba2c7af 100755 --- a/config/hypr/scripts/Tak0-Per-Window-Switch.sh +++ b/config/hypr/scripts/Tak0-Per-Window-Switch.sh @@ -1,5 +1,5 @@ ################################################################## -# # +# # # # # TAK_0'S Per-Window-Switch # # # @@ -7,13 +7,14 @@ # # # Just a little script that I made to switch keyboard layouts # # per-window instead of global switching for the more # -# smooth and comfortable workflow. # +# smooth and comfortable workflow. # # # ################################################################## # This is for changing kb_layouts. Set kb_layouts in MAP_FILE="$HOME/.cache/kb_layout_per_window" -CFG_FILE="$HOME/.config/hypr/configs/SystemSettings.conf" +USER_CFG="$HOME/.config/hypr/UserConfigs/UserSettings.conf" +SYS_CFG="$HOME/.config/hypr/configs/SystemSettings.conf" ICON="$HOME/.config/swaync/images/ja.png" SCRIPT_NAME="$(basename "$0")" @@ -21,13 +22,16 @@ SCRIPT_NAME="$(basename "$0")" touch "$MAP_FILE" # Read layouts from config -if ! grep -q 'kb_layout' "$CFG_FILE"; then - echo "Error: cannot find kb_layout in $CFG_FILE" >&2 +if grep -q 'kb_layout' "$USER_CFG" 2>/dev/null; then + CFG_FILE="$USER_CFG" +elif grep -q 'kb_layout' "$SYS_CFG" 2>/dev/null; then + CFG_FILE="$SYS_CFG" +else + echo "Error: cannot find kb_layout in UserSettings.conf nor SystemSettings.conf" >&2 exit 1 fi kb_layouts=($(grep 'kb_layout' "$CFG_FILE" | cut -d '=' -f2 | tr -d '[:space:]' | tr ',' ' ')) count=${#kb_layouts[@]} - # Get current active window ID get_win() { hyprctl activewindow -j | jq -r '.address // .id' @@ -96,7 +100,10 @@ cmd_restore() { # Listen to focus events and restore window-specific layouts subscribe() { local SOCKET2="$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock" - [[ -S "$SOCKET2" ]] || { echo "Error: Hyprland socket not found." >&2; exit 1; } + [[ -S "$SOCKET2" ]] || { + echo "Error: Hyprland socket not found." >&2 + exit 1 + } socat -u UNIX-CONNECT:"$SOCKET2" - | while read -r line; do [[ "$line" =~ ^activewindow ]] && cmd_restore diff --git a/config/hypr/scripts/Toggle-Active-Window-Audio.sh b/config/hypr/scripts/Toggle-Active-Window-Audio.sh new file mode 100755 index 00000000..4d9bcd33 --- /dev/null +++ b/config/hypr/scripts/Toggle-Active-Window-Audio.sh @@ -0,0 +1,147 @@ +#!/usr/bin/env bash +set -euo pipefail + +XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" +swayIconDir="${XDG_CONFIG_HOME}/swaync/icons" + +#// Credits to sl1ng for the orginal script. Rewritten by Vyle. +ctlcheck=("pactl" "jq" "notify-send" "awk" "pgrep" "hyprctl" "iconv") +missing=() + +for ctl in "${ctlcheck[@]}"; do + command -v "${ctl}" >/dev/null || missing+=("${ctl}") +done + +if (( ${#missing[@]} )) 2>/dev/null; then + if printf '%s\n' "${missing[@]}" | grep -qx "pactl"; then + notify-send -a "t1" -r 91190 -t 2000 -i "${swayIconDir}/volume-low.png" "ERROR: pactl not installed" "Install 'pactl' (pulseaudio-utils or pipewire-pulse)." + fi + echo "Missing required dependencies: \"${missing[*]}\"" + exit 1 +fi + +#// Parse .pid, .class, .title to __pid, __class, __title. +active_json="$(hyprctl -j activewindow 2>/dev/null || { echo -e "Did hyprctl fail to run? [EXIT-CODE:-1]"; exit 1; } )" +PID="$(jq -r '"\(.pid)\t\(.class)\t\(.title)"' <<< "${active_json}" || { echo -e "Did jq fail to run? [EXIT-CODE:-1]"; exit 1; } )" + +IFS=$'\t' read -r __pid __class __title <<< "${PID}" + +[[ -z "${__pid}" ]] && { echo -e "Could not resolve PID for focused window."; exit 1; } +sink_json="$(pactl -f json list sink-inputs 2>/dev/null | iconv -f utf-8 -t utf-8 -c || { echo -e "Did pactl or iconv fail to run? Required manual intervention."; exit 1; } )" +#// Collect all descendant PIDs for the active window (Chrome/Wayland audio often runs in child processes). +declare -A seen_pids=() +queue=("${__pid}") +all_pids=() +while ((${#queue[@]})); do + pid="${queue[0]}" + queue=("${queue[@]:1}") + [[ -n "${seen_pids[$pid]:-}" ]] && continue + seen_pids["$pid"]=1 + all_pids+=("$pid") + mapfile -t children < <(pgrep -P "$pid" || true) + for child in "${children[@]}"; do + [[ -n "${seen_pids[$child]:-}" ]] || queue+=("$child") + done +done +pidsJson="$(printf '%s\n' "${all_pids[@]}" | jq -s 'map(tonumber)')" + +#// Check if any descendant PID matches application.process.id or else verify other statements. +mapfile -t sink_ids < <(jq -r --argjson pids "${pidsJson}" --arg class "${__class}" --arg title "${__title}" ' +.[] | + def lc(x): (x // "" | ascii_downcase); + def normalize(x): x | gsub("[-_~.]+";" ") ; + select( + (.properties["application.process.id"] | tostring | tonumber? as $p | $p != null and ($pids | index($p))) + or + (lc(.properties["application.name"]) | contains(lc($class))) + or + (lc(.properties["application.id"]) | contains(lc($class))) + or + (lc(.properties["application.process.binary"]) | contains(lc($class))) + or + (normalize(lc(.properties["media.name"])) | contains(normalize(lc($title)))) + ) | .index' <<< "${sink_json}" +) + +if [[ "${#sink_ids[@]}" -eq 0 ]]; then + mapfile -t fallback_pids < <(pgrep -x "${__class}" || true) + if [[ "${#fallback_pids[@]}" -gt 0 ]]; then + declare -A seen_fallback=() + queue=("${fallback_pids[@]}") + all_fallback=() + while ((${#queue[@]})); do + pid="${queue[0]}" + queue=("${queue[@]:1}") + [[ -n "${seen_fallback[$pid]:-}" ]] && continue + seen_fallback["$pid"]=1 + all_fallback+=("$pid") + mapfile -t children < <(pgrep -P "$pid" || true) + for child in "${children[@]}"; do + [[ -n "${seen_fallback[$child]:-}" ]] || queue+=("$child") + done + done + fallbackJson="$(printf '%s\n' "${all_fallback[@]}" | jq -s 'map(tonumber)')" + mapfile -t sink_ids < <( jq -r --argjson pids "${fallbackJson}" '.[] | + select((.properties["application.process.id"] | tostring | tonumber? as $p | $p != null and ($pids | index($p)))) | .index' <<< "${sink_json}" ) + fi +fi + +#// Auto-Detect if the environment is on Hyprland or $HYPRLAND_INSTANCE_SIGNATURE. +if [[ ${#sink_ids[@]} -eq 0 ]]; then + if [[ -n "${HYPRLAND_INSTANCE_SIGNATURE}" ]]; then + # Even if the fallback_pid remains empty, we will dispatch exit code based on $HYPRLAND_INSTANCE_SIGNATURE. + notify-send -a "t1" -r 91190 -t 1200 -i "${swayIconDir}/volume-low.png" "No sink input for the active_window: ${__class}" + echo "No sink input for focused window: ${__class}" + exit 1 + else + echo "No sink input for focused active_window ${__class}" + exit 1 + fi +fi + +idsJson=$(printf '%s\n' "${sink_ids[@]}" | jq -s 'map(tonumber)') + +#// Get the available option from pactl. +want_mute=$(jq -r --argjson ids "$idsJson" ' + [ .[] | select(.index as $i | $ids | index($i)) | .mute ] as $m | + if all($m[]; . == true) then "no" + else "yes" + end' <<< "${sink_json}" +) + +if [[ "${want_mute}" == "no" ]]; then + state_msg="Unmuted" + swayIcon="${swayIconDir}/volume-high.png" +else + state_msg="Muted" + swayIcon="${swayIconDir}/volume-mute.png" +fi + +[[ -f "${swayIcon}" ]] || echo -e "Missing swaync icons." + +changed=0 +failed_ids=() +for id in "${sink_ids[@]}"; do + if pactl set-sink-input-mute "$id" "$want_mute"; then + changed=1 + else + failed_ids+=("$id") + fi +done + +if [[ "$changed" -eq 0 ]]; then + notify-send -a "t2" -r 91190 -t 1200 -i "${swayIconDir}/volume-low.png" "Failed to change sink input(s)" "${failed_ids[*]:-unknown}" + exit 1 +fi + +#// Append pamixer to get a nice result. Pamixer is complete optional here. +if command -v pamixer >/dev/null; then + sink_name="$(pamixer --get-default-sink 2>/dev/null | awk -F '"' 'END{print $(NF - 1)}' 2>/dev/null || true)" + if [[ -n "${sink_name}" ]]; then + notify-send -a "t2" -r 91190 -t 800 -i "${swayIcon}" "${state_msg} ${__class}" "${sink_name}" + else + notify-send -a "t2" -r 91190 -t 800 -i "${swayIcon}" "${state_msg} ${__class}" + fi +else + notify-send -a "t2" -r 91190 -t 800 -i "${swayIcon}" "${state_msg} ${__class}" +fi diff --git a/config/hypr/scripts/Toggle-weather-waybar-units.sh b/config/hypr/scripts/Toggle-weather-waybar-units.sh new file mode 100755 index 00000000..4007536c --- /dev/null +++ b/config/hypr/scripts/Toggle-weather-waybar-units.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash +# Toggle waybar-weather units between metric and imperial + +CONFIG_FILE="$HOME/.config/waybar-weather/config.toml" + +if [ ! -f "$CONFIG_FILE" ]; then + notify-send "Weather units" "Config not found: $CONFIG_FILE" + exit 1 +fi + +# Determine current units (default to metric when unset/commented) +current_units="metric" +if grep -qE '^[[:space:]]*units[[:space:]]*=' "$CONFIG_FILE"; then + current_units=$(sed -nE 's/^[[:space:]]*units[[:space:]]*=[[:space:]]*"([^"]+)".*/\1/p' "$CONFIG_FILE" | head -n1) +fi + +if [ "$current_units" = "imperial" ]; then + new_units="metric" +else + new_units="imperial" +fi + +# Update config: prefer replacing existing units line, otherwise uncomment default, else append +if grep -qE '^[[:space:]]*units[[:space:]]*=' "$CONFIG_FILE"; then + sed -i 's/^[[:space:]]*units[[:space:]]*=.*/units = "'"$new_units"'"/' "$CONFIG_FILE" +elif grep -qE '^[[:space:]]*#\s*units[[:space:]]*=' "$CONFIG_FILE"; then + sed -i 's/^[[:space:]]*#\s*units[[:space:]]*=.*/units = "'"$new_units"'"/' "$CONFIG_FILE" +else + printf '\nunits = "%s"\n' "$new_units" >> "$CONFIG_FILE" +fi + +pkill waybar-weather 2>/dev/null || true +notify-send "Weather units now ${new_units}" "Click on waybar-weather to update units" diff --git a/config/hypr/scripts/WallustSwww.sh b/config/hypr/scripts/WallustSwww.sh index 4d1fdd25..1f0f50c7 100755 --- a/config/hypr/scripts/WallustSwww.sh +++ b/config/hypr/scripts/WallustSwww.sh @@ -114,6 +114,37 @@ wallust_targets=( ) wait_for_templates "$start_ts" "${wallust_targets[@]}" || true +# Run kitty-only wallust config to keep terminal palette separate +run_wallust_with_config() { + local cfg="$1" + if wallust run --help 2>&1 | grep -q -E '(^|[[:space:]])-c([,[:space:]]|$)|--config'; then + wallust run -s -c "$cfg" "$wallpaper_path" || true + else + WALLUST_CONFIG="$cfg" wallust run -s "$wallpaper_path" || true + fi +} + +kitty_cfg="$HOME/.config/wallust/wallust-kitty.toml" +if [ -f "$kitty_cfg" ]; then + kitty_ts=$(date +%s) + run_wallust_with_config "$kitty_cfg" + wait_for_templates "$kitty_ts" "$HOME/.config/kitty/kitty-themes/01-Wallust.conf" || true +fi + +# Reload kitty colors when wallpaper-based theme is active +kitty_wallust_theme="$HOME/.config/kitty/kitty-themes/01-Wallust.conf" +if [ -s "$kitty_wallust_theme" ]; then + if command -v kitty >/dev/null 2>&1; then + kitty @ load-config >/dev/null 2>&1 || true + kitty @ set-colors --all --configured "$kitty_wallust_theme" >/dev/null 2>&1 || true + fi + if pidof kitty >/dev/null 2>&1; then + for pid in $(pidof kitty); do + kill -SIGUSR1 "$pid" 2>/dev/null || true + done + fi +fi + # Normalize Ghostty palette syntax in case ':' was used by older files if [ -f "$HOME/.config/ghostty/wallust.conf" ]; then sed -i -E 's/^(\s*palette\s*=\s*)([0-9]{1,2}):/\1\2=/' "$HOME/.config/ghostty/wallust.conf" 2>/dev/null || true diff --git a/config/hypr/scripts/WaybarCava.sh b/config/hypr/scripts/WaybarCava.sh index 3305bb67..98db60dd 100755 --- a/config/hypr/scripts/WaybarCava.sh +++ b/config/hypr/scripts/WaybarCava.sh @@ -10,6 +10,9 @@ if ! command -v cava >/dev/null 2>&1; then exit 1 fi +# Proactively reap any stale Waybar-spawned cava (unique temp conf names) +pkill -f 'waybar-cava\..*\.conf' 2>/dev/null || true + # 0..7 → ▁▂▃▄▅▆▇█ bar="▁▂▃▄▅▆▇█" dict="s/;//g" @@ -32,7 +35,11 @@ printf '%d' $$ >"$pidfile" # Unique temp config + cleanup on exit config_file="$(mktemp "$RUNTIME_DIR/waybar-cava.XXXXXX.conf")" -cleanup() { rm -f "$config_file" "$pidfile"; } +cleanup() { + # Kill children (cava, sed) of this script, then remove files + pkill -P "$$" 2>/dev/null || true + rm -f "$config_file" "$pidfile" +} trap cleanup EXIT INT TERM cat >"$config_file" <<EOF @@ -52,4 +59,5 @@ ascii_max_range = 7 EOF # Stream cava output and translate digits 0..7 to bar glyphs -exec cava -p "$config_file" | sed -u "$dict" +# (no exec: keep this shell as the parent so the trap can reap children) +cava -p "$config_file" | sed -u "$dict" diff --git a/config/hypr/scripts/dots-tui b/config/hypr/scripts/dots-tui new file mode 120000 index 00000000..007282b4 --- /dev/null +++ b/config/hypr/scripts/dots-tui @@ -0,0 +1 @@ +dots-tui-ubuntu-2404
\ No newline at end of file diff --git a/config/hypr/scripts/dots-tui-ubuntu-2404 b/config/hypr/scripts/dots-tui-ubuntu-2404 Binary files differnew file mode 100755 index 00000000..9aad6ecf --- /dev/null +++ b/config/hypr/scripts/dots-tui-ubuntu-2404 diff --git a/config/hypr/scripts/hyprshot.sh b/config/hypr/scripts/hyprshot.sh new file mode 100755 index 00000000..0fb976fa --- /dev/null +++ b/config/hypr/scripts/hyprshot.sh @@ -0,0 +1,317 @@ +#!/usr/bin/env bash + +set -e + +function Help() { + cat <<EOF +Usage: hyprshot [options ..] [-m [mode] ..] -- [command] + +Hyprshot is an utility to easily take screenshot in Hyprland using your mouse. + +It allows taking screenshots of windows, regions and monitors which are saved to a folder of your choosing and copied to your clipboard. + +Examples: + capture a window \`hyprshot -m window\` + capture active window to clipboard \`hyprshot -m window -m active --clipboard-only\` + capture selected monitor \`hyprshot -m output -m DP-1\` + +Options: + -h, --help show help message + -m, --mode one of: output, window, region, active, OUTPUT_NAME + -o, --output-folder directory in which to save screenshot + -f, --filename the file name of the resulting screenshot + -D, --delay how long to delay taking the screenshot after selection (seconds) + -z, --freeze freeze the screen on initialization + -d, --debug print debug information + -s, --silent don't send notification when screenshot is saved + -r, --raw output raw image data to stdout + -t, --notif-timeout notification timeout in milliseconds (default 5000) + --clipboard-only copy screenshot to clipboard and don't save image in disk + -- [command] open screenshot with a command of your choosing. e.g. hyprshot -m window -- mirage + +Modes: + output take screenshot of an entire monitor + window take screenshot of an open window + region take screenshot of selected region + active take screenshot of active window|output + (you must use --mode again with the intended selection) + OUTPUT_NAME take screenshot of output with OUTPUT_NAME + (you must use --mode again with the intended selection) + (you can get this from \`hyprctl monitors\`) +EOF +} + +function Print() { + if [ $DEBUG -eq 0 ]; then + return 0 + fi + + 1>&2 printf "$@" +} + +function send_notification() { + if [ $SILENT -eq 1 ]; then + return 0 + fi + + local message=$([ $CLIPBOARD -eq 1 ] && \ + echo "Image copied to the clipboard" || \ + echo "Image saved in <i>${1}</i> and copied to the clipboard.") + notify-send "Screenshot saved" \ + "${message}" \ + -t "$NOTIF_TIMEOUT" -i "${1}" -a Hyprshot +} + +function trim() { + Print "Geometry: %s\n" "${1}" + local geometry="${1}" + local xy_str=$(echo "${geometry}" | cut -d' ' -f1) + local wh_str=$(echo "${geometry}" | cut -d' ' -f2) + local x=`echo "${xy_str}" | cut -d',' -f1` + local y=`echo "${xy_str}" | cut -d',' -f2` + local width=`echo "${wh_str}" | cut -dx -f1` + local height=`echo "${wh_str}" | cut -dx -f2` + + local max_width=`hyprctl monitors -j | jq -r '[.[] | if (.transform % 2 == 0) then (.x + .width) else (.x + .height) end] | max'` + local max_height=`hyprctl monitors -j | jq -r '[.[] | if (.transform % 2 == 0) then (.y + .height) else (.y + .width) end] | max'` + + local min_x=`hyprctl monitors -j | jq -r '[.[] | (.x)] | min'` + local min_y=`hyprctl monitors -j | jq -r '[.[] | (.y)] | min'` + + local cropped_x=$x + local cropped_y=$y + local cropped_width=$width + local cropped_height=$height + + if ((x + width > max_width)); then + cropped_width=$((max_width - x)) + fi + if ((y + height > max_height)); then + cropped_height=$((max_height - y)) + fi + + if ((x < min_x)); then + cropped_x="$min_x" + cropped_width=$((cropped_width + x - min_x)) + fi + if ((y < min_y)); then + cropped_y="$min_y" + cropped_height=$((cropped_height + y - min_y)) + fi + + local cropped=`printf "%s,%s %sx%s\n" \ + "${cropped_x}" "${cropped_y}" \ + "${cropped_width}" "${cropped_height}"` + Print "Crop: %s\n" "${cropped}" + echo ${cropped} +} + +function save_geometry() { + local geometry="${1}" + local output="" + + if [ $RAW -eq 1 ]; then + grim -g "${geometry}" - + return 0 + fi + + if [ $CLIPBOARD -eq 0 ]; then + mkdir -p "$SAVEDIR" + grim -g "${geometry}" "$SAVE_FULLPATH" + output="$SAVE_FULLPATH" + wl-copy --type image/png < "$output" + [ -z "$COMMAND" ] || { + "$COMMAND" "$output" + } + else + wl-copy --type image/png < <(grim -g "${geometry}" -) + fi + + send_notification $output +} + +function checkRunning() { + sleep 1 + while [[ 1 == 1 ]]; do + if [[ $(pgrep slurp | wc -m) == 0 ]]; then + pkill hyprpicker + exit + fi + done +} + +function begin_grab() { + if [ $FREEZE -eq 1 ] && [ "$(command -v "hyprpicker")" ] >/dev/null 2>&1; then + hyprpicker -r -z & + sleep 0.2 + HYPRPICKER_PID=$! + fi + local option=$1 + case $option in + output) + if [ $CURRENT -eq 1 ]; then + local geometry=`grab_active_output` + elif [ -z $SELECTED_MONITOR ]; then + local geometry=`grab_output` + else + local geometry=`grab_selected_output $SELECTED_MONITOR` + fi + ;; + region) + local geometry=`grab_region` + ;; + window) + if [ $CURRENT -eq 1 ]; then + local geometry=`grab_active_window` + else + local geometry=`grab_window` + fi + geometry=`trim "${geometry}"` + ;; + esac + if [ ${DELAY} -gt 0 ] 2>/dev/null; then + sleep ${DELAY} + fi + save_geometry "${geometry}" +} + +function grab_output() { + slurp -or +} + +function grab_active_output() { + local active_workspace=`hyprctl -j activeworkspace` + local monitors=`hyprctl -j monitors` + Print "Monitors: %s\n" "$monitors" + Print "Active workspace: %s\n" "$active_workspace" + local current_monitor="$(echo $monitors | jq -r 'first(.[] | select(.activeWorkspace.id == '$(echo $active_workspace | jq -r '.id')'))')" + Print "Current output: %s\n" "$current_monitor" + echo $current_monitor | jq -r '"\(.x),\(.y) \(.width/.scale|round)x\(.height/.scale|round)"' +} + +function grab_selected_output() { + local monitor=`hyprctl -j monitors | jq -r '.[] | select(.name == "'$(echo $1)'")'` + Print "Capturing: %s\n" "${1}" + echo $monitor | jq -r '"\(.x),\(.y) \(.width/.scale|round)x\(.height/.scale|round)"' +} + +function grab_region() { + slurp -d +} + +function grab_window() { + local monitors=`hyprctl -j monitors` + local clients=`hyprctl -j clients | jq -r '[.[] | select(.workspace.id | contains('$(echo $monitors | jq -r 'map(.activeWorkspace.id) | join(",")')'))]'` + Print "Monitors: %s\n" "$monitors" + Print "Clients: %s\n" "$clients" + # Generate boxes for each visible window and send that to slurp + # through stdin + local boxes="$(echo $clients | jq -r '.[] | "\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1]) \(.title)"' | cut -f1,2 -d' ')" + Print "Boxes:\n%s\n" "$boxes" + slurp -r <<< "$boxes" +} + +function grab_active_window() { + local active_window=`hyprctl -j activewindow` + local box=$(echo $active_window | jq -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"' | cut -f1,2 -d' ') + Print "Box:\n%s\n" "$box" + echo "$box" +} + +function parse_mode() { + local mode="${1}" + + case $mode in + window | region | output) + OPTION=$mode + ;; + active) + CURRENT=1 + ;; + *) + hyprctl monitors -j | jq -re '.[] | select(.name == "'$(echo $mode)'")' &>/dev/null + SELECTED_MONITOR=$mode + ;; + esac +} + +function args() { + local options=$(getopt -o hf:o:m:D:dszr:t: --long help,filename:,output-folder:,mode:,delay:,clipboard-only,debug,silent,freeze,raw,notif-timeout: -- "$@") + eval set -- "$options" + + while true; do + case "$1" in + -h | --help) + Help + exit + ;; + -o | --output-folder) + shift; + SAVEDIR=$1 + ;; + -f | --filename) + shift; + FILENAME=$1 + ;; + -D | --delay) + shift; + DELAY=$1 + ;; + -m | --mode) + shift; + parse_mode $1 + ;; + --clipboard-only) + CLIPBOARD=1 + ;; + -d | --debug) + DEBUG=1 + ;; + -z | --freeze) + FREEZE=1 + ;; + -s | --silent) + SILENT=1 + ;; + -r | --raw) + RAW=1 + ;; + -t | --notif-timeout) + shift; + NOTIF_TIMEOUT=$1 + ;; + --) + shift # Skip -- argument + COMMAND=${@:2} + break;; + esac + shift + done + + if [ -z $OPTION ]; then + Print "A mode is required\n\nAvailable modes are:\n\toutput\n\tregion\n\twindow\n" + exit 2 + fi +} + +if [ -z $1 ]; then + Help + exit +fi + +CLIPBOARD=0 +DEBUG=0 +SILENT=0 +RAW=0 +NOTIF_TIMEOUT=5000 +CURRENT=0 +FREEZE=0 +[ -z "$XDG_PICTURES_DIR" ] && type xdg-user-dir &> /dev/null && XDG_PICTURES_DIR=$(xdg-user-dir PICTURES) +FILENAME="$(date +'%Y-%m-%d-%H%M%S_hyprshot.png')" +[ -z "$HYPRSHOT_DIR" ] && SAVEDIR=${XDG_PICTURES_DIR:=~} || SAVEDIR=${HYPRSHOT_DIR} + +args $0 "$@" + +SAVE_FULLPATH="$SAVEDIR/$FILENAME" +[ $CLIPBOARD -eq 0 ] && Print "Saving in: %s\n" "$SAVE_FULLPATH" +begin_grab $OPTION & checkRunning diff --git a/config/hypr/scripts/install-uv.sh b/config/hypr/scripts/install-uv.sh new file mode 100755 index 00000000..3582a78e --- /dev/null +++ b/config/hypr/scripts/install-uv.sh @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +curl -LsSf https://astral.sh/uv/install.sh | sh diff --git a/config/hypr/v2.3.20 b/config/hypr/v2.3.21 index 51de9972..51de9972 100644 --- a/config/hypr/v2.3.20 +++ b/config/hypr/v2.3.21 diff --git a/config/hypr/wallpaper_effects/.wallpaper_current b/config/hypr/wallpaper_effects/.wallpaper_current Binary files differindex ceb42fa1..caa4bbfa 100644 --- a/config/hypr/wallpaper_effects/.wallpaper_current +++ b/config/hypr/wallpaper_effects/.wallpaper_current diff --git a/config/kitty/kitty.conf b/config/kitty/kitty.conf index e8a3eac7..4757ed7e 100644 --- a/config/kitty/kitty.conf +++ b/config/kitty/kitty.conf @@ -18,6 +18,7 @@ cursor_trail 1 # change to x11 or wayland or leave auto linux_display_server auto +allow_remote_control yes scrollback_lines 2000 wheel_scroll_min_lines 1 @@ -29,6 +30,4 @@ window_padding_width 4 selection_foreground none selection_background none -foreground #dddddd -background #000000 -cursor #dddddd
\ No newline at end of file +# foreground/background/cursor are set by the active theme diff --git a/config/rofi/00-terminal.rasi b/config/rofi/00-terminal.rasi new file mode 100644 index 00000000..ab98f4eb --- /dev/null +++ b/config/rofi/00-terminal.rasi @@ -0,0 +1,8 @@ +/* Global Rofi runtime configuration overrides + * Ensures terminal-based apps launched from drun/run use kitty instead of xterm. + */ +configuration { + terminal: "kitty"; + // keep run-shell explicit to avoid theme overrides changing behavior + run-shell-command: "{terminal} -e {cmd}"; +} diff --git a/config/rofi/config.rasi b/config/rofi/config.rasi index 8fabfa67..e81dd459 100644 --- a/config/rofi/config.rasi +++ b/config/rofi/config.rasi @@ -16,6 +16,9 @@ /* ---- Global Configuration Fonts ---- */ @import "~/.config/rofi/0-shared-fonts.rasi" +/* Force kitty as terminal for Terminal=true apps and run-shell */ +@import "~/.config/rofi/00-terminal.rasi" + /* note: Main themes in ~/.config/rofi/themes */ /* You can manually change here or you can use rofi theme selector SUPER SHIFT E */ diff --git a/config/wallust/templates/colors-waybar.css b/config/wallust/templates/colors-waybar.css index 129d930d..7dd191aa 100644 --- a/config/wallust/templates/colors-waybar.css +++ b/config/wallust/templates/colors-waybar.css @@ -1,7 +1,7 @@ /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ /* wallust template - colors-waybar */ - @define-color foreground {{foreground}}; + @define-color foreground {{color12}}; @define-color background {{background}}; @define-color background-alt rgba({{background | rgb}},0.25); @define-color cursor {{cursor}}; diff --git a/config/wallust/wallust-kitty.toml b/config/wallust/wallust-kitty.toml new file mode 100644 index 00000000..05ef2b55 --- /dev/null +++ b/config/wallust/wallust-kitty.toml @@ -0,0 +1,11 @@ +# /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ # +# wallust configuration - kitty only + +backend = "fastresize" +color_space = "labmixed" +palette = "softdark16" +threshold = 11 + +[templates] +kitty.template = 'colors-kitty.conf' +kitty.target = '~/.config/kitty/kitty-themes/01-Wallust.conf' diff --git a/config/wallust/wallust.toml b/config/wallust/wallust.toml index 76ac40f2..b74794d9 100644 --- a/config/wallust/wallust.toml +++ b/config/wallust/wallust.toml @@ -3,7 +3,7 @@ # How the image is parse, in order to get the colors: # full - resized - wal - thumb - fastresize - kmeans -backend = "kmeans" +backend = "fastresize" # What color space to use to produce and select the most prominent colors: # lab - labmixed - lch - lchmixed @@ -46,8 +46,6 @@ rofi.target = '~/.config/rofi/wallust/colors-rofi.rasi' waybar.template = 'colors-waybar.css' waybar.target = '~/.config/waybar/wallust/colors-waybar.css' -kitty.template = 'colors-kitty.conf' -kitty.target = '~/.config/kitty/kitty-themes/01-Wallust.conf' ghostty.template = 'colors-ghostty.conf' ghostty.target = '~/.config/ghostty/wallust.conf' diff --git a/config/waybar-weather/cityname.txt b/config/waybar-weather/cityname.txt new file mode 100644 index 00000000..c9a67422 --- /dev/null +++ b/config/waybar-weather/cityname.txt @@ -0,0 +1,13 @@ +## SPDX-FileCopyrightText: Winni Neessen <wn@neessen.dev> +## +## SPDX-License-Identifier: MIT +## +## Example file for the cityname_file geobus provider +## This provider is based on a simple file containing a <city/town>,<country> pair +## pointing towards the desired location. +## +## The geolocation file must be placed in the waybar-weather config directory: +## ~/.config/waybar-weather/cityname +## +## The following coordinates point towards coordinates: 37.332806,-122.005371 +Apple Park Cupertino, California
\ No newline at end of file diff --git a/config/waybar-weather/config.toml b/config/waybar-weather/config.toml new file mode 100644 index 00000000..7a7b9b28 --- /dev/null +++ b/config/waybar-weather/config.toml @@ -0,0 +1,176 @@ +# SPDX-FileCopyrightText: Winni Neessen <wn@neessen.dev> +# +# SPDX-License-Identifier: MIT + +## ============================================================================= +## General Configuration +## ============================================================================= + +## Measurement system used for weather data. +## Allowed values: "metric", "imperial" +## Default: "metric" +# +# units = "metric" + +## Locale used for geolocation and formatting. +## If unset, the locale may be determined automatically from the environment. +# +# locale = "en-US" + +## Log verbosity level. +## Supported values: +## DEBUG = -4 +## INFO = 0 +## WARN = 4 +## ERROR = 8 +## Default: 0 (INFO) +# +# loglevel = 0 + + +## ============================================================================= +## Weather Configuration +## ============================================================================= +[weather] + +## Weather data provider. +## Supported providers: +## - Open-Meteo => config name: "open-meteo" +## Default: "open-meteo" +# +# provider = "open-meteo" + +## Number of hours ahead to use as forecast values +## Allowed values: 1–24 +## Default: 3 +# +# forecast_hours = 3 + +## Temperature threshold below which conditions are classified as cold. +## Defaults are expressed in degrees Celsius and are based on +## potentially hazardous driving conditions. +## +## If the temperature goes below the configured cold_threshold, waybar-weather +## will output an additional CSS class "cold", that can be used in the waybar style +## config to style waybar-weather differently in these kind of conditions. +## +## Default: 2 +# +# cold_threshold = 2.0 + +## Temperature threshold above which conditions are classified as hot. +## Defaults are expressed in degrees Celsius and are based on +## uncomfortable or potentially dangerous heat levels. +## +## If the temperature goes above the configured hot_threshold, waybar-weather +## will output an additional CSS class "hot", that can be used in the waybar style +## config to style waybar-weather differently in these kind of conditions. +## +## Default: 30 +# +# hot_threshold = 30.0 + + +## ============================================================================= +## Update and Output Intervals +## ============================================================================= +[intervals] + +## Interval at which weather data is refreshed from the provider. +## Default: 15m +# +# weather_update = "15m" + +## Interval at which output data is emitted to waybar. +## Default: 30s +# +# output = "30s" + + +## ============================================================================= +## Output Templates +## ============================================================================= +[templates] + +## waybar-weather providers different templating options, that allow you to customize waybar-weather +## in the way you like. waybar-weather uses the Go templating syntax (reference: https://pkg.go.dev/text/template) +## We provide several variables and functions that represent address or weather data (current or forcasted) +## that can be used to show as output for waybar-weather. +## +## In general there are two different types of output: "text" and "tooltip". "text" is the value that is +## always shown in the waybar and "tooltip" is the text that is shown when hovering over the waybar menu item. +## Additionally, we provide "alt_text" and "alt_tooltip" which can be used as alternative text to be displayed. +## You can toggle between text/tooltip and alt_text/alt_tooltip by clicking the menu item. Be default we use +## this to toggle between current and forecasted weather data. +## +## Please refer to the README for available variables and functions. + +## Primary text template used for output rendering. +# +# text = "" + +## Alternative text template. +# +# alt_text = "" + +## Primary tooltip template. +# +# tooltip = "" + +## Alternative tooltip template. +# +# alt_tooltip = "" + +## Use CSS-based icons instead of rendering icons directly in the template. +## When enabled, waybar-weather will emit appropriate CSS classes +## that can be styled in the waybar stylesheet. +## +## Default: false +# +# use_css_icon = false + + +## ============================================================================= +## Geolocation Configuration +## ============================================================================= +[geolocation] + +## Path to a static geolocation file for the geolocation_file provider. +## If set, this file is used with the highest accuracy. +# +# geolocation_file = "" + +## Path to a static city name file. +## If set, this file is used to resolve human-readable location names. +# +# cityname_file = "" + +## Disable individual geolocation providers. +## All providers are enabled by default - they might not provide data, though (e. g. if no gpsd is running, +## the gpsd provider will not be able to provide location data). +## +## For details on the different geolocation providers, please refer the README. +# +# disable_geoip = false +# disable_geoapi = false +# disable_geolocation_file = false +# disable_cityname_file = false +# disable_ichnaea = false +# disable_gpsd = false + + +## ============================================================================= +## Geocoder Configuration +## ============================================================================= +[geocoder] + +## For details on the different geocoder providers, please refer the README. + +## Reverse geocoding provider used to resolve human-readable locations. +## Default: "nominatim" +# +# provider = "nominatim" + +## API key for the selected geocoding provider, if required. +# +# apikey = "" diff --git a/config/waybar-weather/geolocation.txt b/config/waybar-weather/geolocation.txt new file mode 100644 index 00000000..498d6ac2 --- /dev/null +++ b/config/waybar-weather/geolocation.txt @@ -0,0 +1,13 @@ +## SPDX-FileCopyrightText: Winni Neessen <wn@neessen.dev> +## +## SPDX-License-Identifier: MIT +## +## Example file for the geolocation_file geobus provider +## This provider is based on a simple file containing a <latitude>,<longitude> pair +## pointing towards the desired location. +## +## The geolocation file must be placed in the waybar-weather config directory: +## ~/.config/waybar-weather/geolocation +## +## The following coordinates point towards Apple Park in Cupertino, CA +37.332806,-122.005371
\ No newline at end of file diff --git a/config/waybar/ModulesCustom b/config/waybar/ModulesCustom index 6ead6826..8887fa1c 100644 --- a/config/waybar/ModulesCustom +++ b/config/waybar/ModulesCustom @@ -18,6 +18,14 @@ "tooltip": true, }, +"custom/weather2": { + "exec": "waybar-weather", + "restart-interval": 60, + "return-type": "json", + "hide-empty-text": true, + "on-click": "pkill -USR1 waybar-weather" +}, + "custom/hyprpicker": { "format": "", "on-click": "hyprpicker | wl-copy", @@ -136,7 +144,9 @@ // This is a custom cava visualizer "custom/cava_mviz": { "exec": "$HOME/.config/hypr/scripts/WaybarCava.sh", - "format": "{}" + "format": "{}", + "return-type": "text", + "tooltip": false }, "custom/playerctl": { diff --git a/config/waybar/config b/config/waybar/config index c25249db..ae7163b4 120000 --- a/config/waybar/config +++ b/config/waybar/config @@ -1 +1 @@ -/home/ja/.config/waybar/configs/[TOP] Simple
\ No newline at end of file +/home/dwilliams/.config/waybar/configs/TOP-Default-Laptop
\ No newline at end of file diff --git a/config/waybar/configs/[BOT & Left] SouthWest b/config/waybar/configs/BOT-&-Left-SouthWest index 372b51fd..5eb6329d 100644 --- a/config/waybar/configs/[BOT & Left] SouthWest +++ b/config/waybar/configs/BOT-&-Left-SouthWest @@ -38,7 +38,7 @@ "modules-right": [ //"network", //"bluetooth", - "custom/weather", + "custom/weather2", "battery", "backlight", "pulseaudio", diff --git a/config/waybar/configs/[BOT & Right] SouthEast b/config/waybar/configs/BOT-&-Right-SouthEast index 53c5387a..d3de215a 100644 --- a/config/waybar/configs/[BOT & Right] SouthEast +++ b/config/waybar/configs/BOT-&-Right-SouthEast @@ -38,7 +38,7 @@ "modules-right": [ //"network", //"bluetooth", - "custom/weather", + "custom/weather2", "battery", "backlight", "pulseaudio", diff --git a/config/waybar/configs/[BOT] Camellia b/config/waybar/configs/BOT-Camellia index 5e09e64c..5e09e64c 100644 --- a/config/waybar/configs/[BOT] Camellia +++ b/config/waybar/configs/BOT-Camellia diff --git a/config/waybar/configs/[BOT] Chrysanthemum b/config/waybar/configs/BOT-Chrysanthemum index 366d0312..366d0312 100644 --- a/config/waybar/configs/[BOT] Chrysanthemum +++ b/config/waybar/configs/BOT-Chrysanthemum diff --git a/config/waybar/configs/[BOT] Default b/config/waybar/configs/BOT-Default index 6feb5c13..3e8bfe46 100644 --- a/config/waybar/configs/[BOT] Default +++ b/config/waybar/configs/BOT-Default @@ -38,7 +38,7 @@ "hyprland/workspaces#rw", "clock", "custom/separator#dot-line", - "custom/weather", + "custom/weather2", "custom/separator#dot-line", "idle_inhibitor", "custom/hint", diff --git a/config/waybar/configs/[BOT] Default Laptop b/config/waybar/configs/BOT-Default-Laptop index 59ddccb1..df0c9fc4 100644 --- a/config/waybar/configs/[BOT] Default Laptop +++ b/config/waybar/configs/BOT-Default-Laptop @@ -38,7 +38,7 @@ "hyprland/workspaces#rw", "clock", "custom/separator#dot-line", - "custom/weather", + "custom/weather2", "custom/separator#dot-line", "idle_inhibitor", "custom/hint", diff --git a/config/waybar/configs/[BOT] Gardenia b/config/waybar/configs/BOT-Gardenia index 09c7537e..09c7537e 100644 --- a/config/waybar/configs/[BOT] Gardenia +++ b/config/waybar/configs/BOT-Gardenia diff --git a/config/waybar/configs/[BOT] Peony b/config/waybar/configs/BOT-Peony index 8a11dc8e..8a11dc8e 100644 --- a/config/waybar/configs/[BOT] Peony +++ b/config/waybar/configs/BOT-Peony diff --git a/config/waybar/configs/[BOT] Simple b/config/waybar/configs/BOT-Simple index 05941ed5..05941ed5 100644 --- a/config/waybar/configs/[BOT] Simple +++ b/config/waybar/configs/BOT-Simple diff --git a/config/waybar/configs/[BOT] Sleek b/config/waybar/configs/BOT-Sleek index 2220db6c..2220db6c 100644 --- a/config/waybar/configs/[BOT] Sleek +++ b/config/waybar/configs/BOT-Sleek diff --git a/config/waybar/configs/[LEFT] WestWing b/config/waybar/configs/LEFT-WestWing index 2195750f..2195750f 100644 --- a/config/waybar/configs/[LEFT] WestWing +++ b/config/waybar/configs/LEFT-WestWing diff --git a/config/waybar/configs/[LEFT] WestWing v2 b/config/waybar/configs/LEFT-WestWing-v2 index e472e9f6..e472e9f6 100644 --- a/config/waybar/configs/[LEFT] WestWing v2 +++ b/config/waybar/configs/LEFT-WestWing-v2 diff --git a/config/waybar/configs/[RIGHT] EastWing b/config/waybar/configs/RIGHT-EastWing index 8b964f03..8b964f03 100644 --- a/config/waybar/configs/[RIGHT] EastWing +++ b/config/waybar/configs/RIGHT-EastWing diff --git a/config/waybar/configs/[RIGHT] EastWing v2 b/config/waybar/configs/RIGHT-EastWing-v2 index 628f912f..628f912f 100644 --- a/config/waybar/configs/[RIGHT] EastWing v2 +++ b/config/waybar/configs/RIGHT-EastWing-v2 diff --git a/config/waybar/configs/[TOP & BOT] SummitSplit b/config/waybar/configs/TOP-&-BOT-SummitSplit index 1cf7d206..7ed65f97 100644 --- a/config/waybar/configs/[TOP & BOT] SummitSplit +++ b/config/waybar/configs/TOP-&-BOT-SummitSplit @@ -37,7 +37,7 @@ ], "modules-right": [ - "custom/weather", + "custom/weather2", "battery", "backlight", "bluetooth", diff --git a/config/waybar/configs/[TOP & BOT] SummitSplit-glass b/config/waybar/configs/TOP-&-BOT-SummitSplit-glass index 952aa30d..0cef4521 100644 --- a/config/waybar/configs/[TOP & BOT] SummitSplit-glass +++ b/config/waybar/configs/TOP-&-BOT-SummitSplit-glass @@ -37,7 +37,7 @@ ], "modules-right": [ - "custom/weather", + "custom/weather2", "battery", "backlight", "bluetooth", diff --git a/config/waybar/configs/[TOP & BOT] SummitSplit v2 b/config/waybar/configs/TOP-&-BOT-SummitSplit-v2 index ec5ce391..ec5ce391 100644 --- a/config/waybar/configs/[TOP & BOT] SummitSplit v2 +++ b/config/waybar/configs/TOP-&-BOT-SummitSplit-v2 diff --git a/config/waybar/configs/TOP-&-BOT-SummitSplit-v3 b/config/waybar/configs/TOP-&-BOT-SummitSplit-v3 new file mode 100644 index 00000000..fc2ebecb --- /dev/null +++ b/config/waybar/configs/TOP-&-BOT-SummitSplit-v3 @@ -0,0 +1,79 @@ +//Updated Sumsplit to include 0-JA-0 Top and updated BOT + [ + { + "include": [ + "$HOME/.config/waybar/Modules", + "$HOME/.config/waybar/ModulesWorkspaces", + "$HOME/.config/waybar/ModulesCustom", + "$HOME/.config/waybar/ModulesGroups", + "$HOME/.config/waybar/UserModules", + ], + "name": "topbar", + "layer": "top", + "position": "top", + //"mode": "dock", + "exclusive": true, + "spacing": 2, + "passthrough": false, + "gtk-layer-shell": true, + "reload_style_on_change": true, + "modules-left": [ + "idle_inhibitor", + "custom/separator#blank", + "tray", + "connections", + "clock", + "network#speed", + + "custom/separator#blank_2", + ], + "modules-center": ["group/app_drawer", + "custom/separator#dot-line", + "hyprland/workspaces#rw", + "custom/separator#dot-line", + "group/notify",], + + + "modules-right": [ + + "group/laptop", + "custom/separator#blank", + "group/mobo_drawer", + "custom/separator#line", + "group/audio", + "custom/separator#dot-line", + "mpris", + "custom/separator#blank", + "custom/nightlight", + "group/status", + ], + + }, + { + "include": [ + "$HOME/.config/waybar/Modules", + "$HOME/.config/waybar/ModulesWorkspaces", + "$HOME/.config/waybar/ModulesCustom", + "$HOME/.config/waybar/ModulesGroups", + "$HOME/.config/waybar/UserModules", + ], + "name": "bottombar", + "layer": "top", + "position": "bottom", + "height": 30, + "mode": "dock", + "exclusive": true, + "spacing": 2, + "passthrough": true, + "gtk-layer-shell": true, + "reload_style_on_change": true, + "modules-left": [ "hyprland/window", + "custom/cava_mviz", "custom/playerctl"], + "modules-center": ["wlr/taskbar"], + "modules-right": ["custom/backlight", + "backlight/slider", + "custom/speaker", + "pulseaudio/slider", "custom/updater", + ], + } + ] diff --git a/config/waybar/configs/[TOP & Left] NorthWest b/config/waybar/configs/TOP-&-Left-NorthWest index 50c7d228..99282e23 100644 --- a/config/waybar/configs/[TOP & Left] NorthWest +++ b/config/waybar/configs/TOP-&-Left-NorthWest @@ -37,7 +37,7 @@ "modules-right": [ "network", "bluetooth", - "custom/weather", + "custom/weather2", "custom/separator#blank_2", "group/audio", "custom/separator#blank_2", diff --git a/config/waybar/configs/[TOP & Right] NorthEast b/config/waybar/configs/TOP-&-Right-NorthEast index c1a56dd2..deba8fb0 100644 --- a/config/waybar/configs/[TOP & Right] NorthEast +++ b/config/waybar/configs/TOP-&-Right-NorthEast @@ -37,7 +37,7 @@ "modules-right": [ "network", "bluetooth", - "custom/weather", + "custom/weather2", "custom/separator#blank_2", "group/audio", "custom/separator#blank_2", diff --git a/config/waybar/configs/[TOP] 0-Ja-0 b/config/waybar/configs/TOP-0-Ja-0 index e54d32f8..e54d32f8 100644 --- a/config/waybar/configs/[TOP] 0-Ja-0 +++ b/config/waybar/configs/TOP-0-Ja-0 diff --git a/config/waybar/configs/[TOP] Arrow b/config/waybar/configs/TOP-Arrow index 14089a41..14089a41 100644 --- a/config/waybar/configs/[TOP] Arrow +++ b/config/waybar/configs/TOP-Arrow diff --git a/config/waybar/configs/[TOP] Camellia b/config/waybar/configs/TOP-Camellia index d6723438..d6723438 100644 --- a/config/waybar/configs/[TOP] Camellia +++ b/config/waybar/configs/TOP-Camellia diff --git a/config/waybar/configs/[TOP] Chrysanthemum b/config/waybar/configs/TOP-Chrysanthemum index 2028b179..2028b179 100644 --- a/config/waybar/configs/[TOP] Chrysanthemum +++ b/config/waybar/configs/TOP-Chrysanthemum diff --git a/config/waybar/configs/[TOP] Default b/config/waybar/configs/TOP-Default index 30471589..03dba497 100644 --- a/config/waybar/configs/[TOP] Default +++ b/config/waybar/configs/TOP-Default @@ -38,7 +38,7 @@ "hyprland/workspaces#rw", "clock", "custom/separator#dot-line", - "custom/weather", + "custom/weather2", "custom/separator#dot-line", "idle_inhibitor", "custom/hint", diff --git a/config/waybar/configs/[TOP] Default Laptop b/config/waybar/configs/TOP-Default-Laptop index 7032ab2e..0d17d832 100644 --- a/config/waybar/configs/[TOP] Default Laptop +++ b/config/waybar/configs/TOP-Default-Laptop @@ -36,7 +36,7 @@ "group/notify", "hyprland/workspaces#rw", "clock", - "custom/weather", + "custom/weather2", "idle_inhibitor", "custom/hint", ], diff --git a/config/waybar/configs/[TOP] Default Laptop-glass b/config/waybar/configs/TOP-Default-Laptop-glass index 8b285f8a..1e94d40a 100644 --- a/config/waybar/configs/[TOP] Default Laptop-glass +++ b/config/waybar/configs/TOP-Default-Laptop-glass @@ -35,7 +35,7 @@ "group/notify", "hyprland/workspaces#rw", "clock", - "custom/weather", + "custom/weather2", "idle_inhibitor", "custom/hint", ], diff --git a/config/waybar/configs/[TOP] Default Laptop (old v1) b/config/waybar/configs/TOP-Default-Laptop-old-v1 index dd9c31f2..76dcd85e 100644 --- a/config/waybar/configs/[TOP] Default Laptop (old v1) +++ b/config/waybar/configs/TOP-Default-Laptop-old-v1 @@ -30,7 +30,7 @@ "custom/separator#dot-line", "memory", "custom/separator#dot-line", - "custom/weather", + "custom/weather2", "custom/separator#blank_3", "custom/cava_mviz", ], diff --git a/config/waybar/configs/[TOP] Default Laptop (old v2) b/config/waybar/configs/TOP-Default-Laptop-old-v2 index d1395b3e..5aea9d9b 100644 --- a/config/waybar/configs/[TOP] Default Laptop (old v2) +++ b/config/waybar/configs/TOP-Default-Laptop-old-v2 @@ -30,7 +30,7 @@ "custom/separator#blank", "group/laptop", "custom/separator#line", - "custom/weather", + "custom/weather2", ], "modules-center": [ diff --git a/config/waybar/configs/[TOP] Default Laptop (old v3) b/config/waybar/configs/TOP-Default-Laptop-old-v3 index aefa324d..762eddb1 100644 --- a/config/waybar/configs/[TOP] Default Laptop (old v3) +++ b/config/waybar/configs/TOP-Default-Laptop-old-v3 @@ -30,7 +30,7 @@ "custom/separator#blank", "group/laptop", "custom/separator#line", - "custom/weather", + "custom/weather2", ], "modules-center": [ diff --git a/config/waybar/configs/[TOP] Default Laptop (old v4) b/config/waybar/configs/TOP-Default-Laptop-old-v4 index d7bdb16a..b20c284d 100644 --- a/config/waybar/configs/[TOP] Default Laptop (old v4) +++ b/config/waybar/configs/TOP-Default-Laptop-old-v4 @@ -28,7 +28,7 @@ "custom/separator#blank", "group/laptop", "custom/separator#line", - "custom/weather", + "custom/weather2", ], "modules-center": [ diff --git a/config/waybar/configs/[TOP] Default Laptop (old v5) b/config/waybar/configs/TOP-Default-Laptop-old-v5 index 1062cbf0..af827aa3 100644 --- a/config/waybar/configs/[TOP] Default Laptop (old v5) +++ b/config/waybar/configs/TOP-Default-Laptop-old-v5 @@ -38,7 +38,7 @@ "hyprland/workspaces#rw", "clock", "custom/separator#dot-line", - "custom/weather", + "custom/weather2", "custom/separator#dot-line", "idle_inhibitor", "custom/hint", diff --git a/config/waybar/configs/[TOP] Default (old v1) b/config/waybar/configs/TOP-Default-old-v1 index ea5b5141..83e3726c 100644 --- a/config/waybar/configs/[TOP] Default (old v1) +++ b/config/waybar/configs/TOP-Default-old-v1 @@ -30,7 +30,7 @@ "custom/separator#dot-line", "memory", "custom/separator#dot-line", - "custom/weather", + "custom/weather2", "custom/separator#blank_3", "custom/cava_mviz", ], diff --git a/config/waybar/configs/[TOP] Default (old v2) b/config/waybar/configs/TOP-Default-old-v2 index 56068435..ef28bf86 100644 --- a/config/waybar/configs/[TOP] Default (old v2) +++ b/config/waybar/configs/TOP-Default-old-v2 @@ -27,7 +27,7 @@ "custom/separator#dot-line", "group/motherboard", "custom/separator#line", - "custom/weather", + "custom/weather2", ], "modules-center": [ diff --git a/config/waybar/configs/[TOP] Default (old v3) b/config/waybar/configs/TOP-Default-old-v3 index 7d98a7e5..273ddbd9 100644 --- a/config/waybar/configs/[TOP] Default (old v3) +++ b/config/waybar/configs/TOP-Default-old-v3 @@ -29,7 +29,7 @@ "group/mobo_drawer", "custom/separator#blank", "custom/separator#line", - "custom/weather", + "custom/weather2", ], "modules-center": [ diff --git a/config/waybar/configs/[TOP] Default (old v4) b/config/waybar/configs/TOP-Default-old-v4 index ec897196..dd5a9033 100644 --- a/config/waybar/configs/[TOP] Default (old v4) +++ b/config/waybar/configs/TOP-Default-old-v4 @@ -26,7 +26,7 @@ "custom/separator#dot-line", "group/mobo_drawer", "custom/separator#line", - "custom/weather", + "custom/weather2", ], "modules-center": [ diff --git a/config/waybar/configs/[TOP] Everforest b/config/waybar/configs/TOP-Everforest index 26bec9d8..26bec9d8 100644 --- a/config/waybar/configs/[TOP] Everforest +++ b/config/waybar/configs/TOP-Everforest diff --git a/config/waybar/configs/[TOP] Everforest-glass b/config/waybar/configs/TOP-Everforest-glass index 65e7542a..65e7542a 100644 --- a/config/waybar/configs/[TOP] Everforest-glass +++ b/config/waybar/configs/TOP-Everforest-glass diff --git a/config/waybar/configs/[TOP] Gardenia b/config/waybar/configs/TOP-Gardenia index 1357da5f..1357da5f 100644 --- a/config/waybar/configs/[TOP] Gardenia +++ b/config/waybar/configs/TOP-Gardenia diff --git a/config/waybar/configs/[TOP] Minimal - Long b/config/waybar/configs/TOP-Minimal-Long index a40aa673..a40aa673 100644 --- a/config/waybar/configs/[TOP] Minimal - Long +++ b/config/waybar/configs/TOP-Minimal-Long diff --git a/config/waybar/configs/[TOP] Minimal - Short b/config/waybar/configs/TOP-Minimal-Short index 99d38b6c..5f0af150 100644 --- a/config/waybar/configs/[TOP] Minimal - Short +++ b/config/waybar/configs/TOP-Minimal-Short @@ -17,7 +17,7 @@ "modules-left": [ "clock", - "custom/weather", + "custom/weather2", ], "modules-center": [ diff --git a/config/waybar/configs/[TOP] Peony b/config/waybar/configs/TOP-Peony index 7f666c2f..7f666c2f 100644 --- a/config/waybar/configs/[TOP] Peony +++ b/config/waybar/configs/TOP-Peony diff --git a/config/waybar/configs/[TOP] Simple b/config/waybar/configs/TOP-Simple index acfa8a43..acfa8a43 100644 --- a/config/waybar/configs/[TOP] Simple +++ b/config/waybar/configs/TOP-Simple diff --git a/config/waybar/configs/[TOP] Simpliest b/config/waybar/configs/TOP-Simpliest index 15c40918..15c40918 100644 --- a/config/waybar/configs/[TOP] Simpliest +++ b/config/waybar/configs/TOP-Simpliest diff --git a/config/waybar/configs/[TOP] Sleek b/config/waybar/configs/TOP-Sleek index cd50039c..cd50039c 100644 --- a/config/waybar/configs/[TOP] Sleek +++ b/config/waybar/configs/TOP-Sleek diff --git a/config/waybar/configs/TOP-ddubs-simple-bar b/config/waybar/configs/TOP-ddubs-simple-bar new file mode 100644 index 00000000..1b459c19 --- /dev/null +++ b/config/waybar/configs/TOP-ddubs-simple-bar @@ -0,0 +1,54 @@ +/* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ + +// ### DEFAULT Laptop - Top ### // +{ +"include": [ + "$HOME/.config/waybar/Modules", + "$HOME/.config/waybar/ModulesWorkspaces", + "$HOME/.config/waybar/ModulesCustom", + "$HOME/.config/waybar/ModulesGroups", + "$HOME/.config/waybar/UserModules", + ], +"layer": "top", +//"mode": "dock", +"exclusive": true, +"passthrough": false, +"position": "top", +"spacing": 3, +"fixed-center": true, +"ipc": true, +"margin-top": 3, +"margin-left": 8, +"margin-right": 8, + +"modules-left": [ + "custom/separator#blank", + "custom/separator#blank", + "custom/cava_mviz", + "custom/separator#blank", + "custom/separator#blank", + "custom/playerctl", + "custom/separator#blank", + "hyprland/window", + ], + +"modules-center": [ + "custom/separator#blank", + "custom/swaync", + "hyprland/workspaces#rw", + "clock", + "idle_inhibitor", + ], + +"modules-right": [ + "pulseaudio", + "pulseaudio#microphone", + "custom/separator#blank", + "tray", + "custom/separator#blank", + "custom/weather2", + "group/laptop", + "group/status", + "custom/separator#blank", + ], +} diff --git a/config/waybar/style.css b/config/waybar/style.css index a30c886b..e13754dc 120000 --- a/config/waybar/style.css +++ b/config/waybar/style.css @@ -1 +1 @@ -/home/ja/.config/waybar/style/[Colored] Translucent.css
\ No newline at end of file +/home/dwilliams/.config/waybar/style/Extra-Prismatic-Glow.css
\ No newline at end of file diff --git a/config/waybar/style/[0 VERTICAL] [Catpuccin] Mocha.css b/config/waybar/style/0-VERTICAL-Catpuccin-Mocha.css index 2cc0de6f..66663a76 100644 --- a/config/waybar/style/[0 VERTICAL] [Catpuccin] Mocha.css +++ b/config/waybar/style/0-VERTICAL-Catpuccin-Mocha.css @@ -7,7 +7,7 @@ font-weight: bold; min-height: 0; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -116,6 +116,7 @@ tooltip label { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, @@ -220,6 +221,11 @@ tooltip label { background-color: @surface0; } +window#waybar.bottombar #backlight-slider trough, +window#waybar.bottombar #pulseaudio-slider trough { + min-height: 7px; +} + #backlight-slider highlight, #pulseaudio-slider highlight { min-width: 5px; diff --git a/config/waybar/style/[0 VERTICAL] Golden Noir.css b/config/waybar/style/0-VERTICAL-Golden-Noir.css index 216b9718..1fa6babb 100644 --- a/config/waybar/style/[0 VERTICAL] Golden Noir.css +++ b/config/waybar/style/0-VERTICAL-Golden-Noir.css @@ -7,7 +7,7 @@ font-weight: bold; min-height: 0; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -144,6 +144,7 @@ tooltip { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, @@ -205,6 +206,11 @@ tooltip { background-color: #22252a; } +window#waybar.bottombar #backlight-slider trough, +window#waybar.bottombar #pulseaudio-slider trough { + min-height: 7px; +} + #backlight-slider highlight, #pulseaudio-slider highlight { min-width: 5px; diff --git a/config/waybar/style/[0 VERTICAL] Oglo Chicklets.css b/config/waybar/style/0-VERTICAL-Oglo-Chicklets.css index ac54d24f..39a2cb47 100644 --- a/config/waybar/style/[0 VERTICAL] Oglo Chicklets.css +++ b/config/waybar/style/0-VERTICAL-Oglo-Chicklets.css @@ -3,7 +3,7 @@ * { font-family: "JetBrainsMono Nerd Font", FontAwesome, Roboto, Helvetica, Arial, sans-serif; - font-size: 97%; + font-size: 99%; font-weight: bold; } @@ -106,6 +106,7 @@ button.active { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, @@ -395,6 +396,11 @@ tooltip label { background-color: #d8ac47; } +window#waybar.bottombar #backlight-slider trough, +window#waybar.bottombar #pulseaudio-slider trough { + min-height: 7px; +} + #backlight-slider highlight, #pulseaudio-slider highlight { min-width: 5px; diff --git a/config/waybar/style/[Black & White] Monochrome.css b/config/waybar/style/Black-&-White-Monochrome.css index 49e3adf8..0873374c 100644 --- a/config/waybar/style/[Black & White] Monochrome.css +++ b/config/waybar/style/Black-&-White-Monochrome.css @@ -6,7 +6,7 @@ font-weight: bold; min-height: 0; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -153,6 +153,7 @@ tooltip label{ #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Catppuccin] Frappe.css b/config/waybar/style/Catppuccin-Frappe.css index a029c43b..cac79f2f 100644 --- a/config/waybar/style/[Catppuccin] Frappe.css +++ b/config/waybar/style/Catppuccin-Frappe.css @@ -6,7 +6,7 @@ font-weight: bold; min-height: 0; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -117,6 +117,7 @@ window#waybar.hidden { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Catppuccin] Latte.css b/config/waybar/style/Catppuccin-Latte.css index 383c3114..3f20b20a 100644 --- a/config/waybar/style/[Catppuccin] Latte.css +++ b/config/waybar/style/Catppuccin-Latte.css @@ -6,7 +6,7 @@ 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 */ -font-size: 97%; +font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -116,6 +116,7 @@ window#waybar.hidden { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Catppuccin] Mocha.css b/config/waybar/style/Catppuccin-Mocha.css index cb9c73f5..e8d3d7d0 100644 --- a/config/waybar/style/[Catppuccin] Mocha.css +++ b/config/waybar/style/Catppuccin-Mocha.css @@ -6,7 +6,7 @@ font-weight: bold; min-height: 0; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -139,6 +139,7 @@ window#waybar.empty #window { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Colored] Chroma Glow.css b/config/waybar/style/Colored-Chroma-Glow.css index 707135b8..498b5d11 100644 --- a/config/waybar/style/[Colored] Chroma Glow.css +++ b/config/waybar/style/Colored-Chroma-Glow.css @@ -6,7 +6,7 @@ font-weight: bold; min-height: 0; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -140,6 +140,7 @@ tooltip label{ #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Colored] Translucent.css b/config/waybar/style/Colored-Translucent.css index 67144b51..595effc4 100644 --- a/config/waybar/style/[Colored] Translucent.css +++ b/config/waybar/style/Colored-Translucent.css @@ -20,7 +20,7 @@ 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 */ -font-size: 97%; +font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -48,7 +48,7 @@ tooltip { #taskbar button, #workspaces button { background-color: transparent; - color: #ffffff; + color: @fgcolor; box-shadow: none; text-shadow: none; padding: 4px; @@ -59,8 +59,8 @@ tooltip { #taskbar button.active, #workspaces button.active { - background-color: transparent; - color: @accent1; + background-color: rgba(0, 0, 0, 0.2); + color: @accent2; padding-left: 8px; padding-right: 8px; animation: gradient_f 20s ease-in infinite; @@ -78,13 +78,14 @@ tooltip { } #workspaces button.focused { - background-color: #bbccdd; - color: @accent2; + background-color: rgba(0, 0, 0, 0.35); + color: @accent5; /* box-shadow: inset 0 -3px #ffffff; */ } #workspaces button.urgent { background-color: #eb4d4b; + color: #ffffff; } #mode { @@ -141,6 +142,8 @@ tooltip { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, @@ -270,6 +273,9 @@ label:focus { #custom-weather { color: #66cc99; } +#custom-weather2 { + color: #66cc99; +} #custom-lock { color: #ffa000; diff --git a/config/waybar/style/[Colorful] Aurora Blossom.css b/config/waybar/style/Colorful-Aurora-Blossom.css index 542b33dc..1be4d655 100644 --- a/config/waybar/style/[Colorful] Aurora Blossom.css +++ b/config/waybar/style/Colorful-Aurora-Blossom.css @@ -5,7 +5,7 @@ font-family: "JetBrainsMono Nerd Font"; font-weight: bold; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -132,6 +132,7 @@ tooltip label{ #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Colorful] Aurora.css b/config/waybar/style/Colorful-Aurora.css index 5cf671bd..93da00b8 100644 --- a/config/waybar/style/[Colorful] Aurora.css +++ b/config/waybar/style/Colorful-Aurora.css @@ -5,7 +5,7 @@ font-family: "JetBrainsMono Nerd Font"; font-weight: bold; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ -font-size: 97%; +font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -121,6 +121,7 @@ tooltip label{ #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Colorful] Oglo Chicklets.css b/config/waybar/style/Colorful-Oglo-Chicklets.css index e99530ab..b0b1cf95 100644 --- a/config/waybar/style/[Colorful] Oglo Chicklets.css +++ b/config/waybar/style/Colorful-Oglo-Chicklets.css @@ -3,7 +3,7 @@ * { font-family: "JetBrainsMono Nerd Font", FontAwesome, Roboto, Helvetica, Arial, sans-serif; - font-size: 97%; + font-size: 99%; font-weight: bold; } @@ -106,6 +106,7 @@ button.active { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Colorful] Rainbow Spectrum.css b/config/waybar/style/Colorful-Rainbow-Spectrum.css index bd63c9da..98b00dd4 100644 --- a/config/waybar/style/[Colorful] Rainbow Spectrum.css +++ b/config/waybar/style/Colorful-Rainbow-Spectrum.css @@ -6,7 +6,7 @@ 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 */ -font-size: 97%; +font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -124,6 +124,7 @@ tooltip label{ #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Colorful] stolen-style.css b/config/waybar/style/Colorful-stolen-style.css index 5522856e..b2d03e06 100644 --- a/config/waybar/style/[Colorful] stolen-style.css +++ b/config/waybar/style/Colorful-stolen-style.css @@ -5,7 +5,7 @@ font-weight: bold; min-height: 0; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -67,6 +67,7 @@ window#waybar.empty #window { #custom-swaync, #custom-updater, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/Crystal Clear Glass.css b/config/waybar/style/Crystal-Clear-Glass.css index 3e309abb..9bc24902 100644 --- a/config/waybar/style/Crystal Clear Glass.css +++ b/config/waybar/style/Crystal-Clear-Glass.css @@ -19,7 +19,7 @@ General /* Extra tweaks */ min-height: 0; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; margin-top: 3px; padding-bottom: 2px; @@ -231,6 +231,7 @@ window#waybar.empty #window { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Dark] Golden Eclipse.css b/config/waybar/style/Dark-Golden-Eclipse.css index 89f114d8..107dc725 100644 --- a/config/waybar/style/[Dark] Golden Eclipse.css +++ b/config/waybar/style/Dark-Golden-Eclipse.css @@ -6,7 +6,7 @@ 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 */ -font-size: 97%; +font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; padding: 1px; } @@ -79,6 +79,7 @@ window#waybar.hidden { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Dark] Golden Noir.css b/config/waybar/style/Dark-Golden-Noir.css index ffde3c9c..357d80a5 100644 --- a/config/waybar/style/[Dark] Golden Noir.css +++ b/config/waybar/style/Dark-Golden-Noir.css @@ -7,7 +7,7 @@ font-weight: bold; min-height: 0; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -144,6 +144,7 @@ tooltip { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Dark] Half-Moon.css b/config/waybar/style/Dark-Half-Moon.css index 7bbe7f9d..30de6a86 100644 --- a/config/waybar/style/[Dark] Half-Moon.css +++ b/config/waybar/style/Dark-Half-Moon.css @@ -8,7 +8,7 @@ font-weight: bold; min-height: 0; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -254,6 +254,13 @@ color: #F3F4F5; margin: 5px; padding: 2px 15px; } +#custom-weather2 { + color: #59C2FF; + background: #0F1419; + border-radius: 50px 50px; + margin: 5px; + padding: 2px 15px; +} #custom-menu { color: #59C2FF; diff --git a/config/waybar/style/[Dark] Latte-Wallust combined v2.css b/config/waybar/style/Dark-Latte-Wallust-combined-v2.css index 217480b9..e707c26b 100644 --- a/config/waybar/style/[Dark] Latte-Wallust combined v2.css +++ b/config/waybar/style/Dark-Latte-Wallust-combined-v2.css @@ -25,7 +25,7 @@ font-weight: bold; min-height: 0; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -158,6 +158,7 @@ tooltip { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Dark] Latte-Wallust combined.css b/config/waybar/style/Dark-Latte-Wallust-combined.css index cd4c07d3..bbe23b8b 100644 --- a/config/waybar/style/[Dark] Latte-Wallust combined.css +++ b/config/waybar/style/Dark-Latte-Wallust-combined.css @@ -25,7 +25,7 @@ font-weight: bold; min-height: 0; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -163,6 +163,7 @@ tooltip { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Dark] Purpl.css b/config/waybar/style/Dark-Purpl.css index 22cabbb5..9cb25cdf 100644 --- a/config/waybar/style/[Dark] Purpl.css +++ b/config/waybar/style/Dark-Purpl.css @@ -7,7 +7,7 @@ font-weight: bold; min-height: 0; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -148,6 +148,7 @@ tooltip { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Dark] Wallust Obsidian Edge.css b/config/waybar/style/Dark-Wallust-Obsidian-Edge.css index 7836aaff..264fc183 100644 --- a/config/waybar/style/[Dark] Wallust Obsidian Edge.css +++ b/config/waybar/style/Dark-Wallust-Obsidian-Edge.css @@ -8,7 +8,7 @@ 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 */ -font-size: 97%; +font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -134,6 +134,7 @@ tooltip label { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Extra] Arrow.css b/config/waybar/style/Extra-Arrow.css index 5414f7cd..e70be55c 100644 --- a/config/waybar/style/[Extra] Arrow.css +++ b/config/waybar/style/Extra-Arrow.css @@ -7,7 +7,7 @@ font-weight: bold; min-height: 0; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; border: none; border-radius: 0; @@ -110,6 +110,7 @@ #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Extra] Crimson.css b/config/waybar/style/Extra-Crimson.css index e2035360..309808c5 100644 --- a/config/waybar/style/[Extra] Crimson.css +++ b/config/waybar/style/Extra-Crimson.css @@ -6,7 +6,7 @@ font-family: "JetBrainsMono Nerd Font"; font-weight: bold; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ -font-size: 97%; +font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -132,6 +132,7 @@ tooltip { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Extra] EverForest.css b/config/waybar/style/Extra-EverForest.css index 2b9f750f..ce0b4c7b 100644 --- a/config/waybar/style/[Extra] EverForest.css +++ b/config/waybar/style/Extra-EverForest.css @@ -33,7 +33,7 @@ font-weight: bold; min-height: 0; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; border: 1px solid transparent; border-radius: 0px; @@ -314,6 +314,7 @@ window#waybar.hidden { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Extra] ML4W starter.css b/config/waybar/style/Extra-ML4W-starter.css index 30ac8a4c..caaeea8d 100644 --- a/config/waybar/style/[Extra] ML4W starter.css +++ b/config/waybar/style/Extra-ML4W-starter.css @@ -22,7 +22,7 @@ border-radius: 4px; font-weight: bold; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -181,6 +181,7 @@ window#waybar.empty #window { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Extra] Mauve.css b/config/waybar/style/Extra-Mauve.css index aecb2575..7f260dd7 100644 --- a/config/waybar/style/[Extra] Mauve.css +++ b/config/waybar/style/Extra-Mauve.css @@ -7,7 +7,7 @@ font-weight: bold; min-height: 0; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -151,6 +151,7 @@ tooltip { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Extra] Modern-Combined - Transparent.css b/config/waybar/style/Extra-Modern-Combined-Transparent.css index 9df1b15d..b5a6f3bd 100644 --- a/config/waybar/style/[Extra] Modern-Combined - Transparent.css +++ b/config/waybar/style/Extra-Modern-Combined-Transparent.css @@ -13,21 +13,22 @@ @define-color teal-trans rgba(1, 117, 84, 0.5); @define-color cyan rgba(53, 140, 169, 1); -@define-color background-module @color1; -@define-color background-module2 @color11; +@define-color background-module @background-alt; +@define-color background-module2 @background; @define-color border-color @color12; @define-color button-color @color10; @define-color button-hover @color13; -@define-color backgroundlight @color12; -@define-color backgrounddark #FFFFFF; -@define-color workspacesbackground1 @color12; -@define-color workspacesbackground2 #FFFFFF; +/* Theme-aware base colors */ +@define-color backgroundlight @background-alt; +@define-color backgrounddark @background; +@define-color workspacesbackground1 @background-alt; +@define-color workspacesbackground2 @background; @define-color bordercolor @color11; -@define-color textcolor1 @color12; -@define-color textcolor2 #FFFFFF; -@define-color textcolor3 #FFFFFF; -@define-color iconcolor #FFFFFF; +@define-color textcolor1 @foreground; +@define-color textcolor2 @foreground; +@define-color textcolor3 @foreground; +@define-color iconcolor @foreground; @import '../../.config/waybar/wallust/colors-waybar.css'; @import "../waybar/style/catppuccin-themes/latte.css"; @@ -37,7 +38,7 @@ font-weight: bold; min-height: 0; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -165,6 +166,7 @@ tooltip { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, @@ -249,6 +251,7 @@ tooltip { } #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Extra] Modern-Combined.css b/config/waybar/style/Extra-Modern-Combined.css index 3749e0b5..42f493ae 100644 --- a/config/waybar/style/[Extra] Modern-Combined.css +++ b/config/waybar/style/Extra-Modern-Combined.css @@ -13,21 +13,22 @@ @define-color teal-trans rgba(1, 117, 84, 0.5); @define-color cyan rgba(53, 140, 169, 1); -@define-color background-module @color1; -@define-color background-module2 @color11; +@define-color background-module @background-alt; +@define-color background-module2 @background; @define-color border-color @color12; @define-color button-color @color10; @define-color button-hover @color13; -@define-color backgroundlight @color12; -@define-color backgrounddark #FFFFFF; -@define-color workspacesbackground1 @color12; -@define-color workspacesbackground2 #FFFFFF; +/* Theme-aware base colors */ +@define-color backgroundlight @background-alt; +@define-color backgrounddark @background; +@define-color workspacesbackground1 @background-alt; +@define-color workspacesbackground2 @background; @define-color bordercolor @color11; -@define-color textcolor1 @color12; -@define-color textcolor2 #FFFFFF; -@define-color textcolor3 #FFFFFF; -@define-color iconcolor #FFFFFF; +@define-color textcolor1 @foreground; +@define-color textcolor2 @foreground; +@define-color textcolor3 @foreground; +@define-color iconcolor @foreground; @import '../../.config/waybar/wallust/colors-waybar.css'; @import "../waybar/style/catppuccin-themes/latte.css"; @@ -37,7 +38,7 @@ font-weight: bold; min-height: 0; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -263,6 +264,7 @@ tooltip { } #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Extra] Neon Circuit.css b/config/waybar/style/Extra-Neon-Circuit.css index 83f990e4..0518bf27 100644 --- a/config/waybar/style/[Extra] Neon Circuit.css +++ b/config/waybar/style/Extra-Neon-Circuit.css @@ -16,7 +16,7 @@ font-weight: bold; min-height: 0; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -129,6 +129,7 @@ tooltip { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, @@ -390,6 +391,7 @@ tooltip { } #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Extra] Prismatic Glow.css b/config/waybar/style/Extra-Prismatic-Glow.css index 67e45829..e7aaa398 100644 --- a/config/waybar/style/[Extra] Prismatic Glow.css +++ b/config/waybar/style/Extra-Prismatic-Glow.css @@ -6,12 +6,12 @@ font-weight: bold; min-height: 0; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; border: none; border-radius: 10px; - font-size: 97%; + font-size: 99%; min-height: 20px; margin: 0px; } @@ -176,6 +176,7 @@ window#waybar.empty { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Extra] Rose Pine.css b/config/waybar/style/Extra-Rose-Pine.css index 55184b41..c9d16106 100644 --- a/config/waybar/style/[Extra] Rose Pine.css +++ b/config/waybar/style/Extra-Rose-Pine.css @@ -14,7 +14,7 @@ font-family: "JetBrainsMono Nerd Font"; font-weight: bold; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; border-radius: 12px; } @@ -152,6 +152,7 @@ tooltip { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Extra] Simple Pink.css b/config/waybar/style/Extra-Simple-Pink.css index d2dbb261..19d47542 100644 --- a/config/waybar/style/[Extra] Simple Pink.css +++ b/config/waybar/style/Extra-Simple-Pink.css @@ -7,7 +7,7 @@ font-weight: bold; min-height: 0; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -144,6 +144,7 @@ tooltip { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Light] Monochrome Contrast.css b/config/waybar/style/Light-Monochrome-Contrast.css index eb264320..4251e754 100644 --- a/config/waybar/style/[Light] Monochrome Contrast.css +++ b/config/waybar/style/Light-Monochrome-Contrast.css @@ -6,7 +6,7 @@ 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 */ -font-size: 97%; +font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -133,6 +133,7 @@ tooltip label{ #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Light] Obsidian Glow.css b/config/waybar/style/Light-Obsidian-Glow.css index b5847609..4d5db584 100644 --- a/config/waybar/style/[Light] Obsidian Glow.css +++ b/config/waybar/style/Light-Obsidian-Glow.css @@ -6,7 +6,7 @@ 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 */ -font-size: 97%; +font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -120,6 +120,7 @@ tooltip label { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/ML4W Glass-3d.css b/config/waybar/style/ML4W-Glass-3d.css index e54b07cc..003ae089 100644 --- a/config/waybar/style/ML4W Glass-3d.css +++ b/config/waybar/style/ML4W-Glass-3d.css @@ -19,7 +19,7 @@ General /* Extra tweaks */ min-height: 0; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; margin-top: 3px; padding-bottom: 2px; @@ -313,6 +313,7 @@ window#waybar.empty #window { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/ML4W Glass.css b/config/waybar/style/ML4W-Glass.css index 3a48d39a..2f02fd61 100644 --- a/config/waybar/style/ML4W Glass.css +++ b/config/waybar/style/ML4W-Glass.css @@ -19,7 +19,7 @@ General /* Extra tweaks */ min-height: 0; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; margin-top: 3px; padding-bottom: 2px; @@ -27,6 +27,17 @@ General @import "style/ML4W/glass.css"; +/* Neutral glass overrides: avoid red/magenta palettes from wallust */ +@define-color surface @background-alt; /* main glass body */ +@define-color surface_dim @background; /* inner shadow base */ +@define-color primary @foreground; /* accents/lines */ +@define-color on_primary @background; /* accent contrast */ +@define-color on_primary_fixed @background; +@define-color on_primary_fixed_variant @foreground; +@define-color on_tertiary_fixed @background; /* module pill bg */ +@define-color on_tertiary_fixed_variant @foreground; /* module pill fg */ +@define-color on_surface #e6edf7; /* brighten text/icons */ + window#waybar { background: transparent; } @@ -124,10 +135,11 @@ label.module:hover { #workspaces button { color: @on_surface; border-radius: 3px; - padding: 0px 5px 0px 5px; + padding: 0px 6px 0px 6px; margin: 0px 2px 0px 2px; transition: all 0.3s ease-in-out; border: 1px solid transparent; + min-width: 26px; } #workspaces button.active { @@ -281,6 +293,7 @@ window#waybar.empty #window { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Rainbow] RGB Bordered.css b/config/waybar/style/Rainbow-RGB-Bordered.css index 039fa31a..f2276cdc 100644 --- a/config/waybar/style/[Rainbow] RGB Bordered.css +++ b/config/waybar/style/Rainbow-RGB-Bordered.css @@ -7,7 +7,7 @@ font-weight: bold; min-height: 0; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -140,6 +140,7 @@ window#waybar.empty #window { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Retro] Simple Style.css b/config/waybar/style/Retro-Simple-Style.css index 304b8e0a..d7e4665c 100644 --- a/config/waybar/style/[Retro] Simple Style.css +++ b/config/waybar/style/Retro-Simple-Style.css @@ -13,7 +13,7 @@ font-weight: bold; min-height: 0; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -94,6 +94,7 @@ window#waybar { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Transparent] Crystal Clear.css b/config/waybar/style/Transparent-Crystal-Clear.css index 93731912..72b6aeb1 100644 --- a/config/waybar/style/[Transparent] Crystal Clear.css +++ b/config/waybar/style/Transparent-Crystal-Clear.css @@ -7,7 +7,7 @@ font-weight: bold; min-height: 0; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -115,6 +115,7 @@ window#waybar.empty #window { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[VERTICAL] [Catpuccin] Mocha.css b/config/waybar/style/VERTICAL-Catpuccin-Mocha.css index 41817ed0..41d77e73 100644 --- a/config/waybar/style/[VERTICAL] [Catpuccin] Mocha.css +++ b/config/waybar/style/VERTICAL-Catpuccin-Mocha.css @@ -7,7 +7,7 @@ font-weight: bold; min-height: 0; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -115,6 +115,7 @@ tooltip label { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, @@ -223,6 +224,11 @@ tooltip label { background-color: @surface0; } +window#waybar.bottombar #backlight-slider trough, +window#waybar.bottombar #pulseaudio-slider trough { + min-height: 7px; +} + #backlight-slider highlight, #pulseaudio-slider highlight { min-width: 5px; diff --git a/config/waybar/style/[Wallust Bordered] Chroma Fusion Edge.css b/config/waybar/style/Wallust-Bordered-Chroma-Fusion-Edge.css index 070311b8..e593b9fd 100644 --- a/config/waybar/style/[Wallust Bordered] Chroma Fusion Edge.css +++ b/config/waybar/style/Wallust-Bordered-Chroma-Fusion-Edge.css @@ -25,7 +25,7 @@ font-weight: bold; min-height: 0; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -104,6 +104,7 @@ tooltip { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, @@ -139,6 +140,7 @@ tooltip { } #custom-weather, +#custom-weather2, #custom-updates { color: @yellow; } diff --git a/config/waybar/style/[Wallust Bordered] Chroma Simple.css b/config/waybar/style/Wallust-Bordered-Chroma-Simple.css index d57a56f7..3e277f6c 100644 --- a/config/waybar/style/[Wallust Bordered] Chroma Simple.css +++ b/config/waybar/style/Wallust-Bordered-Chroma-Simple.css @@ -8,7 +8,7 @@ font-family: "JetBrainsMono Nerd Font"; font-weight: bold; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; min-height: 0; } @@ -129,6 +129,7 @@ tooltip { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Wallust] Box type.css b/config/waybar/style/Wallust-Box-type.css index e29c5246..6bd2a5de 100644 --- a/config/waybar/style/[Wallust] Box type.css +++ b/config/waybar/style/Wallust-Box-type.css @@ -8,7 +8,7 @@ font-weight: bold; min-height: 0; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -38,7 +38,7 @@ window#waybar.empty #window { #taskbar button, #workspaces button { - color: @foreground; + color: @color15; box-shadow: none; text-shadow: none; padding: 0px; @@ -51,8 +51,8 @@ window#waybar.empty #window { #taskbar button.active, #workspaces button.active { - color: @color12; - background-color: @foreground; + color: @color15; + background-color: @background; padding-left: 4px; padding-right: 8px; animation: gradient_f 20s ease-in infinite; @@ -61,17 +61,18 @@ window#waybar.empty #window { #taskbar button.focused, #workspaces button.focused { - color: @color4; + color: @color15; + background-color: @background; } #workspaces button.urgent { - color: #11111b; + color: #ffffff; border-radius: 10px; } #taskbar button:hover, #workspaces button:hover { - color: @color4; + color: @color15; padding-left: 2px; padding-right: 8px; animation: gradient_f 20s ease-in infinite; @@ -127,6 +128,7 @@ window#waybar.empty #window { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, @@ -143,8 +145,8 @@ window#waybar.empty #window { padding-right: 10px; border-radius: 10px; transition: none; - color: @foreground; - background: @color0; + color: @color15; + background: @background; border-bottom-width: 5px; border-bottom-color: @color12; border-bottom-style: solid; diff --git a/config/waybar/style/[Wallust] Chroma Edge.css b/config/waybar/style/Wallust-Chroma-Edge.css index 926b8c4a..82125870 100644 --- a/config/waybar/style/[Wallust] Chroma Edge.css +++ b/config/waybar/style/Wallust-Chroma-Edge.css @@ -8,7 +8,7 @@ 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 */ -font-size: 97%; +font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -132,6 +132,7 @@ tooltip label{ #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Wallust] Chroma Fusion.css b/config/waybar/style/Wallust-Chroma-Fusion.css index ba812e9f..4399f125 100644 --- a/config/waybar/style/[Wallust] Chroma Fusion.css +++ b/config/waybar/style/Wallust-Chroma-Fusion.css @@ -25,7 +25,7 @@ font-weight: bold; min-height: 0; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -105,6 +105,7 @@ tooltip { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, @@ -147,6 +148,7 @@ tooltip { #custom-swaync, #custom-weather, +#custom-weather2, #custom-updater { color: @yellow; } diff --git a/config/waybar/style/[Wallust] Chroma Tally V2.css b/config/waybar/style/Wallust-Chroma-Tally-V2.css index d23b504a..d33e638a 100644 --- a/config/waybar/style/[Wallust] Chroma Tally V2.css +++ b/config/waybar/style/Wallust-Chroma-Tally-V2.css @@ -9,7 +9,7 @@ font-family: "JetBrainsMono Nerd Font"; font-weight: bold; min-height: 0; - font-size: 97%; + font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -62,7 +62,7 @@ window#waybar { } tooltip { - background: @color1; /* Slightly darker tooltip background */ + background: @background-alt; /* Theme-neutral tooltip background */ opacity: 0.8; border-radius: 6px; color: @color7; /* Light text */ @@ -117,6 +117,7 @@ tooltip { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Wallust] Chroma Tally.css b/config/waybar/style/Wallust-Chroma-Tally.css index bcab500c..70e1f402 100644 --- a/config/waybar/style/[Wallust] Chroma Tally.css +++ b/config/waybar/style/Wallust-Chroma-Tally.css @@ -8,7 +8,7 @@ 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 */ -font-size: 97%; +font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -116,6 +116,7 @@ tooltip { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Wallust] Colored.css b/config/waybar/style/Wallust-Colored.css index 4c4e708f..934374aa 100644 --- a/config/waybar/style/[Wallust] Colored.css +++ b/config/waybar/style/Wallust-Colored.css @@ -36,7 +36,7 @@ tooltip { .modules-right { border: 3px solid @color12; border-radius: 40px 0px 0px 0px; - background-color: @color1; + background-color: @background-alt; padding-top: 2px; padding-bottom: 2px; padding-right: 4px; @@ -56,7 +56,7 @@ tooltip { .modules-left { border: 3px solid @color12; border-radius: 0px 0px 40px 0px; - background-color: @color1; + background-color: @background-alt; padding-top: 2px; padding-bottom: 2px; padding-right: 4px; @@ -157,6 +157,7 @@ tooltip { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[WALLUST] ML4W-modern-mixed.css b/config/waybar/style/Wallust-ML4W-modern-mixed.css index 1821af45..d627b576 100644 --- a/config/waybar/style/[WALLUST] ML4W-modern-mixed.css +++ b/config/waybar/style/Wallust-ML4W-modern-mixed.css @@ -18,7 +18,7 @@ font-weight: bold; min-height: 0; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; /* note: different modules have different font sizes */ font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -165,6 +165,7 @@ window#waybar.empty #window { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[WALLUST] ML4W-modern.css b/config/waybar/style/Wallust-ML4W-modern.css index 5fe889bb..7c0e9c61 100644 --- a/config/waybar/style/[WALLUST] ML4W-modern.css +++ b/config/waybar/style/Wallust-ML4W-modern.css @@ -18,7 +18,7 @@ font-weight: bold; min-height: 0; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; /* note: different modules have different font sizes */ font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -172,6 +172,7 @@ window#waybar.empty #window { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Wallust] Simple.css b/config/waybar/style/Wallust-Simple.css index 5141d87a..90342d67 100644 --- a/config/waybar/style/[Wallust] Simple.css +++ b/config/waybar/style/Wallust-Simple.css @@ -6,7 +6,7 @@ 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 */ -font-size: 97%; +font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -136,6 +136,7 @@ tooltip { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/style/[Wallust Transparent] Crystal Clear.css b/config/waybar/style/Wallust-Transparent-Crystal-Clear.css index a6199864..d25149d2 100644 --- a/config/waybar/style/[Wallust Transparent] Crystal Clear.css +++ b/config/waybar/style/Wallust-Transparent-Crystal-Clear.css @@ -15,7 +15,7 @@ font-weight: bold; min-height: 0; /* set font-size to 100% if font scaling is set to 1.00 using nwg-look */ - font-size: 97%; + font-size: 99%; font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"'; } @@ -148,6 +148,7 @@ tooltip { #custom-updater, #custom-hyprpicker, #custom-weather, +#custom-weather2, #custom-weather.clearNight, #custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight, diff --git a/config/waybar/wallust/colors-waybar.css b/config/waybar/wallust/colors-waybar.css index fe1bb337..ec9b7a20 100644 --- a/config/waybar/wallust/colors-waybar.css +++ b/config/waybar/wallust/colors-waybar.css @@ -1,7 +1,7 @@ /* ---- 💫 https://github.com/LinuxBeginnings 💫 ---- */ /* wallust template - colors-waybar */ - @define-color foreground #F9E3DF; + @define-color foreground #7F4EA2; @define-color background #151316; @define-color background-alt rgba(21,19,22,0.25); @define-color cursor #F9E3DF; @@ -31,9 +31,10 @@ clear wallpaper=$HOME/.config/hypr/wallpaper_effects/.wallpaper_current -waybar_style="$HOME/.config/waybar/style/[Extra] Neon Circuit.css" -waybar_config="$HOME/.config/waybar/configs/[TOP] Default" -waybar_config_laptop="$HOME/.config/waybar/configs/[TOP] Default Laptop" +# 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" # Set some colors for output messages OK="$(tput setaf 2)[OK]$(tput sgr0)" @@ -52,6 +53,8 @@ SKY_BLUE="$(tput setaf 6)" RESET="$(tput sgr0)" MIN_EXPRESS_VERSION="2.3.18" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +DOTFILES_DIR="$SCRIPT_DIR" +export DOTFILES_DIR MENU_HELPER="$SCRIPT_DIR/scripts/copy_menu.sh" BACKUP_HELPER="$SCRIPT_DIR/scripts/lib_backup.sh" DETECT_HELPER="$SCRIPT_DIR/scripts/lib_detect.sh" @@ -106,6 +109,9 @@ else exit 1 fi +# Ensure we operate from the dotfiles root so relative paths resolve. +cd "$SCRIPT_DIR" || { echo "${ERROR} Failed to cd to $SCRIPT_DIR"; exit 1; } + version_gte() { [ "$1" = "$(echo -e "$1\n$2" | sort -V | tail -n1)" ] } @@ -114,10 +120,10 @@ get_installed_dotfiles_version() { local hypr_dir="$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 \ - | sed 's/^v//' \ - | sort -V \ - | tail -n1 + find "$hypr_dir" -maxdepth 1 -type f -name 'v*.*.*' -printf '%f\n' 2>/dev/null | + sed 's/^v//' | + sort -V | + tail -n1 fi } @@ -136,6 +142,7 @@ Usage: copy.sh [--upgrade] [--express-upgrade] [--help] Options: --upgrade Run the script in upgrade mode (can still prompt for express). --express-upgrade Upgrade with express behavior (no restore prompts, trims backups). + --tty Force basic TTY prompts (no whiptail menu). -h, --help Show this help message and exit. EOF } @@ -155,6 +162,9 @@ while [[ $# -gt 0 ]]; do EXPRESS_MODE=1 RUN_MODE="express" ;; + --tty) + COPY_TUI_BACKEND="basic" + ;; -h | --help) print_usage exit 0 @@ -229,6 +239,11 @@ if [[ $EUID -eq 0 ]]; then printf "\n%.0s" {1..2} exit 1 fi +# Ensure rsync is available before proceeding +if ! command -v rsync >/dev/null 2>&1; then + echo "${ERROR} Required dependency 'rsync' is not installed. Please install rsync and rerun this script." + exit 1 +fi # Function to print colorful text print_color() { @@ -275,16 +290,21 @@ echo "${WARNING}A T T E N T I O N !${RESET}" echo "${MAGENTA}Kindly visit KooL Hyprland Own Wiki for changelogs${RESET}" printf "\n%.0s" {1..1} -# Create Directory for Copy Logs -if [ ! -d Copy-Logs ]; then - mkdir Copy-Logs +# Create Directory for Copy Logs (use script dir to avoid CWD issues) +LOG_DIR="$SCRIPT_DIR/Copy-Logs" +if [ ! -d "$LOG_DIR" ]; then + mkdir -p "$LOG_DIR" fi # Set the name of the log file to include the current date and time -LOG="Copy-Logs/install-$(date +%d-%H%M%S)_dotfiles.log" +LOG="$LOG_DIR/install-$(date +%d-%H%M%S)_dotfiles.log" -# update home directories -xdg-user-dirs-update 2>&1 | tee -a "$LOG" || true +# update home directories (guard if command missing) +if command -v xdg-user-dirs-update >/dev/null 2>&1; then + xdg-user-dirs-update 2>&1 | tee -a "$LOG" || true +else + echo "${WARN} xdg-user-dirs-update not found; skipping home dir update." 2>&1 | tee -a "$LOG" +fi echo "${INFO} Selected workflow: ${RUN_MODE}" 2>&1 | tee -a "$LOG" if [ "$UPGRADE_MODE" -eq 1 ]; then echo "${INFO} Upgrade mode enabled." 2>&1 | tee -a "$LOG" @@ -296,10 +316,20 @@ fi detect_nvidia_adjust "$LOG" detect_vm_adjust "$LOG" detect_nixos_adjust "$LOG" +# NixOS: report missing waybar-weather without attempting to install +is_nixos() { + grep -qi '^ID=nixos' /etc/os-release 2>/dev/null +} + +report_waybar_weather_missing() { + if ! command -v waybar-weather >/dev/null 2>&1; then + echo "${WARN} waybar-weather binary is missing." 2>&1 | tee -a "$LOG" + fi +} # activating hyprcursor on env by checking if the directory ~/.icons/Bibata-Modern-Ice/hyprcursors exists if [ -d "$HOME/.icons/Bibata-Modern-Ice/hyprcursors" ]; then - HYPRCURSOR_ENV_FILE="config/hypr/configs/ENVariables.conf" + HYPRCURSOR_ENV_FILE="$DOTFILES_DIR/config/hypr/configs/ENVariables.conf" 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" @@ -315,7 +345,11 @@ enable_blueman "$LOG" enable_ags "$LOG" enable_quickshell "$LOG" ensure_keybinds_init "$LOG" - +if is_nixos; then + report_waybar_weather_missing +else + install_waybar_weather "$LOG" +fi printf "\n%.0s" {1..1} choose_default_editor "$LOG" @@ -327,26 +361,32 @@ while true; do echo -n "${CAT} Enter the number of your choice (1 or 2): " read -r choice case "$choice" in - 1) resolution="< 1440p"; break ;; - 2) resolution="≥ 1440p"; break ;; - *) echo "${ERROR} Invalid choice. Please enter 1 or 2.";; + 1) + resolution="< 1440p" + break + ;; + 2) + resolution="≥ 1440p" + break + ;; + *) echo "${ERROR} Invalid choice. Please enter 1 or 2." ;; esac done echo "${OK} You have chosen $resolution resolution." 2>&1 | tee -a "$LOG" if [ "$resolution" == "< 1440p" ]; then # kitty font size - sed -i 's/font_size 16.0/font_size 14.0/' config/kitty/kitty.conf + sed -i 's/font_size 16.0/font_size 14.0/' "$DOTFILES_DIR/config/kitty/kitty.conf" # hyprlock matters - if [ -f config/hypr/hyprlock.conf ]; then - mv config/hypr/hyprlock.conf config/hypr/hyprlock-2k.conf + if [ -f "$DOTFILES_DIR/config/hypr/hyprlock.conf" ]; then + mv "$DOTFILES_DIR/config/hypr/hyprlock.conf" "$DOTFILES_DIR/config/hypr/hyprlock-2k.conf" fi - if [ -f config/hypr/hyprlock-1080p.conf ]; then - mv config/hypr/hyprlock-1080p.conf config/hypr/hyprlock.conf + if [ -f "$DOTFILES_DIR/config/hypr/hyprlock-1080p.conf" ]; then + mv "$DOTFILES_DIR/config/hypr/hyprlock-1080p.conf" "$DOTFILES_DIR/config/hypr/hyprlock.conf" fi # rofi fonts reduction - rofi_config_file="config/rofi/0-shared-fonts.rasi" + rofi_config_file="$DOTFILES_DIR/config/rofi/0-shared-fonts.rasi" if [ -f "$rofi_config_file" ]; then sed -i '/element-text {/,/}/s/[[:space:]]*font: "JetBrainsMono Nerd Font SemiBold 13"/font: "JetBrainsMono Nerd Font SemiBold 11"/' "$rofi_config_file" 2>&1 | tee -a "$LOG" sed -i '/configuration {/,/}/s/[[:space:]]*font: "JetBrainsMono Nerd Font SemiBold 15"/font: "JetBrainsMono Nerd Font SemiBold 13"/' "$rofi_config_file" 2>&1 | tee -a "$LOG" @@ -368,13 +408,76 @@ if [ ! -d "$HOME/.config" ]; then fi printf "${INFO} - copying dotfiles ${SKY_BLUE}first${RESET} part\n" -copy_phase1 "$LOG" +copy_phase1 "$LOG" "$RUN_MODE" printf "\n%.0s" {1..1} copy_waybar "$LOG" printf "\n%.0s" {1..1} printf "${INFO} - Copying dotfiles ${SKY_BLUE}second${RESET} part\n" copy_phase2 "$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_COPIED=0 + +if [ "$RUN_MODE" = "install" ]; then + if [ -d "$WAYBAR_WEATHER_SRC" ]; then + echo "${INFO} - Copying waybar-weather config (fresh copy)" 2>&1 | tee -a "$LOG" + rm -rf "$WAYBAR_WEATHER_DEST" + mkdir -p "$WAYBAR_WEATHER_DEST" + cp -r "$WAYBAR_WEATHER_SRC/." "$WAYBAR_WEATHER_DEST/" 2>&1 | tee -a "$LOG" + WAYBAR_WEATHER_COPIED=1 + else + echo "${WARN} - waybar-weather config not found at $WAYBAR_WEATHER_SRC" 2>&1 | tee -a "$LOG" + fi +elif [ "$RUN_MODE" = "upgrade" ] || [ "$RUN_MODE" = "express" ]; then + if [ -d "$WAYBAR_WEATHER_DEST" ]; then + echo "${INFO} - waybar-weather config exists; skipping copy" 2>&1 | tee -a "$LOG" + else + if [ -d "$WAYBAR_WEATHER_SRC" ]; then + echo "${INFO} - Copying waybar-weather config" 2>&1 | tee -a "$LOG" + mkdir -p "$WAYBAR_WEATHER_DEST" + cp -r "$WAYBAR_WEATHER_SRC/." "$WAYBAR_WEATHER_DEST/" 2>&1 | tee -a "$LOG" + WAYBAR_WEATHER_COPIED=1 + else + echo "${WARN} - waybar-weather config not found at $WAYBAR_WEATHER_SRC" 2>&1 | tee -a "$LOG" + fi + fi +fi + +if [ "$EXPRESS_MODE" -eq 0 ] && [ "$WAYBAR_WEATHER_COPIED" -eq 1 ]; then + while true; do + read -r -p "${CAT} Use Fahrenheit (F) or Celsius (C)? [C]: " WEATHER_UNITS + WEATHER_UNITS=$(echo "${WEATHER_UNITS}" | tr '[:upper:]' '[:lower:]') + case "$WEATHER_UNITS" in + f|fahrenheit) + WEATHER_CFG="$WAYBAR_WEATHER_DEST/config.toml" + if [ -f "$WEATHER_CFG" ]; then + if grep -qE '^[[:space:]]*units[[:space:]]*=' "$WEATHER_CFG"; then + sed -i 's/^[[:space:]]*units[[:space:]]*=.*/units = "imperial"/' "$WEATHER_CFG" + elif grep -qE '^[[:space:]]*#\s*units[[:space:]]*=' "$WEATHER_CFG"; then + sed -i 's/^[[:space:]]*#\s*units[[:space:]]*=.*/units = "imperial"/' "$WEATHER_CFG" + else + printf '\nunits = "imperial"\n' >> "$WEATHER_CFG" + fi + echo "${OK} - Set waybar-weather units to imperial" 2>&1 | tee -a "$LOG" + else + echo "${WARN} - waybar-weather config not found at $WEATHER_CFG" 2>&1 | tee -a "$LOG" + fi + break + ;; + c|celsius|"") + # Default config already uses metric; no change needed + break + ;; + *) + echo "${WARN} Please enter 'F' or 'C'." ;; + esac + done +fi # ags config # Check if ags is installed @@ -385,8 +488,8 @@ if command -v ags >/dev/null 2>&1; then if [ ! -d "$DIRPATH_AGS" ]; then echo "${INFO} - ags config not found, copying new config." - if [ -d "config/ags" ]; then - cp -r "config/ags/" "$DIRPATH_AGS" 2>&1 | tee -a "$LOG" + if [ -d "$DOTFILES_DIR/config/ags" ]; then + cp -r "$DOTFILES_DIR/config/ags/" "$DIRPATH_AGS" 2>&1 | tee -a "$LOG" fi else read -p "${CAT} Do you want to overwrite your existing ${YELLOW}ags${RESET} config? [y/N] " answer_ags @@ -396,7 +499,7 @@ if command -v ags >/dev/null 2>&1; then mv "$DIRPATH_AGS" "$DIRPATH_AGS-backup-$BACKUP_DIR" 2>&1 | tee -a "$LOG" echo -e "${NOTE} - Backed up ags config to $DIRPATH_AGS-backup-$BACKUP_DIR" - if cp -r "config/ags/" "$DIRPATH_AGS" 2>&1 | tee -a "$LOG"; then + if cp -r "$DOTFILES_DIR/config/ags/" "$DIRPATH_AGS" 2>&1 | tee -a "$LOG"; then echo "${OK} - ${YELLOW}ags configs${RESET} overwritten successfully." else echo "${ERROR} - Failed to copy ${YELLOW}ags${RESET} config." @@ -426,8 +529,8 @@ if command -v qs >/dev/null 2>&1; then if [ ! -d "$DIRPATH_QS" ]; then echo "${INFO} - quickshell config not found, copying new config." - if [ -d "config/quickshell" ]; then - cp -r "config/quickshell/" "$DIRPATH_QS" 2>&1 | tee -a "$LOG" + if [ -d "$DOTFILES_DIR/config/quickshell" ]; then + cp -r "$DOTFILES_DIR/config/quickshell/" "$DIRPATH_QS" 2>&1 | tee -a "$LOG" fi else # If default shell.qml exists, it blocks named config subdirectory detection @@ -436,7 +539,7 @@ if command -v qs >/dev/null 2>&1; then echo "${NOTE} - Removing default shell.qml to enable quickshell overview config detection" 2>&1 | tee -a "$LOG" rm "$DIRPATH_QS/shell.qml" fi - + read -p "${CAT} Do you want to overwrite your existing ${YELLOW}quickshell${RESET} config? [y/N] " answer_qs case "$answer_qs" in [Yy]*) @@ -444,7 +547,7 @@ if command -v qs >/dev/null 2>&1; then mv "$DIRPATH_QS" "$DIRPATH_QS-backup-$BACKUP_DIR" 2>&1 | tee -a "$LOG" echo -e "${NOTE} - Backed up quickshell to $DIRPATH_QS-backup-$BACKUP_DIR" - cp -r "config/quickshell/" "$DIRPATH_QS" 2>&1 | tee -a "$LOG" + cp -r "$DOTFILES_DIR/config/quickshell/" "$DIRPATH_QS" 2>&1 | tee -a "$LOG" if [ $? -eq 0 ]; then echo "${OK} - ${YELLOW}quickshell${RESET} overwritten successfully." # Remove default shell.qml from new copy to enable overview detection @@ -459,15 +562,15 @@ if command -v qs >/dev/null 2>&1; then ;; esac fi - + # Ensure overview subdirectory exists and is up to date DIRPATH_OVERVIEW="$DIRPATH_QS/overview" - if [ ! -d "$DIRPATH_OVERVIEW" ] && [ -d "config/quickshell/overview" ]; then + if [ ! -d "$DIRPATH_OVERVIEW" ] && [ -d "$DOTFILES_DIR/config/quickshell/overview" ]; then echo "${INFO} - Copying quickshell overview config..." 2>&1 | tee -a "$LOG" - cp -r "config/quickshell/overview" "$DIRPATH_QS/" 2>&1 | tee -a "$LOG" + cp -r "$DOTFILES_DIR/config/quickshell/overview" "$DIRPATH_QS/" 2>&1 | tee -a "$LOG" echo "${OK} - Quickshell overview config copied successfully" 2>&1 | tee -a "$LOG" fi - + # Check for old quickshell startup commands and update them HYPR_STARTUP="$HOME/.config/hypr/configs/Startup_Apps.conf" if [ -f "$HYPR_STARTUP" ]; then @@ -517,12 +620,13 @@ printf "\n%.0s" {1..1} # wallpaper stuff PICTURES_DIR="$(xdg-user-dir PICTURES 2>/dev/null || echo "$HOME/Pictures")" mkdir -p "$PICTURES_DIR/wallpapers" -if cp -r wallpapers "$PICTURES_DIR/"; then +if cp -r "$SCRIPT_DIR/wallpapers" "$PICTURES_DIR/"; then echo "${OK} Some ${MAGENTA}wallpapers${RESET} copied successfully!" | tee -a "$LOG" else echo "${ERROR} Failed to copy some ${YELLOW}wallpapers${RESET}" | tee -a "$LOG" 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" @@ -538,9 +642,22 @@ else config_remove="" fi -# Check if ~/.config/waybar/config does not exist or is a symlink -if [ ! -e "$HOME/.config/waybar/config" ] || [ -L "$HOME/.config/waybar/config" ]; then - ln -sf "$config_file" "$HOME/.config/waybar/config" 2>&1 | tee -a "$LOG" +# 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_TARGET="$config_file" +if [ -e "$WAYBAR_CONFIG_TARGET" ]; then + if [ -L "$WAYBAR_CONFIG_LINK" ]; then + current_target=$(readlink "$WAYBAR_CONFIG_LINK" || true) + if [ "$current_target" != "$WAYBAR_CONFIG_TARGET" ] || [ ! -e "$WAYBAR_CONFIG_LINK" ]; then + ln -sf "$WAYBAR_CONFIG_TARGET" "$WAYBAR_CONFIG_LINK" 2>&1 | tee -a "$LOG" + fi + else + ln -sf "$WAYBAR_CONFIG_TARGET" "$WAYBAR_CONFIG_LINK" 2>&1 | tee -a "$LOG" + fi +else + echo "${WARN} Waybar default config target not found at $WAYBAR_CONFIG_TARGET; leaving $WAYBAR_CONFIG_LINK as-is." 2>&1 | tee -a "$LOG" fi # Remove inappropriate waybar configs @@ -555,32 +672,10 @@ printf "\n%.0s" {1..1} # for SDDM (simple_sddm_2) sddm_simple_sddm_2="/usr/share/sddm/themes/simple_sddm_2" -if [ -d "$sddm_simple_sddm_2" ] && [ "$EXPRESS_MODE" -eq 1 ]; then - echo "${NOTE} Express mode: skipping SDDM wallpaper prompt." 2>&1 | tee -a "$LOG" -elif [ -d "$sddm_simple_sddm_2" ]; then - while true; do - echo -n "${CAT} SDDM simple_sddm_2 theme detected! Apply current wallpaper as SDDM background? (y/n): " - read SDDM_WALL - - # Remove any leading/trailing whitespace or newlines from input - SDDM_WALL=$(echo "$SDDM_WALL" | tr -d '\n' | tr -d ' ') - - case $SDDM_WALL in - [Yy]) - # Copy the wallpaper, ignore errors if the file exists or fails - sudo -n cp -r "config/hypr/wallpaper_effects/.wallpaper_current" "/usr/share/sddm/themes/simple_sddm_2/Backgrounds/default" || true - echo "${NOTE} Current wallpaper applied as default SDDM background" 2>&1 | tee -a "$LOG" - break - ;; - [Nn]) - echo "${NOTE} You chose not to apply the current wallpaper to SDDM." 2>&1 | tee -a "$LOG" - break - ;; - *) - echo "Please enter 'y' or 'n' to proceed." - ;; - esac - done +if [ -d "$sddm_simple_sddm_2" ]; then + # Apply the current wallpaper as SDDM background without prompting + sudo -n cp -r "$DOTFILES_DIR/config/hypr/wallpaper_effects/.wallpaper_current" "/usr/share/sddm/themes/simple_sddm_2/Backgrounds/default" || true + echo "${NOTE} Current wallpaper applied as default SDDM background" 2>&1 | tee -a "$LOG" fi # additional wallpapers @@ -636,15 +731,32 @@ else cleanup_backups prompt "$LOG" fi -# Check if ~/.config/waybar/style.css does not exist or is a symlink -if [ ! -e "$HOME/.config/waybar/style.css" ] || [ -L "$HOME/.config/waybar/style.css" ]; then - ln -sf "$waybar_style" "$HOME/.config/waybar/style.css" 2>&1 | tee -a "$LOG" +# 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_TARGET="$waybar_style" +if [ -e "$WAYBAR_STYLE_TARGET" ]; then + if [ -L "$WAYBAR_STYLE_LINK" ]; then + current_target=$(readlink "$WAYBAR_STYLE_LINK" || true) + if [ "$current_target" != "$WAYBAR_STYLE_TARGET" ] || [ ! -e "$WAYBAR_STYLE_LINK" ]; then + ln -sf "$WAYBAR_STYLE_TARGET" "$WAYBAR_STYLE_LINK" 2>&1 | tee -a "$LOG" + fi + else + ln -sf "$WAYBAR_STYLE_TARGET" "$WAYBAR_STYLE_LINK" 2>&1 | tee -a "$LOG" + fi +else + echo "${WARN} Waybar default style target not found at $WAYBAR_STYLE_TARGET; leaving $WAYBAR_STYLE_LINK as-is." 2>&1 | tee -a "$LOG" fi printf "\n%.0s" {1..1} # initialize wallust to avoid config error on hyprland wallust run -s $wallpaper 2>&1 | tee -a "$LOG" +if is_nixos && ! command -v waybar-weather >/dev/null 2>&1; then + echo "${WARN} waybar-weather binary is missing." 2>&1 | tee -a "$LOG" + echo "Install the current NixOS-Hyprland version to install waybar-weather applet for Waybar" 2>&1 | tee -a "$LOG" +fi printf "\n%.0s" {1..2} printf "${OK} GREAT! KooL's Hyprland-Dots is now Loaded & Ready !!! " diff --git a/CODE_OF_CONDUCT.es.md b/i18n/CODE_OF_CONDUCT/CODE_OF_CONDUCT.es.md index 14d7b067..14d7b067 100644 --- a/CODE_OF_CONDUCT.es.md +++ b/i18n/CODE_OF_CONDUCT/CODE_OF_CONDUCT.es.md diff --git a/i18n/CODE_OF_CONDUCT/CODE_OF_CONDUCT.fr.md b/i18n/CODE_OF_CONDUCT/CODE_OF_CONDUCT.fr.md new file mode 100644 index 00000000..91c6f1e6 --- /dev/null +++ b/i18n/CODE_OF_CONDUCT/CODE_OF_CONDUCT.fr.md @@ -0,0 +1,85 @@ +# Code de conduite _Contributor Covenant_ + +## Notre engagement + +En tant que membres, contributeur·trice·s et dirigeant·e·s, nous nous engageons à faire de la participation à notre communauté une expérience sans harcèlement, quel que soit l'âge, la taille, le handicap visible ou non, l'ethnicité, les caractéristiques sexuelles, l'identité et l'expression de genre, le niveau d'expérience, l'éducation, le statut socio-économique, la nationalité, l'apparence, la race, la caste, la couleur de peau, la religion, ou l'identité et l'orientation sexuelle. + +Nous nous engageons à agir et interagir de manière à contribuer à une communauté ouverte, accueillante, diversifiée, inclusive et saine. + +## Nos critères + +Exemples de comportements qui contribuent à créer un environnement positif : + +* Faire preuve d'empathie et de bienveillance envers les autres +* Être respectueux des opinions, points de vue et expériences divergents +* Donner et recevoir avec grâce les critiques constructives +* Assumer ses responsabilités et s'excuser auprès des personnes affectées par nos erreurs et apprendre de ces expériences +* Se concentrer sur ce qui est le meilleur non pas uniquement pour nous en tant qu'individu, mais aussi pour l'ensemble de la communauté + +Exemples de comportements inacceptables : + +* L'utilisation de langage ou d'images sexualisés et d'attentions ou d'avances sexuelles de toute nature +* Le _trolling_, les commentaires insultants ou désobligeants et les attaques personnelles ou d'ordre politique +* Le harcèlement en public ou en privé +* La publication d'informations privées d'autrui, telle qu'une adresse postale ou une adresse électronique, sans leur autorisation explicite +* Toute autre conduite qui pourrait raisonnablement être considérée comme inappropriée dans un cadre professionnel + +## Responsabilités d'application + +Les dirigeant·e·s de la communauté sont chargé·e·s de clarifier et de faire respecter nos normes de comportements acceptables et prendront des mesures correctives appropriées et équitables en réponse à tout comportement qu'ils ou elles jugent inapproprié, menaçant, offensant ou nuisible. + +Les dirigeant·e·s de la communauté ont le droit et la responsabilité de supprimer, modifier ou rejeter les commentaires, les contributions, le code, les modifications de wikis, les rapports d'incidents ou de bogues et autres contributions qui ne sont pas alignés sur ce code de conduite, et communiqueront les raisons des décisions de modération le cas échéant. + +## Portée d'application + +Ce code de conduite s'applique à la fois au sein des espaces du projet ainsi que dans les espaces publics lorsqu'un individu représente officiellement le projet ou sa communauté. Font parties des exemples de représentation d'un projet ou d'une communauté l'utilisation d'une adresse électronique officielle, la publication sur les réseaux sociaux à l'aide d'un compte officiel ou le fait d'agir en tant que représentant·e désigné·e lors d'un événement en ligne ou hors-ligne. + +## Application + +Les cas de comportements abusifs, harcelants ou tout autre comportement inacceptables peuvent être signalés aux dirigeant·e·s de la communauté responsables de l'application du code de conduite à [INSÉRER UNE ADRESSE EMAIL]. +Toutes les plaintes seront examinées et feront l'objet d'une enquête rapide et équitable. + +Tou·te·s les dirigeant·e·s de la communauté sont tenu·e·s de respecter la vie privée et la sécurité des personnes ayant signalé un incident. + +## Directives d'application + +Les dirigeant·e·s de communauté suivront ces directives d'application sur l'impact communautaire afin de déterminer les conséquences de toute action qu'ils jugent contraire au présent code de conduite : + +### 1. Correction + +**Impact communautaire** : utilisation d'un langage inapproprié ou tout autre comportement jugé non professionnel ou indésirable dans la communauté. + +**Conséquence** : un avertissement écrit et privé de la part des dirigeant·e·s de la communauté, clarifiant la nature du non-respect et expliquant pourquoi le comportement était inapproprié. Des excuses publiques peuvent être demandées. + +### 2. Avertissement + +**Impact communautaire** : un non-respect par un seul incident ou une série d'actions. + +**Conséquence** : un avertissement avec des conséquences dû à la poursuite du comportement. Aucune interaction avec les personnes concernées, y compris l'interaction non sollicitée avec celles et ceux qui sont chargé·e·s de l'application de ce code de conduite, pendant une période déterminée. Cela comprend le fait d'éviter les interactions dans les espaces communautaires ainsi que sur les canaux externes comme les médias sociaux. Le non-respect de ces conditions peut entraîner un bannissement temporaire ou permanent. + +### 3. Bannissement temporaire + +**Impact communautaire** : un non-respect grave des normes communautaires, notamment un comportement inapproprié soutenu. + +**Conséquence** : un bannissement temporaire de toutes formes d'interactions ou de communications avec la communauté pendant une période déterminée. Aucune interaction publique ou privée avec les personnes concernées, y compris les interactions non sollicitées avec celles et ceux qui appliquent ce code de conduite, n'est autorisée pendant cette période. Le non-respect de ces conditions peut entraîner un bannissement permanent. + +### 4. Bannissement permanent + +**Impact communautaire** : démontrer un schéma récurrent de non-respect des normes de la communauté y compris un comportement inapproprié soutenu, le harcèlement d'un individu ainsi que l'agression ou le dénigrement de catégories d'individus. + +**Conséquence** : un bannissement permanent de toutes formes d'interactions publiques au sein de la communauté. + +## Attributions + +Ce code de conduite est adapté du [Contributor Covenant][homepage], version 2.1, +disponible à [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. + +Les Directives d'application ont été inspirées par le [Code of conduct enforcement ladder][Mozilla CoC] de Mozilla. + +Pour obtenir des réponses aux questions courantes sur ce code de conduite, consultez la FAQ à [https://www.contributor-covenant.org/faq][FAQ]. Les traductions sont disponibles sur [https://www.contributor-covenant.org/translations][translations]. + +[homepage]: https://www.contributor-covenant.org +[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations diff --git a/COMMIT_MESSAGE_GUIDELINES.es.md b/i18n/COMMIT_MESSAGE_GUIDELINES/COMMIT_MESSAGE_GUIDELINES.es.md index 87888736..87888736 100644 --- a/COMMIT_MESSAGE_GUIDELINES.es.md +++ b/i18n/COMMIT_MESSAGE_GUIDELINES/COMMIT_MESSAGE_GUIDELINES.es.md diff --git a/i18n/COMMIT_MESSAGE_GUIDELINES/COMMIT_MESSAGE_GUIDELINES.fr.md b/i18n/COMMIT_MESSAGE_GUIDELINES/COMMIT_MESSAGE_GUIDELINES.fr.md new file mode 100644 index 00000000..974e0242 --- /dev/null +++ b/i18n/COMMIT_MESSAGE_GUIDELINES/COMMIT_MESSAGE_GUIDELINES.fr.md @@ -0,0 +1,149 @@ +# Directives pour les messages de commit + +Un bon message de commit doit être descriptif et fournir le contexte des modifications effectuées. Cela facilite la compréhension et la révision des changements à l'avenir. + +Voici quelques directives pour rédiger des messages de commit descriptifs : + +- Commencez par un court résumé des modifications apportées dans le commit. + +- Utilisez l'impératif pour le résumé, comme si vous donniez un ordre. Par exemple, « Add feature » au lieu de « Added feature ». + +- Fournissez des détails supplémentaires dans le corps du message si nécessaire. Cela peut inclure la raison du changement, son impact, ou toute dépendance introduite ou supprimée. + +- Maintenez le message à moins de 72 caractères par ligne pour garantir une lecture facile dans la sortie de l'historique Git. + +Exemples de bons messages de commit : + +- "Add authentication feature for user login" +- "Fix bug causing application to crash on startup" +- "Update documentation for API endpoints" + +N'oubliez pas que rédiger des messages de commit descriptifs peut faire gagner du temps et éviter des frustrations à l'avenir, tout en aidant les autres à comprendre les modifications apportées au code. + +## Types de messages de commit + +Voici une liste plus complète de types de commit que vous pouvez utiliser : + +`feat` : Ajout d'une nouvelle fonctionnalité au projet + +```markdown +feat: Add multi-image upload support +``` + +`fix` : Correction d'un bug ou d'un problème dans le projet + +```markdown +fix: Fix bug causing application to crash on startup +``` + +`docs` : Mise à jour de la documentation du projet + +```markdown +docs: Update documentation for API endpoints +``` + +`style` : Changements cosmétiques ou de style (comme changer les couleurs ou formater le code) + +```markdown +style: Update colors and formatting +``` + +`refactor` : Changements de code n'affectant pas le comportement du projet, mais améliorant sa qualité ou sa maintenance + +```markdown +refactor: Remove unused code +``` + +`test` : Ajout ou modification de tests pour le projet + +```markdown +test: Add tests for new feature +``` + +`chore` : Changements ne rentrant dans aucune autre catégorie, comme la mise à jour des dépendances ou la configuration du système de build + +```markdown +chore: Update dependencies +``` + +`perf` : Amélioration des performances du projet + +```markdown +perf: Improve performance of image processing +``` + +`security` : Traitement des problèmes de sécurité dans le projet + +```markdown +security: Update dependencies to address security issues +``` + +`merge` : Fusion de branches dans le projet + +```markdown +merge: Merge branch 'feature/branch-name' into develop +``` + +`revert` : Annulation d'un commit précédent + +```markdown +revert: Revert "Add feature" +``` + +`build` : Changements affectant le système de build ou les dépendances du projet + +```markdown +build: Update dependencies +``` + +`ci` : Changements affectant le système d'intégration continue (CI) du projet + +```markdown +ci: Update CI configuration +``` + +`config` : Changements des fichiers de configuration du projet + +```markdown +config: Update configuration files +``` + +`deploy` : Changements du processus de déploiement du projet + +```markdown +deploy: Update deployment scripts +``` + +`init` : Création ou initialisation d'un nouveau dépôt ou projet + +```markdown +init: Initialize project +``` + +`move` : Déplacement de fichiers ou de répertoires au sein du projet + +```markdown +move: Move files to new directory +``` + +`rename` : Renommage de fichiers ou de répertoires au sein du projet + +```markdown +rename: Rename files +``` + +`remove` : Suppression de fichiers ou de répertoires du projet + +```markdown +remove: Remove files +``` + +`update` : Mise à jour du code, des dépendances ou d'autres composants du projet + +```markdown +update: Update code +``` + +Ce ne sont que des exemples, et vous pouvez également créer vos propres types de commit personnalisés. Cependant, il est important de les utiliser de manière cohérente et d'écrire des messages clairs pour permettre aux autres de comprendre facilement les changements effectués. + +**Important :** Si vous prévoyez d'utiliser un type de message de commit personnalisé autre que ceux listés ci-dessus, assurez-vous de l'ajouter à cette liste afin que les autres puissent également le comprendre. Créez une "pull request" pour l'ajouter à ce fichier.
\ No newline at end of file diff --git a/CONTRIBUTING.es.md b/i18n/CONTRIBUTING/CONTRIBUTING.es.md index 5be2d614..5be2d614 100644 --- a/CONTRIBUTING.es.md +++ b/i18n/CONTRIBUTING/CONTRIBUTING.es.md diff --git a/i18n/CONTRIBUTING/CONTRIBUTING.fr.md b/i18n/CONTRIBUTING/CONTRIBUTING.fr.md new file mode 100644 index 00000000..f3af73e0 --- /dev/null +++ b/i18n/CONTRIBUTING/CONTRIBUTING.fr.md @@ -0,0 +1,68 @@ +# Contribuer aux Projets Hyprland de KooL + +Merci de votre intérêt pour la contribution aux Projets Hyprland de KooL ! Nous accueillons toutes les contributions, y compris les corrections de bugs, les améliorations de fonctionnalités, les mises à jour de la documentation et autres améliorations générales. + +## Commencer + +1. Forkez le dépôt de la branche de développement sur votre compte GitHub. Cela créera une copie de ce dépôt sur votre compte. Vous pouvez apporter des modifications à cette copie sans affecter le dépôt original. + - Pour forker ce dépôt, cliquez sur le bouton **Fork** dans le coin supérieur droit de cette page ou cliquez [ici](https://github.com/LinuxBeginnings/Hyprland-Dots/fork). + - Assurez-vous de décocher « Copy the `main` branch only ». Cela copiera la branche de développement ainsi que les autres branches (s'il y en a). + +2. Clonez votre dépôt forké sur votre machine locale. + + - Utilisez la commande suivante pour cloner votre dépôt forké sur votre machine locale : + ```bash + git clone --depth=1 -b development https://github.com/LinuxBeginnings/Hyprland-Dots.git + ``` + +3. Créez une nouvelle branche pour vos modifications. + + - Par exemple, pour créer une nouvelle branche nommée `nom-de-votre-branche`, utilisez la commande suivante : + + ```bash + git checkout -b nom-de-votre-branche + ``` + +4. Appliquez vos modifications et committez-les avec un message de commit descriptif. + + - Par exemple, pour commit vos modifications, utilisez la commande suivante et assurez-vous de suivre les [directives pour les messages de commit](../COMMIT_MESSAGE_GUIDELINES/COMMIT_MESSAGE_GUIDELINES.fr.md) : + + ```bash + git commit -m "feat: add a new feature" + ``` + +5. Poussez (push) vos modifications vers votre dépôt forké. + + - Par exemple, pour pousser vos modifications vers votre dépôt forké, utilisez la commande suivante : + + ```bash + git push origin nom-de-votre-branche + ``` + +6. Soumettez une **"pull request"** vers le dépôt de la branche de développement. + - Par exemple, pour créer une pull request, suivez ces étapes : + 1. Allez sur votre dépôt forké. + 2. Cliquez sur le bouton **Compare & pull request** à côté de votre branche `nom-de-votre-branche`. + 3. Ajoutez un titre et une description pour votre pull request. + 4. Cliquez sur **Create pull request** et n'oubliez pas d'ajouter les labels pertinents en utilisant le [modèle de pull request](../../.github/PULL_REQUEST_TEMPLATE.md). + +## Directives + +- Respectez le style de code du projet. +- Mettez à jour la **documentation** si nécessaire. +- Ajoutez des tests si cela est applicable. +- Assurez-vous que tous les tests passent ou que l'ensemble soit entièrement testé avant de soumettre vos modifications. +- Gardez votre pull request ciblée et évitez d'inclure des changements non liés. +- N'oubliez pas de consulter les fichiers suivants avant de soumettre vos modifications : + - [bug.yml](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/.github/ISSUE_TEMPLATE/bug.yml) - Utilisez ce modèle pour créer un rapport afin de nous aider à nous améliorer. + - [feature.yml](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/.github/ISSUE_TEMPLATE/feature.yml) - Utilisez ce modèle pour suggérer une fonctionnalité pour ce projet. + - [documentation-update.yml](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/.github/ISSUE_TEMPLATE/documentation-update.yml) - Utilisez ce modèle pour proposer une modification de la documentation. + - [PULL_REQUEST_TEMPLATE.md](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/.github/PULL_REQUEST_TEMPLATE.md) - Utilisez ce modèle pour soumettre une pull request. + - [COMMIT_MESSAGE_GUIDELINES.md](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/COMMIT_MESSAGE_GUIDELINES.md) - Lisez ce fichier pour en savoir plus sur les directives des messages de commit. + - [CONTRIBUTING.md](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/CONTRIBUTING.md) - Lisez ce fichier pour en savoir plus sur les directives de contribution. + - [LICENSE](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/LICENSE.md) - Lisez ce fichier pour en savoir plus sur la licence. + - [README.md](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/README.md) - Lisez ce fichier pour en savoir plus sur le projet. + +## Contact + +Si vous avez des questions, n'hésitez pas à me contacter via les [Discussions GitHub](https://github.com/LinuxBeginnings/Hyprland-Dots/discussions) ou [via le serveur Discord](https://discord.gg/kool-tech-world).
\ No newline at end of file diff --git a/i18n/README.de.md b/i18n/README/README.de.md index 704dee2a..098de974 100644 --- a/i18n/README.de.md +++ b/i18n/README/README.de.md @@ -1,8 +1,9 @@ -[](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/README.md) -[](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/i18n/README.jp.md) -[](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/i18n/README.ro.md) -[](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/i18n/README.ru.md) -[](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/i18n/README.ua.md) +[](../../README.md) +[](./README.jp.md) +[](./README.ro.md) +[](./README.ru.md) +[](./README.ua.md) +[](./README.fr.md) <h3 align="center"> <img align="center" width="80%" src=https://github.com/user-attachments/assets/bc18bd4d-944b-4d5f-a119-7578fa38f9b4 /> diff --git a/i18n/README/README.fr.md b/i18n/README/README.fr.md new file mode 100644 index 00000000..262bd91d --- /dev/null +++ b/i18n/README/README.fr.md @@ -0,0 +1,249 @@ +[](../../README.md) +[](./README.jp.md) +[](./README.ro.md) +[](./README.ru.md) +[](./README.ua.md) +[](./README.de.md) + +<h3 align="center"> +<img align="center" width="80%" src=https://github.com/user-attachments/assets/bc18bd4d-944b-4d5f-a119-7578fa38f9b4 /> +</h3> + +<p align="center"> + <img src="https://raw.githubusercontent.com/LinuxBeginnings/Hyprland-Dots/main/assets/latte.png" width="400" /> +</p> + +<div align="center"> +<br> + <a href="#-copying--installation--update-instructions-"><kbd> <br> Installation <br> </kbd></a>   + <a href="https://www.youtube.com/playlist?list=PLDtGd5Fw5_GjXCznR0BzCJJDIQSZJRbxx"><kbd> <br> Youtube <br> </kbd></a>   + <a href="https://github.com/LinuxBeginnings/Hyprland-Dots/wiki"><kbd> <br> Wiki <br> </kbd></a>   + <a href="https://github.com/LinuxBeginnings/Hyprland-Dots/discussions"><kbd> <br> Discussions <br> </kbd></a>   + <a href="https://github.com/LinuxBeginnings/Hyprland-Dots/wiki/Keybinds"><kbd> <br> Raccourcis clavier <br> </kbd></a>   + <a href="https://discord.gg/RZJgC7KAKm"><kbd> <br> Discord <br> </kbd></a> +</div><br> + +<div align="center"> + + +<br/> +</div> + +<h3 align="center"> + <img src="https://github.com/LinuxBeginnings/Telegram-Animated-Emojis/blob/main/Activity/Sparkles.webp" alt="Sparkles" width="38" height="38" /> + Démonstration des Dotfiles Hyprland de KooL + <img src="https://github.com/LinuxBeginnings/Telegram-Animated-Emojis/blob/main/Activity/Sparkles.webp" alt="Sparkles" width="38" height="38" /> +</h3> + +<div align="center"> + +https://github.com/user-attachments/assets/49bc12b2-abaf-45de-a21c-67aacd9bb872 + +</div> + +### 📹 Une vidéo de présentation complète + +- en bas + +</details> + +--- + +[](https://git.io/typing-svg) + +### 🚩 🏁 Clonage et lancement des scripts d'installation automatique Distro-Hyprland 🇵🇭 + +> [!CAUTION] +> Si vous utilisez le SHELL FISH, N'UTILISEZ PAS cette fonction. Clonez Distro-Hyprland et exécutez install.sh à la place. + +- NOTE: vous avez besoin du pacquet `curl` pour que ça fonctionne + +```bash +sh <(curl -L https://raw.githubusercontent.com/LinuxBeginnings/Hyprland-Dots/main/Distro-Hyprland.sh) +``` + +- Vous pouvez utiliser la commande ci-dessus pour cloner automatiquement les scripts d'installation `Distro-Hyprland` +- Cela va cloner le script d'installation et démarrer `install.sh` 😎 + +### 👁️🗨️ Mes scripts d'installation Hyprland 👁️🗨️ + +- Scripts Hyprland automatisés pour la distribution de votre choix, qui importeront ces dotfiles si vous choisissez d'installer ces configurations + +- [Arch-Linux](https://github.com/LinuxBeginnings/Arch-Hyprland) + +- [OpenSUSE(Tumbleweed)](https://github.com/LinuxBeginnings/OpenSuse-Hyprland) + +- [Fedora-Linux (43/Rawhide)](https://github.com/LinuxBeginnings/Fedora-Hyprland) + +- [Debian-Linux (Trixie & SID)](https://github.com/LinuxBeginnings/Debian-Hyprland) + +- [NixOS (25.05+)](https://github.com/LinuxBeginnings/NixOS-Hyprland) + +- [Ubuntu 24.04 LTS](https://github.com/LinuxBeginnings/Ubuntu-Hyprland/tree/24.04) +- [Ubuntu 24.10 (déprécié)](https://github.com/LinuxBeginnings/Ubuntu-Hyprland/tree/24.10) +- [Ubuntu 25.04 (déprécié)](https://github.com/LinuxBeginnings/Ubuntu-Hyprland/tree/25.04) +- [Ubuntu 25.10](https://github.com/LinuxBeginnings/Ubuntu-Hyprland/tree/25.10) + +--- + +### 🪧 Attention 🪧 + +- Ce dépôt ne contient PAS en ne va PAS installer de paquets. Ce sont seulement des configurations hyprland préconfigurées ou dotfiles +- Référez-vous aux scripts d'installation pour connaître les paquets nécessaires... mais au minimum, les paquets Hyprland sont requis +- Ce dépôt sera récupéré par les scripts d'installation Distro-Hyprland ci-dessus si vous choisissez de télécharger les dotfiles préconfigurés + +### 👀 Captures d'écran 👀 + +- Toutes les captures d'écran sont ici [Captures d'écran](https://github.com/LinuxBeginnings/screenshots/tree/main/Hyprland-ScreenShots) + +### 📦 Quoi de neuf ? +- Pour suivre les changements plus facilement, je vais mettre à jour les [CHANGELOGS](https://github.com/LinuxBeginnings/Hyprland-Dots/wiki/Changelogs). Des captures d'écran seront incluses si les modifications en valent la peine ! + +> [!NOTE] +> Veuillez noter que par défaut, les Dots de KooL sont ajustées / configurées pour un affichage en 2k (1440p) sans mise à l'échelle. + +### 💥 Instruction de copie / Installation / Mise à jour 💥 + +- [`Plus d'infos ici`](https://github.com/LinuxBeginnings/Hyprland-Dots/wiki/Install_&_Update) + > [!Note] + > Le script de copie automatique `copy.sh` va créer des sauvegardes des répertoires destinés à être copiés. + > Cependant, c'est toujours une bonne idée de faire une sauvegare manuelle au cas où le script n'arriverait pas à sauvegarder votre configuration. + > Si vous avez déjà une configuration hyprland, désinstallez-la d'abord, ou créez un nouvel utilisateur et installez avec cet utilisateur. + +- Clonez ce dépôt en utilisant `git`. +- Changez de répertoire, i.e. `cd Arch-Hyprland` +- Rendez `install.sh` exécutable `chmod +x ./install.sh` +- Lancez le script `./install.sh` + +> To download from Master branch +> Pour télécharger depuis la branche Master +> Note : Ubuntu est une exception, il y a des branches spécifiques aux versions + +```bash +git clone --depth=1 https://github.com/LinuxBeginnings/Hyprland-Dots.git +cd Hyprland-Dots +``` + +> Pour télécharger depuis la branche Développement (développement et tests) +> Non recommandé pour des systèmes qui ne sont pas pour tester + +```bash +git clone --depth=1 https://github.com/LinuxBeginnings/Hyprland-Dots.git -b development +cd Hyprland-Dots +``` + +- Copie/installation automatique des dots préconfigurés (recommandé pour mettre à jour) + +```bash +chmod +x copy.sh +./copy.sh +``` + +- to copy/install from releases (stable) (note this is 1 version older than in main) +- Pour copier/installer depuis les releases (stable) (notez que celles-ci ont 1 version de retard par rapport au main) + +```bash +chmod +x release.sh +./release.sh +``` + +- Fonction UPGRADE.sh + > [!IMPORTANT] + > Vous avez besoin de rsync pour que ça fonctionne + > Vous devez déjà avoir la configuration Hyprland de KooL activée avant d'utiliser cette fonction + +```bash +chmod +x upgrade.sh +./upgrade.sh +``` + +## ❗❗❗ DEBIAN ET UBUNTU ! + +- Debian 13 + - Compile désormais Hyprland 0.51.1 depuis les sources en utilisant le script `install.sh` + - Donc la version actuelle de Hyprland-Dots est compatible seulement dans ces conditions. + +- Ubuntu 24.04/25.10 + - Nous utilisons désormais un PPA pour obtenir des versions plus récentes de Hyprland + - Ainsi, la version actuelle de ces Dotfiles est compatible si vous avez effectué la mise à jour vers la configuration basée sur le PPA + +#### ⚠️⚠️⚠️ ATTENTION - SAUVEGARDES CRÉES par le SCRIPT + +> [!CAUTION] +> `copy.sh`, `release.sh` et aussi `upgrade.sh` créent des sauvegardes ! +> Veuillez inspecter manuellement le contenu dans votre `$HOME/.config` +> Supprimez manuellement les sauvegardes que vous ne voulez pas. + +#### 🛎️ une petite note sur les fonds d'écran + +- par défaut, seuls quelques fonds d'écran seront copiés (1 sombre et 1 clair plus 3 autres). Il vous sera proposé d'en télécharger plus. Vous pouvez prévisualiser/consulter les fonds d'écran additionnel va [`CE LIEN`](https://github.com/LinuxBeginnings/Wallpaper-Bank/tree/main/wallpapers) + +#### ⚠️⚠️⚠️ INDISPENSABLE ! après avoir copié / installé ces dots + +- Appuyez sur `SUPER + W` et choisissez un fond d'écran. Cela permet également d'initialiser les thèmes wallust pour waybar, kitty (tty) et rofi. +- Cependant, si vous utilisez `copy.sh` ou `release.sh`, il y aura un fond d'écran sera déjà réglé et vous n'avez pas besoin de faire ceci. + +- Utilisateurs de Nvidia. Assurez-vous de modifier vos `~/.config/hypr/UserConfigs/ENVariables.conf` (fortement recommandé). + +* Utilisateurs de Nvidia, après l'installation, regardez [`CECI`](https://github.com/LinuxBeginnings/Hyprland-Dots/wiki/Notes_to_remember#--for-nvidia-gpu-users) + +- If you have already set your own keybinds, monitors, etc.... Just copy over from backup created before log-out or reboot. (recommended) +- Si vous aviez déjà configuré vos propres raccourcis, écrans, etc... Copiez juste depuis les sauvegardes avant de vous déconnecter ou redémarrer. (recommendé) + +#### 📖 Problèmes connus et solutions possibles + +- Allez voir cette page [FAQ](https://github.com/LinuxBeginnings/Hyprland-Dots/wiki/FAQ) et [PROBLÈMES NON RÉGLÉS](https://github.com/LinuxBeginnings/Hyprland-Dots/wiki/Known_Issues) + +#### 🙋 QUESTIONS ?!?! ⁉️ + +- FAQ ! Oui, vous pouvez utiliser ces dotfiles sur d'autres distros ! Assurez-vous juste d'installer les paquets nécessaire ! Si ça peut vous rassurer, j'utilise la même configuration sur mon Gentoo :) +- ASTUCE RAPIDE ! Cliquez sur le module Waybar "HINT!" (notez qu'il es seulement disponible dans les disposition default et Simple-L [TOP]). Peut aussi être lancé avec le raccourci `SUPER + H` +- Plus de questions ? Cliquez ici pour aller naviguer dans ce [WIKI](https://github.com/LinuxBeginnings/Hyprland-Dots/wiki/) +- If you want the old configs, it is collected on my "Archive" repo. See [HERE](https://github.com/LinuxBeginnings/Hyprland-Dots-releases-Archive) +- Si vous voulez les anciennes configurations, elles sont dans mon dépôt "Archive". Aller voir [ICI](https://github.com/LinuxBeginnings/Hyprland-Dots-releases-Archive) + +#### ⌨ Raccourcis clavier + +- Raccourcis clavier [`CLIC`](https://github.com/LinuxBeginnings/Hyprland-Dots/wiki/Keybinds) + +#### 🙏 Requête spéciale + +- Si vous aves des améliorations pour les dotfiles ou les configurations, vous êtes libres de soumettre une PR pour améliorer. +- Les améliorations sont toujours les bienvenues, car j'apprends moi aussi tout comme vous ! + +#### ✍️ Contribuer + +- Vous voulez contribuer ? Cliquer [`ICI`](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/CONTRIBUTING.md) pour un guide sur les contributions +> Merci à tous ceux qui ont contribuer du code, ou supporté sur le server Discord. Vos efforts sont grandement appréciés + +#### 🤷♂️ À FAIRE ! + +- [ ] Peaufiner les dots - 🚧 en progrès constant + +#### 🔮 Serveur Discord + +- N'hésitez pas à rejoindre mon serveur [Discord](https://discord.com/invite/kool-tech-world) + +#### 💖 Support + +- Une Star sur mes dépôts Github serait sympa 🌟 + +- Abonnez vous à ma chaine Youtube [YouTube](https://www.youtube.com/@Ja.KooLit) + +- Vous pouvez aussi me supporter avec des cafés ou btc 😊 + + +ou + + +Ou vous pouvez donner de la crypto sur mon portefeuille btc :) + + + +## 🫰 Merci pour les stars 🩷 + + + +### Traductions des documents + +- Spanish: [Código de Conducta](./CODE_OF_CONDUCT.es.md) · [Guía de mensajes de commit](./COMMIT_MESSAGE_GUIDELINES.es.md) · [Guía de contribución](./CONTRIBUTING.es.md) diff --git a/i18n/README.jp.md b/i18n/README/README.jp.md index b9244d01..6fa89c5c 100644 --- a/i18n/README.jp.md +++ b/i18n/README/README.jp.md @@ -1,8 +1,9 @@ -[](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/README.md) -[](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/i18n/README.ro.md) -[](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/i18n/README.ru.md) -[](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/i18n/README.ua.md) -[](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/i18n/README.de.md) +[](../../README.md) +[](./README.ro.md) +[](./README.ru.md) +[](./README.ua.md) +[](./README.de.md) +[](./README.fr.md) <h3 align="center"> <img align="center" width="80%" src=https://github.com/user-attachments/assets/bc18bd4d-944b-4d5f-a119-7578fa38f9b4 /> diff --git a/i18n/README.ro.md b/i18n/README/README.ro.md index 17b1e66d..ac2593fb 100644 --- a/i18n/README.ro.md +++ b/i18n/README/README.ro.md @@ -1,8 +1,9 @@ -[](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/README.md) -[](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/i18n/README.jp.md) -[](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/i18n/README.ru.md) -[](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/i18n/README.ua.md) -[](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/i18n/README.de.md) +[](../../README.md) +[](./README.jp.md) +[](./README.ru.md) +[](./README.ua.md) +[](./README.de.md) +[](./README.fr.md) <h3 align="center"> <img align="center" width="80%" src=https://github.com/user-attachments/assets/bc18bd4d-944b-4d5f-a119-7578fa38f9b4 /> diff --git a/i18n/README.ru.md b/i18n/README/README.ru.md index 5bd7c9d3..919584b4 100644 --- a/i18n/README.ru.md +++ b/i18n/README/README.ru.md @@ -1,8 +1,9 @@ -[](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/README.md) -[](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/i18n/README.jp.md) -[](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/i18n/README.ro.md) -[](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/i18n/README.ua.md) -[](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/i18n/README.de.md) +[](../../README.md) +[](./README.jp.md) +[](./README.ro.md) +[](./README.ua.md) +[](./README.de.md) +[](./README.fr.md) <h3 align="center"> <img align="center" width="80%" src=https://github.com/user-attachments/assets/bc18bd4d-944b-4d5f-a119-7578fa38f9b4 /> diff --git a/i18n/README.ua.md b/i18n/README/README.ua.md index e7460408..03c50dd1 100644 --- a/i18n/README.ua.md +++ b/i18n/README/README.ua.md @@ -1,8 +1,9 @@ -[](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/README.md) -[](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/i18n/README.jp.md) -[](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/i18n/README.ro.md) -[](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/i18n/README.ru.md) -[](https://github.com/LinuxBeginnings/Hyprland-Dots/blob/main/i18n/README.de.md) +[](../../README.md) +[](./README.jp.md) +[](./README.ro.md) +[](./README.ru.md) +[](./README.de.md) +[](./README.fr.md) <h3 align="center"> <img align="center" width="80%" src=https://github.com/user-attachments/assets/bc18bd4d-944b-4d5f-a119-7578fa38f9b4 /> diff --git a/scripts/lib_apps.sh b/scripts/lib_apps.sh index 562e5c5b..f19fd75a 100644 --- a/scripts/lib_apps.sh +++ b/scripts/lib_apps.sh @@ -3,8 +3,9 @@ enable_asusctl() { local log="$1" + local base="${DOTFILES_DIR:-.}" if command -v asusctl >/dev/null 2>&1; then - local OVERLAY_SA="config/hypr/configs/Startup_Apps.conf" + local OVERLAY_SA="$base/config/hypr/configs/Startup_Apps.conf" mkdir -p "$(dirname "$OVERLAY_SA")" touch "$OVERLAY_SA" grep -qx 'exec-once = rog-control-center' "$OVERLAY_SA" || echo 'exec-once = rog-control-center' >>"$OVERLAY_SA" @@ -13,8 +14,9 @@ enable_asusctl() { enable_blueman() { local log="$1" + local base="${DOTFILES_DIR:-.}" if command -v blueman-applet >/dev/null 2>&1; then - local OVERLAY_SA="config/hypr/configs/Startup_Apps.conf" + local OVERLAY_SA="$base/config/hypr/configs/Startup_Apps.conf" mkdir -p "$(dirname "$OVERLAY_SA")" touch "$OVERLAY_SA" grep -qx 'exec-once = blueman-applet' "$OVERLAY_SA" || echo 'exec-once = blueman-applet' >>"$OVERLAY_SA" @@ -23,33 +25,36 @@ enable_blueman() { enable_ags() { local log="$1" + local base="${DOTFILES_DIR:-.}" if command -v ags >/dev/null 2>&1; then echo "${INFO:-[INFO]} AGS detected - enabling in startup and refresh scripts" 2>&1 | tee -a "$log" - local OVERLAY_SA="config/hypr/configs/Startup_Apps.conf" + local OVERLAY_SA="$base/config/hypr/configs/Startup_Apps.conf" mkdir -p "$(dirname "$OVERLAY_SA")" touch "$OVERLAY_SA" grep -qx 'exec-once = ags' "$OVERLAY_SA" || echo 'exec-once = ags' >>"$OVERLAY_SA" - sed -i '/#ags -q && ags &/s/^#//' config/hypr/scripts/RefreshNoWaybar.sh - sed -i '/#ags -q && ags &/s/^#//' config/hypr/scripts/Refresh.sh + sed -i '/#ags -q && ags &/s/^#//' "$base/config/hypr/scripts/RefreshNoWaybar.sh" + sed -i '/#ags -q && ags &/s/^#//' "$base/config/hypr/scripts/Refresh.sh" fi } enable_quickshell() { local log="$1" + local base="${DOTFILES_DIR:-.}" if command -v qs >/dev/null 2>&1; then echo "${INFO:-[INFO]} Quickshell detected - enabling in startup and refresh scripts" 2>&1 | tee -a "$log" - local OVERLAY_SA="config/hypr/configs/Startup_Apps.conf" + local OVERLAY_SA="$base/config/hypr/configs/Startup_Apps.conf" mkdir -p "$(dirname "$OVERLAY_SA")" touch "$OVERLAY_SA" grep -qx 'exec-once = qs' "$OVERLAY_SA" || echo 'exec-once = qs' >>"$OVERLAY_SA" - sed -i '/#pkill qs && qs &/s/^#//' config/hypr/scripts/RefreshNoWaybar.sh - sed -i '/#pkill qs && qs &/s/^#//' config/hypr/scripts/Refresh.sh + sed -i '/#pkill qs && qs &/s/^#//' "$base/config/hypr/scripts/RefreshNoWaybar.sh" + sed -i '/#pkill qs && qs &/s/^#//' "$base/config/hypr/scripts/Refresh.sh" fi } ensure_keybinds_init() { local log="$1" - local OVERLAY_SA="config/hypr/configs/Startup_Apps.conf" + local base="${DOTFILES_DIR:-.}" + local OVERLAY_SA="$base/config/hypr/configs/Startup_Apps.conf" mkdir -p "$(dirname "$OVERLAY_SA")" if ! grep -qx 'exec-once = \$scriptsDir/KeybindsLayoutInit.sh' "$OVERLAY_SA"; then echo 'exec-once = $scriptsDir/KeybindsLayoutInit.sh' >>"$OVERLAY_SA" @@ -59,9 +64,10 @@ ensure_keybinds_init() { install_terminal_configs() { local log="$1" + local base="${DOTFILES_DIR:-.}" # Ghostty - local GHOSTTY_SRC="config/ghostty/ghostty.config" + local GHOSTTY_SRC="$base/config/ghostty/ghostty.config" local GHOSTTY_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/ghostty" local GHOSTTY_DEST="$GHOSTTY_DIR/config" if [ -f "$GHOSTTY_SRC" ]; then @@ -75,7 +81,7 @@ install_terminal_configs() { fi # WezTerm - local WEZTERM_SRC="config/wezterm/wezterm.lua" + local WEZTERM_SRC="$base/config/wezterm/wezterm.lua" local WEZTERM_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/wezterm" local WEZTERM_DEST="$WEZTERM_DIR/wezterm.lua" if [ -f "$WEZTERM_SRC" ]; then @@ -88,10 +94,11 @@ install_terminal_configs() { choose_default_editor() { local log="$1" + local base="${DOTFILES_DIR:-.}" local editor_set=0 update_editor() { local editor=$1 - sed -i "s/#env = EDITOR,.*/env = EDITOR,$editor #default editor/" config/hypr/UserConfigs/01-UserDefaults.conf + sed -i "s/#env = EDITOR,.*/env = EDITOR,$editor #default editor/" "$base/config/hypr/UserConfigs/01-UserDefaults.conf" echo "${OK:-[OK]} Default editor set to ${MAGENTA:-}$editor${RESET:-}." 2>&1 | tee -a "$log" } if command -v nvim &>/dev/null; then @@ -114,3 +121,144 @@ choose_default_editor() { fi fi } + +# Install waybar-weather on non-NixOS: prefer Arch AUR, otherwise copy prebuilt asset to /usr/bin +install_waybar_weather_binary() { + local log="$1" + local APP_NAME="waybar-weather" + local INSTALL_PATH="/usr/bin/${APP_NAME}" + local ASSET="${SCRIPT_DIR:-.}/assets/${APP_NAME}.gz" + + # Helper: log wrappers may not be defined here; reuse INFO/WARN/ERROR if available + _log() { echo "[${APP_NAME}] $*" 2>&1 | tee -a "$log"; } + _warn() { echo "[${APP_NAME}] WARN: $*" 1>&2 | tee -a "$log"; } + _err() { echo "[${APP_NAME}] ERROR: $*" 1>&2 | tee -a "$log"; } + + # NixOS handled by a separate helper + if grep -qi '^ID=nixos' /etc/os-release 2>/dev/null; then + _warn "NixOS detected. Use install_waybar_weather_nixos instead." + return 0 + fi + + if grep -qi '^ID=arch' /etc/os-release 2>/dev/null; then + if command -v pacman >/dev/null 2>&1 && pacman -Qi weather-waybar >/dev/null 2>&1; then + _log "weather-waybar already installed via pacman." + return 0 + fi + if command -v yay >/dev/null 2>&1; then + _log "Attempting to install AUR package 'weather-waybar' via yay" + if yay -S --noconfirm weather-waybar; then + _log "AUR install succeeded." + return 0 + else + _warn "AUR install failed; will fall back to bundled asset." + fi + else + _warn "yay not found on Arch; falling back to bundled asset." + fi + fi + + # Asset path validation + if [[ ! -f "$ASSET" ]]; then + _err "Asset not found: $ASSET" + return 1 + fi + if ! command -v gzip >/dev/null 2>&1; then + _err "Missing required command: gzip" + return 1 + fi + + # Sudo handling for /usr/bin + local SUDO="" + if [[ $EUID -ne 0 ]]; then + if command -v sudo >/dev/null 2>&1; then + SUDO="sudo" + else + _err "sudo not available; cannot write to ${INSTALL_PATH} as non-root" + return 1 + fi + fi + + _log "Installing prebuilt binary to ${INSTALL_PATH} from ${ASSET}" + if ${SUDO} sh -c "tmp=\$(mktemp '${INSTALL_PATH}.XXXXXX') && gzip -dc '$ASSET' > \"\$tmp\" && chmod 0755 \"\$tmp\" && mv -f \"\$tmp\" '${INSTALL_PATH}'"; then + if "${INSTALL_PATH}" -h >/dev/null 2>&1; then + _log "Installed ${APP_NAME} successfully." + else + _warn "${APP_NAME} installed, but a basic self-check did not run." + fi + else + _err "Failed to install ${APP_NAME} to ${INSTALL_PATH}" + return 1 + fi +} + +# Install waybar-weather on NixOS using Go from the system (no version checks) +install_waybar_weather_nixos() { + local log="$1" + local APP_NAME="waybar-weather" + local DEST="$HOME/.local/bin/${APP_NAME}" + + _log() { echo "[${APP_NAME}] $*" 2>&1 | tee -a "$log"; } + _warn() { echo "[${APP_NAME}] WARN: $*" 1>&2 | tee -a "$log"; } + _err() { echo "[${APP_NAME}] ERROR: $*" 1>&2 | tee -a "$log"; } + + if ! grep -qi '^ID=nixos' /etc/os-release 2>/dev/null; then + _warn "Not NixOS; skipping NixOS-specific build." + return 0 + fi + + if ! command -v go >/dev/null 2>&1; then + _err "Go toolchain not found in PATH. Ensure NixOS-Hyprland provides go, then re-run." + return 1 + fi + if ! command -v git >/dev/null 2>&1; then + _err "git not found; install git and retry." + return 1 + fi + + local tmp + tmp=$(mktemp -d) + trap 'rm -rf "${tmp}"' RETURN + + _log "Cloning waybar-weather source" + if ! git clone --depth 1 https://github.com/wneessen/waybar-weather.git "${tmp}/src" >/dev/null 2>&1; then + _err "git clone failed" + return 1 + fi + + if ! ( + cd "${tmp}/src" || { _err "cd failed"; exit 1; } + _log "Fetching modules" + go mod download >/dev/null 2>&1 || _warn "go mod download returned non-zero; continuing" + _log "Building ${APP_NAME}" + CGO_ENABLED=0 go build -trimpath -ldflags "-s -w" -o "${APP_NAME}" ./cmd/${APP_NAME} + ); then + _err "go build failed" + return 1 + fi + + mkdir -p "$HOME/.local/bin" + install -m 0755 "${APP_NAME}" "${DEST}" || { _err "install to ${DEST} failed"; return 1; } + + if printf '%s' "$PATH" | grep -q "$HOME/.local/bin"; then + : + else + _warn "~/.local/bin is not in PATH; add it so Waybar can find ${APP_NAME}." + fi + + if "${DEST}" -h >/dev/null 2>&1; then + _log "Installed ${APP_NAME} to ${DEST}" + else + _warn "${APP_NAME} installed, but a basic self-check did not run." + fi +} + +# Wrapper: choose NixOS builder or non-NixOS installer automatically +install_waybar_weather() { + local log="$1" + if grep -qi '^ID=nixos' /etc/os-release 2>/dev/null; then + install_waybar_weather_nixos "$log" + else + install_waybar_weather_binary "$log" + fi +} diff --git a/scripts/lib_copy.sh b/scripts/lib_copy.sh index 331c6906..58fbe066 100644 --- a/scripts/lib_copy.sh +++ b/scripts/lib_copy.sh @@ -3,6 +3,7 @@ copy_phase1() { local log="$1" + local base="${DOTFILES_DIR:-.}" local dirs="fastfetch kitty rofi swaync" for DIR2 in $dirs; do local DIRPATH="$HOME/.config/$DIR2" @@ -16,7 +17,7 @@ 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 "config/$DIR2" "$HOME/.config/$DIR2" 2>&1 | tee -a "$log" + cp -r "$base/config/$DIR2" "$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 @@ -39,7 +40,7 @@ copy_phase1() { esac done else - cp -r "config/$DIR2" "$HOME/.config/$DIR2" 2>&1 | tee -a "$log" + cp -r "$base/config/$DIR2" "$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 @@ -47,6 +48,7 @@ copy_phase1() { copy_waybar() { local log="$1" + local base="${DOTFILES_DIR:-.}" local DIRW="waybar" local DIRPATHw="$HOME/.config/$DIRW" if [ -d "$DIRPATHw" ]; then @@ -58,7 +60,7 @@ copy_waybar() { BACKUP_DIR=$(get_backup_dirname) cp -r "$DIRPATHw" "$DIRPATHw-backup-$BACKUP_DIR" 2>&1 | tee -a "$log" echo -e "${NOTE:-[NOTE]} - Backed up $DIRW to $DIRPATHw-backup-$BACKUP_DIR." 2>&1 | tee -a "$log" - rm -rf "$DIRPATHw" && cp -r "config/$DIRW" "$DIRPATHw" 2>&1 | tee -a "$log" + rm -rf "$DIRPATHw" && cp -r "$base/config/$DIRW" "$DIRPATHw" 2>&1 | tee -a "$log" for file in "config" "style.css"; do symlink="$DIRPATHw-backup-$BACKUP_DIR/$file" target_file="$DIRPATHw/$file" @@ -103,13 +105,14 @@ copy_waybar() { esac done else - cp -r "config/$DIRW" "$DIRPATHw" 2>&1 | tee -a "$log" + cp -r "$base/config/$DIRW" "$DIRPATHw" 2>&1 | tee -a "$log" echo -e "${OK:-[OK]} - Copy completed for ${YELLOW:-}$DIRW${RESET:-}" 2>&1 | tee -a "$log" fi } copy_phase2() { local log="$1" + local base="${DOTFILES_DIR:-.}" local DIR="btop cava hypr Kvantum qt5ct qt6ct swappy wallust wlogout" for DIR_NAME in $DIR; do local DIRPATH="$HOME/.config/$DIR_NAME" @@ -118,8 +121,8 @@ copy_phase2() { BACKUP_DIR=$(get_backup_dirname) mv "$DIRPATH" "$DIRPATH-backup-$BACKUP_DIR" 2>&1 | tee -a "$log" fi - if [ -d "config/$DIR_NAME" ]; then - cp -r "config/$DIR_NAME/" "$HOME/.config/$DIR_NAME" 2>&1 | tee -a "$log" + if [ -d "$base/config/$DIR_NAME" ]; then + cp -r "$base/config/$DIR_NAME/" "$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" @@ -146,7 +149,15 @@ restore_hypr_assets() { echo -e "\n${NOTE:-[NOTE]} Restoring ${SKY_BLUE:-}Animations & Monitor Profiles${RESET:-} into ${YELLOW:-}$HYPR_DIR${RESET:-}..." - local DIR_B=("Monitor_Profiles" "animations" "wallpaper_effects") + # Fresh installs should apply repo defaults; do not restore a previous wallpaper. + # RUN_MODE is set by copy.sh (install|upgrade|express) and is visible here. + local DIR_B=("Monitor_Profiles" "animations") + if [ "${RUN_MODE:-}" != "install" ]; then + DIR_B+=("wallpaper_effects") + else + echo "${NOTE:-[NOTE]} Fresh install: skipping restore of wallpaper_effects so default wallpaper applies." 2>&1 | tee -a "$log" + fi + for DIR_RESTORE in "${DIR_B[@]}"; do local BACKUP_SUBDIR="$BACKUP_HYPR_PATH/$DIR_RESTORE" if [ -d "$BACKUP_SUBDIR" ]; then diff --git a/scripts/lib_prompts.sh b/scripts/lib_prompts.sh index bf6fafd7..6475e54d 100644 --- a/scripts/lib_prompts.sh +++ b/scripts/lib_prompts.sh @@ -21,6 +21,7 @@ prompt_detect_layout() { prompt_keyboard_layout() { local layout="$1" local log="$2" + local base="${DOTFILES_DIR:-.}" if [ "$layout" = "(unset)" ]; then while true; do @@ -65,8 +66,8 @@ ${MAGENTA} NOTE:${RESET} read keyboard_layout case $keyboard_layout in [yY]) - awk -v layout="$layout" '/kb_layout/ {$0 = " kb_layout = " layout} 1' config/hypr/configs/SystemSettings.conf >temp.conf - mv temp.conf config/hypr/configs/SystemSettings.conf + awk -v layout="$layout" '/kb_layout/ {$0 = " kb_layout = " layout} 1' "$base/config/hypr/configs/SystemSettings.conf" >temp.conf + mv temp.conf "$base/config/hypr/configs/SystemSettings.conf" echo "${NOTE} kb_layout ${MAGENTA}$layout${RESET} configured in settings." 2>&1 | tee -a "$log" break ;; @@ -95,8 +96,8 @@ ${MAGENTA} NOTE:${RESET} printf "\n%.0s" {1..1} echo -n "${CAT} - Please enter the correct keyboard layout: " read new_layout - awk -v new_layout="$new_layout" '/kb_layout/ {$0 = " kb_layout = " new_layout} 1' config/hypr/configs/SystemSettings.conf >temp.conf - mv temp.conf config/hypr/configs/SystemSettings.conf + awk -v new_layout="$new_layout" '/kb_layout/ {$0 = " kb_layout = " new_layout} 1' "$base/config/hypr/configs/SystemSettings.conf" >temp.conf + mv temp.conf "$base/config/hypr/configs/SystemSettings.conf" echo "${OK} kb_layout $new_layout configured in settings." 2>&1 | tee -a "$log" break ;; @@ -131,6 +132,7 @@ prompt_resolution_choice() { # Prompt for 12H clock; sets waybar/hyprlock/SDDM changes when accepted. prompt_clock_12h() { local log="$1" + local base="${DOTFILES_DIR:-.}" while true; do echo -e "${NOTE} ${SKY_BLUE} By default, KooL's Dots are configured in 24H clock format." echo -n "$CAT Do you want to change to 12H (AM/PM) clock format? (y/n): " @@ -138,20 +140,20 @@ prompt_clock_12h() { answer=$(echo "$answer" | tr '[:upper:]' '[:lower:]') if [[ "$answer" == "y" ]]; then # waybar clocks - sed -i 's#^\(\s*\)//\("format": " {:%I:%M %p}",\) #\1\2 #g' config/waybar/Modules 2>&1 | tee -a "$log" - sed -i 's#^\(\s*\)\("format": " {:%H:%M:%S}",\) #\1//\2#g' config/waybar/Modules 2>&1 | tee -a "$log" - sed -i 's#^\(\s*\)\("format": " {:%H:%M}",\) #\1//\2#g' config/waybar/Modules 2>&1 | tee -a "$log" - sed -i 's#^\(\s*\)//\("format": "{:%I:%M %p - %d/%b}",\) #\1\2#g' config/waybar/Modules 2>&1 | tee -a "$log" - sed -i 's#^\(\s*\)\("format": "{:%H:%M - %d/%b}",\) #\1//\2#g' config/waybar/Modules 2>&1 | tee -a "$log" - sed -i 's#^\(\s*\)//\("format": "{:%B | %a %d, %Y | %I:%M %p}",\) #\1\2#g' config/waybar/Modules 2>&1 | tee -a "$log" - sed -i 's#^\(\s*\)\("format": "{:%B | %a %d, %Y | %H:%M}",\) #\1//\2#g' config/waybar/Modules 2>&1 | tee -a "$log" - sed -i 's#^\(\s*\)//\("format": "{:%A, %I:%M %P}",\) #\1\2#g' config/waybar/Modules 2>&1 | tee -a "$log" - sed -i 's#^\(\s*\)\("format": "{:%a %d | %H:%M}",\) #\1//\2#g' config/waybar/Modules 2>&1 | tee -a "$log" + sed -i 's#^\(\s*\)//\("format": " {:%I:%M %p}",\) #\1\2 #g' "$base/config/waybar/Modules" 2>&1 | tee -a "$log" + sed -i 's#^\(\s*\)\("format": " {:%H:%M:%S}",\) #\1//\2#g' "$base/config/waybar/Modules" 2>&1 | tee -a "$log" + sed -i 's#^\(\s*\)\("format": " {:%H:%M}",\) #\1//\2#g' "$base/config/waybar/Modules" 2>&1 | tee -a "$log" + sed -i 's#^\(\s*\)//\("format": "{:%I:%M %p - %d/%b}",\) #\1\2#g' "$base/config/waybar/Modules" 2>&1 | tee -a "$log" + sed -i 's#^\(\s*\)\("format": "{:%H:%M - %d/%b}",\) #\1//\2#g' "$base/config/waybar/Modules" 2>&1 | tee -a "$log" + sed -i 's#^\(\s*\)//\("format": "{:%B | %a %d, %Y | %I:%M %p}",\) #\1\2#g' "$base/config/waybar/Modules" 2>&1 | tee -a "$log" + sed -i 's#^\(\s*\)\("format": "{:%B | %a %d, %Y | %H:%M}",\) #\1//\2#g' "$base/config/waybar/Modules" 2>&1 | tee -a "$log" + sed -i 's#^\(\s*\)//\("format": "{:%A, %I:%M %P}",\) #\1\2#g' "$base/config/waybar/Modules" 2>&1 | tee -a "$log" + sed -i 's#^\(\s*\)\("format": "{:%a %d | %H:%M}",\) #\1//\2#g' "$base/config/waybar/Modules" 2>&1 | tee -a "$log" # hyprlock - local HYPRLOCK_FILE="config/hypr/hyprlock.conf" - if [ ! -f "$HYPRLOCK_FILE" ] && [ -f "config/hypr/hyprlock-1080p.conf" ]; then - HYPRLOCK_FILE="config/hypr/hyprlock-1080p.conf" + local HYPRLOCK_FILE="$base/config/hypr/hyprlock.conf" + if [ ! -f "$HYPRLOCK_FILE" ] && [ -f "$base/config/hypr/hyprlock-1080p.conf" ]; then + HYPRLOCK_FILE="$base/config/hypr/hyprlock-1080p.conf" fi if [ -f "$HYPRLOCK_FILE" ]; then sed -i 's/^\s*text = cmd\[update:1000\] echo \"\$(date +\"%H\")\"/# &/' "$HYPRLOCK_FILE" 2>&1 | tee -a "$log" |
