Комфортное рабочее окружение на примере awesome wm (взгляд изнутри)

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

Почему тайлинг?


Тайлинг — очень удобный способ управления рабочим пространством. Основными достоинствами являются:

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

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

Из множества существующих тайловых оконных менеджеров я остановился на awesome wm, как наиболее оптимальном для меня варианте. Однако настроить исключительно внешний вид — это всего лишь полдела. Стоит отметить, что awesome это всего лишь оконный менеджер, и если его не использовать в качестве оконного менеджера в kde/gnome/etc, то рабочее окружение придется настраивать самостоятельно. Однако овчинка стоит выделки.

Настройка awesome.


Несмотря на то что разработчики awesome wm, между прочим ребята с впечатляющим чувством юмора, заявляют, что людям не разбирающимся в lua никак не настроить их творение, это все же не так. Достаточно немного знать любой язык.
Первым делом стоит создать свою конфигурацию (скопировать вариант по умолчанию /etc/xdg/awesome/rc.lua в домашнюю папку ~/.config/awesome). Так же рекомендую скопировать туда же тему для awesome, которая будет использоваться. Особенно, если это одна из стандартных тем, так как при обновлении любые изменения в ней просто затрутся.
Совет. У awesome есть неприятная особенность, если конфиг некорректный, то wm просто не запускается и вы остаетесь один на один с голой консолью. Приходится заново открывать конфиг файл, искать проблемное место. Гораздо удобнее загнать vim в tmux и в случае неудачи подключиться к сессии и внести исправления.
В файлах самое темы стоит менять, только цвета и шрифт. Поскольку мне комфортнее работать с темным фоном и светлыми буквами (заметьте, не черный/белый, а коричневый/серый, т.к. сильный контраст очень портит все). Я не хочу останавливаться на тривиальных вещах в настройке (таких как прописывание темы и др.), я просто приложу конфиг файл и themes.lua. Гораздо интереснее рассказать о том, что обычно не упоминается в мануалах по настройке.
По умолчанию в конфиге закомментированы 2 очень полезные опции:
c.size_hints_honor = false
awful.client.setslave©первая убирает отступы между окнами (они очень раздражают при работе), вторая ставит все вновь открывающиеся окна в слейв режим, а не делает их главными.

Настройка терминала:


Я много работаю в консоли, поэтому она должна предоставлять все возможное рабочее пространство мне, никаких заголовков (ну об этом заботится и сам awesome), никаких скроллов (благо у нас есть shift+PgUP/PgDn), никаких вкладок (зачем, если есть tmux), комфортный шрифт и прозрачность, ну и работа с utf. Идеально отвечает требованиям «rxvt -tr -sh 30 -fn terminus-iso8859-*-14 +sb -fg white -bg black -cr green».
Но часто бывает нужно запустить задачу и уйти, а потом удаленно получить к ней доступ. Конечно, если задача была запущена в tmux (ну или screen, но мне больше по душе tmux), то нет никаких проблем. Но его же нужно не забыть запустить. А это целая проблема. Я решил ее так: запуск терминала в конфиге выглядит так:
terminal = «rxvt -tr -sh 30 -fn terminus-iso8859-*-14 +sb -fg grey -bg black -cr green -e tmux»
А чтобы не извращаться с запуском простого терминала без tmux'a я повесил его на соседний хоткей:
awful.key({ modkey, }, "]", function () awful.util.spawn(«rxvt -tr -sh 30 -fn terminus-iso8859-*-14 +sb -fg grey -bg black -cr green») end),
в итоге любая задача у меня будет запущена в tmux'e, и я ни коим образом не завишу от x-server'a.
Убираем автоотключение экрана. Я не люблю, когда все лочится само по себе. Вообще это можно сделать и в конфигах иксов, но мне удобнее реализовать это в rc.lua:
os.execute(«xset s off &»)
Если развита паранойя, то можно повесить лок экрана на хоткей (пакет xlockmore в debian).

Немного о стандартных хоткеях.


Управление окнами и рабочими столами:
Переключаться между ними можно двумя способами: win-клавиша + струлка вправо/влево, либо win-клавиша + номер рабочего стола.
Однако все не было бы настолько удобно, если бы нельзя было вернуться на предыдущий рабочий стол по win-клавиша + Esc.
Так же можно объединять рабочие столы по win+ctrl+номер рабочего стола.
Это конечно написано в дефолтном конфиге, но как то никто на это не обращает внимания.
Перекидывать окна с одного рабочего стола можно по win+shift+номер стола, перемещение между окнами по win+j/k.
Изменения соотношения размеров win+h/l. Однако данное соотношение можно задать и заранее в конфиг файле:
awful.tag.setproperty(tags[s][3], «mwfact», 0.17)
Возможно даже отображение одного и того же окна одновременно на нескольких рабочих столах.
Очень удобно добавить хоткеи для снимания скриншотов и автоматической заливки на хостинг. У меня для этого написан специальный баш-скрипт, который и висит на хоткее.

Виджеты


С виджетами все просто. То что вам нужно уже скорее всего есть в vicious. Единственный минус — ужасная документация, точнее практически полное ее отсутствие. Но разобраться вполне можно. Пример использования виджета с состоянием оперативки в rc.lua:
memwidget = widget({ type = 'textbox' })
vicious.enable_caching(vicious.widgets.mem)
vicious.register(memwidget, vicious.widgets.mem, '$1% ($2MB/$3MB)', 13)
А стандартный виджет с почтой стоит немного доработать, чтобы при наличии новой почты цвет текста менялся на красный.
Вопрос о браузере для подобного окружения особо не стоит. Vimperator однозначно. Для слабых машин может подойти midorator ( Vimperator для Midori ).

Пара скриншотов (картинки кликабельны):


0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.