我想通过 vnc 终端重置我的 Ubuntu 22.04 桌面设置(Uubntu 22.04 正在运行 TigerVNC。)我按照以下说明进行操作https://linuxhint.com/ubuntu_dock_settings/并使用以下方法备份当前桌面设置
$ dconf dump / > backup.txt
但是,当我尝试使用重置桌面设置时
dconf reset -f /
我收到以下错误。
error: Error spawning command line “dbus-launch --autolaunch=c7014a22ae9647b69f20ea2bbc28bec4 --binary-syntax --close-stderr”: Child process exited with code 1
我注意到我的 ~/.vnc/xstartup 文件包含unset DBUS_SESSION_BUS_ADDRESS
(我从https://bytexd.com/how-to-install-configure-vnc-server-on-ubuntu/)以下是xstarup文件的内容。
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
gnome-session
我注释掉了unset DBUS_SESSION_BUS_ADDRESS
,重新启动了 vncserver ,并从 vnc 客户端重新连接。但 DBUS_SESSION_BUS_ADDRESS 仍未设置/未定义。运行时我仍然收到相同的错误dconf reset-f /
。
接下来,我注释掉该unset DBUS_SESSION_BUS_ADDRESS
行并在 gnome-shell 调用之前将以下内容添加到 xstartup 文件中,然后重新启动 vncserver。
if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then
eval `dbus-launch --sh-syntax --exit-with-session`
echo "D-BUS per-session daemon address is: \
$DBUS_SESSION_BUS_ADDRESS"
fi
但是,DBUS_SESSION_BUS_ADDRESS 仍未设置。命令仍然出现相同的错误dconf reset -f /
。
此时,我通过 vnc 在终端中输入以下命令。
dbus-launch --sh-syntax --exit-with-session
该命令做出如下响应。
DBUS_SESSION_BUS_ADDRESS='unix:abstract=/tmp/dbus-wSUKXx6r0W,guid=3d557317b8f0a468242814d8636956e6';
export DBUS_SESSION_BUS_ADDRESS;
DBUS_SESSION_BUS_PID=4709;
但是,终端中的 DBUS_SESSION_BUS_ADDRESS 仍未设置/未定义。而且我仍然无法重置 Ubuntu 桌面设置。
有任何想法吗?
答案1
是xstartup
错误的 - 所有这些网络教程都使用了一个古老的版本,它弄乱了 DBUS_SESSION_BUS_ADDRESS、snap 等等。只需删除您的xstartup
:22.04 上的默认值就可以了(/etc/X11/Xtigervnc-session
)。当您有一个终端时:
$ echo $DBUS_SESSION_BUS_ADDRESS
unix:path=/run/user/1000/bus
(假设您的 UID 为 1000)。如果它不起作用,您将会遇到更复杂的事情。
答案2
我通过这个解决了这个问题。
su -l 用户名 -c“(导出 DISPLAY=:5; dbus-launch --exit-with-session; vncserver -geometry 1792x899 -depth 24:5)”
命令“dbus-launch --exit-with-session”将 dbus 变量设置为特定于运行 vncserver 的用户,否则它可能会从其他地方获取它们或者根本不设置它们。
DBUS_SESSION_BUS_PID=31898 DBUS_SESSION_BUS_ADDRESS=unix:路径=/运行/用户/1003/bus
这些需要正确设置,否则您将看到空白屏幕或权限被拒绝。例如 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1003/bus 其中 1003 是用户的 ID。
您还需要安装 dbus-x11 或 dbus-user-session 包