为什么 gsettings 在 tmux 中不起作用?

为什么 gsettings 在 tmux 中不起作用?

我正在尝试使用 gsettings 更改各种 dconf 设置。出于某种原因,它仅在我不在 tmux 中时才有效。我可以在 tmux 中读取设置,但设置它们会默默失败 - 它似乎有效,但更改没有效果,再次读取会返回旧值。在 tmux 之外,一切都运行良好 - 我可以读取和设置 dconf 属性,它们会立即生效。这是我的 bashrc 的相关部分:

# start tmux
if command -v tmux >/dev/null; then
    [[ ! $TERM =~ screen ]] && [ -z "$TMUX" ] && exec tmux
    # in tmux, we need to handle dbus specially
    export $(dbus-launch)
fi

我在 tmux 中启动基于 X 的应用程序没有遇到任何问题。作为参考,我有 Ubuntu 15.04,并且我使用的是 Gnome Shell 而不是 Unity。

答案1

我设法解决了这个问题(最终,在 #linux freenode irc 频道一些人的帮助下)。一个问题是 dbus-launch 根本不影响 tmux;它只影响外壳。解决方案是将其放入我的 .tmux.conf 中:

set-option -g -a update-environment " DBUS_SESSION_BUS_ADDRESS"

这允许 tmux 中启动的应用程序访问系统总线。

相关内容