Cellar Door

30 августа 2005

Альтернативные Window Managers: wmi, wmii

На этот раз у нас целых два поколения программ, а значит и два этапа развития представлений разработчиков о идеальном WM. Безусловно наибольшее внимание хочется уделить второму поколению - wmii, - но и wmi заслуживает как минимум упоминания. Благодаря подкупающе простой и элегантной реализации подхода, в котором сочетаются традиционный и "фреймовый" подход к организации рабочего пространства. Есть и еще одна характерная для обоих wmi и wmii особенность - традиционное меню заменяет удобная строка, вмещающая все обнаруженные в PATH команды, и поддерживающая автодополнение (к сожалению, имена файлов-параметров в автодополнении не участвуют). Второй такой же модуль открывает доступ ко всем внутренним командам wmi. Есть один нюанс: при установке wmi из портов FreeBSD каталог styles рискует остаться незамеченным. Формат каждого файла настройки описан в отдельных man-страницах. Наличествует и графический конфигуратор wmizer, написанный с использованием py-gtk2...

Так уж сложилось, что разработчики, проникшись концепциями Plan 9, Oberon и Larswm, веско заявили, что будущее за реализацией динамического управления окнами, и следующее поколение их детища предстало в совершенно новом виде. Попутно переписанное с С++ на С и уменьшенное в размере со 190 до 66KB. А главным новшеством стала реализация весьма любопытного метода IPC-взаимодействия - библиотека Libixp, построенная на основе UNIX-сокетов и предстающая нашему взору в виде оригинальной виртуальной ФС. Нетрудно догадаться, что спроектирована она по образу и подобию протокола 9P из Plan 9, получившего развитие в виде 9P2000 в четвертом издании данной ОС, Styx из Inferno OS и нескольких opensource-реализаций - v9fs, Portable 9P client and server на Python и Portable 9P/Styx client and server на Java. Подобная реализация IPC делает wmii открытой для взаимодействия с любыми - не только скриптовыми - языками программирования и позволяет модифицировать каждый аспект интерфейса и поведения wmii в реальном времени.

Влияние Plan 9 проявляется и в реализации механизма - тоже в некотором роде IPC - Plumbing. Его суть, значительно упрощая, состоит в том, что текст в буфере обмена анализируется на предмет соответствия регулярным выражением для определения того, какой программе его следует передать. В Plan 9 это одна из центральных идиом пользовательського интерфейса, правда там действия механизма программно-зависимы и сочетаются с чем-то вроде mouse gestures. Реализацию, содержащуюся в самом wmii, вряд ли можно назвать полноценной, но в разделе Tools сайта есть и гораздо более функциональный Ruby-вариант, а принципы описаны здесь.

Каталог contribs архива с исходным текстом wmii содержит несколько приложений на Python, в числе которых графический (py-gtk2) браузер пространства имен IXP и средство для монтирования дерева каталогов IXP в заданную точку файловой системы. В наличии и реализации самой Libixp на Python...
Порт последней версии wmii-2 на данный момент доступен только в базе GNATS.
Не вдаваясь в дальнейшие подробности - например описания всех 4 способов организации рабочего пространства, - замечу, что данная разработка, несмотря на некоторые недочеты, на мой взляд, представляет наиболее интересную концепцию организации рабочего пространства... Да и IPC-методику решительно стоит взять на заметку.

URL: http://wmi.modprobe.de/index.php/WMI/Home
Manual: http://www.inf.tu-dresden.de/.../beginnersguide.html