Slim login manager + lxsession + Fluxbox WM + lxpanel

Thanks: 24
Say if this page is useful for you
Author: Sergey Popov (aka azure)
Published on 2009.09.19
Last modified on 2010.10.08
  1. Введение
  2. Login manager
  3. lxsession
  4. Настройка ~/.xinitrc
  5. Использование lxpanel совместно с fluxbox
  6. Заключение

Введение

fluxbox, безусловно, очень быстрый и настраиваемый оконный менеджер. Он подходит для использования на компьютерах с малым количеством ресурсов (нет\ноутбуки, старые компьютеры) и\или для продвинутых linux-пользователей, которые хотят иметь полный контроль над десктопом без лишних рюшечек.

В статье я поделюсь своим скромным опытом в настройке окружения fluxbox которое позволяет, с одной стороны, использовать fluxbox как минималистичный оконный менеджер, а с другой — получить адекватную рабочую среду с нормальным меню, кнопками быстрого запуска и системным монитором.

Login manager

Login manager — это программа, которая предоставляет пользователю графический вход в систему. По сути это программа, которая показывает некую форму ввода логина\пароля, выбор неких опций логина (например, желаемую сессию). Мне, признаться, представляется излишним использование нескольких DE. Во всяком случае, по моему мнению, для одного пользователя иметь несколько рабочих окружений — это слишком. Потребности таковой нет.

Slim

Популярные login managers (gdm, kdm) имеют слишком много зависимостей и сами по себе слишком монструозны для выполнения не такой уж сложной задачи обеспечения входа пользователей. Для себя я остановился на использовании slim. Он имеет минимум зависимостей (X11, libpng, libjpeg, freetype), достаточно легок и может выполнять возложенную на него функцию. Использование slim вместо gdm/kdm дает выигрыш в скорости появления экрана приветствия или в скорости автоматического входа (не забываем про безопасность!!!).

slim имеет возможность менять темы оформления. Вот окошко с видом slim в gentoo и archlinux. slim умеет запускать ~/.xinitrc при успешном логине (к сожалению, slim на сегодняшний день не поддерживает запуск X-сессий прописаных в /usr/share/xsessions/ и, вероятно, не будет поддерживать никогда, потому что его разработка, по-видимому, остановилась). В скрипте ~/.xinitrc можно (и нужно) настроить запуск окружения fluxbox. Если туда просто вписать startfluxbox то после успешного логина мы получим fluxbox WM и встроенную в него панель. Можно было бы вписать в автозапуск (~/.fluxbox/startup) необходимые приложения и сказать, что fluxbox успешно выполняет функции session manager'а, но... это негибкое решение (читай: костыли). Ведь существует т.н. Autostart Specification от freedesktop.org. Согласно этой спецификации при логине пользователя автоматически должны запускаться программы (точнее, .desktop файлы), помещенные в папку пользовательского автозапуска (~/.config/autostart/). Спецификацию автозапуска поддерживает lxsession.

lxsession

lxsession — это небольшая программка из состава проекта LXDE, которую я приспособил для запуска окружения на основе fluxbox. Но об этом далее.

По умолчанию lxsession использует профиль LXDE для запуска окружения LXDE (что в общем-то очень даже логично). Но можно указать другой профиль с ключом запустив lxsession -s profile_name. Установленная из портежей версия lxsession (0.4.1) оказалась глючной, и мне потребовалось собрать lxsession из последних доступных исходников этой программы.

Я скопировал профиль LXDE и создал профиль fluxbox:

cp -r ~/.config/lxsession/LXDE/ ~/.config/lxsession/fluxbox/
И внес тривильную правку в файл ~/.config/lxsession/fluxbox/desktop.conf:
[Session]
window_manager=startfluxbox

Настройка ~/.xinitrc

Теперь lxsession -s fluxbox будет запускать скрипт инициализации окружения fluxbox! Осталось только прописать в ~/.xinitrc нужные строки запуска. Вот как это выглядит у меня:

#!/bin/bash
#this will set the us and ru(winkeys) groups and Ctrl+Shift to switch groups
setxkbmap "us,ru" ",winkeys" "grp:ctrl_shift_toggle"

#this will turn ON autorepeat
xset r

#start lxsession with a fluxbox profile
lxsession -s fluxbox

Возможно, Вам придется использовать строку запуска "ck-launch-session lxsession -s fluxbox" в том случае, если Вы используете consolekit. Это необходимо для того, чтобы в меню выхода отображались кнопки Reboot и Power Off

Использование lxpanel совместно с fluxbox

fluxbox имеет собственную панель. В принципе, она всем хороша: быстра, настраиваема... Но вот одна беда: не может она предоставлять пользователю меню с установленными в системе десктопными приложениями. Меню у fluxbox статическое, увы. Статичность дает скорость и конфигурируемость (можно организовать меню очень специфичным образом). Но статичность вынуждает руками править файл меню для добавления новый приложений.

Я разрывался между использованием среды LXDE (lxsession + lxpanel + openbox + pcmanfm + мелкие, но полезные GUI-утилиты для настроек десктопа) и fluxbox. В LXDE меня не устраивал по сути openbox, который (все нижеследующее на правах IMHO) как-то тормозно отрисовывает декорации, сложен в настройке из-за файлов конфигурации в формате xml и как-то плохо дружит с conky. В окружении fluxbox же мне не хватало динамически обновляемого меню (которое есть у lxpanel). Но если запустить lxpanel в fluxbox то, во-первых, происходит конфликт systray (т.к. один системный трей уже реализован панелью fluxbox), а, во-вторых, нечего повесить на кнопку выхода в меню. Обходные пути решения второй проблемы были сразу расценены мной как костыли, ведь уже есть готовое решение — lxde-logout. Для его работы и пришлось заморачиваться с lxsession, что, как оказалось, было правильным путем.

Итак, в ~/.fluxbox/startup добавим строчку

lxpanel &
При этом надо не забыть что-то сделать с панелью fluxbox. Редактируем файл ~/.fluxbox/init и вносим такие правки:
session.screen0.toolbar.visible: false
session.screen0.toolbar.tools: workspacename, prevworkspace, nextworkspace, iconbar, prevwindow, nextwindow, clock

Обартите внимание, в списке session.screen0.toolbar.tools удален установленный по умолчанию systemtray.

Заключение

После всех описаных тут манипуляций я получил то, что хотел: нормальный WM, коим является fluxbox, который, помимо прочего, из коробки управляет двумя X дисплеями (openbox требует запуска отдельной сессии на второй десктоп), легковесный графический вход, графический диалог выхода, автозапуск .desktop файлов из папки ~/.config/autostart/ , отображение языка ввода и запоминание языков ввода для каждого окна (это делает апплет языков на lxpanel), более легкую, по сравнению с openbox, настройку горячих клавиш. Наконец-то я решил отказаться от иконок на рабочем столе, но для тех, кому это надо, эту работу может весьма успешно выполнять легковесный файл-менеджер pcmanfm.


Nickname:
Creative Commons License This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License