aboutsummaryrefslogtreecommitdiffstats
path: root/config/hypr/scripts/ComposeHyprConfigs.sh
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 /config/hypr/scripts/ComposeHyprConfigs.sh
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
Diffstat (limited to 'config/hypr/scripts/ComposeHyprConfigs.sh')
-rw-r--r--config/hypr/scripts/ComposeHyprConfigs.sh109
1 files changed, 109 insertions, 0 deletions
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
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage