Ubuntu 22.04 上的 VNC-DBUS_SESSION_BUS_ADDRESS 未设置;无法运行“dconf reset”

Ubuntu 22.04 上的 VNC-DBUS_SESSION_BUS_ADDRESS 未设置;无法运行“dconf reset”

我想通过 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 包

相关内容