From 23d85a992be570b3a1394cebdd0ad3eb4a6ccd5d Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 11 Aug 2026 11:56:03 +0200 Subject: [PATCH] Open the keybindings menu on first login The welcome toast spent three lines telling you about a cheatsheet that takes one keystroke to read, and the only way to act on it was to click the toast, which opened that cheatsheet. Open it directly instead. Dismissing the menu exits non-zero, since no selection was made, so the step tolerates that rather than failing first run and retrying the whole sequence next login. It also goes last now. The menu blocks until it is answered, and the Wi-Fi and update toasts are the only other things left to show, so sending those first leaves them waiting underneath rather than behind an open menu. Co-Authored-By: Claude Opus 5 --- bin/omarchy-provision-first-run | 8 ++++---- docs/file-layout.md | 7 ++++--- install/user/first-run/keybindings.sh | 4 ++++ install/user/first-run/welcome.sh | 3 --- 4 files changed, 12 insertions(+), 10 deletions(-) create mode 100644 install/user/first-run/keybindings.sh delete mode 100644 install/user/first-run/welcome.sh diff --git a/bin/omarchy-provision-first-run b/bin/omarchy-provision-first-run index 66e735d8..ccb650b4 100755 --- a/bin/omarchy-provision-first-run +++ b/bin/omarchy-provision-first-run @@ -83,12 +83,12 @@ run_first_run_step "apply speaker tuning" \ bash "$OMARCHY_PATH/install/user/first-run/audio-tuning.sh" omarchy-notification-wait || log_first_run "Timed out waiting for notification service; continuing" -# Each send returns only once the server has taken the toast, so sending in -# order is enough to stack them newest-on-top. -run_first_run_step "show welcome notification" \ - bash "$OMARCHY_PATH/install/user/first-run/welcome.sh" run_first_run_step "show Wi-Fi/update notifications" \ bash "$OMARCHY_PATH/install/user/first-run/wifi.sh" +# Waits for the menu to be answered, so it goes last and leaves the toasts +# waiting underneath. +run_first_run_step "show keybindings" \ + bash "$OMARCHY_PATH/install/user/first-run/keybindings.sh" if (( first_run_failed == 0 )); then omarchy-done mark "$FIRST_RUN_DONE" diff --git a/docs/file-layout.md b/docs/file-layout.md index 5f161359..0acf54c9 100644 --- a/docs/file-layout.md +++ b/docs/file-layout.md @@ -237,9 +237,10 @@ systemd instance: - `install/user/first-run/gnome-theme.sh`, `install/user/first-run/gtk-primary-paste.sh` — GNOME/GTK settings that need the dconf daemon. -- `install/user/first-run/welcome.sh`, - `install/user/first-run/wifi.sh` — welcome and Wi-Fi/update toasts - (waits for a live notification server before firing). +- `install/user/first-run/wifi.sh` — Wi-Fi/update toasts (waits for a live + notification server before firing). +- `install/user/first-run/keybindings.sh` — opens the keybindings menu to + greet the first login; blocks until it is answered. The entire sequence has one idempotency marker: `~/.local/state/omarchy/done/first-run-user`, managed by `omarchy-done`. diff --git a/install/user/first-run/keybindings.sh b/install/user/first-run/keybindings.sh new file mode 100644 index 00000000..c20f1efb --- /dev/null +++ b/install/user/first-run/keybindings.sh @@ -0,0 +1,4 @@ +# Greet the first login with the cheatsheet itself rather than a toast +# pointing at it. The menu blocks until it is answered, and dismissing it +# exits non-zero, which is a normal way to close it. +omarchy-menu-keybindings || true diff --git a/install/user/first-run/welcome.sh b/install/user/first-run/welcome.sh deleted file mode 100644 index dfbc2e20..00000000 --- a/install/user/first-run/welcome.sh +++ /dev/null @@ -1,3 +0,0 @@ -omarchy-notification-send -u critical -g  "Learn Keybindings" \ - "Super + K for cheatsheet.\nSuper + Space for application launcher.\nSuper + Alt + Space for Omarchy Menu." \ - --exec omarchy-menu-keybindings