From f01aa93d0e878290579adff9c69bc4401751f52b Mon Sep 17 00:00:00 2001 From: Rick Peters Date: Thu, 24 Sep 2026 11:46:25 +0200 Subject: [PATCH 1/6] feat: Wizard shortcut on the desktop and in the launcher - Menu item: desktop icon + launcher entry that run the newest release in Konsole. - Icon: Valve's return icon with a gear (assets/steam-gaming-settings.svg), published with each release. - Desktop files are written already executable, so Plasma runs them. - VERSION 0.9.0. --- .github/workflows/bundle.yml | 4 +- AGENTS.md | 7 + CHANGELOG.md | 15 ++- README.md | 8 +- assets/steam-gaming-settings.svg | 224 +++++++++++++++++++++++++++++++ lib/menu.sh | 3 +- lib/wizard-shortcut.sh | 80 +++++++++++ setup-gamescope-boot.sh | 4 +- 8 files changed, 336 insertions(+), 9 deletions(-) create mode 100644 assets/steam-gaming-settings.svg create mode 100644 lib/wizard-shortcut.sh diff --git a/.github/workflows/bundle.yml b/.github/workflows/bundle.yml index 1fc7a7b..ffcadb1 100644 --- a/.github/workflows/bundle.yml +++ b/.github/workflows/bundle.yml @@ -72,7 +72,7 @@ jobs: ## Changes in v$VERSION $changes" - gh release create "v$VERSION" dist/setup-gamescope-boot.sh \ + gh release create "v$VERSION" dist/setup-gamescope-boot.sh assets/steam-gaming-settings.svg \ --target "$GITHUB_SHA" --title "v$VERSION" --notes "$notes" --latest # "latest" follows the newest version tag, for the older install URL @@ -85,4 +85,4 @@ jobs: else gh release create latest --title "Latest (v$VERSION)" --notes "$latest_notes" --latest=false fi - gh release upload latest dist/setup-gamescope-boot.sh --clobber + gh release upload latest dist/setup-gamescope-boot.sh assets/steam-gaming-settings.svg --clobber diff --git a/AGENTS.md b/AGENTS.md index 3094a4a..368966b 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -149,6 +149,13 @@ gamescope and the Plasma desktop. Primary target: the Valve Steam Machine - 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`. +- Wizard shortcut (`launcher`): the icon runs `curl | bash` of + `releases/latest/download/setup-gamescope-boot.sh` in Konsole, so it's + always the newest release. Its icon, `assets/steam-gaming-settings.svg` + (Valve's GPL-2.0 return icon with a gear), is a release asset too, and is + downloaded from there (Steam's icon if that fails). Desktop files are + written with their mode already set (`install_executable`): Plasma opens a + desktop icon it first saw non-executable in an editor. - `Relogin=true` means a gamescope that fails to start is relaunched in a tight loop; keep that in mind when changing session handling. diff --git a/CHANGELOG.md b/CHANGELOG.md index 68ba3b0..93eccc2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,18 @@ All notable changes, per version and per commit. Versions follow `setup-gamescope-boot.sh`. Versions before 0.7.0 were numbered afterwards, one per merged pull request. -## 0.8.0 - 2026-09-24 +## 0.9.0 - 2026-09-24 + +- **feat: Wizard shortcut on the desktop and in the launcher** + - New menu item: a "SteamOS Setup Wizard" desktop icon and app launcher entry + that open the newest release of the wizard in Konsole (`curl | bash`). + - Its icon: Valve's Return to Gaming Mode icon with a gear instead of the + arrow (`assets/steam-gaming-settings.svg`), published with every release + and downloaded from there. + - Desktop files are written already executable, so Plasma runs them instead + of opening them in an editor. + +## 0.8.0 - 2026-09-24 (#8) An opt-in BIOS update for the Steam Machine, and a menu that comes back after every run. @@ -40,7 +51,7 @@ every run. - "now F7F0107, newest F7F0108 (own risk)", "F7F0108 waits for a restart", "F7F0107 is up to date"; shorter dry-run line. - `99a95ab` **fix: Kernel legend only mentions the LEDs on a Steam Machine** -- **docs: Last commit hash in the changelog; 0.7.0 was released on its own (#6, #7)** +- `c0014ee` **docs: Last commit hash in the changelog; 0.7.0 was released on its own (#6, #7)** ## 0.7.0 - 2026-09-24 (#6, #7) diff --git a/README.md b/README.md index 87e49f7..b29c091 100644 --- a/README.md +++ b/README.md @@ -24,10 +24,13 @@ Everything you turn off is put back the way it was. 4. **Single user mode** - like SteamOS: never a login or lock screen, no user switching or logging out. Typing a password with a controller is no fun. (Needs 1.) -5. **Steam Machine support** - only shown on a Valve Steam Machine: the +5. **Wizard shortcut** - a "SteamOS Setup Wizard" icon on the desktop and in + the app launcher (the Steam logo with a gear) that opens the newest version + of this wizard in Konsole, so you don't need the install command again. +6. **Steam Machine support** - only shown on a Valve Steam Machine: the driver for the front LED bar, and the hardware settings in Steam (fan, TV control over HDMI-CEC). -6. **Update BIOS** - only on a Steam Machine, opt-in and at your own risk: +7. **Update BIOS** - only on a Steam Machine, opt-in and at your own risk: installs the newest Steam Machine BIOS from Valve (see [BIOS updates](#bios-updates-steam-machine)). @@ -359,6 +362,7 @@ gamescope-session, ...) stay installed. | `lib/vapor-theme.sh` | SteamOS theme: installs and switches to `cachyos-vapor` | | `lib/steamos-extras.sh` | SteamOS desktop extras from Valve's package (Add to Steam, Nested Desktop, icon, keyboard rule, KWallet) | | `lib/single-user.sh` | Single user mode: no lock screen, user switching or log out | +| `lib/wizard-shortcut.sh` | Wizard shortcut: desktop icon and launcher entry that run the newest release | | `lib/bios.sh` | Update BIOS (Steam Machine, opt-in): current/newest version, double confirmation, fwupd | | `lib/steam-machine.sh` | Steam Machine support: LED driver, LED access, steamos-manager | | `.github/tools/bundle.sh` | Builds the single-file version (`dist/setup-gamescope-boot.sh`) | diff --git a/assets/steam-gaming-settings.svg b/assets/steam-gaming-settings.svg new file mode 100644 index 0000000..51c5e5f --- /dev/null +++ b/assets/steam-gaming-settings.svg @@ -0,0 +1,224 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/menu.sh b/lib/menu.sh index 5c4b842..c03fde2 100644 --- a/lib/menu.sh +++ b/lib/menu.sh @@ -5,7 +5,7 @@ # Menu order. Components are turned on in this order and off in reverse; # gaming must come first (single user builds on it). -COMPONENTS=(gaming theme glyphs single machine bios) +COMPONENTS=(gaming theme glyphs single launcher machine bios) # One-off actions rather than on/off components: never preselected, never # re-applied, not listed as on or off. ACTIONS=(bios) @@ -15,6 +15,7 @@ declare -A LABEL=( [theme]="Install SteamOS theme: Vapor look (cachyos-vapor)" [glyphs]="Install Steam Deck/Machine icons: Deck button icons in gaming mode" [single]="Single user mode: no password, lock screen or log out (SDDM)" + [launcher]="Wizard shortcut: desktop icon to run this wizard again" [machine]="Steam Machine support: LED bar driver, hardware settings in Steam" [bios]="Update BIOS" ) diff --git a/lib/wizard-shortcut.sh b/lib/wizard-shortcut.sh new file mode 100644 index 0000000..60288c4 --- /dev/null +++ b/lib/wizard-shortcut.sh @@ -0,0 +1,80 @@ +#!/bin/bash +# "Wizard shortcut" menu item: a desktop icon and an app launcher entry that +# open the newest release of this wizard in Konsole (curl | bash, like the +# install command in the README), so it's never out of date. +# Sourced by setup-gamescope-boot.sh; not meant to be run on its own. + +WIZARD_RELEASE="https://github.com/theupriser/cachyos-gamescope-boot/releases/latest/download" +WIZARD_URL="$WIZARD_RELEASE/setup-gamescope-boot.sh" +# Steam logo with a gear (assets/ in the repo, published with every release). +WIZARD_ICON="${XDG_DATA_HOME:-$HOME/.local/share}/icons/hicolor/scalable/apps/cachyos-gamescope-boot-wizard.svg" +WIZARD_LAUNCHER="${XDG_DATA_HOME:-$HOME/.local/share}/cachyos-gamescope-boot/run-wizard" +WIZARD_DESKTOP_NAME="cachyos-gamescope-boot-wizard.desktop" +WIZARD_APP_ENTRY="${XDG_DATA_HOME:-$HOME/.local/share}/applications/$WIZARD_DESKTOP_NAME" + +wizard_desktop_file() { + echo "$(xdg-user-dir DESKTOP 2>/dev/null || echo "$HOME/Desktop")/$WIZARD_DESKTOP_NAME" +} + +install_executable() { + # install_executable : stdin to , with its mode set + # before it appears. Plasma treats a desktop icon it saw while it wasn't + # executable yet as untrusted and opens it in an editor. + local dest="$1" tmp + mkdir -p "$(dirname "$dest")" + tmp="$(mktemp "$(dirname "$dest")/.tmp.XXXXXX")" + cat > "$tmp" + chmod "$2" "$tmp" + mv -f "$tmp" "$dest" +} + +launcher_status() { + [[ -x "$WIZARD_LAUNCHER" && -f "$WIZARD_APP_ENTRY" ]] +} + +launcher_enable() { + info "Adding the wizard shortcut (desktop icon and app launcher entry)..." + install_executable "$WIZARD_LAUNCHER" 755 << EOF +#!/bin/bash +# Installed by cachyos-gamescope-boot: run the newest release of the wizard. +if ! curl -fsSL --max-time 30 "$WIZARD_URL" | bash; then + echo + echo "Couldn't download or run the wizard. Are you connected to the internet?" +fi +echo +read -rp "Press Enter to close this window... " _ +EOF + + # The icon comes with the release; without it, Steam's own icon. + local icon=steam tmp + tmp="$(mktemp)" + if curl -fsSL --max-time 20 "$WIZARD_RELEASE/steam-gaming-settings.svg" -o "$tmp" && grep -q '/dev/null || true + else + warn "Couldn't download the shortcut's icon; using Steam's icon instead." + fi + rm -f "$tmp" + + local entry + entry="[Desktop Entry] +Type=Application +Name=SteamOS Setup Wizard +Comment=Turn the SteamOS-style parts of this PC on or off (cachyos-gamescope-boot) +Exec=konsole -e $WIZARD_LAUNCHER +Icon=$icon +Terminal=false +Categories=System;Settings;" + printf '%s\n' "$entry" | install_executable "$WIZARD_APP_ENTRY" 644 + printf '%s\n' "$entry" | install_executable "$(wizard_desktop_file)" 755 + kbuildsycoca6 >/dev/null 2>&1 || true + ok "Wizard shortcut added: \"SteamOS Setup Wizard\" on the desktop and in the launcher." +} + +launcher_disable() { + rm -f "$(wizard_desktop_file)" "$WIZARD_APP_ENTRY" "$WIZARD_LAUNCHER" "$WIZARD_ICON" + rmdir "$(dirname "$WIZARD_LAUNCHER")" 2>/dev/null || true + kbuildsycoca6 >/dev/null 2>&1 || true + ok "Wizard shortcut removed." +} diff --git a/setup-gamescope-boot.sh b/setup-gamescope-boot.sh index 5da934b..be759b6 100755 --- a/setup-gamescope-boot.sh +++ b/setup-gamescope-boot.sh @@ -15,11 +15,11 @@ set -uo pipefail # Release version, see CHANGELOG.md. -VERSION=0.8.0 +VERSION=0.9.0 SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -for lib in common state packages login-manager single-user steam-desktop steam-machine vapor-theme steamos-extras bios desktop-shortcut menu; do +for lib in common state packages login-manager single-user steam-desktop steam-machine vapor-theme steamos-extras bios desktop-shortcut wizard-shortcut menu; do # shellcheck source=/dev/null source "$SCRIPT_DIR/lib/$lib.sh" done From be874b8594d9c145c334b77ebca14a8f2bca42c8 Mon Sep 17 00:00:00 2001 From: Rick Peters Date: Thu, 24 Sep 2026 12:24:50 +0200 Subject: [PATCH 2/6] feat: Rename to Steamify CachyOS Menu header, shortcut, release titles, README and AGENTS.md. Repository, script and URLs keep the name cachyos-gamescope-boot. --- .github/workflows/bundle.yml | 6 +++--- AGENTS.md | 4 ++-- CHANGELOG.md | 11 +++++++++-- README.md | 13 +++++++------ assets/steam-gaming-settings.svg | 2 +- lib/menu.sh | 4 ++-- lib/wizard-shortcut.sh | 18 +++++++++--------- setup-gamescope-boot.sh | 4 ++-- 8 files changed, 35 insertions(+), 27 deletions(-) diff --git a/.github/workflows/bundle.yml b/.github/workflows/bundle.yml index ffcadb1..b7dd5a3 100644 --- a/.github/workflows/bundle.yml +++ b/.github/workflows/bundle.yml @@ -73,7 +73,7 @@ jobs: ## Changes in v$VERSION $changes" gh release create "v$VERSION" dist/setup-gamescope-boot.sh assets/steam-gaming-settings.svg \ - --target "$GITHUB_SHA" --title "v$VERSION" --notes "$notes" --latest + --target "$GITHUB_SHA" --title "Steamify CachyOS v$VERSION" --notes "$notes" --latest # "latest" follows the newest version tag, for the older install URL # (.../releases/download/latest/...). Only moved when a new version @@ -81,8 +81,8 @@ jobs: git tag -f latest "$GITHUB_SHA" && git push -f origin latest latest_notes="Always the newest version, currently v$VERSION (see its release for the changes)." if gh release view latest >/dev/null 2>&1; then - gh release edit latest --title "Latest (v$VERSION)" --notes "$latest_notes" --latest=false + gh release edit latest --title "Steamify CachyOS - latest (v$VERSION)" --notes "$latest_notes" --latest=false else - gh release create latest --title "Latest (v$VERSION)" --notes "$latest_notes" --latest=false + gh release create latest --title "Steamify CachyOS - latest (v$VERSION)" --notes "$latest_notes" --latest=false fi gh release upload latest dist/setup-gamescope-boot.sh assets/steam-gaming-settings.svg --clobber diff --git a/AGENTS.md b/AGENTS.md index 368966b..e37f5d8 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -5,7 +5,7 @@ for what the script does from a user's point of view. ## Project overview -A bash wizard that makes CachyOS (KDE Plasma 6 + `plasma-login-manager`) +**Steamify CachyOS** (repository `cachyos-gamescope-boot`): a bash wizard that makes CachyOS (KDE Plasma 6 + `plasma-login-manager`) boot into a SteamOS-style gamescope session, with working switching between gamescope and the Plasma desktop. Primary target: the Valve Steam Machine (DMI `Valve`/`Fremont`) running CachyOS Desktop edition. @@ -149,7 +149,7 @@ gamescope and the Plasma desktop. Primary target: the Valve Steam Machine - 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`. -- Wizard shortcut (`launcher`): the icon runs `curl | bash` of +- Steamify shortcut (`launcher`): the icon runs `curl | bash` of `releases/latest/download/setup-gamescope-boot.sh` in Konsole, so it's always the newest release. Its icon, `assets/steam-gaming-settings.svg` (Valve's GPL-2.0 return icon with a gear), is a release asset too, and is diff --git a/CHANGELOG.md b/CHANGELOG.md index 93eccc2..59c50a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,14 +7,21 @@ one per merged pull request. ## 0.9.0 - 2026-09-24 -- **feat: Wizard shortcut on the desktop and in the launcher** - - New menu item: a "SteamOS Setup Wizard" desktop icon and app launcher entry +The wizard is now called **Steamify CachyOS**, and can put a shortcut to +itself on the desktop. + +- `f01aa93` **feat: Wizard shortcut on the desktop and in the launcher** + - New menu item: a desktop icon and app launcher entry that open the newest release of the wizard in Konsole (`curl | bash`). - Its icon: Valve's Return to Gaming Mode icon with a gear instead of the arrow (`assets/steam-gaming-settings.svg`), published with every release and downloaded from there. - Desktop files are written already executable, so Plasma runs them instead of opening them in an editor. +- **feat: Rename to Steamify CachyOS** + - Menu header, the shortcut ("Steamify CachyOS", menu item "Steamify + shortcut"), release titles, README and AGENTS.md. The repository, script + and download URLs keep the name `cachyos-gamescope-boot`. ## 0.8.0 - 2026-09-24 (#8) diff --git a/README.md b/README.md index b29c091..c02c361 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# CachyOS Gamescope Boot Wizard +# Steamify CachyOS Turn a CachyOS desktop PC into a SteamOS-style console: it boots straight into Steam's Big Picture (gamescope), and you can switch to the KDE Plasma @@ -6,8 +6,9 @@ desktop and back whenever you like - just like on a Steam Deck or Valve's Steam Machine. Out of the box, CachyOS doesn't quite manage this: the switch to the desktop -can hang, and the PC doesn't reliably boot back into gaming mode. This -script fixes that and sets everything up for you. +can hang, and the PC doesn't reliably boot back into gaming mode. Steamify +fixes that and sets everything up for you. (The repository is still called +`cachyos-gamescope-boot`.) ## What you get @@ -24,9 +25,9 @@ Everything you turn off is put back the way it was. 4. **Single user mode** - like SteamOS: never a login or lock screen, no user switching or logging out. Typing a password with a controller is no fun. (Needs 1.) -5. **Wizard shortcut** - a "SteamOS Setup Wizard" icon on the desktop and in +5. **Steamify shortcut** - a "Steamify CachyOS" icon on the desktop and in the app launcher (the Steam logo with a gear) that opens the newest version - of this wizard in Konsole, so you don't need the install command again. + of Steamify in Konsole, so you don't need the install command again. 6. **Steam Machine support** - only shown on a Valve Steam Machine: the driver for the front LED bar, and the hardware settings in Steam (fan, TV control over HDMI-CEC). @@ -362,7 +363,7 @@ gamescope-session, ...) stay installed. | `lib/vapor-theme.sh` | SteamOS theme: installs and switches to `cachyos-vapor` | | `lib/steamos-extras.sh` | SteamOS desktop extras from Valve's package (Add to Steam, Nested Desktop, icon, keyboard rule, KWallet) | | `lib/single-user.sh` | Single user mode: no lock screen, user switching or log out | -| `lib/wizard-shortcut.sh` | Wizard shortcut: desktop icon and launcher entry that run the newest release | +| `lib/wizard-shortcut.sh` | Steamify shortcut: desktop icon and launcher entry that run the newest release | | `lib/bios.sh` | Update BIOS (Steam Machine, opt-in): current/newest version, double confirmation, fwupd | | `lib/steam-machine.sh` | Steam Machine support: LED driver, LED access, steamos-manager | | `.github/tools/bundle.sh` | Builds the single-file version (`dist/setup-gamescope-boot.sh`) | diff --git a/assets/steam-gaming-settings.svg b/assets/steam-gaming-settings.svg index 51c5e5f..e0b94de 100644 --- a/assets/steam-gaming-settings.svg +++ b/assets/steam-gaming-settings.svg @@ -1,5 +1,5 @@ - /dev/null 2>&1 || true - ok "Wizard shortcut added: \"SteamOS Setup Wizard\" on the desktop and in the launcher." + ok "Steamify shortcut added: \"Steamify CachyOS\" on the desktop and in the launcher." } launcher_disable() { rm -f "$(wizard_desktop_file)" "$WIZARD_APP_ENTRY" "$WIZARD_LAUNCHER" "$WIZARD_ICON" rmdir "$(dirname "$WIZARD_LAUNCHER")" 2>/dev/null || true kbuildsycoca6 >/dev/null 2>&1 || true - ok "Wizard shortcut removed." + ok "Steamify shortcut removed." } diff --git a/setup-gamescope-boot.sh b/setup-gamescope-boot.sh index be759b6..565e034 100755 --- a/setup-gamescope-boot.sh +++ b/setup-gamescope-boot.sh @@ -1,6 +1,6 @@ #!/bin/bash # -# setup-gamescope-boot.sh +# setup-gamescope-boot.sh - Steamify CachyOS # # Wizard that makes a CachyOS (KDE Plasma) install behave like SteamOS: # boot into a Steam Deck-style gamescope session, switch to the Plasma @@ -26,7 +26,7 @@ done require_root_helper -echo -e "${c_bold}CachyOS Steam Deck-style Gamescope Boot Wizard${c_reset} v$VERSION" +echo -e "${c_bold}Steamify CachyOS${c_reset} v$VERSION" echo "Turn the SteamOS-style parts on or off. The menu shows what is on now;" echo "anything you turn off is put back the way it was." From 1c34a975980f933c38d4b1a1b33330a16722ace2 Mon Sep 17 00:00:00 2001 From: Rick Peters Date: Thu, 24 Sep 2026 12:27:45 +0200 Subject: [PATCH 3/6] chore: Repository renamed to steamify-cachyos All URLs point to github.com/theupriser/steamify-cachyos (the old ones redirect). The script and internal names (state dir, shortcut files) keep their names so old download URLs and existing installs keep working. --- .github/tools/bundle.sh | 2 +- .github/workflows/bundle.yml | 4 ++-- AGENTS.md | 4 ++-- CHANGELOG.md | 11 ++++++++--- README.md | 9 ++++----- lib/wizard-shortcut.sh | 2 +- 6 files changed, 18 insertions(+), 14 deletions(-) diff --git a/.github/tools/bundle.sh b/.github/tools/bundle.sh index 54ffb77..eb94854 100755 --- a/.github/tools/bundle.sh +++ b/.github/tools/bundle.sh @@ -23,7 +23,7 @@ version="v$(grep -oP '^VERSION=\K.*' "$entry"), $(git describe --always --dirty # Header comment and `set` line of the entry point, up to the source loop. sed -n '1,/^SCRIPT_DIR=/p' "$entry" | sed '$d' echo "# Single-file build ($version), generated by .github/tools/bundle.sh - edit the" - echo "# sources in the repository instead: https://github.com/theupriser/cachyos-gamescope-boot" + echo "# sources in the repository instead: https://github.com/theupriser/steamify-cachyos" echo for lib in $libs; do echo "# ----- lib/$lib.sh -----" diff --git a/.github/workflows/bundle.yml b/.github/workflows/bundle.yml index b7dd5a3..60f8ef8 100644 --- a/.github/workflows/bundle.yml +++ b/.github/workflows/bundle.yml @@ -3,8 +3,8 @@ # with that version's CHANGELOG.md section as notes. A released version is # never overwritten; the newest one is marked latest, and the "latest" tag and # release are moved to it, so both of these always get the newest version: -# curl -fsSL https://github.com/theupriser/cachyos-gamescope-boot/releases/latest/download/setup-gamescope-boot.sh | bash -# curl -fsSL https://github.com/theupriser/cachyos-gamescope-boot/releases/download/latest/setup-gamescope-boot.sh | bash +# curl -fsSL https://github.com/theupriser/steamify-cachyos/releases/latest/download/setup-gamescope-boot.sh | bash +# curl -fsSL https://github.com/theupriser/steamify-cachyos/releases/download/latest/setup-gamescope-boot.sh | bash # Pull requests only build and check it, and warn when VERSION is already released. name: Single-file build diff --git a/AGENTS.md b/AGENTS.md index e37f5d8..bef1693 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -5,7 +5,7 @@ for what the script does from a user's point of view. ## Project overview -**Steamify CachyOS** (repository `cachyos-gamescope-boot`): a bash wizard that makes CachyOS (KDE Plasma 6 + `plasma-login-manager`) +**Steamify CachyOS**: a bash wizard that makes CachyOS (KDE Plasma 6 + `plasma-login-manager`) boot into a SteamOS-style gamescope session, with working switching between gamescope and the Plasma desktop. Primary target: the Valve Steam Machine (DMI `Valve`/`Fremont`) running CachyOS Desktop edition. @@ -179,5 +179,5 @@ the wizard with scripted menu input such as `printf '2\n\ny\nn\n'`, the per-component checks; when stdin is not a terminal the menu falls back to a numbered prompt, which is what scripted runs use, reboot checks, the full test matrix, `--fremont` to fake Steam Machine hardware) live in -[cachyos-gamescope-boot-dev-env](https://github.com/theupriser/cachyos-gamescope-boot-dev-env). +[steamify-cachyos-dev](https://github.com/theupriser/steamify-cachyos-dev). Gamescope itself and the real LED bar can only be verified on hardware. diff --git a/CHANGELOG.md b/CHANGELOG.md index 59c50a3..a89a384 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,10 +18,15 @@ itself on the desktop. and downloaded from there. - Desktop files are written already executable, so Plasma runs them instead of opening them in an editor. -- **feat: Rename to Steamify CachyOS** +- `be874b8` **feat: Rename to Steamify CachyOS** - Menu header, the shortcut ("Steamify CachyOS", menu item "Steamify - shortcut"), release titles, README and AGENTS.md. The repository, script - and download URLs keep the name `cachyos-gamescope-boot`. + shortcut"), release titles, README and AGENTS.md. +- **chore: Repository renamed to steamify-cachyos** + - All URLs point to `github.com/theupriser/steamify-cachyos` (the old ones + redirect). The script keeps its name, `setup-gamescope-boot.sh`, so the + old download URL keeps working; internal names such as + `~/.local/state/cachyos-gamescope-boot` stay, so existing installs can + still be turned off. ## 0.8.0 - 2026-09-24 (#8) diff --git a/README.md b/README.md index c02c361..e5b8b27 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,7 @@ Steam Machine. Out of the box, CachyOS doesn't quite manage this: the switch to the desktop can hang, and the PC doesn't reliably boot back into gaming mode. Steamify -fixes that and sets everything up for you. (The repository is still called -`cachyos-gamescope-boot`.) +fixes that and sets everything up for you. ## What you get @@ -45,7 +44,7 @@ Everything you turn off is put back the way it was. Open **Konsole** on your Plasma desktop and run: ```bash -curl -fsSL https://github.com/theupriser/cachyos-gamescope-boot/releases/latest/download/setup-gamescope-boot.sh | bash +curl -fsSL https://github.com/theupriser/steamify-cachyos/releases/latest/download/setup-gamescope-boot.sh | bash ``` That downloads and runs the latest single-file version, and works in any @@ -53,8 +52,8 @@ shell, including fish (CachyOS's default). Prefer to keep a copy, or to look at the script first? Clone the repository instead: ```bash -git clone https://github.com/theupriser/cachyos-gamescope-boot.git -cd cachyos-gamescope-boot +git clone https://github.com/theupriser/steamify-cachyos.git +cd steamify-cachyos ./setup-gamescope-boot.sh ``` diff --git a/lib/wizard-shortcut.sh b/lib/wizard-shortcut.sh index e71050a..892edec 100644 --- a/lib/wizard-shortcut.sh +++ b/lib/wizard-shortcut.sh @@ -4,7 +4,7 @@ # install command in the README), so it's never out of date. # Sourced by setup-gamescope-boot.sh; not meant to be run on its own. -WIZARD_RELEASE="https://github.com/theupriser/cachyos-gamescope-boot/releases/latest/download" +WIZARD_RELEASE="https://github.com/theupriser/steamify-cachyos/releases/latest/download" WIZARD_URL="$WIZARD_RELEASE/setup-gamescope-boot.sh" # Steam logo with a gear (assets/ in the repo, published with every release). WIZARD_ICON="${XDG_DATA_HOME:-$HOME/.local/share}/icons/hicolor/scalable/apps/cachyos-gamescope-boot-wizard.svg" From 69a420b8aa88da6678ecc4726277f42ebfffe2a4 Mon Sep 17 00:00:00 2001 From: Rick Peters Date: Thu, 24 Sep 2026 12:33:43 +0200 Subject: [PATCH 4/6] feat: The script is now steamify.sh - setup-gamescope-boot.sh renamed to steamify.sh; all references updated. - Releases publish the bundle as steamify.sh and, for older install commands, setup-gamescope-boot.sh. - The Steamify shortcut runs steamify.sh. --- .github/tools/bundle.sh | 12 +++++----- .github/workflows/bundle.yml | 31 +++++++++++++++----------- AGENTS.md | 12 +++++----- CHANGELOG.md | 8 +++++-- README.md | 12 +++++----- lib/bios.sh | 2 +- lib/common.sh | 2 +- lib/desktop-shortcut.sh | 2 +- lib/login-manager.sh | 2 +- lib/menu.sh | 2 +- lib/packages.sh | 2 +- lib/single-user.sh | 2 +- lib/state.sh | 2 +- lib/steam-desktop.sh | 2 +- lib/steam-machine.sh | 2 +- lib/steamos-extras.sh | 2 +- lib/vapor-theme.sh | 2 +- lib/wizard-shortcut.sh | 4 ++-- setup-gamescope-boot.sh => steamify.sh | 2 +- 19 files changed, 58 insertions(+), 47 deletions(-) rename setup-gamescope-boot.sh => steamify.sh (99%) diff --git a/.github/tools/bundle.sh b/.github/tools/bundle.sh index eb94854..1fddd13 100755 --- a/.github/tools/bundle.sh +++ b/.github/tools/bundle.sh @@ -1,16 +1,16 @@ #!/bin/bash # Build a single-file version of the wizard for `curl | bash` use: -# .github/tools/bundle.sh [output] (default: dist/setup-gamescope-boot.sh) +# .github/tools/bundle.sh [output] (default: dist/steamify.sh) # -# Inlines lib/*.sh in the order setup-gamescope-boot.sh sources them and +# Inlines lib/*.sh in the order steamify.sh sources them and # wraps the entry point's body in main(), so bash has read the whole file # before anything runs. That lets the bundle reattach stdin to the terminal # when it was piped in by curl, so the interactive menu still works. set -euo pipefail cd "$(dirname "$0")/../.." -out="${1:-dist/setup-gamescope-boot.sh}" -entry=setup-gamescope-boot.sh +out="${1:-dist/steamify.sh}" +entry=steamify.sh mkdir -p "$(dirname "$out")" # Library order, taken from the entry point's source loop. @@ -28,10 +28,10 @@ version="v$(grep -oP '^VERSION=\K.*' "$entry"), $(git describe --always --dirty for lib in $libs; do echo "# ----- lib/$lib.sh -----" # Drop each module's shebang and its "Sourced by ..." boilerplate. - sed -e '1{/^#!/d}' -e '/^# Sourced by setup-gamescope-boot.sh/d' "lib/$lib.sh" + sed -e '1{/^#!/d}' -e '/^# Sourced by steamify.sh/d' "lib/$lib.sh" echo done - echo "# ----- setup-gamescope-boot.sh -----" + echo "# ----- steamify.sh -----" echo "main() {" # Everything after the source loop is the entry point's body. sed -n '/^for lib in /,$p' "$entry" | sed '1,/^done$/d' | sed 's/^/ /; s/^ $//' diff --git a/.github/workflows/bundle.yml b/.github/workflows/bundle.yml index 60f8ef8..6e04be6 100644 --- a/.github/workflows/bundle.yml +++ b/.github/workflows/bundle.yml @@ -1,10 +1,12 @@ # Builds the single-file wizard (.github/tools/bundle.sh) and publishes it as a -# release per version: tag v$VERSION (VERSION in setup-gamescope-boot.sh), +# release per version: tag v$VERSION (VERSION in steamify.sh), # with that version's CHANGELOG.md section as notes. A released version is # never overwritten; the newest one is marked latest, and the "latest" tag and # release are moved to it, so both of these always get the newest version: -# curl -fsSL https://github.com/theupriser/steamify-cachyos/releases/latest/download/setup-gamescope-boot.sh | bash -# curl -fsSL https://github.com/theupriser/steamify-cachyos/releases/download/latest/setup-gamescope-boot.sh | bash +# curl -fsSL https://github.com/theupriser/steamify-cachyos/releases/latest/download/steamify.sh | bash +# curl -fsSL https://github.com/theupriser/steamify-cachyos/releases/download/latest/steamify.sh | bash +# The bundle is also published as setup-gamescope-boot.sh, its name before +# 0.9.0, so older install commands keep working. # Pull requests only build and check it, and warn when VERSION is already released. name: Single-file build @@ -26,29 +28,32 @@ jobs: fetch-depth: 0 # for the version in the bundle's header - name: Build - run: .github/tools/bundle.sh dist/setup-gamescope-boot.sh + run: | + .github/tools/bundle.sh dist/steamify.sh + # Old name (before 0.9.0), for older install commands and links. + cp dist/steamify.sh dist/setup-gamescope-boot.sh - name: Check run: | - bash -n dist/setup-gamescope-boot.sh + bash -n dist/steamify.sh # SC2034/SC2154: variables used across the inlined modules. - shellcheck -S warning -e SC2034,SC2154 dist/setup-gamescope-boot.sh + shellcheck -S warning -e SC2034,SC2154 dist/steamify.sh - uses: actions/upload-artifact@v4 with: - name: setup-gamescope-boot - path: dist/setup-gamescope-boot.sh + name: steamify + path: dist/steamify.sh - name: Version id: version env: GH_TOKEN: ${{ github.token }} run: | - version="$(grep -oP '^VERSION=\K.*' setup-gamescope-boot.sh)" + version="$(grep -oP '^VERSION=\K.*' steamify.sh)" echo "version=$version" >> "$GITHUB_OUTPUT" if gh release view "v$version" >/dev/null 2>&1; then echo "released=true" >> "$GITHUB_OUTPUT" - echo "::warning::v$version is already released and won't be overwritten. Bump VERSION in setup-gamescope-boot.sh and add a CHANGELOG.md section to release this." + echo "::warning::v$version is already released and won't be overwritten. Bump VERSION in steamify.sh and add a CHANGELOG.md section to release this." else echo "released=false" >> "$GITHUB_OUTPUT" fi @@ -68,11 +73,11 @@ jobs: notes="Single-file build of v$VERSION ($(git describe --always), $(git log -1 --format=%cs)). Run the newest version with: - curl -fsSL https://github.com/${{ github.repository }}/releases/latest/download/setup-gamescope-boot.sh | bash + curl -fsSL https://github.com/${{ github.repository }}/releases/latest/download/steamify.sh | bash ## Changes in v$VERSION $changes" - gh release create "v$VERSION" dist/setup-gamescope-boot.sh assets/steam-gaming-settings.svg \ + gh release create "v$VERSION" dist/steamify.sh dist/setup-gamescope-boot.sh assets/steam-gaming-settings.svg \ --target "$GITHUB_SHA" --title "Steamify CachyOS v$VERSION" --notes "$notes" --latest # "latest" follows the newest version tag, for the older install URL @@ -85,4 +90,4 @@ jobs: else gh release create latest --title "Steamify CachyOS - latest (v$VERSION)" --notes "$latest_notes" --latest=false fi - gh release upload latest dist/setup-gamescope-boot.sh assets/steam-gaming-settings.svg --clobber + gh release upload latest dist/steamify.sh dist/setup-gamescope-boot.sh assets/steam-gaming-settings.svg --clobber diff --git a/AGENTS.md b/AGENTS.md index bef1693..adaf095 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -12,7 +12,7 @@ gamescope and the Plasma desktop. Primary target: the Valve Steam Machine ## Layout -- `setup-gamescope-boot.sh` - the only entry point. Pre-flight checks, +- `steamify.sh` - the only entry point. Pre-flight checks, sources `lib/*.sh`, runs the menu and applies the plan. No component logic here. - `lib/*.sh` - one file per responsibility, each defining functions only @@ -59,7 +59,7 @@ gamescope and the Plasma desktop. Primary target: the Valve Steam Machine - Comments explain *why* (the CachyOS/Plasma quirk being worked around), not what the next line does. -- **Versioning and releases.** SemVer in `VERSION` (`setup-gamescope-boot.sh`, +- **Versioning and releases.** SemVer in `VERSION` (`steamify.sh`, shown in the menu header and the bundle header). - Every commit gets an entry in `CHANGELOG.md` under its version (short hash + subject; a commit can't contain its own hash, so fill it in with the @@ -70,7 +70,7 @@ gamescope and the Plasma desktop. Primary target: the Valve Steam Machine changelog section) and marks it latest. An existing version is never overwritten: without a bump nothing is released, and pull requests show a warning. - - Users install through `releases/latest/download/setup-gamescope-boot.sh` + - Users install through `releases/latest/download/steamify.sh` (GitHub's newest release). The `latest` tag and release follow the newest version tag too (moved, asset replaced, when a new version is released), so the older URL `releases/download/latest/...` keeps working. @@ -150,7 +150,7 @@ gamescope and the Plasma desktop. Primary target: the Valve Steam Machine restart is needed), until `q`; the restart question is asked once at the end. Scripted input that runs out ends the loop like `q`. - Steamify shortcut (`launcher`): the icon runs `curl | bash` of - `releases/latest/download/setup-gamescope-boot.sh` in Konsole, so it's + `releases/latest/download/steamify.sh` in Konsole, so it's always the newest release. Its icon, `assets/steam-gaming-settings.svg` (Valve's GPL-2.0 return icon with a gear), is a release asset too, and is downloaded from there (Steam's icon if that fails). Desktop files are @@ -169,8 +169,8 @@ array (e.g. `g` in `lib/state.sh`), or CI's shellcheck on the bundle fails. There is no test suite. At minimum: ```bash -for f in setup-gamescope-boot.sh lib/*.sh; do bash -n "$f"; done -shellcheck -S warning setup-gamescope-boot.sh lib/*.sh # if available +for f in steamify.sh lib/*.sh; do bash -n "$f"; done +shellcheck -S warning steamify.sh lib/*.sh # if available ``` Behaviour is verified in a CachyOS QEMU/KVM test VM. The VM scripts and a diff --git a/CHANGELOG.md b/CHANGELOG.md index a89a384..f8d1802 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ All notable changes, per version and per commit. Versions follow [Semantic Versioning](https://semver.org/); the current one is `VERSION` in -`setup-gamescope-boot.sh`. Versions before 0.7.0 were numbered afterwards, +`steamify.sh`. Versions before 0.7.0 were numbered afterwards, one per merged pull request. ## 0.9.0 - 2026-09-24 @@ -21,12 +21,16 @@ itself on the desktop. - `be874b8` **feat: Rename to Steamify CachyOS** - Menu header, the shortcut ("Steamify CachyOS", menu item "Steamify shortcut"), release titles, README and AGENTS.md. -- **chore: Repository renamed to steamify-cachyos** +- `1c34a97` **chore: Repository renamed to steamify-cachyos** - All URLs point to `github.com/theupriser/steamify-cachyos` (the old ones redirect). The script keeps its name, `setup-gamescope-boot.sh`, so the old download URL keeps working; internal names such as `~/.local/state/cachyos-gamescope-boot` stay, so existing installs can still be turned off. +- **feat: The script is now steamify.sh** + - `setup-gamescope-boot.sh` is renamed to `steamify.sh`; releases publish the + bundle under both names, so `.../download/setup-gamescope-boot.sh` keeps + working. The Steamify shortcut runs `steamify.sh`. ## 0.8.0 - 2026-09-24 (#8) diff --git a/README.md b/README.md index e5b8b27..93ced89 100644 --- a/README.md +++ b/README.md @@ -44,17 +44,19 @@ Everything you turn off is put back the way it was. Open **Konsole** on your Plasma desktop and run: ```bash -curl -fsSL https://github.com/theupriser/steamify-cachyos/releases/latest/download/setup-gamescope-boot.sh | bash +curl -fsSL https://github.com/theupriser/steamify-cachyos/releases/latest/download/steamify.sh | bash ``` -That downloads and runs the latest single-file version, and works in any +(Before 0.9.0 the script was called `setup-gamescope-boot.sh`; that name +still works in the download URL.) That downloads and runs the latest +single-file version, and works in any shell, including fish (CachyOS's default). Prefer to keep a copy, or to look at the script first? Clone the repository instead: ```bash git clone https://github.com/theupriser/steamify-cachyos.git cd steamify-cachyos -./setup-gamescope-boot.sh +./steamify.sh ``` Run it as yourself, not as root. You'll see a checklist: @@ -351,7 +353,7 @@ gamescope-session, ...) stay installed. | File | Responsibility | |---|---| -| `setup-gamescope-boot.sh` | Entry point: checks, menu, apply, summary, restart | +| `steamify.sh` | Entry point: checks, menu, apply, summary, restart | | `lib/menu.sh` | The menu: detect, toggle, plan and apply changes | | `lib/state.sh` | Undo journal for KDE settings (`kset`/`krevert`) | | `lib/common.sh` | Output helpers, prompts, backups, plasmashell handling | @@ -365,7 +367,7 @@ gamescope-session, ...) stay installed. | `lib/wizard-shortcut.sh` | Steamify shortcut: desktop icon and launcher entry that run the newest release | | `lib/bios.sh` | Update BIOS (Steam Machine, opt-in): current/newest version, double confirmation, fwupd | | `lib/steam-machine.sh` | Steam Machine support: LED driver, LED access, steamos-manager | -| `.github/tools/bundle.sh` | Builds the single-file version (`dist/setup-gamescope-boot.sh`) | +| `.github/tools/bundle.sh` | Builds the single-file version (`dist/steamify.sh`) | | `.github/workflows/bundle.yml` | Builds and checks it on every push; publishes it on `main` | The single-file version is generated: on every push to `main`, GitHub diff --git a/lib/bios.sh b/lib/bios.sh index 6889553..fc78057 100644 --- a/lib/bios.sh +++ b/lib/bios.sh @@ -3,7 +3,7 @@ # the newest Steam Machine BIOS from Valve's fremont-hw-support package with # fwupd. It's an action, not an on/off component: never preselected, never # re-applied, and there is nothing to turn off afterwards. -# Sourced by setup-gamescope-boot.sh; not meant to be run on its own. +# Sourced by steamify.sh; not meant to be run on its own. BIOS_REPO_PREFIX=holo # WIZARD_BIOS_DRY_RUN=1 walks through the whole BIOS update (download, diff --git a/lib/common.sh b/lib/common.sh index c5701ec..4ad8495 100644 --- a/lib/common.sh +++ b/lib/common.sh @@ -1,6 +1,6 @@ #!/bin/bash # Output helpers, prompts and small shared utilities. -# Sourced by setup-gamescope-boot.sh; not meant to be run on its own. +# Sourced by steamify.sh; not meant to be run on its own. c_reset="\033[0m"; c_bold="\033[1m"; c_green="\033[32m"; c_yellow="\033[33m"; c_red="\033[31m"; c_cyan="\033[36m"; c_dim="\033[2m" diff --git a/lib/desktop-shortcut.sh b/lib/desktop-shortcut.sh index b96bf8a..1779418 100644 --- a/lib/desktop-shortcut.sh +++ b/lib/desktop-shortcut.sh @@ -1,6 +1,6 @@ #!/bin/bash # "Return to Gaming Mode" desktop shortcut and the sudoers rule it needs. -# Sourced by setup-gamescope-boot.sh; not meant to be run on its own. +# Sourced by steamify.sh; not meant to be run on its own. create_desktop_shortcut() { # Determine the home directory of the target user diff --git a/lib/login-manager.sh b/lib/login-manager.sh index 6918f0a..ad81b51 100644 --- a/lib/login-manager.sh +++ b/lib/login-manager.sh @@ -1,7 +1,7 @@ #!/bin/bash # Booting into gaming mode: autologin into gamescope with SDDM or # plasma-login-manager (plus the session sync bridge the latter needs). -# Sourced by setup-gamescope-boot.sh; not meant to be run on its own. +# Sourced by steamify.sh; not meant to be run on its own. BASE_CONF="/etc/plasmalogin.conf" diff --git a/lib/menu.sh b/lib/menu.sh index efd3242..ab45c60 100644 --- a/lib/menu.sh +++ b/lib/menu.sh @@ -1,7 +1,7 @@ #!/bin/bash # Interactive menu: detects which components are on, lets the user pick what # they want, then turns components on or off to match. -# Sourced by setup-gamescope-boot.sh; not meant to be run on its own. +# Sourced by steamify.sh; not meant to be run on its own. # Menu order. Components are turned on in this order and off in reverse; # gaming must come first (single user builds on it). diff --git a/lib/packages.sh b/lib/packages.sh index 5e45478..e1e2ae8 100644 --- a/lib/packages.sh +++ b/lib/packages.sh @@ -1,6 +1,6 @@ #!/bin/bash # Required packages and AUR helper handling. -# Sourced by setup-gamescope-boot.sh; not meant to be run on its own. +# Sourced by steamify.sh; not meant to be run on its own. aur_noninteractive_flags() { # Fully non-interactive install flags for the given AUR helper: no diff --git a/lib/single-user.sh b/lib/single-user.sh index 8a3ac8e..7be65db 100644 --- a/lib/single-user.sh +++ b/lib/single-user.sh @@ -3,7 +3,7 @@ # log out, since typing a password with a controller is miserable. Goes # together with SDDM (see lib/login-manager.sh). All changes are journaled # per user (lib/state.sh), so turning it off restores KDE's previous state. -# Sourced by setup-gamescope-boot.sh; not meant to be run on its own. +# Sourced by steamify.sh; not meant to be run on its own. single_status() { [[ "$(kreadconfig6 --file kdeglobals --group "KDE Action Restrictions" --key action/lock_screen)" == false ]] diff --git a/lib/state.sh b/lib/state.sh index deaa4a4..1e87097 100644 --- a/lib/state.sh +++ b/lib/state.sh @@ -3,7 +3,7 @@ # off again exactly: the first time a component changes a key, the key's # previous value is recorded, and reverting the component puts it back (or # deletes the key if it didn't exist before). -# Sourced by setup-gamescope-boot.sh; not meant to be run on its own. +# Sourced by steamify.sh; not meant to be run on its own. STATE_DIR="${XDG_STATE_HOME:-$HOME/.local/state}/cachyos-gamescope-boot" UNSET=$'\x01' diff --git a/lib/steam-desktop.sh b/lib/steam-desktop.sh index a032768..5284c73 100644 --- a/lib/steam-desktop.sh +++ b/lib/steam-desktop.sh @@ -1,7 +1,7 @@ #!/bin/bash # Steam in the Plasma desktop session: gamepad UI args, virtual keyboard, # autostart. Part of the SteamOS conversion (gaming_enable/gaming_disable). -# Sourced by setup-gamescope-boot.sh; not meant to be run on its own. +# Sourced by steamify.sh; not meant to be run on its own. steam_enable() { info "Applying non-optional SteamOS environment & keyboard fixes..." diff --git a/lib/steam-machine.sh b/lib/steam-machine.sh index d82c56d..58323e9 100644 --- a/lib/steam-machine.sh +++ b/lib/steam-machine.sh @@ -1,7 +1,7 @@ #!/bin/bash # "Steam Machine support" menu item, only on Valve Fremont hardware: the # front LED bar driver, LED access for Steam, and steamos-manager. -# Sourced by setup-gamescope-boot.sh; not meant to be run on its own. +# Sourced by steamify.sh; not meant to be run on its own. detect_valve_fremont() { # Valve Steam Machine (Fremont) boards. The leds-valve driver's own DMI diff --git a/lib/steamos-extras.sh b/lib/steamos-extras.sh index 5f3d836..5e75205 100644 --- a/lib/steamos-extras.sh +++ b/lib/steamos-extras.sh @@ -6,7 +6,7 @@ # rule and an empty KWallet. Part of the SteamOS theme component # (lib/vapor-theme.sh). System files go to /usr/local (nothing # package-owned); per-user settings go through the undo journal. -# Sourced by setup-gamescope-boot.sh; not meant to be run on its own. +# Sourced by steamify.sh; not meant to be run on its own. VALVE_MIRROR="https://steamdeck-packages.steamos.cloud/archlinux-mirror" NESTED_DIR=/usr/local/share/applications/steam/holo-nested-desktop diff --git a/lib/vapor-theme.sh b/lib/vapor-theme.sh index ae6d4b8..45e7c7e 100644 --- a/lib/vapor-theme.sh +++ b/lib/vapor-theme.sh @@ -1,6 +1,6 @@ #!/bin/bash # SteamOS Vapor desktop theme, from CachyOS's cachyos-vapor package. -# Sourced by setup-gamescope-boot.sh; not meant to be run on its own. +# Sourced by steamify.sh; not meant to be run on its own. VAPOR_LOOKANDFEEL=com.valve.vapor.desktop VAPOR_DEFAULTS=/usr/share/plasma/look-and-feel/$VAPOR_LOOKANDFEEL/contents/defaults diff --git a/lib/wizard-shortcut.sh b/lib/wizard-shortcut.sh index 892edec..ba2eb64 100644 --- a/lib/wizard-shortcut.sh +++ b/lib/wizard-shortcut.sh @@ -2,10 +2,10 @@ # "Steamify shortcut" menu item: a desktop icon and an app launcher entry that # open the newest release of Steamify CachyOS in Konsole (curl | bash, like the # install command in the README), so it's never out of date. -# Sourced by setup-gamescope-boot.sh; not meant to be run on its own. +# Sourced by steamify.sh; not meant to be run on its own. WIZARD_RELEASE="https://github.com/theupriser/steamify-cachyos/releases/latest/download" -WIZARD_URL="$WIZARD_RELEASE/setup-gamescope-boot.sh" +WIZARD_URL="$WIZARD_RELEASE/steamify.sh" # Steam logo with a gear (assets/ in the repo, published with every release). WIZARD_ICON="${XDG_DATA_HOME:-$HOME/.local/share}/icons/hicolor/scalable/apps/cachyos-gamescope-boot-wizard.svg" WIZARD_LAUNCHER="${XDG_DATA_HOME:-$HOME/.local/share}/cachyos-gamescope-boot/run-wizard" diff --git a/setup-gamescope-boot.sh b/steamify.sh similarity index 99% rename from setup-gamescope-boot.sh rename to steamify.sh index 565e034..4c2a862 100755 --- a/setup-gamescope-boot.sh +++ b/steamify.sh @@ -1,6 +1,6 @@ #!/bin/bash # -# setup-gamescope-boot.sh - Steamify CachyOS +# steamify.sh - Steamify CachyOS # # Wizard that makes a CachyOS (KDE Plasma) install behave like SteamOS: # boot into a Steam Deck-style gamescope session, switch to the Plasma From b0553aecf7dbd78979fcc562d773cd881df11bc3 Mon Sep 17 00:00:00 2001 From: Rick Peters Date: Thu, 24 Sep 2026 12:34:43 +0200 Subject: [PATCH 5/6] docs: Shorter README intro --- CHANGELOG.md | 3 ++- README.md | 4 ---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f8d1802..dd9ac98 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,10 +27,11 @@ itself on the desktop. old download URL keeps working; internal names such as `~/.local/state/cachyos-gamescope-boot` stay, so existing installs can still be turned off. -- **feat: The script is now steamify.sh** +- `69a420b` **feat: The script is now steamify.sh** - `setup-gamescope-boot.sh` is renamed to `steamify.sh`; releases publish the bundle under both names, so `.../download/setup-gamescope-boot.sh` keeps working. The Steamify shortcut runs `steamify.sh`. +- **docs: Shorter README intro** ## 0.8.0 - 2026-09-24 (#8) diff --git a/README.md b/README.md index 93ced89..8f880b3 100644 --- a/README.md +++ b/README.md @@ -5,10 +5,6 @@ into Steam's Big Picture (gamescope), and you can switch to the KDE Plasma desktop and back whenever you like - just like on a Steam Deck or Valve's Steam Machine. -Out of the box, CachyOS doesn't quite manage this: the switch to the desktop -can hang, and the PC doesn't reliably boot back into gaming mode. Steamify -fixes that and sets everything up for you. - ## What you get The wizard is a menu: pick what you want, and it turns each part on or off. From afc05b0b23443ccb8e3d7d566a4e3a4720223685 Mon Sep 17 00:00:00 2001 From: Rick Peters Date: Thu, 24 Sep 2026 12:40:48 +0200 Subject: [PATCH 6/6] feat: The shortcut's window closes itself after a countdown - 10-second countdown after the wizard ends (Enter closes right away); after an error it waits for Enter. - pipefail, so a failed download counts as an error. --- AGENTS.md | 3 +++ CHANGELOG.md | 7 ++++++- lib/wizard-shortcut.sh | 12 +++++++++++- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index adaf095..b37b470 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -156,6 +156,9 @@ gamescope and the Plasma desktop. Primary target: the Valve Steam Machine downloaded from there (Steam's icon if that fails). Desktop files are written with their mode already set (`install_executable`): Plasma opens a desktop icon it first saw non-executable in an editor. + The start script closes its window after a 10-second countdown on success + and waits for Enter after an error; it uses `pipefail`, or a failed + download would run an empty script and count as success. - `Relogin=true` means a gamescope that fails to start is relaunched in a tight loop; keep that in mind when changing session handling. diff --git a/CHANGELOG.md b/CHANGELOG.md index dd9ac98..21fba5f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,7 +31,12 @@ itself on the desktop. - `setup-gamescope-boot.sh` is renamed to `steamify.sh`; releases publish the bundle under both names, so `.../download/setup-gamescope-boot.sh` keeps working. The Steamify shortcut runs `steamify.sh`. -- **docs: Shorter README intro** +- `b0553ae` **docs: Shorter README intro** +- **feat: The shortcut's window closes itself after a countdown** + - After the wizard ends, a 10-second countdown closes the Konsole window + (Enter closes it right away); after an error it stays open until Enter. + - A failed download now counts as an error (`pipefail`) instead of running + an empty script. ## 0.8.0 - 2026-09-24 (#8) diff --git a/lib/wizard-shortcut.sh b/lib/wizard-shortcut.sh index ba2eb64..6a3a9fd 100644 --- a/lib/wizard-shortcut.sh +++ b/lib/wizard-shortcut.sh @@ -37,12 +37,22 @@ launcher_enable() { install_executable "$WIZARD_LAUNCHER" 755 << EOF #!/bin/bash # Installed by Steamify CachyOS: run its newest release. +# pipefail: a failed download must count as a failure, not an empty script. +set -o pipefail if ! curl -fsSL --max-time 30 "$WIZARD_URL" | bash; then echo echo "Couldn't download or run the wizard. Are you connected to the internet?" + echo + read -rp "Press Enter to close this window... " _ + exit 1 fi +# Done: close the window after a countdown (Enter closes it right away). +echo +for (( i = 10; i > 0; i-- )); do + printf '\rClosing this window in %2d seconds (Enter to close now)... ' "\$i" + read -rs -t 1 _ && break +done echo -read -rp "Press Enter to close this window... " _ EOF # The icon comes with the release; without it, Steam's own icon.