我想用鱼做壳。当我使用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然后启动背景中的所有应用程序,并在最后设置环境变量,如下所示:
set -xg XSESSION_STARTED "t"但是XSESSION_STARTED似乎并没有被设置为“t”,而且每次都会调用xsession-app函数,即使我在gnome期间启动了一个新的终端。
我错过了什么。有没有更好的方法来解决这个问题?
发布于 2016-12-02 18:04:36
即使我在gnome学期内开办了一个新的终端。
这是意料之中的。全局变量在特定的鱼类中设置。如果您启动另一个鱼,它将不会有它(除非您在该鱼内部启动它,因为变量是导出的)。
有几种方法可以解决这个问题:
发布于 2016-12-15 15:50:46
下面是我在~/..xsessionrc中使用的代码:
# Apps launched directly by X window managers don't have their environment set
if [ $SHELL = "/usr/bin/fish" ]
then
/usr/bin/fish -c xsession-apps
else
source ~/src/dotfiles/keychain.sh
source ~/src/dotfiles/shell/aliases
source ~/src/dotfiles/shell/env
source ~/src/dotfiles/xsession-apps
eval "$(~/.rbenv/bin/rbenv init -)"
fi它初始化鱼或bash/zsh,这取决于我当时的心情。最近我喜欢吃鱼。然后,我定义了一个名为xsession-apps的fish函数来启动我希望在X会话中启动的东西,比如dropbox、hplip、xmobar等等。我有一个类似于bash脚本(也称为xsession-apps )的设置,如果我不使用fish,就会获得它的源代码。
顺便说一下,我使用xmonad作为我的窗口环境。
https://stackoverflow.com/questions/40934728
复制相似问题