Open Stream Deck

Быстрый старт

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

Всё нужное ставится из npm или crates.io. Клонировать репозиторий SDK и собирать его не нужно.

Что понадобится

  • Приложение Open Stream Deck с подключённым устройством.
  • Для JavaScript и TypeScript: Node.js 18 или новее.
  • Для Rust: Rust через rustup.

Язык выбирайте по задаче. JavaScript проще всего: один файл, никакой сборки. TypeScript даёт проверку типов. Rust подходит для тяжёлой логики, когда важны размер и скорость.

TypeScript

npm create @opensd my-plugin
cd my-plugin
npm install
npm run dev

npm create @opensd создаёт проект на TypeScript. npm install ставит @opensd/cli с готовым бинарником opensd под вашу систему, esbuild и TypeScript. Код плагина лежит в src/plugin.ts.

КомандаЧто делает
npm run devЗапускает плагин в приложении и перезапускает при каждом сохранении
npm run packСобирает пакет .opensd
npm run typecheckПроверяет типы

JavaScript

Поставьте CLI один раз на машину:

npm install -g @opensd/cli

Затем:

opensd new my-plugin --lang js
cd my-plugin
opensd dev

У проекта на JavaScript нет package.json и зависимостей. Весь код в одном файле plugin.js, рядом лежит opensd.d.ts, по которому редактор подсказывает API.

Без глобальной установки работает так же, через npx: npx @opensd/cli new my-plugin --lang js, затем npx @opensd/cli dev.

Rust

rustup target add wasm32-unknown-unknown
cargo install opensd-cli
opensd new my-plugin
cd my-plugin
opensd dev

cargo install собирает CLI из исходников. Если стоит cargo-binstall, команда cargo binstall opensd-cli скачает готовый бинарник, это быстрее. Подойдёт и npm install -g @opensd/cli: бинарник тот же.

Код плагина лежит в src/lib.rs, крейт opensd подключается с crates.io. Все Rust-плагины на машине собираются в общий каталог в кеше пользователя, поэтому зависимости компилируются один раз, а не в каждом проекте.

Что в проекте

Шаблон сразу работает: одно действие «Counter». Нажатие прибавляет шаг, долгое нажатие сбрасывает счётчик. Шаг настраивается полем в настройках кнопки.

ФайлНазначение
opensd.tomlМанифест: id, название, версия, действия, разрешения. См. манифест
plugin.js, src/plugin.ts, src/lib.rsКод плагина
assets/Иконка плагина и картинка кнопки

Id плагина по умолчанию com.example.<имя каталога>. Перед публикацией замените его на свой, в обратной доменной записи: com.yourname.weather. Задать его можно сразу: opensd new my-plugin --id com.yourname.weather.

Запуск в приложении

  1. В приложении откройте «Настройки», «Плагины» и включите «Режим разработчика».
  2. В каталоге проекта запустите opensd dev (в проекте на TypeScript npm run dev).
  3. Плагин появится в списке действий редактора кнопки. Поставьте действие на кнопку и нажмите её.

Пока работает opensd dev, каждое сохранение пересобирает и перезапускает плагин, а его журнал выводится в терминал. Ctrl+C завершает сеанс, и приложение возвращает установленную версию плагина, если она была.

Упаковка

opensd pack

Команда пишет dist/<id>-<version>.opensd и выводит размер и SHA-256. Этот файл и есть плагин: его отдают пользователям, а они ставят его через «Настройки», «Плагины», «Установить из файла».

Перед тем как отдавать пакет, посмотрите на него глазами пользователя:

opensd inspect dist/com.yourname.weather-0.1.0.opensd

inspect показывает манифест, действия, разрешения простыми словами и хэши всех файлов.

Дальше