mirror of
https://github.com/theupriser/steamify-cachyos.git
synced 2026-10-14 15:44:47 +02:00
50 lines
2.1 KiB
Bash
50 lines
2.1 KiB
Bash
#!/bin/bash
|
|
# steamos-session-select for GNOME (Steamify prototype): CachyOS's own ends the
|
|
# session with a KDE-only D-Bus call and goes to Plasma only. GDM logs in by itself only when it
|
|
# starts, so after the new session is set the user is ended and GDM restarted
|
|
# (patches/steamify-gdm-relogin.sh): it then logs the autologin user straight into it.
|
|
set -e
|
|
|
|
DM_ID="$(systemctl show -p Id --value display-manager)"
|
|
DM_ID="${DM_ID%.service}"
|
|
|
|
relogin() {
|
|
# Out of the running session into the one that was set.
|
|
case "$DM_ID" in
|
|
gdm) sudo -n /usr/local/libexec/steamify-gdm-relogin ;;
|
|
*)
|
|
# sddm and plasma-login-manager log in again by themselves (Relogin=true): just end the session.
|
|
if [[ "${XDG_CURRENT_DESKTOP:-}" == *GNOME* ]]; then gnome-session-quit --no-prompt --logout
|
|
else qdbus6 org.kde.Shutdown /Shutdown org.kde.Shutdown.logout; fi ;;
|
|
esac
|
|
}
|
|
|
|
case "$1" in
|
|
persistent)
|
|
systemctl --user mask cachyos-gamescope-autologin.service
|
|
pkexec /usr/lib/steamos/steam-set-session desktop ;;
|
|
oneshot)
|
|
systemctl --user unmask cachyos-gamescope-autologin.service
|
|
pkexec /usr/lib/steamos/steam-set-session gamescope-session.desktop ;;
|
|
gamescope)
|
|
pkexec /usr/lib/steamos/steam-set-session gamescope-session.desktop
|
|
relogin ;;
|
|
desktop|plasma|gnome)
|
|
# desktop: the preferred one; plasma or gnome: that one.
|
|
case "$1" in plasma) target=plasma.desktop ;; gnome) target=gnome.desktop ;; *) target=desktop ;; esac
|
|
pkexec /usr/lib/steamos/steam-set-session "$target"
|
|
steam -shutdown || true
|
|
systemctl --user stop gamescope-session.target || true
|
|
# Under GDM nothing logs in again by itself after the session ends.
|
|
[[ "$DM_ID" == gdm ]] && relogin ;;
|
|
*)
|
|
[[ -n "$1" ]] && echo -e "Unknown session '$1'\n"
|
|
echo "Usage: $(basename "$0") persistent|oneshot|gamescope|desktop"
|
|
exit 1 ;;
|
|
esac
|
|
|
|
if [[ -e /dev/input/.hidden ]]; then
|
|
pkexec mv /dev/input/.hidden/* /dev/input
|
|
pkexec rm -r /dev/input/.hidden
|
|
fi
|