diff options
| -rw-r--r-- | CHANGES-v2.3.18.md | 72 | ||||
| -rw-r--r-- | config/hypr/UserConfigs/WindowRules-v3.conf | 589 | ||||
| -rw-r--r-- | config/hypr/configs/SystemSettings.conf | 2 | ||||
| -rw-r--r-- | config/hypr/configs/WindowRules-config-v3.conf | 690 | ||||
| -rwxr-xr-x | config/hypr/scripts/ChangeLayout.sh | 10 | ||||
| -rwxr-xr-x | config/hypr/scripts/GameMode.sh | 1 | ||||
| -rwxr-xr-x | config/hypr/scripts/KeybindsLayoutInit.sh | 40 | ||||
| -rwxr-xr-x | config/hypr/scripts/OverviewToggle.sh | 10 | ||||
| -rwxr-xr-x | config/hypr/scripts/Refresh.sh | 33 |
9 files changed, 1389 insertions, 58 deletions
diff --git a/CHANGES-v2.3.18.md b/CHANGES-v2.3.18.md new file mode 100644 index 00000000..29eb7c41 --- /dev/null +++ b/CHANGES-v2.3.18.md @@ -0,0 +1,72 @@ +# CHANGES: Hyprland-Dots v2.3.18 + +## FIXES: + +- Fixed: Overview Toggle keyind SUPER + A now properly detects QuickShell + - If QS fails, or not installed AGS will be started instead +- Fixed: Super J/K cycle next/prev weren't working in both master / dwindle +- Fixed: Weather.py one-off run +- Removed: Hyprsunt from status group. + - Credit: Alberson Miranda +- Added: more application icons for waybars +- Weather.py basically rewritten to improve look and functionality + - Credit: Prabin Panta + - The Jak team also heavily contributed to the rewrite +- Fixed: Waybar + - Changing the waybar config `SUPERALT + B` would sometimes need to be done twice + - Cause: options were incorrect annotated with "👉 ${name}" +- Fixed: `GameMode.sh` to function consistently +- Updated: `WalllustSwww.sh` wallpaper path +- Corrected: Typo in Show Open Apps +- GameMode.sh / Refresh.sh + - Enabling / Disabling repeatedly would result in multiple waybars + - Added additional `sleep` commands in `GameMode.sh` and `Refresh.sh` + - Resolves [Issue 870](https://github.com/JaKooLit/Hyprland-Dots/issues/870) + +## CHANGES: + +- Changed: Hyprland Packages from SID + - No longer built from source + - Hyprland Version @ v0.51.1 + - If/When SID it updated, updates will be done as normal process +- Lock screen: + - Clock now horizontal and smaller + - Adjust spacing margines of the various fields + - Small changes to color variabbles Trying to balance colors + - Fixed both 1080 and 2K+ configurations +- `UserConfigs/Startup_App.conf` is now sourced in `hyprland.conf` + - It was being sourced twice +- Some scripts weren't executable + - `scripts/Battery.sh` + - `scripts/ComposeHyprConfigs.sh` + - `scripts/OverviewToggle.sh` + - `scripts/sddm_wallpaper.sh` +- Updated: SWWW to v0.11.2 + - Fixes numerous issues + - Portrait monitors especially + - SWWW isn't being maintained In future will switch to AWWWW +- Added: A message before installing wallpapers that some are AI generated or enhanced +- Changed: `/usr/bin/bash` to `/usr/bin/evn bash` for better portability +- Adjusted: Small change to `DropDownterminal.sh` + - Increased top margin % to center it more + - Widened it. + - These options are settable in the script. + +## FEATURES: + +- Hyprsunet retains last state on/off + - Credit: Alberson Miranda +- Fastfetch now displays the version of the Jak Dotfiles +- ChangeLayout.sh + - Dynamically binds SUPER J/K based on current layout + - Previously only worked in Master Layout + - Credit: Suresh Thagunna + - Along with that KeybindsLayoutInit script reads current default layout + - Then it adjusts the SUPER J/K keybindings appropriately +- RofiBeats dynamic music system added +- Binds now include descriptions. + - Switched from `bind` to `bindd` + - Improves usability of keybind search +- Add new laptop gesture for zoom system. + +Thanks to everyone that contributed, or reported issues. diff --git a/config/hypr/UserConfigs/WindowRules-v3.conf b/config/hypr/UserConfigs/WindowRules-v3.conf new file mode 100644 index 00000000..ea15fe87 --- /dev/null +++ b/config/hypr/UserConfigs/WindowRules-v3.conf @@ -0,0 +1,589 @@ +# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ # +# For window rules and layerrules +# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more + +# NOTES: This is only for Hyprland > 0.52.1 + +# note: This should NOT be implemented on Debian and Ubuntu + + +# --- Converted to v3 Window rules --- +# + +windowrule { + name = windowrule-1 + match:class = ^([Ff]irefox|org.mozilla.firefox|[Ff]irefox-esr|[Ff]irefox-bin)$ + tag = +browser +} + +windowrule { + name = windowrule-2 + match:class = ^([Gg]oogle-chrome(-beta|-dev|-unstable)?)$ + tag = +browser +} + +windowrule { + name = windowrule-3 + match:class = ^(chrome-.+-Default)$ # Chrome PWAs + tag = +browser +} + +windowrule { + name = windowrule-4 + match:class = ^([Cc]hromium)$ + tag = +browser +} + +windowrule { + name = windowrule-5 + match:class = ^([Mm]icrosoft-edge(-stable|-beta|-dev|-unstable))$ + tag = +browser +} + +windowrule { + name = windowrule-6 + match:class = ^(Brave-browser(-beta|-dev|-unstable)?)$ + tag = +browser +} + +windowrule { + name = windowrule-7 + match:class = ^([Tt]horium-browser|[Cc]achy-browser)$ + tag = +browser +} + +windowrule { + name = windowrule-8 + match:class = ^(zen-alpha|zen)$ + tag = +browser +} + +windowrule { + name = windowrule-9 + match:class = ^(swaync-control-center|swaync-notification-window|swaync-client|class)$ + tag = +notif +} + +windowrule { + name = windowrule-10 + match:title = ^(KooL Quick Cheat Sheet)$ + tag = +KooL_Cheat +} + +windowrule { + name = windowrule-11 + match:title = ^(KooL Hyprland Settings)$ + tag = +KooL_Settings +} + +windowrule { + name = windowrule-12 + match:class = ^(nwg-displays|nwg-look)$ + tag = +KooL-Settings +} + +windowrule { + name = windowrule-13 + match:class = ^(Alacritty|kitty|kitty-dropterm)$ + tag = +terminal +} + +windowrule { + name = windowrule-14 + match:class = ^([Tt]hunderbird|org.gnome.Evolution)$ + tag = +email +} + +windowrule { + name = windowrule-15 + match:class = ^(eu.betterbird.Betterbird)$ + tag = +email +} + +windowrule { + name = windowrule-16 + match:class = ^(codium|codium-url-handler|VSCodium)$ + tag = +projects +} + +windowrule { + name = windowrule-17 + match:class = ^(VSCode|code-url-handler)$ + tag = +projects +} + +windowrule { + name = windowrule-18 + match:class = ^(jetbrains-.+)$ # JetBrains IDEs + tag = +projects +} + +windowrule { + name = windowrule-19 + match:class = ^(com.obsproject.Studio)$ + tag = +screenshare +} + +windowrule { + name = windowrule-20 + match:class = ^([Dd]iscord|[Ww]ebCord|[Vv]esktop)$ + tag = +im +} + +windowrule { + name = windowrule-21 + match:class = ^([Ff]erdium)$ + tag = +im + center = on + float = on + size = (monitor_w*0.6) (monitor_h*0.7) +} + +windowrule { + name = windowrule-22 + match:class = ^([Ww]hatsapp-for-linux)$ + tag = +im +} + +windowrule { + name = windowrule-23 + match:class = ^(ZapZap|com.rtosta.zapzap)$ + tag = +im +} + +windowrule { + name = windowrule-24 + match:class = ^(org.telegram.desktop|io.github.tdesktop_x64.TDesktop)$ + tag = +im +} + +windowrule { + name = windowrule-25 + match:class = ^(teams-for-linux)$ + tag = +im +} + +windowrule { + name = windowrule-26 + match:class = ^(im.riot.Riot|Element)$ # Element Matrix client + tag = +im +} + +windowrule { + name = windowrule-27 + match:class = ^(gamescope)$ + tag = +games +} + +windowrule { + name = windowrule-28 + match:class = ^(steam_app_\d+)$ + tag = +games +} + +windowrule { + name = windowrule-29 + match:class = ^([Ss]team)$ + tag = +gamestore +} + +windowrule { + name = windowrule-30 + match:title = ^([Ll]utris)$ + tag = +gamestore +} + +windowrule { + name = windowrule-31 + match:class = ^(com.heroicgameslauncher.hgl)$ + tag = +gamestore +} + +windowrule { + name = windowrule-32 + match:class = ^([Tt]hunar|org.gnome.Nautilus|[Pp]cmanfm-qt)$ + tag = +file-manager +} + +windowrule { + name = windowrule-33 + match:class = ^(app.drey.Warp)$ + tag = +file-manager +} + +windowrule { + name = windowrule-34 + match:class = ^([Ww]aytrogen)$ + tag = +wallpaper +} + +windowrule { + name = windowrule-35 + match:class = ^([Aa]udacious)$ + tag = +multimedia +} + +windowrule { + name = windowrule-36 + match:class = ^([Mm]pv|vlc)$ + tag = +multimedia_video +} + +windowrule { + name = windowrule-37 + match:title = ^(ROG Control)$ + tag = +settings + center = on +} + +windowrule { + name = windowrule-38 + match:class = ^(wihotspot(-gui)?)$ # wifi hotspot + tag = +settings +} + +windowrule { + name = windowrule-39 + match:class = ^([Bb]aobab|org.gnome.[Bb]aobab)$ # Disk usage analyzer + tag = +settings +} + +windowrule { + name = windowrule-40 + match:class = ^(gnome-disks|wihotspot(-gui)?)$ + tag = +settings +} + +windowrule { + name = windowrule-41 + match:title = (Kvantum Manager) + tag = +settings +} + +windowrule { + name = windowrule-42 + match:class = ^(file-roller|org.gnome.FileRoller)$ # archive manager + tag = +settings +} + +windowrule { + name = windowrule-43 + match:class = ^(nm-applet|nm-connection-editor|blueman-manager)$ + tag = +settings +} + +windowrule { + name = windowrule-44 + match:class = ^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$ + tag = +settings + center = on +} + +windowrule { + name = windowrule-45 + match:class = ^(qt5ct|qt6ct|[Yy]ad)$ + tag = +settings +} + +windowrule { + name = windowrule-46 + match:class = (xdg-desktop-portal-gtk) + tag = +settings +} + +windowrule { + name = windowrule-47 + match:class = ^(org.kde.polkit-kde-authentication-agent-1)$ + tag = +settings +} + +windowrule { + name = windowrule-48 + match:class = ^([Rr]ofi)$ + tag = +settings +} + +windowrule { + name = windowrule-49 + match:class = ^(gnome-system-monitor|org.gnome.SystemMonitor|io.missioncenter.MissionCenter)$ # system monitor + tag = +viewer +} + +windowrule { + name = windowrule-50 + match:class = ^(evince)$ # document viewer + tag = +viewer +} + +windowrule { + name = windowrule-51 + match:class = ^(eog|org.gnome.Loupe)$ # image viewer + tag = +viewer +} + +windowrule { + name = windowrule-52 + match:tag = multimedia_video* + no_blur = on + opacity = 1.0 +} + +windowrule { + name = windowrule-53 + match:tag = KooL_Cheat* + center = on + float = on + size = (monitor_w*0.65) (monitor_h*0.9) +} + +windowrule { + name = windowrule-54 + match:class = ([Tt]hunar) + match:title = negative:(.*[Tt]hunar.*) + center = on + float = on +} + +windowrule { + name = windowrule-55 + match:tag = KooL-Settings* + center = on + float = on +} + +windowrule { + name = windowrule-56 + match:title = ^(Keybindings)$ + center = on +} + +windowrule { + name = windowrule-57 + match:class = ^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$ + center = on + size = (monitor_w*0.6) (monitor_h*0.7) +} + +windowrule { + name = windowrule-58 + match:title = ^(Picture-in-Picture)$ + move = 72% 7% + float = on + opacity = 0.95 0.75 + pin = on + keep_aspect_ratio = on +} + +windowrule { + name = windowrule-59 + match:fullscreen = 1 + idle_inhibit = fullscreen +} + +windowrule { + name = windowrule-60 + match:tag = wallpaper* + float = on + opacity = 0.9 0.7 + size = (monitor_w*0.7) (monitor_h*0.7) +} + +windowrule { + name = windowrule-61 + match:tag = settings* + float = on + opacity = 0.8 0.7 + size = (monitor_w*0.7) (monitor_h*0.7) +} + +windowrule { + name = windowrule-62 + match:tag = viewer* + float = on + opacity = 0.82 0.75 +} + +windowrule { + name = windowrule-63 + match:class = ([Zz]oom|onedriver|onedriver-launcher)$ + float = on +} + +windowrule { + name = windowrule-64 + match:class = (org.gnome.Calculator) + match:title = (Calculator) + float = on +} + +windowrule { + name = windowrule-65 + match:class = ^(mpv|com.github.rafostar.Clapper)$ + float = on +} + +windowrule { + name = windowrule-66 + match:class = ^([Qq]alculate-gtk)$ + float = on +} + +windowrule { + name = windowrule-67 + match:title = ^(Authentication Required)$ + float = on + center = on +} + +windowrule { + name = windowrule-68 + match:class = (codium|codium-url-handler|VSCodium) + match:title = negative:(.*codium.*|.*VSCodium.*) + float = on +} + +windowrule { + name = windowrule-69 + match:class = ^(com.heroicgameslauncher.hgl)$ + match:title = negative:(Heroic Games Launcher) + float = on +} + +windowrule { + name = windowrule-70 + match:class = ^([Ss]team)$ + match:title = negative:^([Ss]team)$ + float = on +} + +windowrule { + name = windowrule-71 + match:title = ^(Add Folder to Workspace)$ + float = on + size = (monitor_w*0.7) (monitor_h*0.6) + center = on +} + +windowrule { + name = windowrule-72 + match:title = ^(Save As)$ + float = on + size = (monitor_w*0.7) (monitor_h*0.6) + center = on +} + +windowrule { + name = windowrule-73 + match:initial_title = (Open Files) + float = on + size = (monitor_w*0.7) (monitor_h*0.6) +} + +windowrule { + name = windowrule-74 + match:title = ^(SDDM Background)$ #KooL's Dots YAD for setting SDDM background + float = on + center = on + size = (monitor_w*0.16) (monitor_h*0.12) +} + +windowrule { + name = windowrule-75 + match:tag = browser* + opacity = 0.99 0.8 +} + +windowrule { + name = windowrule-76 + match:tag = projects* + opacity = 0.9 0.8 +} + +windowrule { + name = windowrule-77 + match:tag = im* + opacity = 0.94 0.86 +} + +windowrule { + name = windowrule-78 + match:tag = multimedia* + opacity = 0.94 0.86 +} + +windowrule { + name = windowrule-79 + match:tag = file-manager* + opacity = 0.9 0.8 +} + +windowrule { + name = windowrule-80 + match:tag = terminal* + opacity = 0.9 0.7 +} + +windowrule { + name = windowrule-81 + match:class = ^(gedit|org.gnome.TextEditor|mousepad)$ + opacity = 0.8 0.7 +} + +windowrule { + name = windowrule-82 + match:class = ^(deluge)$ + opacity = 0.9 0.8 +} + +windowrule { + name = windowrule-83 + match:class = ^(seahorse)$ # gnome-keyring gui + opacity = 0.9 0.8 +} + +windowrule { + name = windowrule-84 + match:class = ^(code)$ + opacity = 0.8 +} + +windowrule { + name = windowrule-85 + match:tag = games* + no_blur = on + fullscreen = on +} + +windowrule { + name = windowrule-86 + match:class = ^(jetbrains-*) + no_initial_focus = on +} + +windowrule { + name = windowrule-87 + match:title = ^(wind.*)$ + no_initial_focus = on +} + +# --- Auto-generated layer rules --- +layerrule { + name = layerrule-1 + blur = on + ignore_alpha = 0 + match:namespace = rofi +} + +layerrule { + name = layerrule-2 + blur = on + ignore_alpha = 0 + match:namespace = notifications +} + +layerrule { + name = layerrule-3 + blur = on + ignore_alpha = 0.5 + match:namespace = quickshell:overview +} diff --git a/config/hypr/configs/SystemSettings.conf b/config/hypr/configs/SystemSettings.conf index 42729e7d..0c822678 100644 --- a/config/hypr/configs/SystemSettings.conf +++ b/config/hypr/configs/SystemSettings.conf @@ -71,6 +71,8 @@ gestures { workspace_swipe_create_new = true workspace_swipe_forever = true #workspace_swipe_use_r = true #uncomment if wanted a forever create a new workspace with swipe right + gesture = 3, up, dispatcher, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | awk 'NR==1 {factor = $2; if (factor < 1) {factor = 1}; print factor * 1.5}')" + gesture = 3, down, dispatcher, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | awk 'NR==1 {factor = $2; if (factor < 1) {factor = 1}; print factor / 1.5}')" } misc { diff --git a/config/hypr/configs/WindowRules-config-v3.conf b/config/hypr/configs/WindowRules-config-v3.conf new file mode 100644 index 00000000..b54c6a85 --- /dev/null +++ b/config/hypr/configs/WindowRules-config-v3.conf @@ -0,0 +1,690 @@ +# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ # +# Vendor defaults for window rules and layerrules +# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more + +# NOTES: This is only for Hyprland > 0.48 + +# note for ja: This should NOT be implemented on Debian and Ubuntu + +# windowrule - tags - add apps under appropriate tag to use the same settings +# browser tags + +# notif tags + +# KooL settings tag + +# terminal tags + +# email tags + +# project tags + +# screenshare tags + +# IM tags + +# game tags + +# gamestore tags + +# file-manager tags + +# wallpaper tags + +# multimedia tags + +# multimedia-video tags + +# settings tags + +# viewer tags + +# Some special override rules + +# POSITION +# windowrule = center,floating:1 # warning, it cause even the menu to float and center. +#windowrule = move 72% 7%,title:^(Firefox)$ + +# windowrule to avoid idle for fullscreen apps +#windowrule = idleinhibit fullscreen, class:^(*)$ +#windowrule = idleinhibit fullscreen, title:^(*)$ + +# windowrule move to workspace +#windowrule = workspace 1, tag:email* +#windowrule = workspace 2, tag:browser* +#windowrule = workspace 3, class:^([Tt]hunar)$ +#windowrule = workspace 3, tag:projects* +#windowrule = workspace 5, tag:gamestore* +#windowrule = workspace 7, tag:im* +#windowrule = workspace 8, tag:games* + +# windowrule move to workspace (silent) +#windowrule = workspace 4 silent, tag:screenshare* +#windowrule = workspace 6 silent, class:^(virt-manager)$ +#windowrule = workspace 6 silent, class:^(.virt-manager-wrapped)$ +#windowrule = workspace 9 silent, tag:multimedia* +# +# FLOAT +#windowrule = float, class:^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$ +#windowrule = float, title:^(Firefox)$ + +# windowrule - ######### float popups and dialogue ####### + + + + +# END of float popups and dialogue ####### + +# OPACITY + +# SIZE + +#windowrule = size 25% 25%, title:^(Picture-in-Picture)$ +#windowrule = size 25% 25%, title:^(Firefox)$ + +# PINNING +#windowrule = pin,title:^(Firefox)$ + +# windowrule - extras + +# BLUR & FULLSCREEN + + +#This not gonna take the focus to the window that appears when hovering over some of the parts of the IntelliJ Products + +#This will gonna make the VS Code bluer like other apps + +#windowrule = bordercolor rgb(EE4B55) rgb(880808), fullscreen:1 +#windowrule = bordercolor rgb(282737) rgb(1E1D2D), floating:1 +#windowrule = opacity 0.8 0.8, pinned:1 + +# LAYER RULES + +#layerrule = ignorealpha 0.5, tag:notif* + +#layerrule = ignorezero, class:^([Rr]ofi)$ +#layerrule = blur, class:^([Rr]ofi)$ +#layerrule = unset,class:^([Rr]ofi)$ +#layerrule = ignorezero, <rofi> + +#layerrule = ignorezero, overview +#layerrule = blur, overview +# --- Auto-generated window rules --- +windowrule { + name = windowrule-1 + match:class = ^([Ff]irefox|org.mozilla.firefox|[Ff]irefox-esr|[Ff]irefox-bin)$ + tag = +browser +} + +windowrule { + name = windowrule-2 + match:class = ^([Gg]oogle-chrome(-beta|-dev|-unstable)?)$ + tag = +browser +} + +windowrule { + name = windowrule-3 + match:class = ^(chrome-.+-Default)$ # Chrome PWAs + tag = +browser +} + +windowrule { + name = windowrule-4 + match:class = ^([Cc]hromium)$ + tag = +browser +} + +windowrule { + name = windowrule-5 + match:class = ^([Mm]icrosoft-edge(-stable|-beta|-dev|-unstable))$ + tag = +browser +} + +windowrule { + name = windowrule-6 + match:class = ^(Brave-browser(-beta|-dev|-unstable)?)$ + tag = +browser +} + +windowrule { + name = windowrule-7 + match:class = ^([Tt]horium-browser|[Cc]achy-browser)$ + tag = +browser +} + +windowrule { + name = windowrule-8 + match:class = ^(zen-alpha|zen)$ + tag = +browser +} + +windowrule { + name = windowrule-9 + match:class = ^(swaync-control-center|swaync-notification-window|swaync-client|class)$ + tag = +notif +} + +windowrule { + name = windowrule-10 + match:title = ^(KooL Quick Cheat Sheet)$ + tag = +KooL_Cheat +} + +windowrule { + name = windowrule-11 + match:title = ^(KooL Hyprland Settings)$ + tag = +KooL_Settings +} + +windowrule { + name = windowrule-12 + match:class = ^(nwg-displays|nwg-look)$ + tag = +KooL-Settings +} + +windowrule { + name = windowrule-13 + match:class = ^(Alacritty|kitty|kitty-dropterm)$ + tag = +terminal +} + +windowrule { + name = windowrule-14 + match:class = ^([Tt]hunderbird|org.gnome.Evolution)$ + tag = +email +} + +windowrule { + name = windowrule-15 + match:class = ^(eu.betterbird.Betterbird)$ + tag = +email +} + +windowrule { + name = windowrule-16 + match:class = ^(codium|codium-url-handler|VSCodium)$ + tag = +projects +} + +windowrule { + name = windowrule-17 + match:class = ^(VSCode|code-url-handler)$ + tag = +projects +} + +windowrule { + name = windowrule-18 + match:class = ^(jetbrains-.+)$ # JetBrains IDEs + tag = +projects +} + +windowrule { + name = windowrule-19 + match:class = ^(com.obsproject.Studio)$ + tag = +screenshare +} + +windowrule { + name = windowrule-20 + match:class = ^([Dd]iscord|[Ww]ebCord|[Vv]esktop)$ + tag = +im +} + +windowrule { + name = windowrule-21 + match:class = ^([Ff]erdium)$ + center = on + float = on + size = 60% = 70% + tag = +im +} + +windowrule { + name = windowrule-22 + match:class = ^([Ww]hatsapp-for-linux)$ + tag = +im +} + +windowrule { + name = windowrule-23 + match:class = ^(ZapZap|com.rtosta.zapzap)$ + tag = +im +} + +windowrule { + name = windowrule-24 + match:class = ^(org.telegram.desktop|io.github.tdesktop_x64.TDesktop)$ + tag = +im +} + +windowrule { + name = windowrule-25 + match:class = ^(teams-for-linux)$ + tag = +im +} + +windowrule { + name = windowrule-26 + match:class = ^(im.riot.Riot|Element)$ # Element Matrix client + tag = +im +} + +windowrule { + name = windowrule-27 + match:class = ^(gamescope)$ + tag = +games +} + +windowrule { + name = windowrule-28 + match:class = ^(steam_app_\d+)$ + tag = +games +} + +windowrule { + name = windowrule-29 + match:class = ^([Ss]team)$ + tag = +gamestore +} + +windowrule { + name = windowrule-30 + match:title = ^([Ll]utris)$ + tag = +gamestore +} + +windowrule { + name = windowrule-31 + match:class = ^(com.heroicgameslauncher.hgl)$ + tag = +gamestore +} + +windowrule { + name = windowrule-32 + match:class = ^([Tt]hunar|org.gnome.Nautilus|[Pp]cmanfm-qt)$ + tag = +file-manager +} + +windowrule { + name = windowrule-33 + match:class = ^(app.drey.Warp)$ + tag = +file-manager +} + +windowrule { + name = windowrule-34 + match:class = ^([Ww]aytrogen)$ + tag = +wallpaper +} + +windowrule { + name = windowrule-35 + match:class = ^([Aa]udacious)$ + tag = +multimedia +} + +windowrule { + name = windowrule-36 + match:class = ^([Mm]pv|vlc)$ + tag = +multimedia_video +} + +windowrule { + name = windowrule-37 + match:title = ^(ROG Control)$ + center = on + tag = +settings +} + +windowrule { + name = windowrule-38 + match:class = ^(wihotspot(-gui)?)$ # wifi hotspot + tag = +settings +} + +windowrule { + name = windowrule-39 + match:class = ^([Bb]aobab|org.gnome.[Bb]aobab)$ # Disk usage analyzer + tag = +settings +} + +windowrule { + name = windowrule-40 + match:class = ^(gnome-disks|wihotspot(-gui)?)$ + tag = +settings +} + +windowrule { + name = windowrule-41 + match:title = (Kvantum Manager) + tag = +settings +} + +windowrule { + name = windowrule-42 + match:class = ^(file-roller|org.gnome.FileRoller)$ # archive manager + tag = +settings +} + +windowrule { + name = windowrule-43 + match:class = ^(nm-applet|nm-connection-editor|blueman-manager)$ + tag = +settings +} + +windowrule { + name = windowrule-44 + match:class = ^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$ + center = on + tag = +settings +} + +windowrule { + name = windowrule-45 + match:class = ^(qt5ct|qt6ct|[Yy]ad)$ + tag = +settings +} + +windowrule { + name = windowrule-46 + match:class = (xdg-desktop-portal-gtk) + tag = +settings +} + +windowrule { + name = windowrule-47 + match:class = ^(org.kde.polkit-kde-authentication-agent-1)$ + tag = +settings +} + +windowrule { + name = windowrule-48 + match:class = ^([Rr]ofi)$ + tag = +settings +} + +windowrule { + name = windowrule-49 + match:class = ^(gnome-system-monitor|org.gnome.SystemMonitor|io.missioncenter.MissionCenter)$ # system monitor + tag = +viewer +} + +windowrule { + name = windowrule-50 + match:class = ^(evince)$ # document viewer + tag = +viewer +} + +windowrule { + name = windowrule-51 + match:class = ^(eog|org.gnome.Loupe)$ # image viewer + tag = +viewer +} + +windowrule { + name = windowrule-52 + match:tag = multimedia_video* + no_blur = on + opacity = 1.0 +} + +windowrule { + name = windowrule-53 + match:tag = KooL_Cheat* + center = on + float = on + size = 65% = 90% +} + +windowrule { + name = windowrule-54 + match:class = ([Tt]hunar) + match:title = negative:(.*[Tt]hunar.*) + center = on + float = on +} + +windowrule { + name = windowrule-55 + match:tag = KooL-Settings* + center = on + float = on +} + +windowrule { + name = windowrule-56 + match:title = ^(Keybindings)$ + center = on +} + +windowrule { + name = windowrule-57 + match:class = ^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$ + center = on + size = 60% = 70% +} + +windowrule { + name = windowrule-58 + match:title = ^(Picture-in-Picture)$ + float = on + move = 72% = 7% + opacity = 0.95 = 0.75 + pin = 0 +} + +windowrule { + name = windowrule-59 + match:fullscreen = 1 + idle_inhibit = fullscreen +} + +windowrule { + name = windowrule-60 + match:tag = wallpaper* + float = on + opacity = 0.9 = 0.7 + size = 70% = 70% +} + +windowrule { + name = windowrule-61 + match:tag = settings* + float = on + opacity = 0.8 = 0.7 + size = 70% = 70% +} + +windowrule { + name = windowrule-62 + match:tag = viewer* + float = on + opacity = 0.82 = 0.75 +} + +windowrule { + name = windowrule-63 + match:class = ([Zz]oom|onedriver|onedriver-launcher)$ + float = on +} + +windowrule { + name = windowrule-64 + match:class = (org.gnome.Calculator) + match:title = (Calculator) + float = on +} + +windowrule { + name = windowrule-65 + match:class = ^(mpv|com.github.rafostar.Clapper)$ + float = on +} + +windowrule { + name = windowrule-66 + match:class = ^([Qq]alculate-gtk)$ + float = on +} + +windowrule { + name = windowrule-67 + match:title = ^(Authentication Required)$ + center = on + float = on +} + +windowrule { + name = windowrule-68 + match:class = (codium|codium-url-handler|VSCodium) + match:title = negative:(.*codium.*|.*VSCodium.*) + float = on +} + +windowrule { + name = windowrule-69 + match:class = ^(com.heroicgameslauncher.hgl)$ + match:title = negative:(Heroic Games Launcher) + float = on +} + +windowrule { + name = windowrule-70 + match:class = ^([Ss]team)$ + match:title = negative:^([Ss]team)$ + float = on +} + +windowrule { + name = windowrule-71 + match:title = ^(Add Folder to Workspace)$ + center = on + float = on + size = 70% = 60% +} + +windowrule { + name = windowrule-72 + match:title = ^(Save As)$ + center = on + float = on + size = 70% = 60% +} + +windowrule { + name = windowrule-73 + match:initial_title = (Open Files) + float = on + size = 70% = 60% +} + +windowrule { + name = windowrule-74 + match:title = ^(SDDM Background)$ #KooL's Dots YAD for setting SDDM background + center = on + float = on + size = 16% = 12% +} + +windowrule { + name = windowrule-75 + match:tag = browser* + opacity = 0.99 = 0.8 +} + +windowrule { + name = windowrule-76 + match:tag = projects* + opacity = 0.9 = 0.8 +} + +windowrule { + name = windowrule-77 + match:tag = im* + opacity = 0.94 = 0.86 +} + +windowrule { + name = windowrule-78 + match:tag = multimedia* + opacity = 0.94 = 0.86 +} + +windowrule { + name = windowrule-79 + match:tag = file-manager* + opacity = 0.9 = 0.8 +} + +windowrule { + name = windowrule-80 + match:tag = terminal* + opacity = 0.9 = 0.7 +} + +windowrule { + name = windowrule-81 + match:class = ^(gedit|org.gnome.TextEditor|mousepad)$ + opacity = 0.8 = 0.7 +} + +windowrule { + name = windowrule-82 + match:class = ^(deluge)$ + opacity = 0.9 = 0.8 +} + +windowrule { + name = windowrule-83 + match:class = ^(seahorse)$ # gnome-keyring gui + opacity = 0.9 = 0.8 +} + +windowrule { + name = windowrule-84 + match:class = ^(code)$ + opacity = 0.8 + opacity = 0.9 +} + +windowrule { + name = windowrule-85 + match:tag = games* + fullscreen = 0 + no_blur = on +} + +windowrule { + name = windowrule-86 + match:class = ^(jetbrains-*) + no_initial_focus = on +} + +windowrule { + name = windowrule-87 + match:title = ^(wind.*)$ + no_initial_focus = on +} + +# --- Auto-generated layer rules --- +layerrule { + name = layerrule-1 + match:namespace = rofi + blur = on + ignore_alpha = 0 +} + +layerrule { + name = layerrule-2 + match:namespace = notifications + blur = on + ignore_alpha = 0 +} + +layerrule { + name = layerrule-3 + match:namespace = quickshell:overview + blur = on + ignore_alpha = 0 + ignore_alpha = 0.5 +} diff --git a/config/hypr/scripts/ChangeLayout.sh b/config/hypr/scripts/ChangeLayout.sh index 78428188..e2436b79 100755 --- a/config/hypr/scripts/ChangeLayout.sh +++ b/config/hypr/scripts/ChangeLayout.sh @@ -9,20 +9,14 @@ LAYOUT=$(hyprctl -j getoption general:layout | jq '.str' | sed 's/"//g') case $LAYOUT in "master") hyprctl keyword general:layout dwindle - hyprctl keyword unbind SUPER,J - hyprctl keyword unbind SUPER,K - hyprctl keyword bind SUPER,J,cyclenext - hyprctl keyword bind SUPER,K,cyclenext,prev + # SUPER+J/K are global and managed by KeybindsLayoutInit.sh; only manage SUPER+O here hyprctl keyword bind SUPER,O,togglesplit notify-send -e -u low -i "$notif" " Dwindle Layout" ;; "dwindle") hyprctl keyword general:layout master - hyprctl keyword unbind SUPER,J - hyprctl keyword unbind SUPER,K + # Drop togglesplit binding on SUPER+O when switching back to master hyprctl keyword unbind SUPER,O - hyprctl keyword bind SUPER,J,layoutmsg,cyclenext - hyprctl keyword bind SUPER,K,layoutmsg,cycleprev notify-send -e -u low -i "$notif" " Master Layout" ;; *) ;; diff --git a/config/hypr/scripts/GameMode.sh b/config/hypr/scripts/GameMode.sh index ec1e541e..59cf7372 100755 --- a/config/hypr/scripts/GameMode.sh +++ b/config/hypr/scripts/GameMode.sh @@ -20,6 +20,7 @@ if [ "$HYPRGAMEMODE" = 1 ] ; then hyprctl keyword "windowrule opacity 1 override 1 override 1 override, ^(.*)$" swww kill notify-send -e -u low -i "$notif" " Gamemode:" " enabled" + sleep 0.1 exit else swww-daemon --format xrgb && swww img "$HOME/.config/rofi/.current_wallpaper" & diff --git a/config/hypr/scripts/KeybindsLayoutInit.sh b/config/hypr/scripts/KeybindsLayoutInit.sh index fd34f90e..0a53eaaf 100755 --- a/config/hypr/scripts/KeybindsLayoutInit.sh +++ b/config/hypr/scripts/KeybindsLayoutInit.sh @@ -1,38 +1,14 @@ #!/usr/bin/env bash # /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ ## -# Initialize J/K keybinds to match the current default layout at startup +# Initialize J/K keybinds so they always cycle windows globally (no layout-specific behavior) +# This avoids double-actions when layouts change. set -euo pipefail -# Determine current layout (master|dwindle); be robust to null at startup -LAYOUT=$(hyprctl -j getoption general:layout | jq -r '.str // empty' 2>/dev/null || true) -if [ -z "${LAYOUT:-}" ]; then - # Fallback: parse non-JSON output (e.g., "str: dwindle") - LAYOUT=$(hyprctl getoption general:layout 2>/dev/null | awk -F'str:' 'NF>1 {gsub(/^ +| +$/,"",$2); print $2}') -fi -[ -z "${LAYOUT:-}" ] && exit 0 +# Always reset and bind SUPER+J/K the same way on startup +hyprctl keyword unbind SUPER,J || true +hyprctl keyword unbind SUPER,K || true -case "$LAYOUT" in - master) - # Ensure master layout-style binds - hyprctl keyword unbind SUPER,J - hyprctl keyword unbind SUPER,K - hyprctl keyword unbind SUPER,O - hyprctl keyword bind SUPER,J,layoutmsg,cyclenext - hyprctl keyword bind SUPER,K,layoutmsg,cycleprev - ;; - dwindle) - # Ensure dwindle layout-style binds - hyprctl keyword unbind SUPER,J - hyprctl keyword unbind SUPER,K - hyprctl keyword unbind SUPER,O - hyprctl keyword bind SUPER,J,cyclenext - hyprctl keyword bind SUPER,K,cyclenext,prev - # ensure SUPER+O togglesplit is available on dwindle - hyprctl keyword bind SUPER,O,togglesplit - ;; - *) - # Do nothing for unexpected values - : - ;; - esac +# Cycle windows globally: J = next, K = previous +hyprctl keyword bind SUPER,J,cyclenext +hyprctl keyword bind SUPER,K,cyclenext,prev diff --git a/config/hypr/scripts/OverviewToggle.sh b/config/hypr/scripts/OverviewToggle.sh index 21c2da34..2737234c 100755 --- a/config/hypr/scripts/OverviewToggle.sh +++ b/config/hypr/scripts/OverviewToggle.sh @@ -5,11 +5,15 @@ set -euo pipefail # 1) Try Quickshell via Hyprland global dispatch (works if QS is running and listening) -if hyprctl dispatch global quickshell:overviewToggle >/dev/null 2>&1; then - exit 0 +# Only attempt this if a Quickshell process is running; otherwise Hyprland will +# still return success for the dispatch and we'll never fall back to AGS. +if pgrep -x quickshell >/dev/null 2>&1; then + if hyprctl dispatch global quickshell:overviewToggle >/dev/null 2>&1; then + exit 0 + fi fi -# If QS isn't running, try starting it and retry once +# If QS isn't running, but the CLI exists, try starting it and retry once if command -v qs >/dev/null 2>&1; then qs >/dev/null 2>&1 & sleep 0.6 diff --git a/config/hypr/scripts/Refresh.sh b/config/hypr/scripts/Refresh.sh index 2e772aa9..76757aa4 100755 --- a/config/hypr/scripts/Refresh.sh +++ b/config/hypr/scripts/Refresh.sh @@ -7,23 +7,25 @@ UserScripts=$HOME/.config/hypr/UserScripts # Define file_exists function file_exists() { - if [ -e "$1" ]; then - return 0 # File exists - else - return 1 # File does not exist - fi + if [ -e "$1" ]; then + return 0 # File exists + else + return 1 # File does not exist + fi } # Kill already running processes _ps=(waybar rofi swaync ags) for _prs in "${_ps[@]}"; do - if pidof "${_prs}" >/dev/null; then - pkill "${_prs}" - fi + if pidof "${_prs}" >/dev/null; then + pkill "${_prs}" + fi done # added since wallust sometimes not applying -killall -SIGUSR2 waybar +killall -SIGUSR2 waybar +# Added sleep for GameMode causing multiple waybar +sleep 0.1 # quit ags & relaunch ags #ags -q && ags & @@ -33,23 +35,24 @@ killall -SIGUSR2 waybar # some process to kill for pid in $(pidof waybar rofi swaync ags swaybg); do - kill -SIGUSR1 "$pid" + kill -SIGUSR1 "$pid" + sleep 0.1 done #Restart waybar -sleep 1 +sleep 0.1 waybar & # relaunch swaync -sleep 0.5 -swaync > /dev/null 2>&1 & +sleep 0.3 +swaync >/dev/null 2>&1 & # reload swaync swaync-client --reload-config # Relaunching rainbow borders if the script exists sleep 1 if file_exists "${UserScripts}/RainbowBorders.sh"; then - ${UserScripts}/RainbowBorders.sh & + ${UserScripts}/RainbowBorders.sh & fi -exit 0
\ No newline at end of file +exit 0 |
