From 1c9dfc55f4df96b3fd1d487e859eec2ba6168ea8 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 11 Aug 2026 05:30:20 -0700 Subject: [PATCH] Greet the first login with a keybindings toast again Opening the cheatsheet outright put a menu in front of someone who had not asked for one, and it blocked first run until they dismissed it. Go back to a toast that opens the same menu when clicked. The body carries real newlines now. It was written with a literal \n, which the card renders as the two characters rather than a line break. Co-Authored-By: Claude Opus 5 --- bin/omarchy-provision-first-run | 8 ++++---- docs/file-layout.md | 4 ++-- install/user/first-run/keybindings.sh | 4 ---- install/user/first-run/welcome.sh | 5 +++++ 4 files changed, 11 insertions(+), 10 deletions(-) delete mode 100644 install/user/first-run/keybindings.sh create mode 100644 install/user/first-run/welcome.sh diff --git a/bin/omarchy-provision-first-run b/bin/omarchy-provision-first-run index 9b7fa761..76eb0d78 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 "schedule 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 b7b78074..8b577380 100644 --- a/docs/file-layout.md +++ b/docs/file-layout.md @@ -237,11 +237,11 @@ 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` — keybindings toast that greets the + first login and opens the cheatsheet when clicked. - `install/user/first-run/wifi.sh` — Wi-Fi/update toasts (waits for a live notification server before firing, then waits detached on `nm-online` so the update prompt only lands once there is a connection). -- `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 deleted file mode 100644 index c20f1efb..00000000 --- a/install/user/first-run/keybindings.sh +++ /dev/null @@ -1,4 +0,0 @@ -# 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 new file mode 100644 index 00000000..22e6629e --- /dev/null +++ b/install/user/first-run/welcome.sh @@ -0,0 +1,5 @@ +# Real newlines, not a literal \n: the card renders the body as it arrives, and +# elides past three lines. +omarchy-notification-send -u critical -g  "Learn Keybindings" \ + $'Super + K for cheatsheet.\nSuper + Space for Omarchy Menu.' \ + --exec omarchy-menu-keybindings