aboutsummaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/HOWTO-Upgrade-Dotfiles.es.md51
-rw-r--r--docs/HOWTO-Upgrade-Dotfiles.md51
-rw-r--r--docs/Hyprland-LUA-analysis-Phase1.md159
-rw-r--r--docs/Keybinds.md258
-rw-r--r--docs/copy.sh-tui-analysis-3-14-2026.md105
5 files changed, 237 insertions, 387 deletions
diff --git a/docs/HOWTO-Upgrade-Dotfiles.es.md b/docs/HOWTO-Upgrade-Dotfiles.es.md
new file mode 100644
index 00000000..a5bf0271
--- /dev/null
+++ b/docs/HOWTO-Upgrade-Dotfiles.es.md
@@ -0,0 +1,51 @@
+# Cómo actualizar los instaladores y dotfiles de KoolDots
+
+- Al actualizar los dotfiles, actualice primero el instalador
+ - Esto garantiza que se instalen las dependencias nuevas o actualizadas
+ - Elimine las versiones antiguas del instalador de su distribución
+ - Por ejemplo: `Arch-Hyprland` o `Debian-Hyprland`
+ - `rm -r ~/Arch-Hyprland` (o la distribución que esté utilizando)
+ - Clone el instalador más reciente para su distribución.
+
+```sh
+ git clone https://github.com/Linuxbeginnings/Arch-Hyprland --depth 1
+ cd ~/Arch-Hyprland
+ install-scripts/update-deps.sh
+```
+
+- Elimine el directorio antiguo de `Hyprland-Dots` si corresponde
+ - Clone la versión más reciente de Hyprland-Dots
+
+```sh
+ git clone https://github.com/Linuxbeginnings/Hyprland-Dots --depth 1
+ cd ~/Hyprland-Dots
+ ./copy.sh
+ seleccione `Express update`
+```
+
+- `Express update` es más rápido y muchas de las preguntas de restauración ya no son necesarias
+- Especialmente al migrar desde los archivos de configuración antiguos en `Hyprlang` a los archivos de configuración en `LUA`
+- Un atajo útil es:
+ `./copy.sh --express-upgrade`
+ - También hay disponible un menú simple en `TTY`:
+ - `./copy.sh --tty --express-upgrade`
+
+- Si no hubo errores, reinicie el sistema con `reboot`
+
+| Nota: Si desea mantener limpio su directorio personal ($HOME), puede mover estos directorios
+
+- Para usuarios más familiarizados con `git`:
+ - Ejecute:
+ - Arch se muestra aquí como ejemplo:
+
+ ```sh
+ cd ~/Arch-Hyprland
+ git stash && git pull
+ install-scripts/update-deps.sh
+ cd ~/Hyprland-Dots
+ git stash && git pull
+ ./copy.sh
+ seleccione Express Upgrade
+ ```
+
+ | Nota: Este método puede generar ocasionalmente conflictos de fusión (`merge`) en `git`. El método anterior siempre funciona
diff --git a/docs/HOWTO-Upgrade-Dotfiles.md b/docs/HOWTO-Upgrade-Dotfiles.md
new file mode 100644
index 00000000..3561a574
--- /dev/null
+++ b/docs/HOWTO-Upgrade-Dotfiles.md
@@ -0,0 +1,51 @@
+# How to upgrade the KoolDots Installers and Dotfiles
+
+- On updates to dotfiles, update the installer first
+ - This ensures that any new or updated dependencies get installed
+ - Remove any old versions of your distro installer
+ - I.e. `Arch-Hyprland` or `Debian-Hyprland`
+ - `rm -r ~/Arch-Hyprland` (Or whatever distro you are using)
+ - Clone the latest installer for your distro.
+
+```sh
+ git clone https://github.com/Linuxbeginnings/Arch-Hyprland --depth 1
+ cd ~/Arch-Hyprland
+ install-scripts/update-deps.sh
+```
+
+- Remove old `Hyprland-Dots` if applicable
+ - Clone latest Hyprland-Dots
+
+```sh
+ git clone https://github.com/Linuxbeginnings/Hyprland-Dots --depth 1
+ cd ~/Hyprland-Dots
+ ./copy.sh
+ select `Express update`
+```
+
+- `Express update` is faster and many of the restore questions are no longer needed
+- Especially moving from the old `Hyprlang` config files to `LUA` config files
+- A handy shortcut is:
+ `./copy.sh --express-upgrade`
+ - A simple `TTY` menu is also available
+ - `./copy.sh --tty --express-upgrade`
+
+- Assuming no errors `reboot`
+
+| Note: If you want to de-clutter your home directory you can move these directories
+
+- For those more familiar with `git`
+ - Run:
+ - Arch here is example
+
+ ```sh
+ cd ~/Arch-Hyprland
+ git stash && git pull
+ install-scripts/update-deps.sh
+ cd ~/Hyprland-Dots
+ git stash && git pull
+ ./copy.sh
+ select Express Upgrade
+ ```
+
+ | Note: This method on occasion can generate `git` merge errors. Method above always works
diff --git a/docs/Hyprland-LUA-analysis-Phase1.md b/docs/Hyprland-LUA-analysis-Phase1.md
deleted file mode 100644
index e08901db..00000000
--- a/docs/Hyprland-LUA-analysis-Phase1.md
+++ /dev/null
@@ -1,159 +0,0 @@
-# 🧭 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/Keybinds.md b/docs/Keybinds.md
index c0e91d74..4044c149 100644
--- a/docs/Keybinds.md
+++ b/docs/Keybinds.md
@@ -1,178 +1,190 @@
# Hyprland Default Keybinds
-Source: `config/hypr/configs/Keybinds.conf`
+Source: `config/hypr/lua/keybinds.lua`
## Legend
-- `SUPER` = `$mainMod`
+- `SUPER` = `$mainMod` (Super / Windows key)
- `code:10..19` = number row `1..0`
-- Arrows/print/media keys are shown with their readable names
+- Arrows, function keys, mouse triggers, and media keys are shown with their readable names
-## Duplicate Audit
-### Intentional stacked bind
+## Duplicate / Intentional Stacked Binds Audit
- `ALT + Tab`
- - `cyclenext` (cycle next window)
- - `bringactivetotop` (raise newly selected/covered window)
-
-### Potential conflicts
-- None currently detected in `Keybinds.conf` (excluding intentional stacked binds).
+ - `cyclenext` (cycles window focus via `LuaCycleWindow.sh next`)
+- `SUPER + Tab` / `SUPER + SHIFT + Tab`
+ - Group active cycle (`changegroupactive f/b`) and workspace cycle (`workspace e+1/e-1`)
## Launcher / App Shortcuts
-- `SUPER + D` — App launcher (Rofi)
-- `SUPER + Return` — Terminal
-- `SUPER + SHIFT + Return` — Dropdown terminal
-- `SUPER + E` — File manager
-- `SUPER + B` — Browser
-- `SUPER + C` — SSH menu
-- `SUPER + S` — Web search
-- `SUPER + CTRL + S` — Window switcher
-- `SUPER + ALT + E` — Emoji menu
-- `SUPER + ALT + C` — Calculator
-- `SUPER + H` — Help / cheat sheet
-- `SUPER + SHIFT + K` — Search keybinds helper
+- `SUPER + D` — App launcher (Rofi drun, filebrowser, run, window)
+- `SUPER + Return` — Terminal (`LaunchTerminal.sh '$term'`)
+- `SUPER + SHIFT + Return` — Dropdown terminal (`Dropterminal.sh kitty`)
+- `SUPER + E` — File manager (`LaunchFileManager.sh '$files' '$term'`)
+- `SUPER + B` — Default browser (`xdg-open "https://"`)
+- `SUPER + C` — SSH session manager (`rofi-ssh-menu.sh`)
+- `SUPER + S` — Web search (`RofiSearch.sh`)
+- `SUPER + CTRL + S` — Window switcher (`rofi -show window`)
+- `SUPER + ALT + E` — Emoji menu (`RofiEmoji.sh`)
+- `SUPER + ALT + C` — Calculator (`RofiCalc.sh`)
+- `SUPER + SHIFT + M` — Online music & stations (`RofiBeats.sh`)
+- `SUPER + H` — Help / cheat sheet (`KeyHints.sh`)
+- `SUPER + SHIFT + K` — Search keybinds helper (`KeyBinds.sh`)
-## Appearance / Theme / Wallpaper
-- `SUPER + T` — Global theme switcher
-- `SUPER + CTRL + R` — Rofi theme selector
-- `SUPER + CTRL + SHIFT + R` — Modified Rofi theme selector
-- `SUPER + CTRL + K` — Kitty theme selector
-- `SUPER + CTRL + G` — Ghostty theme selector
-- `SUPER + SHIFT + O` — Change ZSH theme
-- `SUPER + W` — Select wallpaper
-- `SUPER + SHIFT + W` — Wallpaper effects
-- `CTRL + ALT + W` — Random wallpaper
-- `SUPER + CTRL + O` — Toggle active window opacity
-- `SUPER + ALT + O` — Toggle blur
-- `SUPER + SHIFT + B` — Set static rainbow border
+## Appearance / Theme / Wallpaper / Zoom
+- `SUPER + T` — Global theme switcher using Wallust (`ThemeChanger.sh`)
+- `SUPER + CTRL + R` — Rofi theme selector (`RofiThemeSelector.sh`)
+- `SUPER + CTRL + SHIFT + R` — Modified Rofi theme selector (`RofiThemeSelector-modified.sh`)
+- `SUPER + CTRL + K` — Kitty theme selector (`Kitty_themes.sh`)
+- `SUPER + CTRL + G` — Ghostty theme selector (`Ghostty_themes.sh`)
+- `SUPER + SHIFT + O` — Change Oh-My-Zsh theme (`ZshChangeTheme.sh`)
+- `SUPER + SHIFT + A` — Animations menu (`Animations.sh`)
+- `SUPER + W` — Select wallpaper (`WallpaperSelect.sh`)
+- `SUPER + SHIFT + W` — Wallpaper effects (`WallpaperEffects.sh`)
+- `CTRL + ALT + W` — Random wallpaper (`WallpaperRandom.sh`)
+- `SUPER + CTRL + O` — Toggle active window opacity (`setprop active opaque toggle`)
+- `SUPER + ALT + O` — Toggle blur (`ChangeBlur.sh`)
+- `SUPER + SHIFT + B` — Set static rainbow border (`RainbowBorders-low-cpu.sh --run-once`)
+- `SUPER + ALT + mouse_down` — Zoom in (`cursor:zoom_factor * 2.0`)
+- `SUPER + ALT + mouse_up` — Zoom out (`cursor:zoom_factor / 2.0`)
## Panels / Menus / Bar
-- `SUPER + A` — Desktop overview
-- `SUPER + CTRL + A` — AGS overview
-- `SUPER + SHIFT + E` — Quick settings
-- `SUPER + SHIFT + N` — Notification panel
-- `SUPER + CTRL + ALT + B` — Toggle waybar
-- `SUPER + CTRL + B` — Waybar styles menu
-- `SUPER + ALT + B` — Waybar layout menu
-- `SUPER + ALT + R` — Refresh bar/menus
+- `SUPER + A` — Desktop overview (`OverviewToggle.sh`)
+- `SUPER + SHIFT + E` — Quick settings menu (`Kool_Quick_Settings.sh`)
+- `SUPER + SHIFT + N` — Notification panel (`swaync-client -t -sw`)
+- `SUPER + CTRL + ALT + B` — Toggle Waybar on/off (`pkill -SIGUSR1 waybar`)
+- `SUPER + CTRL + B` — Waybar styles menu (`WaybarStyles.sh`)
+- `SUPER + ALT + B` — Waybar layout menu (`WaybarLayout.sh`)
+- `SUPER + ALT + R` — Refresh bar and menus (`Refresh.sh`)
-## Session / System
-- `SUPER + Q` — Close active window
-- `SUPER + SHIFT + Q` — Terminate active process
-- `CTRL + ALT + Delete` — Exit Hyprland
-- `CTRL + ALT + L` — Lock screen
-- `CTRL + ALT + P` — Power menu
-- `CTRL + ALT + D` — Toggle dock (nwg-dock)
-- `SUPER + SHIFT + H` — Toggle active-window mute
-- `SUPER + SHIFT + G` — Toggle game mode
-- `SUPER + N` — Toggle night light
+## Session / System Controls
+- `SUPER + Q` — Close active window (`killactive`)
+- `SUPER + SHIFT + Q` — Terminate active process (`KillActiveProcess.sh`)
+- `CTRL + ALT + Delete` — Exit Hyprland / logout menu (`Logout.sh`)
+- `CTRL + ALT + L` — Lock screen (`LockScreen.sh`)
+- `CTRL + ALT + P` — Power menu (`Wlogout.sh`)
+- `SUPER + SHIFT + H` — Toggle mute/unmute for active window (`Toggle-Active-Window-Audio.sh`)
+- `SUPER + SHIFT + G` — Toggle game mode (`GameMode.sh`)
+- `SUPER + N` — Toggle night light (`Hyprsunset.sh toggle`)
## Window State / Float / Fullscreen
-- `SUPER + F` — Maximize window
-- `SUPER + SHIFT + F` — Fullscreen
-- `SUPER + Space` — Toggle floating
-- `SUPER + ALT + Space` — Float all windows
+- `SUPER + F` — Maximize window (`fullscreen 1`)
+- `SUPER + SHIFT + F` — Fullscreen (`fullscreen 0`)
+- `SUPER + Space` — Toggle floating current window (`togglefloating`)
+- `SUPER + ALT + Space` — Float all windows (`Float-all-Windows.sh`)
+- `SUPER + CTRL + Space` — Float all windows same size (`float.all.samesize.lua`)
## Layout Controls
### Global layout selection
-- `SUPER + ALT + L` — Toggle layouts
-- `SUPER + ALT + 1/2/3/4` — Dwindle / Master / Scrolling / Monocle
+- `SUPER + ALT + L` — Toggle layouts (`ChangeLayout.sh toggle`)
+- `SUPER + ALT + 1` — Dwindle layout (`ChangeLayout.sh dwindle`)
+- `SUPER + ALT + 2` — Master layout (`ChangeLayout.sh master`)
+- `SUPER + ALT + 3` — Scrolling layout (`ChangeLayout.sh scrolling`)
+- `SUPER + ALT + 4` — Monocle layout (`ChangeLayout.sh monocle`)
### Master layout
-- `SUPER + I` — Add master
-- `SUPER + CTRL + D` — Remove master
-- `SUPER + CTRL + Return` — Swap with master
+- `SUPER + I` — Add master (`layoutmsg addmaster`)
+- `SUPER + CTRL + D` — Remove master (`layoutmsg removemaster`)
+- `SUPER + CTRL + Return` — Swap with master (`layoutmsg swapwithmaster`)
### Dwindle layout
-- `SUPER + SHIFT + I` — Toggle split
-- `SUPER + P` — Toggle pseudo
+- `SUPER + SHIFT + I` — Toggle split (`layoutmsg togglesplit`)
+- `SUPER + P` — Toggle pseudo (`pseudo`)
+- `SUPER + M` — Set split ratio 0.3 (`splitratio 0.3`)
### Scrolling layout
-- `SUPER + SHIFT + , / .` — Move column left/right
-- `SUPER + ALT + , / .` — Swap column left/right
-- `SUPER + R` — Cycle column width presets
-- `SUPER + ALT + H` — Horizontal direction
-- `SUPER + CTRL + V` — Vertical direction
-- `SUPER + ALT + S` — Toggle horizontal/vertical direction
+- `SUPER + SHIFT + period` — Move to right column (`layoutmsg move +col`)
+- `SUPER + SHIFT + comma` — Move to left column (`layoutmsg move -col`)
+- `SUPER + ALT + comma` — Swap columns left (`layoutmsg swapcol l`)
+- `SUPER + ALT + period` — Swap columns right (`layoutmsg swapcol r`)
+- `SUPER + R` — Cycle column width preset (`0.25`, `0.33`, `0.5`, `0.66`, `0.75`, `1.0`)
+- `SUPER + ALT + H` — Horizontal scroll direction right (`scrolling:direction right`)
+- `SUPER + CTRL + V` — Vertical scroll direction down (`scrolling:direction down`)
+- `SUPER + ALT + S` — Toggle scrolling direction (Horizontal / Vertical)
-## Focus / Move / Resize
+## Focus / Move / Resize / Swap
### Focus
-- `SUPER + j/k` — Cycle next/previous (layout-aware)
-- `SUPER + Left/Right/Up/Down` — Focus by direction
+- `SUPER + j` — Cycle next window (layout-aware via `LayoutKeybindDispatch.sh cycle-next`)
+- `SUPER + k` — Cycle previous window (layout-aware via `LayoutKeybindDispatch.sh cycle-prev`)
+- `SUPER + Left/Right/Up/Down` — Focus window by direction (layout-aware via `LayoutKeybindDispatch.sh focus-*`)
+- `ALT + Tab` — Cycle next window (`LuaCycleWindow.sh next`)
### Move windows
-- `SUPER + CTRL + Left/Right/Up/Down` — Move window by direction
+- `SUPER + CTRL + Left/Right/Up/Down` — Move window by direction (`movewindow l/r/u/d`)
### Swap windows
-- `SUPER + ALT + Left/Right/Up/Down` — Swap window by direction
+- `SUPER + ALT + Left/Right/Up/Down` — Swap window by direction (`LuaSwapWindow.sh l/r/u/d`)
### Resize windows
-- `SUPER + SHIFT + Left/Right` — Width -/+50
-- `SUPER + SHIFT + Up/Down` — Height -/+50
+- `SUPER + SHIFT + Left` — Width -50 (`resizeactive -50 0`)
+- `SUPER + SHIFT + Right` — Width +50 (`resizeactive 50 0`)
+- `SUPER + SHIFT + Up` — Height -50 (`resizeactive 0 -50`)
+- `SUPER + SHIFT + Down` — Height +50 (`resizeactive 0 50`)
### Mouse drag controls
-- `SUPER + mouse:272` — Move window
-- `SUPER + mouse:273` — Resize window
+- `SUPER + mouse:272` (Left click drag) — Move window (`movewindow`)
+- `SUPER + mouse:273` (Right click drag) — Resize window (`resizewindow`)
## Grouping
-- `SUPER + G` — Toggle group
-- `SUPER + Tab` — Group forward
-- `SUPER + SHIFT + Tab` — Group back
-- `SUPER + CTRL + J` — Move into group (left)
-- `SUPER + CTRL + L` — Move into group (right)
-- `SUPER + CTRL + H` — Move out of group
+- `SUPER + G` — Toggle window grouping (`togglegroup`)
+- `SUPER + Tab` — Cycle group window forward (`changegroupactive f`)
+- `SUPER + SHIFT + Tab` — Cycle group window back (`changegroupactive b`)
+- `SUPER + CTRL + J` — Move left into group (`moveintogroup l`)
+- `SUPER + CTRL + H` — Move active window out of group (`moveoutofgroup`)
## Workspaces
### Navigation
-- `SUPER + Tab` — Next workspace
-- `SUPER + SHIFT + Tab` — Previous workspace
-- `SUPER + mouse_down` or `SUPER + .` — Next existing workspace
-- `SUPER + mouse_up` or `SUPER + ,` — Previous existing workspace
+- `SUPER + Tab` — Next workspace (`workspace e+1`)
+- `SUPER + SHIFT + Tab` — Previous workspace (`workspace e-1`)
+- `SUPER + mouse_down` or `SUPER + period` — Next workspace (`workspace e+1`)
+- `SUPER + mouse_up` or `SUPER + comma` — Previous workspace (`workspace e-1`)
### Direct workspace jump
- `SUPER + code:10..19` — Go to workspaces `1..10`
### Move active window (follow)
- `SUPER + SHIFT + code:10..19` — Move to workspaces `1..10`
-- `SUPER + SHIFT + [` / `]` — Move to prev/next workspace
+- `SUPER + SHIFT + [` — Move to previous workspace (`movetoworkspace -1`)
+- `SUPER + SHIFT + ]` — Move to next workspace (`movetoworkspace +1`)
### Move active window (silent)
-- `SUPER + CTRL + code:10..19` — Move silently to workspaces `1..10`
-- `SUPER + CTRL + [` / `]` — Move silently to prev/next workspace
+- `SUPER + CTRL + code:10..19` — Move silently to workspaces `1..10` (`movetoworkspacesilent 1..10`)
+- `SUPER + CTRL + [` — Move silently to previous workspace (`movetoworkspacesilent -1`)
+- `SUPER + CTRL + ]` — Move silently to next workspace (`movetoworkspacesilent +1`)
-### Special workspace / monitor move
-- `SUPER + U` — Toggle special workspace
-- `SUPER + SHIFT + U` — Move to special workspace
-- `SUPER + CTRL + F9/F10/F11/F12` — Move current workspace to monitor left/right/up/down
+### Special workspace & monitor move
+- `SUPER + U` — Toggle special workspace (`togglespecialworkspace`)
+- `SUPER + SHIFT + U` — Move to special workspace (`movetoworkspace special`)
+- `SUPER + CTRL + F9` — Move current workspace to left monitor (`movecurrentworkspacetomonitor l`)
+- `SUPER + CTRL + F10` — Move current workspace to right monitor (`movecurrentworkspacetomonitor r`)
+- `SUPER + CTRL + F11` — Move current workspace to upper monitor (`movecurrentworkspacetomonitor u`)
+- `SUPER + CTRL + F12` — Move current workspace to lower monitor (`movecurrentworkspacetomonitor d`)
-## Overview / Alt-Tab
-- `SUPER + CTRL + Tab` — Hyprview Toggle
-- `ALT + Tab` — Cycle next + bring active to top (intentional pair)
+## Overview / Hyprview
+- `SUPER + CTRL + Tab` — Hyprview Toggle (`toggle-qs-hyprview.sh smartgrid`)
## Screenshots
-- `SUPER + Print` — Screenshot now
-- `SUPER + SHIFT + Print` — Screenshot area
-- `SUPER + CTRL + Print` — Screenshot in 5s
-- `SUPER + CTRL + SHIFT + Print` — Screenshot in 10s
-- `ALT + Print` — Screenshot active window
-- `ALT + SHIFT + S` — Hyprshot region capture
-- `SUPER + SHIFT + S` — Screenshot via swappy flow
+- `SUPER + Print` — Screenshot now (`ScreenShot.sh --now`)
+- `SUPER + SHIFT + Print` — Screenshot area (`ScreenShot.sh --area`)
+- `SUPER + CTRL + Print` — Screenshot in 5s (`ScreenShot.sh --in5`)
+- `SUPER + CTRL + SHIFT + Print` — Screenshot in 10s (`ScreenShot.sh --in10`)
+- `ALT + Print` — Screenshot active window (`ScreenShot.sh --active`)
+- `ALT + SHIFT + S` — Hyprshot region capture to `~/Pictures/Screenshots`
+- `SUPER + SHIFT + S` — Screenshot via Swappy editor (`ScreenShot.sh --swappy`)
## Media / Audio / Hardware Keys
-### Volume & mic
-- `XF86AudioRaiseVolume` / `XF86AudioLowerVolume` — Volume up/down
-- `ALT + XF86AudioRaiseVolume` / `ALT + XF86AudioLowerVolume` — Precise volume up/down
-- `XF86AudioMute` — Toggle output mute
-- `XF86AudioMicMute` — Toggle microphone mute
+### Volume & microphone
+- `XF86AudioRaiseVolume` / `XF86AudioLowerVolume` — Volume up / down (`Volume.sh --inc` / `--dec`)
+- `ALT + XF86AudioRaiseVolume` / `ALT + XF86AudioLowerVolume` — Precise volume up / down (`Volume.sh --inc-precise` / `--dec-precise`)
+- `XF86AudioMute` — Toggle output mute (`Volume.sh --toggle`)
+- `XF86AudioMicMute` — Toggle microphone mute (`Volume.sh --toggle-mic`)
-### Playback
-- `XF86AudioPlayPause` — Play/pause
-- `XF86AudioPause` — Pause
-- `XF86AudioPlay` — Play
-- `XF86AudioNext` / `XF86AudioPrev` — Next/previous track
-- `XF86AudioStop` — Stop
+### Playback controls
+- `XF86AudioPlayPause` / `XF86AudioPause` / `XF86AudioPlay` — Play / pause (`MediaCtrl.sh --pause`)
+- `XF86AudioNext` — Next track (`MediaCtrl.sh --nxt`)
+- `XF86AudioPrev` — Previous track (`MediaCtrl.sh --prv`)
+- `XF86AudioStop` — Stop playback (`MediaCtrl.sh --stop`)
-### Power/device keys
-- `XF86Sleep` — Suspend
-- `XF86Rfkill` — Airplane mode toggle
+### Power & device keys
+- `XF86Sleep` — Suspend (`systemctl suspend`)
+- `XF86Rfkill` — Airplane mode toggle (`AirplaneMode.sh`)
-## Keyboard Layout
-- `Left ALT + Left SHIFT` — Switch keyboard layout globally
-- `Left SHIFT + Left ALT` — Switch keyboard layout per-window
+## Keyboard Layout Switching
+- `Left ALT + Left SHIFT` (`ALT_L + SHIFT_L`) — Switch keyboard layout globally (`KeyboardLayout.sh switch`)
+- `Left SHIFT + Left ALT` (`SHIFT_L + ALT_L`) — Switch keyboard layout per-window (`Tak0-Per-Window-Switch.sh`)
diff --git a/docs/copy.sh-tui-analysis-3-14-2026.md b/docs/copy.sh-tui-analysis-3-14-2026.md
deleted file mode 100644
index 2b94e693..00000000
--- a/docs/copy.sh-tui-analysis-3-14-2026.md
+++ /dev/null
@@ -1,105 +0,0 @@
-# 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