Gsettings更改不能在ssh上工作



我试图从ssh使用gsettingsUbuntu 14.04设置idle timeout

我使用的命令是这样的

dbus-launch gsettings set org.gnome.desktop.session idle-delay 600

dbus-launch gsettings set org.gnome.desktop.screensaver lock-delay 0

dbus-launch gsettings set org.gnome.desktop.screensaver lock-enabled true

dbus-launch gsettings set org.gnome.desktop.screensaver idle-activation-enabled true

在不同的timeout周期内执行命令后,这些更改正在发生,但是这些超时更改在重新启动或注销后丢失。

是否可以使超时更改在重新启动/注销时持久化

基本上,当您使用dbus-launch启动一个新的dbus实例时,您通过启动一个新的dbus将配置保存到错误的位置。虽然将dbus-launch添加到gsettings调用的开头将删除任何错误消息,但您不会保存更改。

对于目标用户存在一个现有的dbus进程,并且通过ssh,您的终端没有接收到正确的环境变量来对它进行寻址。

通过ssh编辑gsettings的正确方法是首先识别现有dbus进程的DBUS_SESSION_BUS_ADDRESS,并将其设置为环境变量。因此:

PID=$(pgrep gnome-session)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ)
# And now:
gsettings set org.gnome.desktop.session idle-delay 600

Ubuntu 18.04上,您不仅要设置DBUS_SESSION_BUS_ADDRESS,还要设置XDG_RUNTIME_DIR。您可以使用以下命令(将121替换为UID,将gdm替换为user):

su gdm -s /bin/bash -c 'XDG_RUNTIME_DIR=/run/user/121 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/121/bus gsettings get org.gnome.desktop.session idle-delay'

相关内容

  • 没有找到相关文章