1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
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
|