mirror of
https://github.com/theupriser/steamify-cachyos.git
synced 2026-10-03 17:41:58 +02:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f91dd1f0b1 | ||
|
|
0411429654 | ||
|
|
1aa5e955fe | ||
|
|
ce75e895c4 | ||
|
|
9aef0a986a | ||
|
|
f7aa2412df | ||
|
|
87162efaa2 | ||
|
|
c79a3bbda5 | ||
|
|
ba11f58d9e |
No files matched your search
@@ -5,6 +5,36 @@ All notable changes, per version and per commit. Versions follow
|
||||
`steamify.sh`. Versions before 0.7.0 were numbered afterwards,
|
||||
one per merged pull request.
|
||||
|
||||
## 1.1.3 - 2026-09-25
|
||||
|
||||
- **fix: HDMI-CEC settings shown in Steam**
|
||||
- CachyOS's gaming mode script sets `STEAM_ENABLE_CEC=0`, which hides
|
||||
Steam's HDMI-CEC settings (and its CEC volume buttons). HDMI-CEC now adds
|
||||
a drop-in for `steam-launcher.service` that overrides it with
|
||||
`STEAM_ENABLE_CEC=1` (`/etc/steamify/steam-cec.env`).
|
||||
- HDMI-CEC set up by 1.1.0-1.1.2 shows as off and ticked, so a normal run
|
||||
(Enter) adds this.
|
||||
|
||||
## 1.1.2 - 2026-09-25
|
||||
|
||||
- **fix: Steam's HDMI-CEC settings reach cecd on a first run**
|
||||
- HDMI-CEC runs before Steam Machine support, which installs
|
||||
steamos-manager; so steamos-manager's `configure-cecd` unit couldn't be
|
||||
enabled and cecd ran without Steam's settings. Steam Machine support now
|
||||
links them once steamos-manager is there.
|
||||
|
||||
## 1.1.1 - 2026-09-25
|
||||
|
||||
- **perf: Pinned kernel before the LED driver**
|
||||
- With the kernel pin ticked, Steam Machine support installs kernel
|
||||
7.1.6-1 first, so DKMS builds the LED driver once, for that kernel,
|
||||
instead of for the current kernel first and then again. The LED driver
|
||||
then loads after the restart, which it now says instead of warning.
|
||||
- **fix: steamos-manager starts after cecd**
|
||||
- It checks only at its start whether cecd runs; if it was first, Steam's
|
||||
HDMI-CEC settings were missing until it restarted. A drop-in
|
||||
(`/etc/systemd/user/steamos-manager.service.d/`) orders it after cecd.
|
||||
|
||||
## 1.1.0 - 2026-09-25
|
||||
|
||||
- **feat: HDMI-CEC** (experimental, on every PC; ticked by default only on a
|
||||
|
||||
@@ -192,6 +192,13 @@ devices found. Also turn on CEC on the TV
|
||||
`steamos-manager` writes cecd's settings from Steam's (wake the TV, put it to
|
||||
sleep), in `~/.config/cecd/config.d/`, and Steam shows its HDMI-CEC
|
||||
settings; the wizard restarts steamos-manager so that happens right away.
|
||||
CachyOS's gaming mode script (`/usr/lib/steamos/gamescope-session`) sets
|
||||
`STEAM_ENABLE_CEC=0`, which hides those settings; Steam reads the script's
|
||||
variables from `$XDG_RUNTIME_DIR/gamescope-environment`. HDMI-CEC adds a
|
||||
drop-in for `steam-launcher.service`
|
||||
(`/etc/systemd/user/steam-launcher.service.d/10-steamify-cec.conf`) with a
|
||||
second `EnvironmentFile=` (`/etc/steamify/steam-cec.env`,
|
||||
`STEAM_ENABLE_CEC=1`), which overrides it from the next gaming mode start.
|
||||
|
||||
It's experimental: on SteamOS itself CEC can wake the Steam Machine right
|
||||
after it goes to sleep (Samsung TVs,
|
||||
|
||||
+41
-10
@@ -8,16 +8,35 @@
|
||||
# Sourced by steamify.sh; not meant to be run on its own.
|
||||
|
||||
CEC_PKGS=(cecd cec-audio-control inputattach-cec-units)
|
||||
# steamos-manager checks once, at its start, whether cecd runs; order it
|
||||
# after cecd so it never misses it at login.
|
||||
CEC_ORDER_DROPIN=/etc/systemd/user/steamos-manager.service.d/10-steamify-after-cecd.conf
|
||||
# CachyOS's gaming mode script exports STEAM_ENABLE_CEC=0, which hides
|
||||
# Steam's HDMI-CEC settings; Steam reads it from the gamescope environment
|
||||
# file. A later EnvironmentFile= overrides it.
|
||||
CEC_STEAM_ENV=/etc/steamify/steam-cec.env
|
||||
CEC_STEAM_DROPIN=/etc/systemd/user/steam-launcher.service.d/10-steamify-cec.conf
|
||||
|
||||
restart_steamos_manager() {
|
||||
# steamos-manager only offers its HDMI-CEC interface (Steam's CEC
|
||||
# settings) when cecd was there at its start.
|
||||
systemctl --user is-active -q steamos-manager.service 2>/dev/null &&
|
||||
systemctl --user restart steamos-manager.service
|
||||
cec_link_steamos_manager() {
|
||||
# On a Steam Machine: steamos-manager writes cecd's config from Steam's
|
||||
# CEC settings (its configure-cecd unit, run before cecd), and only
|
||||
# offers Steam those settings when cecd was there at its start. Also
|
||||
# called by Steam Machine support, which installs steamos-manager after
|
||||
# this item ran.
|
||||
pacman -Q steamos-manager >/dev/null 2>&1 || return 0
|
||||
systemctl --user daemon-reload
|
||||
systemctl --user enable steamos-manager-configure-cecd.service 2>/dev/null
|
||||
systemctl --user start steamos-manager-configure-cecd.service 2>/dev/null
|
||||
systemctl --user restart cecd.service 2>/dev/null
|
||||
systemctl --user restart steamos-manager.service 2>/dev/null
|
||||
return 0
|
||||
}
|
||||
|
||||
cec_status() { pacman -Q "${CEC_PKGS[@]}" >/dev/null 2>&1; }
|
||||
cec_installed() { pacman -Q "${CEC_PKGS[@]}" >/dev/null 2>&1; }
|
||||
# On = installed and Steam told to show its CEC settings. An install from
|
||||
# before 1.1.3 lacks the latter; the menu then ticks it (see cec_repair).
|
||||
cec_status() { cec_installed && [[ -f "$CEC_STEAM_DROPIN" ]]; }
|
||||
cec_repair() { cec_installed && ! cec_status; }
|
||||
|
||||
fetch_holo_pkg() {
|
||||
# fetch_holo_pkg <dir> <package>: download the newest <package> from
|
||||
@@ -64,12 +83,20 @@ cec_enable() {
|
||||
# session, after steamos-manager wrote its config from Steam's settings.
|
||||
sudo udevadm control --reload
|
||||
sudo udevadm trigger --subsystem-match=cec --action=add
|
||||
sudo mkdir -p "$(dirname "$CEC_ORDER_DROPIN")"
|
||||
printf '%s\n' "# Written by Steamify: steamos-manager only sees cecd if it runs at its start." \
|
||||
'[Unit]' 'After=cecd.service' | sudo tee "$CEC_ORDER_DROPIN" >/dev/null
|
||||
sudo mkdir -p "$(dirname "$CEC_STEAM_ENV")" "$(dirname "$CEC_STEAM_DROPIN")"
|
||||
printf '%s\n' "# Written by Steamify: Steam's HDMI-CEC settings in gaming mode." 'STEAM_ENABLE_CEC=1' |
|
||||
sudo tee "$CEC_STEAM_ENV" >/dev/null
|
||||
printf '%s\n' "# Written by Steamify: overrides STEAM_ENABLE_CEC=0 from the gaming mode script." \
|
||||
'[Service]' "EnvironmentFile=-$CEC_STEAM_ENV" | sudo tee "$CEC_STEAM_DROPIN" >/dev/null
|
||||
systemctl --user daemon-reload
|
||||
systemctl --user enable steamos-manager-configure-cecd.service 2>/dev/null
|
||||
cec_link_steamos_manager
|
||||
if compgen -G "/dev/cec*" >/dev/null; then
|
||||
systemctl --user restart cecd.service 2>/dev/null
|
||||
restart_steamos_manager
|
||||
ok "HDMI-CEC on ($(cd /dev && echo cec*)). Turn on CEC on your TV too (e.g. Sony: BRAVIA Sync, Samsung: Anynet+, LG: SimpLink)."
|
||||
ok "HDMI-CEC on ($(cd /dev && echo cec*)); Steam shows its settings from the next gaming mode start."
|
||||
info "Turn on CEC on your TV too (e.g. Sony: BRAVIA Sync, Samsung: Anynet+, LG: SimpLink)."
|
||||
else
|
||||
warn "No CEC device (/dev/cec*) found: your GPU may not support CEC. A USB CEC adapter"
|
||||
warn "(e.g. Pulse-Eight) works too. Check again after a restart with: ls /dev/cec*"
|
||||
@@ -81,12 +108,16 @@ cec_disable() {
|
||||
systemctl --user disable --now cecd.service cec-audio-control.socket cec-audio-control.service 2>/dev/null
|
||||
systemctl --user disable steamos-manager-configure-cecd.service 2>/dev/null
|
||||
sudo pacman -Rns --noconfirm "${CEC_PKGS[@]}" 2>/dev/null
|
||||
sudo rm -f "$CEC_ORDER_DROPIN" "$CEC_STEAM_DROPIN" "$CEC_STEAM_ENV"
|
||||
sudo rmdir "$(dirname "$CEC_ORDER_DROPIN")" "$(dirname "$CEC_STEAM_DROPIN")" "$(dirname "$CEC_STEAM_ENV")" 2>/dev/null
|
||||
systemctl --user daemon-reload
|
||||
if [[ -n "$(state_get cec installed_linuxconsole)" ]]; then
|
||||
sudo pacman -Rns --noconfirm linuxconsole 2>/dev/null
|
||||
state_clear cec
|
||||
fi
|
||||
sudo udevadm control --reload
|
||||
restart_steamos_manager
|
||||
systemctl --user is-active -q steamos-manager.service 2>/dev/null &&
|
||||
systemctl --user restart steamos-manager.service
|
||||
ok "HDMI-CEC removed."
|
||||
}
|
||||
|
||||
|
||||
@@ -67,6 +67,8 @@ detect_components() {
|
||||
if "${c}_status"; then CURRENT[$c]=1; any=true; else CURRENT[$c]=0; fi
|
||||
WANTED[$c]=${CURRENT[$c]}
|
||||
done
|
||||
# HDMI-CEC set up by an older version: tick it, so a normal run fixes it.
|
||||
component_available cec && cec_repair && WANTED[cec]=1
|
||||
# Shows the current and newest BIOS version.
|
||||
bios_available && { bios_lookup_newest; LABEL[bios]="$(bios_label)"; }
|
||||
# First run: preselect the full SteamOS experience (never an action).
|
||||
|
||||
+15
-1
@@ -251,6 +251,13 @@ install_valve_led_driver() {
|
||||
# Load now, and on every boot.
|
||||
echo leds-valve | sudo tee /etc/modules-load.d/leds-valve.conf >/dev/null
|
||||
|
||||
# The running kernel was just replaced (the kernel pin): its modules are
|
||||
# gone, so the driver can only load after the restart.
|
||||
if [[ ! -d "/usr/lib/modules/$(uname -r)/kernel" ]]; then
|
||||
ok "The LED driver loads after the restart (into the new kernel)."
|
||||
return 0
|
||||
fi
|
||||
|
||||
info "Loading the leds-valve kernel module..."
|
||||
if sudo modprobe leds-valve; then
|
||||
ok "Module loaded."
|
||||
@@ -344,7 +351,7 @@ kernel_overview() {
|
||||
fi
|
||||
echo -e " ${running}${line}"
|
||||
done
|
||||
cec_status && { echo; echo -e " $(cec_overview)"; }
|
||||
cec_installed && { echo; echo -e " $(cec_overview)"; }
|
||||
if [[ "$leds" == true ]]; then
|
||||
local loaded="$miss" nodes
|
||||
lsmod | grep -q '^leds_valve' && loaded="$mark"
|
||||
@@ -361,6 +368,11 @@ machine_status() {
|
||||
}
|
||||
|
||||
machine_enable() {
|
||||
# The pinned kernel first when it's wanted too, so DKMS builds the LED
|
||||
# driver for it once, instead of for the current kernel and then again.
|
||||
if [[ "${WANTED[kpin]:-0}" == 1 ]]; then
|
||||
install_pinned_kernel || { err "Couldn't set up kernel $PINNED_KERNEL_VER."; return 1; }
|
||||
fi
|
||||
ensure_aur_helper || { warn "Couldn't set up an AUR helper automatically. Install yay or paru, then run the wizard again."; return 1; }
|
||||
install_valve_led_driver || { warn "LED driver setup ran into a problem - see errors above."; return 1; }
|
||||
install_headers_boot_check
|
||||
@@ -383,6 +395,8 @@ EOF
|
||||
sudo systemctl enable --now inputplumber.service
|
||||
sudo systemctl enable --now steamos-manager.service
|
||||
systemctl --user enable steamos-manager.service 2>/dev/null
|
||||
# HDMI-CEC ran before this and couldn't link cecd to steamos-manager yet.
|
||||
cec_status && cec_link_steamos_manager
|
||||
|
||||
# Console-like power handling, as SteamOS's powerdevilrc (mains-power
|
||||
# part; there is no battery): the power button sleeps instead of showing
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@
|
||||
set -uo pipefail
|
||||
|
||||
# Release version, see CHANGELOG.md.
|
||||
VERSION=1.1.0
|
||||
VERSION=1.1.3
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
|
||||
Reference in new issue
Block a user