Ardentwheel's Blog

macOS Parallels Desktop 虚拟 Ubuntu/Debian 时 Nautilus 文件管理器卡顿优化

在 macOS 使用 Parallels Desktop 虚拟 Ubuntu/Debian 时,如果开启了 3D 加速,GNOME 默认文件管理器 Nautilus 可能出现一个比较奇怪的问题:

关闭 Parallels 3D 加速可以缓解该问题,但会损失虚拟机整体图形性能。

经过测试,问题主要出现在 GNOME 新版 GTK4 的 GPU 渲染路径与 Parallels 虚拟显卡兼容性上。通过强制 Nautilus 使用 Cairo 软件渲染,可以避免 GTK4 使用 GPU 合成,从而明显改善右键菜单响应速度。

启动流程

GNOME Shell
    |
    v
org.gnome.Nautilus.desktop
    |
    v
D-Bus Activation
    |
    v
org.gnome.Nautilus.service
    |
    v
/usr/bin/nautilus --gapplication-service
Debian/Ubuntu GNOME 中 Nautilus 使用 DBusActivatable=true
直接修改 /usr/share/applications/org.gnome.Nautilus.desktop
通常不会生效,因此需要覆盖 D-Bus service。

创建 Nautilus 专用启动包装脚本

D-Bus service 中的 Exec= 并不会经过 Shell 解析,而是直接调用 execve(),因此需要使用包装脚本。

创建:

mkdir -p ~/.local/bin && cat > ~/.local/bin/nautilus-cairo <<'EOF'
#!/bin/bash
export GSK_RENDERER=cairo
exec /usr/bin/nautilus "$@"
EOF

chmod +x ~/.local/bin/nautilus-cairo

创建用户级 D-Bus 覆盖配置

直接修改 /usr/share/dbus-1/services/org.gnome.Nautilus.service
系统升级时可能会被覆盖。

我们要创建用户级配置:

mkdir -p ~/.local/share/dbus-1/services && cat > ~/.local/share/dbus-1/services/org.gnome.Nautilus.service <<EOF
[D-BUS Service]
Name=org.gnome.Nautilus
Exec=$HOME/.local/bin/nautilus-cairo --gapplication-service
EOF

应用设置

关闭当前 Nautilus:

nautilus -q
killall -9 nautilus 2>/dev/null

然后重新登录,或者重启虚拟机。

由于 GNOME 会话启动后需要重新加载用户级 D-Bus 服务,并等待相关缓存初始化,
可能需要等待一段时间(几十秒到数分钟,视虚拟机性能而定)。
待系统完成初始化后,再打开 Nautilus,右键菜单响应速度即可恢复正常。

说明

该方法只影响 Nautilus:

补充

如果希望让整个用户会话都使用 Cairo,也可以通过:

这种方式会影响所有 GTK4 应用,因此更推荐使用 Nautilus 专用 D-Bus 覆盖方案。
mkdir -p ~/.config/environment.d && cat > ~/.config/environment.d/gsk.conf <<EOF
GSK_RENDERER=cairo
EOF

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »