LINUX.ORG.RU

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

 ,


12

6

С год назад я уже показывал разные нестандартные способы переключения окошек. Но если одно из них очень просто заменяется связкой 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... (надо будет напроситься к кому-нибудь в оверлей)

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



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

Да, прекрасно работает на x11-wm/awesome-3.4.11, добавил в float, включил screenshot и сделал смещение x=0; y=0 - всё отлично, единственное что, - нельзя ли опцию скриншот реализовать таким образом, чтобы она работала fullscreen, т.к. несмотря на четкое попадание по x/y - отображается рамка окна (скриншота) как активного текущего окна. Вот например, над панелью: http://i.pixs.ru/storage/2/6/5/screen2149_1821705_4985265.png

science ★★☆
()
Ответ на: комментарий от Artificial_Thought

прозрачное

у меня нигде нет прозрачности, не нужно.

science ★★☆
()
Ответ на: комментарий от science

x11-wm/awesome-3.4.11

Так у вас и без screenshot, вроде, должно работать тогда.
Если же всё-таки не работает, зафулскринивание я закоммитил, попробуйте пересобрать.

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

зафулскринивание я закоммитил

класс, супер! пересобрал - идеально, всё отлично. А если без screenshot, то мозаика появляется не в центре - если в различных режимах тайлинга находится, а то справа, то слева, то вообще прячется, в общем с включенным screenshot программа работает отлично, даже не знаю, что и добавить. Повесил на atl+tab, всё ок.

science ★★☆
()
Ответ на: комментарий от Artificial_Thought

Надо режим float включить

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

science ★★☆
()
Ответ на: комментарий от science

Сдаётся мне оно так почти со всеми тайловыми wm глючит. С awesome и wmii точно.

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