Информация о конфигурационном файле:
- расположение:
/etc/xdg/plasmamobilerc
- владелец:
root
- группа:
root
- права доступа:
rw-r--r--
Параметр WaydroidDefaultOrientation
, задающий ориентацию по умолчанию для всех приложений Waydroid, располагается в секции APPORIENTATION
конфигурационного файла.
Все остальные параметры являются именем приложения в системе.
Пример системных приложений:fly-camera=#
fly-gallery=#
Пример приложений waydroid (см. команду waydroid app list
):waydroid.com.android.calculator2=#
waydroid.org.lineageos.etar=#
waydroid.org.lineageos.jelly=#
waydroid.com.devinterestdev.streamshow=#
где #
— код ориентации экрана.
Пример минимального конфигурационного файла:
[APPORIENTATION]
WaydroidDefaultOrientation=4
Пример дополненного конфигурационного файла:
[APPORIENTATION]
WaydroidDefaultOrientation=4
waydroid.com.devinterestdev.streamshow=4
waydroid.com.android.calculator2=1
waydroid.org.lineageos.etar=2
waydroid.org.lineageos.jelly=3
fly-camera=1
fly-gallery=2
chromium=4
Ориентация экрана устройства:
Варианты ориентации экрана показаны здесь в следующем порядке:
- верхняя грань сверху;
- верхняя грань снизу;
- левая грань сверху;
- правая грань сверху;
- лицевая сторона сверху;
- лицевая сторона снизу.
Значение параметра | Положение устройства | Ориентация экрана приложения |
---|---|---|
1 | Верхняя грань устройства направлена вверх | Приложение запустится в ландшафтной ориентации |
2 | Верхняя грань устройства направлена вниз | Приложение запустится в портретной ориентации (справа налево) |
3 | Левая грань устройства направлена вверх | Приложение запустится в зеркальной портретной ориентации (слева направо) |
4 | Правая грань устройства направлена вверх | Приложение запустится в зеркальной ландшафтной ориентации (вверх ногами) |
ВНИМАНИЕ! Данное описание эффектов применимо для устройства Lenovo IdeaPad URU. Для устройств, у которых аппаратно задан другой левый верхний угол, указанные эффекты могут быть инвертированы.
ВНИМАНИЕ! Значения, не входящие в приведенную таблицу, считаются невалидными и могут привести к неправильной работе функционала.
Используемые скрипты:
Основные:
Расположение: /usr/sbin
astra-mobile-waydroid-watcher-session - Скрипт, управляющий функционалом на уровне сессии по сигналам dbus
Требования:
- Права user;
Принцип работы:
Ожидает получения команды на перезапуск сессии waydroid с последующим запуском приложения.
Расположение: /usr/sbin
astra-mobile-waydroid-watcher - Скрипт, управляющий функционалом на уровне системы по сигналам dbus
Требования:
- Права root;
Принцип работы:
Ожидает получения команды на изменение конфигураций разрешения окна waydroid.
Цепочка выполнения:
Пользователь запускает приложение -> производится проверка необходимости смены ориентации экрана для запускаемого приложения
-> если приложение существует в конфигурационном файле, ему задаётся указанная ориентация экрана, автоматический поворот экрана блокируется.
-> производится проверка что приложение является приложением waydroid
-> если это приложение waydroid то в случаи различного разрешения в конфигурационном файле (/var/lib/waydroid/waydroid_base.prop) и необходимого для приложения, производится изменение разрешение в конфигурационном файле и перезапуск сессии waydroid с повторным запуском указанного приложения (по средствам отправки dbus сигналов скриптам astra-mobile-waydroid-watcher и astra-mobile-waydroid-watcher-session).
При переключении между приложениями так же происходит проверка необходимости смены ориентации экрана для активируемого приложения
-> если приложение существует в конфигурационном файле, ему задаётся указанная ориентация экрана, автоматический поворот экрана блокируется
-> если приложения не существует, то ориентация будет установлена в соответствии с текущими показаниями сенсора а флаг автоматического поворота будет возвращён к предыдущему состоянию до блокировки.
Методика тестирования:
Для обычных системных приложений:
- В конфигурационный файл /etc/xdg/plasmamobilerc в секцию APPORIENTATION (возможно её придётся создать) требуется добавить имя приложения в системе и указать ориентацию из таблицы.
- Запустить приложение, проверить что ориентация изменилась а автоповорот заблокировался.
- Произвести переключение между несколькими приложениям в разных ориентациях (в том числе не заблокированных).
Ожидаемый результат:
Ориентация фиксированных приложений должна автоматически применяться при запуске и при переключении на него с помощью alt+tab или графического интерфейса;
Автоматический поворот для фиксированных приложений должен блокироваться и восстанавливать прежнее значение при переключении на не фиксированные приложения;
Для приложений waydroid:
- В конфигурационный файл /etc/xdg/plasmamobilerc в секцию APPORIENTATION (возможно её придётся создать) требуется добавить параметр WaydroidDefaultOrientation=# для всех приложений waydroid по умолчанию;
- В конфигурационный файл /etc/xdg/plasmamobilerc в секцию APPORIENTATION требуется добавить имена нескольких приложений waydroid (см команду waydroid app list) с разной ориентацией;
- Произвести запуск указанных приложений (ВНИМАНИЕ! Приложения с разной ориентацией (за исключением зеркальной) одновременно работать не будут!).
Ожидаемый результат:
Ориентация фиксированных приложений должна автоматически применяться при запуске и при переключении на него с помощью alt+tab или графического интерфейса;
Автоматический поворот для фиксированных приложений должен блокироваться и восстанавливать прежнее значение при переключении на не фиксированные приложения;
В случаи последовательного запуска приложений с разной (не зеркальной) ориентацией, запуск будет проходить дольше обычного т.к. требуется время на повторную инициализацию. Все приложения waydroid при этом будут закрыты;
В случаи последовательного запуска приложений с одинаковой или зеркальной ориентацией перезапуска быть не должно и приложение должно открыться за более короткое время.