funman300 d0fef1478d niri-scratchpad: pull shown window to focused output; don't drop tiles
Two fixes found reviewing the paths the acceptance suite couldn't cover.

Show-while-shown-elsewhere used activate_window, which sets
active_monitor_idx and so dragged *focus* to whichever output the window
was parked on. A scratchpad should come to you: if the window is on
another monitor, remove and re-add it floating on the active workspace;
if it is already on the active monitor, focus in place as before.

add_removed_tile_floating dropped the RemovedTile on both of its early
returns (NoOutputs, monitor-not-found), destroying the window while its
client was still alive and leaving it wedged with no surface anywhere.
Both were unreachable via scratchpad_show's guards, but it is a
window-loss footgun for the next caller. It now returns
Result<(), RemovedTile<W>> so callers can stash the tile instead.

Adds two layout tests (they simulate outputs, so multi-monitor is
covered without a second physical display) and corrects the acceptance
suite's test-8 skip message, which claimed the code used active_output
— it never did; it uses active_workspace.

cargo test --lib scratchpad: 10/10. acceptance.py: 8 passed, 0 failed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 16:47:06 -07:00

Dotfiles (Niri + Wayland)

A personal Wayland desktop configuration centered around the Niri tiling compositor.

Area Tool
Compositor niri
Bar waybar
Terminal alacritty
Shell fish + starship
Launcher wofi
Notifications mako
Lockscreen hyprlock
Login/greeter greetd + regreet
Wallpaper awww
Screenshots grim + slurp + satty
Clipboard cliphist
Theme Tomorrow Night (GTK: Materia-dark, icons: Papirus)

Everything is symlinked into ~/.config via install.sh, with packages listed in packages.txt.

Setup

git clone git@github.com:YOURNAME/dotfiles.git
cd dotfiles
./install.sh

One-time hibernation enablement

Hibernation requires a persistent swap file, kernel resume parameters, and a regenerated UKI. Run once, then reboot:

sudo bash scripts/enable-hibernation.sh

After reboot, systemctl hibernate will work, and lid close / 30-min idle will suspend-then-hibernate per the tracked logind config.

One-time NetworkManager activation

After install.sh deploys the NetworkManager config, swap from systemd-networkd to NetworkManager (one-time, persistent across reboots):

sudo systemctl disable --now systemd-networkd
sudo systemctl enable --now NetworkManager

Wifi will drop for a few seconds and reconnect via iwd's stored profiles. If reconnection fails, re-enter the wifi password via nm-applet (tray icon) or networkmanager_dmenu (waybar network widget click).

One-time fingerprint setup

After install.sh installs fprintd, enroll a finger and wire it into the sudo + lockscreen auth stacks:

fprintd-enroll                                  # interactive; touch the reader as prompted
sudo bash scripts/enable-fingerprint.sh         # idempotent — safe to re-run

Test with sudo true (should prompt for fingerprint) or Mod+Shift+E to lock + touch the reader.

To enroll additional fingers: fprintd-enroll -f left-thumb (or right-thumb, left-index, etc.).

S
Description
No description provided
Readme 530 KiB
Languages
Python 53.2%
Shell 43%
CSS 3.8%