aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGES-v2.3.18.md72
-rw-r--r--config/hypr/UserConfigs/WindowRules-v3.conf589
-rw-r--r--config/hypr/configs/SystemSettings.conf2
-rw-r--r--config/hypr/configs/WindowRules-config-v3.conf690
-rwxr-xr-xconfig/hypr/scripts/ChangeLayout.sh10
-rwxr-xr-xconfig/hypr/scripts/GameMode.sh1
-rwxr-xr-xconfig/hypr/scripts/KeybindsLayoutInit.sh40
-rwxr-xr-xconfig/hypr/scripts/OverviewToggle.sh10
-rwxr-xr-xconfig/hypr/scripts/Refresh.sh33
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
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage