diff --git a/default/systemd/system-sleep/unmount-fuse b/default/systemd/system-sleep/unmount-fuse index 46cd0118..c15fddf0 100755 --- a/default/systemd/system-sleep/unmount-fuse +++ b/default/systemd/system-sleep/unmount-fuse @@ -3,7 +3,7 @@ # Lazy-unmount all FUSE filesystems before suspend/hibernate to prevent the # kernel's process freeze from timing out. FUSE daemons (like gvfsd-fuse from # Nautilus) can block in uninterruptible sleep during freeze, causing suspend -# to silently fail. The FUSE daemons restart automatically on wake. +# to silently fail. After wake, restart gvfs so the FUSE mount is restored. if [[ $1 == "pre" ]]; then while IFS=' ' read -r _ mountpoint fstype _; do @@ -12,3 +12,15 @@ if [[ $1 == "pre" ]]; then fi done < /proc/mounts fi + +if [[ $1 == "post" ]]; then + for uid_dir in /run/user/*; do + uid=$(basename "$uid_dir") + if [[ -S $uid_dir/bus ]]; then + sudo -u "#$uid" \ + DBUS_SESSION_BUS_ADDRESS="unix:path=$uid_dir/bus" \ + XDG_RUNTIME_DIR="$uid_dir" \ + systemctl --user restart gvfs-daemon.service 2>/dev/null || true + fi + done +fi