When the keyboard hooks fail to start (missing macOS permissions, no evdev access on Linux/Wayland), the tray now shows a "⚠ Setup Guide" alert entry, a tooltip warning and a one-shot notification pointing at docs/PERMISSIONS.md. That stops the app failing silently — but the user still ends up reading a markdown file to fix their setup.
What's missing is a guided walkthrough window:
- macOS: explain Accessibility + Input Monitoring, deep-link straight into the right System Settings panes (
x-apple.systempreferences: URLs), show the state, offer "check again". Screenshots/GIFs of the toggle would remove the last confusion.
- Linux (Wayland): explain what
scripts/setup-linux.sh does (evdev group + uinput), offer to open a terminal with it / copy the command, and "check again" after re-login. Detect the common half-state where the group is added but the session hasn't picked it up.
- Windows: hooks essentially always start; the window just never shows.
- A persistent, honest banner for the rarer "layout switching unavailable" case (hooks fine, switcher backend not found).
Architecture note: the settings GUI runs as a child process (poltertype --settings) so the tray's event loop and iced's don't fight over the macOS main thread — the walkthrough should be another pane/mode of that child process, launched by the tray alert entry, not a new toolkit surface. See crates/poltertype-app/src/settings_ui/ for the pane pattern.
When the keyboard hooks fail to start (missing macOS permissions, no evdev access on Linux/Wayland), the tray now shows a "⚠ Setup Guide" alert entry, a tooltip warning and a one-shot notification pointing at docs/PERMISSIONS.md. That stops the app failing silently — but the user still ends up reading a markdown file to fix their setup.
What's missing is a guided walkthrough window:
x-apple.systempreferences:URLs), show the state, offer "check again". Screenshots/GIFs of the toggle would remove the last confusion.scripts/setup-linux.shdoes (evdev group + uinput), offer to open a terminal with it / copy the command, and "check again" after re-login. Detect the common half-state where the group is added but the session hasn't picked it up.Architecture note: the settings GUI runs as a child process (
poltertype --settings) so the tray's event loop and iced's don't fight over the macOS main thread — the walkthrough should be another pane/mode of that child process, launched by the tray alert entry, not a new toolkit surface. Seecrates/poltertype-app/src/settings_ui/for the pane pattern.