30 марта 2010 г.

Musca - НЕдинамический тайлиноговый WM.

Очень хочу рассказать Вам о замечательном, легком тайлинговом WM MUSCA. Он не очень популярен, но поглядеть на это чудо нужно. Подробности далее.


В процессе использования Linux начал понимать преимущества множества рабочих столов. С течением времени заметил, что приложения распределяются по столам всегда одинаково, и практически не меняют своего положения. На 1 рабочем столе у меня, например, браузер и im-клиент, на втором торрент-клиент, на третьем программа для просмотра видео, на всех сразу множество эмуляторов терминала. Иногда занимал один из столов текстовыми редакторами или тукстовыми процессорами.
Именно благодаря такому подходу дел стал поглядывать в сторону тайлинговых wm. Среди преимуществ - управление с клавиатуры, окна занимают больше места на экране. Среди минусов - высокий порог вхождения. Как проверил потом на собственном опыте - сложность освоения не означет сложность использования.

Что же такое тайлинговые wm. В этих системах управления Вашими окнами, чаще всего включен плиточный режим. Т.е окна занимают все пространсво экрана, друг друга не перекрывая. Большинство операций по управлению окнами вынесено на клавиатуру, поэтму заголовков у окон, как и кнопочек "закрыть", "свернуть", "развернуть" - нету. Пользователь видит перед собой только содержимое окна, и ничего больше.

Динамический тайлинговые wm (dwm, awesome, xmobar) сами определяют где и как должно отображаться нужное пользователю окно. У них встроен механизм так называемых layaot ... в которых указаны способы размещения окон. Например, одно главное на полэкрана, два вторичных - по четверти. Когда пользователю нужно поглядеть что происходит еще в одном окне, которое в данный момент не отражается на экране - wm сам теснит остальные окна, что позволяет добиться желаемого.
Это, на самом деле, очень удобно, если настроить под себя. Однако для этого, придется править конфигурационные файлы. Но это полбеды, править нужно практически программу, языком кофнигов выступают различные языки програмирования.

Musca этого не умеет. Musca только отображает окна там, где сказал пользователь. Но у musca - человеко-читаемый конфигурационный файл. Более того, начать использовать musca можно и без конфига, значения по умолчанию весьма удобны.


Установка

будет различаться, в зависимости от дистрибутива. К счастью, в AUR есть соответствующий пакет. Потому на этом моменте заострять внимание не буду.
Для запуска, я использую файл .xinitrc
В общем случае, достаточно в самом начале написать
exec musca;
после чего запустить x-server

В первый раз...

Если все прошло удачно, то Вы увидите перед собой... черный экран. Единственное, что может свидетельствовать о том, что musca все-таки запустилась - синий ободок вокруг экрана. Это, пока, Ваш единственный фрейм в единственной группе.

Группа - группа окон, выводимых пользователю на экран. Можно провести аналогию с рабочим столом, однако различия все-таки есть. Ъ-musca пользователи гововорят - группа.

Фрейм - часть группы, предназначенная для отрисовки окна.

Итак, у нас есть группа и синий ободок. Что делать то?
Для начала, разделим существующее окно пополам. Для этого нужно нажать горячие клавиши mod4-h - делим по горизонтали, mod4-v - по вертикали. Где mod4, в большинстве случаев, клавиша win.

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

Для любителей (да и нужно иногда), существует режим плавающих окон. Как в обычных wm. Чтобы переключиться на него, необходимо нажать mod4-s. При этом с экрана исчезнут все рамочки. Окна в этом режиме таскаются по экрану, при помощи mod4 левой кнопкой мыши, mod4 и правой кнопкой можно изменять размер окон. Но, мы устанавливали musca не для того, чтобы мышкой таскать окна. Поэтому жмем mod4-s и возвращаемся в тайлинговый режим.

У окон в группе также существуют режимы. Один из них deprecated (?), активируется нажатием mod4-d. Фрейм в этом режиме выделяется красным цветом. Этот режим нужен для того, чтобы привязать фрейм к приложению. Кроме текущего приложения, ничего в этом фрейме отображаться не будет.
Другой режим - al (?) - mod4-a - зеленая рамочка. Если фрейм пометить таким образом, то все новые окна будут появляться именно в нем.

Теперь попробуем запустить приложения. Переместитесь (Mod4 и стрелочки) в понравившийся Вам фрейм и нажмите mod4-t - это запустит эмулятор терминала.
Чтобы запустить другие приложения, используетс dmenu (это инструмент из dwm). Если Вы нажмете mod4-x, то снизу появится серая полоса. Это и есть Ваше меню. Некоторые товарищи умудряются из него сделать файловый менеджер, однако мы не будем так глубоко лезть, нам нужно всего лишь запустить программу. Чтобы это сделать, достаточно ввести первые буквы названия
нужного приложения. Например, f i r e, автодополнение табом работает. Между вариантами можно переключиться и стрелочками. Когда в меню подсвечено название нужного Вам приложения, смело жмите ввод.

В musca - dmenu используется еще для нескольких вещей. Во-первых, есть меню musca, и есть меню групп. Нажав mod4-m вы можете посмотреть список комманд, которые умеет выполнять этот небольшой wm. Сам лично это меню практически не использую, все нужные команды висят на клавиатурных комбинациях. Благо их немного - ниже приведу свой конфиг.

А вот на меню групп остановимся немного поподробнее. Активируется mod4- угадаете какая клавиша? "g", как это и неудивительно звучит. Мы видим тоже самое dmenu с надписью 0*default. Это и есть та группа, в которой мы с Вами находимся последние несколько минут. Чтобы создать еще одну, достаточно ввести с клавиатуры ее название. Например web, после чего жмем энтер. Если такая группа существует, то мы переключимся на нее. Мне удобнее листать группы mod4-PgUP,
mod4-PgDown. Еще раз вызовем меню групп (mod4-g) и посмотрим, что их у нас теперь 2. В каждой можно создать нужное количество фреймов и работать.

Прежде чем перейдем к конфигу, расскажу как это работает у меня.
Во всех группах (почти) сверху сделан отступ, в котором расположились conky с нужной информацией. Сюда можно прикрутить трей.
Нулевая дефолтная группа используется для непредвиденных обстоятельств.
В первой группе "web" - 2 фрейма - сверу запущен firefox, снизу screen в эмуляторе терминала. Там происходит большинство моих консольных дел.
Вторая группа im - Слева тонкий фрейм для списка контактов pidgin. Справа в верхней половине - окно беседы. Нижняя половина справа свободна. Тут бывает либо эмулятор терминала, либо редактор - в зависимости от того, что нужно во время разговора с собеседником.
Третья группа video - Название говорит само за себя - здесь смотрится видео. Чтобы ничего не отвлекало - в этой группе нет отступа сверху, а рамочка вокруг фрейма убирается горячей клавишей (см.конфиг)
Четвертая группа torrent - Здесь тоже все ясно - запущен торент клиент.
Бывает создается и пятая группа, и шестая. Вы можете их еще больше сделать, если нужно.

Итак, самое вкусное - конфиг. При его составлении использовались примеры с форума ... и с musca wiki.
он распологается в файле ~/.muscastart



# переменные musca
# по умолчанию новое окно открывается в пустом фрейме, если такой есть, а не в текущем
set window_open_frame empty

#Цветовая схема, взял в том же примере конфига с форума, меня полностью устраивает. Такое все зелененькое)

set border_focus LimeGreen
set border_unfocus ForestGreen

set border_dedicate_focus #3283CD
set border_dedicate_unfocus #225888

set border_catchall_focus #CD327F
set border_catchall_unfocus #882255

#Настройка групп при старте. Пытался с хуками разобраться, потом бросил. Все элементарно и просто
#Проблема в том, что musca не умеет раскидывать приложения по окнам. Потому их запускаю вручную. Благо это приходится
#делать 1 раз в 4-5 дней)
add web
pad 0 0 25 0

add im
pad 0 0 25 0

add video
# pad 0 0 15 0 мы же не хотим видеть коньки во время просмотра фильма?

add torrent
pad 0 0 25 0

use 0
#запись для коньков, указывающая, что их не нужно запускать во фрейме. Коньки уютно себя чуствуют в отступе, который мы
#делали выше
manage off conky
exec conky -c ~/.conkygor #непосредственно сам запуск коньков с нужным конфигом

#так делаем трей)
manage off stalonetray
exec stalonetray
#и батарейку
manage off batterymon
exec batterymon
# навешиваем команды на кейбиндинги
# терминал
bind on Mod4+t exec urxvt

# деление фрейма хоткеями пополам -- горизонтально и вертикально, соответственно
bind on Mod4+h hsplit 1/2
bind on Mod4+v vsplit 1/2
# удаление фрейма
bind on Mod4+r remove
# удаление всех фреймов в группе кроме текущего, последний занимает место всей группы
bind on Mod4+o only
# аварийное завершение работы текущего окна
bind on Mod4+k kill
bind on Mod4+F4 kill
# переключение между окнами в текущем фрейме. Не все окна текущей группы отображаются на экране. Они могут быть, как бы
#свернутыми
bind on Mod4+c cycle next
bind on Mod4+Shift+c cycle prev
# выбор текущего фрейма в группе
bind on Mod4+Left focus left
bind on Mod4+Right focus right
bind on Mod4+Up focus up
bind on Mod4+Down focus down
# пометить фрейм как занятый для открывающихся окон
bind on Mod4+d dedicate flip
# пометить фрейм для размещения в нём всех новых окон
bind on Mod4+a catchall flip
# отмена последней манипуляции с musca (!)
bind on Mod4+u undo
# переключение в режим плавающих окон
bind on Mod4+s stack flip
# перетаскивания окна между фреймами
bind on Mod4+Shift+Left swap left
bind on Mod4+Shift+Right swap right
bind on Mod4+Shift+Up swap up
bind on Mod4+Shift+Down swap down
# изменение размеров текущего фрейма
bind on Mod4+Control+Left resize left
bind on Mod4+Control+Right resize right
bind on Mod4+Control+Up resize up
bind on Mod4+Control+Down resize down
#убираем рамку вокруг фрейма. Очень полезно, при просмотре фильмов.
bind on Mod4+b border flip
#перерисовка текущего окна -- бывает
bind on Mod4+f refresh


#запуск dmenu с перечнем всех установленных программ -- штатное средство запуска программ
bind on Mod4+x shell
# Вызывает меню команд musca через dmenu
bind on Mod4+m command

# вызов dmenu с перечнем всех окон
bind on Mod4+w switch window
# вызов dmenu с перечнем всех групп
bind on Mod4+g switch group

# Super+PgDn и Super+PgUp -- переключение между группами
bind on Mod4+Next use (next)
bind on Mod4+Prior use (prev)

# переключение между группами
bind on Mod4+1 use 0
bind on Mod4+2 use 1
bind on Mod4+3 use 2
bind on Mod4+4 use 3
bind on Mod4+5 use 4
bind on Mod4+6 use 5
bind on Mod4+7 use 6
bind on Mod4+8 use 7
bind on Mod4+9 use 8
#перемещение текушего окна между группами
bind on Mod4+Shift+1 move 0
bind on Mod4+Shift+2 move 1
bind on Mod4+Shift+3 move 2
bind on Mod4+Shift+4 move 3
bind on Mod4+Shift+5 move 4
bind on Mod4+Shift+6 move 5
bind on Mod4+Shift+7 move 6

# Для переключение между несколькими экранами. Пока у меня 1 монитор((
bind on Mod4+Tab screen (next)
# выход из musca
bind on Mod4+Shift+q quit
#----------------------------------------------------------------
#вот и все. Попробуйте, надеюсь Вам понравится. Конфиг простой как и сам WM.

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

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