LINUX.ORG.RU

Как готовить pekwm

 ,


4

2

PekWM — малоизвестный, но сравнимый по фичастости с openbox-ом менеджер окон. А в некоторых вещах — и опережающий openbox. Возможности:

  • Possibility to group windows in a single frame
  • Configurable keygrabber that supports keychains
  • Configurable mouse actions
  • Configurable root- and window-menus and keybindings for all menus
  • Dynamic menus that regenerate on every view from a script output
  • Multi-screen support both via RandR and Xinerama
  • Configurable window placement
  • Theming support with images, shaping and configurable buttons.
  • Autoproperties (Automatic properties such as a window's sticky state, etc.)

На ЛОРе кто-то жаловался: «у pekwm настолько невменяемый дефолт, что сколько ни брался настраивать, не осилил».

Дефолтный конфиг у него действительно слегка неадекватен. Модель фокусировки по умолчанию - фокус следует за мышью. Нет никаких обозначений на кнопках в заголовке окна. Настройка хоткеев отличается от привычной DE-юзерам, и посмотреть их можно только в конфиге. Alt+Tab работает, но листает окна не в порядке MRU, а в порядке их создания. Ну и как маленькое издевательство: xterm из меню зачем-то запускается с опциями, перекрывающими настройки цвета из X Resources.

Скрин с дефолтом: https://s27.postimg.org/j5eeztudv/2017_01_17_105634_1366x768_scrot.png (слева xterm, запущенный при помощи команды Run, справа - запущенный непосредственно пунктом меню.)

На скрине по ссылке видно список тем, опакетированных в Арче для pekwm. Я потыкал во все, и ни одна из них не показалась мне приличной:

  • Либо нет обозначений на кнопках заголовка. (Смысл? Убрали бы тогда их вообще...)
  • Либо неконтрастное сочетание цвета фона и цвета текста.
  • Либо просто страшные.

Тем не менее. Дефолт — для слабаков.

В первую очередь я занялся внешним видом. Выбрал тему, имитирующую XFCE. Не знаю, насколько удачно имитирующую, - оконный менеджер XFCE я много лет не видел, но выглядит нормально. Требуется только исправить контрастность надписей. Запускаем напильник:

$ cp -r /usr/share/pekwm/themes/xfce4 ~/.pekwm/themes/xfce4-fixed
$ mcedit ~/.pekwm/themes/xfce4-fixed/theme

diff, если кому надо. http://pastebin.com/Q5eDCvDY

Радует, что список тем обновляется сразу после создания новой, нет нужны вручную вызывать Reload.

Дальше - модель фокусировки. Тут всё просто. В ~/.pekwm/mouse непосредственно написано, какие строки надо раскомментировать, чтобы получить модель фокуса по щелчку.

Хоткеи в ~/.pekwm/keys:

Чтобы Alt+Tab перечислял окна в порядке MRU, нужно заменить биндинги NextFrame/PrevFrame на NextFrameMRU/PrevFrameMRU:

	KeyPress = "Mod1 Tab" { Actions = "NextFrameMRU EndRaise" }
	KeyPress = "Mod1 Shift Tab" { Actions = "PrevFrameMRU EndRaise" }

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

Мои настройки для действий с рабочими столами:

	KeyPress = "Mod4 F1" { Actions = "GotoWorkspace 1" }
	KeyPress = "Mod4 F2" { Actions = "GotoWorkspace 2" }
	KeyPress = "Mod4 F3" { Actions = "GotoWorkspace 3" }
	KeyPress = "Mod4 F4" { Actions = "GotoWorkspace 4" }
	KeyPress = "Mod4 F5" { Actions = "GotoWorkspace 5" }
	KeyPress = "Mod4 F6" { Actions = "GotoWorkspace 6" }
	KeyPress = "Mod4 F7" { Actions = "GotoWorkspace 7" }
	KeyPress = "Mod4 F8" { Actions = "GotoWorkspace 8" }
	KeyPress = "Mod4 F9" { Actions = "GotoWorkspace 9" }
	KeyPress = "Mod4 F10" { Actions = "GotoWorkspace 10" }

	KeyPress = "Mod4 Shift F1" { Actions = "SendToWorkspace 1" }
	KeyPress = "Mod4 Shift F2" { Actions = "SendToWorkspace 2" }
	KeyPress = "Mod4 Shift F3" { Actions = "SendToWorkspace 3" }
	KeyPress = "Mod4 Shift F4" { Actions = "SendToWorkspace 4" }
	KeyPress = "Mod4 Shift F5" { Actions = "SendToWorkspace 5" }
	KeyPress = "Mod4 Shift F6" { Actions = "SendToWorkspace 6" }
	KeyPress = "Mod4 Shift F7" { Actions = "SendToWorkspace 7" }
	KeyPress = "Mod4 Shift F8" { Actions = "SendToWorkspace 8" }
	KeyPress = "Mod4 Shift F9" { Actions = "SendToWorkspace 9" }
	KeyPress = "Mod4 Shift F10" { Actions = "SendToWorkspace 10" }

Действия над активным окном:

	KeyPress = "Mod4 A" { Actions = "Toggle FullScreen" }
	KeyPress = "Mod4 S" { Actions = "Toggle Maximized True True" }
	KeyPress = "Mod4 Delete" { Actions = "Close" }
	KeyPress = "Mod4 Space" { Actions = "ShowMenu Window" }

Ну и далее по вкусу. Надо сказать, править такие конфиги намного удобнее, чем копаться в лапше XML Openbox-а.

Количество и имена рабочих столов в ~/.pekwm/config, и прочие настройки:

Screen {
    Workspaces = "10"
    WorkspacesPerRow = "10"
    WorkspaceNames = "α;β;γ;δ;ε;ζ;η;θ;ι;κ"

    ShowFrameList = "True"
    ShowStatusWindow = "True"

    EdgeSize = "0 0 0 0"

    Placement {
        Model = "CenteredOnParent Smart MouseNotUnder"
    }
}

В ~/.pekwm/vars правим команду вызова терминала:

#$TERM="xterm -fn fixed +sb -bg white -fg black"
$TERM="lilyterm"

Для динамически заполняемого меню приложений арчевики рекомендует menumaker или pekwm-menu. Первый на питоне, что само по себе уже не радует. И что более важно, он не умеет в локализацию пунктов меню.

Второй из AUR-а не собирается из-за ошибки в формате сборочного рецепта. Приходится закатывать Солнце вручную:

$ cd /tmp
$ yaourt -G pekwm-menu
$ cd pekwm-menu
$ mcedit PKGBUILD
$ makepkg
$ yaourt -U pekwm-menu-0.5.0-1-i686.pkg.tar.xz

Добавляем в корневое меню в файле ~/.pekwm/menu:

	Submenu = "Applications" { Icon = "ICON"
		Entry { Actions = "Dynamic pekwm-menu lxde-applications.menu" }
	}

Автозапуск приложений:

В ~/.pekwm/start прописываем всё автозапускаемое. Мой вариант конфигурации:

export XDG_MENU_PREFIX='lxde-'

setxkbmap -model pc104 -layout 'us(basic),ru:2,rs(latinyz):3' -option '' \
    -option lv3:ralt_switch,grp:shift_caps_switch,grp_led:caps,compose:menu &

killall xbindkeys 2>/dev/null
xbindkeys &

compton -cC &
waterline -p p1 &
stuurman -d &
rainbow-cm &
synapse -s &
nm-applet &

Не забыть сделать файл исполняемым:

$ chmod u+x ~/.pekwm/start 

Итого, на скриншоте:

  • pekwm с допиленной темой XFCE4.
  • Показана возможность pekwm объединять в один фрейм несколько окон.
  • pekwm-menu отображает динамическое меню по спеке freedesktop.
  • Боковая и нижняя панель — waterline.
  • ШГ — куда ж без него.

>>> Просмотр (1366x768, 449 Kb)

Deleted

Проверено: JB ()
Последнее исправление: Deleted (всего исправлений: 4)
Ответ на: комментарий от Dmitry_Sokolowsky

Под автозапуском ты имеешь ввиду ~/.pekwm/start?

Файл отмечен как исполняемый и имеет корректный шебанг? Все приложения запускаются с символом & ?

Deleted
()
Ответ на: комментарий от bread

слакбилды

Размышляю, как отрефакторить скрипты. Каждый сборочный рецепт представляет собой смесь независимых от дистрибутива команд и данных и специфичной от дистрибутива обвязки. Идеально было бы разделить это на отдельные модули и единообразно проводить сборку пакетов под разными дистрибутивами.

Deleted
()
Ответ на: комментарий от Deleted

В слаке обычно на коленке все лабают, ну это ж слака)) А какие дистры планируешь поддерживать? Вообще, пакеты не помешали бы для популяризации. Мало кто знает про твои разработки, а кто и слышал ленятся собирать.

bread
()
Ответ на: комментарий от bread

Вот как с мате было - пока они не провели работу по проникновению в дистры, все на них смотрели как на пионэрию. А теперь довольно популярная среда.

bread
()
Ответ на: комментарий от bread

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

Остальные - посмотрим, как получится.

Алсо, валяется ненужный ноутбук, можно поднять на нём окружение для автоматических ежедневных сборок пакетов.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.