mlclm
2008-01-23
Много всяких WM существует.
Всегда сидел в KDE, но также всегда доставала скорость работы и загрузки как самого DE, так и программ (хоть Арч и самый быстрый, имхо). Начал выбирать WM для себя, т.к. DE слишком громоздко.
Итак, DE отпадает. WM - fluxbox - панель - привык переключать приложения и рабочие столы клавишами, поэтому надобность в панели отпадает. OpenBox - не нравятся конфиги xml. Как то всё запутанно. Опять же, не люблю чтобы окна перекрывались, решил глянуть на wmii, ion, dwm. dwm - конфиги на С, имхо, не то, что нужно, я не программист, а юзер. Да ещё говорят, что после каждого изменения конфига надо пересобирать, извините, но это ваащщее. ion - lua мне не знаком, и знакомиться не собираюсь, опять же не программер. Wmii, говорят, что уже устарел, и опять же запутанные конфиги. В общем, многие могут подумать, что я просто сильно придираюсь, и настроить можно всё, и выучить тоже не проблема. Так и говорю, в pekwm влюбился сразу. Странно, что на русском языке про него что-то найти проблематично. На официальной странице есть довольно подробное руководство, но на английском. С горем пополам, разобрался, но ещё не полностью. В общем, буду потихоньку рассказывать, что же я узнал, может кому-нибудь ещё приглянётся.
После скачивания, установки и первого запуска последней версии pekwm, в
домашнем каталоге пользователя появляется папка с конфигами - .pekwm.
autoproperties - здесь прописываются “автосвойства” приложений (окон)
config - основной конфиг
keys - настройки “горячих” клавиш
menu - меню
mouse - действия на разные действия с мышей (товтология какая-то:) )
start - запуск приложения при старте WM
themes - папка с темами
vars - переменные, которые могут понадобиться как в menu, так и в keys, mouse.
Тут мы просто задаём переменные, чтобы потом каждый раз не писать длинные переменные в других файлах, например:
$VT = “urxvt -fade 30 +sb -fn -*-terminus-medium-*-*-*-16-*-*-*-*-*-iso10646-* -bg black -fg white”
теперь вместо этой длинючей команды в конфигах можно просто прописать $VT, но убедиться что в начале конфига прописано INCLUDE=”vars”. Меню - чтобы вручную всё не вбивать, можно воспользоваться утилитой menumaker, которая есть в репозитариях арча, команда типа
mmaker pekwm -t rxvtВозможно, ещё потребуется опция -f, если потребуется перезаписать файл с меню. Синтаксис файла меню простой:
INCLUDE=”vars” #чтобы не писать длинные команды, вводим переменные, об этом я говорил ранее
Rootmenu = “Pekwm” { #название корневого раздела меню
Entry = “Run…” { Actions = “ShowCmdDialog” } #показать диалог запуска типа “Выполнить…”
Entry = “Terminal” { Actions = “Exec $VT &” } #запустить терминал
SubMenu = “Wallpapers” { #открываем подменю
Entry = “” { Actions = “Dynamic /home/malc/.pekwm/scripts/ws” } #что у нас находится в подменю
}
}
Separator {} #разделение с помощью сепаратора
WindowMenu = “” {} # меню, которое показывается при клике правой клавишей на заголовке окна
Самое
интересное здесь, это использование динамических меню, которые
изменяются от содержания каталогов. Стандартные скрипты, для примера
находятся в /usr/share/pekwm/scripts/.
Я использую один скрипт для обзора каталога с wallpaper’ами и установки в качестве фона рабочего стола, выглядит от так:
#!/bin/bash
output=`ls /home/malc/fff/`
echo “Dynamic {”;
for name in $output;
do
echo ” Entry = \”$name\” { Actions = \”Exec fbsetbg /home/malc/fff/$name\” }”
done
echo “}”
Здесь
в папке /home/malc/fff/ находятся wallpaper’ы. Команда, при клике на
пункте меню “Exec fbsetbg /home/malc/fff/$name\” - т.е. просто
ставится фон рабочего стола. Скрипты можно писать на bash и perl, кому
что ближе. Так же в меню таким же образом можно выводить разные данные
из вывода команд каких-либо (ping, заряд батареи…). Наверное я
допустил ошибку, но пробелы в названиях файлов меню (а может и скрипт)
обрабатывает как новый файл.
INCLUDE = “vars” #включаем сюда переменные
Global { #основные клавиши
KeyPress = “Mod1 T” { Actions = “Exec $VT &” } #по Alt + T запустить терминал из переменной $VT
KeyPress = “#233? { Actions = “GoToWorkspace Next” } #при нажатии на
клавишу с keycode #233 Перейти на следующий рабочий стол. keycode можно
получить из вывода программы xev
KeyPress = “Mod1 R” { Actions = “MoveResize” } #при нажатии Alt+R активировать меню MoveResize
}
MoveResize {
KeyPress = “Left” { Actions = “MoveHorizontal -10? }
#после Alt+R при нажатии на “влево” окно подвинется на 10 пикселей
влево.
….
}
CmdDialog { #реакция на клавиши в диалоге “Выполнить”
KeyPress = “Left” { Actions = “CursPrev” } # “влево” - передвинуть курсор на предыдущую позицию
…..
}
Menu { #реакция на нажатия клавиш в меню
KeyPress = “Down” { Actions = “NextItem” } # “вниз” - передвинуть курсор на следующий пункт меню.
…..
}
Я рекомендую часть про menu и cmddialog оставить в keys, а остальное переделать так, как вам хочется, потому что команд там дохрена, все не запомнишь, легче дописать своё, чтобы не путаться, как привык, так и работаешь. в .pekwm/start просто записываем команды, которые должны выполняться при старте wm,например
opera & amarok &Ну и так далее, ничего сложного. Единственное, он должен быть “исполняемым”, чтобы всё запустилось.
#!/bin/bash
{
echo -n ‘Property ‘
xprop WM_CLASS | sed ’s/.*”\(.*\)”, “\(.*\)”.*/= “\1,\2? {/g’
echo ‘}’
}
сохраняем, делаем его исполняемым, и запускаем. Нажимаем на любое окно получаем примерно следующее:
Property = “main,psi” {
}
Это вставляем в autoproperties, получаем примерно такое:
Property = “main,psi” {
ApplyOn = “Start New” #реагировать на старт проги.
Sticky = “True” # закрепить ко всем рабочим столам
Layer = “OnTop” # повесить выше всех
FrameGeometry = “144?400+880+18? # местонахождение и размер при старте, 144х400 - размер, 800+18 - положение, можно только положение обозначать “+800+18? например.
Border = “False”; Titlebar = “False” #стартовать без бордюров и заголовка.
}
Conky выводит всю нужную информацию в полоске сверху, он “Always On Top”, все приложения стартуют без заголовка, т.к. имхо, только мешает, всё управление окнами - горячими клавишами. Стартуют как раз под conky, “за” conky ничего не залезает, psi стартует без заголовка и без оформления справа, остальные окна за него не залезают, т.к. вместо просто максимизации окна используется Maxfill, типа “занять всё свободное пространство”, горячие клавиши настроены так, как я хочу.
P.S. разобрался с Group, группировка приложений по типу. Очень удобно, например браузеры: Опера и Файрфокс, забубенить их в одну группу, оба расположены на одном рабочем столе и развёрнуты на весь экран. При помощи горячих клавиш приложения в группе пеерключаются. ИМХО, очень удобно.