Плазменный телефон
В одном из моих последних блогов я объяснил, что такое конвергенция, как ее использует плазма и почему мы считаем ее целью для плазмы. На этот раз я объясню, как , как это работает в стеке и как мы это реализовали. Естественно, эта статья технически намного глубже, чем моя предыдущая.
Конвергенция играет роль на разных уровнях всего программного стека. В этой более технической статье я рассмотрю различные уровни программного стека: от загрузки / ядра и промежуточного программного обеспечения до элементов управления пользовательского интерфейса и общих методов размещения и ввода. Прочитав эту статью, вы поймете, как Plasma позволяет использовать одно и то же программное обеспечение на разных устройствах, какие части отличаются, и где совместное использование кода имеет смысл, и, таким образом, происходит.
Имейте в виду, что конвергенция, по крайней мере для Plasma, не означает, что мы поставляем пользовательский интерфейс с наименьшим общим знаменателем, так что он «работает» на любом компьютере, но предоставляет набор инструментов для создания пользовательских интерфейсов, которые позволяют использовать преимущества конкретных характеристик данного целевого устройства.
Нижние уровни и упаковка
Плазма - один и тот же код, разные устройства
Одним из аспектов конвергенции является, конечно, сторона развертывания. Это касается не только ядра и загрузчика, которые должны быть скомпилированы по-разному для устройств ARM и для устройств x86. Остальная часть стека к настоящему времени во многом совпадает. Сейчас мы используем один и тот же набор пакетов и CI как для мобильных, так и для настольных сборок, фактически большинство пакетов одинаковы, и разница между устройством, настроенным для мобильных случаев использования, и настольным компьютером заключается в выборе пакетов и началось по умолчанию. Все в значительной степени интегрировано, распределена большая работа, что означает своевременные обновления по всему спектру устройств, которые мы обслуживаем.
управления
Плазма Мобайл
Когда дело доходит до элементов управления пользовательского интерфейса, таких как кнопки, текстовые поля и т. Д., Конвергенция в основном является решенной проблемой. Сенсорный ввод возможен, в настоящее время Qt даже поставляется с виртуальной клавиатурой (которую Plasma использует, например, для ввода пароля на экране блокировки), и кнопки также реагируют на сенсорные события. Пользовательские интерфейсы на основе QtQuick часто довольно хорошо работают как с клавиатурой / мышью, так и с сенсорным вводом, фактически сенсорный ввод - одна из целей разработки QtQuick.
Однако еще не все идеально, особенно выделение текста и управление клавиатурой пользовательских интерфейсов на основе QtQuick часто все еще требуют пользовательского кода, что означает, что для правильной работы требуется больше времени на разработку и сопровождение. Пользовательские интерфейсы на основе QWidget все еще немного опережают игру, хотя зачастую преимущества возможности развертывания приложения на сенсорных устройствах (таких как многие устройства Android!) Делают QtQuick привлекательной технологией для использования. Мы видим все больше и больше приложений на базе QtQuick, поскольку эта технология подходит и для настольных ПК.
Виджеты
Конвергентные плазменные виджеты
Плазма состоит из виджетов. Даже на стандартном рабочем столе Plasma все является виджетом: меню в левом нижнем углу - это виджет, диспетчер задач - это панель задач, это виджет, а внутри панели задач есть виджеты для уведомлений, батареи, звука, сети. и т.д .. Плазма это виджеты.
Эти виджеты, конечно, можно использовать на любом устройстве, но это не всегда имеет смысл. Некоторые из этих виджетов очень специфичны для настольных компьютеров. Диспетчер задач (то, что вы используете для переключения окон, который обычно расположен в центре нижней панели) не имеет смысла на мобильном устройстве. Для мобильного устройства, которому требуются большие области для касания, полезно нечто большее, чем полноэкранный переключатель окон (и фактически то, что мы используем для Plasma Mobile). Другие виджеты, такие как виджет сетевых подключений или виджеты батареи и яркости, идеально подходят также для мобильных устройств. Архитектура Plasma позволяет нам повторно использовать компоненты, которые не нуждаются в изменениях, или просто вносить небольшие изменения, и использовать их на разных устройствах. Это означает, что мы можем сосредоточиться на недостающих битах для каждого устройства, и это, в свою очередь, означает, что мы можем гораздо проще предоставлять многофункциональный и согласованный пользовательский интерфейс для всех устройств, обеспечивая при этом, чтобы конкретные характеристики данного форм-фактора использовались в полной мере. степени.
Опять же, благодаря совместному использованию компонентов, которые имеют смысл делиться, мы можем предоставлять более качественные функции для данного устройства с меньшими усилиями и, следовательно, быстрее.
Shell and Look & Feel
Посмотрите и почувствуйте настройки для плазмы
Плазма может динамически загружать различные так называемые пакеты оболочки. Пакет оболочки определяет общий макет рабочей среды. На рабочем столе написано, что есть полноэкранный фоновый рисунок с видом на папку, панелью внизу и виджетами, которые загружаются в эту панель: например, панель запуска приложений, диспетчер задач, системный трей и часы.
Пакет оболочки отличается для каждого устройства, так как это определяет общий рабочий процесс, который сильно зависит от типа устройства.
Чтобы еще больше отличать устройства, в Plasma есть концепция пакетов «Look and Feel», которые позволяют более детально определить, как устройство выглядит и чувствует себя. Есть стиль виджета и обои конечно. Пакет Look and feel также определяет шаблоны взаимодействия, например, если интерфейс настроек должен использовать «немедленное применение» при изменении настройки, или если он должен представлять кнопку «Применить и окей», чтобы пользователь мог сохранить настройки. Мобильные устройства обычно используют мгновенное применение, в то время как настольные интерфейсы (по крайней мере, плазменные) используют концепцию «Применить и все в порядке». Для плазменных интерфейсов это может быть изменено динамически. Функции Plasma Look and Feel не только полезны в аспекте конвергенции, они также позволяют, например, переключаться между традиционной настройкой Plasma по умолчанию и рабочим пространством, которое очень похоже на Unity. Эти пакеты «Look and Feel» доступны в магазине KDE, поэтому их легко установить и поделиться ими. Есть даже классный инструмент, который позволяет вам создавать свои собственные пакеты Look и Feel, очень похожие на темы.
Программы
Подповерхность Mobile, Linux, Android и iOS из одной и той же кодовой базы
Наконец, на уровне приложений мы видим все больше и больше конвергентных приложений. Kirigami, высокоуровневый инструментарий, который поставлял компоненты для последовательной, удобной для сенсорных и клавиатурных / мышиных приложений навигации и макета, позволяет очень легко создавать приложения с отзывчивые интерфейсы которые хорошо адаптируются к размеру и плотности экрана и проявляют гибкость в методах ввода. Это не только работает между ноутбуками и телефонами, но также позволяет создать одно приложение, которое одинаково хорошо работает на настольных компьютерах, ноутбуках, телефонах и планшетах.
Kirigami дополняет функцию конвергенции Plasma на стороне приложения, и мы рекомендуем ее для большинства новых приложений. Поскольку Qt и QtQuick являются жизнеспособной целью для устройств Android, это в значительной степени увеличивает возможную целевую аудиторию. В качестве примера, Подземный Мобильный , приложение для аквалангистов, использует Kirigami и работает на рабочих столах Linux, Android и iOS, все из одной и той же кодовой базы.
Сделай это…
Если вам нравится идея конвергенции, почему бы не присоединиться к KDE и помочь нам работать с Plasma? Возможно, вы хотели бы видеть плазму на мобильном телефоне? В этом случае рассмотрите возможность поддержки краудфандинговая кампания для librem5 так что мы можем построить конвергентный телефон!
Возможно, вы хотели бы видеть плазму на мобильном телефоне?