mirror of
https://github.com/theupriser/steamify-cachyos.git
synced 2026-10-03 17:41:58 +02:00
- Menu detects what is on and applies only the changes: SteamOS conversion, SteamOS theme, Steam Deck/Machine icons, single user mode, and Steam Machine support (only on Fremont hardware) - Everything is reversible: KDE settings go through an undo journal (lib/state.sh), system files are restored from their backups - Steam Machine support: LED driver, udev rule giving the user the LED files, steamos-manager for Steam's hardware settings; OpenRGB dropped - Edit Plasma files only while plasmashell is stopped so it can't overwrite them - README and AGENTS.md describe the menu, the component model and the test environment
69 lines
3.6 KiB
Bash
69 lines
3.6 KiB
Bash
#!/bin/bash
|
|
# Single user, no password, like SteamOS: no lock screen, user switching or
|
|
# log out, since typing a password with a controller is miserable. Goes
|
|
# together with SDDM (see lib/login-manager.sh). All changes are journaled
|
|
# per user (lib/state.sh), so turning it off restores KDE's previous state.
|
|
# Sourced by setup-gamescope-boot.sh; not meant to be run on its own.
|
|
|
|
single_status() {
|
|
[[ "$(kreadconfig6 --file kdeglobals --group "KDE Action Restrictions" --key action/lock_screen)" == false ]]
|
|
}
|
|
|
|
single_enable() {
|
|
info "Turning off the lock screen, user switching and logging out..."
|
|
stop_plasmashell_for_edit
|
|
|
|
# Hides Lock / Switch User in menus.
|
|
local action applet
|
|
for action in lock_screen switch_user start_new_session; do
|
|
kset single kdeglobals "KDE Action Restrictions" "action/$action" false
|
|
done
|
|
# Never lock on idle or resume.
|
|
kset single kscreenlockerrc Daemon Autolock false
|
|
kset single kscreenlockerrc Daemon LockOnResume false
|
|
kset single kscreenlockerrc Daemon Timeout 0
|
|
# The restrictions don't cover the shortcuts: unbind Meta+L and the
|
|
# Ctrl+Alt+Del logout screen (format: current,default,description).
|
|
kset single kglobalshortcutsrc ksmserver "Lock Session" $'none,Screensaver\tMeta+L,Lock Session'
|
|
kset single kglobalshortcutsrc ksmserver "Log Out" 'none,Ctrl+Alt+Del,Show Logout Screen'
|
|
# Launcher: only Sleep / Restart / Shut Down, no Session dropdown (where
|
|
# Log Out lives). Restricting action/logout instead would also hide
|
|
# Restart and Shut Down.
|
|
for applet in $(plasma_applets org.kde.plasma.kickoff); do
|
|
local grp="Containments|${applet%%:*}|Applets|${applet#*:}|Configuration|General"
|
|
kset single plasma-org.kde.plasma.desktop-appletsrc "$grp" primaryActions 3
|
|
kset single plasma-org.kde.plasma.desktop-appletsrc "$grp" systemFavorites 'suspend,reboot,shutdown'
|
|
done
|
|
|
|
restart_plasmashell_if_stopped
|
|
ok "Single user: no lock screen, user switching or log out."
|
|
}
|
|
|
|
single_disable() {
|
|
info "Restoring the lock screen, user switching and logging out..."
|
|
stop_plasmashell_for_edit
|
|
if has_journal single; then
|
|
krevert single
|
|
else
|
|
# Set up by a version of this script without the undo journal:
|
|
# fall back to KDE's defaults for everything it changes.
|
|
local action applet key
|
|
for action in lock_screen switch_user start_new_session; do
|
|
kwriteconfig6 --file kdeglobals --group "KDE Action Restrictions" --key "action/$action" --delete
|
|
done
|
|
for key in Autolock LockOnResume Timeout; do
|
|
kwriteconfig6 --file kscreenlockerrc --group Daemon --key "$key" --delete
|
|
done
|
|
kwriteconfig6 --file kglobalshortcutsrc --group ksmserver --key "Lock Session" $'Screensaver\tMeta+L,Screensaver\tMeta+L,Lock Session'
|
|
kwriteconfig6 --file kglobalshortcutsrc --group ksmserver --key "Log Out" 'Ctrl+Alt+Del,Ctrl+Alt+Del,Show Logout Screen'
|
|
for applet in $(plasma_applets org.kde.plasma.kickoff); do
|
|
kwriteconfig6 --file plasma-org.kde.plasma.desktop-appletsrc --group Containments --group "${applet%%:*}" \
|
|
--group Applets --group "${applet#*:}" --group Configuration --group General --key primaryActions --delete
|
|
kwriteconfig6 --file plasma-org.kde.plasma.desktop-appletsrc --group Containments --group "${applet%%:*}" \
|
|
--group Applets --group "${applet#*:}" --group Configuration --group General --key systemFavorites --delete
|
|
done
|
|
fi
|
|
restart_plasmashell_if_stopped
|
|
ok "KDE's normal lock screen and user switching are back."
|
|
}
|