В статье рассматривается один из вариантов установки лёгкого оконного менеджера IceWM и его начальной настройки для создания графического рабочего стола (десктопа) «одного приложения».
Такая конфигурация может быть полезна при подготовке промышленных или служебных рабочих станций (операторы, кассиры, диспетчеры, охранники, и т.п.), в которых основные приложения работают в «графике».
Итого, нужно следующее:
Рекомендуется что базовая система также удовлетворяет требованиям разумного минимализма (общее правило: больше возможностей и функций - больше дыр) (см. также «Установка дистрибутива Linux в минимальной конфигурации для эксплуатации в качестве сервера.»).
Требуется установленный и настроенный сервер Х ( читай «Установка и настройка сервера X.Org (X Window System).» ).
Уровень сложности: средний.
В. Почему IceWM?
О. По нашему мнению, в нём присутствует баланс скорости,
безопасности, гибкости настройки и «привычности» интерфейса.
В. Не хочу IceWM.
О. Выбирайте любой оконный менеджер для X: 9wm, aewm, aewm++,
afterstep, amaterus, amiwm, asclassic, blackbox, ctwm, dwm,
enlightenment, evilwm, fluxbox,
flwm, fvwm, fvwm-gnome, fvwm1,
icewm, icewm-lite, ion2, jwm,
kwin, larswm, lesstif-bin, lwm, metacity, olvwm, olwm,
openbox, oroborus, pwm, qvwm, ratpoison, sapphire,
sawfish, tinywm, twm, uwm, vtwm, w9wm, waimea, windowlab, wm2,
wmaker, wmii, wmii2, xfwm4.
Для представления что такое оконный менеджер IceWM читаем:
Ищем пакеты в описании которых есть упоминание о IceWM:
user@host:~$ apt-cache search icewm icewm-lite - wonderful Win95-OS/2-Motif-like window manager icewm-gnome-support - GNOME support files for IceWM icedove-traybiff - traybiff - new mail alert for Icedove grun - GTK based Run dialog iceconf - Configuration tool for icewm wmctrl - control an EWMH/NetWM compatible X Window Manager icemc - Editor for IceWM menus gsetroot - a C/Gtk-based front-end for Esetroot dfm - Desktop-File-Manager for X11 icewm-experimental - wonderful Win95-OS/2-Motif-like window manager fspanel - minimalist panel for X icewm-common - wonderful Win95-OS/2-Motif-like window manager icewm - wonderful Win95-OS/2-Motif-like window manager icewm-themes - Theme files for the Ice Window Manager
Устанавливаем то, что выбрали и не забываем про эмулятор терминала xterm:
IceWM
user@host:~$ sudo aptitude install icewm xterm # для локали ru_RU.UTF-8 устанавливаем в качестве x-terminal-emulator # uxterm - X terminal emulator for for Unicode (UTF-8) environments user@host:~$ sudo update-alternatives --set x-terminal-emulator /usr/bin/uxterm
yum install icewm ???
Определяем icewm оконным менеджером по-умолчанию для всех пользователей.
Способ 1: определением x-window-manager и x-session-manager (также используются в скриптах xinit/startx) через подсистему альтернатив (man update-alternatives(8))
Примечание: переменная STARTUP не должна быть определена.
# доступные альтернативы для x-window-manager user@host:~$ sudo update-alternatives --list x-window-manager /usr/bin/icewm # доступные альтернативы для x-session-manager user@host:~$ sudo update-alternatives --list x-session-manager /usr/bin/icewm-session # смотрим кто сейчас x-window-manager user@host:~$ ls -l /etc/alternatives/x-window-manager lrwxrwxrwx 1 root root 14 2007-08-05 22:06 /etc/alternatives/x-window-manager -> /usr/bin/icewm # если отличается от /usr/bin/icewm, то устанавливаем user@host:~$ sudo update-alternatives --set x-window-manager /usr/bin/icewm # проверяем user@host:~$ ls -l /etc/alternatives/x-window-manager lrwxrwxrwx 1 root root 14 2007-11-18 22:16 /etc/alternatives/x-window-manager -> /usr/bin/icewm # смотрим кто сейчас x-session-manager user@host:~$ ls -l /etc/alternatives/x-session-manager lrwxrwxrwx 1 root root 14 2007-08-05 22:06 /etc/alternatives/x-window-manager -> /usr/bin/icewm-session # если отличается от /usr/bin/icewm-session, то устанавливаем user@host:~$ sudo update-alternatives --set x-session-manager /usr/bin/icewm-session # проверяем user@host:~$ ls -l /etc/alternatives/x-session-manager lrwxrwxrwx 1 root root 22 2007-11-18 22:16 /etc/alternatives/x-session-manager -> /usr/bin/icewm-session
Способ 2 (устаревший): установкой глобальной переменной окружения STARTUP, которая обрабатывается скриптом xinit (startx).
user@host:~$ sudo echo 'STARTUP="icewm-session"' >> /etc/environment
Проверить состояние переменной можно командой env:
user@host:~$ env | grep STARTUP STARTUP=icewm-session
Примечание: чтобы переменная «вступила» в силу нужно выйти из системы (logout) и войти заново (login).
Для проверки обоих способов используйте команду startx:
Запуск сервера X из консоли
user@host:~$ startx
Скриншот IceWM после установки.
Все настройки IceWM расположены в конфигурационных файлах в каталогах:
Настройки распределены по смысловым группам и должны определяться строго в своих файлах:
Описание и примеры (engl) см. в каталоге /usr/share/doc/icewm-common и http://www.icewm.org/manual/icewm-8.html
~/.icewm/preferences
user@host:~$ cat ~/.icewm/preferences ### Меню ### # Отображать подменю программ ShowProgramsMenu = 0 # ... подменю "Темы" ShowThemesMenu = 0 # ... меню "Выход" ShowLogoutMenu = 1 # Show logout submenu ShowLogoutSubMenu = 0 # ... "Помощь" ShowHelp = 0 # ... "О программе" ShowAbout = 0 # ... "Запустить" ShowRun = 0 # ... меню "Список окон" ShowWindowList = 0 ### Панель задач ### # Отображать "Панель задач" ShowTaskBar = 1 TaskBarShowAllWindows = 1 TaskBarShowMailboxStatus = 0 TaskBarShowWorkspaces = 0 TaskBarShowCPUStatus = 1 TaskBarCPUDelay = 1000 CPUStatusCommand='xterm -name top -title "TOP" -e /bin/sh -c "while : ; do top; sleep 5; clear; done"' TaskBarShowNetStatus = 1 TaskBarNetDelay = 1000 NetStatusCommand = 'xterm -name netstat -title "Network Status" -e /bin/sh -c "while : ; do netstat -atun; sleep 5; clear; done"' NetworkStatusDevice = 'eth0 eth1'
~/.icewm/toolba
user@host:~$ cat ~/.icewm/toolbar # This is a default toolbar definition file for IceWM # # Place your personal variant in $HOME/.icewm directory. prog XTerm xterm x-terminal-emulator #prog "Vim" vim /usr/bin/gvim -f #prog "WWW" /usr/share/pixmaps/firefox.png x-www-browser prog "avreg-mon" - x-terminal-emulator -e /usr/bin/avreg-mon -v
~/.icewm/menu
user@host:~$ cat ~/.icewm/menu # This is an example for IceWM's menu definition file. # # Place your variants in /etc/X11/icewm or in $HOME/.icewm # since modifications to this file will be discarded when you # (re)install icewm. # prog Terminal xterm x-terminal-emulator -ls
Включаем нужные приложения в автозагрузку по старту графической оболочки для конкретного пользователя:
# нужно войти под конкретным пользователем и перейти в его домашний каталог user@host:~$ cd $HOME # создаём каталог, с всеми пользовательскими настройками IceWM # (то есть можно потом клонировать для других юзеров) user@host:~$ mkdir ~/.icewm # создаём startup "автозагрузочный" сценарий # показан метод с консоли, можно набрать в редакторе: # editor ~/.icewm/startup (исключая строки с командой cat и заключительным _EOF_) user@host:~$ cat <<_EOF_ > ~/.icewm/startup #!/bin/sh # автозагрузка программ для icewm # если установлен gkrellm [ -x /usr/bin/gkrellm ] && /usr/bin/gkrellm& # если установлен xxkb [ -x /usr/bin/xxkb ] && /usr/bin/xxkb& # если установлен локальный просмотрщик камер avreg-mon # включать только после окончательной настройки AVReg if [ -x /usr/bin/avreg-mon ]; then (sleep 3; /usr/bin/avreg-mon&)& fi # если установлен idesk if [ -x /usr/bin/idesk ]; then (sleep 2; /usr/bin/idesk&)& fi exit 0 _EOF_ # делаем скрипт исполняемым user@host:~$ chmod u+x ~/.icewm/startup
Устанавливаем индикатор раскладки клавиатуры XXKB:
Debian/Ubuntu
user@host:~$ sudo aptitude install xxkb
Настройка xxkb (прим: глобально для всех пользователей) производится через файл /etc/X11/app-defaults/XXkb
Приводим отличия от стандартной версии конфигурационного файла:
/etc/X11/app-defaults/XXkb
-XXkb.mainwindow.enable: yes +XXkb.mainwindow.enable: no -XXkb.button.geometry: 15x15-60+7 +XXkb.button.geometry: 15x15-70+7 -XXkb.button.xpm.3: su15.xpm -XXkb.button.xpm.4: +XXkb.app_list.wm_class_name.ignore: gkrellm avreg-mon
Документация по настройке xxkb на русском языке:
"хитрый" способ, так как документ в KOI8-R, а локаль обычно в UTF-8
user@localhost:~$ zcat /usr/share/doc/xxkb/README.koi8.gz | iconv -f koi8-r | pager
IceWM ничего не знает про ярлыки рабочего стола (иконки), поэтому для их использования понадобится приложение idesk.
Установка idesk в Debian/Ubuntu
user@host:~$ sudo aptitude install idesk
Создаём конфигурационный файл .ideskrc:
~/.ideskrc
user@host:~$ cat << _EOF_ > .ideskrc table Config FontName: helvetica FontSize: 13 FontColor: #37CFA6 ToolTip.FontSize: 13 ToolTip.FontName: helvetica ToolTip.ForeColor: #0000FF ToolTip.BackColor: #FFFFFF ToolTip.CaptionOnHover: true ToolTip.CaptionPlacement: Right Locked: true Transparency: 100 Shadow: true ShadowColor: #000000 ShadowX: 1 ShadowY: 1 Bold: true ClickDelay: 300 IconSnap: true SnapWidth: 10 SnapHeight: 10 SnapOrigin: BottomRight SnapShadow: false SnapShadowTrans: 200 CaptionOnHover: false CaptionPlacement: bottom FillStyle: fillinvert Background.Delay: 0 Background.Source: None Background.File: None Background.Mode: Center Background.Color: #C2CCFF end table Actions Lock: control right doubleClk Reload: middle doubleClk Drag: left hold EndDrag: left singleClk Execute[0]: left doubleClk end _EOF_
Создаём каталог для файлов - ярлыков:
user@host:~$ mkdir .idesktop
Для примера создадим ярлык программы часов на рабочем столе:
user@host:~$ cat << _EOF_ > ~/.idesktop/xclock.lnk table Icon Caption: Часы Icon: /usr/share/idesk/folder_home.xpm X: 31 Y: 31 Command[0]: /usr/bin/xclock end _EOF_
Документация по idesk:
Установка
Debian/Ubuntu
user@host:~$ sudo aptitude install ИМЯ_ПАКЕТА
Если на целевом компьютере необходимо следить за системными показателями, такими как загрузка процессора, памяти, сети, заполнение диска(ов), можно воспользоваться графическими апплетами рабочего стола из класса системных мониторов.
В легковесных графических WM, к которым относится IceWM, нет встроенных мониторов как в полновесных GNONE и KDE, однако эта ситуация легко разрешается установкой «внешних» апплетов.
Мы советуем обратить внимание на два таких монитора:
Debian/Ubuntu
user@host:~$ sudo aptitude install gkrellm
Debian/Ubuntu
user@host:~$ sudo aptitude install conky
Автоматический вход в систему под определённым пользователем без ввода пароля с загрузка графической оболочки (и соответственно программ в «автозагрузке»).
В конце фазы загрузки любого дистрибутива Linux Вы увидите приглашение на вход в систему (login).
Если Вы физически находитесь прямо за целевым компьютером, то такое приглашение будет
Если у Вас 2 случай - удаляйте эти пакеты (gdm, kdm, xdm) и перегружайтесь (загрузка должна остановиться на текстовом приглашении), так как, для обеспечения автологина нам нужно самостоятельно «поднимать» сервер X.
Как правило в большинстве дистрибутивов есть скрипт /etc/init.d/rc.local (пути могут быть несколько другими), который выполняется одним из последних, среди всех демонов(сервисов)
В свою очередь, /etc/init.d/rc.local, выполняет скрипт /etc/rc.local, в который мы и вставим команду, которая:
Открываем в редакторе файл /etc/rc.local
user@host:~$ sudo editor /etc/rc.local
и добавляем в конец, перед последней строкой «exit 0», строки:
Bash
# автологин пользователя с именем "luser" с последующим запуском графической оболочки /bin/su - luser -c "/bin/sh -lc startx"
Однако это ещё не всё. Теперь нужно определить кто может запускать сервер X.
Варианты:
Debian/Ubunty
user@host:~$ sudo dpkg-reconfigure x11-common user@host:~$ sudo /etc/init.d/x11-common restart
В других дистрибутивах просто отредактируйте файл /etc/X11/Xwrapper.config, определив параметр «allowed_users» значением «anybody»
user@host:~$ cat /etc/X11/Xwrapper.config # Xwrapper.config (Debian X Window System server wrapper configuration file) # # See the Xwrapper.config(5) manual page for more information. # # If you have edited this file but would like it to be automatically updated # again, run the following command as root: # dpkg-reconfigure x11-common allowed_users=anybody nice_value=0
Перегружаемся для проверки.
user@host:~$ sudo reboot или user@host:~$ sudo shutdown -r now
В домашнем каталоге пользователя присутствует файл .xsession-errors в который дописывается STDERR вывод приложений, запускаемых в графической оболочке.
Проблема в том, что .xsession-errors файл умеет только «расти» и нужно как-то его очищать или запретить дозапись.
Приводим глобальный способ для всех пользователей через правку скрипта Xsession, выполняемого по startx или десктоп-менеджером, таким как xdm, gdm, kdm.
патч
debian:/etc/X11# diff -u /etc/X11/Xsession.orig /etc/X11/Xsession --- /etc/X11/Xsession.orig 2007-11-19 04:50:31.000000000 +0300 +++ /etc/X11/Xsession 2007-11-19 04:50:56.000000000 +0300 @@ -91,7 +91,7 @@ errormsg "unable to create X session log/error file; aborting." fi -exec >>"$ERRFILE" 2>&1 +exec >"$ERRFILE" 2>&1 echo "$PROGNAME: X session started for $LOGNAME at $(date)"
Необходимо обеспечить, что конфигурация рабочего стола не была случайно или не случайно испорчена вандалом юзером.
Вспоминаем, что все настройки, произведённые в примерах этой статьи находятся и сохранены в файловой системе (файлах). Это значит, что для нашей задачи нужно просто запретить изменение файлов и каталогов.
Например:
user@host:~$ sudo chown -R root .icewm .idesktop .ideskrc .bash*