mirror of
https://github.com/theupriser/steamify-cachyos.git
synced 2026-10-03 17:41:58 +02:00
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, while 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 (same id) alone.
This commit is contained in:
1 parent
6d7d5861d6
commit
2b3f1de75a
8 files changed
+94
-24
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