mirror of
https://github.com/arthur-pbty/arthur-os.git
synced 2026-08-01 20:28:16 +02:00
Restrict FUSE unmount to gvfsd-fuse
Unmounting all FUSE filesystems breaks xdg-document-portal and AppImages that rely on FUSE to stay mounted. It also doesn't restart them.
This commit is contained in:
@@ -66,7 +66,7 @@ echo "HOOKS+=(resume)" | sudo tee "$MKINITCPIO_CONF" >/dev/null
|
|||||||
# Ensure keyboard backlight doesn't prevent sleep
|
# Ensure keyboard backlight doesn't prevent sleep
|
||||||
sudo cp -p "$OMARCHY_PATH/default/systemd/system-sleep/keyboard-backlight" /usr/lib/systemd/system-sleep/
|
sudo cp -p "$OMARCHY_PATH/default/systemd/system-sleep/keyboard-backlight" /usr/lib/systemd/system-sleep/
|
||||||
|
|
||||||
# Ensure FUSE mounts don't prevent sleep
|
# Ensure gvfsd-fuse mounts don't prevent sleep
|
||||||
sudo install -m 0755 -o root -g root "$OMARCHY_PATH/default/systemd/system-sleep/unmount-fuse" /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/
|
||||||
|
|
||||||
# Add resume= kernel parameters so the initramfs resume hook knows where to find the
|
# Add resume= kernel parameters so the initramfs resume hook knows where to find the
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Lazy-unmount all FUSE filesystems before suspend/hibernate to prevent the
|
# Lazy-unmount gvfsd-fuse filesystems before suspend/hibernate to prevent the
|
||||||
# kernel's process freeze from timing out. FUSE daemons (like gvfsd-fuse from
|
# kernel's process freeze from timing out. FUSE daemons (like gvfsd-fuse from
|
||||||
# Nautilus) can block in uninterruptible sleep during freeze, causing suspend
|
# Nautilus) can block in uninterruptible sleep during freeze, causing suspend
|
||||||
# to silently fail. After wake, restart gvfs so the FUSE mount is restored.
|
# to silently fail. After wake, restart gvfs so the FUSE mount is restored.
|
||||||
|
|
||||||
if [[ $1 == "pre" ]]; then
|
if [[ $1 == "pre" ]]; then
|
||||||
while IFS=' ' read -r _ mountpoint fstype _; do
|
while IFS=' ' read -r _ mountpoint fstype _; do
|
||||||
if [[ $fstype == fuse.* ]]; then
|
if [[ $fstype == fuse.gvfsd-fuse ]]; then
|
||||||
mountpoint=$(printf '%b' "$mountpoint")
|
mountpoint=$(printf '%b' "$mountpoint")
|
||||||
fusermount3 -uz "$mountpoint" 2>/dev/null || fusermount -uz "$mountpoint" 2>/dev/null || true
|
fusermount3 -uz "$mountpoint" 2>/dev/null || fusermount -uz "$mountpoint" 2>/dev/null || true
|
||||||
fi
|
fi
|
||||||
@@ -22,7 +22,7 @@ if [[ $1 == "post" ]]; then
|
|||||||
for uid_dir in /run/user/*; do
|
for uid_dir in /run/user/*; do
|
||||||
uid=$(basename "$uid_dir")
|
uid=$(basename "$uid_dir")
|
||||||
if [[ -S $uid_dir/bus ]]; then
|
if [[ -S $uid_dir/bus ]]; then
|
||||||
sudo -u "#$uid" \
|
sudo -u "#$uid" env \
|
||||||
DBUS_SESSION_BUS_ADDRESS="unix:path=$uid_dir/bus" \
|
DBUS_SESSION_BUS_ADDRESS="unix:path=$uid_dir/bus" \
|
||||||
XDG_RUNTIME_DIR="$uid_dir" \
|
XDG_RUNTIME_DIR="$uid_dir" \
|
||||||
systemctl --user restart gvfs-daemon.service 2>/dev/null || true
|
systemctl --user restart gvfs-daemon.service 2>/dev/null || true
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
echo "Install system-sleep hook to unmount FUSE before suspend/hibernate"
|
echo "Install system-sleep hook to unmount gvfsd-fuse before suspend/hibernate"
|
||||||
|
|
||||||
sudo mkdir -p /usr/lib/systemd/system-sleep
|
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/
|
sudo install -m 0755 -o root -g root "$OMARCHY_PATH/default/systemd/system-sleep/unmount-fuse" /usr/lib/systemd/system-sleep/
|
||||||
|
|||||||
Reference in New Issue
Block a user