Merge wiki additions into vault files
- wireguard-vpn: add Related notes section - tv-luna-send: add Common Luna URIs table - htpc-magic4pc: add WebOS app build/deploy, auto-launch, back key sections - watchlist-automation: new file (full pipeline overview, migrated from wiki) - watchlist-discover: update cron jobs (migrated to Kraken 2026-05-27)
This commit is contained in:
@@ -92,6 +92,78 @@ TV шлёт координаты в пространстве 0–1920 × 0–108
|
||||
- **Бинарь слетает** после `rpm-ostree upgrade` → пересобрать и скопировать.
|
||||
- **Display switching** — при смене между `:0` и `:1` xdotool перезапускается. Если переключение происходит часто (мигающие окна) — возможны краткие потери мыши.
|
||||
|
||||
## WebOS TV App — сборка и деплой
|
||||
|
||||
TV-часть — React/Enact WebOS приложение + Node.js сервис, упакованные в IPK. Исходники: `~/Developer/magic4pc/webos/`.
|
||||
|
||||
### Сборка
|
||||
|
||||
```bash
|
||||
cd ~/Developer/magic4pc/webos
|
||||
NODE_OPTIONS=--openssl-legacy-provider npm run build
|
||||
```
|
||||
|
||||
**Питфолл:** `--openssl-legacy-provider` обязателен — старый webpack несовместим с Node.js 25+.
|
||||
|
||||
### Упаковка IPK
|
||||
|
||||
```bash
|
||||
/Users/admin/webOS_TV_SDK/CLI/bin/ares-package dist/ service/ --outdir .
|
||||
```
|
||||
|
||||
**Питфолл:** нужны оба аргумента `dist/` и `service/` — без `service/` Node.js сервис не попадает в IPK.
|
||||
**Питфолл:** `npm run package` = `ares-package -n` (unsigned) — TV отклоняет неподписанные пакеты. Использовать SDK-команду напрямую.
|
||||
|
||||
### Деплой (deploy.sh)
|
||||
|
||||
```bash
|
||||
cd ~/Developer/magic4pc/webos && ./deploy.sh
|
||||
```
|
||||
|
||||
Скрипт: build → package → scp → close → remove → install → launch.
|
||||
Для install (subscribe mode) — прямой `ssh+script` с polling на `"state":"installed"`.
|
||||
|
||||
**Питфолл:** `ares-install` / `ares-launch` ненадёжны — не ждут завершения. Использовать `luna-send dev/install` через script-враппер.
|
||||
|
||||
Версия в UI отображается как `1.1.0 (YYYY-MM-DD HH:MM)` — инжектируется webpack через `process.env.BUILD_DATE`.
|
||||
|
||||
## Auto-launch при включении / пробуждении TV
|
||||
|
||||
Magic4pc запускает настроенное приложение при включении или пробуждении TV.
|
||||
|
||||
| Файл | Расположение | Назначение |
|
||||
|------|-------------|-----------|
|
||||
| `magic4pc-settings` | PERSISTENT_DIR | ID выбранного приложения |
|
||||
| `magic4pc-last-app` | PERSISTENT_DIR | Последнее активное приложение |
|
||||
| `magic4pc-run-state` | `/tmp/` | `running` после первого запуска |
|
||||
|
||||
`PERSISTENT_DIR = /media/developer/apps/usr/palm/services/me.wouterdek.magic4pc.service`
|
||||
|
||||
Логика:
|
||||
- **Boot/wake:** `/tmp` очищается → нет `run-state` → `freshStart=true` → запускает настроенное приложение
|
||||
- **Ручной запуск:** `run-state=running` уже есть → auto-launch пропускается
|
||||
|
||||
`init.d` скрипт на TV (`/var/lib/webosbrew/init.d/magic4pc`) удаляет `run-state` при suspend — wake снова тригерит fresh launch. Редактировать только в репо (`tv-scripts/init.d-magic4pc.sh`), не напрямую на TV.
|
||||
|
||||
## WebOS Back Key + системная клавиатура
|
||||
|
||||
Когда системная клавиатура открыта, **первый Back** поглощается OS (закрывает клавиатуру) — `keydown` и `onButtonDown` **не стреляют**. Второй Back приходит нормально.
|
||||
|
||||
Фикс в `MainPanel.js` (флаг `_kbWasOpen`):
|
||||
|
||||
```js
|
||||
// Input.onActivate:
|
||||
this._kbWasOpen = true;
|
||||
|
||||
// onButtonDown на Back:
|
||||
if (this.state.wolMacActive || this._kbWasOpen) {
|
||||
this._kbWasOpen = false;
|
||||
return; // подавить закрытие панели
|
||||
}
|
||||
```
|
||||
|
||||
Подходы, которые не работают: `Popup.noAutoDismiss`, timeout-эвристика, polling `document.activeElement` (клавиатура — системный оверлей, фокус не переходит на INPUT).
|
||||
|
||||
## Деплой и sudoers
|
||||
|
||||
На HTPC настроен sudo без пароля для systemctl:
|
||||
|
||||
Reference in New Issue
Block a user