diesel
2008-01-10
Немного поэкспериментировал с автораном в fluxbox'е. Пришел к такому виду как на картинке.
Работает все очень просто. Пункты меню, помеченные звездочкой, запускаются каждый раз при старте флукса, остальные - нет. При клике по пункту меню, поведение инвертируется, меню генерируется заново, уже с новыми значениями. Чтобы временно выключить/включить чего-нить, не трогая при этом скрипты запуска, вполне неплохо, ИМХО.
Как это работает. В папке ~/.fluxbox создал две новые - scripts, commands. В scripts лежат собственно скрипты автозапуска, по одному на пункт меню, соответствующий пункт меню называется именем скрипта:
diesel@beezir:~/.fluxbox$ ls -l scripts/ total 24 -rwxr-xr-x 1 diesel diesel 71 2007-09-18 08:16 feh -rw-r--r-- 1 diesel diesel 21 2007-09-18 07:40 firefox -rw-r--r-- 1 diesel diesel 20 2007-09-18 07:39 pidgin -rw-r--r-- 1 diesel diesel 19 2007-09-18 07:41 torsmo -rwxr-xr-x 1 diesel diesel 38 2007-09-18 08:15 xscreensaver -rwxr-xr-x 1 diesel diesel 17 2007-09-18 07:40 xxkbСкрипты в моем случае в две строчки:
diesel@beezir:~/.fluxbox$ cat scripts/xxkb #!/bin/sh xxkb &
В commands лежат два "служебных" скрипта, один генерирует меню:
diesel@beezir:~/.fluxbox$ cat commands/generate_scripts_menu.sh #!/bin/shSCRIPTDIR=$HOME/.fluxbox/scripts/; CMDDIR=$HOME/.fluxbox/commands; MENU=$HOME/.fluxbox/menu-autorun
echo "" > $MENU ls "$SCRIPTDIR" | while read i; do if [ -x "$SCRIPTDIR/$i" ]; then echo "[exec] (*$i) { $CMDDIR/changeperm.sh $i }" >> $MENU else echo "[exec] ($i) { $CMDDIR/changeperm.sh $i }" >> $MENU fi done echo "[exec] (autorun-gen) { $CMDDIR/generate_scripts_menu.sh }" >> $MENU
Второй меняет права доступа к скриптам в scripts:
diesel@beezir:~/.fluxbox$ cat commands/changeperm.sh #!/bin/bashSCRIPTDIR=$HOME/.fluxbox/scripts CMDDIR=$HOME/.fluxbox/commands
if [ -x "$SCRIPTDIR/$1" ]; then chmod -x "$SCRIPTDIR/$1"; else chmod +x "$SCRIPTDIR/$1"; fi
$CMDDIR/generate_scripts_menu.sh
Соответствующее меню у меня лежит в MENU=$HOME/.fluxbox/menu-autorun, добавляется в "общеее" достаточно просто:
[submenu] (Autorun) [include] (~/.fluxbox/menu-autorun) [end]
Ну и остается внести изменения в ~/.fluxbox/startup, чтобы файлы которые лежат в ~/.fluxbox/scripts, ежели они являются исполняемыми - запускались. Что-то типа такого:
diesel@beezir:~/.fluxbox$ grep -vE '^#' startup exec /usr/bin/fluxbox & fbpid=$!sleep 1
{ wait $! SCRIPTDIR=$HOME/.fluxbox/scripts ls $SCRIPTDIR | while read i; do if [ -x $SCRIPTDIR/$i ]; then $SCRIPTDIR/$i & fi done ./generate_scripts_menu.sh & }&
wait $fbpid