Обновки

Я пользовался wmii с лета 2006 года. С тех пор в отношении оконного менеджера у меня ничего не менялось.

Шли годы, я рос и постигал дзен. Используемых программ становилось всё меньше, а я всё дальше погружался в круглоскобие.

Я стал использовать в основном только Firefox для просмотра сайтов и GNU Emacs для всего прочего.

Нельзя сказать, что wmii не мог справиться с обслуживанием столь скудного рабочего процесса. Тем не менее, мне просто захотелось поменять оконным менеджер на что-нибудь другое.

Sawfish

Сначала я попробовал Sawfish.

Sawfish — интересный проект, и когда-то использовался в качестве оконного менеджера в GNOME. У Sawfish интересная судьба. Когда его создатель Джон Харпер в начале века не смог больше поддерживать проект, в GNOME его заменили на ныне используемый Metacity. На данный момент дальнейшее развитие Sawfish осуществляется силами сообщества, выходят новые релизы librep и самого Sawfish.

Sawfish построен на базе простой встраиваемой реализации Лиспа под названием librep. По современным меркам это велосипед, понадёргавший всякого из других Лиспов.

Sawfish обеспечивает оконные декорации и контекстные меню. Но центральное место в программе, конечно, занимает полный доступ ко всем примитивам с помощью Лиспа. Ну, типа

(maximize-window (select-window))

разворачивает текущее окно и всё тому подобное. Всё конфигурирование тоже с помощью Лиспа. Ну, типа

(bind-keys global-keymap "C-TAB" 'cycle-windows)

привязывает C-TAB к действию по перебору окон и всё тому подобное. Sawfish — это такой Емакс, только оконный менеджер.

Sawfish — не плиточный оконный менеджер (как wmii), но его поведение полностью программируется, так что это, в принципе, не недостаток.

Есть ещё графический конфигуратор sawfish-ui(1).

С запущенным Sawfish в традиционной REPL-манере можно общаться с помощью программы sawfish-client(1). Есть режим для Емакса, который позволяет выполнять формы в контексте Sawfish с помощью привычного C-x C-e.

Sawfish занятен, но для меня в нём что-то всё-таки не то. И ещё он не захотел привязывать кнопку XF86Launch1 на моей клавиатуре.

StumpWM

StumpWM целиком написан на Common Lisp с использованием CLX,

Мне он очень понравился. Вообще ничего лишнего — никаких декораций, никаких меню.

В модели StumpWM экран может делиться на несколько «frames» (концептуально это то же самое, что «windows» в Emacs). В каждом фрейме может быть показано одно из запущенных окон. У меня обычно всего один фрейм, так что все текущее окно занимает весь экран. Окна можно собирать в группы и переключаться между группами с сохранением конфигурации фреймов.

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

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

Дополнительным понятием в StumpWM является Mode Line, которая идёт вдоль одной из сторон экрана и на которую можно выводить всякие ништяки типа списка открытых окон. Я этой полосочкой не пользуюсь и не включал её. Вся информация и так доступна по единобразным сочетаниям клавиш в виде, например, появляющегося в уголке списка окон.

Мне понравились сочетания клавиш по умолчанию. В духе Emacs. Стандартный префикс — C-t.

StumpWM хорошо поддерживает несколько мониторов и Xinerama. Однажды я куплю себе ещё два монитора и буду юзать эту фичу.

С запущенным StumpWM можно и нужно общаться через обычный SLIME :)

В общем, очень нравится, и на душе как-то тепло от использования такого менеджера.

git.md