Содержание статьи
Современные дистрибутивы Linux чрезмерно дружелюбны к новичкам и совершенно неэффективны в повседневном использовании. Следуя же нашим инструкциям, ты получишь минималистическое, быстрое и удобное окружение рабочего стола, как у многих гиков.
Устанавливаем дисплейный менеджер
Первый шаг на пути к новому десктопу — установка дисплейного менеджера (DM), в задачи которого входит формирование графического окна с полями для ввода имени и пароля, а также запуск всех остальных компонентов DE.
Наиболее продвинутые и удобные DM распространяются в комплекте с популярными десктопными средами, такими как KDE и Gnome, но в силу своей раздутости и адского количества зависимостей для нашего минималистичного десктопа они подходят плохо. Поэтому я выбрал легкий и удобный дисплейный менеджер SLiM (Simple LogIn Manager).
SLiM доступен в основном репозитории Ubuntu, поэтому его легко установить с помощью любого apt-клиента. В ходе установки необходимо согласиться с предложением сделать SLiM менеджером по умолчанию. Какой-либо дополнительной настройки не требуется, но для удобства лучше изменить несколько строк конфигурационного файла. Открываем /etc/slim.conf, находим в самом начале опцию default_path и добавляем в конец ее значения следующую запись (опции и значения разделены пробелом):
:/sbin:/usr/sbin:/usr/local/sbin
Эта строка позволит использовать административные команды внутри DE. Далее находим опцию sessions и указываем в качестве ее значения строку "default,awesome,xterm". Так у нас будет всего три типа сессии: прошлая, менеджер окон awesome и голый xterm (вместо кучи различных WM).
Выбираем менеджер окон
Менеджер окон — ключевой компонент любого рабочего стола. От его выбора зависит не только то, как будет выглядеть твой десктоп, но и множество других характеристик: способ расположения окон на экране, наличие или отсутствие панелей, системы меню, возможности заскриптовать действия, поддержка стандартов freedesktop, наличие трея и многое другое.
Большинство современных менеджеров окон похожи друг на друга и предлагают пользователю сходный функционал. Fluxbox, windowmaker, kwm, compiz и огромное количество других WM реализуют одну и ту же модель перекрывающихся окон, более тридцати лет назад предложенную компанией Xerox. Между тем многие пользователи уже давно заметили, что модель неперекрывающихся окон (каждое из которых растягивается на все доступное пространство экрана) гораздо более удобна для восприятия информации и управления окнами.
Менеджеры окон, реализующие такую модель, называются тайловыми (от английского слова tail — плитка, черепица).
Они не столь популярны, как остальные, но по-настоящему ценятся в среде гиков. Всего существует около десятка тайловых WM, среди которых есть как совершенно минималистичные (например, ratpoison и dwm), так и очень функциональные (ion3, awesome). Более того, быть тайловым умеет даже менеджер окон kwm (начиная с KDE 4.5).
Для гиковского рабочего стола я выбрал менеджер окон awesome. Он функционален и настраиваем, имеет все необходимое для жизни, включая панель управления, меню и трей, но самое главное — awesome способен работать в разных режимах, начиная от классического (стандартные перекрывающиеся окна) и заканчивая десятком режимов с неперекрывающимися окнами. Как и все остальное, awesome доступен в репозитории Ubuntu, поэтому его можно установить с помощью apt-get:
$ sudo apt-get install awesome awesome-extra
Пакет awesome-extra содержит дополнительные модули awesome, они нам понадобятся при настройке, которую мы произведем в одном из следующих разделов.
Настраиваем эмулятор терминала
Трудно представить себе UNIX-десктоп без эмулятора терминала, а гиковый десктоп — тем более. Ни один продвинутый пользователь и дня не проживет без терминала, набора самопальных скриптов и mc, поэтому к выбору замены xterm нужно подходить со всей серьезностью. Существует масса различных эмуляторов терминалов, однако наиболее удобным в использовании и непритязательным к системным ресурсам я считаю терминал rxvt-unicode. Он умеет все, что только может потребоваться от терминала, и почти не имеет зависимостей. Кроме того, нам понадобится внятный моноширинный шрифт, удобочитаемый и не режущий глаз. На эту роль лучше всего подходит классический консольный шрифт terminus, уже многие годы восхваляемый UNIX-старожилами.
Устанавливаем необходимые компоненты, плюс (во избежание путаницы) удаляем все остальные эмуляторы терминала из системы:
$ sudo apt-get install rxvt-unicode xfonts-terminus
$ sudo apt-get remove xterm gnome-terminal
Создаем файл ~/.Xdefaults и пишем в него настройки:
$ vi ~/.Xdefaults
! Для совместимости прикидываемся xterm
URxvttermName: xterm
! Желтый ненавязчивый фон
URxvtbackground: #e0e0ac
! Черные буквы
URxvtforeground: Black
! Отключаем скроллбар
URxvtscrollBar: false
! Небольшой отступ от краев окна для лучшего восприятия
URxvt*internalBorder: 5
! Наш шрифт
URxvt.font: xft:Terminus:size=14
Все. Осталось только установить менеджер сетевых подключений, и можно считать, что каркас будущего десктопа готов.
Менеджер сетевых подключений
Без интернета жить нельзя, поэтому мы должны разобраться с тем, как собираемся к нему подключаться. По умолчанию в Ubuntu установлен менеджер соединений NetworkManager, но после переезда в собственный DE перед нами встанет выбор, продолжать ли использовать его, поменять на другой или настраивать все вручную. Я предлагаю остановиться на менеджере подключений wicd, который мне кажется более удобным и стабильным, а к тому же имеет консольный интерфейс. Установим его, заодно удалив NetworkManager:
$ sudo apt-get remove network-manager
$ sudo apt-get install wicd wicd-curses wicd-cli
Установщик автоматически пропишет wicd в автозапуск, поэтому после перезагрузки нам останется только запустить клиент.
Собираем все вместе
Теперь у нас есть четыре основных компонента рабочего стола, поэтому мы уже можем начать его использовать. Проще всего это сделать, просто перезагрузив машину. После этого на экране должно появиться окно slim. Нажимаем <F1> (чтобы выбрать сессию awesome), вводим имя и пароль. На экране появится awesome в своем дефолтовом виде.
Начинаем медитировать. Строка сверху — это статус-бар, его задача — показывать текущее состояние менеджера окон и управлять им (несмотря на ориентированность на клавиатурное управление, awesome можно контролировать с помощью мыши). Квадратный значок с его левой стороны — стандартная кнопка меню, с помощью которой можно запускать приложения и управлять WM. Меню можно вызвать без использования мыши, просто нажав комбинацию <Win+W>. Последовательность цифр от 1 до 9, расположенная сразу за кнопкой меню — это так называемые теги, аналоги виртуальных рабочих столов в других WM. Между ними можно переключаться мышкой или комбинацией <Win+номер>.
С правой стороны расположен индикатор текущей раскладки окон (о нем мы поговорим чуть позже), перед ним — часы, а перед часами — трей (он не виден, пока в него не будет свернуто приложение). Между списком тегов и треем располагается стандартный таск-лист, показывающий открытые в данный момент окна (приложения). Сами приложения можно запускать тремя разными способами:
- Через меню;
- С помощью горячих клавиш (например, комбинация <Win+Enter> запускает терминал);
- Через строку запуска, доступную по нажатию <Win+R> (аналог окна запуска по <Alt+F2> в других WM, появляется прямо в статус-баре, рядом со списком тегов, поддерживает историю и автодополнение).
Переключение между приложениями с одним тегом (то есть расположенными на одном виртуальном рабочем столе) осуществляется с помощью комбинаций <Win+J> (вперед), <Win+K> (назад) и <Win+Tab> (между двумя последними).
По умолчанию awesome работает в классическом режиме, позволяя таскать окна по экрану и накладывать их друг на друга. Однако все изменится после нажатия комбинации <Win+пробел>, которая переведет менеджер окон в тайловый режим: все окна окажутся на экране, деля его между собой.
Если окно одно — оно займет весь экран, два окна поделят экран на две части по вертикали, три — на три части и так далее. Awesome умеет располагать окна более чем десятком различных способов, переключаться между которыми можно с помощью клика по индикатору раскладки в правой стороне статус-бара (левый клик — вперед, правый — назад), либо с помощью все той же клавиатурной комбинации <Win+пробел> (вперед) или <Win+Shift+пробел> (назад). Очень трудно объяснить различия между всеми раскладками, поэтому рекомендую хорошенько поэкспериментировать. Добавлю лишь, что наиболее практичными я считаю три из них:
- Плавающие окна. Первая и дефолтовая раскладка. Реализует модель обычных перекрывающихся окон, которые можно спокойно таскать по экрану с помощью комбинации <Win+левая кнопка мыши>, изменять размер с помощью <Alt+правая кнопка мыши> и накладывать друг на друга. Идеально подходит для многооконных приложений (таких как gimp) и для людей, которые не могут привыкнуть к тайлингу.
- Первый слева, все остальные справа. Вторая по счету раскладка, она очень удобна для открытия множества терминалов (в одном top, в другом bash, в третьем — irc-клиент и так далее).
- Все окна на максимум. Третья с конца раскладка, которая распахивает все открытые окна на полный экран (они как бы наложены друг на друга). Очень удобна для запуска больших графических приложений, требующих много пространства: браузеры, mail-клиенты, редакторы, таблицы и прочие.
В любой момент выбранное окно можно минимизировать с помощью клавиатурной комбинации <Win+N>, растянуть на весь экран с помощью <Win+M>, сделать плавающим, нажав <Win+Ctrl+Пробел> или закрыть — <Win+Shift+C>. Ширину окон можно изменять с помощью <Win+H> (больше) и <Win+L> (меньше).
Этой информации будет вполне достаточно, чтобы приступить к использованию awesome, но для того, чтобы почувствовать всю его мощь, не обойтись без правильного конфигурационного файла. В awesome используется язык сценариев lua, с помощью которого происходит как настройка менеджера окон под свои нужды, так и его расширение (на lua можно написать плагин практически любой сложности и прозрачно интегрировать его в менеджер окон). И хотя lua — очень простой язык (он напоминает сильно урезанный JavaScript), написанные на нем конфигурационные файлы получаются довольно длинными и сильно запутанными. Поэтому я уже подготовил хороший конфигурационный файл и выложил его на нашем диске. Ниже мы кратко пробежимся по его основным разделам.
В самом начале файла находится ряд директив require, подключающих дополнительные lua-библиотеки. К ним я добавил строку require(«vicious»), ответственную за подключение библиотеки vicious, которая реализует интерфейс подключаемых виджетов (в терминологии awesome виджеты это просто элементы статус-бара, отображающие какую-либо информацию).
Далее происходит инициализация темы менеджера окон с помощью функции beautiful.init. Я поменял стандартную тему на более светлую, но ты можешь выбрать другую, просто указав каталог темы в качестве аргумента функции (по умолчанию темы awesome лежат в каталоге /usr/share/awesome/themes/).
Ниже происходит установка значений стандартных опций, таких как дефолтовый эмулятор терминала, редактор, modkey (это клавиша, присутствующая во всех клавиатурных комбинациях awesome — по умолчанию Win, обозначенная в конфиге как Mod4). Далее идет перечисление доступных раскладок окон, названия стандартных тегов, инициализация меню, статус-бара, виджетов, установка стандартных клавиатурных комбинаций (кстати, я поменял комбинацию закрытия окна на <Ctrl+Q>, она мне кажется более удобной) и индивидуальные настройки приложений.
В целом журнале не хватит места, чтобы описать, как все это работает, поэтому я остановлюсь только на двух важных моментах: виджетах и индивидуальных настройках приложений. В приведенном конфиге статус-бар отображает пять виджетов: скорость скачивания/загрузки по сети (для Wi-Fi), нагрузка на процессор, заполненность памяти, уровень заряда батареи и текущий уровень громкости (кстати, по нему можно кликать, чтобы уменьшать и увеличивать громкость). Ты можешь удалить или добавить новые виджеты, но тебе придется самому разбираться, как это сделать (благо в интернете есть немало руководств на русском, посвященных этому вопросу).
Раздел конфига, обозначенный комментарием «-- {{{ Rules», предназначен для настройки поведения окон отдельно взятых приложений. Его особенно удобно использовать, чтобы сделать окна выбранных приложений по умолчанию плавающими. Например, если мы хотим, чтобы окно плеера audacious не растягивалось на весь экран, а всегда открывалось, как в обычных WM, то мы должны добавить следующий блок в этот раздел (сразу за предыдущей подобной записью):
{ rule = { class = "Audacious2" }, properties = { floating = true } },
Имя класса (в данном случае «Audacious2») можно получить, введя в терминале команду «xprop | grep WM_CLASS» и кликнув по окну нужного приложения.
С менеджером окон все. Теперь необходимо настроить автозапуск приложений (нам нужно запускать хотя бы клиент wicd), переключение раскладки клавиатуры (отказавшись от DE, мы потеряли эту возможность) и автомонтирование сменных накопителей (еще одна вкусность DE).
Первая задача самая простая. Все, что требуется сделать для ее решения, это просто прописать нужные команды в файл ~/.xsession, добавив в их конец знак '&'. Таким же образом решается и задача настройки переключения клавиатуры, а сам ~/.xsession в окончательном виде приобретает следующий вид:
$ vi ~/.xsession
Wicd будет висеть в трее
wicd-client &
Раскладка РУС-АНГЛ с включением по CAPSLOCK
и индикацией с помощью светодиода на клавиатуре
setxkbmap "us,ru" ",winkeys" "grp:caps_toggle" &
Запуск WM
exec awesome
Автомонтирование флешек проще всего реализовать с помощью демона halevt, который работает абсолютно прозрачно для пользователя и не требует настройки. Достаточно установить одноименный пакет в систему и добавить запуск демона в тот же .xsession (строка «pgrep halevt >> /dev/null || halevt &» прямо перед «exec awesome») и убрать его из автозапуска на системном уровне:
$ sudo rm /etc/rc{2,3,4,5}.d/S20halevt
Флешки будут монтироваться с флагом sync, поэтому перед извлечением их не нужно размонтировать. Найти содержимое можно в каталоге /media/метка-фс (или /media/disk, если ФС не имеет метки).
Браузер
Рабочий стол без браузера практически бесполезен, поэтому самое время подумать о том, как мы собираемся открывать веб-сайты. В UNIX существует огромное количество всевозможных браузеров, начиная от минималистичных текстовых и заканчивая огромными тяжелыми комбайнами с множеством зависимостей. Однако среди них есть только один браузер, идеально вписывающийся в наше графическое окружение. Браузер uzbl (от английского слова usable — удобный) появился как идея создать веб-обозреватель, неуклонно следуя традициям UNIX, поэтому то, что получилось в результате, выглядит очень непохожим на все остальные браузеры. Во-первых, uzbl состоит из нескольких независимых программ, каждая из которых выполняет только одну функцию: uzbl-core отвечает за загрузку и рендеринг страниц (в его недрах движок WebKit), uzbl-cookie-daemon сохраняет и отдает cookie, uzbl-browser создает графический интерфейс, uzbl-tabbed добавляет к интерфейсу табы. Все остальные компоненты реализованы в виде подключаемых скриптов. Интерфейс браузера очень скромный и кроме статус-бара не содержит ни кнопок, ни адресной строки.
Все управление происходит либо через минимальное меню, доступное по нажатию правой кнопки мыши, либо с помощью специальной системы команд и закрепленных за ними быстрых клавиш. Во многом команды и быстрые клавиши похожи на свои аналоги в редакторе Vim, поэтому те, кто предпочитают этот текстовый редактор, быстро освоятся в uzbl.
Для остальных поясню: большинство действий в uzbl совершается с помощью одинарных нажатий на клавишу. Например, клавиша <r> перезагружает страницу, а <o> — открывает новую. Они существенно удобнее стандартных клавиатурных комбинаций с задействованием клавиши <Ctrl>, но накладывают свой отпечаток на стиль работы с браузером: каждый раз, когда придется использовать формы веб-страницы для ввода каких-либо данных, придется нажимать клавишу <i>, которая переведет браузер в так называемый «режим ввода», при этом все горячие клавиши отключаются, и клавиатура начинает работать в обычном режиме. Выход из режима ввода осуществляется нажатием <Esc>.
Браузер имеет довольно большое количество команд, поэтому их придется заучить. Наиболее используемые команды относятся к навигации и работе с текущей страницей:
uzbl: навигация по странице
- h j k l — перемещение страницы (влево, вниз, вверх, вправо)
- << — перейти к концу страницы
- >> — перейти к началу страницы
- + — изменение масштаба
- 1 2 — изменение масштаба между стандартным и большим
- / ? — поиск (вперед, назад)
- n N — переход между результатами поиска (вперед, назад)
- S — остановить загрузку страницы
- r — перезагрузить страницу
На втором месте находятся команды, предназначенные для навигации по сайтам:
uzbl: навигация по сайтам
- o — открыть новую страницу (после нажатия необходимо ввести URL)
- O — открыть новую страницу, отредактировав адрес текущей
- p — перейти на страницу, адрес которой находится в буфере обмена
- gg — ввести поисковый запрос google
- b — перейти к предыдущей странице
- n — перейти к следующей странице
Особое место занимают команды для перехода между табами (они работают только в uzbl-tabbed):
uzbl: переход между табами
- gn — создать новую вкладку
- go — создать новую вкладку и ввести адрес сайта
- gC — закрыть текущую вкладку
- g< — перейти к первой вкладке
- g> — перейти к последней вкладке
- gt — к следующей вкладке
- gT — к предыдущей вкладке
- gi — к указанной вкладке
Кроме всего перечисленного, uzbl имеет довольно интересную систему закладок, навигация по которой осуществляется с помощью меток. Ты просто нажимаешь <Ctrl+b>, вводишь метку, и текущая страница сохраняется в закладках. Вновь открыть ее можно, нажав <u>, введя имя метки и выбрав страницу с помощью клавиши <Tab> (эта функциональность реализована с помощью dmenu, который содержится в пакете suckless-tools). Клавиша <U> позволяет таким же образом загрузить страницу из истории. Для выхода из браузера используется двойное нажатие клавиши <Z>.
Настройки браузера хранятся в файле .config/uzbl/config, исправленный вариант которого есть на диске (кстати, я убрал все настройки, связанные с табами, так как awesome сам предоставляет такую функциональность). Он прост в понимании и достаточно хорошо документирован, поэтому разобраться будет нетрудно.
Что дальше?
Теперь у нас есть базовое окружение рабочего стола, который, тем не менее, еще нельзя использовать каждодневно. Для нормального существования понадобится ворох приложений. Опытным путем было выяснено, что с рабочим столом лучше всего сочетается следующее ПО:
- rox-filer — минималистичный, но очень удобный графический файловый менеджер (в качестве альтернативы можно использовать чуть более тяжелый Thunar из XFCE);
- (g)vim — редактор-легенда, выбор всех гиков (да, есть еще emacs);
- abiword — редактор офисных документов (хотя можно использовать docs.google.com);
- zathura — минималистичный ридер PDF-документов с управлением в стиле vim (в качестве более простой в понимании альтернативы можно задействовать evince);
- mplayer — видеопроигрыватель, не имеет графического интерфейса, поэтому очень удобен (к тому же показывает все, что только подсунут);
- audacious2 — аудиоплеер с простым и удобным интерфейсом (в моем конфиге awesome уже есть настройка для него, поэтому будет открываться в небольшом окне посередине экрана);
- mutt — невероятно удобный консольный mail-клиент (требует много времени для привыкания и конфигурирования, поэтому может быть заменен на gmail);
- mcabber — лучший консольный jabber-клиент (как вариант, можно использовать более дружелюбный tkabber);
- feh — минималистичный и очень быстрый просмотрщик изображений;
- scrot — консольная утилита для снятия скриншотов;
- burn — простая и очень удобная резалка дисков, работающая в режиме командной строки (в качестве легкой графической альтернативы сгодится xfburn из XFCE).
Info
- Предложенный в статье интерфейс как нельзя лучше подходит для нетбуков, на экранах которых многооконный (да еще и управляемый мизерным тачпадом) интерфейс выглядит несколько странно.
- Особенно удобным браузер uzbl становится после активации механизма подписи ссылок, который доступен по команде fl (fl* — отключить). После его включения напротив каждой ссылки появляется число, введя которое, ты попадешь на адресуемую ссылкой страницу.
- Браузер uzbl можно безгранично расширять с помощью скриптов, большое количество которых можно найти на страничке www.uzbl.org/wiki/scripts.
- В любой момент тему GTK-приложений можно поменять с помощью программы gtkthemeswitch (дополнительные темы находятся в пакетах gtk2-engines-*).
Links
- awesome.naquadah.org/wiki/User_Contributed_Widgets — виджеты для awesome;
- awesome.naquadah.org/wiki/Beautiful_themes — темы для awesome.