fluxbox.autorun

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/sh

SCRIPTDIR=$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/bash

SCRIPTDIR=$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