mirror of
https://github.com/theupriser/steamify-cachyos.git
synced 2026-10-03 17:41:58 +02:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ff364ffd69 | ||
|
|
2b3f1de75a |
No files matched your search
@@ -161,9 +161,14 @@ gamescope and the Plasma desktop. Primary target: the Valve Steam Machine
|
|||||||
now? [Y/n]" (`quit_prompt`): `n` goes back to the menu, the next `q` asks
|
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
|
again. Scripted input that runs out quits without restarting (never
|
||||||
restart on EOF: `ask_yn` would take its default).
|
restart on EOF: `ask_yn` would take its default).
|
||||||
- Steamify shortcut (`launcher`): the icon runs `curl | bash` of
|
- Steamify shortcut (`launcher`): "Steamify CachyOS" (desktop and launcher,
|
||||||
`releases/latest/download/steamify.sh` in Konsole, so it's
|
id `steamify-ui.desktop`, the app's own id) runs `curl | bash` of
|
||||||
always the newest release. Its icon, `assets/steam-gaming-settings.svg`
|
`releases/latest/download/steamify-app.sh` without a terminal (in Konsole
|
||||||
|
only while PySide6 is missing, for sudo); "Steamify Terminal" (launcher)
|
||||||
|
runs `steamify.sh` in Konsole. Both always the newest release. The entry
|
||||||
|
has `X-Steamify-Shortcut=true`: steamify-app.sh doesn't overwrite it, and
|
||||||
|
disable only removes it then. A pre-2.0.1 shortcut (terminal only) is
|
||||||
|
ticked by `launcher_repair`. Its icon, `assets/steam-gaming-settings.svg`
|
||||||
(Valve's GPL-2.0 return icon with a gear), is a release asset too, and is
|
(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
|
downloaded from there (Steam's icon if that fails). Desktop files are
|
||||||
written with their mode already set (`install_executable`): Plasma opens a
|
written with their mode already set (`install_executable`): Plasma opens a
|
||||||
|
|||||||
@@ -5,6 +5,16 @@ All notable changes, per version and per commit. Versions follow
|
|||||||
`steamify.sh`. Versions before 0.7.0 were numbered afterwards,
|
`steamify.sh`. Versions before 0.7.0 were numbered afterwards,
|
||||||
one per merged pull request.
|
one per merged pull request.
|
||||||
|
|
||||||
|
## 2.0.1 - 2026-09-25
|
||||||
|
|
||||||
|
- **feat: The Steamify shortcut opens the app**
|
||||||
|
- "Steamify CachyOS" on the desktop and in the launcher starts the newest
|
||||||
|
app (in Konsole the first time, if PySide6 still has to be installed).
|
||||||
|
The terminal menu is "Steamify Terminal" in the launcher. A shortcut from
|
||||||
|
before 2.0.1 is ticked in the menu, so a normal run replaces it.
|
||||||
|
- steamify-app.sh leaves the shortcut's launcher entry alone (it has the
|
||||||
|
same id, `steamify-ui.desktop`, and always starts the newest release).
|
||||||
|
|
||||||
## 2.0.0 - 2026-09-25
|
## 2.0.0 - 2026-09-25
|
||||||
|
|
||||||
- **feat: Steamify app (v2 UI)**
|
- **feat: Steamify app (v2 UI)**
|
||||||
|
|||||||
@@ -25,8 +25,9 @@ Steam Machine.
|
|||||||
KDE wallet password prompts (e.g. from Brave). Typing a password with a
|
KDE wallet password prompts (e.g. from Brave). Typing a password with a
|
||||||
controller is no fun
|
controller is no fun
|
||||||
([details](TECHNICAL.md#single-user-mode-sddm-no-locking)).
|
([details](TECHNICAL.md#single-user-mode-sddm-no-locking)).
|
||||||
5. **Steamify shortcut** - an icon on the desktop and in the launcher that
|
5. **Steamify shortcut** - "Steamify CachyOS" on the desktop and in the
|
||||||
opens the newest Steamify, so you don't need the install command again.
|
launcher opens the newest Steamify app, so you don't need the install
|
||||||
|
command again. "Steamify Terminal" in the launcher opens the terminal menu.
|
||||||
6. **HDMI-CEC** (experimental; off by default, on by default on a Steam
|
6. **HDMI-CEC** (experimental; off by default, on by default on a Steam
|
||||||
Machine) - use Steam with your TV's
|
Machine) - use Steam with your TV's
|
||||||
remote, and the TV turns on and off with the PC. Needs a PC with CEC (like
|
remote, and the TV turns on and off with the PC. Needs a PC with CEC (like
|
||||||
|
|||||||
+4
-1
@@ -24,7 +24,7 @@ declare -A LABEL=(
|
|||||||
[theme]="Install SteamOS theme: Vapor look (cachyos-vapor)"
|
[theme]="Install SteamOS theme: Vapor look (cachyos-vapor)"
|
||||||
[glyphs]="Install Steam Deck/Machine icons: Deck button icons in gaming mode"
|
[glyphs]="Install Steam Deck/Machine icons: Deck button icons in gaming mode"
|
||||||
[single]="Single user mode: no password, lock screen or log out (SDDM)"
|
[single]="Single user mode: no password, lock screen or log out (SDDM)"
|
||||||
[launcher]="Steamify shortcut: desktop icon to run this again"
|
[launcher]="Steamify shortcut: the app on the desktop, Steamify Terminal in the launcher"
|
||||||
[cec]="HDMI-CEC: use Steam with the TV remote, TV on/off with the PC (experimental)"
|
[cec]="HDMI-CEC: use Steam with the TV remote, TV on/off with the PC (experimental)"
|
||||||
[machine]="Steam Machine support: LED bar driver, hardware settings in Steam"
|
[machine]="Steam Machine support: LED bar driver, hardware settings in Steam"
|
||||||
[kpin]="Pin the kernel to $PINNED_KERNEL_VER (fixes rebooting after shutdown)"
|
[kpin]="Pin the kernel to $PINNED_KERNEL_VER (fixes rebooting after shutdown)"
|
||||||
@@ -72,6 +72,9 @@ detect_components() {
|
|||||||
done
|
done
|
||||||
# HDMI-CEC set up by an older version: tick it, so a normal run fixes it.
|
# HDMI-CEC set up by an older version: tick it, so a normal run fixes it.
|
||||||
component_available cec && cec_repair && WANTED[cec]=1
|
component_available cec && cec_repair && WANTED[cec]=1
|
||||||
|
# The terminal-only Steamify shortcut from before 2.0.1: tick it, so a
|
||||||
|
# normal run replaces it with the app.
|
||||||
|
launcher_repair && WANTED[launcher]=1
|
||||||
# Shows the current and newest BIOS version.
|
# Shows the current and newest BIOS version.
|
||||||
bios_available && { bios_lookup_newest; LABEL[bios]="$(bios_label)"; }
|
bios_available && { bios_lookup_newest; LABEL[bios]="$(bios_label)"; }
|
||||||
# First run: preselect the full SteamOS experience (never an action).
|
# First run: preselect the full SteamOS experience (never an action).
|
||||||
|
|||||||
+61
-14
@@ -1,19 +1,29 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# "Steamify shortcut" menu item: a desktop icon and an app launcher entry that
|
# "Steamify shortcut" menu item: "Steamify CachyOS" on the desktop and in the
|
||||||
# open the newest release of Steamify CachyOS in Konsole (curl | bash, like the
|
# app launcher opens the newest release of the app (curl | bash of
|
||||||
# install command in the README), so it's never out of date.
|
# steamify-app.sh, like the install command in the README), so it's never out
|
||||||
|
# of date; "Steamify Terminal" in the launcher opens the terminal menu in
|
||||||
|
# Konsole the same way.
|
||||||
# Sourced by steamify.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_RELEASE="https://github.com/theupriser/steamify-cachyos/releases/latest/download"
|
||||||
WIZARD_URL="$WIZARD_RELEASE/steamify.sh"
|
WIZARD_URL="$WIZARD_RELEASE/steamify.sh"
|
||||||
|
WIZARD_APP_URL="$WIZARD_RELEASE/steamify-app.sh"
|
||||||
# Steam logo with a gear (assets/ in the repo, published with every release).
|
# 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_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_LAUNCHER="${XDG_DATA_HOME:-$HOME/.local/share}/cachyos-gamescope-boot/run-wizard"
|
||||||
WIZARD_DESKTOP_NAME="cachyos-gamescope-boot-wizard.desktop"
|
WIZARD_APP_LAUNCHER="${XDG_DATA_HOME:-$HOME/.local/share}/cachyos-gamescope-boot/run-app"
|
||||||
WIZARD_APP_ENTRY="${XDG_DATA_HOME:-$HOME/.local/share}/applications/$WIZARD_DESKTOP_NAME"
|
WIZARD_APPS="${XDG_DATA_HOME:-$HOME/.local/share}/applications"
|
||||||
|
# steamify-ui: the id the app gives itself, so its window belongs to this
|
||||||
|
# entry. steamify-app.sh leaves an entry with X-Steamify-Shortcut alone.
|
||||||
|
WIZARD_DESKTOP_NAME="steamify-ui.desktop"
|
||||||
|
WIZARD_APP_ENTRY="$WIZARD_APPS/$WIZARD_DESKTOP_NAME"
|
||||||
|
WIZARD_TERMINAL_ENTRY="$WIZARD_APPS/steamify-terminal.desktop"
|
||||||
|
# Before 2.0.1 the shortcut opened the terminal menu under this name.
|
||||||
|
WIZARD_OLD_NAME="cachyos-gamescope-boot-wizard.desktop"
|
||||||
|
|
||||||
wizard_desktop_file() {
|
wizard_desktop_dir() {
|
||||||
echo "$(xdg-user-dir DESKTOP 2>/dev/null || echo "$HOME/Desktop")/$WIZARD_DESKTOP_NAME"
|
xdg-user-dir DESKTOP 2>/dev/null || echo "$HOME/Desktop"
|
||||||
}
|
}
|
||||||
|
|
||||||
install_executable() {
|
install_executable() {
|
||||||
@@ -29,11 +39,15 @@ install_executable() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
launcher_status() {
|
launcher_status() {
|
||||||
[[ -x "$WIZARD_LAUNCHER" && -f "$WIZARD_APP_ENTRY" ]]
|
[[ -x "$WIZARD_APP_LAUNCHER" && -x "$WIZARD_LAUNCHER" && -f "$WIZARD_APP_ENTRY" && -f "$WIZARD_TERMINAL_ENTRY" ]]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# A shortcut from before 2.0.1 (terminal only): the menu ticks the item, so a
|
||||||
|
# normal run replaces it.
|
||||||
|
launcher_repair() { [[ -f "$WIZARD_APPS/$WIZARD_OLD_NAME" ]] && ! launcher_status; }
|
||||||
|
|
||||||
launcher_enable() {
|
launcher_enable() {
|
||||||
info "Adding the Steamify shortcut (desktop icon and app launcher entry)..."
|
info "Adding the Steamify shortcut (the app on the desktop and in the launcher, Steamify Terminal in the launcher)..."
|
||||||
install_executable "$WIZARD_LAUNCHER" 755 << EOF
|
install_executable "$WIZARD_LAUNCHER" 755 << EOF
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# Installed by Steamify CachyOS: run its newest release.
|
# Installed by Steamify CachyOS: run its newest release.
|
||||||
@@ -53,6 +67,23 @@ for (( i = 10; i > 0; i-- )); do
|
|||||||
read -rs -t 1 _ && break
|
read -rs -t 1 _ && break
|
||||||
done
|
done
|
||||||
echo
|
echo
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# The app, without a terminal. Only the first time, when PySide6 still
|
||||||
|
# has to be installed, it runs in Konsole: sudo asks for the password there.
|
||||||
|
install_executable "$WIZARD_APP_LAUNCHER" 755 << EOF
|
||||||
|
#!/bin/bash
|
||||||
|
# Installed by Steamify CachyOS: start the newest release of its app.
|
||||||
|
set -o pipefail
|
||||||
|
if [[ "\${1:-}" != --in-terminal ]] && ! python3 -c 'import PySide6.QtQml' 2>/dev/null; then
|
||||||
|
exec konsole -e "\$0" --in-terminal
|
||||||
|
fi
|
||||||
|
if ! curl -fsSL --max-time 30 "$WIZARD_APP_URL" | bash; then
|
||||||
|
msg="Couldn't download or start Steamify. Are you connected to the internet?"
|
||||||
|
if [[ "\${1:-}" == --in-terminal ]]; then echo; echo "\$msg"; read -rp "Press Enter to close this window... " _
|
||||||
|
else kdialog --title Steamify --sorry "\$msg" 2>/dev/null; fi
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# The icon comes with the release; without it, Steam's own icon.
|
# The icon comes with the release; without it, Steam's own icon.
|
||||||
@@ -72,18 +103,34 @@ EOF
|
|||||||
Type=Application
|
Type=Application
|
||||||
Name=Steamify CachyOS
|
Name=Steamify CachyOS
|
||||||
Comment=Turn the SteamOS-style parts of this PC on or off
|
Comment=Turn the SteamOS-style parts of this PC on or off
|
||||||
|
Exec=$WIZARD_APP_LAUNCHER
|
||||||
|
Icon=$icon
|
||||||
|
Terminal=false
|
||||||
|
Categories=Game;System;Settings;
|
||||||
|
X-Steamify-Shortcut=true"
|
||||||
|
printf '%s\n' "$entry" | install_executable "$WIZARD_APP_ENTRY" 644
|
||||||
|
printf '%s\n' "$entry" | install_executable "$(wizard_desktop_dir)/$WIZARD_DESKTOP_NAME" 755
|
||||||
|
printf '%s\n' "[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Name=Steamify Terminal
|
||||||
|
Comment=Steamify CachyOS's menu in a terminal
|
||||||
Exec=konsole -e $WIZARD_LAUNCHER
|
Exec=konsole -e $WIZARD_LAUNCHER
|
||||||
Icon=$icon
|
Icon=$icon
|
||||||
Terminal=false
|
Terminal=false
|
||||||
Categories=Game;System;Settings;"
|
Categories=Game;System;Settings;" | install_executable "$WIZARD_TERMINAL_ENTRY" 644
|
||||||
printf '%s\n' "$entry" | install_executable "$WIZARD_APP_ENTRY" 644
|
# The terminal-only shortcut from before 2.0.1.
|
||||||
printf '%s\n' "$entry" | install_executable "$(wizard_desktop_file)" 755
|
rm -f "$(wizard_desktop_dir)/$WIZARD_OLD_NAME" "$WIZARD_APPS/$WIZARD_OLD_NAME"
|
||||||
kbuildsycoca6 >/dev/null 2>&1 || true
|
kbuildsycoca6 >/dev/null 2>&1 || true
|
||||||
ok "Steamify shortcut added: \"Steamify CachyOS\" on the desktop and in the launcher."
|
ok "Steamify shortcut added: \"Steamify CachyOS\" (the app) on the desktop and in the launcher, \"Steamify Terminal\" in the launcher."
|
||||||
}
|
}
|
||||||
|
|
||||||
launcher_disable() {
|
launcher_disable() {
|
||||||
rm -f "$(wizard_desktop_file)" "$WIZARD_APP_ENTRY" "$WIZARD_LAUNCHER" "$WIZARD_ICON"
|
# The launcher entry only if it's ours: steamify-app.sh writes its own
|
||||||
|
# under the same name when there's no shortcut.
|
||||||
|
grep -q '^X-Steamify-Shortcut=true' "$WIZARD_APP_ENTRY" 2>/dev/null && rm -f "$WIZARD_APP_ENTRY"
|
||||||
|
rm -f "$(wizard_desktop_dir)/$WIZARD_DESKTOP_NAME" "$WIZARD_TERMINAL_ENTRY" \
|
||||||
|
"$(wizard_desktop_dir)/$WIZARD_OLD_NAME" "$WIZARD_APPS/$WIZARD_OLD_NAME" \
|
||||||
|
"$WIZARD_LAUNCHER" "$WIZARD_APP_LAUNCHER" "$WIZARD_ICON"
|
||||||
rmdir "$(dirname "$WIZARD_LAUNCHER")" 2>/dev/null || true
|
rmdir "$(dirname "$WIZARD_LAUNCHER")" 2>/dev/null || true
|
||||||
kbuildsycoca6 >/dev/null 2>&1 || true
|
kbuildsycoca6 >/dev/null 2>&1 || true
|
||||||
ok "Steamify shortcut removed."
|
ok "Steamify shortcut removed."
|
||||||
|
|||||||
+1
-1
@@ -15,7 +15,7 @@
|
|||||||
set -uo pipefail
|
set -uo pipefail
|
||||||
|
|
||||||
# Release version, see CHANGELOG.md.
|
# Release version, see CHANGELOG.md.
|
||||||
VERSION=2.0.0
|
VERSION=2.0.1
|
||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
|
||||||
|
|||||||
+3
-2
@@ -60,8 +60,9 @@ ApplicationWindow {
|
|||||||
single: { label: "Single user mode", hint: "No password, lock screen or wallet prompts",
|
single: { label: "Single user mode", hint: "No password, lock screen or wallet prompts",
|
||||||
body: "Like SteamOS: never a login or lock screen, and no KDE wallet password prompts. Typing a password with a controller is no fun.",
|
body: "Like SteamOS: never a login or lock screen, and no KDE wallet password prompts. Typing a password with a controller is no fun.",
|
||||||
changes: ["SDDM autologin, no lock screen or user switching", "Valve's empty wallet; your own is kept aside", "Launcher shows Sleep, Restart, Shut Down only"] },
|
changes: ["SDDM autologin, no lock screen or user switching", "Valve's empty wallet; your own is kept aside", "Launcher shows Sleep, Restart, Shut Down only"] },
|
||||||
launcher: { label: "Steamify shortcut", hint: "Icon on the desktop and in the launcher",
|
launcher: { label: "Steamify shortcut", hint: "The app on the desktop and in the launcher",
|
||||||
body: "Opens the newest Steamify, so you never need the install command again.", changes: ["Desktop icon and launcher entry"] },
|
body: "Opens the newest Steamify app, so you never need the install command again. Steamify Terminal in the launcher opens the terminal menu.",
|
||||||
|
changes: ["Steamify CachyOS on the desktop and in the launcher (the app)", "Steamify Terminal in the launcher"] },
|
||||||
cec: { label: "HDMI-CEC", hint: "Use Steam with the TV remote, TV on/off with the PC", experimental: true,
|
cec: { label: "HDMI-CEC", hint: "Use Steam with the TV remote, TV on/off with the PC", experimental: true,
|
||||||
body: "Use Steam with your TV remote, and the TV turns on and off with the PC. Turn on CEC on the TV too (Sony: BRAVIA Sync, Samsung: Anynet+, LG: SimpLink).",
|
body: "Use Steam with your TV remote, and the TV turns on and off with the PC. Turn on CEC on the TV too (Sony: BRAVIA Sync, Samsung: Anynet+, LG: SimpLink).",
|
||||||
changes: ["Valve's cecd and cec-audio-control", "HDMI CEC section in Steam's Display settings", "Volume buttons for the TV in the Quick Access menu"] },
|
changes: ["Valve's cecd and cec-audio-control", "HDMI CEC section in Steam's Display settings", "Volume buttons for the TV in the Quick Access menu"] },
|
||||||
|
|||||||
+4
-1
@@ -53,8 +53,11 @@ if ! python3 -c 'import PySide6.QtQml' 2>/dev/null; then
|
|||||||
sudo pacman -S --needed --noconfirm pyside6 </dev/tty || die "Installing pyside6 failed."
|
sudo pacman -S --needed --noconfirm pyside6 </dev/tty || die "Installing pyside6 failed."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Launcher entry (its id also names the app to the desktop portal).
|
# Launcher entry (its id also names the app to the desktop portal). The
|
||||||
|
# Steamify shortcut's entry has the same id and always starts the newest
|
||||||
|
# release: left alone.
|
||||||
mkdir -p "$APPS"
|
mkdir -p "$APPS"
|
||||||
|
grep -q '^X-Steamify-Shortcut=true' "$APPS/steamify-ui.desktop" 2>/dev/null ||
|
||||||
cat > "$APPS/steamify-ui.desktop" << EOF
|
cat > "$APPS/steamify-ui.desktop" << EOF
|
||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Type=Application
|
Type=Application
|
||||||
|
|||||||
Reference in new issue
Block a user