From 00b863fc9e3b0ea4cc01603158c665307b18baeb Mon Sep 17 00:00:00 2001 From: Rick Peters Date: Thu, 24 Sep 2026 12:33:43 +0200 Subject: [PATCH] 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