Расширения
Расширения добавляют функции, не меняя сам лаунчер: свои страницы, пакетные операции с инстансами, интеграции с внешними сервисами, помощники для мультиплеера.
Хотите сразу писать код?
Готовы шаблоны для шести языков: Шаблоны по языкам. Склонируйте, поменяйте id — и готово.
Структура
my-ext/
├─ manifest.json id, имя, версия, среда, точка входа, права
├─ main.jar точка входа (.py / .js / .exe тоже подходят)
└─ lib/ зависимости (необязательно)Положите каталог в extensions/ внутри каталога данных — он появится в «Настройки → Расширения».
Об импорте, правах и кнопках карточки см. Импорт и управление.
Доверие
При первой загрузке считается SHA-256 всего пакета и записывается в extensions/trusted.json:
{
"hello-go": { "sha": "9f2c…", "enabled": true }
}- Любое изменение пакета ломает хеш — лаунчер откажется загружать расширение.
- Это защита от подмены, а не антивирус. Не ставьте расширения из непроверенных источников.
- Отключение меняет только
enabled, файлы остаются.
Жизненный цикл
сканирование → manifest → проверка полей → сверка trusted.json
→ проверка среды → распаковка во временный каталог (chmod +x для нативных)
→ запуск процесса → канал stdio → hello
→ обмен сообщениями
→ выход / отключение → очисткаРасширение работает отдельным процессом: его падение не роняет лаунчер, а при выходе лаунчер завершает дочерние процессы.
Права
| Право | Значение |
|---|---|
fs.read | Чтение каталога данных |
fs.write | Запись в каталог данных |
net | Сетевые запросы |
process | Запуск дочерних процессов |
ui | Диалоги, уведомления, свои страницы |
launch | Запуск игры |
Вызовы без объявленного права отклоняются и попадают в лог.
Ограничения размера
| Что | Лимит |
|---|---|
| Один файл | 8 MiB |
| Распакованный пакет | 16 MiB |
| manifest.json | 64 KiB |
Нативные бинарники быстро упираются в лимит — делайте strip:
go build -ldflags "-s -w" -o main.exe .
cargo build --release && strip target/release/my-ext