diff --git a/CLAUDE.md b/CLAUDE.md index 0f01363..6fad7ce 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -105,7 +105,8 @@ quickshell is the **default bar and notification daemon**, spawned by niri as `q - **Close on focus loss:** an open popout folds up as soon as the focus leaves it. Three signals, all of them needed: (1) the host surface losing the keyboard — `PopoutHost` reads Qt's `Window.active`, since Quickshell's `PanelWindow` exposes no focus state of its own; this is the only signal that catches a focus grab by another *layer surface*. (2) niri focusing an actual window (`Niri.focusedWindowId >= 0`). The `>= 0` matters: niri sets window focus to **none** while the popout holds the keyboard (`Window focus changed: None` on the event stream), so reacting to every change would make each open close itself. (3) The focused workspace changing (`Niri.focusedWorkspaceId`) — workspace ids are unique across outputs, so this covers a monitor switch as well; a workspace switch does not necessarily take the keyboard off the popout, which is why (1) does not subsume it. `PopoutHost.sawFocus` gates the first `Window.active == false`, which arrives in the gap between mapping the surface and the compositor handing focus over. - **No exception for auth prompts.** A popout action that raises a pkexec or keyring prompt (camera, cpugov, batsaver, VPN) loses the focus to it and therefore closes the popout; the resulting state shows on the next open. That is a deliberate choice for one rule over a special case — the `OnDemand` keyboard focus in `PopoutHost` still exists so such a prompt can become typeable at all. -- **Launcher:** `Launcher.qml` is the first widget in the left cluster (an apps glyph) and owns `LauncherPopout.qml` — an application launcher over `DesktopEntries.applications` (search field + keyboard-navigable icon+name list; ↑/↓ select, Enter/click launch, Esc close; app icons via `Quickshell.iconPath`). It registers under `launcher` (so it is IPC-addressable) and is bound to `Mod+Space` (`qs -c moonarch ipc call popout toggle launcher`, in `config.kdl`) in addition to icon-click. Scope is app-launch (drun) only; `walker` stays installed and keeps the other modes (run-command, calc, files), but has no keybind of its own left — what still calls it is dmenu duty for the Waybar-reserve scripts (`moonarch-sink-switcher`, `moonarch-cpugov`, `moonarch-vpn`), which is why the package cannot be dropped. +- **Launcher:** `Launcher.qml` is the first widget in the left cluster (an apps glyph) and owns `LauncherPopout.qml` — an application launcher over `DesktopEntries.applications` (search field + keyboard-navigable icon+name list; ↑/↓ select, Enter/click launch, Esc close; app icons via `Quickshell.iconPath`). It registers under `launcher` (so it is IPC-addressable) and is bound to `Mod+Space` (`qs -c moonarch ipc call popout toggle launcher`, in `config.kdl`) in addition to icon-click. Scope is app-launch (drun) only. + - **`walker` is gone.** It and the whole `elephant` provider set were uninstalled on 2026-09-11, and `packages/aur.txt` followed on 2026-09-14. The launcher and `ClipboardPopout` had already taken over its two used modes. What did not follow it out: `defaults/xdg/walker/` (config + 20 theme files, still installed by the PKGBUILD and seeded into homes by `moonarch.install`), `defaults/etc/systemd/user/walker.service`, and the three dmenu scripts `moonarch-sink-switcher`, `moonarch-cpugov`, `moonarch-vpn`, which still shell out to `walker` and therefore do nothing. Waybar's `on-click` for the audio and cpugov modules points at the first two, so **those two Waybar modules are dead** while Waybar is the reserve bar. Porting them to `fuzzel`/`wofi` or dropping them is open. - **Launching goes through `app2unit`, a hard dependency.** `entry.execute()` spawns the app as a child of quickshell, and a child inherits its parent's cgroup — so every launched app lands inside `quickshell.service` and systemd kills it along with the unit whenever the bar restarts. `app2unit` wraps `systemd-run` and hands each app its own transient `app-*.scope`, the same shape niri gives the windows it spawns itself. It is an **external AUR package** (`app2unit`), not a systemd builtin: `Quickshell.execDetached` fails silently on a missing binary, so without it the launcher looks alive and starts nothing, with no trace in the quickshell log. `NetworkPopout.qml` uses it for `nm-connection-editor` for the same reason. NixOS carries it in the system environment, which is why the switch went unnoticed there. - **`Terminal=true` entries need a second package.** They go through `app2unit-term`, which hardcodes `A2U__TERMINAL_HANDLER=xdg-terminal-exec` and calls `check_terminal_handler()` before launching: a missing binary is `error "Terminal launch requested but 'xdg-terminal-exec' is unavailable!"` + `exit 1`, with no fallback to `$TERMINAL`. So `xdg-terminal-exec` (AUR) is as hard a dependency as `app2unit` itself, for terminal entries only — the failure is partial and therefore easy to miss: GUI apps keep launching while every terminal entry does nothing. @@ -143,7 +144,7 @@ The video player is `mpv` with [ModernZ](https://github.com/Samillion/ModernZ) a Diagnostic script that checks the system state against moonarch defaults: - Packages (official.txt + aur.txt installed? Orphans?) - System services (NetworkManager, bluetooth, greetd, ufw, power-profiles-daemon, etc.) -- User services (kanshi, wlsunset, stasis, walker, nautilus, cliphist-text, cliphist-image) +- User services (kanshi, wlsunset, stasis, nautilus, cliphist-text, cliphist-image) - Config files (SHA256 comparison deployed vs. moonarch default) - Helper scripts + symlinks (moonup, moondoc) - System config (UFW, pacman/paru repos, default shell) diff --git a/packages/aur.txt b/packages/aur.txt index a6b8dd2..b5efac2 100644 --- a/packages/aur.txt +++ b/packages/aur.txt @@ -21,18 +21,6 @@ kvantum-theme-catppuccin-git otf-openmoji # Niri / Wayland Extras -walker-bin -elephant-desktopapplications-bin -elephant-clipboard-bin -elephant-bluetooth-bin -elephant-calc-bin -elephant-runner-bin -elephant-files-bin -elephant-providerlist-bin -elephant-niriactions-bin -elephant-wireplumber-bin -waybar-niri-windows-bin -waybar-niri-workspaces-enhanced-git wdisplays-persistent-gettext wl-color-picker diff --git a/packages/official.txt b/packages/official.txt index 4b19bd2..226a990 100644 --- a/packages/official.txt +++ b/packages/official.txt @@ -59,9 +59,7 @@ kanshi xwayland-satellite # Desktop Utilities -waybar quickshell -swaync cliphist wl-clipboard wlsunset