Содержание статьи
- Логинимся в иксы автоматически
- Рулим WM из командной строки и скриптов
- Делаем менеджер окон эффективнее
- Запускаем приложения быстро и непринужденно
- Создаем графические уведомления и диалоги из консоли
- Переключаем раскладку клавиатуры автоматически
- Настраиваем универсальные горячие клавиши
- Активируем мультимедийные клавиши
- Выжимаем из мыши все
- Выводы
- Info
В этой статье я расскажу о нескольких способах сделать свою жизнь в иксах проще и эффективнее. Описанные методы почти не связаны между собой, поэтому их можно применять независимо друг от друга.
Логинимся в иксы автоматически
Линуксоиды любят пароли. Очень любят. Вот только большинство из них почему-то забывают, что на домашней машине или ноутбуке пароль не имеет никакого значения. Перезагрузить машину и затем выбрать пункт меню, содержащий фразу «fail safe», в загрузчике Grub сможет даже твоя бабушка или пятилетний брат. Поэтому, настроив автологин, ты не сделаешь машину менее безопасной, зато навсегда освободишь себя от необходимости ввода этого длинного запутанного пароля. В средах KDE и Gnome автологин можно настроить с помощью специальных графических конфигураторов, которыми просто и легко пользоваться. Но у такого способа есть один существенный недостаток: менеджер входа в систему (в KDE он зовется kdm, а в Gnome — gdm) запускается в любом случае, а это дополнительные тормоза (kdm и gdm действительно довольно толстые программы, которые стартуют отнюдь не мгновенно).
Однако можно отказаться от менеджера логина совсем. Один из лучших методов решения этой задачи описан в ArchLinux Wiki (wiki.archlinux.org). Заключается он в том, чтобы на последнем этапе загрузки сразу запускать иксы с правами нужного пользователя. Для этого надо всего лишь добавить в конец файла /etc/inittab следующую строку:
x:5:once:/bin/su имя_юзера -l -c "/bin/bash
--login -c startx >/dev/null 2>/dev/null"
А также убедиться в том, что по умолчанию система грузится до пятого уровня (в начале того же файла должна быть примерно такая строка: «id:5:initdefault:»). При этом команды, необходимые для запуска графической среды, нужно поместить в файл ~/.xinitrc. Например, если ты используешь KDE, то файл должен содержать строку «exec startkde», Gnome — «exec gnome-session», Fluxbox — «exec fluxbox» и так далее.
Особая красота этого метода заключается в том, что аккаунт пользователя остается в безопасности, поскольку мы не меняли ничего в его настройках и не обнулили пароль.
Рулим WM из командной строки и скриптов
Существует очень полезный стандарт, который описывает способ взаимодействия между менеджером окон и всем остальным миром в виде утилит, демонов и прочих сервисов. Называется он EWMH (Extended Window Manager Hints), а его польза заключается в том, что он, во-первых, делает менеджеры окон универсальными (например, если ты соберешься заменить WM в своем Gnome на что-то более интересное, чем Metacity, то Gnome даже не заметит подмены и будет продолжать исправно функционировать), а во-вторых, определяет способ управления любым EWMH-совместимым WM извне, без каких-либо дополнительных костылей.
Естественно, для управления нужна какая-то программа, которая будет выступать в роли клиентской стороны в процессе обмена EWMH-совместимыми сообщениями с WM. Одна из таких программ называется wmctrl, и она умеет вертеть менеджером окон как угодно, делая с ним практически все, что можно сделать напрямую, используя мышь и клавиатуру. Но самое важное, что wmctrl — утилита командной строки, поэтому ее можно легко запихнуть в скрипт, который будет выполнять сложные манипуляции.
Пример первый. Допустим, что каждый твой день начинается с включения компа, запуска нескольких приложений и включения музыки. Вручную все это запускать уже надоело, а менеджер окон делает это как-то неумело (либо вообще не делает). К тому же было бы удобнее иметь универсальное решение, не зависящее от конкретного WM, да еще и способное располагать окна на нужных рабочих столах и в нужных местах экрана. Нет проблем, просто устанавливаем wmctrl и пишем простой скрипт:
# vi ~/bin/wm-startup.sh
#!/bin/sh
Запускаем нужные приложения
chromium &
audacious &
xterm -c mcabber &
Ждем пять секунд, чтобы все это успело появиться на экране
sleep 5
Отправляем chromium на второй рабочий стол и растягиваем на весь экран
wmctrl -r chromium -t 2
wmctrl -r chromium -b add,fullscreen
Сворачиваем audacious, чтобы не мешал
wmctrl -r audacius -b add,shaded
Отправляем xterm с открытым mcabber на второй рабочий стол, задаем ему нужный размер и располагаем в левой верхней части экрана (50,50)
wmctrl -r mcabber -t 2
wmctrl -r mcabber -e ‘0,50,50,600,300’
Делаем окно chromium активным, выводим его на передний план и переключаемся на его рабочий стол
wmctrl -a chromium
Обрати внимание, что для управления mcabber я использовал его имя, несмотря на то, что mcabber не является графическим приложением, а значит, по логике, не может быть адресован с помощью wmctrl.
Но эта команда работает, поскольку, во-первых, wmctrl позволяет указывать только часть имени окна при его адресации, а во-вторых, xterm меняет имя своего окна, указывая в нем имя запущенного в данный момент приложения.
Пример второй. У всех нас есть набор приложений, которые всегда должны быть под рукой, но большую часть времени не нужны. Это, например, программа для ведения заметок, IM-клиент, терминал — обычно они висят в фоне/трее и ждут своего часа. Однако каждый раз использовать мышь, чтобы нажать на значок, который выводит программу из трея, либо разворачивает ее из таскбара, довольно утомительно. Лучше доверить работу wmctrl:
$ wmctrl -r mcabber -b toggle,hidden
Это все. Команда выводит окно на передний план, если оно свернуто, и прячет, если окно находится на экране. Достаточно поместить ее в скрипт, повесить на хоткей, и проблема решена (ты, наверное, догадался, что таким образом можно реализовать аналог yakuake или tilde, придется только изменить название терминала, чтобы wmctrl всегда безошибочно его находил). Подобные скрипты можно использовать не только для запуска нужных программ после старта ОС, но и для многих других задач, например, переключения между «режимами работы»: один скрипт активирует набор приложений для отдыха (браузер, медиаплеер), другой — для работы (среда разработки, браузер с открытой документацией). Их можно повесить на хоткеи и забыть про ручную раскладку окон раз и навсегда.
Делаем менеджер окон эффективнее
В кругах UNIX-джедаев часто можно слышать разговоры о так называемых тайловых менеджерах окон. Достоинство таких WM в том, что они никогда не накладывают окна друг на друга, размещая их таким образом, чтобы приложения делили между собой весь экран, а незанятых областей экрана не оставалось (скриншот хорошо демонстрирует эту концепцию).
Такой способ расположения окон оказывается очень полезным на широкоформатных мониторах, большая часть пространства которых обычно оказывается пустующей. Но где достоинства, там и недостатки: к тайловым WM очень трудно привыкнуть, к тому же в основном графический софт просто не рассчитан на применение в такой конфигурации. Поэтому был придуман инструмент под названием pytyle (pytyle.com), который надстраивается над существующим WM, добавляя ему функцию тайловой раскладки окон. При этом вся функциональность оригинального WM сохраняется, а тайлинг активируется и деактивируется с помощью клавиатурных комбинаций.
Инструмент этот довольно популярен, но отсутствует в репозиториях большинства дистрибутивов. Поэтому придется устанавливать вручную:
$ sudo apt-get install python-xlib
$ wget http://goo.gl/V6rWY
$ tar -xzf pytyle-0.7.5.tar.gz
$ cd pytyle-0.7.5
$ sudo python setup.py install
Запуск стандартен:
$ pytyle
Рекомендую сразу поместить эту команду в автозагрузку, потому как по умолчанию pytyle никак себя не выдает и не меняет поведения WM, а вот пригодиться он может в любую минуту.
Сам тайлинг активируется после нажатия комбинации <Alt+A>, для деактивации предназначена комбинация <Alt+U>. Комбинация <Alt+Z> переключает между режимами тайлинга (то есть вариантами раскладки окон). Что-то еще говорить здесь не имеет смысла, с тайлингом нужно знакомиться лично, только тогда его смысл станет понятным. Приведу лишь остальные возможные клавиатурные комбинации:
- Alt+J / Alt+K — переключиться между окнами;
- Alt+H / Alt+L — изменить размер окон;
- Alt+Shift+C — закрыть окно;
- Alt+M — перевести фокус на основное окно;
- Alt+C — сделать следующее окно основным;
- Alt+Shift+D / Alt+Shift+B — включить или выключить декорацию окна и бордюров.
В своей работе pytyle использует все тот же EWMH, поэтому он совместим с любым более-менее современным WM (список EWMH-совместимых WM можно увидеть, например, в Википедии: en.wikipedia.org/wiki/EWMH).
Запускаем приложения быстро и непринужденно
Знаешь, что делает работу в Mac OS X по-настоящему удобной? Если ты думаешь, что это качество ПО, сбалансированный графический интерфейс, скорость работы или еще что-то в этом роде, то я тебя разочарую: самое удобное, что есть в макосях — это Launcher, программа для запуска приложений, рудиментарный аналог которой можно найти почти в любой графической среде, если нажать <Alt+F2>.
Преимущество яблочного лончера в том, что помимо тупого запуска программ он выполняет огромное количество других функций: поиск файлов, сайтов, истории браузера, управление другими программами, сложение, умножение, деление и многое другое. Вся суть в том, что все это доступно через единое окно ввода.
Аналог (и очень хороший аналог) Mac OS X Launcher есть в KDE4. Он доступен через стандартную комбинацию <Alt+F2>, хорошо выглядит, быстро работает и имеет кучу плагинов.
К сожалению, в других средах все далеко не так радужно. Например, в Gnome и XFCE чего-то подобного нет до сих пор, а стандартная запускалка, доступная по <Alt+F2>, наводит грусть и печаль. Приходится искать сторонние программы. И они есть, это Gnome Do (do.davebsd.com) и Launchy (launchy.net). Обе хорошо развиты и имеют потенциал. Единственное, что портит общее впечатление, это требование mono для Gnome Do и QT для Launchy (который, к тому же, в Linux работает нестабильно).
Создаем графические уведомления и диалоги из консоли
Привыкнув решать рутинные задачи с помощью скриптов, рано или поздно сталкиваешься с проблемой их интеграции в графическое окружение. Те, кто пишет на python, ruby и других языках, легко решают эту задачу с помощью графических библиотек, но что делать, если твой выбор — bash?
Понятно, что полноценно вписать bash в графическую среду не получится просто по причине его технических ограничений. Зато всегда можно воспользоваться специальными утилитами командной строки, которые генерируют простые графические интерфейсы на основе опций командной строки.
Одна из таких утилит называется zenity (live.gnome.org/Zenity). Это потомок довольно популярной утилиты gdialog, которая, в свою очередь, представляет собой графическую версию dialog (на которой построены многие псевдографические утилиты и, например, интерфейс инсталлятора Slackware Linux).
Утилиту чрезвычайно просто использовать, достаточно вызвать ее с нужными параметрами, и на экране появится графическое окно. Например, следующая команда отобразит на экране окно с текстом «Hello World!»:
$ zenity --info --text "Hello World!"
Также можно изобразить поля ввода ('--entry'), сообщения об ошибке ('--error'), списки ('--list'), прогресс-бары ('--progress'), календарь ('--calendar') и многое другое. При этом информация о действиях пользователя (какая клавиша нажата, какой элемент списка выбран и так далее) с окном возвращается в стандартный вывод, что позволяет строить довольно сложные интерфейсы.
Если функциональность Zenity кажется тебе излишней для простого скрипта, который должен всего лишь вернуть на экран свои данные, самое время взглянуть на команду notify-send.
Единственная задача этой команды — вывести на экран информационное сообщение и убрать его спустя определенный промежуток времени. Для вывода используется интерфейс libnotify, так что сообщение будет выглядеть родным в любом менеджере окон и графической среде с поддержкой этой библиотеки (а это все наиболее популярные WM и DE).
Пользоваться командой очень просто:
$ sudo apt-get install libnotify-bin
$ notify-send "Apache перезапущен!"
Для разнообразия можно добавить иконку и указать важность сообщения:
$ notify-send -i gtk-dialog-info -u critical
"Файловая система заполнена на 99%!"
Переключаем раскладку клавиатуры автоматически
Одно из самых известных приложений для Windows называется Punto Switcher. Его задача заключается в том, чтобы автоматически переключать раскладки клавиатуры, основываясь на эвристических методах анализа введенной пользователем строки. В Linux (да и в любом *nix) аналог этой программы называется xneur (X Neural Switcher) и, в отличие от своего брата из Windows, распространяется бесплатно, да еще и с исходниками.
Демон xneur может существенно сэкономить твое время и нервы, но чтобы он не стал помехой, нужно уметь его готовить, а точнее — правильно настраивать.
Основная проблема, с которой сталкиваются почти все новые пользователи xneur, это вездесущность программы. По умолчанию действие xneur распространяется на всю систему, хотя в Linux, со всеми его эмуляторами терминалов, запускалками приложений и прочими двухрежимными vim’ами было бы гораздо правильнее применять возможности xneur только к избранным приложениям (тем более, что с некоторыми из них он работает некорректно).
Чтобы научить этому xneur, достаточно создать локальную копию его конфигурационного файла:
$ cp /usr/etc/xneur/xneurrc ~/.xneur/xneurrc
И отредактировать его следующим образом:
$ vi ~/.xneur/xneurrc
Включаем обычный режим работы
ManualMode Yes
Приложения, в которых xneur должен работать
в автоматическом режиме
SetAutoApp Pidgin
SetAutoApp Psi
SetAutoApp Gedit
SetAutoApp Chromium
Приложения, несовместимые с xneur
ExcludeApp Focuswriter
ExcludeApp Wine
Возможно, от автоматического режима следует вообще отказаться, воспользовавшись поддержкой горячих клавиш. Дело в том, что в процессе своей работы xneur не просто меняет раскладку, но и исправляет часть уже набранного текста, а это дает возможность исправлять введенные слова не «на лету», а только по запросу пользователя уже после того, как слово было набрано. Во многих случаях это оказывается более удобным и предпочтительным вариантом. Всего xneur поддерживает около десяти различных клавиатурных комбинаций, самые полезные из которых перечислены ниже:
Клавиатурные сочетания xneur
- Break — исправить последнее введенное слово;
- Shift+Break — исправить выбранный текст;
- Ctrl+Print — изменить режим работы программы;
- Alt+Scroll Lock — применить к выбранному фрагменту транслитерацию ("привет" - "privet");
- Ctrl+Tab — развернуть аббревиатуру;
- Win+D — вставить текущую дату
Более того, даже если ты не собираешься использовать xneur для переключения раскладок, его все равно стоит установить из-за различных плюшек, которые он дает при наборе текста. Это, например, исправление слов, набранных со сЛУЧАЙНО нажатым CapsLock, исправление двойных ПРописных букв, удаление или добавление лишних/нужных пробелов перед и после знаков препинания, автоматическое исправление строчной буквы на прописную после точки.
Настраиваем универсальные горячие клавиши
Почти любой менеджер окон позволяет повесить на горячие клавиши выполнение внешних команд, что делает очень удобным запуск часто используемых приложений или консольных команд. Одна беда: хоткеи приходится настраивать отдельно для каждого менеджера окон, что не очень удобно, если ты еще не определил свой идеал или просто пользуешься разными WM.
К счастью, решить проблему можно с помощью все того же xneur. Достаточно добавить в xneurrc записи примерно следующего вида:
$ vi ~/.xneur/xneurrc
AddAction Alt t Вызов терминала <cmd>gnome-terminal</cmd>
AddAction Alt g Открыть Gedit <cmd>gedit</cmd>
AddAction Super_L Открыть Nautilus <cmd>nautilus ~/</cmd>
Обрати внимание, что по умолчанию в конфигурационном файле уже есть несколько очень даже полезных клавиатурных комбинаций — например, для поиска выделенной строки в Google (Win+G) или перевода выбранного слова (Win+R).
Активируем мультимедийные клавиши
Один из самых эффективных способов повысить продуктивность своей работы заключается в использовании различных клавиатурных комбинаций и мультимедийных клавиш, присутствующих на многих клавиатурах. Однако далеко не всегда эти дополнительные клавиши начинают работать прямо из коробки. К тому же часто на них хочется повесить совершенно другие действия.
KDE и Gnome в большинстве случаев распознают такие клавиши и даже позволяют менять эффект от их нажатия с помощью графического конфигуратора, но они привязаны к самим графическим средам, и в каком-нибудь Fluxbox их будет трудно задействовать.
В этом случае спасет графическая программа keytouch (keytouch.df.net), которая позволяет настроить как мультимедийные клавиши клавиатуры (для этого имеются преднастроенные конфиги для разных моделей), так и клавиатурные комбинации. Пользоваться ей просто: запускаем программу, выбираем модель своей клавиатуры, при необходимости переназначаем клавиши, используя графический интерфейс.
Программа снабжена демоном keytouchd, который «слушает» нажатия клавиш, поэтому его придется добавить в автозагрузку (в Debian/Ubuntu это происходит автоматически при установке пакета).
Выжимаем из мыши все
Несмотря на очевидное удобство, клавиатурные комбинации и мультимедийные клавиши подходят далеко не всем. Если ты привык использовать мышь для выполнения любых действий в иксах, то «мышиные жесты» — это то, что тебе нужно.
Поддержка жестов по умолчанию есть в KDE, так что если ты пользователь этой среды, то можешь сразу идти в меню конфигурирования устройств ввода и выполнить настройку. В противном случае у тебя остается только один выбор: установить программу easystroke (sf.net/apps/trac/easystroke):
$ sudo apt-get install easystroke
После запуска в трее появится значок программы в виде разноцветной загогулины, символизирующей ход мыши при расчерчивании жеста. После щелчка по значку на экране появится окно программы с пустым списком жестов. Щелчок по кнопке «Add Action» добавляет новый жест, для которого нужно выбрать имя и тип действия (наш выбор — Command, предназначенный для запуска новых приложений).
Далее следует ввести имя запускаемой команды и щелкнуть по ячейке колонки Stroke, после чего можно нарисовать нужный жест. Делать это следует с нажатой третьей клавишей мыши (колесико) и максимально быстро (не стоит пытаться вырисовать красивый жест, потому что его будет трудно повторить).
Проделываем эти действия для каждой команды и жеста, сворачиваем программу в трей, наслаждаемся (стоит отметить превосходный уровень распознавания, 10 из 10). При необходимости добавляем easystroke в автозапуск.
Выводы
У каждого их нас свои представления о красоте и удобстве графического интерфейса, поэтому универсальных рецептов его настройки не существует. Но выбрав из описанных в статье подходов те, которые близки именно тебе, ты сможешь сделать ОС проще и удобнее.
Info
- Когда будешь править конфиг xneur, имей в виду, что у программы нет вшитых дефолтовых настроек, поэтому удаленная строка из конфига = удаленная функция из программы.
- Для xneur есть хорошая и очень функциональная графическая оболочка под названием gxneur (xneur.ru/downloads/).
- Джедайский путь настроек горячих и мультимедийных клавиш — команда xmodmap из комплекта X.Org.
- Для настройки горячих клавиш также можно использовать команду xbindkeys (bit.ly/8aHUib).