我想用鱼作为我的贝壳。当我使用LightDM登录时,我想启动某些Xsession应用程序,但仅限于LightDM在一开始就调用shell。
我在〜/ .config / fish / config.fish中试过这个:
###################################################################
# Start xsession applications, but only once.
if test -z "$XSESSION_STARTED"
set -xg XSESSION_STARTED 'f'
end
if test "$XSESSION_STARTED" = 'f'
xsession-apps
end
xsession-apps函数然后在后台启动所有应用程序,并在最后设置环境变量,如下所示:
set -xg XSESSION_STARTED "t"
但是XSESSION_STARTED似乎没有设置为' t'并且每次都会调用xsession-apps函数,即使我在gnome-term中开始一个新的终端。
我错过了什么。有没有更好的方法来解决这个问题?
答案 0 :(得分:1)
即使我在gnome-term中开始一个新的终端。
这是可以预料的。全局变量设置在该特定鱼类中。如果你开始另一条鱼,它将没有它(除非你在那条鱼里面开始,因为变量被导出)。
有几种方法可以解决这个问题:
根本不要在config.fish中这样做 - 使用DE的自动启动机制或至少〜/ .xinitrc。这是最好,最干净的方法,独立于你的shell。
使用通用变量 - 这些变量持久存储并共享给机器上的所有鱼会话。这里的问题是使它失效 - 你需要在注销/重启后再次取消设置变量,但是如果你的机器崩溃就不会发生
在tmpfs(即RAM)中使用标志文件 - 如果您的机器停止,无论原因是什么,这将自动失效。不过,你需要为它设置一个tmpfs。
答案 1 :(得分:0)
这是我在〜/ .xsessionrc中使用的代码:
HttpGet
它初始化鱼或bash / zsh,取决于我当时的心情。最近,我喜欢鱼。然后我定义了一个名为@if ($model->child_object_that_may_be_null)
{{ $model->child_object_that_may_be_null->interesting_property }}
@endif
的鱼函数来启动我希望在我的X会话中启动的东西,例如dropbox,hplip,xmobar等。我有一个类似于bash脚本的设置,也称为{{1如果我不使用鱼,它会被获取。
顺便说一句,我使用xmonad作为我的窗口环境。