LINUX.ORG.RU

Сообщения SoulThreads

 

Оконная мозаика

С год назад я уже показывал разные нестандартные способы переключения окошек. Но если одно из них очень просто заменяется связкой dmenu+wmctrl, то вот цветастую штуковину за пределами xmonad никто изобретать не собирался. А удобная же штуковина! Но ведь главный принцип опенсорса — если чего-то нужного тебе нет, просто сделай это сам, верно? Поэтому в свободное время были изучены некоторые доки по иксам, и началось пиление велосипеда, названного чуть позже xwinmosaic.

Итого: программа написана на чистом С + GTK+2, а для работы нужен только EWMH-совместимый оконный менеджер (почти любой, некоторых в том списке нет). Идея та же — для каждого класса окна назначается свой цвет, что позвволяет легче находить нужное окно в списке. Окна, использовавшиеся недавно, выстраиваются ближе к центру. Для работы достаточно повесить запуск xwinmosaic на какой-нибудь хоткей средствами WM.

Жизнь была простой и беззаботной, когда тестирование производилось лишь на своей машинке с kwin, openbox и xmonad, однако после показа сей приблуды ограниченному кругу людей было выловлено (и вылавливается) неограниченное количество багов, как-никак: Си (сегфолты), зоопарк WM (куча неработающих или работающих по-другому функций), своё собственное отсутствие опыта, наконец.

Тем не менее, за неделю программу удалось причесать, и теперь она умеет:


  • Собственно, переключение между окнами
  • Чтение списка элементов из stdin и вывод выбранного элемента в stdout (что позволяет реализовывать похожее на dmenu поведение или даже изменять существующие скрипты простой заменой вызова dmenu на xwinmosaic, только аргументы придётся поменять)
  • Emacs (C-n C-p C-f C-b) / vim (hjkl)-подобная навигация для любителей.
  • Более-менее приличный поиск по элементам (а также по классам окон), в чем-то похожий на тот, что в ido-mode (например, «ff» найдёт все окна Firefox) — активизируется сразу при наборе в стандартном режиме и по / в режиме vim
  • окно непрямоугольной формы (на заднем плане не скриншот экрана, как в xmonad, а сами окошки, в которые можно тыкать), хотя поведение со скриншотом тоже пришлось реализовывать, так как оказалось, что не все ещё WM могут обогнать в функциональности TWM и не реализуют корректное поведение с XShape.
  • Для режима переключения окон реализовано обновление имён и самого списка окон в реальном времени, показ номера десктопа, на котором находится окно, и даже их иконки (всего этого в оригинале не было)
  • Возможность появления центра мозаики под курсором мыши (что показано на первом скриншоте, получается весьма прикольно)
  • Попытка уместить все элементы на экране вместо примитивного выстраивания их ромбиком (из-за чего к иксмонадовскому GridSelect были большие претензии)
  • Куда более приятные цвета, благодаря использованию цветовой модели HSL.
  • Ну и ещё что-то, наверное забыл упомянуть.


Ради забавы было реализовано даже подобие dmenu_run — получается очень радостно и эпилептично (спасибо, Artificial_Thought!).

На скриншотах, собственно, можно наблюдать xwinmosaic в режиме переключения окон и в режиме переключения буферов емакса (невероятно удобно, между прочим) — спасибо за идею и оригинальный скрипт для dmenu товарищу lazyklimm!
Шрифты — PT Sans в интерфейсе, Consolas в емаксе, убунтопатчи; всё та же старая обоина с Ктулху (очень мотивирует), а больше там ничего и не видно, вроде.

Надеюсь, кому-нибудь оно приглянется, поэтому ссылки:
Github: https://github.com/soulthreads/xwinmosaic (не забывайте писать в issues в случае обнаружения багов)
Пакеты для дебиана/убунты: https://launchpad.net/~soulthreads/ archive/xwinmosaic/ (могут быть немного неактуальными)
Арч: https://aur.archlinux.org/packages.php?ID=59660
Gentoo: https://github.com/soulthreads/xwinmosaic/blob/master/contrib/gentoo/xwinmosa... (надо будет напроситься к кому-нибудь в оверлей)

Вот как-то так, надеюсь, вам не надоело чтение этих многобуков.

>>> Просмотр (1024x1200, 302 Kb)

 ,

SoulThreads ()

XMonad и нетбучные переживания

В последнее время стал достаточно много времени проводить за нетбуком (Lenovo IdeaPad S9), в связи с чем приходится и самому в некоторой степени подстраиваться, и процесс работы переделывать, чтобы из этой железяки какую-то пользу извлечь.

Заодно приходится отворачиваться от тех товарищей-DE-клепателей, которые нынче как-то решили всячески ограничивать способность иметь много окошек (например, затруднением быстрого доступа к ним) и придумывают всякие странные концепции.

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

Для XMonad'а есть несколько интересных решений, я остановился на двух. Первое: XMonad.Actions.GridSelect. Выводит такую вот цветастую мозаику, по которой можно относительно быстро передвигаться, поддерживается мышекликание. Для каждого класса окна — свой цвет, поэтому при желании можно это запомнить и чуть быстрее ориентироваться. Но вот беда: в нём нет поиска (по крайней мере, пока нет). Что делать?

Оказывается, в xmonad-contrib есть такая интересная вещь, как XMonad.Prompt. Ей я, например, заменил dmenu (XMonad.Prompt.Shell) — как бонус получил возможность запускать программы с аргументами. Получил и возможность поиска по окнам — XMonad.Prompt.Window. Вылазит промпт снизу (так емаксерской душе приятнее), автодополнение и прочие штуковины, конечно же, поддерживаются.

Так и живём.

P.S. Debian Wheezy, третье ведро, emacs-snapshot из http://emacs.naquadah.org/
Везде на скриншоте используется шрифт Liberation Mono 9, сглаживание для ≤ 8pt отключено.

xmonad.hs + xmobarrc: https://gist.github.com/1134198

>>> Просмотр (1024x1200, 260 Kb)

 

SoulThreads ()

RSS подписка на новые темы