API OTools
Все плагины вызывают возможности через window.otools.
| Группа | Содержимое |
|---|---|
| Система | Буфер, файлы/пути, уведомления, Shell |
| Runtime | Платформа, версия, UUID, переменные |
| Native | Загрузка, вызов, probe, hot reload |
| Состояние плагина | Локальное/синхр. состояние, scheme‑хранилище |
1. Runtime и окружение
ts
const appName = otools.getAppName();
const appVersion = otools.getAppVersion();
const nativeId = otools.getNativeId();
const pluginUuid = otools.getPluginUuid();
const isDev = otools.isDev();
const platform = otools.isMacOS() ? 'macos' : otools.isWindows() ? 'windows' : 'linux';
const desktopPath = otools.getPath('desktop');2. Буфер обмена и файлы
ts
otools.copyText('Hello OTools');
otools.copyFile(['/path/a.txt', '/path/b.png']);
otools.copyImage('data:image/png;base64,...');
const files = otools.getCopyedFiles();3. Система и Shell
ts
otools.showNotification('Сборка завершена');
otools.shellOpenPath('/Users/you/Desktop');
otools.shellShowItemInFolder('/Users/you/Downloads/file.zip');
otools.shellTrashItem('/Users/you/Downloads/old.log');
otools.shellOpenExternal('https://otools.lingyun.net');
otools.shellBeep();4. Вызовы Native
ts
const result = await otools.invokeNative('ping', { from: 'plugin' });
const raw = await otools.invokeNativeRaw('echo', { hello: 'world' });
await otools.reloadNative();
const probe = await otools.probeNative();Вызовы между плагинами:
ts
await otools.invokeNativePlugin('plugin-uuid', 'ping');
await otools.reloadNativePlugin('plugin-uuid');5. Хранение состояния плагина
Поддерживаются локальное состояние и синхронное состояние; scheme позволяет несколько JSON‑хранилищ.
ts
const plugin = otools.getPluginUuid();
// local state
await otools.savePluginLocalState(plugin, { mode: 'focus' }, 'workspace');
const localState = await otools.getPluginLocalState(plugin, 'workspace');
// local state value
await otools.savePluginLocalStateValue(plugin, 'theme', 'dark', 'workspace');
const theme = await otools.getPluginLocalStateValue(plugin, 'theme', 'workspace');
// sync state
await otools.savePluginSyncState(plugin, { version: 1 }, 'profile');
const syncState = await otools.getPluginSyncState(plugin, 'profile');Подсказка: если
schemeне указан, используетсяstate.json. Передайтеworkspace, чтобы получитьworkspace.json.