Files
fedora-OEMDRV/client_software/0010_kwallet/user_run.sh
T
Daniel unbrot Pätzold 3429ffa48f kwallet: unmount bind mount cleanly on session logout
Switch kwalletd6-logon from --scope to a transient service with
RemainAfterExit=yes (kwalletd6 forks to background, so the service
must stay active after the main process exits). ExecStop runs
'sudo umount -l' to detach the wallet bind mount before gocryptfs
unmounts ~/data (Before=gocryptfs-home.service ordering).

install.sh adds a per-user sudoers drop-in so the user service
can call umount as root without a password.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-11 11:07:01 +02:00

54 lines
1.8 KiB
Bash
Executable File

#!/bin/bash
# Restart and test Kwallet- Service
#Check Token
if [ "${DAVTOKEN_USER}." == "." ]; then
echo "Error: Script cannot be executed standalone and needs a prereserved environment from sync_client_software.sh. Quit."
exit 1
fi
# Vars
WALLETAPPID="sys_config_wallet_script"
WALLETNAME="kdewallet"
if [[ -z $(wmctrl -m | grep "KWin") ]]; then
# No KDE here - Cinnamon in Test
exit 0
fi
#Restart the service
WALLETPATH_CFG="${HOME}/.local/share/kwalletd"
systemd-run --user --unit=kwalletd6-logon \
--property=RemainAfterExit=yes \
--property=Before=gocryptfs-home.service \
--property="ExecStop=/usr/bin/sudo /usr/bin/umount -l ${WALLETPATH_CFG}" \
kwalletd6 >${TEMPDIR}/kwalletd6.log 2>&1 &
sleep 1
#Check if kwalletd is enabled now
for i in $(seq 1 4); do
QB_RESULT=$( $(dirname $0)/qbus_wallet_exec.sh isEnabled )
if [[ "$QB_RESULT" == "true" ]]; then
break
fi
sleep 2
done
if [[ "$QB_RESULT" != "true" ]]; then
echo "Error checking if kWallet service is activated. Please Check yourself what is wrong. Return of Check was:"
echo "$QB_RESULT"
exit 0
fi
#It should be possible to open the wallet without having to enter the password now.
echo "Checking if Wallet can be opened by the user. The Program should not ask for a password, maybe for confirmation to access the wallet which is ok."
echo "Please check to NOT have any Password asked now - if so, open kwalletmanager and change the password for wallet ${WALLETNAME} to nothing (by entering nothing when asked for new password)!"
QB_RESULT=$( $(dirname $0)/qbus_wallet_exec.sh open ${WALLETNAME} 0 $WALLETAPPID )
if [[ $? -ne 0 ]]; then
echo "Some Error opening Wallet ${WALLETNAME}. Please check."
exit 1
fi
echo "Sucessfully opened Wallet ${WALLETNAME} with ID ${QB_RESULT}. All is fine."
exit 0