aboutsummaryrefslogtreecommitdiffstats
path: root/config/hypr
diff options
context:
space:
mode:
authorDonald Williams <129223418+dwilliam62@users.noreply.github.com>2025-12-11 12:32:33 -0500
committerGitHub <noreply@github.com>2025-12-11 12:32:33 -0500
commit1d67791220aacb211a84d90ef030a352e402bd80 (patch)
treefc87b1a5e413e906bcc47cf8abf389c2bbd51b71 /config/hypr
parentbcfd5e7c2b67f0a62b1ceeb62d20b0a80ca55a70 (diff)
parentbd5ca3f57c5c2b4a9c8602025cc38e4140b1d5a3 (diff)
Merge pull request #881 from JaKooLit/development
Development to main Major update v2.3.18
Diffstat (limited to 'config/hypr')
-rw-r--r--config/hypr/UserConfigs/ENVariables.conf69
-rw-r--r--config/hypr/UserConfigs/Laptops.conf26
-rw-r--r--config/hypr/UserConfigs/Startup_Apps.conf3
-rw-r--r--config/hypr/UserConfigs/UserKeybinds.conf71
-rw-r--r--config/hypr/UserConfigs/UserSettings.conf116
-rw-r--r--config/hypr/UserConfigs/WindowRules-old.conf206
-rw-r--r--config/hypr/UserConfigs/WindowRules-v3.conf671
-rw-r--r--config/hypr/UserConfigs/WindowRules.conf233
-rw-r--r--config/hypr/UserConfigs/WorkSpaceRules.conf (renamed from config/hypr/UserConfigs/WorkSpaceRules)0
-rwxr-xr-xconfig/hypr/UserScripts/WallpaperSelect.sh2
-rwxr-xr-xconfig/hypr/UserScripts/Weather.py17
-rw-r--r--config/hypr/configs/ENVariables.conf92
-rw-r--r--config/hypr/configs/Keybinds.conf87
-rw-r--r--config/hypr/configs/Laptops.conf33
-rw-r--r--config/hypr/configs/Startup_Apps.conf20
-rw-r--r--config/hypr/configs/SystemSettings.conf124
-rw-r--r--config/hypr/configs/WindowRules-config-v3.conf750
-rw-r--r--config/hypr/configs/WindowRules.conf6
-rw-r--r--config/hypr/hyprland.conf26
-rwxr-xr-xconfig/hypr/scripts/KeyBinds.sh95
-rwxr-xr-xconfig/hypr/scripts/Kool_Quick_Settings.sh57
-rwxr-xr-xconfig/hypr/scripts/OverviewToggle.sh10
-rwxr-xr-xconfig/hypr/scripts/UserConfigsSwitcher.sh56
23 files changed, 720 insertions, 2050 deletions
diff --git a/config/hypr/UserConfigs/ENVariables.conf b/config/hypr/UserConfigs/ENVariables.conf
index 4e736dc3..41d9b2d4 100644
--- a/config/hypr/UserConfigs/ENVariables.conf
+++ b/config/hypr/UserConfigs/ENVariables.conf
@@ -3,54 +3,20 @@
# Set your defaults editor through ENV in ~/.config/hypr/UserConfigs/01-UserDefaults.conf
-# environment-variables
-# Current Version of JakooLit Dotfiles:
-env = DOTS_VERSION,2.3.18
+### QT Variables ###
+# env = QT_AUTO_SCREEN_SCALE_FACTOR,1
+# env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
+# env = QT_QPA_PLATFORMTHEME,qt5ct
+# env = QT_QPA_PLATFORMTHEME,qt6ct
-# Toolkit Backend Variables
-env = GDK_BACKEND,wayland,x11,*
-env = QT_QPA_PLATFORM,wayland;xcb
-env = CLUTTER_BACKEND,wayland
-
-#Run SDL2 applications on Wayland.
-#Remove or set to x11 if games that provide older versions of SDL cause compatibility issues
-#env = SDL_VIDEODRIVER,wayland
-
-# xdg Specifications
-env = XDG_CURRENT_DESKTOP,Hyprland
-env = XDG_SESSION_DESKTOP,Hyprland
-env = XDG_SESSION_TYPE,wayland
-
-# QT Variables
-env = QT_AUTO_SCREEN_SCALE_FACTOR,1
-env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
-env = QT_QPA_PLATFORMTHEME,qt5ct
-env = QT_QPA_PLATFORMTHEME,qt6ct
-
-# hyprland-qt-support
-env = QT_QUICK_CONTROLS_STYLE,org.hyprland.style
-
-# xwayland apps scale fix (useful if you are use monitor scaling).
+### xwayland apps scale fix (useful if you are use monitor scaling). ###
# Set same value if you use scaling in Monitors.conf
# 1 is 100% 1.5 is 150%
# see https://wiki.hyprland.org/Configuring/XWayland/
-env = GDK_SCALE,1
-env = QT_SCALE_FACTOR,1
+# env = GDK_SCALE,1
+# env = QT_SCALE_FACTOR,1
-# Bibata-Modern-Ice-Cursor
-# NOTE! You must have the hyprcursor version to activate this.
-# https://wiki.hyprland.org/Hypr-Ecosystem/hyprcursor/
-#env = HYPRCURSOR_THEME,Bibata-Modern-Ice
-#env = HYPRCURSOR_SIZE,24
-
-# firefox
-env = MOZ_ENABLE_WAYLAND,1
-
-# electron >28 apps (may help) ##
-# https://www.electronjs.org/docs/latest/api/environment-variables
-env = ELECTRON_OZONE_PLATFORM_HINT,auto # auto selects Wayland if possible, X11 otherwise
-
-# NVIDIA
+### NVIDIA ###
# This is from Hyprland Wiki. Below will be activated nvidia gpu detected
# See hyprland wiki https://wiki.hyprland.org/Nvidia/#environment-variables
@@ -59,34 +25,27 @@ env = ELECTRON_OZONE_PLATFORM_HINT,auto # auto selects Wayland if possible, X11
#env = NVD_BACKEND,direct
#env = GSK_RENDERER,ngl
-# additional ENV's for nvidia. Caution, activate with care
+### additional ENV's for nvidia. Caution, activate with care ###
#env = GBM_BACKEND,nvidia-drm
-
#env = __GL_GSYNC_ALLOWED,1 #adaptive Vsync
#env = __NV_PRIME_RENDER_OFFLOAD,1
#env = __VK_LAYER_NV_optimus,NVIDIA_only
#env = WLR_DRM_NO_ATOMIC,1
-# FOR VM and POSSIBLY NVIDIA
+### FOR VM and POSSIBLY NVIDIA ###
# LIBGL_ALWAYS_SOFTWARE software mesa rendering
#env = LIBGL_ALWAYS_SOFTWARE,1 # Warning. May cause hyprland to crash
#env = WLR_RENDERER_ALLOW_SOFTWARE,1
-# nvidia firefox (for hardware acceleration on FF)?
+### nvidia firefox ###
# check this post https://github.com/elFarto/nvidia-vaapi-driver#configuration
#env = MOZ_DISABLE_RDD_SANDBOX,1
#env = EGL_PLATFORM,wayland
-#### Aquamarine Environment Variables #### ( Hyprland > 0.45 )
-# https://wiki.hyprland.org/Configuring/Environment-variables/#aquamarine-environment-variables----ref-httpsgithubcomhyprwmaquamarineblobmaindocsenvmd---
+### Aquamarine Environment Variables (Hyprland > 0.45) ###
+# https://wiki.hyprland.org/Configuring/Environment-variables/#aquamarine-environment-variables
# env = AQ_TRACE,1 # Enables more verbose logging.
# env = AQ_DRM_DEVICES,/dev/dri/card1:/dev/dri/card0 # Set an explicit list of DRM devices (GPUs) to use. It’s a colon-separated list of paths, with the first being the primary. E.g. /dev/dri/card1:/dev/dri/card0
# env = AQ_MGPU_NO_EXPLICIT,1 # Disables explicit syncing on mgpu buffers
# env = AQ_NO_MODIFIERS,1 # Disables modifiers for DRM buffers
-#### Hyprland Environment Variables ####
-# https://wiki.hyprland.org/Configuring/Environment-variables/#hyprland-environment-variables
-# env = HYPRLAND_TRACE,1 # Enables more verbose logging.
-# env = HYPRLAND_NO_RT,1 # Disables realtime priority setting by Hyprland.
-# env = HYPRLAND_NO_SD_NOTIFY,1 # If systemd, disables the 'sd_notify' calls.
-# env = HYPRLAND_NO_SD_VARS,1 # Disables management of variables in systemd and dbus activation environments.
diff --git a/config/hypr/UserConfigs/Laptops.conf b/config/hypr/UserConfigs/Laptops.conf
index edb68463..af5cb583 100644
--- a/config/hypr/UserConfigs/Laptops.conf
+++ b/config/hypr/UserConfigs/Laptops.conf
@@ -1,5 +1,4 @@
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ #
-
# See https://wiki.hyprland.org/Configuring/Keywords/ for more variable settings
# These configs are mostly for laptops. This is addemdum to Keybinds.conf
@@ -7,30 +6,6 @@ $mainMod = SUPER
$scriptsDir = $HOME/.config/hypr/scripts
$UserConfigs = $HOME/.config/hypr/UserConfigs
-# for disabling Touchpad. hyprctl devices to get device name.
-$Touchpad_Device=asue1209:00-04f3:319f-touchpad
-
-binde = , xf86KbdBrightnessDown, exec, $scriptsDir/BrightnessKbd.sh --dec # decrease keyboard brightness
-binde = , xf86KbdBrightnessUp, exec, $scriptsDir/BrightnessKbd.sh --inc # increase keyboard brightness
-bind = , xf86Launch1, exec, rog-control-center # ASUS Armory crate button
-bind = , xf86Launch3, exec, asusctl led-mode -n # FN+F4 Switch keyboard RGB profile
-bind = , xf86Launch4, exec, asusctl profile -n # FN+F5 change of fan profiles (Quite, Balance, Performance)
-binde = , xf86MonBrightnessDown, exec, $scriptsDir/Brightness.sh --dec # decrease monitor brightness
-binde = , xf86MonBrightnessUp, exec, $scriptsDir/Brightness.sh --inc # increase monitor brightness
-bind = , xf86TouchpadToggle, exec, $scriptsDir/TouchPad.sh # disable touchpad
-
-# Screenshot keybindings using F6 (no PrinSrc button)
-bind = $mainMod, F6, exec, $scriptsDir/ScreenShot.sh --now # screenshot
-bind = $mainMod SHIFT, F6, exec, $scriptsDir/ScreenShot.sh --area # screenshot (area)
-bind = $mainMod CTRL, F6, exec, $scriptsDir/ScreenShot.sh --in5 # # screenshot (5 secs delay)
-bind = $mainMod ALT, F6, exec, $scriptsDir/ScreenShot.sh --in10 # screenshot (10 secs delay)
-bind = ALT, F6, exec, $scriptsDir/ScreenShot.sh --active # screenshot (active window only)
-
-$TOUCHPAD_ENABLED = true
-device {
- name = $Touchpad_Device
- enabled = $TOUCHPAD_ENABLED
-}
# Below are useful when you are connecting your laptop in external display
# Suggest you edit below for your laptop display
# From WIKI This is to disable laptop monitor when lid is closed.
@@ -52,4 +27,3 @@ device {
# for laptop-lid action (to erase the last entry)
#exec-once = echo "monitor = eDP-1, preferred, auto, 1" > $HOME/.config/hypr/UserConfigs/LaptopDisplay.conf
-#
diff --git a/config/hypr/UserConfigs/Startup_Apps.conf b/config/hypr/UserConfigs/Startup_Apps.conf
new file mode 100644
index 00000000..f00acf90
--- /dev/null
+++ b/config/hypr/UserConfigs/Startup_Apps.conf
@@ -0,0 +1,3 @@
+# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ #
+# Commands and Apps to be executed at launch
+
diff --git a/config/hypr/UserConfigs/UserKeybinds.conf b/config/hypr/UserConfigs/UserKeybinds.conf
index 17711559..e140cfe4 100644
--- a/config/hypr/UserConfigs/UserKeybinds.conf
+++ b/config/hypr/UserConfigs/UserKeybinds.conf
@@ -11,73 +11,30 @@ $scriptsDir = $HOME/.config/hypr/scripts
$UserScripts = $HOME/.config/hypr/UserScripts
$UserConfigs = $HOME/.config/hypr/UserConfigs
-# settings for User defaults apps - set your default terminal and file manager on this file
-source= $UserConfigs/01-UserDefaults.conf
+# IMPORTANT: If you want to remap and existing keybind you MUST unbindd it first
-# common shortcuts
-#bindr = $mainMod, $mainMod_L, exec, pkill rofi || rofi -show drun -modi drun,filebrowser,run,window # Super Key to Launch rofi menu
-bindd = $mainMod, D, app launcher, exec, pkill rofi || true && rofi -show drun -modi drun,filebrowser,run,window
-bindd = $mainMod, B, open default browser, exec, xdg-open "https://"
-bindd = $mainMod, A, desktop overview, exec, $scriptsDir/OverviewToggle.sh # toggles quickshell or ags overview (tries QS first, falls back to AGS)
-#bindd = $mainMod, A, ags overview, exec, pkill rofi || true && ags -t 'overview' # desktop overview (if installed)
-#bindd = $mainMod, A, Quickshell overview, global, quickshell:overviewToggle # desktop overview (if installed)
-bindd = $mainMod, Return, Open terminal, exec, $term
-bindd = $mainMod, E, file manager, exec, $files
+# The bindings are CASE SENSITIVE. We suggest you copy the exisitng binding here
+# Then change `bindd` to `unbind`
+# E.g.
+# unbind = $mainMod, Return, Open terminal, exec, $term
+# bindd = $mainMod, Return, Open terminal, exec, ghostty
+#
+# unbind = $mainMod, E, file manager, exec, $files
+# bindd = $mainMod, T, file manager, exec, $files
-# FEATURES / EXTRAS
-bindd = $mainMod, H, help / cheat sheet, exec, $scriptsDir/KeyHints.sh
-bindd = $mainMod ALT, R, refresh bar and menus, exec, $scriptsDir/Refresh.sh
-bindd = $mainMod ALT, E, emoji menu, exec, $scriptsDir/RofiEmoji.sh
-bindd = $mainMod, S, web search, exec, $scriptsDir/RofiSearch.sh
-bindd = $mainMod CTRL, S, window switcher, exec, rofi -show window
-bindd = $mainMod ALT, O, toggle blur, exec, $scriptsDir/ChangeBlur.sh
-bindd = $mainMod SHIFT, G, toggle game mode, exec, $scriptsDir/GameMode.sh
-bindd = $mainMod ALT, L, toggle master/dwindle layout, exec, $scriptsDir/ChangeLayout.sh
-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
+# If you are ADDING a bindd, make sure you include the description
+# Other the keybind search menu might not show it properly
+
+# E.g.
+# bindd = $mainMod, Z, My z app, exec APPNAME
-bindd = $mainMod SHIFT, F, fullscreen, fullscreen
-bindd = $mainMod CTRL, F, maximize window, fullscreen, 1
-bindd = $mainMod, SPACE, Float current window, togglefloating,
-bindd = $mainMod ALT, SPACE, Float all windows, exec, hyprctl dispatch workspaceopt allfloat
-bindd = $mainMod SHIFT, Return, DropDown terminal, exec, $scriptsDir/Dropterminal.sh $term
-# Desktop zooming or magnifier
-bindd = $mainMod ALT, mouse_down, zoom in, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | awk 'NR==1 {factor = $2; if (factor < 1) {factor = 1}; print factor * 2.0}')"
-bindd = $mainMod ALT, mouse_up, zoom out, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | awk 'NR==1 {factor = $2; if (factor < 1) {factor = 1}; print factor / 2.0}')"
-## NOTES for ja (Hyprland version 0.39 (Ubuntu 24.04))
-#bind = $mainMod ALT, mouse_down, exec, hyprctl keyword misc:cursor_zoom_factor "$(hyprctl getoption misc:cursor_zoom_factor | awk 'NR==1 {factor = $2; if (factor < 1) {factor = 1}; print factor * 2.0}')"
-#bind = $mainMod ALT, mouse_up, exec, hyprctl keyword misc:cursor_zoom_factor "$(hyprctl getoption misc:cursor_zoom_factor | awk 'NR==1 {factor = $2; if (factor < 1) {factor = 1}; print factor / 2.0}')"
-# Waybar / Bar related
-bindd = $mainMod CTRL ALT, B, toggle waybar on/off, exec, pkill -SIGUSR1 waybar
-bindd = $mainMod CTRL, B, waybar styles menu, exec, $scriptsDir/WaybarStyles.sh
-bindd = $mainMod ALT, B, waybar layout menu, exec, $scriptsDir/WaybarLayout.sh
-# Night light toggle (Hyprsunset)
-bindd = $mainMod, N, toggle night light, exec, $scriptsDir/Hyprsunset.sh toggle
-# FEATURES / EXTRAS (UserScripts)
-bindd = $mainMod SHIFT, M, online music, exec, $UserScripts/RofiBeats.sh
-bindd = $mainMod, W, select wallpaper, exec, $UserScripts/WallpaperSelect.sh
-bindd = $mainMod SHIFT, W, wallpaper effects, exec, $UserScripts/WallpaperEffects.sh
-bindd = CTRL ALT, W, random wallpaper, exec, $UserScripts/WallpaperRandom.sh
-bindd = $mainMod CTRL, O, toggle active window opacity, exec, hyprctl setprop active opaque toggle
-bindd = $mainMod SHIFT, K, search keybinds, exec, $scriptsDir/KeyBinds.sh
-bindd = $mainMod SHIFT, A, animations menu, exec, $scriptsDir/Animations.sh
-bindd = $mainMod SHIFT, O, change oh-my-zsh theme, exec, $UserScripts/ZshChangeTheme.sh
-bindlnd = ALT_L, SHIFT_L, switch keyboard layout globally, exec, $scriptsDir/SwitchKeyboardLayout.sh
-bindlnd = SHIFT_L, ALT_L, switch keyboard layout per-window, exec, $scriptsDir/Tak0-Per-Window-Switch.sh
-bindd = $mainMod ALT, C, calculator, exec, $UserScripts/RofiCalc.sh
-# Move current workspaces to monitors (left right up or down)
-bindd = $mainMod CTRL, F9, move workspace to left monitor, movecurrentworkspacetomonitor, l
-bindd = $mainMod CTRL, F10, move workspace to right monitor, movecurrentworkspacetomonitor, r
-bindd = $mainMod CTRL, F11, move workspace to up monitor, movecurrentworkspacetomonitor, u
-bindd = $mainMod CTRL, F12, move workspace to down monitor, movecurrentworkspacetomonitor, d
# For passthrough keyboard into a VM
diff --git a/config/hypr/UserConfigs/UserSettings.conf b/config/hypr/UserConfigs/UserSettings.conf
index 4802e79a..df68b396 100644
--- a/config/hypr/UserConfigs/UserSettings.conf
+++ b/config/hypr/UserConfigs/UserSettings.conf
@@ -4,119 +4,7 @@
# if the upgrade.sh is used.
# refer to Hyprland wiki for more info https://wiki.hyprland.org/Configuring/Variables/
-
# NOTE: some settings are in ~/.config/hypr/UserConfigs/UserDecorAnimations.conf
+#
+# Look on ~/.config/hypr/configs/SystemSettings.conf to know how to modify this
-dwindle {
- pseudotile = true
- preserve_split = true
- #smart_split = true
- special_scale_factor = 0.8
-}
-
-master {
- new_status = master
- new_on_top = 1
- mfact = 0.5
-}
-
-general {
- resize_on_border = true
-
- layout = dwindle
-}
-
-input {
- kb_layout = us
- kb_variant =
- kb_model =
- kb_options =
- kb_rules =
- repeat_rate = 50
- repeat_delay = 300
-
- sensitivity = 0 #mouse sensitivity
- #accel_profile = # flat or adaptive or blank or EMPTY means libinput’s default mode
- numlock_by_default = true
- left_handed = false
- follow_mouse = 1
- float_switch_override_focus = false
-
- touchpad {
- disable_while_typing = true
- natural_scroll = true
- clickfinger_behavior = false
- middle_button_emulation = false
- tap-to-click = true
- drag_lock = false
- }
-
- # below for devices with touchdevice ie. touchscreen
- touchdevice {
- enabled = true
- }
-
- # below is for table see link above for proper variables
- tablet {
- transform = 0
- left_handed = 0
- }
-}
-
-
-gestures {
- gesture = 3, horizontal, workspace
- workspace_swipe_distance = 500
- workspace_swipe_invert = true
- workspace_swipe_min_speed_to_force = 30
- workspace_swipe_cancel_ratio = 0.5
- 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 {
- disable_hyprland_logo = true
- disable_splash_rendering = true
- vfr = true
- vrr = 2
- mouse_move_enables_dpms = true
- enable_swallow = off
- swallow_regex = ^(kitty)$
- focus_on_activate = false
- initial_workspace_tracking = 0
- middle_click_paste = false
- enable_anr_dialog = true # Application not Responding (ANR)
- anr_missed_pings = 15 # ANR Threshold default 1 is too low
- allow_session_lock_restore = true # Prevent lockscreen crash when resume from suspend
-}
-
-#opengl {
-# nvidia_anti_flicker = true
-#}
-
-binds {
- workspace_back_and_forth = true
- allow_workspace_cycles = true
- pass_mouse_when_bound = false
-}
-
-#Could help when scaling and not pixelating
-xwayland {
- enabled = true
- force_zero_scaling = true
-}
-
-render {
- direct_scanout = 0
-}
-
-cursor {
- sync_gsettings_theme = true
- no_hardware_cursors = 2 # change to 1 if want to disable
- enable_hyprcursor = true
- warp_on_change_workspace = 2
- no_warps = true
-}
diff --git a/config/hypr/UserConfigs/WindowRules-old.conf b/config/hypr/UserConfigs/WindowRules-old.conf
deleted file mode 100644
index d6e1dead..00000000
--- a/config/hypr/UserConfigs/WindowRules-old.conf
+++ /dev/null
@@ -1,206 +0,0 @@
-# /* ---- πŸ’« 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 older versions (< 0.48)
-
-# windowrule v2 - tags - add apps under appropriate tag to use the same settings
-# browser tags
-windowrulev2 = tag +browser, class:^([Ff]irefox|org.mozilla.firefox|[Ff]irefox-esr|[Ff]irefox-bin)$
-windowrulev2 = tag +browser, class:^([Gg]oogle-chrome(-beta|-dev|-unstable)?)$
-windowrulev2 = tag +browser, class:^(chrome-.+-Default)$ # Chrome PWAs
-windowrulev2 = tag +browser, class:^([Cc]hromium)$
-windowrulev2 = tag +browser, class:^([Mm]icrosoft-edge(-stable|-beta|-dev|-unstable))$
-windowrulev2 = tag +browser, class:^(Brave-browser(-beta|-dev|-unstable)?)$
-windowrulev2 = tag +browser, class:^([Tt]horium-browser|[Cc]achy-browser)$
-windowrulev2 = tag +browser, class:^(zen-alpha|zen)$
-windowrulev2 = tag +notif, class:^(swaync-control-center|swaync-notification-window|swaync-client|class)$
-windowrulev2 = tag +KooL_Cheat, title:^(KooL Quick Cheat Sheet)$
-windowrulev2 = tag +KooL_Settings, title:^(KooL Hyprland Settings)$
-windowrulev2 = tag +KooL-Settings, class:^(nwg-displays|nwg-look)$
-
-# terminal tags
-windowrulev2 = tag +terminal, class:^(Alacritty|kitty|kitty-dropterm)$
-
-# email tags
-windowrulev2 = tag +email, class:^([Tt]hunderbird|org.gnome.Evolution)$
-windowrulev2 = tag +email, class:^(eu.betterbird.Betterbird)$
-
-# project tags
-windowrulev2 = tag +projects, class:^(codium|codium-url-handler|VSCodium)$
-windowrulev2 = tag +projects, class:^(VSCode|code-url-handler)$
-windowrulev2 = tag +projects, class:^(jetbrains-.+)$ # JetBrains IDEs
-
-# screenshare tags
-windowrulev2 = tag +screenshare, class:^(com.obsproject.Studio)$
-
-# IM tags
-windowrulev2 = tag +im, class:^([Dd]iscord|[Ww]ebCord|[Vv]esktop)$
-windowrulev2 = tag +im, class:^([Ff]erdium)$
-windowrulev2 = tag +im, class:^([Ww]hatsapp-for-linux)$
-windowrulev2 = tag +im, class:^(ZapZap|com.rtosta.zapzap)$
-windowrulev2 = tag +im, class:^(org.telegram.desktop|io.github.tdesktop_x64.TDesktop)$
-windowrulev2 = tag +im, class:^(teams-for-linux)$
-
-# game tags
-windowrulev2 = tag +games, class:^(gamescope)$
-windowrulev2 = tag +games, class:^(steam_app_\d+)$
-
-# gamestore tags
-windowrulev2 = tag +gamestore, class:^([Ss]team)$
-windowrulev2 = tag +gamestore, title:^([Ll]utris)$
-windowrulev2 = tag +gamestore, class:^(com.heroicgameslauncher.hgl)$
-
-# file-manager tags
-windowrulev2 = tag +file-manager, class:^([Tt]hunar|org.gnome.Nautilus|[Pp]cmanfm-qt)$
-windowrulev2 = tag +file-manager, class:^(app.drey.Warp)$
-
-# wallpaper tags
-windowrulev2 = tag +wallpaper title:^([Ww]aytrogen)$
-windowrulev2 = tag +wallpaper, class:^([Ww]aytrogen)$
-
-# multimedia tags
-windowrulev2 = tag +multimedia, class:^([Aa]udacious)$
-
-
-# settings tags
-windowrulev2 = tag +settings, title:^(ROG Control)$
-windowrulev2 = tag +settings, class:^(wihotspot(-gui)?)$ # wifi hotspot
-windowrulev2 = tag +settings, class:^([Bb]aobab|org.gnome.[Bb]aobab)$ # Disk usage analyzer
-windowrulev2 = tag +settings, class:^(gnome-disks|wihotspot(-gui)?)$
-windowrulev2 = tag +settings, title:(Kvantum Manager)
-windowrulev2 = tag +settings, class:^(file-roller|org.gnome.FileRoller)$ # archive manager
-windowrulev2 = tag +settings, class:^(nm-applet|nm-connection-editor|blueman-manager)$
-windowrulev2 = tag +settings, class:^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$
-windowrulev2 = tag +settings, class:^(qt5ct|qt6ct|[Yy]ad)$
-windowrulev2 = tag +settings, class:(xdg-desktop-portal-gtk)
-windowrulev2 = tag +settings, class:^(org.kde.polkit-kde-authentication-agent-1)$
-windowrulev2 = tag +settings, class:^([Rr]ofi)$
-
-# viewer tags
-windowrulev2 = tag +viewer, class:^(gnome-system-monitor|org.gnome.SystemMonitor|io.missioncenter.MissionCenter)$ # system monitor
-windowrulev2 = tag +viewer, class:^(evince)$ # document viewer
-windowrulev2 = tag +viewer, class:^(eog|org.gnome.Loupe)$ # image viewer
-
-# POSITION
-# windowrulev2 = center,floating:1 # warning, it cause even the menu to float and center.
-windowrulev2 = center, tag:KooL_Cheat*
-windowrulev2 = center, class:([Tt]hunar), title:negative:(.*[Tt]hunar.*)
-windowrulev2 = center, title:^(ROG Control)$
-windowrulev2 = center, tag:KooL-Settings*
-windowrulev2 = center, title:^(Keybindings)$
-windowrulev2 = center, class:^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$
-windowrulev2 = center, class:^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$
-windowrulev2 = center, class:^([Ff]erdium)$
-windowrulev2 = move 72% 7%,title:^(Picture-in-Picture)$
-#windowrulev2 = move 72% 7%,title:^(Firefox)$
-
-# windowrule v2 to avoid idle for fullscreen apps
-#windowrulev2 = idleinhibit fullscreen, class:^(*)$
-#windowrulev2 = idleinhibit fullscreen, title:^(*)$
-windowrulev2 = idleinhibit fullscreen, fullscreen:1
-
-# windowrule v2 move to workspace
-windowrulev2 = workspace 1, tag:email*
-windowrulev2 = workspace 2, tag:browser*
-#windowrulev2 = workspace 3, class:^([Tt]hunar)$
-#windowrulev2 = workspace 3, tag:projects*
-windowrulev2 = workspace 5, tag:gamestore*
-windowrulev2 = workspace 7, tag:im*
-windowrulev2 = workspace 8, tag:games*
-
-# windowrule v2 move to workspace (silent)
-windowrulev2 = workspace 4 silent, tag:screenshare*
-windowrulev2 = workspace 6 silent, class:^(virt-manager)$
-windowrulev2 = workspace 6 silent, class:^(.virt-manager-wrapped)$
-windowrulev2 = workspace 9 silent, tag:multimedia*
-
-# FLOAT
-windowrulev2 = float, tag:KooL_Cheat*
-windowrulev2 = float, tag:wallpaper*
-windowrulev2 = float, tag:settings*
-windowrulev2 = float, tag:viewer*
-windowrulev2 = float, tag:KooL-Settings*
-windowrulev2 = float, class:([Zz]oom|onedriver|onedriver-launcher)$
-windowrulev2 = float, class:(org.gnome.Calculator), title:(Calculator)
-windowrulev2 = float, class:^(mpv|com.github.rafostar.Clapper)$
-windowrulev2 = float, class:^([Qq]alculate-gtk)$
-#windowrulev2 = float, class:^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$
-windowrulev2 = float, class:^([Ff]erdium)$
-windowrulev2 = float, title:^(Picture-in-Picture)$
-#windowrulev2 = float, title:^(Firefox)$
-
-
-#windowrule v2 - float popups and dialogue
-windowrulev2 = float, title:^(Authentication Required)$
-windowrulev2 = center, title:^(Authentication Required)$
-windowrulev2 = float, class:(codium|codium-url-handler|VSCodium), title:negative:(.*codium.*|.*VSCodium.*)
-windowrulev2 = float, class:^(com.heroicgameslauncher.hgl)$, title:negative:(Heroic Games Launcher)
-windowrulev2 = float, class:^([Ss]team)$, title:negative:^([Ss]team)$
-windowrulev2 = float, class:([Tt]hunar), title:negative:(.*[Tt]hunar.*)
-#windowrulev2 = float, class:(electron), title:(Add Folder to Workspace)
-windowrulev2 = float, title:^(Add Folder to Workspace)$
-windowrulev2 = size 70% 60%, title:^(Add Folder to Workspace)$
-windowrulev2 = center, title:^(Add Folder to Workspace)$
-windowrulev2 = float, initialTitle:(Open Files)
-windowrulev2 = size 70% 60%, initialTitle:(Open Files)
-windowrulev2 = float, title:^(SDDM Background)$ #KooL's Dots YAD for setting SDDM background
-windowrulev2 = center, title:^(SDDM Background)$ #KooL's Dots YAD for setting SDDM background
-windowrulev2 = size 16% 12%, title:^(SDDM Background)$ #KooL's Dots YAD for setting SDDM background
-
-# OPACITY
-windowrulev2 = opacity 0.9 0.7, tag:browser*
-windowrulev2 = opacity 0.9 0.8, tag:projects*
-windowrulev2 = opacity 0.94 0.86, tag:im*
-windowrulev2 = opacity 0.94 0.86, tag:multimedia*
-windowrulev2 = opacity 0.9 0.8, tag:file-manager*
-windowrulev2 = opacity 0.8 0.7, tag:terminal*
-windowrulev2 = opacity 0.8 0.7, tag:settings*
-windowrulev2 = opacity 0.82 0.75, tag:viewer*
-windowrulev2 = opacity 0.9 0.7, tag:wallpaper*
-windowrulev2 = opacity 0.8 0.7, class:^(gedit|org.gnome.TextEditor|mousepad)$
-windowrulev2 = opacity 0.9 0.8, class:^(deluge)$
-windowrulev2 = opacity 0.9 0.8, class:^(im.riot.Riot)$ # Element matrix client
-windowrulev2 = opacity 0.9 0.8, class:^(seahorse)$ # gnome-keyring gui
-windowrulev2 = opacity 0.95 0.75, title:^(Picture-in-Picture)$
-
-
-# SIZE
-windowrulev2 = size 65% 90%, tag:KooL_Cheat*
-windowrulev2 = size 70% 70%, tag:wallpaper*
-windowrulev2 = size 70% 70%, tag:settings*
-windowrulev2 = size 60% 70%, class:^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$
-windowrulev2 = size 60% 70%, class:^([Ff]erdium)$
-
-#windowrulev2 = size 25% 25%, title:^(Picture-in-Picture)$
-#windowrulev2 = size 25% 25%, title:^(Firefox)$
-
-# PINNING
-windowrulev2 = pin, title:^(Picture-in-Picture)$
-#windowrulev2 = pin,title:^(Firefox)$
-
-# windowrule v2 - extras
-windowrulev2 = keepaspectratio, title:^(Picture-in-Picture)$
-
-# BLUR & FULLSCREEN
-windowrulev2 = noblur, tag:games*
-windowrulev2 = fullscreen, tag:games*
-
-#windowrulev2 = bordercolor rgb(EE4B55) rgb(880808), fullscreen:1
-#windowrulev2 = bordercolor rgb(282737) rgb(1E1D2D), floating:1
-#windowrulev2 = opacity 0.8 0.8, pinned:1
-
-# LAYER RULES
-layerrule = blur, rofi
-layerrule = ignorezero, rofi
-layerrule = blur, notifications
-layerrule = ignorezero, notifications
-#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 \ No newline at end of file
diff --git a/config/hypr/UserConfigs/WindowRules-v3.conf b/config/hypr/UserConfigs/WindowRules-v3.conf
deleted file mode 100644
index f093faf6..00000000
--- a/config/hypr/UserConfigs/WindowRules-v3.conf
+++ /dev/null
@@ -1,671 +0,0 @@
-# /* ---- πŸ’« 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
-
-# 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 #######
-
-
-# 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/UserConfigs/WindowRules.conf b/config/hypr/UserConfigs/WindowRules.conf
index 2c24dafc..ee9eb317 100644
--- a/config/hypr/UserConfigs/WindowRules.conf
+++ b/config/hypr/UserConfigs/WindowRules.conf
@@ -2,234 +2,5 @@
# 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
-windowrule = tag +browser, class:^([Ff]irefox|org.mozilla.firefox|[Ff]irefox-esr|[Ff]irefox-bin)$
-windowrule = tag +browser, class:^([Gg]oogle-chrome(-beta|-dev|-unstable)?)$
-windowrule = tag +browser, class:^(chrome-.+-Default)$ # Chrome PWAs
-windowrule = tag +browser, class:^([Cc]hromium)$
-windowrule = tag +browser, class:^([Mm]icrosoft-edge(-stable|-beta|-dev|-unstable))$
-windowrule = tag +browser, class:^(Brave-browser(-beta|-dev|-unstable)?)$
-windowrule = tag +browser, class:^([Tt]horium-browser|[Cc]achy-browser)$
-windowrule = tag +browser, class:^(zen-alpha|zen)$
-
-# notif tags
-windowrule = tag +notif, class:^(swaync-control-center|swaync-notification-window|swaync-client|class)$
-
-# KooL settings tag
-windowrule = tag +KooL_Cheat, title:^(KooL Quick Cheat Sheet)$
-windowrule = tag +KooL_Settings, title:^(KooL Hyprland Settings)$
-windowrule = tag +KooL-Settings, class:^(nwg-displays|nwg-look)$
-
-# terminal tags
-windowrule = tag +terminal, class:^(Alacritty|kitty|kitty-dropterm)$
-
-# email tags
-windowrule = tag +email, class:^([Tt]hunderbird|org.gnome.Evolution)$
-windowrule = tag +email, class:^(eu.betterbird.Betterbird)$
-
-# project tags
-windowrule = tag +projects, class:^(codium|codium-url-handler|VSCodium)$
-windowrule = tag +projects, class:^(VSCode|code-url-handler)$
-windowrule = tag +projects, class:^(jetbrains-.+)$ # JetBrains IDEs
-
-# screenshare tags
-windowrule = tag +screenshare, class:^(com.obsproject.Studio)$
-
-# IM tags
-windowrule = tag +im, class:^([Dd]iscord|[Ww]ebCord|[Vv]esktop)$
-windowrule = tag +im, class:^([Ff]erdium)$
-windowrule = tag +im, class:^([Ww]hatsapp-for-linux)$
-windowrule = tag +im, class:^(ZapZap|com.rtosta.zapzap)$
-windowrule = tag +im, class:^(org.telegram.desktop|io.github.tdesktop_x64.TDesktop)$
-windowrule = tag +im, class:^(teams-for-linux)$
-windowrule = tag +im, class:^(im.riot.Riot|Element)$ # Element Matrix client
-
-# game tags
-windowrule = tag +games, class:^(gamescope)$
-windowrule = tag +games, class:^(steam_app_\d+)$
-
-# gamestore tags
-windowrule = tag +gamestore, class:^([Ss]team)$
-windowrule = tag +gamestore, title:^([Ll]utris)$
-windowrule = tag +gamestore, class:^(com.heroicgameslauncher.hgl)$
-
-# file-manager tags
-windowrule = tag +file-manager, class:^([Tt]hunar|org.gnome.Nautilus|[Pp]cmanfm-qt)$
-windowrule = tag +file-manager, class:^(app.drey.Warp)$
-
-# wallpaper tags
-windowrule = tag +wallpaper, class:^([Ww]aytrogen)$
-
-# multimedia tags
-windowrule = tag +multimedia, class:^([Aa]udacious)$
-
-# multimedia-video tags
-windowrule = tag +multimedia_video, class:^([Mm]pv|vlc)$
-
-# settings tags
-windowrule = tag +settings, title:^(ROG Control)$
-windowrule = tag +settings, class:^(wihotspot(-gui)?)$ # wifi hotspot
-windowrule = tag +settings, class:^([Bb]aobab|org.gnome.[Bb]aobab)$ # Disk usage analyzer
-windowrule = tag +settings, class:^(gnome-disks|wihotspot(-gui)?)$
-windowrule = tag +settings, title:(Kvantum Manager)
-windowrule = tag +settings, class:^(file-roller|org.gnome.FileRoller)$ # archive manager
-windowrule = tag +settings, class:^(nm-applet|nm-connection-editor|blueman-manager)$
-windowrule = tag +settings, class:^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$
-windowrule = tag +settings, class:^(qt5ct|qt6ct|[Yy]ad)$
-windowrule = tag +settings, class:(xdg-desktop-portal-gtk)
-windowrule = tag +settings, class:^(org.kde.polkit-kde-authentication-agent-1)$
-windowrule = tag +settings, class:^([Rr]ofi)$
-
-# viewer tags
-windowrule = tag +viewer, class:^(gnome-system-monitor|org.gnome.SystemMonitor|io.missioncenter.MissionCenter)$ # system monitor
-windowrule = tag +viewer, class:^(evince)$ # document viewer
-windowrule = tag +viewer, class:^(eog|org.gnome.Loupe)$ # image viewer
-
-# Some special override rules
-windowrule = noblur, tag:multimedia_video*
-windowrule = opacity 1.0, tag:multimedia_video*
-
-# POSITION
-# windowrule = center,floating:1 # warning, it cause even the menu to float and center.
-windowrule = center, tag:KooL_Cheat*
-windowrule = center, class:([Tt]hunar), title:negative:(.*[Tt]hunar.*)
-windowrule = center, title:^(ROG Control)$
-windowrule = center, tag:KooL-Settings*
-windowrule = center, title:^(Keybindings)$
-windowrule = center, class:^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$
-windowrule = center, class:^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$
-windowrule = center, class:^([Ff]erdium)$
-windowrule = move 72% 7%,title:^(Picture-in-Picture)$
-#windowrule = move 72% 7%,title:^(Firefox)$
-
-# windowrule to avoid idle for fullscreen apps
-#windowrule = idleinhibit fullscreen, class:^(*)$
-#windowrule = idleinhibit fullscreen, title:^(*)$
-windowrule = idleinhibit fullscreen, fullscreen:1
-
-# 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, tag:KooL_Cheat*
-windowrule = float, tag:wallpaper*
-windowrule = float, tag:settings*
-windowrule = float, tag:viewer*
-windowrule = float, tag:KooL-Settings*
-windowrule = float, class:([Zz]oom|onedriver|onedriver-launcher)$
-windowrule = float, class:(org.gnome.Calculator), title:(Calculator)
-windowrule = float, class:^(mpv|com.github.rafostar.Clapper)$
-windowrule = float, class:^([Qq]alculate-gtk)$
-#windowrule = float, class:^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$
-windowrule = float, class:^([Ff]erdium)$
-windowrule = float, title:^(Picture-in-Picture)$
-#windowrule = float, title:^(Firefox)$
-
-# windowrule - ######### float popups and dialogue #######
-windowrule = float, title:^(Authentication Required)$
-windowrule = center, title:^(Authentication Required)$
-windowrule = float, class:(codium|codium-url-handler|VSCodium), title:negative:(.*codium.*|.*VSCodium.*)
-windowrule = float, class:^(com.heroicgameslauncher.hgl)$, title:negative:(Heroic Games Launcher)
-windowrule = float, class:^([Ss]team)$, title:negative:^([Ss]team)$
-windowrule = float, class:([Tt]hunar), title:negative:(.*[Tt]hunar.*)
-
-windowrule = float, title:^(Add Folder to Workspace)$
-windowrule = size 70% 60%, title:^(Add Folder to Workspace)$
-windowrule = center, title:^(Add Folder to Workspace)$
-
-windowrule = float, title:^(Save As)$
-windowrule = size 70% 60%, title:^(Save As)$
-windowrule = center, title:^(Save As)$
-
-windowrule = float, initialTitle:(Open Files)
-windowrule = size 70% 60%, initialTitle:(Open Files)
-
-windowrule = float, title:^(SDDM Background)$ #KooL's Dots YAD for setting SDDM background
-windowrule = center, title:^(SDDM Background)$ #KooL's Dots YAD for setting SDDM background
-windowrule = size 16% 12%, title:^(SDDM Background)$ #KooL's Dots YAD for setting SDDM background
-# END of float popups and dialogue #######
-
-# OPACITY
-windowrule = opacity 0.99 0.8, tag:browser*
-windowrule = opacity 0.9 0.8, tag:projects*
-windowrule = opacity 0.94 0.86, tag:im*
-windowrule = opacity 0.94 0.86, tag:multimedia*
-windowrule = opacity 0.9 0.8, tag:file-manager*
-windowrule = opacity 0.9 0.7, tag:terminal*
-windowrule = opacity 0.8 0.7, tag:settings*
-windowrule = opacity 0.82 0.75, tag:viewer*
-windowrule = opacity 0.9 0.7, tag:wallpaper*
-windowrule = opacity 0.8 0.7, class:^(gedit|org.gnome.TextEditor|mousepad)$
-windowrule = opacity 0.9 0.8, class:^(deluge)$
-windowrule = opacity 0.9 0.8, class:^(seahorse)$ # gnome-keyring gui
-windowrule = opacity 0.95 0.75, title:^(Picture-in-Picture)$
-windowrule = opacity 0.9,class:^(code)$
-
-# SIZE
-windowrule = size 65% 90%, tag:KooL_Cheat*
-windowrule = size 70% 70%, tag:wallpaper*
-windowrule = size 70% 70%, tag:settings*
-windowrule = size 60% 70%, class:^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$
-windowrule = size 60% 70%, class:^([Ff]erdium)$
-
-#windowrule = size 25% 25%, title:^(Picture-in-Picture)$
-#windowrule = size 25% 25%, title:^(Firefox)$
-
-# PINNING
-windowrule = pin, title:^(Picture-in-Picture)$
-#windowrule = pin,title:^(Firefox)$
-
-# windowrule - extras
-windowrule = keepaspectratio, title:^(Picture-in-Picture)$
-
-# BLUR & FULLSCREEN
-windowrule = noblur, tag:games*
-windowrule = fullscreen, tag:games*
-
-
-#This not gonna take the focus to the window that appears when hovering over some of the parts of the IntelliJ Products
-windowrule = noinitialfocus, class:^(jetbrains-*)
-windowrule = noinitialfocus, title:^(wind.*)$
-
-#This will gonna make the VS Code bluer like other apps
-windowrule = opacity 0.8,class:^(code)$
-
-#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 = blur, rofi
-layerrule = ignorezero, rofi
-layerrule = blur, notifications
-layerrule = ignorezero, notifications
-layerrule = blur, quickshell:overview
-layerrule = ignorezero, quickshell:overview
-layerrule = ignorealpha 0.5, quickshell:overview
-
-#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
+# This file is used to add or overwrite window rules
+# This file will not be modified during dotfiles updates
diff --git a/config/hypr/UserConfigs/WorkSpaceRules b/config/hypr/UserConfigs/WorkSpaceRules.conf
index aa86b35c..aa86b35c 100644
--- a/config/hypr/UserConfigs/WorkSpaceRules
+++ b/config/hypr/UserConfigs/WorkSpaceRules.conf
diff --git a/config/hypr/UserScripts/WallpaperSelect.sh b/config/hypr/UserScripts/WallpaperSelect.sh
index 9e51125f..0029d3e5 100755
--- a/config/hypr/UserScripts/WallpaperSelect.sh
+++ b/config/hypr/UserScripts/WallpaperSelect.sh
@@ -93,7 +93,7 @@ menu() {
fi
printf "%s\x00icon\x1f%s\n" "$pic_name" "$cache_preview_image"
else
- printf "%s\x00icon\x1f%s\n" "$(echo "$pic_name" | cut -d. -f1)" "$pic_path"
+ printf "%s\x00icon\x1f%s\n" "$pic_name" "$pic_path"
fi
done
}
diff --git a/config/hypr/UserScripts/Weather.py b/config/hypr/UserScripts/Weather.py
index a6483777..6061f696 100755
--- a/config/hypr/UserScripts/Weather.py
+++ b/config/hypr/UserScripts/Weather.py
@@ -224,6 +224,12 @@ def read_api_cache() -> Optional[Dict[str, Any]]:
data = json.load(f)
# Use ensure_dict for safety
data_dict = ensure_dict(data)
+
+ # Invalidate cache if units mismatch
+ if data_dict.get("units") != UNITS:
+ log_debug(f"Cache units '{data_dict.get('units')}' mismatch current '{UNITS}'.")
+ return None
+
timestamp_val = data_dict.get("timestamp", 0)
timestamp = coerce_float(timestamp_val) or 0
if (time.time() - timestamp) <= CACHE_TTL_SECONDS:
@@ -238,6 +244,7 @@ def write_api_cache(payload: Dict[str, Any]) -> None:
try:
ensure_cache_dir()
payload["timestamp"] = time.time()
+ payload["units"] = UNITS
with API_CACHE_PATH.open("w", encoding="utf-8") as f:
json.dump(payload, f)
except Exception as e:
@@ -455,15 +462,15 @@ def fetch_aqi(lat: float, lon: float) -> Optional[Dict[str, Any]]:
def extract_place_parts_nominatim(data_dict: JSONDict) -> List[str]:
address = ensure_dict(data_dict.get("address"))
candidates = [data_dict.get("name"), address.get("city"), address.get("town"), address.get("village"), address.get("hamlet")]
- name = cast(Optional[str], next((c for c in candidates if c is not None), None))
+ name = cast(Optional[str], next((c for c in candidates if c is not None and c != ""), None))
admin1 = cast(Optional[str], address.get("state"))
country = cast(Optional[str], address.get("country"))
parts: List[str] = []
- if name is not None:
+ if name is not None and name != "":
parts.append(name)
- if admin1 is not None:
+ if admin1 is not None and admin1 != "":
parts.append(admin1)
- if country is not None:
+ if country is not None and country != "":
parts.append(country)
return parts
@@ -691,7 +698,7 @@ def build_aqi_info(aqi: Optional[Dict[str, Any]]) -> str:
def build_place_str(lat: float, lon: float, place: Optional[str]) -> str:
effective_place = MANUAL_PLACE or ENV_PLACE or place
if effective_place:
- return f"{effective_place} ({lat:.3f}, {lon:.3f})"
+ return effective_place
return f"{lat:.3f}, {lon:.3f}"
diff --git a/config/hypr/configs/ENVariables.conf b/config/hypr/configs/ENVariables.conf
new file mode 100644
index 00000000..d38c2d36
--- /dev/null
+++ b/config/hypr/configs/ENVariables.conf
@@ -0,0 +1,92 @@
+# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ #
+# Environment variables. See https://wiki.hyprland.org/Configuring/Environment-variables/
+
+# Set your defaults editor through ENV in ~/.config/hypr/UserConfigs/01-UserDefaults.conf
+
+# environment-variables
+# Current Version of JakooLit Dotfiles:
+env = DOTS_VERSION,2.3.18
+
+### Toolkit Backend Variables ###
+env = GDK_BACKEND,wayland,x11,*
+env = QT_QPA_PLATFORM,wayland;xcb
+env = CLUTTER_BACKEND,wayland
+
+#Run SDL2 applications on Wayland.
+#Remove or set to x11 if games that provide older versions of SDL cause compatibility issues
+#env = SDL_VIDEODRIVER,wayland
+
+### XDG Specifications ###
+env = XDG_CURRENT_DESKTOP,Hyprland
+env = XDG_SESSION_DESKTOP,Hyprland
+env = XDG_SESSION_TYPE,wayland
+
+### QT Variables ###
+env = QT_AUTO_SCREEN_SCALE_FACTOR,1
+env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
+env = QT_QPA_PLATFORMTHEME,qt5ct
+env = QT_QPA_PLATFORMTHEME,qt6ct
+
+### hyprland-qt-support ###
+env = QT_QUICK_CONTROLS_STYLE,org.hyprland.style
+
+### xwayland apps scale fix (useful if you are use monitor scaling) ###
+# Set same value if you use scaling in Monitors.conf
+# 1 is 100% 1.5 is 150%
+# see https://wiki.hyprland.org/Configuring/XWayland/
+env = GDK_SCALE,1
+env = QT_SCALE_FACTOR,1
+
+# Bibata-Modern-Ice-Cursor
+# NOTE! You must have the hyprcursor version to activate this.
+# https://wiki.hyprland.org/Hypr-Ecosystem/hyprcursor/
+#env = HYPRCURSOR_THEME,Bibata-Modern-Ice
+#env = HYPRCURSOR_SIZE,24
+
+### firefox ###
+env = MOZ_ENABLE_WAYLAND,1
+
+### electron >28 apps (may help) ###
+# https://www.electronjs.org/docs/latest/api/environment-variables
+env = ELECTRON_OZONE_PLATFORM_HINT,auto # auto selects Wayland if possible, X11 otherwise
+
+### NVIDIA ###
+# This is from Hyprland Wiki. Below will be activated nvidia gpu detected
+# See hyprland wiki https://wiki.hyprland.org/Nvidia/#environment-variables
+
+#env = LIBVA_DRIVER_NAME,nvidia
+#env = __GLX_VENDOR_LIBRARY_NAME,nvidia
+#env = NVD_BACKEND,direct
+#env = GSK_RENDERER,ngl
+
+### additional ENV's for nvidia. Caution, activate with care ###
+#env = GBM_BACKEND,nvidia-drm
+
+#env = __GL_GSYNC_ALLOWED,1 #adaptive Vsync
+#env = __NV_PRIME_RENDER_OFFLOAD,1
+#env = __VK_LAYER_NV_optimus,NVIDIA_only
+#env = WLR_DRM_NO_ATOMIC,1
+
+### FOR VM and POSSIBLY NVIDIA ###
+# LIBGL_ALWAYS_SOFTWARE software mesa rendering
+#env = LIBGL_ALWAYS_SOFTWARE,1 # Warning. May cause hyprland to crash
+#env = WLR_RENDERER_ALLOW_SOFTWARE,1
+
+### nvidia firefox ###
+# check this post https://github.com/elFarto/nvidia-vaapi-driver#configuration
+#env = MOZ_DISABLE_RDD_SANDBOX,1
+#env = EGL_PLATFORM,wayland
+
+### Aquamarine Environment Variables (Hyprland > 0.45) ###
+# https://wiki.hyprland.org/Configuring/Environment-variables/#aquamarine-environment-variables----ref-httpsgithubcomhyprwmaquamarineblobmaindocsenvmd---
+# env = AQ_TRACE,1 # Enables more verbose logging.
+# env = AQ_DRM_DEVICES,/dev/dri/card1:/dev/dri/card0 # Set an explicit list of DRM devices (GPUs) to use. It’s a colon-separated list of paths, with the first being the primary. E.g. /dev/dri/card1:/dev/dri/card0
+# env = AQ_MGPU_NO_EXPLICIT,1 # Disables explicit syncing on mgpu buffers
+# env = AQ_NO_MODIFIERS,1 # Disables modifiers for DRM buffers
+
+#### Hyprland Environment Variables ####
+# https://wiki.hyprland.org/Configuring/Environment-variables/#hyprland-environment-variables
+# env = HYPRLAND_TRACE,1 # Enables more verbose logging.
+# env = HYPRLAND_NO_RT,1 # Disables realtime priority setting by Hyprland.
+# env = HYPRLAND_NO_SD_NOTIFY,1 # If systemd, disables the 'sd_notify' calls.
+# env = HYPRLAND_NO_SD_VARS,1 # Disables management of variables in systemd and dbus activation environments.
diff --git a/config/hypr/configs/Keybinds.conf b/config/hypr/configs/Keybinds.conf
index fbe3bfe5..1ddbc81a 100644
--- a/config/hypr/configs/Keybinds.conf
+++ b/config/hypr/configs/Keybinds.conf
@@ -8,6 +8,72 @@ $scriptsDir = $HOME/.config/hypr/scripts
$UserConfigs = $HOME/.config/hypr/UserConfigs
$UserScripts = $HOME/.config/hypr/UserScripts
+# settings for User defaults apps - set your default terminal and file manager on this file
+source= $UserConfigs/01-UserDefaults.conf
+
+#### STANDAR ####
+# Common shortcuts
+#bindr = $mainMod, $mainMod_L, exec, pkill rofi || rofi -show drun -modi drun,filebrowser,run,window # Super Key to Launch rofi menu
+bindd = $mainMod, D, app launcher, exec, pkill rofi || true && rofi -show drun -modi drun,filebrowser,run,window
+bindd = $mainMod, B, open default browser, exec, xdg-open "https://"
+bindd = $mainMod, A, desktop overview, exec, $scriptsDir/OverviewToggle.sh # toggles quickshell or ags overview (tries QS first, falls back to AGS)
+#bindd = $mainMod, A, ags overview, exec, pkill rofi || true && ags -t 'overview' # desktop overview (if installed)
+#bindd = $mainMod, A, Quickshell overview, global, quickshell:overviewToggle # desktop overview (if installed)
+bindd = $mainMod, Return, Open terminal, exec, $term
+bindd = $mainMod, E, file manager, exec, $files
+
+# FEATURES / EXTRAS
+bindd = $mainMod, H, help / cheat sheet, exec, $scriptsDir/KeyHints.sh
+bindd = $mainMod ALT, R, refresh bar and menus, exec, $scriptsDir/Refresh.sh
+bindd = $mainMod ALT, E, emoji menu, exec, $scriptsDir/RofiEmoji.sh
+bindd = $mainMod, S, web search, exec, $scriptsDir/RofiSearch.sh
+bindd = $mainMod CTRL, S, window switcher, exec, rofi -show window
+bindd = $mainMod ALT, O, toggle blur, exec, $scriptsDir/ChangeBlur.sh
+bindd = $mainMod SHIFT, G, toggle game mode, exec, $scriptsDir/GameMode.sh
+bindd = $mainMod ALT, L, toggle master/dwindle layout, exec, $scriptsDir/ChangeLayout.sh
+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 SHIFT, F, fullscreen, fullscreen
+bindd = $mainMod CTRL, F, maximize window, fullscreen, 1
+bindd = $mainMod, SPACE, Float current window, togglefloating,
+bindd = $mainMod ALT, SPACE, Float all windows, exec, hyprctl dispatch workspaceopt allfloat
+bindd = $mainMod SHIFT, Return, DropDown terminal, exec, $scriptsDir/Dropterminal.sh $term
+
+# Desktop zooming or magnifier
+bindd = $mainMod ALT, mouse_down, zoom in, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | awk 'NR==1 {factor = $2; if (factor < 1) {factor = 1}; print factor * 2.0}')"
+bindd = $mainMod ALT, mouse_up, zoom out, exec, hyprctl keyword cursor:zoom_factor "$(hyprctl getoption cursor:zoom_factor | awk 'NR==1 {factor = $2; if (factor < 1) {factor = 1}; print factor / 2.0}')"
+
+# Waybar / Bar related
+bindd = $mainMod CTRL ALT, B, toggle waybar on/off, exec, pkill -SIGUSR1 waybar
+bindd = $mainMod CTRL, B, waybar styles menu, exec, $scriptsDir/WaybarStyles.sh
+bindd = $mainMod ALT, B, waybar layout menu, exec, $scriptsDir/WaybarLayout.sh
+
+# Night light toggle (Hyprsunset)
+bindd = $mainMod, N, toggle night light, exec, $scriptsDir/Hyprsunset.sh toggle
+
+# FEATURES / EXTRAS (UserScripts)
+bindd = $mainMod SHIFT, M, online music, exec, $UserScripts/RofiBeats.sh
+bindd = $mainMod, W, select wallpaper, exec, $UserScripts/WallpaperSelect.sh
+bindd = $mainMod SHIFT, W, wallpaper effects, exec, $UserScripts/WallpaperEffects.sh
+bindd = CTRL ALT, W, random wallpaper, exec, $UserScripts/WallpaperRandom.sh
+bindd = $mainMod CTRL, O, toggle active window opacity, exec, hyprctl setprop active opaque toggle
+bindd = $mainMod SHIFT, K, search keybinds, exec, $scriptsDir/KeyBinds.sh
+bindd = $mainMod SHIFT, A, animations menu, exec, $scriptsDir/Animations.sh
+bindd = $mainMod SHIFT, O, change oh-my-zsh theme, exec, $UserScripts/ZshChangeTheme.sh
+bindlnd = ALT_L, SHIFT_L, switch keyboard layout globally, exec, $scriptsDir/SwitchKeyboardLayout.sh
+bindlnd = SHIFT_L, ALT_L, switch keyboard layout per-window, exec, $scriptsDir/Tak0-Per-Window-Switch.sh
+bindd = $mainMod ALT, C, calculator, exec, $UserScripts/RofiCalc.sh
+
+# Move current workspaces to monitors (left right up or down)
+bindd = $mainMod CTRL, F9, move workspace to left monitor, movecurrentworkspacetomonitor, l
+bindd = $mainMod CTRL, F10, move workspace to right monitor, movecurrentworkspacetomonitor, r
+bindd = $mainMod CTRL, F11, move workspace to up monitor, movecurrentworkspacetomonitor, u
+bindd = $mainMod CTRL, F12, move workspace to down monitor, movecurrentworkspacetomonitor, d
+
+
+#### SYSTEM ####
bindd = CTRL ALT, Delete, exit Hyprland, exec, hyprctl dispatch exit 0
bindd = $mainMod, Q, close active window, killactive,
bindd = $mainMod SHIFT, Q, Terminate active process, exec, $scriptsDir/KillActiveProcess.sh
@@ -32,9 +98,6 @@ bindd = $mainMod, P, toggle pseudo (dwindle), pseudo,
# Works on either layout (Master or Dwindle)
bindd = $mainMod, M, set split ratio 0.3, exec, hyprctl dispatch splitratio 0.3
-# group
-bindd = $mainMod, G, toggle group, togglegroup
-bindd = $mainMod CTRL, tab, change active in group, changegroupactive
# Cycle windows; if floating bring to top
bindd = ALT, tab, cycle next window, cyclenext
@@ -84,6 +147,24 @@ bindd = $mainMod ALT, right, swap window right, swapwindow, r
bindd = $mainMod ALT, up, swap window up, swapwindow, u
bindd = $mainMod ALT, down, swap window down, swapwindow, d
+# group
+bindd = $mainMod, G, toggle group, togglegroup
+
+# Navigate within a group
+bindd = $mainMod, Tab, Change Group Forward, changegroupactive, f
+bindd = $mainMod CTRL, tab, change active in group, changegroupactive
+bindd = $mainMod SHIFT, Tab, Change Group Back, changegroupactive, b
+
+# Move window into/out of group
+bindd = $mainMod CTRL, K, Move left into group, moveintogroup, l # Move active window left into a group A
+bindd = $mainMod CTRL, L, Move Right into group, moveintogroup, r # Move active window right into a group
+bindd = $mainMod CTRL, H, Move active out of group, moveoutofgroup # Move active window out of group
+
+# Try to dynamically move in grouped window and when ungrouped
+# Not working for me DW 11/26/25 PR: https://github.com/JaKooLit/Hyprland-Dots/pull/872
+#bindd = $mainMod, right, focus right, exec, bash -c 'if hyprctl activewindow -j | jq -e "((.grouped | type) == \"boolean\") or (.address == (.grouped[-1] // empty))" >/dev/null 2>&1; then hyprctl dispatch movefocus r; else hyprctl dispatch changegroupactive f; fi'
+#bindd = $mainMod, left, focus left, exec, bash -c 'if hyprctl activewindow -j | jq -e "((.grouped | type) == \"boolean\") or (.address == (.grouped[0] // empty))" >/dev/null 2>&1; then hyprctl dispatch movefocus l; else hyprctl dispatch changegroupactive b; fi'
+
# Move focus with mainMod + arrow keys
bindd = $mainMod, left, focus left, movefocus, l
bindd = $mainMod, right, focus right, movefocus, r
diff --git a/config/hypr/configs/Laptops.conf b/config/hypr/configs/Laptops.conf
new file mode 100644
index 00000000..d6addb1d
--- /dev/null
+++ b/config/hypr/configs/Laptops.conf
@@ -0,0 +1,33 @@
+# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ #
+# See https://wiki.hyprland.org/Configuring/Keywords/ for more variable settings
+# These configs are mostly for laptops. This is addemdum to Keybinds.conf
+
+$mainMod = SUPER
+$scriptsDir = $HOME/.config/hypr/scripts
+$UserConfigs = $HOME/.config/hypr/UserConfigs
+
+# for disabling Touchpad. hyprctl devices to get device name.
+$Touchpad_Device=asue1209:00-04f3:319f-touchpad
+
+binde = , xf86KbdBrightnessDown, exec, $scriptsDir/BrightnessKbd.sh --dec # decrease keyboard brightness
+binde = , xf86KbdBrightnessUp, exec, $scriptsDir/BrightnessKbd.sh --inc # increase keyboard brightness
+bind = , xf86Launch1, exec, rog-control-center # ASUS Armory crate button
+bind = , xf86Launch3, exec, asusctl led-mode -n # FN+F4 Switch keyboard RGB profile
+bind = , xf86Launch4, exec, asusctl profile -n # FN+F5 change of fan profiles (Quite, Balance, Performance)
+binde = , xf86MonBrightnessDown, exec, $scriptsDir/Brightness.sh --dec # decrease monitor brightness
+binde = , xf86MonBrightnessUp, exec, $scriptsDir/Brightness.sh --inc # increase monitor brightness
+bind = , xf86TouchpadToggle, exec, $scriptsDir/TouchPad.sh # disable touchpad
+
+# Screenshot keybindings using F6 (no PrinSrc button)
+bind = $mainMod, F6, exec, $scriptsDir/ScreenShot.sh --now # screenshot
+bind = $mainMod SHIFT, F6, exec, $scriptsDir/ScreenShot.sh --area # screenshot (area)
+bind = $mainMod CTRL, F6, exec, $scriptsDir/ScreenShot.sh --in5 # # screenshot (5 secs delay)
+bind = $mainMod ALT, F6, exec, $scriptsDir/ScreenShot.sh --in10 # screenshot (10 secs delay)
+bind = ALT, F6, exec, $scriptsDir/ScreenShot.sh --active # screenshot (active window only)
+
+$TOUCHPAD_ENABLED = true
+device {
+ name = $Touchpad_Device
+ enabled = $TOUCHPAD_ENABLED
+}
+
diff --git a/config/hypr/configs/Startup_Apps.conf b/config/hypr/configs/Startup_Apps.conf
index c1670595..0cfb6427 100644
--- a/config/hypr/configs/Startup_Apps.conf
+++ b/config/hypr/configs/Startup_Apps.conf
@@ -9,19 +9,20 @@ $lock = $scriptsDir/LockScreen.sh
$SwwwRandom = $UserScripts/WallpaperAutoChange.sh
$livewallpaper=""
-# wallpaper stuff
+### wallpaper stuff ###
exec-once = swww-daemon --format xrgb
#exec-once = mpvpaper '*' -o "load-scripts=no no-audio --loop" $livewallpaper
# wallpaper random
#exec-once = $SwwwRandom $wallDIR # random wallpaper switcher every 30 minutes
-# Startup
+### Startup ###
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once = $scriptsDir/KeybindsLayoutInit.sh
-# Initialize Drop Down terminal - See Bug#810 https://github.com/JaKooLit/Hyprland-Dots/issues/810#issuecomment-3351947644
+# Drop Down terminal
+# See Bug#810 https://github.com/JaKooLit/Hyprland-Dots/issues/810#issuecomment-3351947644
exec-once = $HOME/.config/hypr/scripts/Dropterminal.sh kitty &
@@ -36,26 +37,27 @@ exec-once = swaync
#exec-once = blueman-applet
#exec-once = rog-control-center
exec-once = waybar
-exec-once = qs # quickshell AGS Desktop Overview alternative
+exec-once = qs -c overview # Quickshell Overview
-#clipboard manager
+# Clipboard manager
exec-once = wl-paste --type text --watch cliphist store
exec-once = wl-paste --type image --watch cliphist store
# Rainbow borders
exec-once = $UserScripts/RainbowBorders.sh
-# Starting hypridle to start hyprlock
+# hypridle for hyprlock
exec-once = hypridle
# Resume Hyprsunset if state is "on" from previous session
exec-once = $scriptsDir/Hyprsunset.sh init
# Here are list of features available but disabled by default
-# exec-once = swww-daemon --format xrgb && swww img $HOME/Pictures/wallpapers/mecha-nostalgia.png # persistent wallpaper
+# Persistent wallpaper
+# exec-once = swww-daemon --format xrgb && swww img $HOME/Pictures/wallpapers/mecha-nostalgia.png
-#gnome polkit for nixos
+# Gnome polkit for NixOS
#exec-once = $scriptsDir/Polkit-NixOS.sh
# xdg-desktop-portal-hyprland (should be auto starting. However, you can force to start)
-#exec-once = $scriptsDir/PortalHyprland.sh \ No newline at end of file
+#exec-once = $scriptsDir/PortalHyprland.sh
diff --git a/config/hypr/configs/SystemSettings.conf b/config/hypr/configs/SystemSettings.conf
new file mode 100644
index 00000000..44521156
--- /dev/null
+++ b/config/hypr/configs/SystemSettings.conf
@@ -0,0 +1,124 @@
+# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ #
+# Default settings
+# This is where you put your own settings as this will not be touched during update
+# if the upgrade.sh is used.
+
+# refer to Hyprland wiki for more info https://wiki.hyprland.org/Configuring/Variables/
+# NOTE: some settings are in ~/.config/hypr/UserConfigs/UserDecorAnimations.conf
+
+$scriptsDir = $HOME/.config/hypr/scripts
+
+dwindle {
+ pseudotile = true
+ preserve_split = true
+ #smart_split = true
+ special_scale_factor = 0.8
+}
+
+master {
+ new_status = master
+ new_on_top = 1
+ mfact = 0.5
+}
+
+general {
+ resize_on_border = true
+ layout = dwindle
+}
+
+input {
+ kb_layout = us
+ kb_variant =
+ kb_model =
+ kb_options =
+ kb_rules =
+ repeat_rate = 50
+ repeat_delay = 300
+
+ sensitivity = 0 #mouse sensitivity
+ #accel_profile = # flat or adaptive or blank or EMPTY means libinput’s default mode
+ numlock_by_default = true
+ left_handed = false
+ follow_mouse = 1
+ float_switch_override_focus = false
+
+ touchpad {
+ disable_while_typing = true
+ natural_scroll = true
+ clickfinger_behavior = false
+ middle_button_emulation = false
+ tap-to-click = true
+ drag_lock = false
+ }
+
+ # below for devices with touchdevice ie. touchscreen
+ touchdevice {
+ enabled = true
+ }
+
+ # below is for table see link above for proper variables
+ tablet {
+ transform = 0
+ left_handed = 0
+ }
+}
+
+
+gestures {
+ gesture = 3, horizontal, workspace
+ workspace_swipe_distance = 500
+ workspace_swipe_invert = true
+ workspace_swipe_min_speed_to_force = 30
+ workspace_swipe_cancel_ratio = 0.5
+ 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 = 4, 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 = 4, 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}')"
+ gesture = 3, up, dispatcher, exec, $scriptsDir/OverviewToggle.sh
+}
+
+misc {
+ disable_hyprland_logo = true
+ disable_splash_rendering = true
+ vfr = true
+ vrr = 2
+ mouse_move_enables_dpms = true
+ enable_swallow = off
+ swallow_regex = ^(kitty)$
+ focus_on_activate = false
+ initial_workspace_tracking = 0
+ middle_click_paste = false
+ enable_anr_dialog = true # Application not Responding (ANR)
+ anr_missed_pings = 15 # ANR Threshold default 1 is too low
+ allow_session_lock_restore = true # Prevent lockscreen crash when resume from suspend
+}
+
+#opengl {
+# nvidia_anti_flicker = true
+#}
+
+binds {
+ workspace_back_and_forth = true
+ allow_workspace_cycles = true
+ pass_mouse_when_bound = false
+}
+
+#Could help when scaling and not pixelating
+xwayland {
+ enabled = true
+ force_zero_scaling = true
+}
+
+render {
+ direct_scanout = 0
+}
+
+cursor {
+ sync_gsettings_theme = true
+ no_hardware_cursors = 2 # change to 1 if want to disable
+ enable_hyprcursor = true
+ warp_on_change_workspace = 2
+ no_warps = true
+}
diff --git a/config/hypr/configs/WindowRules-config-v3.conf b/config/hypr/configs/WindowRules-config-v3.conf
index b54c6a85..c4a8a624 100644
--- a/config/hypr/configs/WindowRules-config-v3.conf
+++ b/config/hypr/configs/WindowRules-config-v3.conf
@@ -1,53 +1,96 @@
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ #
-# Vendor defaults for window rules and layerrules
+# 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
+# NOTES: This is only for Hyprland > 0.52.1
+# note: This should NOT be implemented on Debian and Ubuntu
+# Vendor defaults for window rules and layerrules
# windowrule - tags - add apps under appropriate tag to use the same settings
-# browser tags
-
-# notif tags
+windowrule = match:class ^([Ff]irefox|org.mozilla.firefox|[Ff]irefox-esr|[Ff]irefox-bin)$, tag +browser
+windowrule = match:class ^([Gg]oogle-chrome(-beta|-dev|-unstable)?)$, tag +browser
+windowrule = match:class ^(chrome-.+-Default)$ # Chrome PWAs, 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 ^([Tt]horium-browser|[Cc]achy-browser)$, tag +browser
+windowrule = match:class ^(zen-alpha|zen)$, tag +browser
-# KooL settings tag
+windowrule = match:class ^(swaync-control-center|swaync-notification-window|swaync-client|class)$, tag +notif
-# terminal tags
+windowrule = match:title ^(KooL Quick Cheat Sheet)$, tag +KooL_Cheat
+windowrule = match:title ^(KooL Hyprland Settings)$, tag +KooL_Settings
+windowrule = match:class ^(nwg-displays|nwg-look)$, tag +KooL-Settings
-# email tags
+windowrule = match:class ^(Alacritty|kitty|kitty-dropterm)$, tag +terminal
-# project tags
+windowrule = match:class ^([Tt]hunderbird|org.gnome.Evolution)$, tag +email
+windowrule = match:class ^(eu.betterbird.Betterbird)$, tag +email
-# screenshare tags
+windowrule = match:class ^(codium|codium-url-handler|VSCodium)$, tag +projects
+windowrule = match:class ^(VSCode|code|code-url-handler)$, tag +projects
+windowrule = match:class ^(jetbrains-.+)$ # JetBrains IDEs, tag +projects
-# IM tags
+windowrule = match:class ^(com.obsproject.Studio)$, tag +screenshare
-# game 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 ^(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)$ # Element Matrix client, tag +im
-# gamestore tags
+windowrule = match:class ^(gamescope)$, tag +games
+windowrule = match:class ^(steam_app_\d+)$, tag +games
-# file-manager tags
+windowrule = match:class ^([Ss]team)$, tag +gamestore
+windowrule = match:title ^([Ll]utris)$, tag +gamestore
+windowrule = match:class ^(com.heroicgameslauncher.hgl)$, tag +gamestore
-# wallpaper tags
+windowrule = match:class ^([Tt]hunar|org.gnome.Nautilus|[Pp]cmanfm-qt)$, tag +file-manager
+windowrule = match:class ^(app.drey.Warp)$, tag +file-manager
-# multimedia tags
+windowrule = match:class ^([Ww]aytrogen)$, tag +wallpaper
+windowrule = match:class ^([Aa]udacious)$, tag +multimedia
+windowrule = match:class ^([Mm]pv|vlc)$, tag +multimedia_video
-# multimedia-video tags
+windowrule = match:title ^(ROG Control)$, tag +settings
+windowrule = match:class ^(wihotspot(-gui)?)$ # wifi hotspot, tag +settings
+windowrule = match:class ^([Bb]aobab|org.gnome.[Bb]aobab)$ # Disk usage analyzer, tag +settings
+windowrule = match:class ^(gnome-disks|wihotspot(-gui)?)$, tag +settings
+windowrule = match:title (Kvantum Manager), tag +settings
+windowrule = match:class ^(file-roller|org.gnome.FileRoller)$ # archive manager, tag +settings
+windowrule = match:class ^(nm-applet|nm-connection-editor|blueman-manager)$, tag +settings
+windowrule = match:class ^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$, tag +settings
+windowrule = match:class ^(qt5ct|qt6ct|[Yy]ad)$, tag +settings
+windowrule = match:class (xdg-desktop-portal-gtk), tag +settings
+windowrule = match:class ^(org.kde.polkit-kde-authentication-agent-1)$, tag +settings
+windowrule = match:class ^([Rr]ofi)$, tag +settings
-# settings tags
+windowrule = match:class ^(gnome-system-monitor|org.gnome.SystemMonitor|io.missioncenter.MissionCenter)$ # system monitor, tag +viewer
+windowrule = match:class ^(evince)$ # document viewer, tag +viewer
+windowrule = match:class ^(eog|org.gnome.Loupe)$ # image viewer, tag +viewer
-# viewer tags
+windowrule = match:tag multimedia_video*, noblur
+windowrule = match:tag multimedia_video*, opacity 1.0
-# 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 = match:tag KooL_Cheat*, center
+windowrule = match:class ([Tt]hunar) title negative:(.*[Tt]hunar.*), center
+windowrule = match:title ^(ROG Control)$, center
+windowrule = match:tag KooL-Settings*, center
+windowrule = match:title ^(Keybindings)$, center
+windowrule = match:class ^(pavucontrol|org.pulseaudio.pavucontrol|com.saivert.pwvucontrol)$, center
+windowrule = match:class ^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$, center
+windowrule = match:class ^([Ff]erdium)$, center
+windowrule = match:title ^(Picture-in-Picture)$, move 72% 7%
+#windowrule = move 72% 7%,title:^(Firefox)$
# windowrule to avoid idle for fullscreen apps
#windowrule = idleinhibit fullscreen, class:^(*)$
#windowrule = idleinhibit fullscreen, title:^(*)$
+windowrule = match:fullscreen 1, idleinhibit fullscreen
# windowrule move to workspace
#windowrule = workspace 1, tag:email*
@@ -63,628 +106,99 @@
#windowrule = workspace 6 silent, class:^(virt-manager)$
#windowrule = workspace 6 silent, class:^(.virt-manager-wrapped)$
#windowrule = workspace 9 silent, tag:multimedia*
-#
+
# FLOAT
+windowrule = match:tag KooL_Cheat*, float
+windowrule = match:tag wallpaper*, float
+windowrule = match:tag settings*, float
+windowrule = match:tag viewer*, float
+windowrule = match:tag KooL-Settings*, float
+windowrule = match:class ([Zz]oom|onedriver|onedriver-launcher)$, float
+windowrule = match:class (org.gnome.Calculator) title (Calculator), float
+windowrule = match:class ^(mpv|com.github.rafostar.Clapper)$, float
+windowrule = match:class ^([Qq]alculate-gtk)$, float
#windowrule = float, class:^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$
+windowrule = match:class ^([Ff]erdium)$, float
+windowrule = match:title ^(Picture-in-Picture)$, float
#windowrule = float, title:^(Firefox)$
# windowrule - ######### float popups and dialogue #######
-
-
-
-
+windowrule = match:title ^(Authentication Required)$, float
+windowrule = match:title ^(Authentication Required)$, center
+windowrule = match:class (codium|codium-url-handler|VSCodium) title negative:(.*codium.*|.*VSCodium.*), float
+windowrule = match:class ^(com.heroicgameslauncher.hgl)$ title negative:(Heroic Games Launcher), float
+windowrule = match:class ^([Ss]team)$ title negative:^([Ss]team)$, float
+windowrule = match:class ([Tt]hunar) title negative:(.*[Tt]hunar.*), float
+windowrule = match:title ^(Add Folder to Workspace)$, float
+windowrule = match:title ^(Add Folder to Workspace)$, size 70% 60%
+windowrule = match:title ^(Add Folder to Workspace)$, center
+windowrule = match:title ^(Save As)$, float
+windowrule = match:title ^(Save As)$, size 70% 60%
+windowrule = match:title ^(Save As)$, center
+windowrule = match:initialTitle (Open Files), float
+windowrule = match:initialTitle (Open Files), size 70% 60%
+windowrule = match:title ^(SDDM Background)$ #KooL's Dots YAD for setting SDDM background, float
+windowrule = match:title ^(SDDM Background)$ #KooL's Dots YAD for setting SDDM background, center
+windowrule = match:title ^(SDDM Background)$ #KooL's Dots YAD for setting SDDM background, size 16% 12%
# END of float popups and dialogue #######
# OPACITY
+windowrule = match:tag browser*, opacity 0.99 0.8
+windowrule = match:tag projects*, opacity 0.9 0.8
+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)$ # gnome-keyring gui, opacity 0.9 0.8
+windowrule = match:title ^(Picture-in-Picture)$, opacity 0.95 0.75
# SIZE
+windowrule = match:tag KooL_Cheat*, size 65% 90%
+windowrule = match:tag wallpaper*, size 70% 70%
+windowrule = match:tag settings*, size 70% 70%
+windowrule = match:class ^([Ww]hatsapp-for-linux|ZapZap|com.rtosta.zapzap)$, size 60% 70%
+windowrule = match:class ^([Ff]erdium)$, size 60% 70%
-#windowrule = size 25% 25%, title:^(Picture-in-Picture)$
-#windowrule = size 25% 25%, title:^(Firefox)$
+#windowrule = size 25% 25%, title:^(Picture-in-Picture)$
+#windowrule = size 25% 25%, title:^(Firefox)$
# PINNING
-#windowrule = pin,title:^(Firefox)$
+windowrule = match:title ^(Picture-in-Picture)$, pin
+#windowrule = pin,title:^(Firefox)$
# windowrule - extras
+windowrule = match:title ^(Picture-in-Picture)$, keepaspectratio
# BLUR & FULLSCREEN
+windowrule = match:tag games*, noblur
+windowrule = match:tag games*, 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
+#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-*), noinitialfocus
+windowrule = match:title ^(wind.*)$, noinitialfocus
#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 = blur, rofi
+layerrule = ignorezero, rofi
+layerrule = blur, notifications
+layerrule = ignorezero, notifications
+layerrule = blur, quickshell:overview
+layerrule = ignorezero, quickshell:overview
+layerrule = ignorealpha 0.5, quickshell:overview
#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/configs/WindowRules.conf b/config/hypr/configs/WindowRules.conf
index f02c5d29..d1fb9315 100644
--- a/config/hypr/configs/WindowRules.conf
+++ b/config/hypr/configs/WindowRules.conf
@@ -34,7 +34,7 @@ windowrule = tag +email, class:^(eu.betterbird.Betterbird)$
# project tags
windowrule = tag +projects, class:^(codium|codium-url-handler|VSCodium)$
-windowrule = tag +projects, class:^(VSCode|code-url-handler)$
+windowrule = tag +projects, class:^(VSCode|code|code-url-handler)$
windowrule = tag +projects, class:^(jetbrains-.+)$ # JetBrains IDEs
# screenshare tags
@@ -180,7 +180,6 @@ windowrule = opacity 0.8 0.7, class:^(gedit|org.gnome.TextEditor|mousepad)$
windowrule = opacity 0.9 0.8, class:^(deluge)$
windowrule = opacity 0.9 0.8, class:^(seahorse)$ # gnome-keyring gui
windowrule = opacity 0.95 0.75, title:^(Picture-in-Picture)$
-windowrule = opacity 0.9,class:^(code)$
# SIZE
windowrule = size 65% 90%, tag:KooL_Cheat*
@@ -208,9 +207,6 @@ windowrule = fullscreen, tag:games*
windowrule = noinitialfocus, class:^(jetbrains-*)
windowrule = noinitialfocus, title:^(wind.*)$
-#This will gonna make the VS Code bluer like other apps
-windowrule = opacity 0.8,class:^(code)$
-
#windowrule = bordercolor rgb(EE4B55) rgb(880808), fullscreen:1
#windowrule = bordercolor rgb(282737) rgb(1E1D2D), floating:1
#windowrule = opacity 0.8 0.8, pinned:1
diff --git a/config/hypr/hyprland.conf b/config/hypr/hyprland.conf
index f509a76d..7119b3df 100644
--- a/config/hypr/hyprland.conf
+++ b/config/hypr/hyprland.conf
@@ -1,5 +1,5 @@
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ #
-# always refer to Hyprland wiki
+# Always refer to Hyprland wiki
# https://wiki.hyprland.org/
# Initial boot script enable to apply initial wallpapers, theming, new settings etc.
@@ -7,25 +7,29 @@
# as long as the referrence file is present, this initial-boot.sh will not execute
exec-once = $HOME/.config/hypr/initial-boot.sh
-# Sourcing external config files
+### Sourcing external config files ###
$configs = $HOME/.config/hypr/configs # Default Configs directory path
-# ## This is where you want to start tinkering
$UserConfigs = $HOME/.config/hypr/UserConfigs # User Configs directory path
source=$configs/Keybinds.conf # Pre-configured keybinds
-# Load vendor defaults, then user additions/overrides
-source= $configs/Startup_Apps.conf
+# Load defaults, then user additions/overrides
+source= $configs/Startup_Apps.conf
source= $UserConfigs/Startup_Apps.conf
-source= $UserConfigs/ENVariables.conf # Environment variables to load
+source= $configs/ENVariables.conf # Environment variables (defaults)
+source= $UserConfigs/ENVariables.conf # Environment variables (user)
-source= $UserConfigs/Laptops.conf # For laptop related
-source= $UserConfigs/LaptopDisplay.conf # Laptop display related. You need to read the comment on this file
+# For laptop related
+source= $configs/Laptops.conf
+source= $UserConfigs/Laptops.conf
+source= $UserConfigs/LaptopDisplay.conf
-# Load vendor defaults, then user additions
-source= $configs/WindowRules.conf # all about Hyprland Window Rules and Layer Rules (defaults)
-source= $UserConfigs/WindowRules.conf # Window Rules and Layer Rules user configs
+# Load defaults, then user additions
+source= $configs/WindowRules.conf # Window Rules and Layer Rules (defaults)
+source= $UserConfigs/WindowRules.conf # Window Rules and Layer Rules (user)
+
+source= $configs/SystemSettings.conf # Default config for hypr
source= $UserConfigs/UserDecorations.conf # Decorations config file
source= $UserConfigs/UserAnimations.conf # Animation config file
diff --git a/config/hypr/scripts/KeyBinds.sh b/config/hypr/scripts/KeyBinds.sh
index 46953cc5..4158b762 100755
--- a/config/hypr/scripts/KeyBinds.sh
+++ b/config/hypr/scripts/KeyBinds.sh
@@ -21,9 +21,87 @@ msg='☣️ NOTE ☣️: Clicking with Mouse or Pressing ENTER will have NO func
files=("$keybinds_conf" "$user_keybinds_conf")
[[ -f "$laptop_conf" ]] && files+=("$laptop_conf")
-raw_keybinds=$(cat "${files[@]}" 2>/dev/null \
- | grep -E '^[[:space:]]*bind' \
- | sed -E 's/[[:space:]]+#.*$//')
+# Parse binds/unbinds from files, detect overrides, and keep unique effective binds
+declare -A binding_map # combo -> bind line (effective)
+declare -A source_map # combo -> source file
+declare -A user_bind_map # combo -> user bind line
+declare -A unbound_user # combo -> 1 if explicitly unbound in user file
+declare -A seen_any_bind # combo -> 1 if any bind seen (for iteration)
+declare -A default_seen # combo -> 1 if default bind exists
+declare -a missing_unbind_suggestions_arr
+
+normalize_combo() { echo "$1" | sed -E 's/[[:space:]]//g'; }
+
+extract_combo() {
+ # arg: a bind/unbind line; returns "mods,key" via echo
+ local s="$1"
+ s="$(echo "$s" | sed -E 's/[[:space:]]+#.*$//')"
+ if [[ "$s" =~ = ]]; then
+ local rhs="${s#*=}"
+ local mods="$(echo "$rhs" | awk -F',' '{gsub(/^[ \t]+|[ \t]+$/,"",$1); print $1}')"
+ local key="$(echo "$rhs" | awk -F',' '{gsub(/^[ \t]+|[ \t]+$/,"",$2); print $2}')"
+ echo "${mods},${key}"
+ fi
+}
+
+for file in "${files[@]}"; do
+ [[ ! -f "$file" ]] && continue
+ while IFS= read -r line; do
+ [[ -z "$line" || "$line" =~ ^[[:space:]]*# ]] && continue
+
+ if [[ "$line" =~ ^[[:space:]]*bind[a-z]*[[:space:]]*= ]]; then
+ combo_raw="$(extract_combo "$line")"
+ [[ -z "$combo_raw" ]] && continue
+ combo="$(normalize_combo "$combo_raw")"
+ seen_any_bind["$combo"]=1
+
+ if [[ "$file" != "$user_keybinds_conf" ]]; then
+ default_seen["$combo"]=1
+ fi
+
+ # prefer user bind, else first seen
+ if [[ -z "${source_map[$combo]}" ]]; then
+ binding_map["$combo"]="$line"
+ source_map["$combo"]="$file"
+ fi
+ if [[ "$file" == "$user_keybinds_conf" ]]; then
+ user_bind_map["$combo"]="$line"
+ binding_map["$combo"]="$line"
+ source_map["$combo"]="$file"
+ fi
+
+ elif [[ "$line" =~ ^[[:space:]]*unbind[[:space:]]*= ]]; then
+ combo_raw="$(extract_combo "$line")"
+ [[ -z "$combo_raw" ]] && continue
+ combo="$(normalize_combo "$combo_raw")"
+ if [[ "$file" == "$user_keybinds_conf" ]]; then
+ unbound_user["$combo"]=1
+ fi
+ fi
+ done < "$file"
+done
+
+# Build raw_keybinds for display and collect missing unbind suggestions
+raw_keybinds=""
+for combo in "${!seen_any_bind[@]}"; do
+ eff_line="${binding_map[$combo]}"
+ src="${source_map[$combo]}"
+ [[ -z "$eff_line" ]] && continue
+ raw_keybinds+="$eff_line"$'\n'
+
+ # If user overrides a default but didn't unbind in user file, suggest unbind
+ if [[ "$src" == "$user_keybinds_conf" && -n "${default_seen[$combo]}" && -z "${unbound_user[$combo]}" ]]; then
+ suggest="$(echo "$eff_line" | sed -E 's/^[[:space:]]*bind[a-z]*/unbind/')"
+ missing_unbind_suggestions_arr+=("$suggest")
+ fi
+done
+
+# If there are missing unbinds, write suggestions to a temp file and note in message
+if (( ${#missing_unbind_suggestions_arr[@]} > 0 )); then
+ suggestions_file="$(mktemp -t hypr-unbind-suggestions.XXXX.conf)"
+ printf '%s\n' "${missing_unbind_suggestions_arr[@]}" > "$suggestions_file"
+ msg="$msg | Overrides missing unbind: ${#missing_unbind_suggestions_arr[@]} (suggestions: $suggestions_file)"
+fi
# check for any keybinds to display
if [[ -z "$raw_keybinds" ]]; then
@@ -31,7 +109,7 @@ if [[ -z "$raw_keybinds" ]]; then
exit 1
fi
-# transform into a readable list: MODS+KEY β€” DESCRIPTION β€” DISPATCHER [PARAMS]
+# transform into a readable list: MODS+KEY β€” DESCRIPTION (for bindd) or DISPATCHER [PARAMS] (for bind)
display_keybinds=$(echo "$raw_keybinds" | awk -F'=' '
function trim(s){ gsub(/^[ \t]+|[ \t]+$/,"",s); return s }
/^[[:space:]]*bind/ {
@@ -60,13 +138,8 @@ display_keybinds=$(echo "$raw_keybinds" | awk -F'=' '
combo = (mods && key) ? mods "+" key : (key?key:mods);
- if (desc != "") {
- if (dispatcher != "" && params != "")
- print combo, " β€” ", desc, " β€” ", dispatcher, " ", params;
- else if (dispatcher != "")
- print combo, " β€” ", desc, " β€” ", dispatcher;
- else
- print combo, " β€” ", desc;
+ if (hasdesc && desc != "") {
+ print combo, " β€” ", desc;
} else {
if (dispatcher != "" && params != "")
print combo, " β€” ", dispatcher, " ", params;
diff --git a/config/hypr/scripts/Kool_Quick_Settings.sh b/config/hypr/scripts/Kool_Quick_Settings.sh
index 16742492..8ab71ba2 100755
--- a/config/hypr/scripts/Kool_Quick_Settings.sh
+++ b/config/hypr/scripts/Kool_Quick_Settings.sh
@@ -1,6 +1,7 @@
#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# Rofi menu for KooL Hyprland Quick Settings (SUPER SHIFT E)
+# Updated for UserConfigs/configs separation
# Modify this config file for default terminal and EDITOR
config_file="$HOME/.config/hypr/UserConfigs/01-UserDefaults.conf"
@@ -19,19 +20,30 @@ iDIR="$HOME/.config/swaync/images"
scriptsDir="$HOME/.config/hypr/scripts"
UserScripts="$HOME/.config/hypr/UserScripts"
+# Function to show info notification
+show_info() {
+ notify-send -i "$iDIR/info.png" "Info" "$1"
+}
+
# Function to display the menu options without numbers
menu() {
cat <<EOF
-view/edit User Defaults
-view/edit ENV variables
-view/edit Window Rules
-view/edit User Keybinds
-view/edit User Settings
-view/edit Startup Apps
-view/edit Decorations
-view/edit Animations
-view/edit Laptop Keybinds
-view/edit Default Keybinds
+--- USER CUSTOMIZATIONS ---
+Edit User Defaults
+Edit User Keybinds
+Edit User ENV variables
+Edit User Startup Apps (overlay)
+Edit User Window Rules (overlay)
+Edit User Settings
+Edit User Decorations
+Edit User Animations
+Edit User Laptop Settings
+--- SYSTEM DEFAULTS ---
+Edit System Default Keybinds
+Edit System Default Startup Apps
+Edit System Default Window Rules
+Edit System Default Settings
+--- UTILITIES ---
Choose Kitty Terminal Theme
Configure Monitors (nwg-displays)
Configure Workspace Rules (nwg-displays)
@@ -53,16 +65,19 @@ main() {
# Map choices to corresponding files
case "$choice" in
- "view/edit User Defaults") file="$UserConfigs/01-UserDefaults.conf" ;;
- "view/edit ENV variables") file="$UserConfigs/ENVariables.conf" ;;
- "view/edit Window Rules") file="$configs/WindowRules.conf" ;;
- "view/edit User Keybinds") file="$UserConfigs/UserKeybinds.conf" ;;
- "view/edit User Settings") file="$UserConfigs/UserSettings.conf" ;;
- "view/edit Startup Apps") file="$configs/Startup_Apps.conf" ;;
- "view/edit Decorations") file="$UserConfigs/UserDecorations.conf" ;;
- "view/edit Animations") file="$UserConfigs/UserAnimations.conf" ;;
- "view/edit Laptop Keybinds") file="$UserConfigs/Laptops.conf" ;;
- "view/edit Default Keybinds") file="$configs/Keybinds.conf" ;;
+ "Edit User Defaults") file="$UserConfigs/01-UserDefaults.conf" ;;
+ "Edit User ENV variables") file="$UserConfigs/ENVariables.conf" ;;
+ "Edit User Keybinds") file="$UserConfigs/UserKeybinds.conf" ;;
+ "Edit User Startup Apps (overlay)") file="$UserConfigs/Startup_Apps.conf" ;;
+ "Edit User Window Rules (overlay)") file="$UserConfigs/WindowRules.conf" ;;
+ "Edit User Settings") file="$configs/SystemSettings.conf"; show_info "Editing default settings. Copy to UserConfigs/UserSettings.conf to override." ;;
+ "Edit User Decorations") file="$UserConfigs/UserDecorations.conf" ;;
+ "Edit User Animations") file="$UserConfigs/UserAnimations.conf" ;;
+ "Edit User Laptop Settings") file="$UserConfigs/Laptops.conf" ;;
+ "Edit System Default Keybinds") file="$configs/Keybinds.conf" ;;
+ "Edit System Default Startup Apps") file="$configs/Startup_Apps.conf" ;;
+ "Edit System Default Window Rules") file="$configs/WindowRules.conf" ;;
+ "Edit System Default Settings") file="$configs/SystemSettings.conf" ;;
"Choose Kitty Terminal Theme") $scriptsDir/Kitty_themes.sh ;;
"Configure Monitors (nwg-displays)")
if ! command -v nwg-displays &>/dev/null; then
@@ -114,4 +129,4 @@ if pidof rofi > /dev/null; then
pkill rofi
fi
-main \ No newline at end of file
+main
diff --git a/config/hypr/scripts/OverviewToggle.sh b/config/hypr/scripts/OverviewToggle.sh
index 2737234c..8d4b285f 100755
--- a/config/hypr/scripts/OverviewToggle.sh
+++ b/config/hypr/scripts/OverviewToggle.sh
@@ -4,20 +4,18 @@
set -euo pipefail
-# 1) Try Quickshell via Hyprland global dispatch (works if QS is running and listening)
-# 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.
+# 1) Try Quickshell via IPC (works if QS is running and listening)
if pgrep -x quickshell >/dev/null 2>&1; then
- if hyprctl dispatch global quickshell:overviewToggle >/dev/null 2>&1; then
+ if qs ipc -c overview call overview toggle >/dev/null 2>&1; then
exit 0
fi
fi
# 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 &
+ qs -c overview >/dev/null 2>&1 &
sleep 0.6
- if hyprctl dispatch global quickshell:overviewToggle >/dev/null 2>&1; then
+ if qs ipc -c overview call overview toggle >/dev/null 2>&1; then
exit 0
fi
fi
diff --git a/config/hypr/scripts/UserConfigsSwitcher.sh b/config/hypr/scripts/UserConfigsSwitcher.sh
new file mode 100755
index 00000000..ad1d4e63
--- /dev/null
+++ b/config/hypr/scripts/UserConfigsSwitcher.sh
@@ -0,0 +1,56 @@
+#!/usr/bin/env bash
+# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
+# Script to manage UserConfigs and UserConfigsBak
+
+HYPR_CONFIG_DIR="$HOME/.config/hypr"
+USER_CONFIGS="$HYPR_CONFIG_DIR/UserConfigs"
+USER_CONFIGS_BAK="$HYPR_CONFIG_DIR/UserConfigsBak"
+
+if [ -d "$USER_CONFIGS" ] && [ ! -d "$USER_CONFIGS_BAK" ]; then
+ echo "Moving UserConfigs to UserConfigsBak..."
+ mv "$USER_CONFIGS" "$USER_CONFIGS_BAK"
+ echo "Done. Your UserConfigs are now in UserConfigsBak."
+elif [ ! -d "$USER_CONFIGS" ] && [ -d "$USER_CONFIGS_BAK" ]; then
+ echo "Moving UserConfigsBak to UserConfigs..."
+ mv "$USER_CONFIGS_BAK" "$USER_CONFIGS"
+ echo "Done. Your backup has been restored to UserConfigs."
+elif [ -d "$USER_CONFIGS" ] && [ -d "$USER_CONFIGS_BAK" ]; then
+ echo "Both UserConfigs and UserConfigsBak exist."
+ echo "Please choose what to do:"
+ PS3="Enter your choice: "
+ select option in "Backup current UserConfigs (move to UserConfigsBak)" "Restore backup (move UserConfigsBak to UserConfigs)" "Swap them" "Do nothing"; do
+ case $REPLY in
+ 1)
+ echo "Backing up UserConfigs..."
+ rm -rf "$USER_CONFIGS_BAK"
+ mv "$USER_CONFIGS" "$USER_CONFIGS_BAK"
+ echo "Done. UserConfigs moved to UserConfigsBak."
+ break
+ ;;
+ 2)
+ echo "Restoring backup..."
+ rm -rf "$USER_CONFIGS"
+ mv "$USER_CONFIGS_BAK" "$USER_CONFIGS"
+ echo "Done. UserConfigsBak moved to UserConfigs."
+ break
+ ;;
+ 3)
+ echo "Swapping..."
+ mv "$USER_CONFIGS" "$HYPR_CONFIG_DIR/UserConfigs.tmp"
+ mv "$USER_CONFIGS_BAK" "$USER_CONFIGS"
+ mv "$HYPR_CONFIG_DIR/UserConfigs.tmp" "$USER_CONFIGS_BAK"
+ echo "Done. UserConfigs and UserConfigsBak have been swapped."
+ break
+ ;;
+ 4)
+ echo "No changes made."
+ break
+ ;;
+ *)
+ echo "Invalid option. Please try again."
+ ;;
+ esac
+ done
+else
+ echo "Neither UserConfigs nor UserConfigsBak directory found. Nothing to do."
+fi
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage