Awesome autostart

Tue 09 November 2010
  • 装备 tags:
  • awesome
  • linux
  • ubuntu published: true comments: true

Problem

让Awesome环境像Openbox一样在启动时,在根上下文中执行一个autostart脚本(启动程序、声明环境变量)。

Solution

Ubuntu中GDM启动后会执行 /etc/gdm/Xsession 这个脚本,如果是custom会话(启动参数custom),会执行用户目录下的.xsession脚本,否则会执行 /etc/X11/Xsession.d/ 目录下的所有脚本。

为了支持autostart脚本,可以在 /etc/X11/Xsession.d/ 里创建一个新的脚本 55awesome-autostart
[cc lang="bash"]
BASESTARTUP=$(basename "$STARTUP" | cut -d\ -f1)
if [ "$BASESTARTUP" = x-session-manager ]; then
BASESTARTUP=$(basename $(readlink /etc/alternatives/x-session-manager))
fi
if [ "$BASESTARTUP" = "awesome" ]; then
AWESOME_AUTOSTART=$HOME/.config/awesome/autostart.sh
if [ -e "$AWESOME_AUTOSTART" ]; then
. "$AWESOME_AUTOSTART"
fi
fi
[/cc]
这个脚本会判断启动的session是否是awesome,如果是,并且autostart.sh存在的话,source这个文件。autostart.sh按照xdg的约定,放在配置文件目录 $HOME/.config/awesome/ 里。

这样,在用户目录下的配置文件里,就可执行一些自启动程序,或者声明环境变量,典型的应用就是指定awesome会话专用的gtkrc:
[cc lang="bash"]
AWESOME_CONFIG_PATH=$HOME/.config/awesome
export GTK2_RC_FILES=$AWESOME_CONFIG_PATH/gtkrc

xcompmgr -cCfF -t-5 -l-5 -r4.2 -o.55 -D6 &
awsetbg -u feh -f .config/awesome/ubuntu.jpg
[/cc]