понедельник, 4 апреля 2011 г.

Выживание в «бездесктопной» среде. Часть II

Есть ли жизнь на Марсе или Особенности выживания в «бездесктопной» среде Linux.

Часть II.
   Итак, продолжим обживать нашу неприветливую систему. Пока что у нас есть только Compiz и командная строка. Пожалуй стоит обзавестись приличным терминалом, чтобы сразу облегчить дальнейшие работы. Я попробовала несколько вариантов и остановила свой выбор на Tilda. А почему именно на нем я описала в отдельной заметке, посвященной этому эмулятору терминала. Ставится легко и просто по команде:
sudo aptitude install tilda
зависимостей почти нет, много за собой не тянет.
У Tilda есть своя горячая клавиша для вызова, по умолчанию F1, так что дополнительно ничего назначать не требуется.
   Теперь стоит немного настроить Компиз. Если кто еще не в курсе, то его конфигуратор вызывается командой:
ccsm

Подробно я не буду останавливаться на настройках, всем настройкам этого оконного менеджера будет посвящена отдельная большая статья. Пока всего лишь настроим удобные для нас способы переключения рабочих столов и окон. Выбор рабочих столов нам могут обеспечить следующие плагины: "Экспо (Expo)"; "Куб рабочего стола (Desktop Cube)"; "Стена рабочего стола (Desktop wall)". Выбирайте что больше нравится. Помимо горячих клавиш, удобно использовать также активные края экрана. Например у меня Expo вызывается, когда мышка тыкается в верхний левый угол.
   Для управления окнами имеем на выбор: "Shift Switcher"; "Ring Switcher"; "Переключатель приложений (Application Switcher)"; "Static Application Switcher". Опять же выбор есть, на первое время предостаточный.
Еще может быть весьма полезен плагин "Масштабировать (Scale)", в разделе "Управление окнами". Его можно повесить на активный угол экрана и видеть все открытые окна одним движением мышки, а также выбирать любое окно.

   Пришло время добавить немного красок и включить обои рабочего стола, а то черный десктоп немного вгоняет в тоску. Снова воспользуемся любимым Компизом и найдем в разделе "Утилиты (Utility)" плагин "Обои рабочего стола (Wallpaper)". Тут все просто до безобразия - добавляем картинки, которые мы хотим видеть в качестве обоев. В качестве бонуса получаем по отдельной обоине на каждый десктоп. Если обои сразу не применятся, поможет релогин.

   Ну вот, стало уже повеселее ;) Идем дальше. В жизни всякое бывает, поэтому может возникнуть такая ситуация, что просто кровь из носа понадобится трей (ну мало ли, к каким-то настройкам той или иной программы можно подлезть только из значка в трее). Но трея у нас нет и нам не хочется, чтобы он занимал полезное место на экране. Что же, нам снова придет на выручку Компиз =) Для начала ставим крохотный пакетик под названием trayer:
sudo aptitude install trayer

   Как вы наверное уже догадались - это и есть наш трей. При запуске он просто покажет на экране ничем не впечатляющую полосу во всю ширину экрана. Хотя у него есть определенные настройки и его можно расположить в любом месте, а так же задать размер. Кому интересно, может почитать ман. Мне это было не нужно, так как я собираюсь им пользоваться в исключительных случаях. Теперь как сделать так, чтобы он не маячил постоянно перед глазами, а появлялся только тогда, когда он нам понадобится. Идем в настройки Компиза и ищем в разделе "Рабочий стол (Desktop)" замечательный плагин под названием "Слой виджетов (Widget layer)". Что он делает? Он создает отдельный слой, который вызывается по горячей клавише и становится видимым. На нем можно разместить любые окна. Фишечка в том, что пока этот слой не вызван, то он не виден и ни на что не реагирует. А следовательно не видно ничего, что на нем находится. Вот так мы и будем прятать трей большую часть времени, когда он не нужен. Включаем этот плагин и заходим в настройки. Выбираем способ которым будем вызывать слой виджетов и идем в закладку "Поведение (Behaviour)". Здесь нас интересует первый пункт - Widget Windows. Пишем в строке: class=trayer и наш трей загадочным образом исчезает. Теперь он появится только при нажатии горячей клавиши, которую мы задали на предыдущей вкладке. Я не буду рассматривать остальные опции этого плагина, подробно я сделаю это в статье, посвященной компизу. Скажу только, что можно снять галочку с опции "Выйти из режима виджетов при щелчке (End Widget Mode on Click)". Тогда слой виджетов не будет скрываться при щелчке мышью по любому окну, а будет убираться только по нажатию той же клавиши, которая его вызывает. Но это кому как нравится.

   Вот мы и получили первую скрытую возможность :) Но на этом мы не остановимся. Чем еще нас может удивить, например, Gnome? Менюшкой со списком приложений. На данном этапе мне вполне хватает командной строки (помните замечательный gmrun из первой части?), вызываемой по нажатии горячих клавиш. Если привыкнуть (сначала отвыкнув от прошлых привычек), то запуск любого приложения займет секунду-две. Эта командная строка, как и терминал, прекрасно дополняет набираемые команды по клавише Tab, так что достаточно ввести первые буквы. А еще имеет память на введенные ранее команды, которые можно перебирать курсорными стрелками "вверх/вниз". В общем как в обычном терминале.
   Ну и конечно же панель, на которой можно разместить кучу полезной инфы и прочих апплетов. Тут каждому может потребоваться свой набор. Перечислю некоторые немаловажные, на мой взгляд: дата-время (мы же не пещерные люди), температурные датчики, скорость инет-соединения, загрузка процессора, памяти и т.д. Мы договорились, что панелей, занимающих полезное пространство у нас не будет. А для решения поставленной задачи воспользуемся замечательной и всем известной штукой под названием Conky. Информационная панелька, которую можно сконфигурировать ну просто как душа пожелает и разместить где угодно и как угодно. При этом она не будет блокировать раскрытие окон на весь экран и позволит спокойно разместить окна поверх себя. Ставим:
sudo aptitude install conky

Описывать настройку Conky, а так же возможности, которые она предоставляет не имеет смысла в рамках данной статьи. В инете полно информации по этому вопросу, а также готовых конфигов. Покажу лишь то, что у меня получилось. Кликаем на картинки, не стесняемся :)

А на картинке ниже та же панелька, только перекрытая сверху окном браузера. Благодаря Emerald'у настроена достаточная прозрачность, чтобы панель была видна сквозь заголовок окна (то есть практически всегда видна), не занимая при этом места. Но это опять же дело вкуса каждого.

   Разумеется, нам нужен какой-нибудь приличный файловый менеджер, который бы не тянул за собой много зависимостей, был шустрым и не сильно тяжелым. У нас, конечно, уже есть Midnight Commander, но он скорее для оперативных задач государственной важности на уровне root'a. В повседневной жизни воспользуемся чем-нибудь более графическим. Сразу выкинем из числа претендентов все зависимые от окружения какого-либо рабочего стола, и все равно выбор есть. Я не хочу заводить еще один двухпанельный файловый менеджер по-типу Total Commander'a (и зачем вспомнила именно виндовую прогу?). Мне, пожалуй, подойдет Thunar:
sudo aptitude install thunar

   Из минусов у него есть один неприятный косяк с невозможностью регулирования ширины боковой панельки в режиме "Закладки" до определенного минимального значения. Но в принципе решение давно найдено и оно не такое сложное. Правда придется собрать его из исходников, предварительно чуть-чуть подправив.
Но на его месте мог бы вполне оказаться и PCmanFM - маленький и ненаглый по зависимостям, с похожим функционалом.

   Что еще нам может понадобиться для комфортной работы? Ну, мне например, нужны были скриншоты для этой статьи ;) А их мы пока делать тоже не умеем без сильных извращений. Этим сейчас и займемся. А поможет нам в этом маленькая утилитка scrot:
sudo aptitude install scrot

Мы хотим, чтобы скриншоты делались по стандартной кнопке Print Screen и сохранялись в указанное место. И снова Компиз ;) Запускаем конфигуратор, идем в раздел "Общие (General)", а дальше в зависимости от версии компиза либо в "Общие настройки (General settings)" -> закладка "Команды (Commands)" -> пункт "Команды снятия скриншотов (Screenshots commands)", либо в плагин "Совместимость с Gnome (Gnome compatibility) -> закладка "Команды (Commands)" и пишем в Командной строке снимка экрана следующее:
scrot '%m.%d_%H.%M.%S.png' -e 'mv $f ~/Desktop/'

Поясню, что сие означает. '%m.%d_%H.%M.%S.png' - здесь мы задали формат имени, который будет присваиваться скриншотам. 'mv $f ~/Desktop/' - здесь указали папку, куда их надо складывать. Выглядеть данный формат будет как: месяц.день_часы.минуты.секунды.png (03.04_03.33.14.png). Желающие могут почитать мануал по программке scrot и изменить формат команды по своему вкусу.
Ну и вешаем все это дело на горячую кнопку там же. Теперь будем получать скриншоты легко и просто.

   Теперь, пожалуй, стоит коснуться мультимедийных клавиш. Хочется, чтобы они тоже работали :) Не будем изобретать велосипед и воспользуемся утилиткой xbindkeys:
sudo aptitude install xbindkeys

Запускаем, открываем конфиг-файл в своем домашнем каталоге .xbindkeysrc своим любимым текстовым редактором. У кого любимого нет, может воспользоваться nano:
nano ~/.xbindkeysrc

Видим там различные примеры, которые желательно изучить (там может быть и то, что вам не нужно). Теперь определяем коды нужных нам клавиш. Сделать это можно или с помощью команды:
xev

После запуска жмем нужные клавиши и смотрим вывод программы. Нам нужны цифры после слова keycode - это и есть коды клавиш.
Или же можно воспользоваться самой xbindkeys:
xbindkeys -mk

действует аналогично xev, а выдает уже готовые к употреблению коды.
Если и это не подходит и выглядит слишком сложно, то ставим еще пакетик xbindkeys-config и конфигурируем все через него:
sudo aptitude install xbindkeys-config
xbindkeys-config

   Итак, коды клавиш мы определили, теперь вписываем их в конфигурационный файл, открытый ранее. Покажу пару примеров регулировки громкости (коды, естественно, замените на свои):
#VolumeUp
"amixer -q sset Master 2+"
   m:0x0 + c:176
#VolumeDown
"amixer -q sset Master 2-"
   m:0x0 + c:174

Сначала идет команда, потом коды клавиш. У меня сочетание двух клавиш (на ноутбуке мультимедиа клавиши работают с клавишей Fn). Буква m - как раз и означает клавишу-модификатор, им может быть и Shift и Ctrl и Alt. Буква с - означает то, что код принадлежит клавише клавиатуры (мышиные кнопки обозначаются буквой b). Приведенные команды лишь пример, для вашего микшера они могут отличаться. Читайте маны и тренируйтесь в терминале ;)
Точно таким же образом вешаем любые команды на остальные мультимедийные (и вообще любые) клавиши.

   Следующая, как я считаю, удобная фича - запоминание раскладки клавиатуры для каждого отдельного окна. Как говорят, это умеет утилитка xxkb. Но мне не удалось заставить ее нормально работать, она глючила и халтурила. Поэтому я воспользовалась пакетом xneur:
sudo aptitude install xneur

Это что-то вроде виндового Punto Switcher'a - переключает за вас раскладку, когда вы забываете. Но и плюс умеет делать еще некоторые полезные и не очень вещи, в том числе запоминать раскладку для каждого окна. Что мне собственно и надо. Автоматическую переключалку я не перевариваю, поэтому поотключала в конфиге все подобные функции. А те, кому лень разбираться с конфиг-файлом, могут дополнительно поставить пакет gxneur и получить в трее, который у нас надежно спрятан, иконку, через которую тоже можно все настроить с помощью графического интерфейса.

   На этом я закончу вторую часть, мы уже сделали много полезностей и удобств, но это еще не конец ;) Напоследок сделаем еще одно удобство - добавим в автозагрузку нужные нам утилиты. Я подозреваю, что способ не самый удачный и правильный, но лучшего я пока не нашла. Добавим мы в автозагрузку xbindkeys, conky, xneur и tilda. Редактируем скрипт с которого грузится наша сессия вместе с Компизом:
sudo nano /usr/bin/autostart.sh

и добавляем в него команды выделенные жирным шрифтом:

#!/bin/sh
cd /home/ваша учетная запись
#
eval `dbus-launch --sh-syntax --exit-with-session`
#
/usr/bin/X :0.0 -br -audit 0 -nolisten tcp vt7 &
#
export DISPLAY=:0.0
#
sleep 1
#
compiz-manager decoration move resize > /tmp/compiz.log 2>&1 &
# add more apps here
conky &
xbindkeys &

fusion-icon &
sleep 10
tilda &
sleep 2
xneur


   Обратите внимание на знак амперсанда &, добавленный команде fusion-icon. И то, что его нет у последней команды xneur. Его наличие означает, что скрипт не ждет, пока будет завершена только что запущенная команда, а переходит к следующей. Если его добавить последней команде в нашем скрипте, то скрипт завершится после ее запуска и нас сразу выкинет в окно логина. Кстати, тоже самое произойдет, если мы попытаемся завершить процесс xneur - наш сеанс завершится =) Криво конечно, не совсем правильно. Но я поставила последней эту команду, потому что точно не собираюсь ее завершать, а значит и нет риска вывалиться из сеанса. Можно было бы оставить последней команду fusion-icon, как и до этого, а все остальное добавить перед ней, но почему я этого не сделала и зачем нужен такой sleep перед Тильдой. Во-первых, в Тильде у меня включена прозрачность и если она загрузится раньше Компиза, то мы получим черный фон, вместо прозрачного. А во-вторых, xneur у меня почему-то иногда отказывался запоминать раскладку окон, если шел в начале списка. Я не сильна в написании скриптов, поэтому решила проблему автозапуска через такие вот костыли :)

На этом пока все, продолжение следует.

Комментариев нет:

Отправить комментарий