aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDon Williams <don.e.williams@gmail.com>2025-10-28 17:30:59 -0400
committerDon Williams <don.e.williams@gmail.com>2025-10-28 17:30:59 -0400
commit758b466c5f2030188d46511b20ad39c6d8b46a0d (patch)
treef0c6189bcf1c56f4871756b22f34db8b7f2fbc28
parentdad4a040a85a4b2f5a47fb3f623c6818b924ff79 (diff)
Changed /usr/bin/bash to /usr/bin/env bash
On branch development Your branch is up to date with 'origin/development'. Changes to be committed: modified: Distro-Hyprland.sh modified: config/hypr/UserScripts/RainbowBorders.sh modified: config/hypr/UserScripts/RofiBeats.sh modified: config/hypr/UserScripts/RofiCalc.sh modified: config/hypr/UserScripts/Tak0-Autodispatch.sh modified: config/hypr/UserScripts/WallpaperAutoChange.sh modified: config/hypr/UserScripts/WallpaperEffects.sh modified: config/hypr/UserScripts/WallpaperRandom.sh modified: config/hypr/UserScripts/WallpaperSelect.sh modified: config/hypr/UserScripts/Weather.sh modified: config/hypr/UserScripts/WeatherWrap.sh modified: config/hypr/UserScripts/ZshChangeTheme.sh new file: config/hypr/configs/Startup_Apps.conf new file: config/hypr/configs/WindowRules.conf modified: config/hypr/hyprland.conf modified: config/hypr/initial-boot.sh modified: config/hypr/scripts/AirplaneMode.sh modified: config/hypr/scripts/Animations.sh modified: config/hypr/scripts/Battery.sh modified: config/hypr/scripts/Brightness.sh modified: config/hypr/scripts/BrightnessKbd.sh modified: config/hypr/scripts/ChangeBlur.sh modified: config/hypr/scripts/ChangeLayout.sh modified: config/hypr/scripts/ClipManager.sh new file: config/hypr/scripts/ComposeHyprConfigs.sh modified: config/hypr/scripts/DarkLight.sh modified: config/hypr/scripts/Distro_update.sh modified: config/hypr/scripts/Dropterminal.sh modified: config/hypr/scripts/GameMode.sh modified: config/hypr/scripts/Hypridle.sh modified: config/hypr/scripts/KeyBinds.sh modified: config/hypr/scripts/KeyHints.sh modified: config/hypr/scripts/KillActiveProcess.sh modified: config/hypr/scripts/Kitty_themes.sh modified: config/hypr/scripts/KooLsDotsUpdate.sh modified: config/hypr/scripts/Kool_Quick_Settings.sh modified: config/hypr/scripts/LockScreen.sh modified: config/hypr/scripts/MediaCtrl.sh modified: config/hypr/scripts/MonitorProfiles.sh modified: config/hypr/scripts/Polkit-NixOS.sh modified: config/hypr/scripts/Polkit.sh modified: config/hypr/scripts/PortalHyprland.sh modified: config/hypr/scripts/Refresh.sh modified: config/hypr/scripts/RefreshNoWaybar.sh modified: config/hypr/scripts/RofiEmoji.sh modified: config/hypr/scripts/RofiSearch.sh modified: config/hypr/scripts/RofiThemeSelector-modified.sh modified: config/hypr/scripts/RofiThemeSelector.sh modified: config/hypr/scripts/ScreenShot.sh modified: config/hypr/scripts/Sounds.sh modified: config/hypr/scripts/SwitchKeyboardLayout.sh modified: config/hypr/scripts/Tak0-Autodispatch.sh modified: config/hypr/scripts/TouchPad.sh modified: config/hypr/scripts/Volume.sh modified: config/hypr/scripts/WallustSwww.sh modified: config/hypr/scripts/WaybarLayout.sh modified: config/hypr/scripts/WaybarScripts.sh modified: config/hypr/scripts/WaybarStyles.sh modified: config/hypr/scripts/Wlogout.sh modified: config/hypr/scripts/sddm_wallpaper.sh modified: copy.sh modified: release.sh modified: upgrade.sh
-rwxr-xr-xDistro-Hyprland.sh2
-rwxr-xr-xconfig/hypr/UserScripts/RainbowBorders.sh2
-rwxr-xr-xconfig/hypr/UserScripts/RofiBeats.sh2
-rwxr-xr-xconfig/hypr/UserScripts/RofiCalc.sh2
-rwxr-xr-xconfig/hypr/UserScripts/Tak0-Autodispatch.sh2
-rwxr-xr-xconfig/hypr/UserScripts/WallpaperAutoChange.sh2
-rwxr-xr-xconfig/hypr/UserScripts/WallpaperEffects.sh2
-rwxr-xr-xconfig/hypr/UserScripts/WallpaperRandom.sh2
-rwxr-xr-xconfig/hypr/UserScripts/WallpaperSelect.sh2
-rwxr-xr-xconfig/hypr/UserScripts/Weather.sh2
-rwxr-xr-xconfig/hypr/UserScripts/WeatherWrap.sh2
-rwxr-xr-xconfig/hypr/UserScripts/ZshChangeTheme.sh2
-rw-r--r--config/hypr/configs/Startup_Apps.conf58
-rw-r--r--config/hypr/configs/WindowRules.conf235
-rw-r--r--config/hypr/hyprland.conf4
-rwxr-xr-xconfig/hypr/initial-boot.sh2
-rwxr-xr-xconfig/hypr/scripts/AirplaneMode.sh2
-rwxr-xr-xconfig/hypr/scripts/Animations.sh2
-rw-r--r--config/hypr/scripts/Battery.sh2
-rwxr-xr-xconfig/hypr/scripts/Brightness.sh2
-rwxr-xr-xconfig/hypr/scripts/BrightnessKbd.sh2
-rwxr-xr-xconfig/hypr/scripts/ChangeBlur.sh2
-rwxr-xr-xconfig/hypr/scripts/ChangeLayout.sh2
-rwxr-xr-xconfig/hypr/scripts/ClipManager.sh2
-rw-r--r--config/hypr/scripts/ComposeHyprConfigs.sh109
-rwxr-xr-xconfig/hypr/scripts/DarkLight.sh2
-rwxr-xr-xconfig/hypr/scripts/Distro_update.sh2
-rwxr-xr-xconfig/hypr/scripts/Dropterminal.sh2
-rwxr-xr-xconfig/hypr/scripts/GameMode.sh2
-rwxr-xr-xconfig/hypr/scripts/Hypridle.sh2
-rwxr-xr-xconfig/hypr/scripts/KeyBinds.sh2
-rwxr-xr-xconfig/hypr/scripts/KeyHints.sh2
-rwxr-xr-xconfig/hypr/scripts/KillActiveProcess.sh2
-rwxr-xr-xconfig/hypr/scripts/Kitty_themes.sh2
-rwxr-xr-xconfig/hypr/scripts/KooLsDotsUpdate.sh2
-rwxr-xr-xconfig/hypr/scripts/Kool_Quick_Settings.sh2
-rwxr-xr-xconfig/hypr/scripts/LockScreen.sh2
-rwxr-xr-xconfig/hypr/scripts/MediaCtrl.sh2
-rwxr-xr-xconfig/hypr/scripts/MonitorProfiles.sh2
-rwxr-xr-xconfig/hypr/scripts/Polkit-NixOS.sh2
-rwxr-xr-xconfig/hypr/scripts/Polkit.sh2
-rwxr-xr-xconfig/hypr/scripts/PortalHyprland.sh2
-rwxr-xr-xconfig/hypr/scripts/Refresh.sh2
-rwxr-xr-xconfig/hypr/scripts/RefreshNoWaybar.sh2
-rwxr-xr-xconfig/hypr/scripts/RofiEmoji.sh2
-rwxr-xr-xconfig/hypr/scripts/RofiSearch.sh2
-rwxr-xr-xconfig/hypr/scripts/RofiThemeSelector-modified.sh2
-rwxr-xr-xconfig/hypr/scripts/RofiThemeSelector.sh2
-rwxr-xr-xconfig/hypr/scripts/ScreenShot.sh2
-rwxr-xr-xconfig/hypr/scripts/Sounds.sh2
-rwxr-xr-xconfig/hypr/scripts/SwitchKeyboardLayout.sh2
-rwxr-xr-xconfig/hypr/scripts/Tak0-Autodispatch.sh2
-rwxr-xr-xconfig/hypr/scripts/TouchPad.sh2
-rwxr-xr-xconfig/hypr/scripts/Volume.sh2
-rwxr-xr-xconfig/hypr/scripts/WallustSwww.sh2
-rwxr-xr-xconfig/hypr/scripts/WaybarLayout.sh2
-rwxr-xr-xconfig/hypr/scripts/WaybarScripts.sh2
-rwxr-xr-xconfig/hypr/scripts/WaybarStyles.sh2
-rwxr-xr-xconfig/hypr/scripts/Wlogout.sh2
-rw-r--r--config/hypr/scripts/sddm_wallpaper.sh2
-rwxr-xr-xcopy.sh84
-rwxr-xr-xrelease.sh2
-rwxr-xr-xupgrade.sh9
63 files changed, 544 insertions, 69 deletions
diff --git a/Distro-Hyprland.sh b/Distro-Hyprland.sh
index ff88325f..99a1fc34 100755
--- a/Distro-Hyprland.sh
+++ b/Distro-Hyprland.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# https://github.com/JaKooLit
# Script design to clone the Distro-Hyprland install scripts
diff --git a/config/hypr/UserScripts/RainbowBorders.sh b/config/hypr/UserScripts/RainbowBorders.sh
index cc1419fb..0a7fd721 100755
--- a/config/hypr/UserScripts/RainbowBorders.sh
+++ b/config/hypr/UserScripts/RainbowBorders.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# for rainbow borders animation
diff --git a/config/hypr/UserScripts/RofiBeats.sh b/config/hypr/UserScripts/RofiBeats.sh
index 1cddce09..ca566019 100755
--- a/config/hypr/UserScripts/RofiBeats.sh
+++ b/config/hypr/UserScripts/RofiBeats.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# For Rofi Beats to play online Music or Locally saved media files
diff --git a/config/hypr/UserScripts/RofiCalc.sh b/config/hypr/UserScripts/RofiCalc.sh
index 4b3b8b69..b72d5f3e 100755
--- a/config/hypr/UserScripts/RofiCalc.sh
+++ b/config/hypr/UserScripts/RofiCalc.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */
# /* Calculator (using qalculate) and rofi */
# /* Submitted by: https://github.com/JosephArmas */
diff --git a/config/hypr/UserScripts/Tak0-Autodispatch.sh b/config/hypr/UserScripts/Tak0-Autodispatch.sh
index a1f72129..114a3e8e 100755
--- a/config/hypr/UserScripts/Tak0-Autodispatch.sh
+++ b/config/hypr/UserScripts/Tak0-Autodispatch.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# USAGE / Π†ΠΠ‘Π’Π Π£ΠšΠ¦Π†Π―:
# 1) Run from terminal:
# ./dispatch.sh <application_command> <target_workspace_number>
diff --git a/config/hypr/UserScripts/WallpaperAutoChange.sh b/config/hypr/UserScripts/WallpaperAutoChange.sh
index a6d2cedd..6d8e8735 100755
--- a/config/hypr/UserScripts/WallpaperAutoChange.sh
+++ b/config/hypr/UserScripts/WallpaperAutoChange.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# source https://wiki.archlinux.org/title/Hyprland#Using_a_script_to_change_wallpaper_every_X_minutes
diff --git a/config/hypr/UserScripts/WallpaperEffects.sh b/config/hypr/UserScripts/WallpaperEffects.sh
index ac8fc0e8..89577efa 100755
--- a/config/hypr/UserScripts/WallpaperEffects.sh
+++ b/config/hypr/UserScripts/WallpaperEffects.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ #
# Wallpaper Effects using ImageMagick (SUPER SHIFT W)
diff --git a/config/hypr/UserScripts/WallpaperRandom.sh b/config/hypr/UserScripts/WallpaperRandom.sh
index 79396508..654d4bd3 100755
--- a/config/hypr/UserScripts/WallpaperRandom.sh
+++ b/config/hypr/UserScripts/WallpaperRandom.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# Script for Random Wallpaper ( CTRL ALT W)
diff --git a/config/hypr/UserScripts/WallpaperSelect.sh b/config/hypr/UserScripts/WallpaperSelect.sh
index 466832ba..9e51125f 100755
--- a/config/hypr/UserScripts/WallpaperSelect.sh
+++ b/config/hypr/UserScripts/WallpaperSelect.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */
# This script for selecting wallpapers (SUPER W)
diff --git a/config/hypr/UserScripts/Weather.sh b/config/hypr/UserScripts/Weather.sh
index b69662e6..ac9abc13 100755
--- a/config/hypr/UserScripts/Weather.sh
+++ b/config/hypr/UserScripts/Weather.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# weather info from wttr. https://github.com/chubin/wttr.in
# Remember to add city
diff --git a/config/hypr/UserScripts/WeatherWrap.sh b/config/hypr/UserScripts/WeatherWrap.sh
index 4c9a16dc..10c125dc 100755
--- a/config/hypr/UserScripts/WeatherWrap.sh
+++ b/config/hypr/UserScripts/WeatherWrap.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# Weather entrypoint: prefer Python (Open‑Meteo), fallback to legacy Bash (wttr.in)
diff --git a/config/hypr/UserScripts/ZshChangeTheme.sh b/config/hypr/UserScripts/ZshChangeTheme.sh
index cffaf5cb..690f0f13 100755
--- a/config/hypr/UserScripts/ZshChangeTheme.sh
+++ b/config/hypr/UserScripts/ZshChangeTheme.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# Script for Oh my ZSH theme ( CTRL SHIFT O)
diff --git a/config/hypr/configs/Startup_Apps.conf b/config/hypr/configs/Startup_Apps.conf
new file mode 100644
index 00000000..d952e65b
--- /dev/null
+++ b/config/hypr/configs/Startup_Apps.conf
@@ -0,0 +1,58 @@
+# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ #
+# Commands and Apps to be executed at launch (vendor defaults)
+
+$scriptsDir = $HOME/.config/hypr/scripts
+$UserScripts = $HOME/.config/hypr/UserScripts
+
+$wallDIR=$HOME/Pictures/wallpapers
+$lock = $scriptsDir/LockScreen.sh
+$SwwwRandom = $UserScripts/WallpaperAutoChange.sh
+$livewallpaper=""
+
+# 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
+exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
+exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
+
+# Initialize 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 &
+
+
+# Polkit (Polkit Gnome / KDE)
+exec-once = $scriptsDir/Polkit.sh
+
+# starup apps
+exec-once = nm-applet --indicator
+exec-once = nm-tray # For ubuntu
+exec-once = swaync
+#exec-once = ags
+#exec-once = blueman-applet
+#exec-once = rog-control-center
+exec-once = waybar
+exec-once = qs # quickshell AGS Desktop Overview alternative
+
+#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
+exec-once = hypridle
+
+
+# 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
+
+#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
diff --git a/config/hypr/configs/WindowRules.conf b/config/hypr/configs/WindowRules.conf
new file mode 100644
index 00000000..f02c5d29
--- /dev/null
+++ b/config/hypr/configs/WindowRules.conf
@@ -0,0 +1,235 @@
+# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ #
+# Vendor defaults for window rules and layerrules
+# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
+
+# NOTES: This is only for Hyprland > 0.48
+
+# note for ja: This should NOT be implemented on Debian and Ubuntu
+
+# windowrule - tags - add apps under appropriate tag to use the same settings
+# browser tags
+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 \ No newline at end of file
diff --git a/config/hypr/hyprland.conf b/config/hypr/hyprland.conf
index 71f243e7..cd9fed2d 100644
--- a/config/hypr/hyprland.conf
+++ b/config/hypr/hyprland.conf
@@ -15,7 +15,9 @@ source=$configs/Keybinds.conf # Pre-configured keybinds
# ## This is where you want to start tinkering
$UserConfigs = $HOME/.config/hypr/UserConfigs # User Configs directory path
-source= $UserConfigs/Startup_Apps.conf # put your start-up packages on this file
+# Generated merges (vendor + user overlay with dedupe/disable)
+source= $HOME/.config/hypr/generated/Startup_Apps.conf
+source= $HOME/.config/hypr/generated/WindowRules.conf
source= $UserConfigs/ENVariables.conf # Environment variables to load
diff --git a/config/hypr/initial-boot.sh b/config/hypr/initial-boot.sh
index 5b49cb6d..1313f104 100755
--- a/config/hypr/initial-boot.sh
+++ b/config/hypr/initial-boot.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ #
# A bash script designed to run only once dotfiles installed
diff --git a/config/hypr/scripts/AirplaneMode.sh b/config/hypr/scripts/AirplaneMode.sh
index 4379935d..548b9d6b 100755
--- a/config/hypr/scripts/AirplaneMode.sh
+++ b/config/hypr/scripts/AirplaneMode.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# Airplane Mode. Turning on or off all wifi using rfkill.
diff --git a/config/hypr/scripts/Animations.sh b/config/hypr/scripts/Animations.sh
index 477e5cd3..4bbe050f 100755
--- a/config/hypr/scripts/Animations.sh
+++ b/config/hypr/scripts/Animations.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# For applying Animations from different users
diff --git a/config/hypr/scripts/Battery.sh b/config/hypr/scripts/Battery.sh
index d7830058..2baed6ca 100644
--- a/config/hypr/scripts/Battery.sh
+++ b/config/hypr/scripts/Battery.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
for i in {0..3}; do
if [ -f /sys/class/power_supply/BAT$i/capacity ]; then
diff --git a/config/hypr/scripts/Brightness.sh b/config/hypr/scripts/Brightness.sh
index 63fd02f3..ce443ef2 100755
--- a/config/hypr/scripts/Brightness.sh
+++ b/config/hypr/scripts/Brightness.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# Script for Monitor backlights (if supported) using brightnessctl
diff --git a/config/hypr/scripts/BrightnessKbd.sh b/config/hypr/scripts/BrightnessKbd.sh
index 24737b73..93e09d86 100755
--- a/config/hypr/scripts/BrightnessKbd.sh
+++ b/config/hypr/scripts/BrightnessKbd.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# Script for keyboard backlights (if supported) using brightnessctl
diff --git a/config/hypr/scripts/ChangeBlur.sh b/config/hypr/scripts/ChangeBlur.sh
index 895987a4..0060285b 100755
--- a/config/hypr/scripts/ChangeBlur.sh
+++ b/config/hypr/scripts/ChangeBlur.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# Script for changing blurs on the fly
diff --git a/config/hypr/scripts/ChangeLayout.sh b/config/hypr/scripts/ChangeLayout.sh
index b083fcdc..78428188 100755
--- a/config/hypr/scripts/ChangeLayout.sh
+++ b/config/hypr/scripts/ChangeLayout.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# for changing Hyprland Layouts (Master or Dwindle) on the fly
diff --git a/config/hypr/scripts/ClipManager.sh b/config/hypr/scripts/ClipManager.sh
index 9937b6f4..3ba5d91a 100755
--- a/config/hypr/scripts/ClipManager.sh
+++ b/config/hypr/scripts/ClipManager.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# Clipboard Manager. This script uses cliphist, rofi, and wl-copy.
diff --git a/config/hypr/scripts/ComposeHyprConfigs.sh b/config/hypr/scripts/ComposeHyprConfigs.sh
new file mode 100644
index 00000000..55bc3c5c
--- /dev/null
+++ b/config/hypr/scripts/ComposeHyprConfigs.sh
@@ -0,0 +1,109 @@
+#!/usr/bin/env bash
+# Compose merged Hyprland configs for Startup_Apps and WindowRules
+set -euo pipefail
+
+BASE_DIR="$HOME/.config/hypr"
+BASE_CFG_DIR="$BASE_DIR/configs"
+USER_DIR="$BASE_DIR/UserConfigs"
+GEN_DIR="$BASE_DIR/generated"
+
+mkdir -p "$GEN_DIR"
+
+log() { printf "[compose] %s\n" "$*"; }
+
+# Trim leading/trailing whitespace
+trim() { sed -E 's/^\s+//;s/\s+$//'; }
+
+# Normalize spaces in a directive line
+normalize() { awk '{$1=$1;print}'; }
+
+# Build merged Startup_Apps.conf
+compose_startup_apps() {
+ local base_file="$BASE_CFG_DIR/Startup_Apps.conf"
+ local user_file="$USER_DIR/Startup_Apps.conf"
+ local disable_file="$USER_DIR/Startup_Apps.disable"
+ local out_file="$GEN_DIR/Startup_Apps.conf"
+
+ : >"$out_file"
+
+ # Header and variable lines come from base
+ if [[ -f "$base_file" ]]; then
+ # Copy all non exec-once lines (comments, blanks, variables, etc.)
+ grep -Ev '^\s*exec-once\s*=' "$base_file" || true >>"$out_file"
+ fi
+
+ # Collect exec-once commands (the right side of '=')
+ declare -A cmds=()
+
+ if [[ -f "$base_file" ]]; then
+ while IFS= read -r line; do
+ [[ "$line" =~ ^\s*exec-once\s*= ]] || continue
+ cmd="${line#*=}"
+ cmd="$(echo "$cmd" | trim)"
+ cmds["$cmd"]=1
+ done <"$base_file"
+ fi
+
+ if [[ -f "$user_file" ]]; then
+ while IFS= read -r line; do
+ [[ "$line" =~ ^\s*exec-once\s*= ]] || continue
+ cmd="${line#*=}"
+ cmd="$(echo "$cmd" | trim)"
+ cmds["$cmd"]=1
+ done <"$user_file"
+ fi
+
+ # Apply disables (exact match of command string)
+ if [[ -f "$disable_file" ]]; then
+ while IFS= read -r d; do
+ d="$(echo "$d" | trim)"
+ [[ -z "$d" || "$d" =~ ^# ]] && continue
+ unset 'cmds[$d]'
+ done <"$disable_file"
+ fi
+
+ # Emit combined exec-once (stable sort)
+ for k in "${!cmds[@]}"; do echo "$k"; done | sort -u | while IFS= read -r cmd; do
+ [[ -z "$cmd" ]] && continue
+ printf "exec-once = %s\n" "$cmd" >>"$out_file"
+ done
+
+ log "Wrote $out_file"
+}
+
+# Build merged WindowRules.conf
+compose_window_rules() {
+ local base_file="$BASE_CFG_DIR/WindowRules.conf"
+ local user_file="$USER_DIR/WindowRules.conf"
+ local disable_file="$USER_DIR/WindowRules.disable"
+ local out_file="$GEN_DIR/WindowRules.conf"
+
+ : >"$out_file"
+ echo "# Generated merged WindowRules" >>"$out_file"
+
+ declare -A rules=()
+ add_rules() {
+ local f="$1"
+ [[ -f "$f" ]] || return 0
+ grep -E '^(windowrule|layerrule)\s*=' "$f" | trim | while IFS= read -r r; do
+ rules["$r"]=1
+ done
+ }
+
+ add_rules "$base_file"
+ add_rules "$user_file"
+
+ if [[ -f "$disable_file" ]]; then
+ while IFS= read -r d; do
+ d="$(echo "$d" | trim)"
+ [[ -z "$d" || "$d" =~ ^# ]] && continue
+ unset 'rules[$d]'
+ done <"$disable_file"
+ fi
+
+ for r in "${!rules[@]}"; do echo "$r"; done | sort -u >>"$out_file"
+ log "Wrote $out_file"
+}
+
+compose_startup_apps
+compose_window_rules \ No newline at end of file
diff --git a/config/hypr/scripts/DarkLight.sh b/config/hypr/scripts/DarkLight.sh
index 1bc1602f..e473efb2 100755
--- a/config/hypr/scripts/DarkLight.sh
+++ b/config/hypr/scripts/DarkLight.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
## /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# For Dark and Light switching
# Note: Scripts are looking for keywords Light or Dark except for wallpapers as the are in a separate directories
diff --git a/config/hypr/scripts/Distro_update.sh b/config/hypr/scripts/Distro_update.sh
index b0b1446b..2b3376e3 100755
--- a/config/hypr/scripts/Distro_update.sh
+++ b/config/hypr/scripts/Distro_update.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# Simple bash script to check and will try to update your system
diff --git a/config/hypr/scripts/Dropterminal.sh b/config/hypr/scripts/Dropterminal.sh
index 1c17fbb4..9b2eeecb 100755
--- a/config/hypr/scripts/Dropterminal.sh
+++ b/config/hypr/scripts/Dropterminal.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
#
# Made and brought to by Kiran George
diff --git a/config/hypr/scripts/GameMode.sh b/config/hypr/scripts/GameMode.sh
index 7a39da3d..ec1e541e 100755
--- a/config/hypr/scripts/GameMode.sh
+++ b/config/hypr/scripts/GameMode.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# Game Mode. Turning off all animations
diff --git a/config/hypr/scripts/Hypridle.sh b/config/hypr/scripts/Hypridle.sh
index 56176716..6acff434 100755
--- a/config/hypr/scripts/Hypridle.sh
+++ b/config/hypr/scripts/Hypridle.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# This is for custom version of waybar idle_inhibitor which activates / deactivates hypridle instead
diff --git a/config/hypr/scripts/KeyBinds.sh b/config/hypr/scripts/KeyBinds.sh
index 9c6b5ab7..3a19390f 100755
--- a/config/hypr/scripts/KeyBinds.sh
+++ b/config/hypr/scripts/KeyBinds.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# searchable enabled keybinds using rofi
diff --git a/config/hypr/scripts/KeyHints.sh b/config/hypr/scripts/KeyHints.sh
index 7917ae3a..8a478039 100755
--- a/config/hypr/scripts/KeyHints.sh
+++ b/config/hypr/scripts/KeyHints.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# GDK BACKEND. Change to either wayland or x11 if having issues
diff --git a/config/hypr/scripts/KillActiveProcess.sh b/config/hypr/scripts/KillActiveProcess.sh
index bee146d7..2bc108f2 100755
--- a/config/hypr/scripts/KillActiveProcess.sh
+++ b/config/hypr/scripts/KillActiveProcess.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# Copied from Discord post. Thanks to @Zorg
diff --git a/config/hypr/scripts/Kitty_themes.sh b/config/hypr/scripts/Kitty_themes.sh
index 48bfa99f..55da7e44 100755
--- a/config/hypr/scripts/Kitty_themes.sh
+++ b/config/hypr/scripts/Kitty_themes.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */Β  #
# Kitty Themes Source https://github.com/dexpota/kitty-themes #
diff --git a/config/hypr/scripts/KooLsDotsUpdate.sh b/config/hypr/scripts/KooLsDotsUpdate.sh
index f4b8814a..51277ab1 100755
--- a/config/hypr/scripts/KooLsDotsUpdate.sh
+++ b/config/hypr/scripts/KooLsDotsUpdate.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# simple bash script to check if update is available by comparing local version and github version
diff --git a/config/hypr/scripts/Kool_Quick_Settings.sh b/config/hypr/scripts/Kool_Quick_Settings.sh
index e43749bf..79ddc163 100755
--- a/config/hypr/scripts/Kool_Quick_Settings.sh
+++ b/config/hypr/scripts/Kool_Quick_Settings.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# Rofi menu for KooL Hyprland Quick Settings (SUPER SHIFT E)
diff --git a/config/hypr/scripts/LockScreen.sh b/config/hypr/scripts/LockScreen.sh
index e61490cd..d58f5c21 100755
--- a/config/hypr/scripts/LockScreen.sh
+++ b/config/hypr/scripts/LockScreen.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# For Hyprlock
diff --git a/config/hypr/scripts/MediaCtrl.sh b/config/hypr/scripts/MediaCtrl.sh
index 000c3ade..9dc3571d 100755
--- a/config/hypr/scripts/MediaCtrl.sh
+++ b/config/hypr/scripts/MediaCtrl.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# Playerctl
diff --git a/config/hypr/scripts/MonitorProfiles.sh b/config/hypr/scripts/MonitorProfiles.sh
index 67316c09..1176a46a 100755
--- a/config/hypr/scripts/MonitorProfiles.sh
+++ b/config/hypr/scripts/MonitorProfiles.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# For applying Pre-configured Monitor Profiles
diff --git a/config/hypr/scripts/Polkit-NixOS.sh b/config/hypr/scripts/Polkit-NixOS.sh
index 51675eff..28642d19 100755
--- a/config/hypr/scripts/Polkit-NixOS.sh
+++ b/config/hypr/scripts/Polkit-NixOS.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# For NixOS starting of polkit-gnome. Dec 2023, the settings stated in NixOS wiki does not work so have to manual start it
diff --git a/config/hypr/scripts/Polkit.sh b/config/hypr/scripts/Polkit.sh
index dcea7653..1af8fd1b 100755
--- a/config/hypr/scripts/Polkit.sh
+++ b/config/hypr/scripts/Polkit.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# This script starts the first available Polkit agent from a list of possible locations
diff --git a/config/hypr/scripts/PortalHyprland.sh b/config/hypr/scripts/PortalHyprland.sh
index 9bdf4b8c..21cb7db4 100755
--- a/config/hypr/scripts/PortalHyprland.sh
+++ b/config/hypr/scripts/PortalHyprland.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# For manually starting xdg-desktop-portal-hyprland
diff --git a/config/hypr/scripts/Refresh.sh b/config/hypr/scripts/Refresh.sh
index 719c368d..2e772aa9 100755
--- a/config/hypr/scripts/Refresh.sh
+++ b/config/hypr/scripts/Refresh.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# Scripts for refreshing ags, waybar, rofi, swaync, wallust
diff --git a/config/hypr/scripts/RefreshNoWaybar.sh b/config/hypr/scripts/RefreshNoWaybar.sh
index 8454124e..54c760bd 100755
--- a/config/hypr/scripts/RefreshNoWaybar.sh
+++ b/config/hypr/scripts/RefreshNoWaybar.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# Modified version of Refresh.sh but waybar wont refresh
diff --git a/config/hypr/scripts/RofiEmoji.sh b/config/hypr/scripts/RofiEmoji.sh
index 4570831e..7e3ef0f3 100755
--- a/config/hypr/scripts/RofiEmoji.sh
+++ b/config/hypr/scripts/RofiEmoji.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# Variables
diff --git a/config/hypr/scripts/RofiSearch.sh b/config/hypr/scripts/RofiSearch.sh
index 4218bed3..8ef12c46 100755
--- a/config/hypr/scripts/RofiSearch.sh
+++ b/config/hypr/scripts/RofiSearch.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# For Searching via web browsers
diff --git a/config/hypr/scripts/RofiThemeSelector-modified.sh b/config/hypr/scripts/RofiThemeSelector-modified.sh
index 2cfc2d24..d6a353c0 100755
--- a/config/hypr/scripts/RofiThemeSelector-modified.sh
+++ b/config/hypr/scripts/RofiThemeSelector-modified.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# A modified version of Rofi-Theme-Selector, concentrating only on ~/.local and also, applying only 10 @themes in ~/.config/rofi/config.rasi
# as opposed to continous adding of //@theme
diff --git a/config/hypr/scripts/RofiThemeSelector.sh b/config/hypr/scripts/RofiThemeSelector.sh
index 8b2fcb71..b7236e8f 100755
--- a/config/hypr/scripts/RofiThemeSelector.sh
+++ b/config/hypr/scripts/RofiThemeSelector.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */Β  #
# Rofi Themes - Script to preview and apply themes by live-reloading the config.
diff --git a/config/hypr/scripts/ScreenShot.sh b/config/hypr/scripts/ScreenShot.sh
index 0a37c7e4..0ef70964 100755
--- a/config/hypr/scripts/ScreenShot.sh
+++ b/config/hypr/scripts/ScreenShot.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# Screenshots scripts
diff --git a/config/hypr/scripts/Sounds.sh b/config/hypr/scripts/Sounds.sh
index 8b2cc76e..b372d714 100755
--- a/config/hypr/scripts/Sounds.sh
+++ b/config/hypr/scripts/Sounds.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# This script is used to play system sounds.
# Script is used by Volume.Sh and ScreenShots.sh
diff --git a/config/hypr/scripts/SwitchKeyboardLayout.sh b/config/hypr/scripts/SwitchKeyboardLayout.sh
index f505fa6c..18a9517e 100755
--- a/config/hypr/scripts/SwitchKeyboardLayout.sh
+++ b/config/hypr/scripts/SwitchKeyboardLayout.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# This is for changing kb_layouts. Set kb_layouts in $settings_file
diff --git a/config/hypr/scripts/Tak0-Autodispatch.sh b/config/hypr/scripts/Tak0-Autodispatch.sh
index a1f72129..114a3e8e 100755
--- a/config/hypr/scripts/Tak0-Autodispatch.sh
+++ b/config/hypr/scripts/Tak0-Autodispatch.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# USAGE / Π†ΠΠ‘Π’Π Π£ΠšΠ¦Π†Π―:
# 1) Run from terminal:
# ./dispatch.sh <application_command> <target_workspace_number>
diff --git a/config/hypr/scripts/TouchPad.sh b/config/hypr/scripts/TouchPad.sh
index 8509d79f..030c36de 100755
--- a/config/hypr/scripts/TouchPad.sh
+++ b/config/hypr/scripts/TouchPad.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# For disabling touchpad.
# Edit the Touchpad_Device on ~/.config/hypr/UserConfigs/Laptops.conf according to your system
diff --git a/config/hypr/scripts/Volume.sh b/config/hypr/scripts/Volume.sh
index 8efdb55c..4c82f543 100755
--- a/config/hypr/scripts/Volume.sh
+++ b/config/hypr/scripts/Volume.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# Scripts for volume controls for audio and mic
diff --git a/config/hypr/scripts/WallustSwww.sh b/config/hypr/scripts/WallustSwww.sh
index 5e0148ee..657f41ab 100755
--- a/config/hypr/scripts/WallustSwww.sh
+++ b/config/hypr/scripts/WallustSwww.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# Wallust: derive colors from the current wallpaper and update templates
# Usage: WallustSwww.sh [absolute_path_to_wallpaper]
diff --git a/config/hypr/scripts/WaybarLayout.sh b/config/hypr/scripts/WaybarLayout.sh
index f65c9c00..d3725a91 100755
--- a/config/hypr/scripts/WaybarLayout.sh
+++ b/config/hypr/scripts/WaybarLayout.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# Script for waybar layout or configs
diff --git a/config/hypr/scripts/WaybarScripts.sh b/config/hypr/scripts/WaybarScripts.sh
index 7b3aaba2..d2205c42 100755
--- a/config/hypr/scripts/WaybarScripts.sh
+++ b/config/hypr/scripts/WaybarScripts.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ #
# This file used on waybar modules sourcing defaults set in $HOME/.config/hypr/UserConfigs/01-UserDefaults.conf
diff --git a/config/hypr/scripts/WaybarStyles.sh b/config/hypr/scripts/WaybarStyles.sh
index 15767c2a..8ebfed92 100755
--- a/config/hypr/scripts/WaybarStyles.sh
+++ b/config/hypr/scripts/WaybarStyles.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# Script for waybar styles
diff --git a/config/hypr/scripts/Wlogout.sh b/config/hypr/scripts/Wlogout.sh
index f552b83d..8879858c 100755
--- a/config/hypr/scripts/Wlogout.sh
+++ b/config/hypr/scripts/Wlogout.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ ##
# wlogout (Power, Screen Lock, Suspend, etc)
diff --git a/config/hypr/scripts/sddm_wallpaper.sh b/config/hypr/scripts/sddm_wallpaper.sh
index 9487188c..9dca2f72 100644
--- a/config/hypr/scripts/sddm_wallpaper.sh
+++ b/config/hypr/scripts/sddm_wallpaper.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */
# SDDM Wallpaper and Wallust Colors Setter
diff --git a/copy.sh b/copy.sh
index d54402f3..496811d8 100755
--- a/copy.sh
+++ b/copy.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ #
clear
@@ -111,8 +111,17 @@ fi
# Proper Polkit for NixOS
if hostnamectl | grep -q 'Operating System: NixOS'; then
echo "${INFO} NixOS Distro Detected. Setting up proper env's and configs." 2>&1 | tee -a "$LOG" || true
- sed -i -E '/^#?exec-once = \$scriptsDir\/Polkit-NixOS\.sh/s/^#//' config/hypr/UserConfigs/Startup_Apps.conf
- sed -i '/^exec-once = \$scriptsDir\/Polkit\.sh$/ s/^#*/#/' config/hypr/UserConfigs/Startup_Apps.conf
+ # Ensure NixOS polkit is enabled via overlay and default polkit is disabled via disable list
+ OVERLAY_SA="config/hypr/UserConfigs/Startup_Apps.conf"
+ DISABLE_SA="config/hypr/UserConfigs/Startup_Apps.disable"
+ mkdir -p "$(dirname "$OVERLAY_SA")"
+ touch "$OVERLAY_SA" "$DISABLE_SA"
+ if ! grep -qx 'exec-once = $scriptsDir/Polkit-NixOS.sh' "$OVERLAY_SA"; then
+ echo 'exec-once = $scriptsDir/Polkit-NixOS.sh' >> "$OVERLAY_SA"
+ fi
+ if ! grep -qx '\$scriptsDir/Polkit.sh' "$DISABLE_SA"; then
+ echo '$scriptsDir/Polkit.sh' >> "$DISABLE_SA"
+ fi
fi
# activating hyprcursor on env by checking if the directory ~/.icons/Bibata-Modern-Ice/hyprcursors exists
@@ -236,17 +245,23 @@ done
# Check if asusctl is installed and add rog-control-center on Startup
if command -v asusctl >/dev/null 2>&1; then
- sed -i '/^\s*#exec-once = rog-control-center/s/^#//' config/hypr/UserConfigs/Startup_Apps.conf
+ OVERLAY_SA="config/hypr/UserConfigs/Startup_Apps.conf"
+ mkdir -p "$(dirname "$OVERLAY_SA")"; touch "$OVERLAY_SA"
+ grep -qx 'exec-once = rog-control-center' "$OVERLAY_SA" || echo 'exec-once = rog-control-center' >> "$OVERLAY_SA"
fi
# Check if blueman-applet is installed and add blueman-applet on Startup
if command -v blueman-applet >/dev/null 2>&1; then
- sed -i '/^\s*#exec-once = blueman-applet/s/^#//' config/hypr/UserConfigs/Startup_Apps.conf
+ OVERLAY_SA="config/hypr/UserConfigs/Startup_Apps.conf"
+ mkdir -p "$(dirname "$OVERLAY_SA")"; touch "$OVERLAY_SA"
+ grep -qx 'exec-once = blueman-applet' "$OVERLAY_SA" || echo 'exec-once = blueman-applet' >> "$OVERLAY_SA"
fi
# Check if ags is installed edit ags behaviour on configs
if command -v ags >/dev/null 2>&1; then
- sed -i '/^\s*#exec-once = ags/s/^#//' config/hypr/UserConfigs/Startup_Apps.conf
+ OVERLAY_SA="config/hypr/UserConfigs/Startup_Apps.conf"
+ mkdir -p "$(dirname "$OVERLAY_SA")"; touch "$OVERLAY_SA"
+ grep -qx 'exec-once = ags' "$OVERLAY_SA" || echo 'exec-once = ags' >> "$OVERLAY_SA"
sed -i '/#ags -q && ags &/s/^#//' config/hypr/scripts/RefreshNoWaybar.sh
sed -i '/#ags -q && ags &/s/^#//' config/hypr/scripts/Refresh.sh
@@ -259,7 +274,9 @@ fi
# Check if quickshell is installed; edit quickshell behaviour on configs
if command -v qs >/dev/null 2>&1; then
- sed -i '/^\s*#exec-once = qs/s/^#//' config/hypr/UserConfigs/Startup_Apps.conf
+ OVERLAY_SA="config/hypr/UserConfigs/Startup_Apps.conf"
+ mkdir -p "$(dirname "$OVERLAY_SA")"; touch "$OVERLAY_SA"
+ grep -qx 'exec-once = qs' "$OVERLAY_SA" || echo 'exec-once = qs' >> "$OVERLAY_SA"
sed -i '/#pkill qs && qs &/s/^#//' config/hypr/scripts/RefreshNoWaybar.sh
sed -i '/#pkill qs && qs &/s/^#//' config/hypr/scripts/Refresh.sh
@@ -814,6 +831,37 @@ FILES_TO_RESTORE=(
"WindowRules.conf"
)
+# Helper to extract overlay (additions) and optional disables from a previous user file compared to vendor base
+compose_overlay_from_backup() {
+ local type="$1" # startup|windowrules
+ local base_file="$2"
+ local old_user_file="$3"
+ local new_user_file="$4"
+ local disable_file="$5"
+
+ mkdir -p "$(dirname "$new_user_file")"
+ : >"$new_user_file"
+ : >"$disable_file"
+
+ if [ "$type" = "startup" ]; then
+ # additions: exec-once lines present in old user but not in base
+ grep -E '^\s*exec-once\s*=' "$old_user_file" | sed -E 's/^\s+//;s/\s+$//' | sort -u >"$old_user_file.tmp.exec"
+ grep -E '^\s*exec-once\s*=' "$base_file" | sed -E 's/^\s+//;s/\s+$//' | sort -u >"$base_file.tmp.exec"
+ comm -23 "$old_user_file.tmp.exec" "$base_file.tmp.exec" >"$new_user_file"
+ # treat commented exec-once in old user as disables
+ grep -E '^\s*#\s*exec-once\s*=' "$old_user_file" | sed -E 's/^\s*#\s*exec-once\s*=\s*//' | sed -E 's/^\s+//;s/\s+$//' | sort -u >"$disable_file"
+ rm -f "$old_user_file.tmp.exec" "$base_file.tmp.exec"
+ elif [ "$type" = "windowrules" ]; then
+ # additions
+ grep -E '^(windowrule|layerrule)\s*=' "$old_user_file" | sed -E 's/^\s+//;s/\s+$//' | sort -u >"$old_user_file.tmp.rules"
+ grep -E '^(windowrule|layerrule)\s*=' "$base_file" | sed -E 's/^\s+//;s/\s+$//' | sort -u >"$base_file.tmp.rules"
+ comm -23 "$old_user_file.tmp.rules" "$base_file.tmp.rules" >"$new_user_file"
+ # disables: lines commented in old user
+ grep -E '^\s*#\s*(windowrule|layerrule)\s*=' "$old_user_file" | sed -E 's/^\s*#\s*//' | sed -E 's/^\s+//;s/\s+$//' | sort -u >"$disable_file"
+ rm -f "$old_user_file.tmp.rules" "$base_file.tmp.rules"
+ fi
+}
+
DIRPATH="$HOME/.config/$DIRH"
BACKUP_DIR=$(get_backup_dirname)
BACKUP_DIR_PATH="$DIRPATH-backup-$BACKUP_DIR/UserConfigs"
@@ -830,14 +878,27 @@ if [ -d "$BACKUP_DIR_PATH" ]; then
NOTES for RESTORING PREVIOUS CONFIGS
β–ˆβ–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–„β–ˆ
- If you decide to restore your old configs, make sure to
- handle the updates or changes manually !!!
+ We now auto-migrate Startup_Apps and WindowRules by extracting
+ your additions into overlay files and optional disable lists.
+ This keeps new defaults while preserving your custom changes.
"
echo -e "${MAGENTA}Kindly Visit and check KooL's Hyprland-Dots GitHub page for the history of commits.${RESET}"
for FILE_NAME in "${FILES_TO_RESTORE[@]}"; do
BACKUP_FILE="$BACKUP_DIR_PATH/$FILE_NAME"
if [ -f "$BACKUP_FILE" ]; then
+ # Special handling for Startup_Apps.conf and WindowRules.conf
+ if [ "$FILE_NAME" = "Startup_Apps.conf" ]; then
+ compose_overlay_from_backup "startup" "$DIRPATH/configs/Startup_Apps.conf" "$BACKUP_FILE" "$DIRPATH/UserConfigs/Startup_Apps.conf" "$DIRPATH/UserConfigs/Startup_Apps.disable"
+ echo "${OK} - Migrated overlay for ${YELLOW}$FILE_NAME${RESET}" 2>&1 | tee -a "$LOG"
+ continue
+ fi
+ if [ "$FILE_NAME" = "WindowRules.conf" ]; then
+ compose_overlay_from_backup "windowrules" "$DIRPATH/configs/WindowRules.conf" "$BACKUP_FILE" "$DIRPATH/UserConfigs/WindowRules.conf" "$DIRPATH/UserConfigs/WindowRules.disable"
+ echo "${OK} - Migrated overlay for ${YELLOW}$FILE_NAME${RESET}" 2>&1 | tee -a "$LOG"
+ continue
+ fi
+
printf "\n${INFO} Found ${YELLOW}$FILE_NAME${RESET} in hypr backup...\n"
echo -n "${CAT} Do you want to restore ${YELLOW}$FILE_NAME${RESET} from backup? (y/N): "
read file_restore
@@ -855,6 +916,11 @@ if [ -d "$BACKUP_DIR_PATH" ]; then
done
fi
+# Compose merged configs (Startup_Apps and WindowRules)
+if [ -x "$DIRPATH/scripts/ComposeHyprConfigs.sh" ]; then
+ "$DIRPATH/scripts/ComposeHyprConfigs.sh" 2>&1 | tee -a "$LOG" || true
+fi
+
printf "\n%.0s" {1..1}
# Restoring previous UserScripts
diff --git a/release.sh b/release.sh
index 78063ee1..e29eaa79 100755
--- a/release.sh
+++ b/release.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ #
# For downloading dots from releases
diff --git a/upgrade.sh b/upgrade.sh
index a47bd48b..9aee3c2c 100755
--- a/upgrade.sh
+++ b/upgrade.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# /* ---- πŸ’« https://github.com/JaKooLit πŸ’« ---- */ #
# for Semi-Manual upgrading your system.
# NOTE: requires rsync
@@ -196,7 +196,12 @@ if version_gt "$latest_version" "$stored_version"; then
chmod +x "$HOME/.config/hypr/scripts/"* 2>&1 | tee -a "$LOG"
chmod +x "$HOME/.config/hypr/UserScripts/"* 2>&1 | tee -a "$LOG"
# Set executable for initial-boot.sh
- chmod +x "$HOME/.config/hypr/initial-boot.sh" 2>&1 | tee -a "$LOG"
+ chmod +x "$HOME/.config/hypr/initial-boot.sh" 2>&1 | tee -a "$LOG"
+
+ # Compose merged configs (Startup_Apps and WindowRules)
+ if [ -x "$HOME/.config/hypr/scripts/ComposeHyprConfigs.sh" ]; then
+ "$HOME/.config/hypr/scripts/ComposeHyprConfigs.sh" 2>&1 | tee -a "$LOG" || true
+ fi
else
echo "$MAGENTA Upgrade declined. No files or directories changed" 2>&1 | tee -a "$LOG"
fi
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage