понедельник, 20 июля 2009 г.

Ionize It! или Ионизируем себя при помощи ion3

Решил перенести свой пост с welinux к себе в блог.

Ion™ is a tiling tabbed window manager designed with keyboard users in mind. О ion3 и его базовой настройке.

Что это?

Ion (или IonWM) — фреймовый оконный менеджер для UNIX-подобных операционных систем, разработанный в первую очередь для удобства управления окнами без мыши. Проблема навигации в Ионе решается путём разделения экрана на неперекрывающиеся фреймы. Таким образом перемещение между окнами при помощи клавиатуры становится быстрым и удобным. В каждом фрейме может находиться несколько клиентских окон, обозначенных вкладками. Начиная с версии 2, Ion поддерживает скриптинг на языке Lua.[1]
Так же хочется заметить, что в ion3 понятие "рабочего стола" заменено на понятие "воркспейса" (workspace), что, в принипе, логично =). Воркспейс разбивается на фреймы (Frame, WSFrame), фреймы состоят из табов (tab). У табов принцип такой же как у вкладок в браузере.

Моя причина перехода

Начну с того, что у меня не самая слабая домашняя система: Athlon64 x2, 2гб оперативы, GeForce9800GT.
Но меня всегда не устраивала скорость работы различных DE/WM. Гном мне почему-то никогда не нравился. xfce - лучше, очень лучше, но при переключении рабочего стола на тот, где открыт огнелис с 10 вкладками уходило порядка 2+ секунды. Для меня это очень медленно. Пробовал openbox - минималистично, но все теже перекрывающиеся окна. Последним был KDE 4.1. Симпатично, работает довольно шустро, но смена рабочего стола на тот, где открыта опера с 10 вкладками, опять же занимает довольно продолжительное время. Да и мышкой возюкать иногда бывает лениво.

Быстрый старт

И тут я решил поставить себе ion3. Отступление: надеюсь, что вы тоже. Если нет - дочитайте до конца и может решите ;)

Самое необходимое - хоткеи

Первое, что нужно сделать - запомнить несколько хоткиев (потому, что почти все управление окнами - с клавиатуры). К ним относятся:
  • F2 - запуск эмулятора терминала
  • F3 - запуск приложения (внизу появиться строчка для ввода)
  • Alt+c - закрыть текущий фрейм (если фреймы кончились, то закрывается весь воркспейс)
  • Alt+F9 - создать новый воркспейс
  • Alt+1 - Alt+0 - переключение на воркспейс с соответствующим номером
  • Alt+Tab - сделать следующий по горизонтали фрейм активным
  • Alt+n, Alt+p - сделать следующий/предыдущий по вертикали фрейм активным
  • Alt+k, p(n) (нажать одновременно Alt и k, затем нажать p(или n)) - сделать предыдущий(следующий) таб активным
  • Alt+k, 1(2..9) - сделать активным таб с номером 1 (2..9)
  • F12 - вызыват главное меню

О роли мыши

Для управлениями фреймами так же можно пользоваться мышой. Например, зажав Alt+ПКМ, можно изменять размеры текущего фрейма. По нажатию ПКМ на заголовке выскакивает меню управления воркспейсом/фреймом.

Немного конфигурилова

Вот вы уже понасоздавали воркспейсов, разбили их так, как вам нравиться, поназапускали приложений. Погодите - не перезагружайтесь, ибо все изменения пропадут. Пришло самое время поработать с конфигами.
Итак, первое, что нам нужно сделать - это создать файл ~/.ion3/cfg_user со следующим содержимым:
dopath("cfg_kludges") --настройки окон
dopath("cfg_bindings") --биндинги клавиш
dopath("named_scratchpad") --вроде как полезный скрипт

Последний можно взять вот здесь. Другие скрипты можно найти вот в этом каталоге.

Для того, чтобы легче заполнять конфиги, будет полезным переименовать все фреймы, с которыми вы работаете. Чтобы это сделать нужно:
  1. Сделать нужный фрейм активным
  2. Нажать Alt+F3
  3. Ввести mod_query.query_renameframe(_)
  4. Ввести новое имя фрейма
Таким же образом можно посмотреть текущее имя текущего фрейма.
После того, как вы настроили и переименовали все фреймы необходимо сохранить сессию, чтобы после ребута расположение всех фреймов осталось. Для этого:
  1. Нажимаем F12
  2. Вводим
    session/save

Теперь необходимо настроить ион так, чтобы приложения при запуске оказывались в нужных нам фреймах. Для начала создаем файл ~/.ion3/cfg_kludges.lua, который как раз за это и отвечает. Воспользуемся моей заготовкой (она у меня храниться в самом начале файла):
--xprop | grep -iE "class|role"
--defwinprop
--{
-- isntance="", -- первое значение WM_CLASS
-- class="", -- второе значение WM_CLASS
-- role="", -- значение WM_WINDOW_ROLE
-- target="" -- целевой workspace, tag, frame or launchpad
--}

Последовательность действий, примерно, такая:
  1. Запускаем приложение
  2. Открываем эмулятор терминала
  3. Вводим
    xprop | grep -iE "class|role"
  4. Тыкаем в нужное приложение
  5. Сохраняем полученные данные в конфиг

Для каждого окна в ~/.ion3/cfg_kludges.lua должна быть своя секция defwinprop {...}. Причем именно для окна, потому что разные окна одного приложения можно расположить в разных фреймах. Например, участок моего конфига, отвечающего за psi, выглядит так:
defwinprop
{
isntance="main",
class="psi",
role="psimain",
target="stuff_psi"
}

defwinprop
{
isntance="tabs",
class="psi",
role="",
target="stuff_psi"
}

Результат

Вот что я имею в результате:
К тому же, переключение на воркспейс с открытой оперой - мгновенный. Да вообще переключение на любой воркспейс мгновенный.Использую его уже больше месяца. Периодически заглядываю в хелп, для поиска комбинаций клавиш, для выполнения нужного мне действия, но это бывает редко. Мышу трогать стал намного реже (ибо даже в опере есть управление с клавиатуры), а, считаю, для ноутов это было бы вообще идеально). К сожалению, не имею возможности сравнить с другими twm, ибо это первый, с которым я смог работать сразу искаропки и который мне сразу понравился.

Немного о плавающих окнах


Есть такая полезная штука в ионе, как плавающие окна - окна, которые открываются поверх всех воркспейсов. Их можно двигать, изменять им размер, а так же использовать как полноценный воркспейс. Открывается эту штука по нажатию Alt+Space и выглядит, примерно, так, как показано слева.


Благодарности и ссылки

Спасибо KerneL за то, что нашел мой коммент, где я писал про ион.
Спасибо Egyptian за идею для названия статьи.
В данной статье использовался материал из [2] и еще откуда-то (сейчас не вспомню, ибо сейчас писал все по памяти), а так же из головы и моих конфигов =) Советую почитать еще по этой ссылке.

1 комментарий:

  1. ну вот задать имя вркспейсу и пришпилить к нему гимп я сумел, но как но как раскидать его окошки по фреймам внутри воркспейса

    ОтветитьУдалить