mirror of
https://github.com/theupriser/steamify-cachyos.git
synced 2026-10-03 17:41:58 +02:00
feat: No more KDE wallet password prompts in single user mode
Valve's empty, password-less wallet, like SteamOS. The user's wallet is moved aside and restored when single user mode is off; the single user wallet is kept and reused next time.
This commit is contained in:
1 parent
3e3ededc62
commit
ebfffe81e7
5 files changed
+98
-17
No files matched your search
@@ -25,6 +25,13 @@ one per merged pull request.
|
|||||||
- **docs: Shorter README, with a Steam Machine section**
|
- **docs: Shorter README, with a Steam Machine section**
|
||||||
- How it works moved to `TECHNICAL.md`, problems to `TROUBLESHOOTING.md`;
|
- How it works moved to `TECHNICAL.md`, problems to `TROUBLESHOOTING.md`;
|
||||||
the README links to them and to the files it mentions.
|
the README links to them and to the files it mentions.
|
||||||
|
- **feat: No more KDE wallet password prompts in single user mode**
|
||||||
|
- Uses Valve's empty, password-less wallet, like SteamOS; apps such as
|
||||||
|
Brave no longer ask for the wallet password after autologin.
|
||||||
|
- Your own wallet is moved to `kdewallet.kwl.bak-steamify` and comes back,
|
||||||
|
unchanged, when single user mode is off; the single user wallet is kept
|
||||||
|
and reused next time.
|
||||||
|
- Moved from the SteamOS theme, where it only helped without any wallet.
|
||||||
- **docs: LICENSE.md** with the MIT license the README already named.
|
- **docs: LICENSE.md** with the MIT license the README already named.
|
||||||
- **chore: No more `setup-gamescope-boot.sh` release asset**
|
- **chore: No more `setup-gamescope-boot.sh` release asset**
|
||||||
- Only `steamify.sh` is published; the old name from before 0.9.0 is gone.
|
- Only `steamify.sh` is published; the old name from before 0.9.0 is gone.
|
||||||
|
|||||||
@@ -21,8 +21,9 @@ Steam Machine.
|
|||||||
**Add to Steam** in right-click menus
|
**Add to Steam** in right-click menus
|
||||||
([details](TECHNICAL.md#steamos-desktop-look)).
|
([details](TECHNICAL.md#steamos-desktop-look)).
|
||||||
3. **Steam Deck/Machine icons** - Steam Deck button icons in gaming mode.
|
3. **Steam Deck/Machine icons** - Steam Deck button icons in gaming mode.
|
||||||
4. **Single user mode** - like SteamOS: never a login or lock screen. Typing a
|
4. **Single user mode** - like SteamOS: never a login or lock screen, and no
|
||||||
password with a controller is no fun
|
KDE wallet password prompts (e.g. from Brave). Typing a password with a
|
||||||
|
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** - an icon on the desktop and in the launcher that
|
||||||
opens the newest Steamify, so you don't need the install command again.
|
opens the newest Steamify, so you don't need the install command again.
|
||||||
|
|||||||
+12
-3
@@ -32,6 +32,17 @@ the Session dropdown with Log Out. (Restricting `action/logout` would also
|
|||||||
hide Restart and Shut Down.) Turning it off restores all of that and moves
|
hide Restart and Shut Down.) Turning it off restores all of that and moves
|
||||||
the conversion back to plasma-login-manager.
|
the conversion back to plasma-login-manager.
|
||||||
|
|
||||||
|
**KDE wallet.** KDE normally unlocks your wallet with the password you log in
|
||||||
|
with; with autologin nobody types it, so apps that keep passwords in it (Brave,
|
||||||
|
for example) ask for the wallet password. Single user mode does what SteamOS
|
||||||
|
does: it uses Valve's empty wallet without a password (from
|
||||||
|
`steamdeck-kde-presets`, checksum verified). Your own wallet in
|
||||||
|
`~/.local/share/kwalletd/` is moved to `kdewallet.kwl.bak-steamify` (and
|
||||||
|
`.salt`). Turning single user mode off puts it back, unchanged; the single
|
||||||
|
user wallet, with anything saved in it meanwhile, is kept as
|
||||||
|
`kdewallet.kwl.steamify-single-user` and used again the next time it's on.
|
||||||
|
Passwords aren't shared between the two wallets.
|
||||||
|
|
||||||
**SDDM** is what SteamOS uses, and CachyOS's `steam-set-session` supports it
|
**SDDM** is what SteamOS uses, and CachyOS's `steam-set-session` supports it
|
||||||
directly: it writes `/etc/sddm.conf.d/zz-steamos-autologin.conf`, which SDDM
|
directly: it writes `/etc/sddm.conf.d/zz-steamos-autologin.conf`, which SDDM
|
||||||
honours. The script installs and enables `sddm` (active from the next boot),
|
honours. The script installs and enables `sddm` (active from the next boot),
|
||||||
@@ -123,9 +134,7 @@ taken from the newest `steamdeck-kde-presets` on Valve's SteamOS mirror
|
|||||||
- **Nested Desktop**: add it to Steam from the launcher, then start it in
|
- **Nested Desktop**: add it to Steam from the launcher, then start it in
|
||||||
gaming mode for a Plasma desktop inside gaming mode;
|
gaming mode for a Plasma desktop inside gaming mode;
|
||||||
- the SteamOS **Return to Gaming Mode** icon (Steam logo with a return arrow);
|
- the SteamOS **Return to Gaming Mode** icon (Steam logo with a return arrow);
|
||||||
- a window rule that keeps the **Steam keyboard** above other windows;
|
- a window rule that keeps the **Steam keyboard** above other windows.
|
||||||
- an empty, password-less **KWallet**, only if you don't have a wallet yet,
|
|
||||||
so nothing asks for a wallet password after autologin.
|
|
||||||
|
|
||||||
Turning it off restores your previous look and panel layout, and removes `cachyos-vapor` again
|
Turning it off restores your previous look and panel layout, and removes `cachyos-vapor` again
|
||||||
if the wizard installed it (and nothing else, like `cachyos-handheld`, needs it).
|
if the wizard installed it (and nothing else, like `cachyos-handheld`, needs it).
|
||||||
|
|||||||
@@ -9,6 +9,78 @@ single_status() {
|
|||||||
[[ "$(kreadconfig6 --file kdeglobals --group "KDE Action Restrictions" --key action/lock_screen)" == false ]]
|
[[ "$(kreadconfig6 --file kdeglobals --group "KDE Action Restrictions" --key action/lock_screen)" == false ]]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WALLET_DIR="${XDG_DATA_HOME:-$HOME/.local/share}/kwalletd"
|
||||||
|
# The user's own wallet while single user mode is on, and ours after.
|
||||||
|
WALLET_BACKUP=".bak-steamify"
|
||||||
|
WALLET_OURS=".steamify-single-user"
|
||||||
|
|
||||||
|
stop_kwallet() {
|
||||||
|
# The wallet daemon keeps the file open and would write it back.
|
||||||
|
local d
|
||||||
|
for d in kwalletd6 ksecretd; do
|
||||||
|
pkill -u "$USER" -x "$d" 2>/dev/null && sleep 1
|
||||||
|
done
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
single_wallet_enable() {
|
||||||
|
# Like SteamOS: an empty, password-less wallet (Valve's own file), so
|
||||||
|
# nothing asks for a wallet password (e.g. Brave at start): with
|
||||||
|
# autologin nobody typed the login password that unlocks the usual one.
|
||||||
|
# The user's wallet is moved aside and comes back when this is off. The
|
||||||
|
# wallet from an earlier time in single user mode is reused, with
|
||||||
|
# whatever was saved in it then.
|
||||||
|
local tmp f
|
||||||
|
if [[ -f "$WALLET_DIR/kdewallet.kwl$WALLET_OURS" ]]; then
|
||||||
|
stop_kwallet
|
||||||
|
for f in kdewallet.kwl kdewallet.salt; do
|
||||||
|
[[ -f "$WALLET_DIR/$f" && ! -e "$WALLET_DIR/$f$WALLET_BACKUP" ]] &&
|
||||||
|
mv "$WALLET_DIR/$f" "$WALLET_DIR/$f$WALLET_BACKUP"
|
||||||
|
[[ -f "$WALLET_DIR/$f$WALLET_OURS" ]] && mv -f "$WALLET_DIR/$f$WALLET_OURS" "$WALLET_DIR/$f"
|
||||||
|
done
|
||||||
|
kset single kwalletrc Wallet "First Use" false
|
||||||
|
ok "Single user mode's wallet (no password) is back; your own is kept as kdewallet.kwl$WALLET_BACKUP."
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
tmp="$(mktemp -d)"
|
||||||
|
if ! fetch_valve_presets "$tmp"; then
|
||||||
|
rm -rf "$tmp"
|
||||||
|
warn "Couldn't get Valve's empty wallet; apps may still ask for the wallet password."
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
if [[ -f "$WALLET_DIR/kdewallet.kwl" ]] &&
|
||||||
|
cmp -s "$WALLET_DIR/kdewallet.kwl" "$tmp/usr/share/kwalletd/kdewallet.kwl"; then
|
||||||
|
rm -rf "$tmp"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
stop_kwallet
|
||||||
|
mkdir -p "$WALLET_DIR"
|
||||||
|
for f in kdewallet.kwl kdewallet.salt; do
|
||||||
|
# Never overwrite an earlier backup: that one is the user's.
|
||||||
|
[[ -f "$WALLET_DIR/$f" && ! -e "$WALLET_DIR/$f$WALLET_BACKUP" ]] &&
|
||||||
|
mv "$WALLET_DIR/$f" "$WALLET_DIR/$f$WALLET_BACKUP"
|
||||||
|
install -m 600 "$tmp/usr/share/kwalletd/$f" "$WALLET_DIR/$f"
|
||||||
|
done
|
||||||
|
rm -rf "$tmp"
|
||||||
|
kset single kwalletrc Wallet "First Use" false
|
||||||
|
[[ -f "$WALLET_DIR/kdewallet.kwl$WALLET_BACKUP" ]] &&
|
||||||
|
info "Your wallet is kept as $WALLET_DIR/kdewallet.kwl$WALLET_BACKUP and comes back when single user mode is off."
|
||||||
|
ok "Empty wallet without a password: apps no longer ask for the wallet password."
|
||||||
|
}
|
||||||
|
|
||||||
|
single_wallet_disable() {
|
||||||
|
# The user's wallet back; ours (maybe with passwords saved since) is
|
||||||
|
# kept next to it.
|
||||||
|
[[ -f "$WALLET_DIR/kdewallet.kwl$WALLET_BACKUP" ]] || return 0
|
||||||
|
stop_kwallet
|
||||||
|
local f
|
||||||
|
for f in kdewallet.kwl kdewallet.salt; do
|
||||||
|
[[ -f "$WALLET_DIR/$f" ]] && mv -f "$WALLET_DIR/$f" "$WALLET_DIR/$f$WALLET_OURS"
|
||||||
|
[[ -f "$WALLET_DIR/$f$WALLET_BACKUP" ]] && mv "$WALLET_DIR/$f$WALLET_BACKUP" "$WALLET_DIR/$f"
|
||||||
|
done
|
||||||
|
ok "Your own wallet is back (the empty one is kept as kdewallet.kwl$WALLET_OURS)."
|
||||||
|
}
|
||||||
|
|
||||||
single_launcher() {
|
single_launcher() {
|
||||||
# Launcher: only Sleep / Restart / Shut Down, no Session dropdown (where
|
# Launcher: only Sleep / Restart / Shut Down, no Session dropdown (where
|
||||||
# Log Out lives). Restricting action/logout instead would also hide
|
# Log Out lives). Restricting action/logout instead would also hide
|
||||||
@@ -42,6 +114,7 @@ single_enable() {
|
|||||||
single_launcher
|
single_launcher
|
||||||
|
|
||||||
restart_plasmashell_if_stopped
|
restart_plasmashell_if_stopped
|
||||||
|
single_wallet_enable
|
||||||
ok "Single user: no lock screen, user switching or log out."
|
ok "Single user: no lock screen, user switching or log out."
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -70,5 +143,6 @@ single_disable() {
|
|||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
restart_plasmashell_if_stopped
|
restart_plasmashell_if_stopped
|
||||||
|
single_wallet_disable
|
||||||
ok "KDE's normal lock screen and user switching are back."
|
ok "KDE's normal lock screen and user switching are back."
|
||||||
}
|
}
|
||||||
+2
-12
@@ -3,7 +3,7 @@
|
|||||||
# newest Valve steamdeck-kde-presets package: "Add to Steam" (file
|
# newest Valve steamdeck-kde-presets package: "Add to Steam" (file
|
||||||
# right-click menu and launcher), Nested Desktop (Plasma as a game inside
|
# right-click menu and launcher), Nested Desktop (Plasma as a game inside
|
||||||
# gaming mode), the "Return to Gaming Mode" icon, the Steam Keyboard window
|
# gaming mode), the "Return to Gaming Mode" icon, the Steam Keyboard window
|
||||||
# rule and an empty KWallet. Part of the SteamOS theme component
|
# rule. Part of the SteamOS theme component
|
||||||
# (lib/vapor-theme.sh). System files go to /usr/local (nothing
|
# (lib/vapor-theme.sh). System files go to /usr/local (nothing
|
||||||
# package-owned); per-user settings go through the undo journal.
|
# package-owned); per-user settings go through the undo journal.
|
||||||
# Sourced by steamify.sh; not meant to be run on its own.
|
# Sourced by steamify.sh; not meant to be run on its own.
|
||||||
@@ -75,15 +75,6 @@ extras_enable() {
|
|||||||
sudo cp -r "$src/share/applications/steam/holo-nested-desktop" "$NESTED_DIR"
|
sudo cp -r "$src/share/applications/steam/holo-nested-desktop" "$NESTED_DIR"
|
||||||
sudo sed -i "s|/usr/share/applications/steam/holo-nested-desktop|$NESTED_DIR|" "$NESTED_DIR/holo-nested-desktop.desktop"
|
sudo sed -i "s|/usr/share/applications/steam/holo-nested-desktop|$NESTED_DIR|" "$NESTED_DIR/holo-nested-desktop.desktop"
|
||||||
|
|
||||||
# An empty, password-less wallet (Valve's), so nothing asks for a wallet
|
|
||||||
# password: with autologin nobody typed one to unlock it. Only when the
|
|
||||||
# user has no wallet yet; an existing one is never touched.
|
|
||||||
local wallet="${XDG_DATA_HOME:-$HOME/.local/share}/kwalletd"
|
|
||||||
if [[ ! -f "$wallet/kdewallet.kwl" ]]; then
|
|
||||||
mkdir -p "$wallet"
|
|
||||||
install -m 600 "$src/share/kwalletd/kdewallet.kwl" "$src/share/kwalletd/kdewallet.salt" "$wallet/"
|
|
||||||
kset theme kwalletrc Wallet "First Use" false
|
|
||||||
fi
|
|
||||||
rm -rf "$tmp_dir"
|
rm -rf "$tmp_dir"
|
||||||
|
|
||||||
sudo gtk-update-icon-cache -q -f -t /usr/local/share/icons/hicolor 2>/dev/null || true
|
sudo gtk-update-icon-cache -q -f -t /usr/local/share/icons/hicolor 2>/dev/null || true
|
||||||
@@ -122,7 +113,6 @@ extras_disable() {
|
|||||||
for pkg in kdialog zstd curl; do
|
for pkg in kdialog zstd curl; do
|
||||||
[[ -n "$(state_get theme "installed_$pkg")" ]] && sudo pacman -R --noconfirm "$pkg" >/dev/null 2>&1
|
[[ -n "$(state_get theme "installed_$pkg")" ]] && sudo pacman -R --noconfirm "$pkg" >/dev/null 2>&1
|
||||||
done
|
done
|
||||||
# The keyboard rule and kwalletrc are reverted by the theme's journal.
|
# The keyboard rule is reverted by the theme's journal.
|
||||||
# The wallet itself stays: secrets may have been saved in it since.
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user