Вам ещё не надоели пустые места в интерфейсах программ из-за неравномерного заполнения элементов интерфейса? Нам да ;)
Решение простое: поделить экран на квадратно-гнездовые блоки фиксированного предсказуемого размера (скажем, 32×32 CSS-пикселя). Квадратно-гнездовые интерфейсы весьма и весьма взлетают, примеры:
- WindowMaker
- Рабочий стол
- Excel
- Metro UI
- Mine
testcraft - Лончеры на лопатофонах
- Панель расширений Chromium
- etc.
Инновационность по состоянию со всем этим состоит в возможности окна забить любой набор квадратиков. Путём последовательных запросов у менеджера UI типа
claim 1x1
claim 4x3
claim 3x1
claim 4x1
С опциональными (либо принудительными) хинтами, типа:
claim 1x1 → 0x28398983
claim 4x3 below 0x28398983 → 0x28398987
claim 1x2 right 0x28398987 → 0x28398c01
claim 2x1 sparse right!important 0x28398983 → 0x28398c78
Если менеджер UI может впихнуть по хинту — впихивает; нет — в зависимости от приоритета хинта не соблюдает его, либо выпихивает это окно на новый рабочий стол, либо другие окна.
Таким образом:
- можно лепить окна любой вычурной формы (концептуально это уже ближе к LEGO и тетрису);
- можно возродить SDI-интерфейсы, как в GIMP/Cinelerra/Pidgin, в юзабельном виде;
- можно распиливать окно на элементы и разбрасывать их по всему экрану (приложения при этом различать по цвету фона, как нынче модно);
- становится удобно огибать модные нынче вырезы на экранах, а также пользовать частично битые экраны (битые блоки можно пометить для менеджера UI бэдами, как на HDD);
- вместо неюзабельных float-окон привносим тайлинг в массы. Помните, например, маленькие плавающие виджеты управления в виндузятных программах типа Download Master и AIMP, которые вечно мешались? ;) Можно запихнуть их получше. Например, есть полезная прикладная программа с окном такой формы:
xxxxxxx
xxxxxx
xxxxxx
xxxxxxx
xxxxxxx
В ложбинку справа можно напихать два таких мини-виджета 1×1 или один 2×1 от других программ, и они не будут мешаться ;)
Легаси-приложения, которые не поддерживают данную концепцию, могут просто claim один большой прямоугольник.
По идее, это можно прозрачно реализовать расширением Wayland. При этом клиент может ради производительности или обратной совместимости выводить несколько прямоугольников в один surface, а композитор будет их оттуда вырезать, подобно CSS-спрайтам ;) Не умеющие это расширение композиторы вместо свалки маленьких окон будут просто выводить один большой surface, с мусором в «вырезах».