# 🧭 Hyprland → Lua Migration Analysis (Phase 1) Focus: identify scripts/configs that **write Hyprland config files** and therefore must change for Lua. --- ## 📌 Table of Contents - [🎯 Scope & Assumptions](#-scope--assumptions) - [🧩 Hyprland Config Entry Points](#-hyprland-config-entry-points) - [✍️ Direct Hyprland Config Writers (must change)](#️-direct-hyprland-config-writers-must-change) - [🧪 Indirect / Generated Config Writers](#-indirect--generated-config-writers) - [🧰 Install/Upgrade Writers (copy/restore paths)](#-installupgrade-writers-copyrestore-paths) - [📟 Runtime‑Only Files (no file writes)](#-runtime-only-files-no-file-writes) - [📝 Notes / Follow‑ups](#-notes--follow-ups) --- ## 🎯 Scope & Assumptions Goal: Identify **files that directly modify Hyprland config on disk** (or generate files sourced by Hyprland), because those will need updating for Lua. Out of scope: The new Lua syntax itself. --- ## 🧩 Hyprland Config Entry Points **Primary file:** `Hyprland-Dots/config/hypr/hyprland.conf` This file **sources**: - `Hyprland-Dots/config/hypr/configs/*.conf` - `Hyprland-Dots/config/hypr/UserConfigs/*.conf` - `Hyprland-Dots/config/hypr/monitors.conf` - `Hyprland-Dots/config/hypr/workspaces.conf` Also: - `Hyprland-Dots/config/hypr/UserConfigs/UserDecorations.conf` **sources** `~/.config/hypr/wallust/wallust-hyprland.conf` ➡️ Any script that writes these files must be updated for Lua. --- ## ✍️ Direct Hyprland Config Writers (must change) These **write/overwrite Hyprland config files**: ### 🖥️ Monitor Profiles - `Hyprland-Dots/config/hypr/scripts/MonitorProfiles.sh` **Writes:** `~/.config/hypr/monitors.conf` **How:** `cp` chosen profile from `Monitor_Profiles/*.conf` ### 🎞️ Animations - `Hyprland-Dots/config/hypr/scripts/Animations.sh` **Writes:** `~/.config/hypr/UserConfigs/UserAnimations.conf` **How:** `cp` selected animation file into UserConfigs ### 🧱 Window Rules Version Switch - `Hyprland-Dots/config/hypr/scripts/update_WindowRules.sh` **Writes:** `~/.config/hypr/configs/WindowRules.conf` **How:** backup + `cp` from `WindowRules-config-v3.conf`, then `hyprctl reload` ### 🎬 Startup Apps (wallpaper switching) - `Hyprland-Dots/config/hypr/UserScripts/WallpaperSelect.sh` **Writes:** `~/.config/hypr/UserConfigs/Startup_Apps.conf` **How:** `sed -i` toggles `exec-once` lines and updates `$livewallpaper` ### 🗂️ UserConfig swapper - `Hyprland-Dots/config/hypr/scripts/UserConfigsSwitcher.sh` **Writes:** directory move/rename **How:** `mv` between `UserConfigs` and `UserConfigsBak` --- ## 🧪 Indirect / Generated Config Writers These generate **files that Hyprland sources**: ### 🎨 Wallust → Hyprland colors - `Hyprland-Dots/config/hypr/scripts/ThemeChanger.sh` - `Hyprland-Dots/config/hypr/scripts/WallustSwww.sh` **Writes/overwrites:** `~/.config/hypr/wallust/wallust-hyprland.conf` **Used by:** `Hyprland-Dots/config/hypr/UserConfigs/UserDecorations.conf` (sources it) ➡️ The Lua migration must either keep a compatible generated file or switch the generator target. --- ## 🧰 Install/Upgrade Writers (copy/restore paths) These **modify Hyprland configs during install/upgrade**: ### 🔧 `copy.sh` - Edits `Hyprland-Dots/config/hypr/configs/ENVariables.conf` (enables hyprcursor) - Modifies `~/.config/hypr/configs/Startup_Apps.conf` (quickshell migration) - Renames/switches `hyprlock.conf` variants (not Hyprland config, but in same dir) - Calls restore helpers below ### 🧱 `scripts/lib_copy.sh` Restores/copies: - `~/.config/hypr/monitors.conf` - `~/.config/hypr/workspaces.conf` - `~/.config/hypr/UserConfigs/Startup_Apps.conf` - `~/.config/hypr/UserConfigs/WindowRules.conf` - `~/.config/hypr/UserConfigs/UserKeybinds.conf` - Additional UserConfigs overlay logic --- ## 📟 Runtime‑Only Files (no file writes) These **appear to be runtime-only** (no direct file writes detected; they act via `hyprctl`, process control, notifications, etc.): ### ✅ Scripts - `Hyprland-Dots/config/hypr/scripts/AirplaneMode.sh` - `Hyprland-Dots/config/hypr/scripts/Battery.sh` - `Hyprland-Dots/config/hypr/scripts/BrightnessKbd.sh` - `Hyprland-Dots/config/hypr/scripts/Brightness.sh` - `Hyprland-Dots/config/hypr/scripts/ChangeBlur.sh` - `Hyprland-Dots/config/hypr/scripts/ChangeLayout.sh` - `Hyprland-Dots/config/hypr/scripts/ClipManager.sh` - `Hyprland-Dots/config/hypr/scripts/ExternalBrightness.sh` - `Hyprland-Dots/config/hypr/scripts/fastfetch-wrapper.sh` - `Hyprland-Dots/config/hypr/scripts/Float-all-Windows.sh` - `Hyprland-Dots/config/hypr/scripts/GameMode.sh` - `Hyprland-Dots/config/hypr/scripts/Hypridle.sh` - `Hyprland-Dots/config/hypr/scripts/KeybindsLayoutInit.sh` - `Hyprland-Dots/config/hypr/scripts/keybinds_parser.py` - `Hyprland-Dots/config/hypr/scripts/KeyboardLayout.sh` - `Hyprland-Dots/config/hypr/scripts/KeyHints.sh` - `Hyprland-Dots/config/hypr/scripts/KillActiveProcess.sh` - `Hyprland-Dots/config/hypr/scripts/LockScreen.sh` - `Hyprland-Dots/config/hypr/scripts/MediaCtrl.sh` - `Hyprland-Dots/config/hypr/scripts/OverviewToggle.sh` - `Hyprland-Dots/config/hypr/scripts/Polkit-NixOS.sh` - `Hyprland-Dots/config/hypr/scripts/Polkit.sh` - `Hyprland-Dots/config/hypr/scripts/PortalHyprland.sh` - `Hyprland-Dots/config/hypr/scripts/PortalHyprlandUbuntu.sh` - `Hyprland-Dots/config/hypr/scripts/RefreshNoWaybar.sh` - `Hyprland-Dots/config/hypr/scripts/rofi-emacs-keybinds` - `Hyprland-Dots/config/hypr/scripts/RofiSearch.sh` - `Hyprland-Dots/config/hypr/scripts/Sounds.sh` - `Hyprland-Dots/config/hypr/scripts/Toggle-Active-Window-Audio.sh` - `Hyprland-Dots/config/hypr/scripts/UptimeNixOS.sh` - `Hyprland-Dots/config/hypr/scripts/Volume.sh` - `Hyprland-Dots/config/hypr/scripts/WallpaperDaemon.sh` - `Hyprland-Dots/config/hypr/scripts/WaybarScripts.sh` - `Hyprland-Dots/config/hypr/scripts/Wlogout.sh` ### ✅ UserScripts - `Hyprland-Dots/config/hypr/UserScripts/00-Readme` - `Hyprland-Dots/config/hypr/UserScripts/RofiCalc.sh` - `Hyprland-Dots/config/hypr/UserScripts/WallpaperRandom.sh` - `Hyprland-Dots/config/hypr/UserScripts/WeatherWrap.sh` --- ## 📝 Notes / Follow‑ups Important: Some scripts are **file writers but not Hyprland config writers** (e.g., `install-uv.sh`, `Distro_update.sh`, and the binary `dots-tui-ubuntu-2404`). They don’t touch Hyprland configs but do modify the system. If you want an **exact “no file writes anywhere” list**, I can do a stricter pass (including temp/status files, downloads, etc.).