Qt/QML Developer & UX Designer
5,1
рейтинг
11 января 2014 в 13:11

Разработка → О том, как второкурсники свое окружение рабочего стола писали из песочницы

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

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

Разработка


Пришла пора оживить тетрадные наброски интерфейса, и я, собрав в кучу все свои, прямо скажем, небогатые знания Web-технологий, налабал немного интерактивный прототип (трафик!):

image


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

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

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

image

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

Осень


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

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (16)

  • +10
    Не хочу окружение рабочего стола. Хочу агрегат с КДПВ.
    • +7
      Гуглить ktrak
  • 0
    Так всё хорошо начиналось, и такой грустный финал? =(

    Были мысли вернуться и продолжить начинание?

    Концепт окон очень интересен, сами придумали, аль стырили у кого?)
    • +1
      Были мысли сделать свой WM под OS X, но там все прибито гвоздями, а возиться с грязными хаками особого желания нет.
      Под Линукс — до сих пор нет ясности, какой графический сервер в итоге станет стандартом, более того, появился Mir.
      Концепт окон взят из IDE, тот же NetBeans использует фактически такой же подход к организации отображения.
      • 0
        Wayland же.
      • 0
        Я разочарован тем, что вы променяли GNU+Linux на макось. Меня сейчас закидают, если я скажу, что Mir не взлетит. Так что я этого не скажу.
        Под Wayland есть даже окружение, не помню как называется.
        • 0
          E17 почти работает под Wayland.

          Кстати сам Wayland можно кастомизировать, в том числе и сделать из него нечто подобное.
          А EFL работает также и под мобильными платформами.
          • 0
            Кстати сам Wayland можно кастомизировать, в том числе и сделать из него нечто подобное.

            Wayland — это протокол, у него нет даже API рисования, потому его определенно нельзя кастомизировать, или сделать нечто подобное.
            • 0
              Он идет в комплекте с Weston, поэтому отпадает надобность в велосипедах.
            • 0
              Ой, я имел в виду E17, его можно кастомизировать, конечно.
        • 0
          Под Wayland есть даже окружение, не помню как называется.

          Hawaii?
          • 0
            Именно.
        • 0
          Я использовал Gnome 2 на протяжении двух лет после того, как он был объявлен устаревшим. Потому, что был разочарован тем, во что они превратили третью ветку. С KDE у меня не сложилось, сколько не пробовал. Lxde, xfce оказались недостаточно функциональными/отточенными для использования в качестве основного окружения. Unity — была нестабильна и медленна, Dash избыточен, не говоря уже о том, что концепция откровенно скопирована с OS X. Сейчас на ноуте установлена Elementary OS, которая весьма неплоха, но несколько сыровата, стандартные приложения не особо функциональны.
    • 0
      Такой концепт рабочих областей практически у всех IDE.
  • 0
    Я правильно понял, что продолжения истории не будет?
    • 0
      По крайней мере в ближайшем будущем — нет.

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