Open Stream Deck

Плагины

Установка плагинов .opensd, разрешения, журнал, перезапуск и режим разработчика.

Приложение запускает плагины SDK 1.0, которые распространяются файлами .opensd. Плагины Elgato, AJAZZ и StreamDock и пакеты SDK 0.2 больше не поддерживаются. Как писать плагины, описано в разделе SDK.

Как работает плагин

Код плагина не исполняется в процессе приложения и не получает прав пользователя. Каждый плагин работает в своём изолированном воркере движка WebView: у него нет файлов, процессов, окна приложения и сети. Подписи, картинки и настройки кнопок плагин меняет командами, которые приложение проверяет. Всё, что выходит за песочницу, требует разрешения.

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

Установка

«Настройки», «Плагины», «Установить из файла», затем выберите файл .opensd. Приложение проверяет пакет до установки:

  • индекс index.json должен совпадать с каждым файлом по размеру и SHA-256;
  • в пакете не должно быть исполняемых файлов Windows, macOS и Linux;
  • модуль WebAssembly может импортировать только opensd.send;
  • манифест должен быть корректным и совместимым с версией приложения.

Установка только распаковывает и проверяет файлы, разрешения при этом не выдаются. Плагины лежат в папке данных приложения, в каталоге opensd/plugins; кнопка «Открыть папку плагинов» показывает её. Повторная установка того же id заменяет старую версию целиком, а при ошибке возвращает прежнюю. Пока идёт dev-сеанс плагина, установить его из файла нельзя.

Разрешения

Если плагин просит доступ к системе, в его строке появляется кнопка «Разрешить доступ». Окно «Доступ плагина к системе» перечисляет, что именно плагин просит: порты на этом компьютере, адреса в интернете, запуск программ, запись в буфер обмена. Пока доступа нет, плагин работает и помечен «ждёт разрешения», но такие операции получают отказ.

  • Согласие привязано к содержимому раздела [permissions]. Если обновление просит другое, согласие запрашивается заново.
  • «Отозвать доступ» сразу перезапускает плагин без доступа.

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

Разрешение это решение пользователя, а не проверка автора. Например, доступ к порту отладки браузера даёт плагину полный контроль над браузером, включая открытые сессии.

Состояние, журнал и перезапуск

Под названием плагина видны версия, тип кода (WebAssembly или JavaScript), число действий и состояние: «запускается», «ждёт разрешения», «перезапускается после сбоя», «остановлен после сбоев».

  • Зависший или упавший плагин приложение перезапускает само с нарастающей паузой. После шести сбоев подряд плагин остаётся остановленным, пока его не перезапустят кнопкой.
  • «Журнал» показывает файл журнала плагина в папке. Предыдущий запуск хранится рядом в <id>.old.log. В него попадают сообщения плагина, ошибки обработчиков и причины перезапусков.
  • «Настройки» в строке плагина открывает окно настроек всего плагина, если оно у него есть.

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

Переключатель «Режим разработчика» в «Настройки», «Плагины» разрешает CLI opensd dev подключиться к приложению. Приложение записывает порт и токен в opensd-dev.json в папке данных и принимает соединения только с 127.0.0.1. Пока идёт dev-сеанс, плагин из проекта заменяет установленную копию с тем же id и отмечен как «dev-сеанс». Подробности в разделе CLI.

Встроенные модули

Встроенные действия приложения показываются в том же списке с пометкой «Встроенный». Их нельзя удалить. В группе «Доступные» перечислены встроенные модули, которые ещё не добавлены.