Авг 11

Как мы уже писали, тайлингу в KDE с GSoC’ом не повезло, но соответствующая заявка-то была сделана!

И что самое интересное, её автор — Nikhil Marathe, не смотря на неудачу, свою идею не бросил, а начал, под мудрым руководством Martin Graesslin, медленно, но верно воплощать её в жизнь.

Задачи, которые поставил перед собой Nikhil:

  • Предоставить интуитивно-понятный фреймовый режим, с различными слоями (как в Awesome) и поддержкой для отдельных плавающих окон.
  • Предоставить D-BUS API для тайлинга, чтобы другие приложения, включая плазму, могли им легко воспользоваться.
  • Использовать композит и мышь где только это возможно
  • При перетаскивании окон к краям экрана они должны автоматически вдвое уменьшаться в размере как было предложено здесь. По возможности расширить и дополнить эту возможность.
  • Пометка/выделение – перемещать/размещать в фрейме только определенные окна.
  • Стек фреймов как цельный набор окон, может быть задвинут назад, выдвинут вперёд или передвинут, без нарушения порядка оконной мозаики. Это свойство также можно расширить и на работу несколькими мониторами.
  • Позаимствовать из KWin-эффекта ‘Present Windows’ возможность выделения пользователем окон, печатая определенный фильтр для оконного заголовка: фильтр по слову Dolphin расположит в мозаике только окна Dolphin’a, оставив окно xchat болтаться в центре.

Детали воплощения

В идеале — полная поддержка тайлинга в KWin, что включает в себя:

  • Согласование всех вносимых изменений с командами KWin и KDE Usability.
  • Код поддержки тайлинга, включая новые режимы расположения, стэки, управление сессиями и экранные жесты, должен быть добавлен непосредственно в ядро KWin.
  • Awesome как источник вдохновения и алгоритмов.
  • Правильное взаимодействие с командами WM, такими как Cascade, Unclutter или Present Windows.
  • Выделение/отметка окон и соответствующие клавиатурные комбинации.
  • D-BUS API.
  • Работа со слоями, стэком окон.
  • Настраиваемые опции перемещения окон, «вменяемые» шорткаты для слоёв, исключающие конфликты с существующими горячими клавишами. Эквивалентная поддержка мыши и клавиатуры: всё, что можно сделать с помощью клавиатуры, можно будет выполнить и мышью.
  • Добавить поддержку группировки plasma-панелей и виджетов в код панели задач и API D-BUS.
  • Возможность исключить стандартными средствами KWin встраивание некоторых типов окон и приложений в мозаику.
  • Пользовательская документация, исправление ошибок.

Текущий прогресс

Для совсем нетерпеливых — код лежит здесь. Также понадобится отредактировать $KDEDIR/share/config/kwinrc и выставить Placement=Tiling

treeBasedTiling


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

tilingRatiosAndOrientations


После этого была добавлена поддержка минимизации, вертикальная и горизонтальная ориентация, коэффициент заполнения (пропорция, определяющая сколько места слева займёт потомок).
Не забыт и D-BUS, можно использовать следующие вызовы:

qdbus org.kde.kwin /KWin slotToggleOrientation
qdbus org.kde.kwin /KWin slotSetRatio  # between 0 and 1
qdbus org.kde.kwin /KWin dumpTiles  # get a nice tree if you have debugging enabled and visible

dynamic resizing and the first layout

За тем была реализована поддержка динамического изменения размера — если увеличить размер одного окна, остальные подстроятся под него; и первая схема (layout) размещения окон — Спираль, уполовинивающая размеры фреймов по направлению движения к центру спирали. Планируется реализовать все схемы/макеты в виде отдельных плагинов, и дать возможность назначить на каждый виртуальный рабочий стол свою схему размещения.

Ну и в последнем на сегодняшний день статус-репорте сообщается следующее:

  1. Каждый рабочий стол теперь имеет свою собственную схему.
  2. Корневой фрейм теперь теперь не содержится непосредственно в рабочем пространстве (workspace), а наоборот, workspace хранит схемы для каждого десктопа.
  3. Сейчас каждый десктоп по умолчанию имеет схему Спираль, но схему можно поменять и на ходу.
  4. Добавлена поддержка перемещения окон между виртуальными рабочими столами: сначала это было большой проблемой, но теперь — просто дело удаления фрейма на одном десктопе и добавления его на другой.

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

Скриншотов нет, так как все последние изменения видны только в динамике, а скринкаст автору было делать лениво. Но вы-то всегда можете скомпилировать KWin из соответствующей ветки репозитория :)

  • Если появится первая тестовая версия то несомненно попробую. Идея интересна но ставить KDE на ноут ещё 100 раз подумаю

  • Если появится первая тестовая версия то несомненно попробую.

    Ну, это не раньше первой беты, всё-таки KWin один из ключевых компонентов среды.

  • Глядишь такими темпами авесомщики на кеды переберуться :)


    А вообще начинание полезное

blog comments powered by Disqus