LINUX.ORG.RU

Hybrid Desktop Environment

 ,


1

1

Все началось на втором курсе, во времена, когда человеческие планшеты только начали появляться, а Android был еще во второй ветке. Появилась мысль написать свое окружение рабочего стола, позволяющее запускать несколько приложений одновременно, но при этом адаптированное для небольших сенсорных экранов. Эту идею разделял один мой одногруппник (Кирилл), имевший уже к тому моменту некоторый опыт в разработке на OpenGL.

Планирование — самая захватывающая часть в разработке ПО, а в такой масштабной задаче оно приятно затянулось аж на целый месяц. Хотя стоит признать, что выбор названия занял приличную часть времени. Было принято решение написать сначала свой 2.5D движок, а после доработать его до полноценного композитного менеджера окон. Тащить какой-нибудь тулкит нам показалось излишеством, потому подразумевалось, что панели и меню будут использовать тот же движок для отрисовки( как это сделано в Unity, насколько я понимаю ). Велосипедить свои файловый менеджер и плеер было бы неразумно, да и, раз уж мы независимы от тулкитов, пусть каждый использует то, что ему ближе. Программ, адаптированных для сенсорных экранов практически не было, потому планировалось после релиза начать работу по адаптации GUI некоторых популярных проектов, поддерживать соответствующий репозиторий.

О том, что из этого вышло, !Ъ могут почитать тут, Ъ в комментариях.

Немного интерактивный прототип

>>> Просмотр (1263x891, 551 Kb)

★★★★★

Проверено: JB ()

Как нам казалось, важнее всего минимизировать необходимость лезть в центр экрана, потому органы управления расположились под большими пальцами (если держать планшет двумя руками). На левой панели сверху-вниз: угол перехода в полноэкранный режим, панель быстрого запуска, панель запущенных приложений. Справа трей, стрелки для переключения рабочих столов, некоторые служебные функции. Фокус между окнами должен был перемещаться по касанию. Вместо декораций окон планировалось использовать управляющую сферу, расположенную сверху на правой панели: при нажатии на нее, она перемещается к центру активного окна, рядом всплывают надписи «закрыть», «свернуть», возможно что-нибудь еще. Конечно, сейчас уже общепринято делать такие вещи по долгому нажатию, и наше решение смотрится несколько странным. Разрешение получилось примерно как на моем ноутбуке, и в полноэкранном режиме безумно мне понравилось. Ну а раз так, в план добавилась desktop-версия, избавленная от гигантизма, и получившая поддержку мыши. Дальше — больше. Чего бы еще добавить в идеальное DE мечты?) Мы захотели некрасноглазый менеджер окон с продвинутыми возможностями тайлинга. Предполагалось два режима, переключающихся по хоткею/активному углу:

  • Режим работы — можно свободно перемещать привычные floating-окна, tiled-окна закреплены.
  • Режим настройки — подсвечивается сетка окон, каждую грань которой можно перемещать мышкой.

Перемещая крайнюю грань — добавляем ячейку, перемещая среднюю — меняем размеры ячеек. Есть возможность перетягивать floating-окна в ячейки и обратно, причем если в одну и ту же ячейку можно поместить несколько окон, их заголовки выводятся во вкладках. Конечно, звучит несколько сумбурно, надеюсь на примере будет понятнее: click!

Хватило ли нам воображения добавить еще чего-нибудь? :) Конечно хватило, кто бы сомневался. Я вот всегда мечтал о трансформации окружения под задачу — так появилась концепция комнат. Такая концепция позволяла для каждого вида деятельности настраивать буквально все, начиная от тем оформления, и заканчивая привязкой конкретного окна к определенной ячейке рабочего стола. Таким образом, появлялась возможность в один клик создать атмосферу для работы, или минимальное окружение для игр. Фуух… тем временем, семестр начался уже всерьез, и развернувшаяся было работа шла крайне медленно и урывками. В итоге к лету у нас уже были некоторые демки движка, прототип меню приложений, инит-системы, я просмотрел кучи концептов окружений рабочего стола, появилось примерное понимание как все это, в целом, должно работать. За лето движок был практически дописан, была написана библиотека для работы с ini-подбными конфигурационными файлами(по стандарту free desktop).

Осень

Настал самый драматический момент в нашей истории: наконец-то взялись писать WM! Кирилл начал работу в области композитинга, а я — с головой погрузился в увлекательный мир спецификации NETWM, описывающей все, что обязан уметь уважающий себя менеджер окон. Писал обвязку для работы с хинтами, скачивал и препарировал исходники небольших панелей задач и WMов, начал backend для собственного. Опыта было мало, документации и примеров еще меньше, зато подводных камней — сколько угодно. Ничего удивительного, что работа шла медленно, и постепенно заглохла, в очередной раз уступив место учебе. А тут еще и Wayland многозначительно показался на горизонте, обещая скорое вытеснение XOrg'a, и обесценивание наших усилий по борьбе с ним. Стал закрадываться соблазн писать тогда уж сразу под него, став первым чисто Wayland окружением… Кто знает, чем закончилась бы эта история, если бы 100% разработчиков не позвали бы работать уже весной, а на работе не было бы OS X? Менеджер окон, там, конечно, весьма посредственный, зато все остальное более чем достойное. Осознавали ли мы масштаб, пытаясь сдвинуть гору? Пожалуй нет, мы были полны оптимизма, вдохновлены примером Линуса, и некоторых других личностей. Конечно, сегодня, начиная такой проект, однозначно остановились бы на Qt, что сэкономило бы минимум год разработки, начинали бы с рабочего прототипа. Но с другой стороны, нисколько не жалеем о потраченном времени, ведь как еще можно приобрести столько опыта и вдохновения, не пытаясь объять необъятное?

CrossFire ★★★★★ ()

О том, что из этого вышло, !Ъ могут почитать тут, Ъ в комментариях.

Но там ведь нет комментариев.

А вообще, немного похоже на коробочный bodhi linux.

Amet13 ★★★★★ ()

На швабре не любят репосты. Даже с учётом того, что в песочнице оно появилось на неделю раньше, выглядеть будет всё же так.

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

На швабре не любят репосты. Даже с учётом того, что в песочнице оно появилось на неделю раньше, выглядеть будет всё же так.

Если провисело неделю без инвайта, так в песочнице на веки и останется, КО.

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

кнопки управления окном в заголовке слишком маленькие для тача
ну и в целом выглядит максимально уныло

Это нечто, накиданное за вечер на коленке, просто некий образ того, что мы хотели получить на выходе. Прорабатывать такой концепт на уровне деталей смысла не имеет, все равно все сто раз изменится.

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

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

Вот это надо было в новости, а не в галерею.

Новость о том, что не взлетело то, о чем никто не знал?)

CrossFire ★★★★★ ()

На первый взгляд непонятное нагромождение всего, но интересно.

Deleted ()

зачем нужен калькулятор? Есть же python =)

snaf ★★★★★ ()

Конечно, могу ошибаться, но, не проще было пересобрать какой-нить WM, чем пилить всё с нуля? Или это спортивный интерес?

Igorrr ★★★★ ()

Специалист по юзабилити по вам плачет :)

mono ★★★★★ ()

Отличное начало. Главное, чтобы допилил потом, прочитав пару книжек по дизайну.

И выкладывай сорцы - будет интересно посмотреть, кому надо - форкнуть + апстримить.

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

Отличное начало.

О том, что из этого вышло, !Ъ могут почитать тут, Ъ в комментариях.

Окончание было два года назад.

И выкладывай сорцы

Нужно переписывать все с нуля и на Qt, в любом случае.

CrossFire ★★★★★ ()
Последнее исправление: CrossFire (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.