12 lines
1.4 KiB
JSON
12 lines
1.4 KiB
JSON
{
|
|||
|
|
"identifier": "file-viewer",
|
||
|
|
"description": "The terminal file viewer windows (`file-viewer-<n>`, opened by `open_file_viewer` on the app's own `viewer.html`). Same rules as `default.json`: app commands need no entry here and are gated by label inside `commands/file_viewer_commands.rs`; this file is the plugin-command surface a compromised viewer webview could reach, and it is the smallest one that lets the window work. `core:event:allow-listen`/`allow-unlisten` are for `file-viewer-goto` (Rust → this window; the viewer subscribes through `getCurrentWindow().listen`, because a bare `listen()` in *any* window receives an `emit_to`). `core:window:allow-destroy` is not optional: `getCurrentWindow().onCloseRequested` in @tauri-apps/api 2.11 makes Rust `prevent_close()` whenever a JS listener exists and then calls `destroy()` itself, so without this grant the window's X button does nothing once the unsaved-changes guard is installed. `allow-close` is deliberately absent — nothing calls it, and `destroy` is the only exit. No `set-title`/`set-focus`/`unminimize`: those are done from Rust when a second click targets an already-open file. `core:webview:allow-internal-toggle-devtools` is the same dev-only convenience `default.json` carries.",
|
||
|
|
"windows": ["file-viewer-*"],
|
||
|
|
"permissions": [
|
||
|
|
"core:event:allow-listen",
|
||
|
|
"core:event:allow-unlisten",
|
||
|
|
"core:window:allow-destroy",
|
||
|
|
"core:webview:allow-internal-toggle-devtools"
|
||
|
|
]
|
||
|
|
}
|