7/19/2010

Автозапуск приложений в IceWM: IceWM autostart

Автоматический запуск приложений в автозапуск IceWM при старте - вещь простая, но всегда вылетает из моей головы. Так как гуглить в яндексе на эту тему приходится не в первый раз, выкладываю это тут.

Как говорит документация, которую всё равно настоящие джигиты не читают, в IceWM начиная с версии 1.2.13 имеется бинарный файл icewm-session. Именно он запускает все компоненты IceWM, такие как собственно icewm, системный лоток icewmtray, скрипт автозапуска startup, и другие. Так что для автозапуска приложений в IceWM правим (или создаём сами) файл ~.icewm/startup в домашнем каталоге. Это обычный bash-скрипт, с тем лишь отличием, что каждая команда в нём заканчивается знаком амперсанда &, что означает параллельный запуск приложений (скрипт не будет ждать, когда приложение завершится).

Например, удобно, чтобы сразу запускалась стильная консоль Yakuake и полезный системный монитор Conky. Вот как это сделано в ~.icewm/startup :
#! /bin/bash

/usr/bin/myscript/conkydetailedstart &
yakuake &
Снова обращаю внимание на амперсанды & в конце строк, так как без них скрипт будет ожидать завершения предыдущей команды (а этого никогда не будет). И не забудьте сделать файл исполняемым:
chmod 755 ~.icewm/startup
Можно написать ещё более продвинутые скрипты, которые, например, автоматически включают клавишу NumLock при старте IceWM и меняют настройки языка. Вот, например:
#! /bin/bash
xscreensaver &
xmms &
numlockx on &

export LANG=en_EN

export LC_ALL=en_EN
export LANGUAGE=en_EN
Помимо вышеперечисленных бубенчиков и свистулек, можно таким образом запускать и более полезные вещи, например менеджеры иконок рабочего стола (EIconMan из состава EDE, который Equinox Desktop Manager, или idesk). При этом EIconMan позволяет создавать и настраивать иконки через контекстное меню по нажатию правой клавиши мыши (таскать иконки в нём - тоже одно удовольствие).

Так же можно добавить в автозапуск раздачу привилегий программам. Например, чтобы дать RT-привилегии программе yakuake при старте, можно написать:
ps aux | grep "yakuake" | grep --invert-match "grep" | awk '{print $2}' | xargs chrt -p

или вот так:

chrt -p $(pgrep yakuake)
Так ваша любимая консоль будет иметь полный приоритет.


Внеклассное чтение
На IceWM есть хорошая и доходчивая документация, в которой это и описано. Как сделать автостарт для Linux-приложений в иксах для других сред и оконных менеджеров, рассказывается в этой замечательной гентушной вики, коя так славно читается длинными зимними вечерами.

Конечно, пост - затасканная гармошка, но я на ней иногда играю, так что пусть уж она лежит тут, на старой трухлявой деревянной полке, вместе с другими баянами, пятирядными дедовскими аккордеонами и прочими балалайками времён Грюнвальдской битвы.

26 комментариев:

  1. а просто ~/.xinitrc IceWM не запускает при старте?

    ну и не все приложения надо писать с детачем (&). Некоторые процессы сами детачатся, или просто выполняются за секунду и всё.

    У вас стоит IceWM, а зачем при этом ставить ОГРОМНЫЙ кусок kde, который вместе с yakuake тянется (kdelibs, konsole...)? Есть неплохая альтернатива — yeahconsole.

    Кстати, чем пользуетесь для переключения раскладок? Или в IceWM есть что-то своё?

    ОтветитьУдалить
  2. >ps aux | grep "yakuake" | grep --invert-match "grep" | awk '{print $2}' | xargs chrt -p

    Может, лучше будет «chrt -p $(pgrep yakuake)»?

    ОтветитьУдалить
  3. @ Ярослав Клюев пишет...
    а просто ~/.xinitrc IceWM не запускает при старте?
    Не запускает. По крайней мере, на Этче и Ленни у меня не запускается. Нужен отдельный стартап.

    ну и не все приложения надо писать с детачем (&)
    Грёбаный блоггер, блин. Он вот так амперсанды отображает.

    У вас стоит IceWM, а зачем при этом ставить ОГРОМНЫЙ кусок kde, который вместе с yakuake тянется (kdelibs, konsole...)? Есть неплохая альтернатива — yeahconsole.
    Я не иду на компромиссы :-) Видел я эту эх,консоль. Не летает (с). Яквейк красивше, и шут с ними с кделибсами, всё равно матлаб уже установлен (а это 3Гб).

    Кстати, чем пользуетесь для переключения раскладок?
    Дык штатный иксовый переключатель, что в иксорге. В формате "настроил и забыл".

    @ nnz пишет...
    Может, лучше будет «chrt -p $(pgrep yakuake)»?
    Лучше (кстати спасибо, вставил в пост), но на этот пример ссылается ещё один пост, который пока не опубликован.

    ОтветитьУдалить
  4. Вдогонку к моему же комменту: амперсанды, оказывается, корёжит не блоггер, а шрифты в шаблоне, так что поклёп на блоггер беру назад. Ничего, с шаблоном мы скоро разберёмся ;-)

    Кстати, что-то я не смог найти ссылок или скриншотов на EIconMan. Негуглёж у меня. Поможите, люди добрыя...

    ОтветитьУдалить
  5. Давно использую icewm, правде единственное, что меняю - делаю двойную высоту, чтобы ком. строка была сразу рядом и на панель добавляю кнопки частоиспользуемых приложений. Благодарю за информацию!

    ОтветитьУдалить
  6. «Дык штатный иксовый переключатель, что в иксорге. В формате "настроил и забыл".»
    Ах, ну да, вам же редкоиспользуемая третяя раскладка не нужна, а как индикатор можно и на клаве чего-нибудь использовать.

    Настройте уже, что-ли, комментарии так что бы форма отправки в теле поста отображались?

    ОтветитьУдалить
  7. IceWM тот ещё old school. Гном с автозапуском дружелюбен донельзя :-)

    "гуглить в яндексе" заберу в закрома интересных выражений :-)

    ОтветитьУдалить
  8. @Алексей Убоженко
    Давно использую icewm, правде единственное, что меняю - делаю двойную высоту
    Хм, а я вот эту функцию никогда не понимал. Но на вкус и цвет...

    @Ярослав Клюев
    Ах, ну да, вам же редкоиспользуемая третяя раскладка не нужна
    Не бачу я на мове :-))

    как индикатор можно и на клаве чего-нибудь использовать.
    Так и делаю. А что, удобно.

    Настройте уже, что-ли, комментарии так что бы форма отправки в теле поста отображались?
    Это особенность шаблона.
    Багрепорт принят с благодарностью.
    Починим.


    @Dr.AKULAvich,
    IceWM тот ещё old school.
    Не знаю. Я к нему, к АйсВМу, привык. Быстрый, настраиваемый, выглядит приятно, трей работает.

    Гном с автозапуском дружелюбен донельзя :-)
    Шутки не понял. Поясни.

    Кстати о гноме. Не холивара ради, но на свой университетский ноут взгромоздил убунту 10.10. Из плюсов: вайфай из коробки. Из минусов: тормозной гном просто до ужаса, автозапуска не нашёл, всё через наутилус, монтирование в папки по uuid... иёёё... Вытерпел два дня и сбежал в дебиан под айсвм.

    "гуглить в яндексе" заберу в закрома интересных выражений :-)
    Давай-давай, я тебя потом как SCO троллить буду копирайтами :-)

    Да, кстати, чемпионат по загуглению EIconMan вольным стилем можно считать открытым. Я про него слышал, народ говорил, что можно такое сделать, но я его не видел. Победителю отгружается благодарность с бесплатной международной доставкой :-)

    ОтветитьУдалить
  9. @virens
    Дружелюбный он потому, что к скриптам прибегать нет нужды. Запустил gnome-session-properties, добавил необходимые программы, всё.

    uuid-ами почему-то любит флешки обзывать. С накопителем всё нормально. Как я понимаю, сие недоразумение связано с заменой hal'а какими-то udisks.

    ОтветитьУдалить
  10. ubuntu != gnome, попробуйте гнум в нормальном дистрибутиве =)

    автозапуск находится в Система => Параметры => Запускаемые приложения

    ОтветитьУдалить
  11. @Dr.AKULAvich, 19.07.2010 Дружелюбный он потому, что к скриптам прибегать нет нужды. Запустил gnome-session-properties, добавил необходимые программы, всё.
    Ну да, запустил Vim, добавил нужные программы, и всё, :wq :-)

    uuid-ами почему-то любит флешки обзывать.
    Некошерно. Особенно меня это бесило, когда в убунте наутилус отвалился (проблемы с винчестером).

    @Valdos the Fat Troll
    ubuntu != gnome, попробуйте гнум в нормальном дистрибутиве =)
    Да я знаю. Просто убанта под руку подвернулась, а там Kile стартует по минуте.

    оффтопик: хотя псевдоним Valdos the Fat Troll тонко намекает нам, комменты более чем адекватные. Удивительное рядом :-)

    @спамерам
    За вами уже выехала бригада ректальных рыцарей утюга и паяльника для отрывания вам того, что вы так настойчиво предлагаете увеличить.

    ОтветитьУдалить
  12. Вместо kile попробуй texmaker или, лучше, textmakerx

    и в дополнение: в конфиге icewm можно прописать и скрипт который будет выполняться при выходе. Да и вообще там отличный набор *Command:
    $ cat ~/.icewm/preferences | grep '.*Command='
    # MailCommand="xterm -name pine -title PINE -e pine"
    # NewMailCommand=""
    # LockCommand=""
    # ClockCommand="xclock -name icewm -title Clock"
    RunCommand="gmrun"
    OpenCommand="xdg-open"
    # TerminalCommand="xterm"
    LogoutCommand="wm-session-end --end"
    # LogoutCancelCommand=""
    ShutdownCommand="wm-session-end --shutdown"
    RebootCommand="wm-session-end --reboot"
    # CPUStatusCommand="xterm -name top -title Process\ Status -e top"
    # NetStatusCommand="xterm -name netstat -title 'Network Status' -e netstat -c"
    AddressBarCommand="xdg-open"

    ОтветитьУдалить
  13. >выглядит приятно, трей работает.

    Выглядит приятно только с приятной шкуркой, а "трей работает" - это для IceWM звучит как нечто противоестественное. Весь Lenny и Squeeze трей через раз запускается в виде отдельного окошка. Чтобы полечить приходится перезапускать IceWM методом убийства иксов Ctrl-Alt-Backspace, т.к. при глюкнувшем трее кнопка а-ля "Пуск" не работает. Уж его сколько латали и перелатывали в рассылке debian-russian, патчи попадали в unstable и testing, а трей у меня так толком и не работает. Пользуюсь LXDE (Openbox).

    ОтветитьУдалить
  14. @h4tr3d комментирует...
    Вместо kile попробуй texmaker
    Не люб он мне. Мне кайл милей.

    и в дополнение: в конфиге icewm можно прописать и скрипт который будет выполняться при выходе.
    Это да, но только я не очень могу себе представить, зачем оно.

    @morbo комментирует...
    Выглядит приятно только с приятной шкуркой
    Так в чём проблема? Идущие по умолчанию - уродливы, согласен. Мейнтейнер пакета в Дебиан мой вопрос, а зачем совать эту жуть, проигнорировал.

    а "трей работает" - это для IceWM звучит как нечто противоестественное. Весь Lenny и Squeeze трей через раз запускается в виде отдельного окошка.
    Морбо, у тебя неправильный Дебиан :-) Про сквизи не знаю, но в Ленни у меня на двух машинах трей работает без малейших нареканий. IceWM из коробки.

    при глюкнувшем трее кнопка а-ля "Пуск" не работает.
    Как ты это делаешь? Мне просто интересно.

    ОтветитьУдалить
  15. > Весь Lenny и Squeeze трей через раз запускается в виде отдельного
    > окошка. Чтобы полечить приходится перезапускать IceWM методом
    > убийства иксов Ctrl-Alt-Backspace, т.к. при глюкнувшем трее
    > кнопка а-ля "Пуск" не работает.

    Я такую проблему решил следующим образом:
    http://grey-rakshas.blogspot.com/2010/12/icewm.html
    (Прошу прощения у автора за "самопиар")

    ОтветитьУдалить
  16. @Rakshas комментирует...
    Я такую проблему решил следующим образом
    Пиар по делу, но выше говорят не об этом, а о том, что часто трей в IceWM не работает, как надо. Я с этим не сталкивался, но народ говорит, и у меня нет оснований народу не верить.

    ОтветитьУдалить
  17. Ну у меня как-раз и запускался трей в отдельном окне, когда в него одновременно лезли 2 и более программ. Как только я разнес запуск программ по времени, проблема прошла.

    ОтветитьУдалить
  18. Rakshas, ёлки зелёные, это ОЧЕНЬ важный момент, а ты его нигде не озвучил. Это может быть причиной того, что это чёрное окно появляется. Здесь бы и засабмиттить багрепорт команде Дебиана ( и ещё автору отписать). Народ требует добавления этого в пост (и, может быть, отдельного поста на эту тему).

    ОтветитьУдалить
  19. Есть проблемка с IceWM (ОС Debian-6-64bit), а именно с автостартом приложений, запускаемых файлом ~/.icewm/startup.
    Содержимое startup:

    #!/bin/sh
    feh --bg-scale /home/user/Изображения/backgrounds/showtime.jpg &
    fbxkb &
    parcellite &
    gvolwheel &
    hillman &

    При первом включении ПК или после перезагрузки все работает нормально. Однако, если выйти из системы (перелогиниться), то при повторном входе в систему также все запускается, но стартует какое-то терминальное окошко, которое ничем закрыть не удается, не работают hotkey'и программы можно запустить только через меню IceWM. Если закрыть например, parcellite, то повторно можно его и не запустить. Выйти из ОС можно только завершением процесса icewm или icewm-session через системный монитор.
    Никто не сталкивался с подобным? Что-то я пока не знаю куда "копать"

    ОтветитьУдалить
  20. Решил проблему следующим образом:
    #!/bin/sh
    feh --bg-scale /home/user/Изображения/backgrounds/showtime.jpg &
    sleep 2 &&
    fbxkb &
    sleep 1 &&
    parcellite &
    sleep 2 &&
    gvolwheel &
    sleep 2 &&
    hillman &

    ОтветитьУдалить
  21. Читаю данные статьи автора давно уже, если возможно просил бы помочь вас (ну и тех кто не откажется). Вобщем проблемы такие:
    1. Разрешение монитора как менять то в Айсе? (ну родной программы для настройки нету). (Debian Squeeze)
    2. На одном компе установил Дебиан 5 (с нетинстала) и прекрасно запускается ххкв по рецептам автора, а вот та другом компе (изначально там Хfce, поставил Айс, ххкв не стартует.

    ОтветитьУдалить
  22. А мне нравится, когда сплэш xscreensaver при входе не вываливается:
    xscreensaver -no-splash &

    а в shutdown можно добавить
    killall xscreensaver

    Подсмотрено здесь: http://www.jimbrooks.org/web/linux/x_window_system.php

    ОтветитьУдалить
  23. команды iwconfig mode iwconfig essid прописанные в STARTUP, не выполняются, кроме одной - fxkbd.
    Это доказывается тем, что после загрузки появляется значок переключателя клавиатуры, а сеть не находится.

    Но если потом выполнить этот файл после загрузки, все команды выполняются.

    Это доказывается тем, что появляется 2й значок перекл. клав-ы, и НАХОДИТСЯ СЕТЬ.

    ВОПРОС: в чем тут дело? (синтаксис, как я понимаю, правильный, раз сам файл во второй раз выполняет все записанные в него команды) Чего -то наверно не хватает при первой автоматической загрузке?

    ОтветитьУдалить
  24. Вот вы говорите что айс такой хороший, я сразу же наткнулся на огромную для меня проблему, которую так решить и не смог: нет прозрачности. Мне например удобно печатать в консоли когда на заднем плане располагается страница с командами

    ОтветитьУдалить
  25. @Ivan Zyryanov комментирует...
    Вот вы говорите что айс такой хороший, я сразу же наткнулся на огромную для меня проблему, которую так решить и не смог: нет прозрачности.
    Прямой поддержки композитинга у IceWM, понятное дело, нет - это оконный менеджер вообще-то, а не графическая среда. Но это не значит, что её нет вообще: запускаем xcompmgr, и далее вызываем команду transset-df (её можно повесить на хоткей) для того, чтобы менять прозрачность окон.

    Мне например удобно печатать в консоли когда на заднем плане располагается страница с командами
    Собственно, я тоже использую полупрозрачность, правда, для других целей. Через transset-df всё работает (IceWM 1.2.35 из Lenny). Скриншот.

    ОтветитьУдалить
  26. У меня на двух компьютерах одинаковые Wheezy и одинаковые Icewm, на одном все нормально, на другом Icewm работает, но не клеятся обои - вместо них чернота. Сделал startup как у вас - но он не выполняется. То есть если запустить его принудительно, то обои появляются, но при запуске Х11 про startup "забывают". ЧЯДНТ?

    ОтветитьУдалить