linux и автостарт в иксах

May 27, 2009 04:19

Вообще автостарт в линухе это отдельная песнь, но если про автостарт приложений через init более-менее прилично написано везде, то автостарт в иксах описан кое-где кое-как.


Во-первых надо понять, какой из файлов редактировать - .xinitrc (если иксы стартуют через startx) или .xsession (если используется kdm/gdm. про xdm не знаю)

Во-вторых надо не забыть запускать все файлы в бэкграунде (ставить & в конце команды), а то до виндового менеджера не дойдём.

в-третьих прописанные таким образом программы будут запускаться _перед_ менеджером окон. т.е. на этот момент приложение желающее "растянуться" на весь экран просто ещё не знает, кому надо говорить чтобы его "растянуло".

В принципе есть прога, которая может потом сказать как расположить любое окно - wmctrl.
НО
Её надо запускать когда менеджер окон уже устаканился. А знали бы мы когда - запустили бы там наши прописанные в .xsession/.xinitrc приложения.

И ещё надо не забыть, что gdm/kdm имеют собственное мнение, когда вышеуказанные скрипты запускаются, а когда нет.

Итого, для того чтобы, например, с использованием gdm запустить iceweasel (типа браузер) фулскрином под blackbox (оконный менеджер) надо сделать следующее:

1) создать локальный исполняемый скрипт, назовём его ~/openwindow:
#!/bin/bash
# ждём пока блэкбокс запустится
while [ -n "`ps -A| grep blackbox`" ]; do
sleep 1s
done
# дадим ему ещё немного времени 8-)
sleep 1s
# получить ID окна со словом IceWeasel в заголовке; передать этот ID wmctrl`у, выставить флаг fullscreen
wmctrl -r `wmctrl -l|grep Iceweasel|awk '/\w.*/ { print $1 }'` -i -b add,fullscreen

2) создать ~/.xsession, внутрь написать:
#!/bin/bash
# запустить броузер
iceweasel &
# запустить наш скрипт
./openwindow &
# заместить баш менеджером окон
exec blackbox

3) при входе в систему выбрать и закрепить сессию "default XSession".

Выглядит немного монстрообразно, но работает.
Previous post Next post
Up