Merge pull request #4940 from alansikora/unmount-fuse-before-sleep

Unmount FUSE filesystems before suspend/hibernate
This commit is contained in:
David Heinemeier Hansson
2026-03-10 13:12:26 +01:00
committed by GitHub
4 changed files with 40 additions and 0 deletions
+33
View File
@@ -0,0 +1,33 @@
#!/bin/bash
# Lazy-unmount gvfsd-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. After wake, restart gvfs so the FUSE mount is restored.
if [[ $1 == "pre" ]]; then
while IFS=' ' read -r _ mountpoint fstype _; do
if [[ $fstype == fuse.gvfsd-fuse ]]; then
mountpoint=$(printf '%b' "$mountpoint")
fusermount3 -uz "$mountpoint" 2>/dev/null || fusermount -uz "$mountpoint" 2>/dev/null || true
fi
done < /proc/mounts
fi
if [[ $1 == "post" ]]; then
# Run in background — user.slice is still frozen at this point, so a
# synchronous restart would block the thaw for up to 90 seconds.
(
sleep 5
for uid_dir in /run/user/*; do
uid=$(basename "$uid_dir")
if [[ -S $uid_dir/bus ]]; then
sudo -u "#$uid" env \
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
) &
disown
fi
+1
View File
@@ -18,6 +18,7 @@ run_logged $OMARCHY_INSTALL/config/remove-fcitx5-autostart.sh
run_logged $OMARCHY_INSTALL/config/localdb.sh
run_logged $OMARCHY_INSTALL/config/walker-elephant.sh
run_logged $OMARCHY_INSTALL/config/fast-shutdown.sh
run_logged $OMARCHY_INSTALL/config/unmount-fuse.sh
run_logged $OMARCHY_INSTALL/config/sudoless-asdcontrol.sh
run_logged $OMARCHY_INSTALL/config/input-group.sh
run_logged $OMARCHY_INSTALL/config/omarchy-ai-skill.sh
+2
View File
@@ -0,0 +1,2 @@
sudo mkdir -p /usr/lib/systemd/system-sleep
sudo install -m 0755 -o root -g root "$OMARCHY_PATH/default/systemd/system-sleep/unmount-fuse" /usr/lib/systemd/system-sleep/
+4
View File
@@ -0,0 +1,4 @@
echo "Install system-sleep hook to unmount gvfsd-fuse before suspend/hibernate"
sudo mkdir -p /usr/lib/systemd/system-sleep
sudo install -m 0755 -o root -g root "$OMARCHY_PATH/default/systemd/system-sleep/unmount-fuse" /usr/lib/systemd/system-sleep/