From 259a72068aa8edb31ef14b00dcf8f8bd8cfb88ed Mon Sep 17 00:00:00 2001 From: Rick Peters Date: Thu, 24 Sep 2026 10:01:08 +0200 Subject: [PATCH] docs: Version 0.7.0 and CHANGELOG - VERSION in the entry point, shown in the menu header and the bundle. - CHANGELOG.md with every commit per version (older versions numbered per merged PR). - README and AGENTS.md updated for the cachyos-vapor theme, the SteamOS extras and the LED driver. --- AGENTS.md | 33 +++++++++++++---- CHANGELOG.md | 79 ++++++++++++++++++++++++++++++++++++++++ README.md | 80 ++++++++++++++++++++++------------------- lib/menu.sh | 2 +- setup-gamescope-boot.sh | 5 ++- tools/bundle.sh | 2 +- 6 files changed, 155 insertions(+), 46 deletions(-) create mode 100644 CHANGELOG.md diff --git a/AGENTS.md b/AGENTS.md index 1ae2326..fa60881 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -58,6 +58,10 @@ 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.** SemVer in `VERSION` (`setup-gamescope-boot.sh`, shown in + the menu header and the bundle). Every commit gets an entry in + `CHANGELOG.md` under its version; a new PR/branch bumps the version. + ## Non-obvious behaviour to preserve - `apply_changes` sets `$LOGIN_MANAGER` from the menu: `sddm` when single @@ -80,11 +84,21 @@ gamescope and the Plasma desktop. Primary target: the Valve Steam Machine - The Steam desktop autostart unit is guarded with `ExecCondition=... XDG_CURRENT_DESKTOP = KDE`, so it doesn't start a second Steam inside gamescope. -- Vapor theme: install Valve's files as shipped. Don't rewrite Valve's - `metadata.json`; the icon theme is `breeze-dark` (there is no "Vapor" - icon theme); wallpapers are flat JPGs in `usr/share/wallpapers`. - `lookandfeeltool` does not switch the color scheme, so - `plasma-apply-colorscheme Vapor` is applied explicitly. +- Vapor theme: comes from the `cachyos-vapor` package (system-wide, in + `/usr/share`); only remove it on disable if we installed it. It is applied + with `lookandfeeltool --resetLayout` ("Desktop and window layout"), which + replaces the panel/desktop layout: the layout files are backed up to + `$STATE_DIR/theme-layout` and restored, and every key from Vapor's + `contents/defaults` goes through `kset` first. `plasma-apply-colorscheme` + runs with the `ColorScheme` key cleared, since it skips a scheme already + named there. The layout reset drops single user's launcher settings, so + `single_launcher` is re-applied. +- SteamOS extras (`lib/steamos-extras.sh`, part of the theme): downloaded from + Valve's newest `steamdeck-kde-presets` (repo db gives name + SHA-256) into + `/usr/local`, never `/usr`. `gaming-return.svg` is a symlink in the package: + install `steam-gaming-return.svg` under that name. The shortcut's icon is + switched with `set_shortcut_icon`, since the conversion is created before + the theme. An existing KWallet is never replaced or removed. - Plasma 6 has no separate systemtray containment: tray settings live on the systemtray applet itself (Valve's setup script targets Plasma 5). - Restart plasmashell via `systemctl --user` (`plasma-plasmashell.service`), @@ -97,8 +111,13 @@ gamescope and the Plasma desktop. Primary target: the Valve Steam Machine wallpaper files only between `stop_plasmashell_for_edit` and `restart_plasmashell_if_stopped` (`lib/common.sh`). - LED driver: `leds-valve-dkms-git`'s Makefile builds against `uname -r`, - so the script builds explicitly for the running kernel and installs - headers for every installed kernel first. The module creates + not DKMS's target kernel: `/etc/dkms/leds-valve-dkms.conf` sets + `MAKE[0]="make KVERSION=${kernelver}"` (written before the AUR install). + Without it, other kernels build against the running kernel's tree and + fail (CachyOS kernels are clang-built; DKMS adds `LLVM=1` only for the + target's tree). Headers for every installed kernel are installed first, + and `ensure-kernel-headers.service` installs missing ones at boot (a + pacman hook can't run pacman), which triggers DKMS's install hook. The module creates `/sys/class/leds/valve-leds*`. - `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 new file mode 100644 index 0000000..e2299a4 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,79 @@ +# Changelog + +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, +one per merged pull request. + +## 0.7.0 - 2026-09-24 + +The SteamOS theme comes from CachyOS's `cachyos-vapor` package, applied with +Vapor's own desktop layout, and gains the SteamOS desktop extras. The Steam +Machine LED driver works on every installed kernel and survives kernel updates. + +- `978f5a1` **feat: SteamOS theme from cachyos-vapor with its desktop layout, plus SteamOS desktop extras** + - Installs `cachyos-vapor` instead of extracting Valve's `steamdeck-kde-presets` + into `~/.local/share`; removes it on disable if the wizard installed it. + - Applies the Vapor global theme with "Desktop and window layout": Steam Deck + wallpaper, SteamOS panel and launcher icon. Layout files are backed up and + restored; every key from Vapor's defaults goes through the undo journal. + - Restores the real previous color scheme on disable (CachyOS's BreezeDark + colors have no scheme name), instead of falling back to light Breeze. + - Registers Vapor as the dark theme, so Plasma's Dark Mode toggle shows on. + - Drops the extra SteamOS desktop defaults (GTK, Konsole, gsettings, panel tweaks). + - New SteamOS desktop extras, downloaded from Valve's newest + `steamdeck-kde-presets` (checksum verified) into `/usr/local`: Add to Steam, + Nested Desktop, the SteamOS Return to Gaming Mode icon, the Steam Keyboard + window rule and an empty KWallet (only when there is no wallet yet). + - Single user mode's launcher settings are re-applied after the layout reset. +- `7802d90` **fix: LED driver for every kernel, kernel headers at boot, console power button, kernel overview** + - DKMS override (`/etc/dkms/leds-valve-dkms.conf`) so the LED driver builds + for every installed kernel (the LTS kernel failed) and on kernel updates. + - `ensure-kernel-headers.service` installs missing kernel headers at boot, so + a newly added kernel gets the LED driver too. + - Power button sleeps and no automatic suspend on mains power (Steam Machine). + - Menu shows every kernel with its headers, Steam controller driver and LED + driver, plus whether the LEDs are loaded. + - The selected menu row is highlighted in full. +- **docs: Version 0.7.0 and CHANGELOG** (this release's docs) + - `VERSION` in the entry point, shown in the menu header and the bundle. + - README and AGENTS.md updated for the theme, the extras and the LED driver. + +## 0.6.2 - 2026-09-23 + +- `a501df2` **Update steam-machine.sh**: install and enable `inputplumber` + next to `steamos-manager`. + +## 0.6.1 - 2026-09-23 (#5) + +- `c0bd16e` **fix: Use curl | bash in the docs**: `bash <(...)` doesn't work in fish. + +## 0.6.0 - 2026-09-23 (#4) + +- `d654d44` **fix: Single-file build for curl, published by GitHub Actions**: + `tools/bundle.sh` inlines `lib/*.sh`; CI publishes it to the `latest` release. + +## 0.5.0 - 2026-09-23 (#3) + +- `b91fa4b` **fix: Replace the question flow with a menu that turns components on and off** +- `3d7f376` **fix: Interactive checkbox menu**: arrow keys to move, Space to select, Enter to run. + +## 0.4.0 - 2026-09-23 (#2) + +- `a0bc385` **fix: Add single user no password option with SDDM, fetch newest Vapor presets** + +## 0.3.0 - 2026-09-23 (#1) + +- `4ad6c2c` **fix: Fix setup bugs, add SteamOS desktop look and LED driver, split into modules** + +## 0.2.0 - 2026-09-07 + +- `151a3bf` **add steam keyboard to desktop** +- `1999b6e` **Automatically change theme** + +## 0.1.0 - 2026-09-06 + +First version of the script. + +- `16a7739`, `97ee6f3`, `6be1051` **commit the script** +- `e1aee45`, `25bc8c0` **change return to gaming mode logo to original logo** diff --git a/README.md b/README.md index 8cf50fa..cb93445 100644 --- a/README.md +++ b/README.md @@ -18,8 +18,8 @@ Everything you turn off is put back the way it was. Desktop** in Steam works and so does going back (the **Return to Gaming Mode** icon on the desktop), you're back in gaming mode after a restart, and Steam's on-screen keyboard (Steam + X) also works on the desktop. -2. **SteamOS theme** - Valve's own Vapor look for the desktop: wallpaper, - dark mode and the SteamOS taskbar. +2. **SteamOS theme** - the Vapor look for the desktop (CachyOS's + `cachyos-vapor` package). 3. **Steam Deck/Machine icons** - Steam Deck button icons in gaming mode. 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 @@ -55,15 +55,22 @@ Run it as yourself, not as root. You'll see a checklist: ``` [x] SteamOS conversion: boot into gaming mode, Steam on the desktop (now: off) - > [x] Install SteamOS theme: Vapor look, dark mode, SteamOS taskbar (now: off) + > [x] Install SteamOS theme: Vapor look (cachyos-vapor) (now: off) [x] Install Steam Deck/Machine icons: Deck button icons in gaming mode (now: off) [x] Single user mode: no password, lock screen or log out (SDDM) (now: off) + Kernels (> = running; controller = Steam controller driver, LEDs = LED bar driver built) + 6.18.52-1-cachyos-lts linux-cachyos-lts headers yes controller yes + > 7.2.7-1-cachyos linux-cachyos headers yes controller yes + Up/Down move Space select Enter run a run + re-apply what's on q quit ``` Move with the **arrow keys**, tick or untick with **Space**, and press -**Enter** to run. "now:" shows what's on at the moment. The wizard then +**Enter** to run. "now:" shows what's on at the moment. Below the list, every +installed kernel is shown with its headers and Steam controller driver; on a +Steam Machine also whether the LED bar driver is built for it, and whether +it's loaded right now, so a kernel update is easy to check. The wizard then shows what it will change, asks your password once, and at the end offers to restart (needed for changes to how the PC starts). @@ -213,35 +220,29 @@ file), which makes Steam show Steam Deck button glyphs in gaming mode. ### SteamOS desktop look -Downloads Valve's official `steamdeck-kde-presets` package from Valve's -SteamOS mirror and installs it into `~/.local/share` - nothing system-wide: +Installs CachyOS's `cachyos-vapor` package (the SteamOS Vapor theme the +CachyOS handheld edition uses) from the CachyOS repository and switches your +desktop to its Vapor global theme, including its desktop and window layout +(like ticking "Desktop and window layout" in System Settings): Vapor colors +and Plasma style, the SteamOS panel and launcher icon, and the Steam Deck +wallpaper. Run it from the Plasma desktop: applying the layout needs a +running Plasma session. -- the Vapor global theme, color scheme, Plasma style, wallpapers and icons; -- the Vapor GTK theme, Konsole profile and user avatars; -- Valve's SteamOS desktop defaults, merged into your own config: Noto Sans - fonts, no Xwayland input-permission prompt for Steam Input, the window - rule that keeps the Steam keyboard on top and out of the taskbar, no - welcome screen, light file indexing; -- the SteamOS panel: solid (not floating), full width, 44 px high, tray icons - scaled to fit, date below the time, and the SteamOS launcher icon; -- dark mode for GTK, libadwaita and portal-aware apps (Firefox, Flatpaks). +It also adds the SteamOS desktop extras that `cachyos-vapor` doesn't ship, +taken from the newest `steamdeck-kde-presets` on Valve's SteamOS mirror +(checksum verified) and installed to `/usr/local`: -Run inside a Plasma session, it applies everything live; otherwise it takes -effect at the next desktop login. +- **Add to Steam** in the right-click menu of apps, AppImages and `.exe` + files, and in the launcher: adds them to Steam as non-Steam games; +- **Nested Desktop**: add it to Steam from the launcher, then start it in + gaming mode for a Plasma desktop inside gaming mode; +- the SteamOS **Return to Gaming Mode** icon (Steam logo with a return arrow); +- a window rule that keeps the **Steam keyboard** above other windows; +- an empty, password-less **KWallet**, only if you don't have a wallet yet, + so nothing asks for a wallet password after autologin. -**Package version.** The script always takes the newest -`steamdeck-kde-presets` from the highest-numbered SteamOS release repository -on the mirror (`jupiter-3.9`, `jupiter-3.10`, ...). That repository's pacman -database gives the exact file name and SHA-256 checksum, which is verified -after downloading. If the lookup fails, it falls back to the known-good -3.9.4 (see `install_vapor_theme()` in `lib/vapor-theme.sh`). To check the -current version yourself: - -```bash -m=https://steamdeck-packages.steamos.cloud/archlinux-mirror -r=$(curl -fsL $m/ | grep -oE 'jupiter-[0-9]+\.[0-9]+/' | tr -d / | sort -V | tail -n 1) -curl -fsL $m/$r/os/x86_64/$r.db | bsdtar -tf - | grep -o '^steamdeck-kde-presets-[^/]*' | sort -u -``` +Turning it off restores your previous look and panel layout, and removes `cachyos-vapor` again +if the wizard installed it (and nothing else, like `cachyos-handheld`, needs it). ### Front LED bar (Steam Machine) @@ -251,10 +252,12 @@ The **Steam Machine support** component, only shown on Fremont hardware - installs an AUR helper (`yay`) if neither `yay` nor `paru` is present; - installs the kernel headers for every installed kernel; - installs `leds-valve-dkms-git` from the AUR - Valve's own driver from the - SteamOS kernel - builds it for the running kernel, and loads it at every - boot (`/etc/modules-load.d/leds-valve.conf`); + SteamOS kernel - builds it for every installed kernel (so the LTS kernel + works too), and loads it at every boot (`/etc/modules-load.d/leds-valve.conf`); - adds a udev rule (`/etc/udev/rules.d/70-valve-leds-user.rules`) that gives your user the LED files, so Steam, which runs as you, can drive the bar; +- console-like power button: it puts the machine to sleep, and it never + suspends by itself on mains power (the launcher's Shut Down still shuts down); - installs and enables `steamos-manager`, the service Steam in gaming mode uses for hardware settings (fan, HDMI-CEC, performance); it recognises the Steam Machine from its DMI data. @@ -262,9 +265,13 @@ The **Steam Machine support** component, only shown on Fremont hardware Turning it off removes all of that again (the AUR helper is kept). The LEDs appear as `/sys/class/leds/valve-leds*`. The driver's Makefile -builds against the running kernel, so after a kernel update, boot the new -kernel and re-apply (`a` in the menu) or run -`sudo dkms install leds-valve-dkms/0.1 -k "$(uname -r)"`. +builds against the running kernel (`uname -r`) instead of the kernel DKMS +builds for, so the wizard adds a DKMS override +(`/etc/dkms/leds-valve-dkms.conf`) that passes DKMS's target kernel in. With +it, DKMS rebuilds the driver whenever a kernel or its headers are installed +or upgraded. A newly added kernel doesn't come with its headers, so +`ensure-kernel-headers.service` checks at every boot and installs any +missing `-headers` package, which makes DKMS build the driver for it. Troubleshooting: @@ -318,7 +325,8 @@ gamescope-session, ...) stay installed. | `lib/login-manager.sh` | SteamOS conversion: SDDM or plasmalogin autologin, sync bridge | | `lib/steam-desktop.sh` | Steam in the Plasma session; Steam Deck/Machine icons | | `lib/desktop-shortcut.sh` | Return to Gaming Mode shortcut and its sudoers rule | -| `lib/vapor-theme.sh` | SteamOS theme: Vapor, Valve's defaults, panel, dark mode | +| `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/steam-machine.sh` | Steam Machine support: LED driver, LED access, steamos-manager | | `tools/bundle.sh` | Builds the single-file version (`dist/setup-gamescope-boot.sh`) | diff --git a/lib/menu.sh b/lib/menu.sh index 62f5326..eb2d5e0 100644 --- a/lib/menu.sh +++ b/lib/menu.sh @@ -76,7 +76,7 @@ run_menu() { draw_menu_tui() { local cursor="$1" i=0 c box state line printf '\033[H\033[2J' - echo -e "${c_bold}CachyOS Steam Deck-style Gamescope Boot Wizard${c_reset}" + echo -e "${c_bold}CachyOS Steam Deck-style Gamescope Boot Wizard${c_reset} v$VERSION" echo "Pick what you want. Anything you untick is put back the way it was." echo MENU_ITEMS=() diff --git a/setup-gamescope-boot.sh b/setup-gamescope-boot.sh index 201b643..549ca1b 100755 --- a/setup-gamescope-boot.sh +++ b/setup-gamescope-boot.sh @@ -14,6 +14,9 @@ set -uo pipefail +# Release version, see CHANGELOG.md. +VERSION=0.7.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 desktop-shortcut menu; do @@ -23,7 +26,7 @@ done require_root_helper -echo -e "${c_bold}CachyOS Steam Deck-style Gamescope Boot Wizard${c_reset}" +echo -e "${c_bold}CachyOS Steam Deck-style Gamescope Boot Wizard${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." diff --git a/tools/bundle.sh b/tools/bundle.sh index d789454..fa213be 100755 --- a/tools/bundle.sh +++ b/tools/bundle.sh @@ -17,7 +17,7 @@ mkdir -p "$(dirname "$out")" libs=$(grep -oP '^for lib in \K.*(?=; do$)' "$entry") [[ -n "$libs" ]] || { echo "bundle: can't find the lib source loop in $entry" >&2; exit 1; } -version="$(git describe --always --dirty 2>/dev/null || echo unknown)" +version="v$(grep -oP '^VERSION=\K.*' "$entry"), $(git describe --always --dirty 2>/dev/null || echo unknown)" { # Header comment and `set` line of the entry point, up to the source loop.