From 5ab83d6e6f5cab4d8e41da8dc5e4663bbadba4a6 Mon Sep 17 00:00:00 2001 From: Rick Peters Date: Thu, 24 Sep 2026 12:55:51 +0200 Subject: [PATCH] feat: Restart question on quit is "Restart now? [Y/n]" When a restart is needed, q asks with yes as the default; n goes back to the menu and the next q asks again. Ctrl+C quits without restarting; scripted input that runs out never restarts. --- AGENTS.md | 6 ++++-- CHANGELOG.md | 6 +++++- README.md | 4 +++- steamify.sh | 43 +++++++++++++++++++++++++++---------------- 4 files changed, 39 insertions(+), 20 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index b37b470..16fa88a 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -147,8 +147,10 @@ gamescope and the Plasma desktop. Primary target: the Valve Steam Machine device check, never flashes) and a faked version (dev-env `BIOS_VERSION=F7F0107 ./run.sh --fremont`). - The entry point loops: menu, run, "back to the menu" (or `[m]`/`[r]` when a - restart is needed), until `q`; the restart question is asked once at the - end. Scripted input that runs out ends the loop like `q`. + restart is needed), until `q`. When a restart is needed, `q` asks "Restart + now? [Y/n]" (`quit_prompt`): `n` goes back to the menu, the next `q` asks + again. Scripted input that runs out quits without restarting (never + restart on EOF: `ask_yn` would take its default). - Steamify shortcut (`launcher`): the icon runs `curl | bash` of `releases/latest/download/steamify.sh` in Konsole, so it's always the newest release. Its icon, `assets/steam-gaming-settings.svg` diff --git a/CHANGELOG.md b/CHANGELOG.md index 63785ef..6ca9f6d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,11 +7,15 @@ one per merged pull request. ## 0.9.1 - 2026-09-24 -- **fix: LED driver for every kernel on a fresh install** +- `2e107e5` **fix: LED driver for every kernel on a fresh install** - The DKMS override was written to `/etc/dkms` before `dkms` was installed, when that folder doesn't exist yet, so it silently failed and the build for other kernels (e.g. LTS) failed as in 0.6. The folder is created first now, and a failed write stops with an error. +- **feat: Restart question on quit is "Restart now? [Y/n]"** + - When something needs a restart, `q` asks with yes as the default; `n` goes + back to the menu and the next `q` asks again. Ctrl+C quits without + restarting; scripted input that runs out never restarts. ## 0.9.0 - 2026-09-24 (#9) diff --git a/README.md b/README.md index 8f880b3..9498e31 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,9 @@ to restart (needed for changes to how the PC starts). After each run the menu comes back with the new state, so you can change more in one go; quit with **q**. When something needs a restart, you choose -between going back to the menu and restarting now; quitting asks once more. +between going back to the menu and restarting now. Quitting then asks +"Restart now? [Y/n]": **n** takes you back to the menu (and the next **q** +asks again); Ctrl+C quits without restarting. Run it again whenever you like - to change your choices, to turn things off again, or after a CachyOS update (press `a` in the menu to re-apply diff --git a/steamify.sh b/steamify.sh index 92d665b..f305511 100755 --- a/steamify.sh +++ b/steamify.sh @@ -78,13 +78,36 @@ after_run() { done } +quit_prompt() { + # On q: when something needs a restart, offer it (default yes); "n" goes + # back to the menu, and the next q asks again. Returns 0 to show the menu + # again, 1 to quit (nothing to restart, or input ended in scripted runs). + local reply + restart_needed || return 1 + echo + if [[ -n "${BIOS_NEEDS_RESTART:-}" ]]; then + warn "The BIOS update is written during the next restart. Keep the power on and" + warn "don't touch the machine until it has fully started again, even if the screen stays black." + else + info "The changes take effect after a restart." + fi + read -rp "$(echo -e "${c_bold}Restart now?${c_reset} [Y/n] (n = back to the menu, Ctrl+C = quit without restarting) ")" reply || return 1 + case "$reply" in + ""|y|Y) restart_now ;; + esac + return 0 +} + # Menu loop: after each run the menu comes back with the new state, until # the user quits; the restart question comes then, once, for everything. RESTART_FOR_LOGIN=false SUDO_KEEPALIVE=false while true; do detect_components - run_menu || break + if ! run_menu; then + quit_prompt && continue + break + fi plan_changes if [[ ${#TO_DISABLE[@]} -eq 0 && ${#TO_ENABLE[@]} -eq 0 ]]; then @@ -130,21 +153,9 @@ while true; do done echo -# A staged BIOS update is written during the restart. -if [[ -n "${BIOS_NEEDS_RESTART:-}" ]]; then - warn "The BIOS update is written during the next restart. Keep the power on and" - warn "don't touch the machine until it has fully started again, even if the screen stays black." - if ask_yn "Restart now to install the BIOS update?" n; then - restart_now - else - info "The BIOS update installs at your next restart." - fi -elif [[ "$RESTART_FOR_LOGIN" == true ]]; then - if ask_yn "Restart now so the changes take effect?" n; then - restart_now - else - info "Restart whenever you're ready." - fi +if restart_needed; then + # Only reached when input ended (scripted runs): never restart then. + info "Not restarted; the changes take effect after a restart." else info "Bye." fi