aboutsummaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/Hyprland-LUA-analysis-Phase1.md159
-rw-r--r--docs/copy.sh-tui-analysis-3-14-2026.md105
2 files changed, 264 insertions, 0 deletions
diff --git a/docs/Hyprland-LUA-analysis-Phase1.md b/docs/Hyprland-LUA-analysis-Phase1.md
new file mode 100644
index 00000000..e08901db
--- /dev/null
+++ b/docs/Hyprland-LUA-analysis-Phase1.md
@@ -0,0 +1,159 @@
+# 🧭 Hyprland → Lua Migration Analysis (Phase 1)
+<span style="color:#7dd3fc">Focus: identify scripts/configs that **write Hyprland config files** and therefore must change for Lua.</span>
+
+---
+
+## 📌 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
+<span style="color:#fbbf24">Goal:</span> Identify **files that directly modify Hyprland config on disk** (or generate files sourced by Hyprland), because those will need updating for Lua.
+
+<span style="color:#a3e635">Out of scope:</span> 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
+<span style="color:#f97316">Important:</span>
+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.).
diff --git a/docs/copy.sh-tui-analysis-3-14-2026.md b/docs/copy.sh-tui-analysis-3-14-2026.md
new file mode 100644
index 00000000..2b94e693
--- /dev/null
+++ b/docs/copy.sh-tui-analysis-3-14-2026.md
@@ -0,0 +1,105 @@
+# copy.sh vs TUI Installer Parity Report (2026-03-14)
+
+This report compares the Bash-based `copy.sh` flow (including helper scripts) against the Python/Textual TUI installer in `../Hyprland-Dots-TUI-Installer/`.
+
+## ✅ Parity Matches
+
+### Core Modes & Flow
+- Install / Upgrade / Express workflows exist in both.
+ - `copy.sh`, `scripts/copy_menu.sh`
+ - TUI: `src/dots_tui/__main__.py`, `src/dots_tui/screens/menu.py`, `src/dots_tui/logic/orchestrator.py`
+
+### Safety / Setup
+- Root check (both abort if root).
+- Repo update flow (stash + pull + summary).
+- Logs written to `Copy-Logs/` with per-run log file.
+
+### Hardware / OS Detection + Tweaks
+- Nvidia / VM / NixOS tweaks.
+ - `scripts/lib_detect.sh`
+ - `src/dots_tui/logic/orchestrator.py`, `src/dots_tui/logic/system.py`
+
+### User Prompts / Config Choices
+- Keyboard layout detect + confirmation.
+- Resolution selection (<1440p vs ≥1440p).
+- 12h/24h clock (waybar + hyprlock edits).
+- Default editor selection (nvim/vim).
+- Optional app enablement: asusctl, blueman, ags, quickshell.
+
+### Copy / Backup / Restore
+- Phase1 copy w/ replace prompts: fastfetch, kitty, rofi, swaync.
+- Waybar merge semantics (backup, merge configs/styles/UserModules).
+- Phase2 copy (btop, cava, hypr, etc.).
+- Restore user configs / scripts / hypr files (with express skip).
+- Duplicate UserConfigs cleanup.
+
+### Wallpapers
+- Base wallpaper copy to `~/Pictures/wallpapers`.
+- Optional 1GB Wallpaper-Bank download (skipped in express).
+
+### Finalization
+- chmod scripts, waybar symlinks, cleanup backups, wallust init.
+
+## ⚠️ Parity Gaps (Missing or Divergent Behavior)
+
+### 1) waybar-weather install + config handling
+`copy.sh` does **two things** the TUI does not:
+- **Installs waybar-weather binary**
+ - `scripts/lib_apps.sh`: `install_waybar_weather()`
+ - `copy.sh`: calls it on non-NixOS, or warns on NixOS.
+- **Copies waybar-weather config + prompts for units**
+ - `copy.sh`: block near `WAYBAR_WEATHER_SRC / DEST` (install/upgrade/express logic + Fahrenheit prompt).
+
+✅ **TUI currently has no references to waybar-weather**.
+
+---
+
+### 2) KeybindsLayoutInit always enabled
+`copy.sh` always ensures `exec-once = $scriptsDir/KeybindsLayoutInit.sh` via `ensure_keybinds_init` (called unconditionally).
+
+TUI only adds it if **one of** (asus / blueman / ags / quickshell) is enabled:
+- `src/dots_tui/logic/orchestrator.py` → `_apply_user_choices`
+
+So if user disables all optional apps, TUI skips it while `copy.sh` still adds it.
+
+---
+
+### 3) Waybar symlink enforcement
+`copy.sh` forces `~/.config/waybar/config` and `style.css` to be symlinks even if they are regular files.
+
+TUI only replaces them **if missing or already a symlink**:
+- `src/dots_tui/logic/orchestrator.py` → `_finalize_post_copy`
+
+So regular files won’t be converted in TUI.
+
+---
+
+### 4) Express mode + SDDM 12h edits
+`copy.sh` explicitly **skips SDDM 12h edits** in express mode to avoid sudo prompts.
+
+TUI still attempts SDDM edits if user chooses 12h:
+- `src/dots_tui/logic/orchestrator.py` → `_finalize_post_copy` (SDDM clock edits run whenever `clock_24h` is false).
+
+---
+
+### 5) Menu behavior / CLI flags
+- `copy.sh` supports `--tty` to force non-whiptail menu.
+- TUI has no equivalent.
+
+---
+
+## ✅ TUI-only Extras (Not in copy.sh)
+- Dry-run / plan mode (`--dry-run`).
+- Download repo (clone flow).
+- Path safety guard (prevents deletes outside `$HOME`).
+- Default wallpaper initialization if `.wallpaper_current` missing.
+
+---
+
+## Summary
+The TUI installer is **mostly aligned** with `copy.sh`, but **not full parity** due to:
+1) Missing `waybar-weather` binary + config + units prompt
+2) KeybindsLayoutInit not always added
+3) Waybar symlink enforcement behavior mismatch
+4) Express-mode SDDM 12h edits mismatch
+5) Minor CLI/menu flag mismatch
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage