diff --git a/package.json b/package.json index 6f8ba93..54a261d 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,15 @@ "@mui/lab": "5.0.0-alpha.149", "@mui/material": "^5.16.0", "@mui/x-data-grid": "^7.9.0", - "@tauri-apps/api": "^1.6.0", + "@tauri-apps/api": "2.0.0-rc.4", + "@tauri-apps/plugin-clipboard-manager": "2.0.0-rc.0", + "@tauri-apps/plugin-dialog": "^2.0.0-rc", + "@tauri-apps/plugin-fs": "^2.0.0-rc", + "@tauri-apps/plugin-global-shortcut": "^2.0.0-rc", + "@tauri-apps/plugin-notification": "^2.0.0-rc", + "@tauri-apps/plugin-process": "^2.0.0-rc", + "@tauri-apps/plugin-shell": "^2.0.0-rc", + "@tauri-apps/plugin-updater": "^2.0.0-rc", "@types/json-schema": "^7.0.15", "ahooks": "^3.8.0", "axios": "^1.7.2", @@ -60,7 +68,7 @@ }, "devDependencies": { "@actions/github": "^5.1.1", - "@tauri-apps/cli": "^1.6.0", + "@tauri-apps/cli": "2.0.0-rc.8", "@types/fs-extra": "^9.0.13", "@types/js-cookie": "^3.0.6", "@types/js-yaml": "^4.0.9", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0f0f0e4..637363e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -38,8 +38,32 @@ importers: specifier: ^7.9.0 version: 7.9.0(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@mui/material@5.16.0(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) "@tauri-apps/api": - specifier: ^1.6.0 - version: 1.6.0 + specifier: 2.0.0-rc.4 + version: 2.0.0-rc.4 + "@tauri-apps/plugin-clipboard-manager": + specifier: 2.0.0-rc.0 + version: 2.0.0-rc.0 + "@tauri-apps/plugin-dialog": + specifier: ^2.0.0-rc + version: 2.0.0-rc.0 + "@tauri-apps/plugin-fs": + specifier: ^2.0.0-rc + version: 2.0.0-rc.1 + "@tauri-apps/plugin-global-shortcut": + specifier: ^2.0.0-rc + version: 2.0.0-rc.0 + "@tauri-apps/plugin-notification": + specifier: ^2.0.0-rc + version: 2.0.0-rc.0 + "@tauri-apps/plugin-process": + specifier: ^2.0.0-rc + version: 2.0.0-rc.0 + "@tauri-apps/plugin-shell": + specifier: ^2.0.0-rc + version: 2.0.0-rc.0 + "@tauri-apps/plugin-updater": + specifier: ^2.0.0-rc + version: 2.0.0-rc.0 "@types/json-schema": specifier: ^7.0.15 version: 7.0.15 @@ -129,8 +153,8 @@ importers: specifier: ^5.1.1 version: 5.1.1 "@tauri-apps/cli": - specifier: ^1.6.0 - version: 1.6.0 + specifier: 2.0.0-rc.8 + version: 2.0.0-rc.8 "@types/fs-extra": specifier: ^9.0.13 version: 9.0.13 @@ -2076,111 +2100,158 @@ packages: peerDependencies: "@svgr/core": "*" - "@tauri-apps/api@1.6.0": + "@tauri-apps/api@2.0.0-rc.4": resolution: { - integrity: sha512-rqI++FWClU5I2UBp4HXFvl+sBWkdigBkxnpJDQUWttNyG7IZP4FwQGhTNL5EOw0vI8i6eSAJ5frLqO7n7jbJdg==, + integrity: sha512-UNiIhhKG08j4ooss2oEEVexffmWkgkYlC2M3GcX3VPtNsqFgVNL8Mcw/4Y7rO9M9S+ffAMnLOF5ypzyuyb8tyg==, } - engines: { node: ">= 14.6.0", npm: ">= 6.6.0", yarn: ">= 1.19.1" } - "@tauri-apps/cli-darwin-arm64@1.6.0": + "@tauri-apps/cli-darwin-arm64@2.0.0-rc.8": resolution: { - integrity: sha512-SNRwUD9nqGxY47mbY1CGTt/jqyQOU7Ps7Mx/mpgahL0FVUDiCEY/5L9QfEPPhEgccgcelEVn7i6aQHIkHyUtCA==, + integrity: sha512-XDjFLfCz7gOsKg9qFyK7S9EbrdcLhWE2bSTvHDpnFdMc+DcjMR4O3HuCO7SrPmmFUf86OknYFiuMPEUoHf0Fiw==, } engines: { node: ">= 10" } cpu: [arm64] os: [darwin] - "@tauri-apps/cli-darwin-x64@1.6.0": + "@tauri-apps/cli-darwin-x64@2.0.0-rc.8": resolution: { - integrity: sha512-g2/uDR/eeH2arvuawA4WwaEOqv/7jDO/ZLNI3JlBjP5Pk8GGb3Kdy0ro1xQzF94mtk2mOnOXa4dMgAet4sUJ1A==, + integrity: sha512-vYuITao7qq45jzTXRFdAcB+rVBULmofksWsKzoi+cgI8R0kcfB3bts+FRBdV3j+fkbpBQKpriW6Y6gdOzbf6Ow==, } engines: { node: ">= 10" } cpu: [x64] os: [darwin] - "@tauri-apps/cli-linux-arm-gnueabihf@1.6.0": + "@tauri-apps/cli-linux-arm-gnueabihf@2.0.0-rc.8": resolution: { - integrity: sha512-EVwf4oRkQyG8BpSrk0gqO7oA0sDM2MdNDtJpMfleYFEgCxLIOGZKNqaOW3M7U+0Y4qikmG3TtRK+ngc8Ymtrjg==, + integrity: sha512-iW1gJyRBvwxCeBEu+ain18v8FtFBhrsqepzuUyOy7hZJWUMPdKHJhbFVz6xp3RGZf5ycsLUr3ZhqMB3vKtv7iQ==, } engines: { node: ">= 10" } cpu: [arm] os: [linux] - "@tauri-apps/cli-linux-arm64-gnu@1.6.0": + "@tauri-apps/cli-linux-arm64-gnu@2.0.0-rc.8": resolution: { - integrity: sha512-YdpY17cAySrhK9dX4BUVEmhAxE2o+6skIEFg8iN/xrDwRxhaNPI9I80YXPatUTX54Kx55T5++25VJG9+3iw83A==, + integrity: sha512-k1HQHpu59B8JteXALCSdCQBUVb+ytsg1u/QEWPzCm7mFhzr7jqdfBjQVAKt0T5rdQQTcNtK341oB7izuXmJE2A==, } engines: { node: ">= 10" } cpu: [arm64] os: [linux] - "@tauri-apps/cli-linux-arm64-musl@1.6.0": + "@tauri-apps/cli-linux-arm64-musl@2.0.0-rc.8": resolution: { - integrity: sha512-4U628tuf2U8pMr4tIBJhEkrFwt+46dwhXrDlpdyWSZtnop5RJAVKHODm0KbWns4xGKfTW1F3r6sSv+2ZxLcISA==, + integrity: sha512-tMotP7J/dMqCL8zPCwtMwjeO3SK1yxU9bUMZ3mwdAtf+3xr2d2hpmGo4KXk5r2jQee9+dIC3IBXexFhrVJGRHA==, } engines: { node: ">= 10" } cpu: [arm64] os: [linux] - "@tauri-apps/cli-linux-x64-gnu@1.6.0": + "@tauri-apps/cli-linux-x64-gnu@2.0.0-rc.8": resolution: { - integrity: sha512-AKRzp76fVUaJyXj5KRJT9bJyhwZyUnRQU0RqIRqOtZCT5yr6qGP8rjtQ7YhCIzWrseBlOllc3Qvbgw3Yl0VQcA==, + integrity: sha512-AnLghADQgt4oyp4rQyjpKfGpdAqofd+SRO9kht5d4c0RSViqwHBjIxrCt9FDhBpBwwkC6T6NNuQqaofZSnOH6Q==, } engines: { node: ">= 10" } cpu: [x64] os: [linux] - "@tauri-apps/cli-linux-x64-musl@1.6.0": + "@tauri-apps/cli-linux-x64-musl@2.0.0-rc.8": resolution: { - integrity: sha512-0edIdq6aMBTaRMIXddHfyAFL361JqulLLd2Wi2aoOie7DkQ2MYh6gv3hA7NB9gqFwNIGE+xtJ4BkXIP2tSGPlg==, + integrity: sha512-jv/uiXI2K41/XMA2vnKMcpdv1tKvez70HHvBoIwHhelmXV5V6Tpu5fTMEAXbA6WbJNfcFRi0kd55YRBOS0DZcw==, } engines: { node: ">= 10" } cpu: [x64] os: [linux] - "@tauri-apps/cli-win32-arm64-msvc@1.6.0": + "@tauri-apps/cli-win32-arm64-msvc@2.0.0-rc.8": resolution: { - integrity: sha512-QwWpWk4ubcwJ1rljsRAmINgB2AwkyzZhpYbalA+MmzyYMREcdXWGkyixWbRZgqc6fEWEBmq5UG73qz5eBJiIKg==, + integrity: sha512-wctgwSfuyJ0lXBzQSzGq5TAy2m9VZichZPPJ7GitYzdHbqIRLmvxM1abRen7HikP1lpjdmjl96/kWQOebEV0qw==, } engines: { node: ">= 10" } cpu: [arm64] os: [win32] - "@tauri-apps/cli-win32-ia32-msvc@1.6.0": + "@tauri-apps/cli-win32-ia32-msvc@2.0.0-rc.8": resolution: { - integrity: sha512-Vtw0yxO9+aEFuhuxQ57ALG43tjECopRimRuKGbtZYDCriB/ty5TrT3QWMdy0dxBkpDTu3Rqsz30sbDzw6tlP3Q==, + integrity: sha512-BBjoAezNpHscGhBICHrt+X+IyJIh9jYnaEIGvbCIMcGB6sSDxvtttw4ef9+4jNh3JixotOR2mwIudTc1H9HffQ==, } engines: { node: ">= 10" } cpu: [ia32] os: [win32] - "@tauri-apps/cli-win32-x64-msvc@1.6.0": + "@tauri-apps/cli-win32-x64-msvc@2.0.0-rc.8": resolution: { - integrity: sha512-h54FHOvGi7+LIfRchzgZYSCHB1HDlP599vWXQQJ/XnwJY+6Rwr2E5bOe/EhqoG8rbGkfK0xX3KPAvXPbUlmggg==, + integrity: sha512-1pgDw2woeyDMvXctmqc53LBxsaAYqiRNUVgwvzlmzJDbUHv4+Pj4B1OGKQh1YKlsmks8LK3mK9uSbk+k1OLZhw==, } engines: { node: ">= 10" } cpu: [x64] os: [win32] - "@tauri-apps/cli@1.6.0": + "@tauri-apps/cli@2.0.0-rc.8": resolution: { - integrity: sha512-DBBpBl6GhTzm8ImMbKkfaZ4fDTykWrC7Q5OXP4XqD91recmDEn2LExuvuiiS3HYe7uP8Eb5B9NPHhqJb+Zo7qQ==, + integrity: sha512-hB6Pa0IaJs/As3Hc5IOiiK4Ilh9jspEA+2uPURCRQg4BkzQWwQzNdGQ4gjAzFNFAWPzy/4uuIXdnd1a+jC4wLA==, } engines: { node: ">= 10" } hasBin: true + "@tauri-apps/plugin-clipboard-manager@2.0.0-rc.0": + resolution: + { + integrity: sha512-2fS3wbRQEtorkk3Np2msJUeKCXRqLQ9sSo2FzlFdUPYNzThsu43uWCF55McGLAfltNOvXQIcQLUBf05jbBL/5w==, + } + + "@tauri-apps/plugin-dialog@2.0.0-rc.0": + resolution: + { + integrity: sha512-DPOXYe8SQ6Radk/67EOdaomlxL7oF99JO/ZUaPp1IBEs3Wro7lhlz63CfdKIBfKIZTLJLzP1R7/EiPL/GTA3Bg==, + } + + "@tauri-apps/plugin-fs@2.0.0-rc.1": + resolution: + { + integrity: sha512-r6N5dqBNXy9YAK9XbiEqAq3ZKBIN+TWevE7ZFmSRdvdSB1urrLweYu4wxycY2kDaDPzSeeOIJhCmqdNrFT9OSA==, + } + + "@tauri-apps/plugin-global-shortcut@2.0.0-rc.0": + resolution: + { + integrity: sha512-rcefV4AG+vnbTtGc07hDn4Uj8u//NpuqHVg1CShACyiCS0q2sZrDVC3qPN3RGhzQyeIOPq4bY1kQRHODffKXZA==, + } + + "@tauri-apps/plugin-notification@2.0.0-rc.0": + resolution: + { + integrity: sha512-0qsT/kvxQ6Ky4g6eQ4SUiHXzM4szTVc6thjz9vnGPYaApLoZrCJ9GdG+vEqeB+cT2dvE+wmxUFETh3ZXYVw8UA==, + } + + "@tauri-apps/plugin-process@2.0.0-rc.0": + resolution: + { + integrity: sha512-Z12D/kmQzG1vCVf+jLXPhPDUA0pEjFrsg4p0uwO2sotVLM9287IuTM+aIz9cuAYOxFLKcsnDG7amSCL9IfA1gw==, + } + + "@tauri-apps/plugin-shell@2.0.0-rc.0": + resolution: + { + integrity: sha512-bhUcQcrqZoK8H1DFXapr5r1Z75oh6Kd5Tltz97XpZFLREEqp+KhN2Fvyh8r/fKAyenYsTYUIsDsyGdjdueuF9g==, + } + + "@tauri-apps/plugin-updater@2.0.0-rc.0": + resolution: + { + integrity: sha512-EKajf/sBpFif0cwXhTo3BmNvTZ2t2DDLRyhA8FFKugZNoOeqU97bHhPT5DIqMUPRE1tyDk9o7sXm8dKf7oz+EA==, + } + "@types/babel__core@7.20.5": resolution: { @@ -5959,50 +6030,82 @@ snapshots: transitivePeerDependencies: - supports-color - "@tauri-apps/api@1.6.0": {} + "@tauri-apps/api@2.0.0-rc.4": {} - "@tauri-apps/cli-darwin-arm64@1.6.0": + "@tauri-apps/cli-darwin-arm64@2.0.0-rc.8": optional: true - "@tauri-apps/cli-darwin-x64@1.6.0": + "@tauri-apps/cli-darwin-x64@2.0.0-rc.8": optional: true - "@tauri-apps/cli-linux-arm-gnueabihf@1.6.0": + "@tauri-apps/cli-linux-arm-gnueabihf@2.0.0-rc.8": optional: true - "@tauri-apps/cli-linux-arm64-gnu@1.6.0": + "@tauri-apps/cli-linux-arm64-gnu@2.0.0-rc.8": optional: true - "@tauri-apps/cli-linux-arm64-musl@1.6.0": + "@tauri-apps/cli-linux-arm64-musl@2.0.0-rc.8": optional: true - "@tauri-apps/cli-linux-x64-gnu@1.6.0": + "@tauri-apps/cli-linux-x64-gnu@2.0.0-rc.8": optional: true - "@tauri-apps/cli-linux-x64-musl@1.6.0": + "@tauri-apps/cli-linux-x64-musl@2.0.0-rc.8": optional: true - "@tauri-apps/cli-win32-arm64-msvc@1.6.0": + "@tauri-apps/cli-win32-arm64-msvc@2.0.0-rc.8": optional: true - "@tauri-apps/cli-win32-ia32-msvc@1.6.0": + "@tauri-apps/cli-win32-ia32-msvc@2.0.0-rc.8": optional: true - "@tauri-apps/cli-win32-x64-msvc@1.6.0": + "@tauri-apps/cli-win32-x64-msvc@2.0.0-rc.8": optional: true - "@tauri-apps/cli@1.6.0": + "@tauri-apps/cli@2.0.0-rc.8": optionalDependencies: - "@tauri-apps/cli-darwin-arm64": 1.6.0 - "@tauri-apps/cli-darwin-x64": 1.6.0 - "@tauri-apps/cli-linux-arm-gnueabihf": 1.6.0 - "@tauri-apps/cli-linux-arm64-gnu": 1.6.0 - "@tauri-apps/cli-linux-arm64-musl": 1.6.0 - "@tauri-apps/cli-linux-x64-gnu": 1.6.0 - "@tauri-apps/cli-linux-x64-musl": 1.6.0 - "@tauri-apps/cli-win32-arm64-msvc": 1.6.0 - "@tauri-apps/cli-win32-ia32-msvc": 1.6.0 - "@tauri-apps/cli-win32-x64-msvc": 1.6.0 + "@tauri-apps/cli-darwin-arm64": 2.0.0-rc.8 + "@tauri-apps/cli-darwin-x64": 2.0.0-rc.8 + "@tauri-apps/cli-linux-arm-gnueabihf": 2.0.0-rc.8 + "@tauri-apps/cli-linux-arm64-gnu": 2.0.0-rc.8 + "@tauri-apps/cli-linux-arm64-musl": 2.0.0-rc.8 + "@tauri-apps/cli-linux-x64-gnu": 2.0.0-rc.8 + "@tauri-apps/cli-linux-x64-musl": 2.0.0-rc.8 + "@tauri-apps/cli-win32-arm64-msvc": 2.0.0-rc.8 + "@tauri-apps/cli-win32-ia32-msvc": 2.0.0-rc.8 + "@tauri-apps/cli-win32-x64-msvc": 2.0.0-rc.8 + + "@tauri-apps/plugin-clipboard-manager@2.0.0-rc.0": + dependencies: + "@tauri-apps/api": 2.0.0-rc.4 + + "@tauri-apps/plugin-dialog@2.0.0-rc.0": + dependencies: + "@tauri-apps/api": 2.0.0-rc.4 + + "@tauri-apps/plugin-fs@2.0.0-rc.1": + dependencies: + "@tauri-apps/api": 2.0.0-rc.4 + + "@tauri-apps/plugin-global-shortcut@2.0.0-rc.0": + dependencies: + "@tauri-apps/api": 2.0.0-rc.4 + + "@tauri-apps/plugin-notification@2.0.0-rc.0": + dependencies: + "@tauri-apps/api": 2.0.0-rc.4 + + "@tauri-apps/plugin-process@2.0.0-rc.0": + dependencies: + "@tauri-apps/api": 2.0.0-rc.4 + + "@tauri-apps/plugin-shell@2.0.0-rc.0": + dependencies: + "@tauri-apps/api": 2.0.0-rc.4 + + "@tauri-apps/plugin-updater@2.0.0-rc.0": + dependencies: + "@tauri-apps/api": 2.0.0-rc.4 "@types/babel__core@7.20.5": dependencies: diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 062fb64..165bd27 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -17,6 +17,12 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + [[package]] name = "ahash" version = "0.8.11" @@ -30,15 +36,6 @@ dependencies = [ "zerocopy", ] -[[package]] -name = "aho-corasick" -version = "0.6.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81ce3d38065e618af2d7b77e10c5ad9a069859b4be3c2250f674af3840d9c8a5" -dependencies = [ - "memchr", -] - [[package]] name = "aho-corasick" version = "1.1.3" @@ -90,6 +87,15 @@ version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +[[package]] +name = "arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +dependencies = [ + "derive_arbitrary", +] + [[package]] name = "arboard" version = "3.4.0" @@ -98,14 +104,13 @@ checksum = "9fb4009533e8ff8f1450a5bcbc30f4242a1d34442221f72314bea1f5dc9c7f89" dependencies = [ "clipboard-win", "core-graphics 0.23.2", - "image 0.25.1", - "log 0.4.22", + "image 0.25.2", + "log", "objc2", "objc2-app-kit", "objc2-foundation", "parking_lot", "windows-sys 0.48.0", - "wl-clipboard-rs", "x11rb", ] @@ -117,9 +122,26 @@ checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" [[package]] name = "arrayvec" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "ashpd" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd884d7c72877a94102c3715f3b1cd09ff4fac28221add3e57cfbe25c236d093" +dependencies = [ + "enumflags2", + "futures-channel", + "futures-util", + "rand 0.8.5", + "serde", + "serde_repr", + "tokio", + "url", + "zbus", +] [[package]] name = "async-broadcast" @@ -158,13 +180,13 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8828ec6e544c02b0d6691d21ed9f9218d0384a82542855073c2a3f58304aaf0" +checksum = "d7ebdfa2ebdab6b1760375fa7d6f382b9f486eac35fc994625a00e89280bdbb7" dependencies = [ "async-task", "concurrent-queue", - "fastrand 2.1.0", + "fastrand 2.1.1", "futures-lite 2.3.0", "slab", ] @@ -203,7 +225,7 @@ dependencies = [ "cfg-if", "concurrent-queue", "futures-lite 1.13.0", - "log 0.4.22", + "log", "parking", "polling 2.8.0", "rustix 0.37.27", @@ -214,9 +236,9 @@ dependencies = [ [[package]] name = "async-io" -version = "2.3.3" +version = "2.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6baa8f0178795da0e71bc42c9e5d13261aac7ee549853162e66a241ba17964" +checksum = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8" dependencies = [ "async-lock 3.4.0", "cfg-if", @@ -224,11 +246,11 @@ dependencies = [ "futures-io", "futures-lite 2.3.0", "parking", - "polling 3.7.2", - "rustix 0.38.34", + "polling 3.7.3", + "rustix 0.38.35", "slab", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -275,18 +297,18 @@ dependencies = [ "cfg-if", "event-listener 3.1.0", "futures-lite 1.13.0", - "rustix 0.38.34", + "rustix 0.38.35", "windows-sys 0.48.0", ] [[package]] name = "async-process" -version = "2.2.3" +version = "2.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7eda79bbd84e29c2b308d1dc099d7de8dcc7035e48f4bf5dc4a531a44ff5e2a" +checksum = "a8a07789659a4d385b79b18b9127fc27e1a59e1e89117c78c5ea3b806f016374" dependencies = [ "async-channel 2.3.1", - "async-io 2.3.3", + "async-io 2.3.4", "async-lock 3.4.0", "async-signal", "async-task", @@ -294,9 +316,9 @@ dependencies = [ "cfg-if", "event-listener 5.3.0", "futures-lite 2.3.0", - "rustix 0.38.34", + "rustix 0.38.35", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -307,25 +329,25 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.77", ] [[package]] name = "async-signal" -version = "0.2.8" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "794f185324c2f00e771cd9f1ae8b5ac68be2ca7abb129a87afd6e86d228bc54d" +checksum = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3" dependencies = [ - "async-io 2.3.3", + "async-io 2.3.4", "async-lock 3.4.0", "atomic-waker", "cfg-if", "futures-core", "futures-io", - "rustix 0.38.34", + "rustix 0.38.35", "signal-hook-registry", "slab", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -336,37 +358,36 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.80" +version = "0.1.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" +checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.77", ] [[package]] name = "atk" -version = "0.15.1" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c3d816ce6f0e2909a96830d6911c2aff044370b1ef92d7f267b43bae5addedd" +checksum = "b4af014b17dd80e8af9fa689b2d4a211ddba6eb583c1622f35d0cb543f6b17e4" dependencies = [ "atk-sys", - "bitflags 1.3.2", "glib", "libc", ] [[package]] name = "atk-sys" -version = "0.15.1" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58aeb089fb698e06db8089971c7ee317ab9644bade33383f63631437b03aafb6" +checksum = "251e0b7d90e33e0ba930891a505a9a35ece37b2dd37a14f3ffc306c13b980009" dependencies = [ "glib-sys", "gobject-sys", "libc", - "system-deps 6.2.2", + "system-deps", ] [[package]] @@ -402,7 +423,7 @@ dependencies = [ "cc", "cfg-if", "libc", - "miniz_oxide", + "miniz_oxide 0.7.4", "object", "rustc-demangle", ] @@ -425,6 +446,12 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +[[package]] +name = "bit_field" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" + [[package]] name = "bitflags" version = "1.3.2" @@ -436,6 +463,9 @@ name = "bitflags" version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +dependencies = [ + "serde", +] [[package]] name = "block" @@ -492,9 +522,9 @@ dependencies = [ "bitflags 2.6.0", "boa_interner", "boa_macros", - "indexmap 2.2.6", + "indexmap 2.5.0", "num-bigint", - "rustc-hash", + "rustc-hash 1.1.0", ] [[package]] @@ -517,20 +547,20 @@ dependencies = [ "fast-float", "hashbrown 0.14.5", "icu_normalizer", - "indexmap 2.2.6", + "indexmap 2.5.0", "intrusive-collections", "itertools", "num-bigint", "num-integer", "num-traits", - "num_enum 0.7.2", + "num_enum", "once_cell", "paste", "pollster", "portable-atomic", "rand 0.8.5", "regress", - "rustc-hash", + "rustc-hash 1.1.0", "ryu-js", "serde", "serde_json", @@ -563,10 +593,10 @@ dependencies = [ "boa_gc", "boa_macros", "hashbrown 0.14.5", - "indexmap 2.2.6", + "indexmap 2.5.0", "once_cell", "phf 0.11.2", - "rustc-hash", + "rustc-hash 1.1.0", "static_assertions", ] @@ -578,7 +608,7 @@ checksum = "6be9c93793b60dac381af475b98634d4b451e28336e72218cad9a20176218dbc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.77", "synstructure", ] @@ -598,7 +628,7 @@ dependencies = [ "num-bigint", "num-traits", "regress", - "rustc-hash", + "rustc-hash 1.1.0", ] [[package]] @@ -609,9 +639,9 @@ checksum = "e0d8372f2d5cbac600a260de87877141b42da1e18d2c7a08ccb493a49cbd55c0" [[package]] name = "brotli" -version = "3.5.0" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d640d25bc63c50fb1f0b545ffd80207d2e10a4c965530809b40ba3386825c391" +checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -620,24 +650,14 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "2.5.1" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e2e4afe60d7dd600fdd3de8d0f08c2b7ec039712e3b6137ff98b7004e82de4f" +checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", ] -[[package]] -name = "bstr" -version = "1.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05efc5cfd9110c8416e471df0e96702d58690178e206e61b7173706673c93706" -dependencies = [ - "memchr", - "serde", -] - [[package]] name = "bumpalo" version = "3.16.0" @@ -646,22 +666,22 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytemuck" -version = "1.16.1" +version = "1.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b236fc92302c97ed75b38da1f4917b5cdda4984745740f153a5d3059e48d725e" +checksum = "773d90827bc3feecfb67fab12e24de0749aad83c74b9504ecde46237b5cd24e2" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.7.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee891b04274a59bd38b412188e24b849617b2e45a0fd8d057deb63e7403761b" +checksum = "0cc8b54b395f2fcfbb3d90c47b01c7f444d94d05bdeb775811dec868ac3bbc26" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.77", ] [[package]] @@ -671,53 +691,95 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] -name = "bytes" -version = "1.6.0" +name = "byteorder-lite" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" + +[[package]] +name = "bytes" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" dependencies = [ "serde", ] [[package]] name = "cairo-rs" -version = "0.15.12" +version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c76ee391b03d35510d9fa917357c7f1855bd9a6659c95a1b392e33f49b3369bc" +checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", "cairo-sys-rs", "glib", "libc", + "once_cell", "thiserror", ] [[package]] name = "cairo-sys-rs" -version = "0.15.1" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c55d429bef56ac9172d25fecb85dc8068307d17acd74b377866b7a1ef25d3c8" +checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" dependencies = [ "glib-sys", "libc", - "system-deps 6.2.2", + "system-deps", +] + +[[package]] +name = "camino" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +dependencies = [ + "camino", + "cargo-platform", + "semver 1.0.23", + "serde", + "serde_json", + "thiserror", ] [[package]] name = "cargo_toml" -version = "0.15.3" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "599aa35200ffff8f04c1925aa1acc92fa2e08874379ef42e210a80e527e60838" +checksum = "8a969e13a7589e9e3e4207e153bae624ade2b5622fb4684a4923b23ec3d57719" dependencies = [ "serde", - "toml 0.7.8", + "toml 0.8.2", ] [[package]] name = "cc" -version = "1.0.104" +version = "1.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74b6a57f98764a267ff415d50a25e6e166f3831a5071af4995296ea97d210490" +checksum = "57b6a275aa2903740dc87da01c62040406b8812552e97129a63ea8850a17c6e6" +dependencies = [ + "shlex", +] [[package]] name = "cesu8" @@ -736,15 +798,6 @@ dependencies = [ "uuid", ] -[[package]] -name = "cfg-expr" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3431df59f28accaf4cb4eed4a9acc66bea3f3c3753aa6cdc2f024174ef232af7" -dependencies = [ - "smallvec", -] - [[package]] name = "cfg-expr" version = "0.15.8" @@ -761,12 +814,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "cfg_aliases" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" - [[package]] name = "cfg_aliases" version = "0.2.1" @@ -800,16 +847,16 @@ dependencies = [ "delay_timer", "dirs 5.0.1", "dunce", - "log 0.4.22", + "log", "log4rs", "nanoid", "network-interface", "once_cell", - "open 5.2.0", + "open", "parking_lot", "percent-encoding", "port_scanner", - "reqwest 0.12.5", + "reqwest", "runas", "serde", "serde_json", @@ -818,6 +865,14 @@ dependencies = [ "sysproxy", "tauri", "tauri-build", + "tauri-plugin-clipboard-manager", + "tauri-plugin-dialog", + "tauri-plugin-fs", + "tauri-plugin-global-shortcut", + "tauri-plugin-notification", + "tauri-plugin-process", + "tauri-plugin-shell", + "tauri-plugin-updater", "tokio", "users", "warp", @@ -827,29 +882,13 @@ dependencies = [ [[package]] name = "clipboard-win" -version = "5.3.1" +version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79f4473f5144e20d9aceaf2972478f06ddf687831eafeeb434fbaf0acc4144ad" +checksum = "15efe7a882b08f34e38556b14f2fb3daa98769d06c7f0c1b076dfd0d983bc892" dependencies = [ "error-code", ] -[[package]] -name = "cocoa" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a" -dependencies = [ - "bitflags 1.3.2", - "block", - "cocoa-foundation", - "core-foundation", - "core-graphics 0.22.3", - "foreign-types 0.3.2", - "libc", - "objc", -] - [[package]] name = "cocoa" version = "0.25.0" @@ -858,14 +897,30 @@ checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c" dependencies = [ "bitflags 1.3.2", "block", - "cocoa-foundation", - "core-foundation", + "cocoa-foundation 0.1.2", + "core-foundation 0.9.4", "core-graphics 0.23.2", "foreign-types 0.5.0", "libc", "objc", ] +[[package]] +name = "cocoa" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f79398230a6e2c08f5c9760610eb6924b52aa9e7950a619602baba59dcbbdbb2" +dependencies = [ + "bitflags 2.6.0", + "block", + "cocoa-foundation 0.2.0", + "core-foundation 0.10.0", + "core-graphics 0.24.0", + "foreign-types 0.5.0", + "libc", + "objc", +] + [[package]] name = "cocoa-foundation" version = "0.1.2" @@ -874,8 +929,22 @@ checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7" dependencies = [ "bitflags 1.3.2", "block", - "core-foundation", - "core-graphics-types", + "core-foundation 0.9.4", + "core-graphics-types 0.1.3", + "libc", + "objc", +] + +[[package]] +name = "cocoa-foundation" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14045fb83be07b5acf1c0884b2180461635b433455fa35d1cd6f17f1450679d" +dependencies = [ + "bitflags 2.6.0", + "block", + "core-foundation 0.10.0", + "core-graphics-types 0.2.0", "libc", "objc", ] @@ -903,7 +972,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f76990911f2267d837d9d0ad060aa63aaad170af40904b29461734c339030d4d" dependencies = [ "quote", - "syn 2.0.68", + "syn 2.0.77", ] [[package]] @@ -932,24 +1001,21 @@ dependencies = [ ] [[package]] -name = "core-foundation-sys" -version = "0.8.6" +name = "core-foundation" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" - -[[package]] -name = "core-graphics" -version = "0.22.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" +checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "core-graphics-types", - "foreign-types 0.3.2", + "core-foundation-sys", "libc", ] +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + [[package]] name = "core-graphics" version = "0.23.2" @@ -957,8 +1023,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" dependencies = [ "bitflags 1.3.2", - "core-foundation", - "core-graphics-types", + "core-foundation 0.9.4", + "core-graphics-types 0.1.3", + "foreign-types 0.5.0", + "libc", +] + +[[package]] +name = "core-graphics" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa95a34622365fa5bbf40b20b75dba8dfa8c94c734aea8ac9a5ca38af14316f1" +dependencies = [ + "bitflags 2.6.0", + "core-foundation 0.10.0", + "core-graphics-types 0.2.0", "foreign-types 0.5.0", "libc", ] @@ -970,15 +1049,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" dependencies = [ "bitflags 1.3.2", - "core-foundation", + "core-foundation 0.9.4", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" +dependencies = [ + "bitflags 2.6.0", + "core-foundation 0.10.0", "libc", ] [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "51e852e6dc9a5bed1fae92dd2375037bf2b768725bf3be87811edee3249d09ad" dependencies = [ "libc", ] @@ -1037,6 +1127,12 @@ version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + [[package]] name = "crypto-common" version = "0.1.6" @@ -1071,7 +1167,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.68", + "syn 2.0.77", ] [[package]] @@ -1081,14 +1177,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f" dependencies = [ "quote", - "syn 2.0.68", + "syn 2.0.77", ] [[package]] name = "darling" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" dependencies = [ "darling_core", "darling_macro", @@ -1096,27 +1192,27 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", "strsim", - "syn 2.0.68", + "syn 2.0.77", ] [[package]] name = "darling_macro" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.68", + "syn 2.0.77", ] [[package]] @@ -1144,7 +1240,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c7397f8c48906dd9b5afc75001368c979418e5dff5575998a831eb2319b424e" dependencies = [ - "lazy_static 1.5.0", + "lazy_static", "pathsearch", "rand 0.8.5", "shared_library", @@ -1166,7 +1262,7 @@ dependencies = [ "dashmap", "event-listener 5.3.0", "futures", - "log 0.4.22", + "log", "lru", "once_cell", "rs-snowflake", @@ -1199,14 +1295,14 @@ dependencies = [ ] [[package]] -name = "derive-new" -version = "0.6.0" +name = "derive_arbitrary" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d150dea618e920167e5973d70ae6ece4385b7164e0d799fe7c122dd0a5d912ad" +checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.77", ] [[package]] @@ -1218,8 +1314,8 @@ dependencies = [ "convert_case", "proc-macro2", "quote", - "rustc_version 0.4.0", - "syn 2.0.68", + "rustc_version 0.4.1", + "syn 2.0.77", ] [[package]] @@ -1323,23 +1419,40 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.77", ] [[package]] -name = "dlib" -version = "0.5.2" +name = "dlopen2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" +checksum = "9e1297103d2bbaea85724fcee6294c2d50b1081f9ad47d0f6f6f61eda65315a6" dependencies = [ - "libloading 0.8.4", + "dlopen2_derive", + "libc", + "once_cell", + "winapi", ] [[package]] -name = "downcast-rs" -version = "1.2.1" +name = "dlopen2_derive" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" +checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "dpi" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53" +dependencies = [ + "serde", +] [[package]] name = "dtoa" @@ -1358,9 +1471,15 @@ dependencies = [ [[package]] name = "dunce" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "dyn-clone" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" [[package]] name = "either" @@ -1370,14 +1489,14 @@ checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "embed-resource" -version = "2.4.2" +version = "2.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6985554d0688b687c5cb73898a34fbe3ad6c24c58c238a4d91d5e840670ee9d" +checksum = "4edcacde9351c33139a41e3c97eb2334351a81a2791bebb0b243df837128f602" dependencies = [ "cc", "memchr", - "rustc_version 0.4.0", - "toml 0.8.14", + "rustc_version 0.4.1", + "toml 0.8.2", "vswhom", "winreg 0.52.0", ] @@ -1421,7 +1540,7 @@ checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.77", ] [[package]] @@ -1430,6 +1549,16 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +[[package]] +name = "erased-serde" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24e2389d65ab4fab27dc2a5de7b191e1f6617d1f1c8855c0dc569c94a4cbb18d" +dependencies = [ + "serde", + "typeid", +] + [[package]] name = "errno" version = "0.3.9" @@ -1484,6 +1613,22 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "exr" +version = "1.72.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "887d93f60543e9a9362ef8a21beedd0a833c5d9610e18c67abe15a5963dcb1a4" +dependencies = [ + "bit_field", + "flume", + "half", + "lebe", + "miniz_oxide 0.7.4", + "rayon-core", + "smallvec", + "zune-inflate", +] + [[package]] name = "fast-float" version = "0.2.0" @@ -1501,9 +1646,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "fdeflate" @@ -1521,7 +1666,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" dependencies = [ "memoffset 0.9.1", - "rustc_version 0.4.0", + "rustc_version 0.4.1", ] [[package]] @@ -1537,30 +1682,42 @@ dependencies = [ [[package]] name = "filetime" -version = "0.2.23" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" +checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.4.1", - "windows-sys 0.52.0", + "libredox", + "windows-sys 0.59.0", ] -[[package]] -name = "fixedbitset" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" - [[package]] name = "flate2" -version = "1.0.30" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" +checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" dependencies = [ "crc32fast", - "miniz_oxide", + "miniz_oxide 0.8.0", +] + +[[package]] +name = "fluent-uri" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17c704e9dbe1ddd863da1e6ff3567795087b1eb201ce80d8fa81162e1516500d" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "flume" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" +dependencies = [ + "spin", ] [[package]] @@ -1596,7 +1753,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.77", ] [[package]] @@ -1699,7 +1856,7 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" dependencies = [ - "fastrand 2.1.0", + "fastrand 2.1.1", "futures-core", "futures-io", "parking", @@ -1714,7 +1871,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.77", ] [[package]] @@ -1758,11 +1915,10 @@ dependencies = [ [[package]] name = "gdk" -version = "0.15.4" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6e05c1f572ab0e1f15be94217f0dc29088c248b14f792a5ff0af0d84bcda9e8" +checksum = "f5ba081bdef3b75ebcdbfc953699ed2d7417d6bd853347a42a37d76406a33646" dependencies = [ - "bitflags 1.3.2", "cairo-rs", "gdk-pixbuf", "gdk-sys", @@ -1774,35 +1930,35 @@ dependencies = [ [[package]] name = "gdk-pixbuf" -version = "0.15.11" +version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad38dd9cc8b099cceecdf41375bb6d481b1b5a7cd5cd603e10a69a9383f8619a" +checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec" dependencies = [ - "bitflags 1.3.2", "gdk-pixbuf-sys", "gio", "glib", "libc", + "once_cell", ] [[package]] name = "gdk-pixbuf-sys" -version = "0.15.10" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "140b2f5378256527150350a8346dbdb08fadc13453a7a2d73aecd5fab3c402a7" +checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7" dependencies = [ "gio-sys", "glib-sys", "gobject-sys", "libc", - "system-deps 6.2.2", + "system-deps", ] [[package]] name = "gdk-sys" -version = "0.15.1" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e7a08c1e8f06f4177fb7e51a777b8c1689f743a7bc11ea91d44d2226073a88" +checksum = "31ff856cb3386dae1703a920f803abafcc580e9b5f711ca62ed1620c25b51ff2" dependencies = [ "cairo-sys-rs", "gdk-pixbuf-sys", @@ -1812,33 +1968,47 @@ dependencies = [ "libc", "pango-sys", "pkg-config", - "system-deps 6.2.2", + "system-deps", ] [[package]] name = "gdkwayland-sys" -version = "0.15.3" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cca49a59ad8cfdf36ef7330fe7bdfbe1d34323220cc16a0de2679ee773aee2c2" +checksum = "a90fbf5c033c65d93792192a49a8efb5bb1e640c419682a58bb96f5ae77f3d4a" dependencies = [ "gdk-sys", "glib-sys", "gobject-sys", "libc", "pkg-config", - "system-deps 6.2.2", + "system-deps", +] + +[[package]] +name = "gdkx11" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2ea8a4909d530f79921290389cbd7c34cb9d623bfe970eaae65ca5f9cd9cce" +dependencies = [ + "gdk", + "gdkx11-sys", + "gio", + "glib", + "libc", + "x11", ] [[package]] name = "gdkx11-sys" -version = "0.15.1" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4b7f8c7a84b407aa9b143877e267e848ff34106578b64d1e0a24bf550716178" +checksum = "fee8f00f4ee46cad2939b8990f5c70c94ff882c3028f3cc5abf950fa4ab53043" dependencies = [ "gdk-sys", "glib-sys", "libc", - "system-deps 6.2.2", + "system-deps", "x11", ] @@ -1850,7 +2020,7 @@ checksum = "5cc16584ff22b460a382b7feec54b23d2908d858152e5739a120b949293bd74e" dependencies = [ "cc", "libc", - "log 0.4.22", + "log", "rustversion", "windows 0.48.0", ] @@ -1897,6 +2067,16 @@ dependencies = [ "wasi 0.11.0+wasi-snapshot-preview1", ] +[[package]] +name = "gif" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fb2d69b19215e18bb912fa30f7ce15846e301408695e44e0ef719f1da9e19f2" +dependencies = [ + "color_quant", + "weezl", +] + [[package]] name = "gimli" version = "0.29.0" @@ -1905,49 +2085,54 @@ checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" [[package]] name = "gio" -version = "0.15.12" +version = "0.18.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68fdbc90312d462781a395f7a16d96a2b379bb6ef8cd6310a2df272771c4283b" +checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73" dependencies = [ - "bitflags 1.3.2", "futures-channel", "futures-core", "futures-io", + "futures-util", "gio-sys", "glib", "libc", "once_cell", + "pin-project-lite", + "smallvec", "thiserror", ] [[package]] name = "gio-sys" -version = "0.15.10" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32157a475271e2c4a023382e9cab31c4584ee30a97da41d3c4e9fdd605abcf8d" +checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2" dependencies = [ "glib-sys", "gobject-sys", "libc", - "system-deps 6.2.2", + "system-deps", "winapi", ] [[package]] name = "glib" -version = "0.15.12" +version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edb0306fbad0ab5428b0ca674a23893db909a98582969c9b537be4ced78c505d" +checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", "futures-channel", "futures-core", "futures-executor", "futures-task", + "futures-util", + "gio-sys", "glib-macros", "glib-sys", "gobject-sys", "libc", + "memchr", "once_cell", "smallvec", "thiserror", @@ -1955,27 +2140,26 @@ dependencies = [ [[package]] name = "glib-macros" -version = "0.15.13" +version = "0.18.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10c6ae9f6fa26f4fb2ac16b528d138d971ead56141de489f8111e259b9df3c4a" +checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" dependencies = [ - "anyhow", "heck 0.4.1", - "proc-macro-crate 1.3.1", + "proc-macro-crate 2.0.2", "proc-macro-error", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.77", ] [[package]] name = "glib-sys" -version = "0.15.10" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef4b192f8e65e9cf76cbf4ea71fa8e3be4a0e18ffe3d68b8da6836974cc5bad4" +checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898" dependencies = [ "libc", - "system-deps 6.2.2", + "system-deps", ] [[package]] @@ -1985,37 +2169,41 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] -name = "globset" -version = "0.4.14" +name = "global-hotkey" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1" +checksum = "298a7667d6011efe6b35673c6b29001b88677ae1b3d6b2feccfbff4b44892866" dependencies = [ - "aho-corasick 1.1.3", - "bstr", - "log 0.4.22", - "regex-automata 0.4.7", - "regex-syntax 0.8.4", + "bitflags 2.6.0", + "cocoa 0.26.0", + "crossbeam-channel", + "keyboard-types", + "objc", + "once_cell", + "serde", + "thiserror", + "windows-sys 0.59.0", + "x11-dl", ] [[package]] name = "gobject-sys" -version = "0.15.10" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d57ce44246becd17153bd035ab4d32cfee096a657fc01f2231c9278378d1e0a" +checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" dependencies = [ "glib-sys", "libc", - "system-deps 6.2.2", + "system-deps", ] [[package]] name = "gtk" -version = "0.15.5" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e3004a2d5d6d8b5057d2b57b3712c9529b62e82c77f25c1fecde1fd5c23bd0" +checksum = "93c4f5e0e20b60e10631a5f06da7fe3dda744b05ad0ea71fee2f47adf865890c" dependencies = [ "atk", - "bitflags 1.3.2", "cairo-rs", "field-offset", "futures-channel", @@ -2026,16 +2214,15 @@ dependencies = [ "gtk-sys", "gtk3-macros", "libc", - "once_cell", "pango", "pkg-config", ] [[package]] name = "gtk-sys" -version = "0.15.3" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5bc2f0587cba247f60246a0ca11fe25fb733eabc3de12d1965fc07efab87c84" +checksum = "771437bf1de2c1c0b496c11505bdf748e26066bbe942dfc8f614c9460f6d7722" dependencies = [ "atk-sys", "cairo-sys-rs", @@ -2046,21 +2233,20 @@ dependencies = [ "gobject-sys", "libc", "pango-sys", - "system-deps 6.2.2", + "system-deps", ] [[package]] name = "gtk3-macros" -version = "0.15.6" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "684c0456c086e8e7e9af73ec5b84e35938df394712054550e81558d21c44ab0d" +checksum = "c6063efb63db582968fb7df72e1ae68aa6360dcfb0a75143f34fc7d616bad75e" dependencies = [ - "anyhow", "proc-macro-crate 1.3.1", "proc-macro-error", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.77", ] [[package]] @@ -2075,7 +2261,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.2.6", + "indexmap 2.5.0", "slab", "tokio", "tokio-util", @@ -2084,9 +2270,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" +checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" dependencies = [ "atomic-waker", "bytes", @@ -2094,7 +2280,7 @@ dependencies = [ "futures-core", "futures-sink", "http 1.1.0", - "indexmap 2.2.6", + "indexmap 2.5.0", "slab", "tokio", "tokio-util", @@ -2102,16 +2288,25 @@ dependencies = [ ] [[package]] -name = "handlebars" -version = "0.29.1" +name = "half" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb04af2006ea09d985fef82b81e0eb25337e51b691c76403332378a53d521edc" +checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" dependencies = [ - "lazy_static 0.2.11", - "log 0.3.9", - "pest 0.3.3", + "cfg-if", + "crunchy", +] + +[[package]] +name = "handlebars" +version = "3.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4498fc115fa7d34de968184e473529abb40eeb6be8bc5f7faba3d08c316cb3e3" +dependencies = [ + "log", + "pest", + "pest_derive", "quick-error", - "regex 0.2.11", "serde", "serde_json", ] @@ -2156,15 +2351,6 @@ dependencies = [ "http 0.2.12", ] -[[package]] -name = "heck" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" -dependencies = [ - "unicode-segmentation", -] - [[package]] name = "heck" version = "0.4.1" @@ -2210,7 +2396,7 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bea68cab48b8459f17cf1c944c67ddc572d272d9f2b274140f223ecb1da4a3b7" dependencies = [ - "log 0.4.22", + "log", "mac", "markup5ever", "proc-macro2", @@ -2253,9 +2439,9 @@ dependencies = [ [[package]] name = "http-body" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", "http 1.1.0", @@ -2270,7 +2456,7 @@ dependencies = [ "bytes", "futures-util", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "pin-project-lite", ] @@ -2300,9 +2486,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.29" +version = "0.14.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f361cde2f109281a220d4307746cdfd5ee3f410da58a70377762396775634b33" +checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" dependencies = [ "bytes", "futures-channel", @@ -2324,16 +2510,16 @@ dependencies = [ [[package]] name = "hyper" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4fe55fb7a772d59a5ff1dfbff4fe0258d19b89fec4b233e75d35d5d2316badc" +checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.5", + "h2 0.4.6", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "httparse", "itoa 1.0.11", "pin-project-lite", @@ -2350,7 +2536,7 @@ checksum = "5ee4be2c948921a1a5320b629c4193916ed787a7f7f293fd3f7f5a6c9de74155" dependencies = [ "futures-util", "http 1.1.0", - "hyper 1.4.0", + "hyper 1.4.1", "hyper-util", "rustls", "rustls-pki-types", @@ -2360,19 +2546,6 @@ dependencies = [ "webpki-roots", ] -[[package]] -name = "hyper-tls" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" -dependencies = [ - "bytes", - "hyper 0.14.29", - "native-tls", - "tokio", - "tokio-native-tls", -] - [[package]] name = "hyper-tls" version = "0.6.0" @@ -2381,7 +2554,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.4.0", + "hyper 1.4.1", "hyper-util", "native-tls", "tokio", @@ -2391,16 +2564,16 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ab92f4f49ee4fb4f997c784b7a2e0fa70050211e0b6a287f898c3c9785ca956" +checksum = "cde7055719c54e36e95e8719f95883f22072a48ede39db7fc17a4e1d5281e9b9" dependencies = [ "bytes", "futures-channel", "futures-util", "http 1.1.0", - "http-body 1.0.0", - "hyper 1.4.0", + "http-body 1.0.1", + "hyper 1.4.1", "pin-project-lite", "socket2 0.5.7", "tokio", @@ -2432,16 +2605,6 @@ dependencies = [ "cc", ] -[[package]] -name = "ico" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "031530fe562d8c8d71c0635013d6d155bbfe8ba0aa4b4d2d24ce8af6b71047bd" -dependencies = [ - "byteorder", - "png", -] - [[package]] name = "ico" version = "0.3.0" @@ -2567,7 +2730,7 @@ checksum = "d2abdd3a62551e8337af119c5899e600ca0c88ec8f23a46c60ba216c803dcf1a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.77", ] [[package]] @@ -2586,22 +2749,6 @@ dependencies = [ "unicode-normalization", ] -[[package]] -name = "ignore" -version = "0.4.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b46810df39e66e925525d6e38ce1e7f6e1d208f72dc39757880fcb66e2c58af1" -dependencies = [ - "crossbeam-deque", - "globset", - "log 0.4.22", - "memchr", - "regex-automata 0.4.7", - "same-file", - "walkdir", - "winapi-util", -] - [[package]] name = "image" version = "0.24.9" @@ -2611,17 +2758,23 @@ dependencies = [ "bytemuck", "byteorder", "color_quant", + "exr", + "gif", + "jpeg-decoder", "num-traits", + "png", + "qoi", + "tiff", ] [[package]] name = "image" -version = "0.25.1" +version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd54d660e773627692c524beaad361aca785a4f9f5730ce91f42aabe5bce3d11" +checksum = "99314c8a2152b8ddb211f924cdae532d8c5e4c8bb54728e12fff1b0cd5963a10" dependencies = [ "bytemuck", - "byteorder", + "byteorder-lite", "num-traits", "png", "tiff", @@ -2640,9 +2793,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.6" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" dependencies = [ "equivalent", "hashbrown 0.14.5", @@ -2651,18 +2804,9 @@ dependencies = [ [[package]] name = "infer" -version = "0.9.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f178e61cdbfe084aa75a2f4f7a25a5bb09701a47ae1753608f194b15783c937a" -dependencies = [ - "cfb", -] - -[[package]] -name = "infer" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f551f8c3a39f68f986517db0d1759de85881894fdc7db798bd2a9df9cb04b7fc" +checksum = "cb33622da908807a06f9513c19b3c1ad50fab3e4137d82a78107d502075aa199" dependencies = [ "cfb", ] @@ -2678,16 +2822,16 @@ dependencies = [ [[package]] name = "interfaces" -version = "0.0.8" +version = "0.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec8f50a973916cac3da5057c986db05cd3346f38c78e9bc24f64cc9f6a3978f" +checksum = "bb6250a98af259a26fd5a4a6081fccea9ac116e4c3178acf4aeb86d32d2b7715" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", "cc", "handlebars", - "lazy_static 1.5.0", + "lazy_static", "libc", - "nix 0.23.2", + "nix 0.26.4", "serde", "serde_derive", ] @@ -2720,13 +2864,13 @@ checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] name = "iptools" -version = "0.2.5" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c416c05ba2a10240e022887617af3128fccdbf69713214da0fc81a5690d00df7" +checksum = "9bab2ab6edf9330906c4da149dddc19e850b14c682865d81fb21962bbfc2e0ae" dependencies = [ "ahash", "once_cell", - "regex 1.10.5", + "regex", ] [[package]] @@ -2771,9 +2915,9 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "javascriptcore-rs" -version = "0.16.0" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf053e7843f2812ff03ef5afe34bb9c06ffee120385caad4f6b9967fcd37d41c" +checksum = "ca5671e9ffce8ffba57afc24070e906da7fc4b1ba66f2cabebf61bf2ea257fcc" dependencies = [ "bitflags 1.3.2", "glib", @@ -2782,28 +2926,30 @@ dependencies = [ [[package]] name = "javascriptcore-rs-sys" -version = "0.4.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "905fbb87419c5cde6e3269537e4ea7d46431f3008c5d057e915ef3f115e7793c" +checksum = "af1be78d14ffa4b75b66df31840478fef72b51f8c2465d4ca7c194da9f7a5124" dependencies = [ "glib-sys", "gobject-sys", "libc", - "system-deps 5.0.0", + "system-deps", ] [[package]] name = "jni" -version = "0.20.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "039022cdf4d7b1cf548d31f60ae783138e5fd42013f6271049d7df7afadef96c" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" dependencies = [ "cesu8", + "cfg-if", "combine", "jni-sys", - "log 0.4.22", + "log", "thiserror", "walkdir", + "windows-sys 0.45.0", ] [[package]] @@ -2817,27 +2963,53 @@ name = "jpeg-decoder" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" +dependencies = [ + "rayon", +] [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" dependencies = [ "wasm-bindgen", ] [[package]] name = "json-patch" -version = "1.4.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec9ad60d674508f3ca8f380a928cfe7b096bc729c4e2dbfe3852bc45da3ab30b" +checksum = "5b1fb8864823fad91877e6caea0baca82e49e8db50f8e5c9f9a453e27d3330fc" dependencies = [ + "jsonptr", "serde", "serde_json", "thiserror", ] +[[package]] +name = "jsonptr" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c6e529149475ca0b2820835d3dce8fcc41c6b943ca608d32f35b449255e4627" +dependencies = [ + "fluent-uri", + "serde", + "serde_json", +] + +[[package]] +name = "keyboard-types" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" +dependencies = [ + "bitflags 2.6.0", + "serde", + "unicode-segmentation", +] + [[package]] name = "kuchikiki" version = "0.8.2" @@ -2851,12 +3023,6 @@ dependencies = [ "selectors", ] -[[package]] -name = "lazy_static" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73" - [[package]] name = "lazy_static" version = "1.5.0" @@ -2864,34 +3030,40 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] -name = "libappindicator" -version = "0.7.1" +name = "lebe" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2d3cb96d092b4824cb306c9e544c856a4cb6210c1081945187f7f1924b47e8" +checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" + +[[package]] +name = "libappindicator" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03589b9607c868cc7ae54c0b2a22c8dc03dd41692d48f2d7df73615c6a95dc0a" dependencies = [ "glib", "gtk", "gtk-sys", "libappindicator-sys", - "log 0.4.22", + "log", ] [[package]] name = "libappindicator-sys" -version = "0.7.3" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1b3b6681973cea8cc3bce7391e6d7d5502720b80a581c9a95c9cbaf592826aa" +checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf" dependencies = [ "gtk-sys", - "libloading 0.7.4", + "libloading", "once_cell", ] [[package]] name = "libc" -version = "0.2.155" +version = "0.2.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" [[package]] name = "libloading" @@ -2903,16 +3075,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "libloading" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e310b3a6b5907f99202fcdb4960ff45b93735d7c7d96b760fcff8db2dc0e103d" -dependencies = [ - "cfg-if", - "windows-targets 0.52.6", -] - [[package]] name = "libredox" version = "0.1.3" @@ -2921,6 +3083,7 @@ checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ "bitflags 2.6.0", "libc", + "redox_syscall", ] [[package]] @@ -2951,15 +3114,6 @@ dependencies = [ "scopeguard", ] -[[package]] -name = "log" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b" -dependencies = [ - "log 0.4.22", -] - [[package]] name = "log" version = "0.4.22" @@ -2988,7 +3142,7 @@ dependencies = [ "fnv", "humantime", "libc", - "log 0.4.22", + "log", "log-mdc", "once_cell", "parking_lot", @@ -3020,9 +3174,9 @@ dependencies = [ [[package]] name = "lru" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc" +checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904" dependencies = [ "hashbrown 0.14.5", ] @@ -3061,7 +3215,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a2629bb1404f3d34c2e921f21fd34ba00b206124c81f65c50b43b6aaefeb016" dependencies = [ - "log 0.4.22", + "log", "phf 0.10.1", "phf_codegen 0.10.0", "string_cache", @@ -3096,15 +3250,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a64a92489e2744ce060c349162be1c5f33c6969234104dbd99ddb5feb08b8c15" -[[package]] -name = "memoffset" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" -dependencies = [ - "autocfg", -] - [[package]] name = "memoffset" version = "0.7.1" @@ -3147,9 +3292,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "minisign-verify" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "933dca44d65cdd53b355d0b73d380a2ff5da71f87f036053188bf1eab6a19881" +checksum = "a05b5d0594e0cb1ad8cee3373018d2b84e25905dc75b2468114cc9a8e86cfc20" [[package]] name = "miniz_oxide" @@ -3162,14 +3307,43 @@ dependencies = [ ] [[package]] -name = "mio" -version = "0.8.11" +name = "miniz_oxide" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +dependencies = [ + "hermit-abi 0.3.9", "libc", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.48.0", + "windows-sys 0.52.0", +] + +[[package]] +name = "muda" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba8ac4080fb1e097c2c22acae467e46e4da72d941f02e82b67a87a2a89fa38b1" +dependencies = [ + "cocoa 0.26.0", + "crossbeam-channel", + "dpi", + "gtk", + "keyboard-types", + "objc", + "once_cell", + "png", + "serde", + "thiserror", + "windows-sys 0.59.0", ] [[package]] @@ -3183,7 +3357,7 @@ dependencies = [ "futures-util", "http 0.2.12", "httparse", - "log 0.4.22", + "log", "memchr", "mime", "spin", @@ -3206,7 +3380,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" dependencies = [ "libc", - "log 0.4.22", + "log", "openssl", "openssl-probe", "openssl-sys", @@ -3218,14 +3392,16 @@ dependencies = [ [[package]] name = "ndk" -version = "0.6.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2032c77e030ddee34a6787a64166008da93f6a352b629261d0fee232b8742dd4" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", "jni-sys", + "log", "ndk-sys", - "num_enum 0.5.11", + "num_enum", + "raw-window-handle 0.6.2", "thiserror", ] @@ -3237,9 +3413,9 @@ checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" [[package]] name = "ndk-sys" -version = "0.3.0" +version = "0.6.0+11769913" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e5a6ae77c8ee183dcbbba6150e2e6b9f3f4196a7666c02a715a95692ec1fa97" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" dependencies = [ "jni-sys", ] @@ -3263,19 +3439,6 @@ version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" -[[package]] -name = "nix" -version = "0.23.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f3790c00a0150112de0f4cd161e3d7fc4b2d8a5542ffc35f099a2562aecb35c" -dependencies = [ - "bitflags 1.3.2", - "cc", - "cfg-if", - "libc", - "memoffset 0.6.5", -] - [[package]] name = "nix" version = "0.26.4" @@ -3286,29 +3449,17 @@ dependencies = [ "cfg-if", "libc", "memoffset 0.7.1", + "pin-utils", ] [[package]] name = "nix" -version = "0.28.0" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" +checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" dependencies = [ "bitflags 2.6.0", "cfg-if", - "cfg_aliases 0.1.1", - "libc", -] - -[[package]] -name = "nix" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" -dependencies = [ - "bitflags 2.6.0", - "cfg-if", - "cfg_aliases 0.2.1", "libc", "memoffset 0.9.1", ] @@ -3341,11 +3492,11 @@ dependencies = [ [[package]] name = "notify-rust" -version = "4.11.0" +version = "4.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5312f837191c317644f313f7b2b39f9cb1496570c74f7c17152dd3961219551f" +checksum = "26a1d03b6305ecefdd9c6c60150179bb8d9f0cd4e64bbcad1e41419e7bf5e414" dependencies = [ - "log 0.4.22", + "log", "mac-notification-sys", "serde", "tauri-winrt-notification", @@ -3417,56 +3568,25 @@ dependencies = [ "autocfg", ] -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi 0.3.9", - "libc", -] - [[package]] name = "num_enum" -version = "0.5.11" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" dependencies = [ - "num_enum_derive 0.5.11", -] - -[[package]] -name = "num_enum" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" -dependencies = [ - "num_enum_derive 0.7.2", + "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.5.11" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ - "proc-macro-crate 1.3.1", + "proc-macro-crate 2.0.2", "proc-macro2", "quote", - "syn 1.0.109", -] - -[[package]] -name = "num_enum_derive" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" -dependencies = [ - "proc-macro-crate 3.1.0", - "proc-macro2", - "quote", - "syn 2.0.68", + "syn 2.0.77", ] [[package]] @@ -3569,6 +3689,7 @@ checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ "bitflags 2.6.0", "block2", + "dispatch", "libc", "objc2", ] @@ -3618,9 +3739,9 @@ dependencies = [ [[package]] name = "object" -version = "0.36.1" +version = "0.36.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "081b846d1d56ddfc18fdf1a922e4f6e07a11768ea1b92dec44e42b72712ccfce" +checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" dependencies = [ "memchr", ] @@ -3639,19 +3760,9 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "open" -version = "3.2.0" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2078c0039e6a54a0c42c28faa984e115fb4c2d5bf2208f77d1961002df8576f8" -dependencies = [ - "pathdiff", - "windows-sys 0.42.0", -] - -[[package]] -name = "open" -version = "5.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d2c909a3fce3bd80efef4cd1c6c056bd9376a8fe06fcfdbebaf32cb485a7e37" +checksum = "61a877bf6abd716642a53ef1b89fb498923a4afca5c754f9050b4d081c05c4b3" dependencies = [ "is-wsl", "libc", @@ -3660,9 +3771,9 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.64" +version = "0.10.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" +checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" dependencies = [ "bitflags 2.6.0", "cfg-if", @@ -3681,7 +3792,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.77", ] [[package]] @@ -3692,9 +3803,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.102" +version = "0.9.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" +checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" dependencies = [ "cc", "libc", @@ -3729,12 +3840,12 @@ dependencies = [ [[package]] name = "os_pipe" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29d73ba8daf8fac13b0501d1abeddcfe21ba7401ada61a819144b6c2a4f32209" +checksum = "5ffd2b0a5634335b135d5728d84c5e0fd726954b87111f7506a61c502280d982" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -3745,11 +3856,11 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "pango" -version = "0.15.10" +version = "0.18.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e4045548659aee5313bde6c582b0d83a627b7904dd20dc2d9ef0895d414e4f" +checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4" dependencies = [ - "bitflags 1.3.2", + "gio", "glib", "libc", "once_cell", @@ -3758,14 +3869,14 @@ dependencies = [ [[package]] name = "pango-sys" -version = "0.15.10" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2a00081cde4661982ed91d80ef437c20eacaf6aa1a5962c0279ae194662c3aa" +checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5" dependencies = [ "glib-sys", "gobject-sys", "libc", - "system-deps 6.2.2", + "system-deps", ] [[package]] @@ -3792,7 +3903,7 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.2", + "redox_syscall", "smallvec", "windows-targets 0.52.6", ] @@ -3825,12 +3936,6 @@ version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" -[[package]] -name = "pest" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a6dda33d67c26f0aac90d324ab2eb7239c819fc7b2552fe9faa4fe88441edc8" - [[package]] name = "pest" version = "2.7.11" @@ -3843,13 +3948,37 @@ dependencies = [ ] [[package]] -name = "petgraph" -version = "0.6.5" +name = "pest_derive" +version = "2.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +checksum = "2a548d2beca6773b1c244554d36fcf8548a8a58e74156968211567250e48e49a" dependencies = [ - "fixedbitset", - "indexmap 2.2.6", + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c93a82e8d145725dcbaf44e5ea887c8a869efdcc28706df2d08c69e17077183" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "pest_meta" +version = "2.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a941429fea7e08bedec25e4f6785b6ffaacc6b755da98df5ef3e7dcf4a124c4f" +dependencies = [ + "once_cell", + "pest", + "sha2 0.10.8", ] [[package]] @@ -3966,7 +4095,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.77", ] [[package]] @@ -4013,7 +4142,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.77", ] [[package]] @@ -4030,12 +4159,12 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "piper" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae1d5c74c9876f070d3e8fd503d748c7d974c3e48da8f41350fa5222ef9b4391" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" dependencies = [ "atomic-waker", - "fastrand 2.1.0", + "fastrand 2.1.1", "futures-io", ] @@ -4052,7 +4181,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42cf17e9a1800f5f396bc67d193dc9411b59012a5876445ef450d449881e1016" dependencies = [ "base64 0.22.1", - "indexmap 2.2.6", + "indexmap 2.5.0", "quick-xml 0.32.0", "serde", "time", @@ -4068,7 +4197,7 @@ dependencies = [ "crc32fast", "fdeflate", "flate2", - "miniz_oxide", + "miniz_oxide 0.7.4", ] [[package]] @@ -4082,24 +4211,24 @@ dependencies = [ "cfg-if", "concurrent-queue", "libc", - "log 0.4.22", + "log", "pin-project-lite", "windows-sys 0.48.0", ] [[package]] name = "polling" -version = "3.7.2" +version = "3.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3ed00ed3fbf728b5816498ecd316d1716eecaced9c0c8d2c5a6740ca214985b" +checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511" dependencies = [ "cfg-if", "concurrent-queue", "hermit-abi 0.4.0", "pin-project-lite", - "rustix 0.38.34", + "rustix 0.38.35", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -4116,9 +4245,9 @@ checksum = "325a6d2ac5dee293c3b2612d4993b98aec1dff096b0a2dae70ed7d95784a05da" [[package]] name = "portable-atomic" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" +checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" [[package]] name = "powerfmt" @@ -4128,9 +4257,12 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "precomputed-hash" @@ -4150,11 +4282,12 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.1.0" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24" dependencies = [ - "toml_edit 0.21.1", + "toml_datetime", + "toml_edit 0.20.2", ] [[package]] @@ -4197,10 +4330,19 @@ dependencies = [ ] [[package]] -name = "quick-error" -version = "1.2.3" +name = "qoi" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" +checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "quick-error" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" [[package]] name = "quick-xml" @@ -4220,27 +4362,19 @@ dependencies = [ "memchr", ] -[[package]] -name = "quick-xml" -version = "0.34.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f24d770aeca0eacb81ac29dfbc55ebcc09312fdd1f8bbecdc7e4a84e000e3b4" -dependencies = [ - "memchr", -] - [[package]] name = "quinn" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4ceeeeabace7857413798eb1ffa1e9c905a9946a57d81fb69b4b71c4d8eb3ad" +checksum = "b22d8e7369034b9a7132bc2008cac12f2013c8132b45e0554e6e20e2617f2156" dependencies = [ "bytes", "pin-project-lite", "quinn-proto", "quinn-udp", - "rustc-hash", + "rustc-hash 2.0.0", "rustls", + "socket2 0.5.7", "thiserror", "tokio", "tracing", @@ -4248,14 +4382,14 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.3" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddf517c03a109db8100448a4be38d498df8a210a99fe0e1b9eaf39e78c640efe" +checksum = "ba92fb39ec7ad06ca2582c0ca834dfeadcaf06ddfc8e635c80aa7e1c05315fdd" dependencies = [ "bytes", "rand 0.8.5", "ring", - "rustc-hash", + "rustc-hash 2.0.0", "rustls", "slab", "thiserror", @@ -4265,9 +4399,9 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.2" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9096629c45860fc7fb143e125eb826b5e721e10be3263160c7d60ca832cf8c46" +checksum = "8bffec3605b73c6f1754535084a85229fa8a30f86014e6c81aeec4abb68b0285" dependencies = [ "libc", "once_cell", @@ -4278,9 +4412,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -4372,6 +4506,12 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" +[[package]] +name = "raw-window-handle" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" + [[package]] name = "rayon" version = "1.10.0" @@ -4394,27 +4534,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.4.1" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" -dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "redox_syscall" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" dependencies = [ "bitflags 2.6.0", ] [[package]] name = "redox_users" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom 0.2.15", "libredox", @@ -4423,24 +4554,11 @@ dependencies = [ [[package]] name = "regex" -version = "0.2.11" +version = "1.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9329abc99e39129fcceabd24cf5d85b4671ef7c29c50e972bc5afe32438ec384" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" dependencies = [ - "aho-corasick 0.6.10", - "memchr", - "regex-syntax 0.5.6", - "thread_local 0.3.6", - "utf8-ranges", -] - -[[package]] -name = "regex" -version = "1.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" -dependencies = [ - "aho-corasick 1.1.3", + "aho-corasick", "memchr", "regex-automata 0.4.7", "regex-syntax 0.8.4", @@ -4461,20 +4579,11 @@ version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" dependencies = [ - "aho-corasick 1.1.3", + "aho-corasick", "memchr", "regex-syntax 0.8.4", ] -[[package]] -name = "regex-syntax" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d707a4fa2637f2dca2ef9fd02225ec7661fe01a53623c1e6515b6916511f7a7" -dependencies = [ - "ucd-util", -] - [[package]] name = "regex-syntax" version = "0.6.29" @@ -4499,68 +4608,26 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.11.27" +version = "0.12.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" -dependencies = [ - "base64 0.21.7", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2 0.3.26", - "http 0.2.12", - "http-body 0.4.6", - "hyper 0.14.29", - "hyper-tls 0.5.0", - "ipnet", - "js-sys", - "log 0.4.22", - "mime", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls-pemfile 1.0.4", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper 0.1.2", - "system-configuration", - "tokio", - "tokio-native-tls", - "tokio-util", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "wasm-streams", - "web-sys", - "winreg 0.50.0", -] - -[[package]] -name = "reqwest" -version = "0.12.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7d6d2a27d57148378eb5e111173f4276ad26340ecc5c49a4a2152167a2d6a37" +checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63" dependencies = [ "base64 0.22.1", "bytes", "encoding_rs", "futures-core", "futures-util", - "h2 0.4.5", + "h2 0.4.6", "http 1.1.0", - "http-body 1.0.0", + "http-body 1.0.1", "http-body-util", - "hyper 1.4.0", + "hyper 1.4.1", "hyper-rustls", - "hyper-tls 0.6.0", + "hyper-tls", "hyper-util", "ipnet", "js-sys", - "log 0.4.22", + "log", "mime", "native-tls", "once_cell", @@ -4568,47 +4635,49 @@ dependencies = [ "pin-project-lite", "quinn", "rustls", - "rustls-pemfile 2.1.2", + "rustls-pemfile", "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper 1.0.1", + "sync_wrapper", "system-configuration", "tokio", "tokio-native-tls", "tokio-rustls", + "tokio-util", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", + "wasm-streams", "web-sys", "webpki-roots", - "winreg 0.52.0", + "windows-registry", ] [[package]] name = "rfd" -version = "0.10.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0149778bd99b6959285b0933288206090c50e2327f47a9c463bfdbf45c8823ea" +checksum = "25a73a7337fc24366edfca76ec521f51877b114e42dab584008209cca6719251" dependencies = [ + "ashpd", "block", "dispatch", "glib-sys", "gobject-sys", "gtk-sys", "js-sys", - "lazy_static 1.5.0", - "log 0.4.22", + "log", "objc", "objc-foundation", "objc_id", - "raw-window-handle", + "raw-window-handle 0.6.2", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "windows 0.37.0", + "windows-sys 0.48.0", ] [[package]] @@ -4656,6 +4725,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +[[package]] +name = "rustc-hash" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" + [[package]] name = "rustc_version" version = "0.2.3" @@ -4667,9 +4742,9 @@ dependencies = [ [[package]] name = "rustc_version" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ "semver 1.0.23", ] @@ -4690,9 +4765,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.34" +version = "0.38.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +checksum = "a85d50532239da68e9addb745ba38ff4612a242c1c7ceea689c4bc7c2f43c36f" dependencies = [ "bitflags 2.6.0", "errno", @@ -4703,9 +4778,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.10" +version = "0.23.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05cff451f60db80f490f3c182b77c35260baace73209e9cdbbe526bfe3a4d402" +checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" dependencies = [ "once_cell", "ring", @@ -4717,18 +4792,9 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "1.0.4" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" -dependencies = [ - "base64 0.21.7", -] - -[[package]] -name = "rustls-pemfile" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" +checksum = "196fe16b00e106300d3e45ecfcb764fa292a535d7326a29a5875c579c7417425" dependencies = [ "base64 0.22.1", "rustls-pki-types", @@ -4736,15 +4802,15 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" +checksum = "fc0a2ce646f8655401bb81e7927b812614bd5d91dbc968696be50603510fcaf0" [[package]] name = "rustls-webpki" -version = "0.102.5" +version = "0.102.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a6fccd794a42c2c105b513a2f62bc3fd8f3ba57a4593677ceb0bd035164d78" +checksum = "84678086bd54edf2b415183ed7a94d0efb049f1b646a33e22a36f3794be6ae56" dependencies = [ "ring", "rustls-pki-types", @@ -4787,6 +4853,32 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "schemars" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" +dependencies = [ + "dyn-clone", + "indexmap 1.9.3", + "schemars_derive", + "serde", + "serde_json", + "url", +] + +[[package]] +name = "schemars_derive" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.77", +] + [[package]] name = "scoped-tls" version = "1.0.1" @@ -4801,12 +4893,12 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "security-framework" -version = "2.11.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ "bitflags 2.6.0", - "core-foundation", + "core-foundation 0.9.4", "core-foundation-sys", "libc", "security-framework-sys", @@ -4814,9 +4906,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" +checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" dependencies = [ "core-foundation-sys", "libc", @@ -4832,7 +4924,7 @@ dependencies = [ "cssparser", "derive_more", "fxhash", - "log 0.4.22", + "log", "matches", "phf 0.8.0", "phf_codegen 0.8.0", @@ -4881,18 +4973,29 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" dependencies = [ - "pest 2.7.11", + "pest", ] [[package]] name = "serde" -version = "1.0.203" +version = "1.0.209" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" +checksum = "99fce0ffe7310761ca6bf9faf5115afbc19688edd00171d81b1bb1b116c63e09" dependencies = [ "serde_derive", ] +[[package]] +name = "serde-untagged" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2676ba99bd82f75cae5cbd2c8eda6fa0b8760f18978ea840e980dd5567b5c5b6" +dependencies = [ + "erased-serde", + "serde", + "typeid", +] + [[package]] name = "serde-value" version = "0.7.0" @@ -4905,23 +5008,34 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.203" +version = "1.0.209" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" +checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.77", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", ] [[package]] name = "serde_json" -version = "1.0.120" +version = "1.0.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" +checksum = "8043c06d9f82bd7271361ed64f415fe5e12a77fdb52e573e7f06a516dea329ad" dependencies = [ - "indexmap 2.2.6", "itoa 1.0.11", + "memchr", "ryu", "serde", ] @@ -4934,14 +5048,14 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.77", ] [[package]] name = "serde_spanned" -version = "0.6.6" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79e674e01f999af37c49f70a6ede167a8a60b2503e56c5599532a65baa5969a0" +checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" dependencies = [ "serde", ] @@ -4960,15 +5074,15 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.8.3" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e73139bc5ec2d45e6c5fd85be5a46949c1c39a4c18e56915f5eb4c12f975e377" +checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.2.6", + "indexmap 2.5.0", "serde", "serde_derive", "serde_json", @@ -4978,14 +5092,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.8.3" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b80d3d6b56b64335c0180e5ffde23b3c5e08c14c585b51a15bd0e95393f46703" +checksum = "a8fee4991ef4f274617a51ad4af30519438dacb2f56ac773b08a1922ff743350" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.77", ] [[package]] @@ -4994,7 +5108,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.5.0", "itoa 1.0.11", "ryu", "serde", @@ -5074,17 +5188,17 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" dependencies = [ - "lazy_static 1.5.0", + "lazy_static", ] [[package]] name = "shared_child" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0d94659ad3c2137fef23ae75b03d5241d633f8acded53d672decfa0e6e0caef" +checksum = "09fa9338aed9a1df411814a5b2252f7cd206c55ae9bf2fa763f8de84603aa60c" dependencies = [ "libc", - "winapi", + "windows-sys 0.59.0", ] [[package]] @@ -5093,10 +5207,16 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a9e7e0f2bfae24d8a5b5a66c5b257a83c7412304311512a0c054cd5e619da11" dependencies = [ - "lazy_static 1.5.0", + "lazy_static", "libc", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signal-hook" version = "0.1.17" @@ -5181,31 +5301,52 @@ dependencies = [ ] [[package]] -name = "soup2" -version = "0.2.1" +name = "softbuffer" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2b4d76501d8ba387cf0fefbe055c3e0a59891d09f0f995ae4e4b16f6b60f3c0" +checksum = "d623bff5d06f60d738990980d782c8c866997d9194cfe79ecad00aa2f76826dd" dependencies = [ - "bitflags 1.3.2", - "gio", - "glib", - "libc", - "once_cell", - "soup2-sys", + "bytemuck", + "cfg_aliases", + "core-graphics 0.23.2", + "foreign-types 0.5.0", + "js-sys", + "log", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "objc2-quartz-core", + "raw-window-handle 0.6.2", + "redox_syscall", + "wasm-bindgen", + "web-sys", + "windows-sys 0.52.0", ] [[package]] -name = "soup2-sys" -version = "0.2.0" +name = "soup3" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "009ef427103fcb17f802871647a7fa6c60cbb654b4c4e4c0ac60a31c5f6dc9cf" +checksum = "471f924a40f31251afc77450e781cb26d55c0b650842efafc9c6cbd2f7cc4f9f" +dependencies = [ + "futures-channel", + "gio", + "glib", + "libc", + "soup3-sys", +] + +[[package]] +name = "soup3-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ebe8950a680a12f24f15ebe1bf70db7af98ad242d9db43596ad3108aab86c27" dependencies = [ - "bitflags 1.3.2", "gio-sys", "glib-sys", "gobject-sys", "libc", - "system-deps 5.0.0", + "system-deps", ] [[package]] @@ -5213,6 +5354,9 @@ name = "spin" version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] [[package]] name = "sptr" @@ -5228,9 +5372,9 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "state" -version = "0.5.3" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbe866e1e51e8260c9eed836a042a5e7f6726bb2b411dffeaa712e19c388f23b" +checksum = "2b8c4a4445d81357df8b1a650d0d0d6fbbbfe99d064aa5e02f3e4022061476d8" dependencies = [ "loom", ] @@ -5279,6 +5423,17 @@ version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" +[[package]] +name = "swift-rs" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4057c98e2e852d51fdcfca832aac7b571f6b351ad159f9eda5db1655f8d0c4d7" +dependencies = [ + "base64 0.21.7", + "serde", + "serde_json", +] + [[package]] name = "syn" version = "1.0.109" @@ -5292,26 +5447,23 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.68" +version = "2.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] -[[package]] -name = "sync_wrapper" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" - [[package]] name = "sync_wrapper" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +dependencies = [ + "futures-core", +] [[package]] name = "synstructure" @@ -5321,14 +5473,14 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.77", ] [[package]] name = "sysinfo" -version = "0.30.12" +version = "0.30.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "732ffa00f53e6b2af46208fba5718d9662a421049204e156328b66791ffa15ae" +checksum = "0a5b4ddaee55fb2bea2bf0e5000747e5f5c0de765e5a5ff87f4cd106439f4bb3" dependencies = [ "cfg-if", "core-foundation-sys", @@ -5342,122 +5494,99 @@ dependencies = [ [[package]] name = "sysproxy" version = "0.3.0" -source = "git+https://github.com/zzzgydi/sysproxy-rs?branch=main#bd912f90ae7f20b75c9278795551c13a7ea4c271" +source = "git+https://github.com/zzzgydi/sysproxy-rs?branch=main#45fffb0cdddb7c2d0ce30300dd72a934bb458c09" dependencies = [ "interfaces", "iptools", - "log 0.4.22", + "log", "thiserror", - "windows 0.52.0", + "windows 0.58.0", "winreg 0.52.0", "xdg", ] [[package]] name = "system-configuration" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 1.3.2", - "core-foundation", + "bitflags 2.6.0", + "core-foundation 0.9.4", "system-configuration-sys", ] [[package]] name = "system-configuration-sys" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" dependencies = [ "core-foundation-sys", "libc", ] -[[package]] -name = "system-deps" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18db855554db7bd0e73e06cf7ba3df39f97812cb11d3f75e71c39bf45171797e" -dependencies = [ - "cfg-expr 0.9.1", - "heck 0.3.3", - "pkg-config", - "toml 0.5.11", - "version-compare 0.0.11", -] - [[package]] name = "system-deps" version = "6.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" dependencies = [ - "cfg-expr 0.15.8", + "cfg-expr", "heck 0.5.0", "pkg-config", - "toml 0.8.14", - "version-compare 0.2.0", + "toml 0.8.2", + "version-compare", ] [[package]] name = "tao" -version = "0.16.9" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "575c856fc21e551074869dcfaad8f706412bd5b803dfa0fbf6881c4ff4bfafab" +checksum = "d3a97abbc7d6cfd0720da3e06fcb1cf2ac87cbfdb5bbbce103a1279a211c4d81" dependencies = [ - "bitflags 1.3.2", - "cairo-rs", - "cc", - "cocoa 0.24.1", - "core-foundation", - "core-graphics 0.22.3", + "bitflags 2.6.0", + "cocoa 0.26.0", + "core-foundation 0.10.0", + "core-graphics 0.24.0", "crossbeam-channel", - "dirs-next", "dispatch", - "gdk", - "gdk-pixbuf", - "gdk-sys", + "dlopen2", + "dpi", "gdkwayland-sys", "gdkx11-sys", - "gio", - "glib", - "glib-sys", "gtk", - "image 0.24.9", "instant", "jni", - "lazy_static 1.5.0", - "libappindicator", + "lazy_static", "libc", - "log 0.4.22", + "log", "ndk", "ndk-context", "ndk-sys", "objc", "once_cell", "parking_lot", - "png", - "raw-window-handle", + "raw-window-handle 0.6.2", "scopeguard", - "serde", "tao-macros", "unicode-segmentation", - "uuid", - "windows 0.39.0", - "windows-implement 0.39.0", + "url", + "windows 0.58.0", + "windows-core 0.58.0", + "windows-version", "x11-dl", ] [[package]] name = "tao-macros" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec114582505d158b669b136e6851f85840c109819d77c42bb7c0709f727d18c2" +checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.77", ] [[package]] @@ -5479,203 +5608,365 @@ dependencies = [ [[package]] name = "target-lexicon" -version = "0.12.14" +version = "0.12.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tauri" -version = "1.7.1" +version = "2.0.0-rc.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "336bc661a3f3250853fa83c6e5245449ed1c26dce5dcb28bdee7efedf6278806" +checksum = "e8345ccc676ef16e26b61fc0f5340b4e770678b1e1f53f08c69ebdac5e56b422" dependencies = [ "anyhow", - "base64 0.21.7", "bytes", - "cocoa 0.24.1", - "dirs-next", + "cocoa 0.26.0", + "dirs 5.0.1", "dunce", "embed_plist", - "encoding_rs", - "flate2", "futures-util", "getrandom 0.2.15", - "glib", "glob", "gtk", "heck 0.5.0", - "http 0.2.12", - "ico 0.2.0", - "ignore", - "indexmap 1.9.3", - "infer 0.9.0", - "minisign-verify", - "nix 0.26.4", - "notify-rust", + "http 1.1.0", + "http-range", + "image 0.24.9", + "jni", + "libc", + "log", + "mime", + "muda", "objc", - "once_cell", - "open 3.2.0", - "os_pipe", "percent-encoding", - "png", - "rand 0.8.5", - "raw-window-handle", - "regex 1.10.5", - "reqwest 0.11.27", - "rfd", - "semver 1.0.23", + "raw-window-handle 0.6.2", + "reqwest", "serde", "serde_json", "serde_repr", "serialize-to-javascript", - "shared_child", "state", - "tar", + "swift-rs", + "tauri-build", "tauri-macros", "tauri-runtime", "tauri-runtime-wry", "tauri-utils", - "tempfile", "thiserror", - "time", "tokio", + "tray-icon", "url", - "uuid", + "urlpattern", "webkit2gtk", "webview2-com", - "windows 0.39.0", - "zip", + "window-vibrancy", + "windows 0.58.0", ] [[package]] name = "tauri-build" -version = "1.5.3" +version = "2.0.0-rc.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c6ec7a5c3296330c7818478948b422967ce4649094696c985f61d50076d29c" +checksum = "7d5ad5fcfaf02cf79aa6727f6c5df38567d8dce172b00b62690c6bc46c08b7ce" dependencies = [ "anyhow", "cargo_toml", - "dirs-next", + "dirs 5.0.1", + "glob", "heck 0.5.0", "json-patch", + "schemars", "semver 1.0.23", "serde", "serde_json", "tauri-utils", "tauri-winres", + "toml 0.8.2", "walkdir", ] [[package]] name = "tauri-codegen" -version = "1.4.4" +version = "2.0.0-rc.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1aed706708ff1200ec12de9cfbf2582b5d8ec05f6a7293911091effbd22036b" +checksum = "809ef6316726fc72593d296cf6f4e7461326e310c313d6a6c42b6e7f1e2671cf" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "brotli", - "ico 0.3.0", + "ico", "json-patch", "plist", "png", "proc-macro2", "quote", - "regex 1.10.5", "semver 1.0.23", "serde", "serde_json", "sha2 0.10.8", + "syn 2.0.77", "tauri-utils", "thiserror", "time", + "url", "uuid", "walkdir", ] [[package]] name = "tauri-macros" -version = "1.4.5" +version = "2.0.0-rc.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b88f831d2973ae4f81a706a0004e67dac87f2e4439973bbe98efbd73825d8ede" +checksum = "1359e8861d210d25731f8b1bfbb4d111dd06406cf73c59659366ef450364d811" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.77", "tauri-codegen", "tauri-utils", ] [[package]] -name = "tauri-runtime" -version = "0.14.4" +name = "tauri-plugin" +version = "2.0.0-rc.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3068ed62b63dedc705558f4248c7ecbd5561f0f8050949859ea0db2326f26012" +checksum = "a7dded420c86183f592d0fe925ef9447f41e26fa79f0bdfef8d3f17bfbcdbfb7" dependencies = [ - "gtk", - "http 0.2.12", - "http-range", + "anyhow", + "glob", + "plist", + "schemars", + "serde", + "serde_json", + "tauri-utils", + "toml 0.8.2", + "walkdir", +] + +[[package]] +name = "tauri-plugin-clipboard-manager" +version = "2.1.0-beta.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "becbc5a692e842f8d6a7ab5e490c3c36d267b5c3d5bf4b6a0cdd039d7df25569" +dependencies = [ + "arboard", + "image 0.24.9", + "log", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "thiserror", +] + +[[package]] +name = "tauri-plugin-dialog" +version = "2.0.0-rc.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa8bd381f75c47687f41fb603f67fdd99a1af377da22d03d8fb959d2481845c1" +dependencies = [ + "dunce", + "log", + "raw-window-handle 0.6.2", + "rfd", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "tauri-plugin-fs", + "thiserror", + "url", +] + +[[package]] +name = "tauri-plugin-fs" +version = "2.0.0-rc.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "694a746b0e0c1d318198fabf4957800c42fb4b705e866e0eed7ec21476ef88db" +dependencies = [ + "anyhow", + "glob", + "schemars", + "serde", + "serde_json", + "serde_repr", + "tauri", + "tauri-plugin", + "thiserror", + "url", + "uuid", +] + +[[package]] +name = "tauri-plugin-global-shortcut" +version = "2.0.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91f141154ffde51f57325dc324f696c2c7b5f194d2228a5ec46b1c419f81dd76" +dependencies = [ + "global-hotkey", + "log", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "thiserror", +] + +[[package]] +name = "tauri-plugin-notification" +version = "2.0.0-rc.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bf32fba3a2650f89c7dfc532b38de566a37779e482f07dccabf45fe24444e26" +dependencies = [ + "log", + "notify-rust", "rand 0.8.5", - "raw-window-handle", + "serde", + "serde_json", + "serde_repr", + "tauri", + "tauri-plugin", + "thiserror", + "time", + "url", +] + +[[package]] +name = "tauri-plugin-process" +version = "2.0.0-rc.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9eb80b601682dcbd45dc5ed5f7cc214f1d994aeea730d500899cc616784559" +dependencies = [ + "tauri", + "tauri-plugin", +] + +[[package]] +name = "tauri-plugin-shell" +version = "2.0.0-rc.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e83800ddf78b820172efb5ed7310344e8e4f97fd30cd8237a3f20c12a79eb136" +dependencies = [ + "encoding_rs", + "log", + "open", + "os_pipe", + "regex", + "schemars", + "serde", + "serde_json", + "shared_child", + "tauri", + "tauri-plugin", + "thiserror", + "tokio", +] + +[[package]] +name = "tauri-plugin-updater" +version = "2.0.0-rc.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7048854b4271f3bc58ee850f0582f8d9bb0190118afa8397f36fc260daaa68b" +dependencies = [ + "base64 0.22.1", + "dirs 5.0.1", + "flate2", + "futures-util", + "http 1.1.0", + "infer", + "minisign-verify", + "reqwest", + "semver 1.0.23", + "serde", + "serde_json", + "tar", + "tauri", + "tauri-plugin", + "tempfile", + "thiserror", + "time", + "tokio", + "url", + "windows-sys 0.59.0", + "zip", +] + +[[package]] +name = "tauri-runtime" +version = "2.0.0-rc.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75c72b844f387bfc3341c355f3e16b8cbf4161848fa4e348670effb222cd3ba5" +dependencies = [ + "dpi", + "gtk", + "http 1.1.0", + "jni", + "raw-window-handle 0.6.2", "serde", "serde_json", "tauri-utils", "thiserror", "url", - "uuid", - "webview2-com", - "windows 0.39.0", + "windows 0.58.0", ] [[package]] name = "tauri-runtime-wry" -version = "0.14.9" +version = "2.0.0-rc.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c3db170233096aa30330feadcd895bf9317be97e624458560a20e814db7955" +checksum = "73accf936a7cd01d1382de7850726fdf6c1f6ab3b01ccb7a0950cb852e332596" dependencies = [ - "arboard", - "cocoa 0.24.1", + "cocoa 0.26.0", "gtk", + "http 1.1.0", + "jni", + "log", "percent-encoding", - "rand 0.8.5", - "raw-window-handle", + "raw-window-handle 0.6.2", + "softbuffer", + "tao", "tauri-runtime", "tauri-utils", - "uuid", + "url", "webkit2gtk", "webview2-com", - "windows 0.39.0", + "windows 0.58.0", "wry", ] [[package]] name = "tauri-utils" -version = "1.6.0" +version = "2.0.0-rc.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2826db448309d382dac14d520f0c0a40839b87b57b977e59cf5f296b3ace6a93" +checksum = "d53d9fe87e985b273696ae22ce2b9f099a8f1b44bc8fb127467bda5fcb3e4371" dependencies = [ "brotli", + "cargo_metadata", "ctor", "dunce", "glob", - "heck 0.5.0", "html5ever", - "infer 0.13.0", + "infer", "json-patch", "kuchikiki", - "log 0.4.22", + "log", "memchr", "phf 0.11.2", "proc-macro2", "quote", + "regex", + "schemars", "semver 1.0.23", "serde", + "serde-untagged", "serde_json", "serde_with", + "swift-rs", "thiserror", + "toml 0.8.2", "url", + "urlpattern", "walkdir", - "windows-version", ] [[package]] @@ -5701,14 +5992,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.10.1" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" dependencies = [ "cfg-if", - "fastrand 2.1.0", - "rustix 0.38.34", - "windows-sys 0.52.0", + "fastrand 2.1.1", + "once_cell", + "rustix 0.38.35", + "windows-sys 0.59.0", ] [[package]] @@ -5756,14 +6048,14 @@ dependencies = [ "cfg-if", "filedescriptor", "hex", - "lazy_static 1.5.0", + "lazy_static", "libc", - "log 0.4.22", + "log", "memmem", "num-derive", "num-traits", "ordered-float", - "regex 1.10.5", + "regex", "semver 0.11.0", "sha2 0.9.9", "signal-hook", @@ -5790,43 +6082,34 @@ checksum = "a38c90d48152c236a3ab59271da4f4ae63d678c5d7ad6b7714d7cb9760be5e4b" [[package]] name = "thiserror" -version = "1.0.61" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.61" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.77", ] [[package]] name = "thread-id" -version = "4.2.1" +version = "4.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0ec81c46e9eb50deaa257be2f148adf052d1fb7701cfd55ccfab2525280b70b" +checksum = "cfe8f25bbdd100db7e1d34acf7fd2dc59c4bf8f7483f505eaa7d4f12f76cc0ea" dependencies = [ "libc", "winapi", ] -[[package]] -name = "thread_local" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" -dependencies = [ - "lazy_static 1.5.0", -] - [[package]] name = "thread_local" version = "1.1.8" @@ -5894,9 +6177,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6b6a2fb3a985e99cebfaefa9faa3024743da73304ca1c683a36429613d3d22" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -5909,32 +6192,32 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.38.0" +version = "1.40.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" +checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" dependencies = [ "backtrace", "bytes", "libc", "mio", - "num_cpus", "parking_lot", "pin-project-lite", "signal-hook-registry", "socket2 0.5.7", "tokio-macros", - "windows-sys 0.48.0", + "tracing", + "windows-sys 0.52.0", ] [[package]] name = "tokio-macros" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.77", ] [[package]] @@ -5965,7 +6248,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c83b561d025642014097b66e6c1bb422783339e0909e4429cde4749d1990bc38" dependencies = [ "futures-util", - "log 0.4.22", + "log", "tokio", "tungstenite", ] @@ -5983,15 +6266,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - [[package]] name = "toml" version = "0.7.8" @@ -6006,21 +6280,21 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.14" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" +checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.14", + "toml_edit 0.20.2", ] [[package]] name = "toml_datetime" -version = "0.6.6" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" dependencies = [ "serde", ] @@ -6031,35 +6305,24 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.5.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.5.40", + "winnow", ] [[package]] name = "toml_edit" -version = "0.21.1" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" dependencies = [ - "indexmap 2.2.6", - "toml_datetime", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.22.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38" -dependencies = [ - "indexmap 2.2.6", + "indexmap 2.5.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.13", + "winnow", ] [[package]] @@ -6079,15 +6342,15 @@ dependencies = [ [[package]] name = "tower-layer" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] name = "tower-service" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" @@ -6095,7 +6358,7 @@ version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "log 0.4.22", + "log", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -6109,7 +6372,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.77", ] [[package]] @@ -6128,7 +6391,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" dependencies = [ - "log 0.4.22", + "log", "once_cell", "tracing-core", ] @@ -6142,27 +6405,34 @@ dependencies = [ "matchers", "nu-ansi-term", "once_cell", - "regex 1.10.5", + "regex", "sharded-slab", "smallvec", - "thread_local 1.1.8", + "thread_local", "tracing", "tracing-core", "tracing-log", ] [[package]] -name = "tree_magic_mini" -version = "3.1.5" +name = "tray-icon" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469a727cac55b41448315cc10427c069c618ac59bb6a4480283fcd811749bdc2" +checksum = "131a65b2cef2081bc14dbcd414c906edbfa3bb5323dd7e748cc298614681196b" dependencies = [ - "fnv", - "home", - "memchr", - "nom 7.1.3", + "core-graphics 0.24.0", + "crossbeam-channel", + "dirs 5.0.1", + "libappindicator", + "muda", + "objc2", + "objc2-app-kit", + "objc2-foundation", "once_cell", - "petgraph", + "png", + "serde", + "thiserror", + "windows-sys 0.59.0", ] [[package]] @@ -6182,7 +6452,7 @@ dependencies = [ "data-encoding", "http 1.1.0", "httparse", - "log 0.4.22", + "log", "rand 0.8.5", "sha1", "thiserror", @@ -6190,6 +6460,12 @@ dependencies = [ "utf-8", ] +[[package]] +name = "typeid" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e13db2e0ccd5e14a544e8a246ba2312cd25223f616442d7f2cb0e3db614236e" + [[package]] name = "typemap-ors" version = "1.0.0" @@ -6211,12 +6487,6 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" -[[package]] -name = "ucd-util" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abd2fc5d32b590614af8b0a20d837f32eca055edd0bbead59a9cfe80858be003" - [[package]] name = "uds_windows" version = "1.1.0" @@ -6228,6 +6498,47 @@ dependencies = [ "winapi", ] +[[package]] +name = "unic-char-property" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" +dependencies = [ + "unic-char-range", +] + +[[package]] +name = "unic-char-range" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" + +[[package]] +name = "unic-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" + +[[package]] +name = "unic-ucd-ident" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e230a37c0381caa9219d67cf063aa3a375ffed5bf541a452db16e744bdab6987" +dependencies = [ + "unic-char-property", + "unic-char-range", + "unic-ucd-version", +] + +[[package]] +name = "unic-ucd-version" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" +dependencies = [ + "unic-common", +] + [[package]] name = "unicase" version = "2.7.0" @@ -6297,6 +6608,19 @@ dependencies = [ "serde", ] +[[package]] +name = "urlpattern" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9bd5ff03aea02fa45b13a7980151fe45009af1980ba69f651ec367121a31609" +dependencies = [ + "derive_more", + "regex", + "serde", + "unic-ucd-ident", + "url", +] + [[package]] name = "users" version = "0.11.0" @@ -6304,7 +6628,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24cc0f6d6f267b73e5a2cadf007ba8f9bc39c6a6f9666f8cf25ea809a153b032" dependencies = [ "libc", - "log 0.4.22", + "log", ] [[package]] @@ -6319,12 +6643,6 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" -[[package]] -name = "utf8-ranges" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcfc827f90e53a02eaef5e535ee14266c1d569214c6aa70133a624d8a3164ba" - [[package]] name = "utf8_iter" version = "1.0.4" @@ -6339,9 +6657,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.9.1" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5de17fd2f7da591098415cff336e12965a28061ddace43b59cb3c430179c9439" +checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" dependencies = [ "getrandom 0.2.15", ] @@ -6358,12 +6676,6 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" -[[package]] -name = "version-compare" -version = "0.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c18c859eead79d8b95d09e4678566e8d70105c4e7b251f707a03df32442661b" - [[package]] name = "version-compare" version = "0.2.0" @@ -6372,9 +6684,9 @@ checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "vswhom" @@ -6441,8 +6753,8 @@ dependencies = [ "futures-util", "headers", "http 0.2.12", - "hyper 0.14.29", - "log 0.4.22", + "hyper 0.14.30", + "log", "mime", "mime_guess", "multer", @@ -6473,34 +6785,35 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" dependencies = [ "bumpalo", - "log 0.4.22", + "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.77", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.42" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" dependencies = [ "cfg-if", "js-sys", @@ -6510,9 +6823,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -6520,22 +6833,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.77", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" [[package]] name = "wasm-streams" @@ -6550,84 +6863,11 @@ dependencies = [ "web-sys", ] -[[package]] -name = "wayland-backend" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "269c04f203640d0da2092d1b8d89a2d081714ae3ac2f1b53e99f205740517198" -dependencies = [ - "cc", - "downcast-rs", - "rustix 0.38.34", - "scoped-tls", - "smallvec", - "wayland-sys", -] - -[[package]] -name = "wayland-client" -version = "0.31.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08bd0f46c069d3382a36c8666c1b9ccef32b8b04f41667ca1fef06a1adcc2982" -dependencies = [ - "bitflags 2.6.0", - "rustix 0.38.34", - "wayland-backend", - "wayland-scanner", -] - -[[package]] -name = "wayland-protocols" -version = "0.31.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4" -dependencies = [ - "bitflags 2.6.0", - "wayland-backend", - "wayland-client", - "wayland-scanner", -] - -[[package]] -name = "wayland-protocols-wlr" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6" -dependencies = [ - "bitflags 2.6.0", - "wayland-backend", - "wayland-client", - "wayland-protocols", - "wayland-scanner", -] - -[[package]] -name = "wayland-scanner" -version = "0.31.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edf466fc49a4feb65a511ca403fec3601494d0dee85dbf37fff6fa0dd4eec3b6" -dependencies = [ - "proc-macro2", - "quick-xml 0.34.0", - "quote", -] - -[[package]] -name = "wayland-sys" -version = "0.31.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a6754825230fa5b27bafaa28c30b3c9e72c55530581220cef401fa422c0fae7" -dependencies = [ - "dlib", - "log 0.4.22", - "pkg-config", -] - [[package]] name = "web-sys" -version = "0.3.69" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" dependencies = [ "js-sys", "wasm-bindgen", @@ -6635,9 +6875,9 @@ dependencies = [ [[package]] name = "webkit2gtk" -version = "0.18.2" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8f859735e4a452aeb28c6c56a852967a8a76c8eb1cc32dbf931ad28a13d6370" +checksum = "76b1bc1e54c581da1e9f179d0b38512ba358fb1af2d634a1affe42e37172361a" dependencies = [ "bitflags 1.3.2", "cairo-rs", @@ -6653,20 +6893,18 @@ dependencies = [ "javascriptcore-rs", "libc", "once_cell", - "soup2", + "soup3", "webkit2gtk-sys", ] [[package]] name = "webkit2gtk-sys" -version = "0.18.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d76ca6ecc47aeba01ec61e480139dda143796abcae6f83bcddf50d6b5b1dcf3" +checksum = "62daa38afc514d1f8f12b8693d30d5993ff77ced33ce30cd04deebc267a6d57c" dependencies = [ - "atk-sys", "bitflags 1.3.2", "cairo-sys-rs", - "gdk-pixbuf-sys", "gdk-sys", "gio-sys", "glib-sys", @@ -6674,57 +6912,54 @@ dependencies = [ "gtk-sys", "javascriptcore-rs-sys", "libc", - "pango-sys", "pkg-config", - "soup2-sys", - "system-deps 6.2.2", + "soup3-sys", + "system-deps", ] [[package]] name = "webpki-roots" -version = "0.26.3" +version = "0.26.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd7c23921eeb1713a4e851530e9b9756e4fb0e89978582942612524cf09f01cd" +checksum = "0bd24728e5af82c6c4ec1b66ac4844bdf8156257fccda846ec58b42cd0cdbe6a" dependencies = [ "rustls-pki-types", ] [[package]] name = "webview2-com" -version = "0.19.1" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4a769c9f1a64a8734bde70caafac2b96cada12cd4aefa49196b3a386b8b4178" +checksum = "6f61ff3d9d0ee4efcb461b14eb3acfda2702d10dc329f339303fc3e57215ae2c" dependencies = [ "webview2-com-macros", "webview2-com-sys", - "windows 0.39.0", - "windows-implement 0.39.0", + "windows 0.58.0", + "windows-core 0.58.0", + "windows-implement 0.58.0", + "windows-interface 0.58.0", ] [[package]] name = "webview2-com-macros" -version = "0.6.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaebe196c01691db62e9e4ca52c5ef1e4fd837dcae27dae3ada599b5a8fd05ac" +checksum = "1d228f15bba3b9d56dde8bddbee66fa24545bd17b48d5128ccf4a8742b18e431" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.77", ] [[package]] name = "webview2-com-sys" -version = "0.19.0" +version = "0.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aac48ef20ddf657755fdcda8dfed2a7b4fc7e4581acce6fe9b88c3d64f29dee7" +checksum = "a3a3e2eeb58f82361c93f9777014668eb3d07e7d174ee4c819575a9208011886" dependencies = [ - "regex 1.10.5", - "serde", - "serde_json", "thiserror", - "windows 0.39.0", - "windows-bindgen", - "windows-metadata", + "windows 0.58.0", + "windows-core 0.58.0", ] [[package]] @@ -6742,7 +6977,7 @@ dependencies = [ "either", "home", "once_cell", - "rustix 0.38.34", + "rustix 0.38.35", ] [[package]] @@ -6763,11 +6998,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -6784,35 +7019,21 @@ checksum = "67ff424735b1ac21293b0492b069394b0a189c8a463fb015a16dea7c2e221c08" dependencies = [ "cocoa 0.25.0", "objc", - "raw-window-handle", + "raw-window-handle 0.5.2", "windows-sys 0.48.0", ] [[package]] -name = "windows" -version = "0.37.0" +name = "window-vibrancy" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57b543186b344cc61c85b5aab0d2e3adf4e0f99bc076eff9aa5927bcc0b8a647" +checksum = "d8cdd6999298d969289d8078dae02ce798ad23452075985cccba8b6326711ecf" dependencies = [ - "windows_aarch64_msvc 0.37.0", - "windows_i686_gnu 0.37.0", - "windows_i686_msvc 0.37.0", - "windows_x86_64_gnu 0.37.0", - "windows_x86_64_msvc 0.37.0", -] - -[[package]] -name = "windows" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1c4bd0a50ac6020f65184721f758dba47bb9fbc2133df715ec74a237b26794a" -dependencies = [ - "windows-implement 0.39.0", - "windows_aarch64_msvc 0.39.0", - "windows_i686_gnu 0.39.0", - "windows_i686_msvc 0.39.0", - "windows_x86_64_gnu 0.39.0", - "windows_x86_64_msvc 0.39.0", + "cocoa 0.26.0", + "objc", + "raw-window-handle 0.6.2", + "windows-sys 0.59.0", + "windows-version", ] [[package]] @@ -6845,13 +7066,13 @@ dependencies = [ ] [[package]] -name = "windows-bindgen" -version = "0.39.0" +name = "windows" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68003dbd0e38abc0fb85b939240f4bce37c43a5981d3df37ccbaaa981b47cb41" +checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" dependencies = [ - "windows-metadata", - "windows-tokens", + "windows-core 0.58.0", + "windows-targets 0.52.6", ] [[package]] @@ -6870,19 +7091,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4698e52ed2d08f8658ab0c39512a7c00ee5fe2688c65f8c0a4f06750d729f2a6" dependencies = [ "windows-implement 0.56.0", - "windows-interface", - "windows-result", + "windows-interface 0.56.0", + "windows-result 0.1.2", "windows-targets 0.52.6", ] [[package]] -name = "windows-implement" -version = "0.39.0" +name = "windows-core" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba01f98f509cb5dc05f4e5fc95e535f78260f15fea8fe1a8abdd08f774f1cee7" +checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" dependencies = [ - "syn 1.0.109", - "windows-tokens", + "windows-implement 0.58.0", + "windows-interface 0.58.0", + "windows-result 0.2.0", + "windows-strings", + "windows-targets 0.52.6", ] [[package]] @@ -6893,7 +7117,18 @@ checksum = "f6fc35f58ecd95a9b71c4f2329b911016e6bec66b3f2e6a4aad86bd2e99e2f9b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.77", +] + +[[package]] +name = "windows-implement" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", ] [[package]] @@ -6904,14 +7139,30 @@ checksum = "08990546bf4edef8f431fa6326e032865f27138718c587dc21bc0265bbcb57cc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.77", ] [[package]] -name = "windows-metadata" -version = "0.39.0" +name = "windows-interface" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ee5e275231f07c6e240d14f34e1b635bf1faa1c76c57cfd59a5cdb9848e4278" +checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "windows-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +dependencies = [ + "windows-result 0.2.0", + "windows-strings", + "windows-targets 0.52.6", +] [[package]] name = "windows-result" @@ -6923,18 +7174,31 @@ dependencies = [ ] [[package]] -name = "windows-sys" -version = "0.42.0" +name = "windows-result" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result 0.2.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", ] [[package]] @@ -6955,6 +7219,30 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + [[package]] name = "windows-targets" version = "0.48.5" @@ -6986,12 +7274,6 @@ dependencies = [ "windows_x86_64_msvc 0.52.6", ] -[[package]] -name = "windows-tokens" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f838de2fe15fe6bac988e74b798f26499a8b21a9d97edec321e79b28d1d7f597" - [[package]] name = "windows-version" version = "0.1.1" @@ -7019,18 +7301,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" -[[package]] -name = "windows_aarch64_msvc" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2623277cb2d1c216ba3b578c0f3cf9cdebeddb6e66b1b218bb33596ea7769c3a" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec7711666096bd4096ffa835238905bb33fb87267910e154b18b44eaabb340f2" - [[package]] name = "windows_aarch64_msvc" version = "0.42.2" @@ -7049,18 +7319,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" -[[package]] -name = "windows_i686_gnu" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3925fd0b0b804730d44d4b6278c50f9699703ec49bcd628020f46f4ba07d9e1" - -[[package]] -name = "windows_i686_gnu" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "763fc57100a5f7042e3057e7e8d9bdd7860d330070251a73d003563a3bb49e1b" - [[package]] name = "windows_i686_gnu" version = "0.42.2" @@ -7085,18 +7343,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" -[[package]] -name = "windows_i686_msvc" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce907ac74fe331b524c1298683efbf598bb031bc84d5e274db2083696d07c57c" - -[[package]] -name = "windows_i686_msvc" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bc7cbfe58828921e10a9f446fcaaf649204dcfe6c1ddd712c5eebae6bda1106" - [[package]] name = "windows_i686_msvc" version = "0.42.2" @@ -7115,18 +7361,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" -[[package]] -name = "windows_x86_64_gnu" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2babfba0828f2e6b32457d5341427dcbb577ceef556273229959ac23a10af33d" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6868c165637d653ae1e8dc4d82c25d4f97dd6605eaa8d784b5c6e0ab2a252b65" - [[package]] name = "windows_x86_64_gnu" version = "0.42.2" @@ -7163,18 +7397,6 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" -[[package]] -name = "windows_x86_64_msvc" -version = "0.37.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4dd6dc7df2d84cf7b33822ed5b86318fb1781948e9663bacd047fc9dd52259d" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e4d40883ae9cae962787ca76ba76390ffa29214667a111db9e0a1ad8377e809" - [[package]] name = "windows_x86_64_msvc" version = "0.42.2" @@ -7202,15 +7424,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "winnow" -version = "0.6.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1" -dependencies = [ - "memchr", -] - [[package]] name = "winreg" version = "0.10.1" @@ -7220,16 +7433,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "winreg" -version = "0.50.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] - [[package]] name = "winreg" version = "0.52.0" @@ -7240,26 +7443,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "wl-clipboard-rs" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12b41773911497b18ca8553c3daaf8ec9fe9819caf93d451d3055f69de028adb" -dependencies = [ - "derive-new", - "libc", - "log 0.4.22", - "nix 0.28.0", - "os_pipe", - "tempfile", - "thiserror", - "tree_magic_mini", - "wayland-backend", - "wayland-client", - "wayland-protocols", - "wayland-protocols-wlr", -] - [[package]] name = "write16" version = "1.0.0" @@ -7274,40 +7457,42 @@ checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" [[package]] name = "wry" -version = "0.24.10" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00711278ed357350d44c749c286786ecac644e044e4da410d466212152383b45" +checksum = "49b8049c8f239cdbfaaea4bacb9646f6b208938ceec0acd5b3e99cd05f70903f" dependencies = [ - "base64 0.13.1", + "base64 0.22.1", "block", - "cocoa 0.24.1", - "core-graphics 0.22.3", + "cocoa 0.26.0", + "core-graphics 0.24.0", "crossbeam-channel", + "dpi", "dunce", - "gdk", - "gio", - "glib", + "gdkx11", "gtk", "html5ever", - "http 0.2.12", + "http 1.1.0", + "javascriptcore-rs", + "jni", "kuchikiki", "libc", - "log 0.4.22", + "ndk", "objc", "objc_id", "once_cell", - "serde", - "serde_json", + "percent-encoding", + "raw-window-handle 0.6.2", "sha2 0.10.8", - "soup2", - "tao", + "soup3", + "tao-macros", "thiserror", - "url", "webkit2gtk", "webkit2gtk-sys", "webview2-com", - "windows 0.39.0", - "windows-implement 0.39.0", + "windows 0.58.0", + "windows-core 0.58.0", + "windows-version", + "x11-dl", ] [[package]] @@ -7338,7 +7523,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12" dependencies = [ "gethostname", - "rustix 0.38.34", + "rustix 0.38.35", "x11rb-protocol", ] @@ -7356,7 +7541,7 @@ checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" dependencies = [ "libc", "linux-raw-sys 0.4.14", - "rustix 0.38.34", + "rustix 0.38.35", ] [[package]] @@ -7367,12 +7552,12 @@ checksum = "213b7324336b53d2414b2db8537e56544d981803139155afa84f76eeebb7a546" [[package]] name = "xdg-home" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca91dcf8f93db085f3a0a29358cd0b9d670915468f4290e8b85d118a34211ab8" +checksum = "ec1cdab258fb55c0da61328dc52c8764709b249011b2cad0454c72f0bf10a1f6" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -7395,39 +7580,41 @@ checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.77", "synstructure", ] [[package]] name = "zbus" -version = "4.3.1" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "851238c133804e0aa888edf4a0229481c753544ca12a60fd1c3230c8a500fe40" +checksum = "7b8e3d6ae3342792a6cc2340e4394334c7402f3d793b390d2c5494a4032b3030" dependencies = [ "async-broadcast", "async-executor", "async-fs 2.1.2", - "async-io 2.3.3", + "async-io 2.3.4", "async-lock 3.4.0", - "async-process 2.2.3", + "async-process 2.2.4", "async-recursion", "async-task", "async-trait", "blocking", + "derivative", "enumflags2", "event-listener 5.3.0", "futures-core", "futures-sink", "futures-util", "hex", - "nix 0.29.0", + "nix 0.27.1", "ordered-stream", "rand 0.8.5", "serde", "serde_repr", "sha1", "static_assertions", + "tokio", "tracing", "uds_windows", "windows-sys 0.52.0", @@ -7439,14 +7626,15 @@ dependencies = [ [[package]] name = "zbus_macros" -version = "4.3.1" +version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d5a3f12c20bd473be3194af6b49d50d7bb804ef3192dc70eddedb26b85d9da7" +checksum = "b7a3e850ff1e7217a3b7a07eba90d37fe9bb9e89a310f718afcde5885ca9b6d7" dependencies = [ - "proc-macro-crate 3.1.0", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.68", + "regex", + "syn 1.0.109", "zvariant_utils", ] @@ -7467,6 +7655,7 @@ version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ + "byteorder", "zerocopy-derive", ] @@ -7478,7 +7667,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.77", ] [[package]] @@ -7498,7 +7687,7 @@ checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.77", "synstructure", ] @@ -7527,53 +7716,67 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.77", ] [[package]] name = "zip" -version = "0.6.6" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +checksum = "dc5e4288ea4057ae23afc69a4472434a87a2495cafce6632fd1c4ec9f5cf3494" dependencies = [ - "byteorder", + "arbitrary", "crc32fast", "crossbeam-utils", + "displaydoc", + "indexmap 2.5.0", + "memchr", + "thiserror", +] + +[[package]] +name = "zune-inflate" +version = "0.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" +dependencies = [ + "simd-adler32", ] [[package]] name = "zvariant" -version = "4.1.2" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1724a2b330760dc7d2a8402d841119dc869ef120b139d29862d6980e9c75bfc9" +checksum = "4e09e8be97d44eeab994d752f341e67b3b0d80512a8b315a0671d47232ef1b65" dependencies = [ "endi", "enumflags2", "serde", "static_assertions", + "url", "zvariant_derive", ] [[package]] name = "zvariant_derive" -version = "4.1.2" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55025a7a518ad14518fb243559c058a2e5b848b015e31f1d90414f36e3317859" +checksum = "72a5857e2856435331636a9fbb415b09243df4521a267c5bedcd5289b4d5799e" dependencies = [ - "proc-macro-crate 3.1.0", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.68", + "syn 1.0.109", "zvariant_utils", ] [[package]] name = "zvariant_utils" -version = "2.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc242db087efc22bd9ade7aa7809e4ba828132edc312871584a6b4391bdf8786" +checksum = "00bedb16a193cc12451873fee2a1bc6550225acece0e36f333e68326c73c8172" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 1.0.109", ] diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index a66a2da..43e52c7 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -10,7 +10,7 @@ edition = "2021" build = "build.rs" [build-dependencies] -tauri-build = { version="1", features = [] } +tauri-build = { version= "2.0.0-rc", features = [] } [dependencies] warp = "0.3" @@ -32,13 +32,19 @@ delay_timer = "0.11" parking_lot = "0.12" auto-launch = "0.5.0" percent-encoding = "2.3.1" -window-shadows = { version = "0.2" } +window-shadows = { version = "0.2.2" } tokio = { version = "1", features = ["full"] } serde = { version = "1.0", features = ["derive"] } reqwest = { version = "0.12", features = ["json", "rustls-tls"] } sysproxy = { git="https://github.com/zzzgydi/sysproxy-rs", branch = "main" } -tauri = { version="1", features = [ "fs-read-file", "fs-exists", "path-all", "protocol-asset", "dialog-open", "notification-all", "icon-png", "icon-ico", "clipboard-all", "global-shortcut-all", "process-all", "shell-all", "system-tray", "updater", "window-all", "devtools"] } +tauri = { version= "2.0.0-rc", features = [ "protocol-asset", "devtools", "tray-icon", "image-ico", "image-png"] } network-interface = { version = "2.0.0", features = ["serde"] } +tauri-plugin-shell = "2.0.0-rc" +tauri-plugin-dialog = "2.0.0-rc" +tauri-plugin-fs = "2.0.0-rc" +tauri-plugin-notification = "2.0.0-rc" +tauri-plugin-process = "2.0.0-rc" +tauri-plugin-clipboard-manager = "2.1.0-beta.7" [target.'cfg(windows)'.dependencies] runas = "=1.2.0" deelevate = "0.2.0" @@ -46,6 +52,10 @@ winreg = "0.52.0" [target.'cfg(target_os = "linux")'.dependencies] users = "0.11.0" + +[target.'cfg(not(any(target_os = "android", target_os = "ios")))'.dependencies] +tauri-plugin-global-shortcut = "2.0.0-rc" +tauri-plugin-updater = "2.0.0-rc" #openssl [features] diff --git a/src-tauri/capabilities/desktop.json b/src-tauri/capabilities/desktop.json new file mode 100644 index 0000000..e815532 --- /dev/null +++ b/src-tauri/capabilities/desktop.json @@ -0,0 +1,5 @@ +{ + "identifier": "desktop-capability", + "platforms": ["macOS", "windows", "linux"], + "permissions": ["global-shortcut:default", "updater:default"] +} diff --git a/src-tauri/capabilities/migrated.json b/src-tauri/capabilities/migrated.json new file mode 100644 index 0000000..d78af8a --- /dev/null +++ b/src-tauri/capabilities/migrated.json @@ -0,0 +1,65 @@ +{ + "identifier": "migrated", + "description": "permissions that were migrated from v1", + "local": true, + "windows": ["main"], + "permissions": [ + "core:default", + "fs:allow-read-file", + "fs:allow-exists", + { + "identifier": "fs:scope", + "allow": ["$APPDATA/**", "$RESOURCE/../**", "**"] + }, + "core:window:allow-create", + "core:window:allow-center", + "core:window:allow-request-user-attention", + "core:window:allow-set-resizable", + "core:window:allow-set-maximizable", + "core:window:allow-set-minimizable", + "core:window:allow-set-closable", + "core:window:allow-set-title", + "core:window:allow-maximize", + "core:window:allow-unmaximize", + "core:window:allow-minimize", + "core:window:allow-unminimize", + "core:window:allow-show", + "core:window:allow-hide", + "core:window:allow-close", + "core:window:allow-set-decorations", + "core:window:allow-set-always-on-top", + "core:window:allow-set-content-protected", + "core:window:allow-set-size", + "core:window:allow-set-min-size", + "core:window:allow-set-max-size", + "core:window:allow-set-position", + "core:window:allow-set-fullscreen", + "core:window:allow-set-focus", + "core:window:allow-set-icon", + "core:window:allow-set-skip-taskbar", + "core:window:allow-set-cursor-grab", + "core:window:allow-set-cursor-visible", + "core:window:allow-set-cursor-icon", + "core:window:allow-set-cursor-position", + "core:window:allow-set-ignore-cursor-events", + "core:window:allow-start-dragging", + "core:webview:allow-print", + "shell:allow-execute", + "shell:allow-open", + "dialog:allow-open", + "notification:default", + "global-shortcut:allow-is-registered", + "global-shortcut:allow-register", + "global-shortcut:allow-register-all", + "global-shortcut:allow-unregister", + "global-shortcut:allow-unregister-all", + "process:allow-restart", + "process:allow-exit", + "clipboard-manager:allow-read-text", + "clipboard-manager:allow-write-text", + "shell:default", + "dialog:default", + "fs:default", + "notification:default" + ] +} diff --git a/src-tauri/gen/schemas/acl-manifests.json b/src-tauri/gen/schemas/acl-manifests.json new file mode 100644 index 0000000..9ec293c --- /dev/null +++ b/src-tauri/gen/schemas/acl-manifests.json @@ -0,0 +1,3811 @@ +{ + "clipboard-manager": { + "default_permission": { + "identifier": "default", + "description": "No features are enabled by default, as we believe\nthe clipboard can be inherently dangerous and it is \napplication specific if read and/or write access is needed.\n\nClipboard interaction needs to be explicitly enabled.\n", + "permissions": [] + }, + "permissions": { + "allow-clear": { + "identifier": "allow-clear", + "description": "Enables the clear command without any pre-configured scope.", + "commands": { "allow": ["clear"], "deny": [] } + }, + "allow-read-image": { + "identifier": "allow-read-image", + "description": "Enables the read_image command without any pre-configured scope.", + "commands": { "allow": ["read_image"], "deny": [] } + }, + "allow-read-text": { + "identifier": "allow-read-text", + "description": "Enables the read_text command without any pre-configured scope.", + "commands": { "allow": ["read_text"], "deny": [] } + }, + "allow-write-html": { + "identifier": "allow-write-html", + "description": "Enables the write_html command without any pre-configured scope.", + "commands": { "allow": ["write_html"], "deny": [] } + }, + "allow-write-image": { + "identifier": "allow-write-image", + "description": "Enables the write_image command without any pre-configured scope.", + "commands": { "allow": ["write_image"], "deny": [] } + }, + "allow-write-text": { + "identifier": "allow-write-text", + "description": "Enables the write_text command without any pre-configured scope.", + "commands": { "allow": ["write_text"], "deny": [] } + }, + "deny-clear": { + "identifier": "deny-clear", + "description": "Denies the clear command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["clear"] } + }, + "deny-read-image": { + "identifier": "deny-read-image", + "description": "Denies the read_image command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["read_image"] } + }, + "deny-read-text": { + "identifier": "deny-read-text", + "description": "Denies the read_text command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["read_text"] } + }, + "deny-write-html": { + "identifier": "deny-write-html", + "description": "Denies the write_html command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["write_html"] } + }, + "deny-write-image": { + "identifier": "deny-write-image", + "description": "Denies the write_image command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["write_image"] } + }, + "deny-write-text": { + "identifier": "deny-write-text", + "description": "Denies the write_text command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["write_text"] } + } + }, + "permission_sets": {}, + "global_scope_schema": null + }, + "core:app": { + "default_permission": { + "identifier": "default", + "description": "Default permissions for the plugin.", + "permissions": ["allow-version", "allow-name", "allow-tauri-version"] + }, + "permissions": { + "allow-app-hide": { + "identifier": "allow-app-hide", + "description": "Enables the app_hide command without any pre-configured scope.", + "commands": { "allow": ["app_hide"], "deny": [] } + }, + "allow-app-show": { + "identifier": "allow-app-show", + "description": "Enables the app_show command without any pre-configured scope.", + "commands": { "allow": ["app_show"], "deny": [] } + }, + "allow-default-window-icon": { + "identifier": "allow-default-window-icon", + "description": "Enables the default_window_icon command without any pre-configured scope.", + "commands": { "allow": ["default_window_icon"], "deny": [] } + }, + "allow-name": { + "identifier": "allow-name", + "description": "Enables the name command without any pre-configured scope.", + "commands": { "allow": ["name"], "deny": [] } + }, + "allow-tauri-version": { + "identifier": "allow-tauri-version", + "description": "Enables the tauri_version command without any pre-configured scope.", + "commands": { "allow": ["tauri_version"], "deny": [] } + }, + "allow-version": { + "identifier": "allow-version", + "description": "Enables the version command without any pre-configured scope.", + "commands": { "allow": ["version"], "deny": [] } + }, + "deny-app-hide": { + "identifier": "deny-app-hide", + "description": "Denies the app_hide command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["app_hide"] } + }, + "deny-app-show": { + "identifier": "deny-app-show", + "description": "Denies the app_show command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["app_show"] } + }, + "deny-default-window-icon": { + "identifier": "deny-default-window-icon", + "description": "Denies the default_window_icon command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["default_window_icon"] } + }, + "deny-name": { + "identifier": "deny-name", + "description": "Denies the name command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["name"] } + }, + "deny-tauri-version": { + "identifier": "deny-tauri-version", + "description": "Denies the tauri_version command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["tauri_version"] } + }, + "deny-version": { + "identifier": "deny-version", + "description": "Denies the version command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["version"] } + } + }, + "permission_sets": {}, + "global_scope_schema": null + }, + "core:event": { + "default_permission": { + "identifier": "default", + "description": "Default permissions for the plugin.", + "permissions": [ + "allow-listen", + "allow-unlisten", + "allow-emit", + "allow-emit-to" + ] + }, + "permissions": { + "allow-emit": { + "identifier": "allow-emit", + "description": "Enables the emit command without any pre-configured scope.", + "commands": { "allow": ["emit"], "deny": [] } + }, + "allow-emit-to": { + "identifier": "allow-emit-to", + "description": "Enables the emit_to command without any pre-configured scope.", + "commands": { "allow": ["emit_to"], "deny": [] } + }, + "allow-listen": { + "identifier": "allow-listen", + "description": "Enables the listen command without any pre-configured scope.", + "commands": { "allow": ["listen"], "deny": [] } + }, + "allow-unlisten": { + "identifier": "allow-unlisten", + "description": "Enables the unlisten command without any pre-configured scope.", + "commands": { "allow": ["unlisten"], "deny": [] } + }, + "deny-emit": { + "identifier": "deny-emit", + "description": "Denies the emit command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["emit"] } + }, + "deny-emit-to": { + "identifier": "deny-emit-to", + "description": "Denies the emit_to command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["emit_to"] } + }, + "deny-listen": { + "identifier": "deny-listen", + "description": "Denies the listen command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["listen"] } + }, + "deny-unlisten": { + "identifier": "deny-unlisten", + "description": "Denies the unlisten command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["unlisten"] } + } + }, + "permission_sets": {}, + "global_scope_schema": null + }, + "core:image": { + "default_permission": { + "identifier": "default", + "description": "Default permissions for the plugin.", + "permissions": [ + "allow-new", + "allow-from-bytes", + "allow-from-path", + "allow-rgba", + "allow-size" + ] + }, + "permissions": { + "allow-from-bytes": { + "identifier": "allow-from-bytes", + "description": "Enables the from_bytes command without any pre-configured scope.", + "commands": { "allow": ["from_bytes"], "deny": [] } + }, + "allow-from-path": { + "identifier": "allow-from-path", + "description": "Enables the from_path command without any pre-configured scope.", + "commands": { "allow": ["from_path"], "deny": [] } + }, + "allow-new": { + "identifier": "allow-new", + "description": "Enables the new command without any pre-configured scope.", + "commands": { "allow": ["new"], "deny": [] } + }, + "allow-rgba": { + "identifier": "allow-rgba", + "description": "Enables the rgba command without any pre-configured scope.", + "commands": { "allow": ["rgba"], "deny": [] } + }, + "allow-size": { + "identifier": "allow-size", + "description": "Enables the size command without any pre-configured scope.", + "commands": { "allow": ["size"], "deny": [] } + }, + "deny-from-bytes": { + "identifier": "deny-from-bytes", + "description": "Denies the from_bytes command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["from_bytes"] } + }, + "deny-from-path": { + "identifier": "deny-from-path", + "description": "Denies the from_path command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["from_path"] } + }, + "deny-new": { + "identifier": "deny-new", + "description": "Denies the new command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["new"] } + }, + "deny-rgba": { + "identifier": "deny-rgba", + "description": "Denies the rgba command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["rgba"] } + }, + "deny-size": { + "identifier": "deny-size", + "description": "Denies the size command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["size"] } + } + }, + "permission_sets": {}, + "global_scope_schema": null + }, + "core:menu": { + "default_permission": { + "identifier": "default", + "description": "Default permissions for the plugin.", + "permissions": [ + "allow-new", + "allow-append", + "allow-prepend", + "allow-insert", + "allow-remove", + "allow-remove-at", + "allow-items", + "allow-get", + "allow-popup", + "allow-create-default", + "allow-set-as-app-menu", + "allow-set-as-window-menu", + "allow-text", + "allow-set-text", + "allow-is-enabled", + "allow-set-enabled", + "allow-set-accelerator", + "allow-set-as-windows-menu-for-nsapp", + "allow-set-as-help-menu-for-nsapp", + "allow-is-checked", + "allow-set-checked", + "allow-set-icon" + ] + }, + "permissions": { + "allow-append": { + "identifier": "allow-append", + "description": "Enables the append command without any pre-configured scope.", + "commands": { "allow": ["append"], "deny": [] } + }, + "allow-create-default": { + "identifier": "allow-create-default", + "description": "Enables the create_default command without any pre-configured scope.", + "commands": { "allow": ["create_default"], "deny": [] } + }, + "allow-get": { + "identifier": "allow-get", + "description": "Enables the get command without any pre-configured scope.", + "commands": { "allow": ["get"], "deny": [] } + }, + "allow-insert": { + "identifier": "allow-insert", + "description": "Enables the insert command without any pre-configured scope.", + "commands": { "allow": ["insert"], "deny": [] } + }, + "allow-is-checked": { + "identifier": "allow-is-checked", + "description": "Enables the is_checked command without any pre-configured scope.", + "commands": { "allow": ["is_checked"], "deny": [] } + }, + "allow-is-enabled": { + "identifier": "allow-is-enabled", + "description": "Enables the is_enabled command without any pre-configured scope.", + "commands": { "allow": ["is_enabled"], "deny": [] } + }, + "allow-items": { + "identifier": "allow-items", + "description": "Enables the items command without any pre-configured scope.", + "commands": { "allow": ["items"], "deny": [] } + }, + "allow-new": { + "identifier": "allow-new", + "description": "Enables the new command without any pre-configured scope.", + "commands": { "allow": ["new"], "deny": [] } + }, + "allow-popup": { + "identifier": "allow-popup", + "description": "Enables the popup command without any pre-configured scope.", + "commands": { "allow": ["popup"], "deny": [] } + }, + "allow-prepend": { + "identifier": "allow-prepend", + "description": "Enables the prepend command without any pre-configured scope.", + "commands": { "allow": ["prepend"], "deny": [] } + }, + "allow-remove": { + "identifier": "allow-remove", + "description": "Enables the remove command without any pre-configured scope.", + "commands": { "allow": ["remove"], "deny": [] } + }, + "allow-remove-at": { + "identifier": "allow-remove-at", + "description": "Enables the remove_at command without any pre-configured scope.", + "commands": { "allow": ["remove_at"], "deny": [] } + }, + "allow-set-accelerator": { + "identifier": "allow-set-accelerator", + "description": "Enables the set_accelerator command without any pre-configured scope.", + "commands": { "allow": ["set_accelerator"], "deny": [] } + }, + "allow-set-as-app-menu": { + "identifier": "allow-set-as-app-menu", + "description": "Enables the set_as_app_menu command without any pre-configured scope.", + "commands": { "allow": ["set_as_app_menu"], "deny": [] } + }, + "allow-set-as-help-menu-for-nsapp": { + "identifier": "allow-set-as-help-menu-for-nsapp", + "description": "Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "commands": { "allow": ["set_as_help_menu_for_nsapp"], "deny": [] } + }, + "allow-set-as-window-menu": { + "identifier": "allow-set-as-window-menu", + "description": "Enables the set_as_window_menu command without any pre-configured scope.", + "commands": { "allow": ["set_as_window_menu"], "deny": [] } + }, + "allow-set-as-windows-menu-for-nsapp": { + "identifier": "allow-set-as-windows-menu-for-nsapp", + "description": "Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "commands": { "allow": ["set_as_windows_menu_for_nsapp"], "deny": [] } + }, + "allow-set-checked": { + "identifier": "allow-set-checked", + "description": "Enables the set_checked command without any pre-configured scope.", + "commands": { "allow": ["set_checked"], "deny": [] } + }, + "allow-set-enabled": { + "identifier": "allow-set-enabled", + "description": "Enables the set_enabled command without any pre-configured scope.", + "commands": { "allow": ["set_enabled"], "deny": [] } + }, + "allow-set-icon": { + "identifier": "allow-set-icon", + "description": "Enables the set_icon command without any pre-configured scope.", + "commands": { "allow": ["set_icon"], "deny": [] } + }, + "allow-set-text": { + "identifier": "allow-set-text", + "description": "Enables the set_text command without any pre-configured scope.", + "commands": { "allow": ["set_text"], "deny": [] } + }, + "allow-text": { + "identifier": "allow-text", + "description": "Enables the text command without any pre-configured scope.", + "commands": { "allow": ["text"], "deny": [] } + }, + "deny-append": { + "identifier": "deny-append", + "description": "Denies the append command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["append"] } + }, + "deny-create-default": { + "identifier": "deny-create-default", + "description": "Denies the create_default command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["create_default"] } + }, + "deny-get": { + "identifier": "deny-get", + "description": "Denies the get command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["get"] } + }, + "deny-insert": { + "identifier": "deny-insert", + "description": "Denies the insert command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["insert"] } + }, + "deny-is-checked": { + "identifier": "deny-is-checked", + "description": "Denies the is_checked command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["is_checked"] } + }, + "deny-is-enabled": { + "identifier": "deny-is-enabled", + "description": "Denies the is_enabled command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["is_enabled"] } + }, + "deny-items": { + "identifier": "deny-items", + "description": "Denies the items command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["items"] } + }, + "deny-new": { + "identifier": "deny-new", + "description": "Denies the new command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["new"] } + }, + "deny-popup": { + "identifier": "deny-popup", + "description": "Denies the popup command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["popup"] } + }, + "deny-prepend": { + "identifier": "deny-prepend", + "description": "Denies the prepend command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["prepend"] } + }, + "deny-remove": { + "identifier": "deny-remove", + "description": "Denies the remove command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["remove"] } + }, + "deny-remove-at": { + "identifier": "deny-remove-at", + "description": "Denies the remove_at command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["remove_at"] } + }, + "deny-set-accelerator": { + "identifier": "deny-set-accelerator", + "description": "Denies the set_accelerator command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_accelerator"] } + }, + "deny-set-as-app-menu": { + "identifier": "deny-set-as-app-menu", + "description": "Denies the set_as_app_menu command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_as_app_menu"] } + }, + "deny-set-as-help-menu-for-nsapp": { + "identifier": "deny-set-as-help-menu-for-nsapp", + "description": "Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_as_help_menu_for_nsapp"] } + }, + "deny-set-as-window-menu": { + "identifier": "deny-set-as-window-menu", + "description": "Denies the set_as_window_menu command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_as_window_menu"] } + }, + "deny-set-as-windows-menu-for-nsapp": { + "identifier": "deny-set-as-windows-menu-for-nsapp", + "description": "Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_as_windows_menu_for_nsapp"] } + }, + "deny-set-checked": { + "identifier": "deny-set-checked", + "description": "Denies the set_checked command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_checked"] } + }, + "deny-set-enabled": { + "identifier": "deny-set-enabled", + "description": "Denies the set_enabled command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_enabled"] } + }, + "deny-set-icon": { + "identifier": "deny-set-icon", + "description": "Denies the set_icon command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_icon"] } + }, + "deny-set-text": { + "identifier": "deny-set-text", + "description": "Denies the set_text command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_text"] } + }, + "deny-text": { + "identifier": "deny-text", + "description": "Denies the text command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["text"] } + } + }, + "permission_sets": {}, + "global_scope_schema": null + }, + "core:path": { + "default_permission": { + "identifier": "default", + "description": "Default permissions for the plugin.", + "permissions": [ + "allow-resolve-directory", + "allow-resolve", + "allow-normalize", + "allow-join", + "allow-dirname", + "allow-extname", + "allow-basename", + "allow-is-absolute" + ] + }, + "permissions": { + "allow-basename": { + "identifier": "allow-basename", + "description": "Enables the basename command without any pre-configured scope.", + "commands": { "allow": ["basename"], "deny": [] } + }, + "allow-dirname": { + "identifier": "allow-dirname", + "description": "Enables the dirname command without any pre-configured scope.", + "commands": { "allow": ["dirname"], "deny": [] } + }, + "allow-extname": { + "identifier": "allow-extname", + "description": "Enables the extname command without any pre-configured scope.", + "commands": { "allow": ["extname"], "deny": [] } + }, + "allow-is-absolute": { + "identifier": "allow-is-absolute", + "description": "Enables the is_absolute command without any pre-configured scope.", + "commands": { "allow": ["is_absolute"], "deny": [] } + }, + "allow-join": { + "identifier": "allow-join", + "description": "Enables the join command without any pre-configured scope.", + "commands": { "allow": ["join"], "deny": [] } + }, + "allow-normalize": { + "identifier": "allow-normalize", + "description": "Enables the normalize command without any pre-configured scope.", + "commands": { "allow": ["normalize"], "deny": [] } + }, + "allow-resolve": { + "identifier": "allow-resolve", + "description": "Enables the resolve command without any pre-configured scope.", + "commands": { "allow": ["resolve"], "deny": [] } + }, + "allow-resolve-directory": { + "identifier": "allow-resolve-directory", + "description": "Enables the resolve_directory command without any pre-configured scope.", + "commands": { "allow": ["resolve_directory"], "deny": [] } + }, + "deny-basename": { + "identifier": "deny-basename", + "description": "Denies the basename command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["basename"] } + }, + "deny-dirname": { + "identifier": "deny-dirname", + "description": "Denies the dirname command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["dirname"] } + }, + "deny-extname": { + "identifier": "deny-extname", + "description": "Denies the extname command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["extname"] } + }, + "deny-is-absolute": { + "identifier": "deny-is-absolute", + "description": "Denies the is_absolute command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["is_absolute"] } + }, + "deny-join": { + "identifier": "deny-join", + "description": "Denies the join command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["join"] } + }, + "deny-normalize": { + "identifier": "deny-normalize", + "description": "Denies the normalize command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["normalize"] } + }, + "deny-resolve": { + "identifier": "deny-resolve", + "description": "Denies the resolve command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["resolve"] } + }, + "deny-resolve-directory": { + "identifier": "deny-resolve-directory", + "description": "Denies the resolve_directory command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["resolve_directory"] } + } + }, + "permission_sets": {}, + "global_scope_schema": null + }, + "core:resources": { + "default_permission": { + "identifier": "default", + "description": "Default permissions for the plugin.", + "permissions": ["allow-close"] + }, + "permissions": { + "allow-close": { + "identifier": "allow-close", + "description": "Enables the close command without any pre-configured scope.", + "commands": { "allow": ["close"], "deny": [] } + }, + "deny-close": { + "identifier": "deny-close", + "description": "Denies the close command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["close"] } + } + }, + "permission_sets": {}, + "global_scope_schema": null + }, + "core:tray": { + "default_permission": { + "identifier": "default", + "description": "Default permissions for the plugin.", + "permissions": [ + "allow-new", + "allow-get-by-id", + "allow-remove-by-id", + "allow-set-icon", + "allow-set-menu", + "allow-set-tooltip", + "allow-set-title", + "allow-set-visible", + "allow-set-temp-dir-path", + "allow-set-icon-as-template", + "allow-set-show-menu-on-left-click" + ] + }, + "permissions": { + "allow-get-by-id": { + "identifier": "allow-get-by-id", + "description": "Enables the get_by_id command without any pre-configured scope.", + "commands": { "allow": ["get_by_id"], "deny": [] } + }, + "allow-new": { + "identifier": "allow-new", + "description": "Enables the new command without any pre-configured scope.", + "commands": { "allow": ["new"], "deny": [] } + }, + "allow-remove-by-id": { + "identifier": "allow-remove-by-id", + "description": "Enables the remove_by_id command without any pre-configured scope.", + "commands": { "allow": ["remove_by_id"], "deny": [] } + }, + "allow-set-icon": { + "identifier": "allow-set-icon", + "description": "Enables the set_icon command without any pre-configured scope.", + "commands": { "allow": ["set_icon"], "deny": [] } + }, + "allow-set-icon-as-template": { + "identifier": "allow-set-icon-as-template", + "description": "Enables the set_icon_as_template command without any pre-configured scope.", + "commands": { "allow": ["set_icon_as_template"], "deny": [] } + }, + "allow-set-menu": { + "identifier": "allow-set-menu", + "description": "Enables the set_menu command without any pre-configured scope.", + "commands": { "allow": ["set_menu"], "deny": [] } + }, + "allow-set-show-menu-on-left-click": { + "identifier": "allow-set-show-menu-on-left-click", + "description": "Enables the set_show_menu_on_left_click command without any pre-configured scope.", + "commands": { "allow": ["set_show_menu_on_left_click"], "deny": [] } + }, + "allow-set-temp-dir-path": { + "identifier": "allow-set-temp-dir-path", + "description": "Enables the set_temp_dir_path command without any pre-configured scope.", + "commands": { "allow": ["set_temp_dir_path"], "deny": [] } + }, + "allow-set-title": { + "identifier": "allow-set-title", + "description": "Enables the set_title command without any pre-configured scope.", + "commands": { "allow": ["set_title"], "deny": [] } + }, + "allow-set-tooltip": { + "identifier": "allow-set-tooltip", + "description": "Enables the set_tooltip command without any pre-configured scope.", + "commands": { "allow": ["set_tooltip"], "deny": [] } + }, + "allow-set-visible": { + "identifier": "allow-set-visible", + "description": "Enables the set_visible command without any pre-configured scope.", + "commands": { "allow": ["set_visible"], "deny": [] } + }, + "deny-get-by-id": { + "identifier": "deny-get-by-id", + "description": "Denies the get_by_id command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["get_by_id"] } + }, + "deny-new": { + "identifier": "deny-new", + "description": "Denies the new command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["new"] } + }, + "deny-remove-by-id": { + "identifier": "deny-remove-by-id", + "description": "Denies the remove_by_id command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["remove_by_id"] } + }, + "deny-set-icon": { + "identifier": "deny-set-icon", + "description": "Denies the set_icon command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_icon"] } + }, + "deny-set-icon-as-template": { + "identifier": "deny-set-icon-as-template", + "description": "Denies the set_icon_as_template command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_icon_as_template"] } + }, + "deny-set-menu": { + "identifier": "deny-set-menu", + "description": "Denies the set_menu command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_menu"] } + }, + "deny-set-show-menu-on-left-click": { + "identifier": "deny-set-show-menu-on-left-click", + "description": "Denies the set_show_menu_on_left_click command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_show_menu_on_left_click"] } + }, + "deny-set-temp-dir-path": { + "identifier": "deny-set-temp-dir-path", + "description": "Denies the set_temp_dir_path command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_temp_dir_path"] } + }, + "deny-set-title": { + "identifier": "deny-set-title", + "description": "Denies the set_title command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_title"] } + }, + "deny-set-tooltip": { + "identifier": "deny-set-tooltip", + "description": "Denies the set_tooltip command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_tooltip"] } + }, + "deny-set-visible": { + "identifier": "deny-set-visible", + "description": "Denies the set_visible command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_visible"] } + } + }, + "permission_sets": {}, + "global_scope_schema": null + }, + "core:webview": { + "default_permission": { + "identifier": "default", + "description": "Default permissions for the plugin.", + "permissions": [ + "allow-get-all-webviews", + "allow-webview-position", + "allow-webview-size", + "allow-internal-toggle-devtools" + ] + }, + "permissions": { + "allow-create-webview": { + "identifier": "allow-create-webview", + "description": "Enables the create_webview command without any pre-configured scope.", + "commands": { "allow": ["create_webview"], "deny": [] } + }, + "allow-create-webview-window": { + "identifier": "allow-create-webview-window", + "description": "Enables the create_webview_window command without any pre-configured scope.", + "commands": { "allow": ["create_webview_window"], "deny": [] } + }, + "allow-get-all-webviews": { + "identifier": "allow-get-all-webviews", + "description": "Enables the get_all_webviews command without any pre-configured scope.", + "commands": { "allow": ["get_all_webviews"], "deny": [] } + }, + "allow-internal-toggle-devtools": { + "identifier": "allow-internal-toggle-devtools", + "description": "Enables the internal_toggle_devtools command without any pre-configured scope.", + "commands": { "allow": ["internal_toggle_devtools"], "deny": [] } + }, + "allow-print": { + "identifier": "allow-print", + "description": "Enables the print command without any pre-configured scope.", + "commands": { "allow": ["print"], "deny": [] } + }, + "allow-reparent": { + "identifier": "allow-reparent", + "description": "Enables the reparent command without any pre-configured scope.", + "commands": { "allow": ["reparent"], "deny": [] } + }, + "allow-set-webview-focus": { + "identifier": "allow-set-webview-focus", + "description": "Enables the set_webview_focus command without any pre-configured scope.", + "commands": { "allow": ["set_webview_focus"], "deny": [] } + }, + "allow-set-webview-position": { + "identifier": "allow-set-webview-position", + "description": "Enables the set_webview_position command without any pre-configured scope.", + "commands": { "allow": ["set_webview_position"], "deny": [] } + }, + "allow-set-webview-size": { + "identifier": "allow-set-webview-size", + "description": "Enables the set_webview_size command without any pre-configured scope.", + "commands": { "allow": ["set_webview_size"], "deny": [] } + }, + "allow-set-webview-zoom": { + "identifier": "allow-set-webview-zoom", + "description": "Enables the set_webview_zoom command without any pre-configured scope.", + "commands": { "allow": ["set_webview_zoom"], "deny": [] } + }, + "allow-webview-close": { + "identifier": "allow-webview-close", + "description": "Enables the webview_close command without any pre-configured scope.", + "commands": { "allow": ["webview_close"], "deny": [] } + }, + "allow-webview-position": { + "identifier": "allow-webview-position", + "description": "Enables the webview_position command without any pre-configured scope.", + "commands": { "allow": ["webview_position"], "deny": [] } + }, + "allow-webview-size": { + "identifier": "allow-webview-size", + "description": "Enables the webview_size command without any pre-configured scope.", + "commands": { "allow": ["webview_size"], "deny": [] } + }, + "deny-create-webview": { + "identifier": "deny-create-webview", + "description": "Denies the create_webview command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["create_webview"] } + }, + "deny-create-webview-window": { + "identifier": "deny-create-webview-window", + "description": "Denies the create_webview_window command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["create_webview_window"] } + }, + "deny-get-all-webviews": { + "identifier": "deny-get-all-webviews", + "description": "Denies the get_all_webviews command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["get_all_webviews"] } + }, + "deny-internal-toggle-devtools": { + "identifier": "deny-internal-toggle-devtools", + "description": "Denies the internal_toggle_devtools command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["internal_toggle_devtools"] } + }, + "deny-print": { + "identifier": "deny-print", + "description": "Denies the print command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["print"] } + }, + "deny-reparent": { + "identifier": "deny-reparent", + "description": "Denies the reparent command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["reparent"] } + }, + "deny-set-webview-focus": { + "identifier": "deny-set-webview-focus", + "description": "Denies the set_webview_focus command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_webview_focus"] } + }, + "deny-set-webview-position": { + "identifier": "deny-set-webview-position", + "description": "Denies the set_webview_position command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_webview_position"] } + }, + "deny-set-webview-size": { + "identifier": "deny-set-webview-size", + "description": "Denies the set_webview_size command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_webview_size"] } + }, + "deny-set-webview-zoom": { + "identifier": "deny-set-webview-zoom", + "description": "Denies the set_webview_zoom command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_webview_zoom"] } + }, + "deny-webview-close": { + "identifier": "deny-webview-close", + "description": "Denies the webview_close command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["webview_close"] } + }, + "deny-webview-position": { + "identifier": "deny-webview-position", + "description": "Denies the webview_position command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["webview_position"] } + }, + "deny-webview-size": { + "identifier": "deny-webview-size", + "description": "Denies the webview_size command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["webview_size"] } + } + }, + "permission_sets": {}, + "global_scope_schema": null + }, + "core:window": { + "default_permission": { + "identifier": "default", + "description": "Default permissions for the plugin.", + "permissions": [ + "allow-get-all-windows", + "allow-scale-factor", + "allow-inner-position", + "allow-outer-position", + "allow-inner-size", + "allow-outer-size", + "allow-is-fullscreen", + "allow-is-minimized", + "allow-is-maximized", + "allow-is-focused", + "allow-is-decorated", + "allow-is-resizable", + "allow-is-maximizable", + "allow-is-minimizable", + "allow-is-closable", + "allow-is-visible", + "allow-title", + "allow-current-monitor", + "allow-primary-monitor", + "allow-monitor-from-point", + "allow-available-monitors", + "allow-cursor-position", + "allow-theme", + "allow-internal-toggle-maximize" + ] + }, + "permissions": { + "allow-available-monitors": { + "identifier": "allow-available-monitors", + "description": "Enables the available_monitors command without any pre-configured scope.", + "commands": { "allow": ["available_monitors"], "deny": [] } + }, + "allow-center": { + "identifier": "allow-center", + "description": "Enables the center command without any pre-configured scope.", + "commands": { "allow": ["center"], "deny": [] } + }, + "allow-close": { + "identifier": "allow-close", + "description": "Enables the close command without any pre-configured scope.", + "commands": { "allow": ["close"], "deny": [] } + }, + "allow-create": { + "identifier": "allow-create", + "description": "Enables the create command without any pre-configured scope.", + "commands": { "allow": ["create"], "deny": [] } + }, + "allow-current-monitor": { + "identifier": "allow-current-monitor", + "description": "Enables the current_monitor command without any pre-configured scope.", + "commands": { "allow": ["current_monitor"], "deny": [] } + }, + "allow-cursor-position": { + "identifier": "allow-cursor-position", + "description": "Enables the cursor_position command without any pre-configured scope.", + "commands": { "allow": ["cursor_position"], "deny": [] } + }, + "allow-destroy": { + "identifier": "allow-destroy", + "description": "Enables the destroy command without any pre-configured scope.", + "commands": { "allow": ["destroy"], "deny": [] } + }, + "allow-get-all-windows": { + "identifier": "allow-get-all-windows", + "description": "Enables the get_all_windows command without any pre-configured scope.", + "commands": { "allow": ["get_all_windows"], "deny": [] } + }, + "allow-hide": { + "identifier": "allow-hide", + "description": "Enables the hide command without any pre-configured scope.", + "commands": { "allow": ["hide"], "deny": [] } + }, + "allow-inner-position": { + "identifier": "allow-inner-position", + "description": "Enables the inner_position command without any pre-configured scope.", + "commands": { "allow": ["inner_position"], "deny": [] } + }, + "allow-inner-size": { + "identifier": "allow-inner-size", + "description": "Enables the inner_size command without any pre-configured scope.", + "commands": { "allow": ["inner_size"], "deny": [] } + }, + "allow-internal-toggle-maximize": { + "identifier": "allow-internal-toggle-maximize", + "description": "Enables the internal_toggle_maximize command without any pre-configured scope.", + "commands": { "allow": ["internal_toggle_maximize"], "deny": [] } + }, + "allow-is-closable": { + "identifier": "allow-is-closable", + "description": "Enables the is_closable command without any pre-configured scope.", + "commands": { "allow": ["is_closable"], "deny": [] } + }, + "allow-is-decorated": { + "identifier": "allow-is-decorated", + "description": "Enables the is_decorated command without any pre-configured scope.", + "commands": { "allow": ["is_decorated"], "deny": [] } + }, + "allow-is-focused": { + "identifier": "allow-is-focused", + "description": "Enables the is_focused command without any pre-configured scope.", + "commands": { "allow": ["is_focused"], "deny": [] } + }, + "allow-is-fullscreen": { + "identifier": "allow-is-fullscreen", + "description": "Enables the is_fullscreen command without any pre-configured scope.", + "commands": { "allow": ["is_fullscreen"], "deny": [] } + }, + "allow-is-maximizable": { + "identifier": "allow-is-maximizable", + "description": "Enables the is_maximizable command without any pre-configured scope.", + "commands": { "allow": ["is_maximizable"], "deny": [] } + }, + "allow-is-maximized": { + "identifier": "allow-is-maximized", + "description": "Enables the is_maximized command without any pre-configured scope.", + "commands": { "allow": ["is_maximized"], "deny": [] } + }, + "allow-is-minimizable": { + "identifier": "allow-is-minimizable", + "description": "Enables the is_minimizable command without any pre-configured scope.", + "commands": { "allow": ["is_minimizable"], "deny": [] } + }, + "allow-is-minimized": { + "identifier": "allow-is-minimized", + "description": "Enables the is_minimized command without any pre-configured scope.", + "commands": { "allow": ["is_minimized"], "deny": [] } + }, + "allow-is-resizable": { + "identifier": "allow-is-resizable", + "description": "Enables the is_resizable command without any pre-configured scope.", + "commands": { "allow": ["is_resizable"], "deny": [] } + }, + "allow-is-visible": { + "identifier": "allow-is-visible", + "description": "Enables the is_visible command without any pre-configured scope.", + "commands": { "allow": ["is_visible"], "deny": [] } + }, + "allow-maximize": { + "identifier": "allow-maximize", + "description": "Enables the maximize command without any pre-configured scope.", + "commands": { "allow": ["maximize"], "deny": [] } + }, + "allow-minimize": { + "identifier": "allow-minimize", + "description": "Enables the minimize command without any pre-configured scope.", + "commands": { "allow": ["minimize"], "deny": [] } + }, + "allow-monitor-from-point": { + "identifier": "allow-monitor-from-point", + "description": "Enables the monitor_from_point command without any pre-configured scope.", + "commands": { "allow": ["monitor_from_point"], "deny": [] } + }, + "allow-outer-position": { + "identifier": "allow-outer-position", + "description": "Enables the outer_position command without any pre-configured scope.", + "commands": { "allow": ["outer_position"], "deny": [] } + }, + "allow-outer-size": { + "identifier": "allow-outer-size", + "description": "Enables the outer_size command without any pre-configured scope.", + "commands": { "allow": ["outer_size"], "deny": [] } + }, + "allow-primary-monitor": { + "identifier": "allow-primary-monitor", + "description": "Enables the primary_monitor command without any pre-configured scope.", + "commands": { "allow": ["primary_monitor"], "deny": [] } + }, + "allow-request-user-attention": { + "identifier": "allow-request-user-attention", + "description": "Enables the request_user_attention command without any pre-configured scope.", + "commands": { "allow": ["request_user_attention"], "deny": [] } + }, + "allow-scale-factor": { + "identifier": "allow-scale-factor", + "description": "Enables the scale_factor command without any pre-configured scope.", + "commands": { "allow": ["scale_factor"], "deny": [] } + }, + "allow-set-always-on-bottom": { + "identifier": "allow-set-always-on-bottom", + "description": "Enables the set_always_on_bottom command without any pre-configured scope.", + "commands": { "allow": ["set_always_on_bottom"], "deny": [] } + }, + "allow-set-always-on-top": { + "identifier": "allow-set-always-on-top", + "description": "Enables the set_always_on_top command without any pre-configured scope.", + "commands": { "allow": ["set_always_on_top"], "deny": [] } + }, + "allow-set-closable": { + "identifier": "allow-set-closable", + "description": "Enables the set_closable command without any pre-configured scope.", + "commands": { "allow": ["set_closable"], "deny": [] } + }, + "allow-set-content-protected": { + "identifier": "allow-set-content-protected", + "description": "Enables the set_content_protected command without any pre-configured scope.", + "commands": { "allow": ["set_content_protected"], "deny": [] } + }, + "allow-set-cursor-grab": { + "identifier": "allow-set-cursor-grab", + "description": "Enables the set_cursor_grab command without any pre-configured scope.", + "commands": { "allow": ["set_cursor_grab"], "deny": [] } + }, + "allow-set-cursor-icon": { + "identifier": "allow-set-cursor-icon", + "description": "Enables the set_cursor_icon command without any pre-configured scope.", + "commands": { "allow": ["set_cursor_icon"], "deny": [] } + }, + "allow-set-cursor-position": { + "identifier": "allow-set-cursor-position", + "description": "Enables the set_cursor_position command without any pre-configured scope.", + "commands": { "allow": ["set_cursor_position"], "deny": [] } + }, + "allow-set-cursor-visible": { + "identifier": "allow-set-cursor-visible", + "description": "Enables the set_cursor_visible command without any pre-configured scope.", + "commands": { "allow": ["set_cursor_visible"], "deny": [] } + }, + "allow-set-decorations": { + "identifier": "allow-set-decorations", + "description": "Enables the set_decorations command without any pre-configured scope.", + "commands": { "allow": ["set_decorations"], "deny": [] } + }, + "allow-set-effects": { + "identifier": "allow-set-effects", + "description": "Enables the set_effects command without any pre-configured scope.", + "commands": { "allow": ["set_effects"], "deny": [] } + }, + "allow-set-focus": { + "identifier": "allow-set-focus", + "description": "Enables the set_focus command without any pre-configured scope.", + "commands": { "allow": ["set_focus"], "deny": [] } + }, + "allow-set-fullscreen": { + "identifier": "allow-set-fullscreen", + "description": "Enables the set_fullscreen command without any pre-configured scope.", + "commands": { "allow": ["set_fullscreen"], "deny": [] } + }, + "allow-set-icon": { + "identifier": "allow-set-icon", + "description": "Enables the set_icon command without any pre-configured scope.", + "commands": { "allow": ["set_icon"], "deny": [] } + }, + "allow-set-ignore-cursor-events": { + "identifier": "allow-set-ignore-cursor-events", + "description": "Enables the set_ignore_cursor_events command without any pre-configured scope.", + "commands": { "allow": ["set_ignore_cursor_events"], "deny": [] } + }, + "allow-set-max-size": { + "identifier": "allow-set-max-size", + "description": "Enables the set_max_size command without any pre-configured scope.", + "commands": { "allow": ["set_max_size"], "deny": [] } + }, + "allow-set-maximizable": { + "identifier": "allow-set-maximizable", + "description": "Enables the set_maximizable command without any pre-configured scope.", + "commands": { "allow": ["set_maximizable"], "deny": [] } + }, + "allow-set-min-size": { + "identifier": "allow-set-min-size", + "description": "Enables the set_min_size command without any pre-configured scope.", + "commands": { "allow": ["set_min_size"], "deny": [] } + }, + "allow-set-minimizable": { + "identifier": "allow-set-minimizable", + "description": "Enables the set_minimizable command without any pre-configured scope.", + "commands": { "allow": ["set_minimizable"], "deny": [] } + }, + "allow-set-position": { + "identifier": "allow-set-position", + "description": "Enables the set_position command without any pre-configured scope.", + "commands": { "allow": ["set_position"], "deny": [] } + }, + "allow-set-progress-bar": { + "identifier": "allow-set-progress-bar", + "description": "Enables the set_progress_bar command without any pre-configured scope.", + "commands": { "allow": ["set_progress_bar"], "deny": [] } + }, + "allow-set-resizable": { + "identifier": "allow-set-resizable", + "description": "Enables the set_resizable command without any pre-configured scope.", + "commands": { "allow": ["set_resizable"], "deny": [] } + }, + "allow-set-shadow": { + "identifier": "allow-set-shadow", + "description": "Enables the set_shadow command without any pre-configured scope.", + "commands": { "allow": ["set_shadow"], "deny": [] } + }, + "allow-set-size": { + "identifier": "allow-set-size", + "description": "Enables the set_size command without any pre-configured scope.", + "commands": { "allow": ["set_size"], "deny": [] } + }, + "allow-set-size-constraints": { + "identifier": "allow-set-size-constraints", + "description": "Enables the set_size_constraints command without any pre-configured scope.", + "commands": { "allow": ["set_size_constraints"], "deny": [] } + }, + "allow-set-skip-taskbar": { + "identifier": "allow-set-skip-taskbar", + "description": "Enables the set_skip_taskbar command without any pre-configured scope.", + "commands": { "allow": ["set_skip_taskbar"], "deny": [] } + }, + "allow-set-title": { + "identifier": "allow-set-title", + "description": "Enables the set_title command without any pre-configured scope.", + "commands": { "allow": ["set_title"], "deny": [] } + }, + "allow-set-title-bar-style": { + "identifier": "allow-set-title-bar-style", + "description": "Enables the set_title_bar_style command without any pre-configured scope.", + "commands": { "allow": ["set_title_bar_style"], "deny": [] } + }, + "allow-set-visible-on-all-workspaces": { + "identifier": "allow-set-visible-on-all-workspaces", + "description": "Enables the set_visible_on_all_workspaces command without any pre-configured scope.", + "commands": { "allow": ["set_visible_on_all_workspaces"], "deny": [] } + }, + "allow-show": { + "identifier": "allow-show", + "description": "Enables the show command without any pre-configured scope.", + "commands": { "allow": ["show"], "deny": [] } + }, + "allow-start-dragging": { + "identifier": "allow-start-dragging", + "description": "Enables the start_dragging command without any pre-configured scope.", + "commands": { "allow": ["start_dragging"], "deny": [] } + }, + "allow-start-resize-dragging": { + "identifier": "allow-start-resize-dragging", + "description": "Enables the start_resize_dragging command without any pre-configured scope.", + "commands": { "allow": ["start_resize_dragging"], "deny": [] } + }, + "allow-theme": { + "identifier": "allow-theme", + "description": "Enables the theme command without any pre-configured scope.", + "commands": { "allow": ["theme"], "deny": [] } + }, + "allow-title": { + "identifier": "allow-title", + "description": "Enables the title command without any pre-configured scope.", + "commands": { "allow": ["title"], "deny": [] } + }, + "allow-toggle-maximize": { + "identifier": "allow-toggle-maximize", + "description": "Enables the toggle_maximize command without any pre-configured scope.", + "commands": { "allow": ["toggle_maximize"], "deny": [] } + }, + "allow-unmaximize": { + "identifier": "allow-unmaximize", + "description": "Enables the unmaximize command without any pre-configured scope.", + "commands": { "allow": ["unmaximize"], "deny": [] } + }, + "allow-unminimize": { + "identifier": "allow-unminimize", + "description": "Enables the unminimize command without any pre-configured scope.", + "commands": { "allow": ["unminimize"], "deny": [] } + }, + "deny-available-monitors": { + "identifier": "deny-available-monitors", + "description": "Denies the available_monitors command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["available_monitors"] } + }, + "deny-center": { + "identifier": "deny-center", + "description": "Denies the center command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["center"] } + }, + "deny-close": { + "identifier": "deny-close", + "description": "Denies the close command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["close"] } + }, + "deny-create": { + "identifier": "deny-create", + "description": "Denies the create command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["create"] } + }, + "deny-current-monitor": { + "identifier": "deny-current-monitor", + "description": "Denies the current_monitor command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["current_monitor"] } + }, + "deny-cursor-position": { + "identifier": "deny-cursor-position", + "description": "Denies the cursor_position command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["cursor_position"] } + }, + "deny-destroy": { + "identifier": "deny-destroy", + "description": "Denies the destroy command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["destroy"] } + }, + "deny-get-all-windows": { + "identifier": "deny-get-all-windows", + "description": "Denies the get_all_windows command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["get_all_windows"] } + }, + "deny-hide": { + "identifier": "deny-hide", + "description": "Denies the hide command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["hide"] } + }, + "deny-inner-position": { + "identifier": "deny-inner-position", + "description": "Denies the inner_position command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["inner_position"] } + }, + "deny-inner-size": { + "identifier": "deny-inner-size", + "description": "Denies the inner_size command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["inner_size"] } + }, + "deny-internal-toggle-maximize": { + "identifier": "deny-internal-toggle-maximize", + "description": "Denies the internal_toggle_maximize command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["internal_toggle_maximize"] } + }, + "deny-is-closable": { + "identifier": "deny-is-closable", + "description": "Denies the is_closable command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["is_closable"] } + }, + "deny-is-decorated": { + "identifier": "deny-is-decorated", + "description": "Denies the is_decorated command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["is_decorated"] } + }, + "deny-is-focused": { + "identifier": "deny-is-focused", + "description": "Denies the is_focused command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["is_focused"] } + }, + "deny-is-fullscreen": { + "identifier": "deny-is-fullscreen", + "description": "Denies the is_fullscreen command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["is_fullscreen"] } + }, + "deny-is-maximizable": { + "identifier": "deny-is-maximizable", + "description": "Denies the is_maximizable command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["is_maximizable"] } + }, + "deny-is-maximized": { + "identifier": "deny-is-maximized", + "description": "Denies the is_maximized command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["is_maximized"] } + }, + "deny-is-minimizable": { + "identifier": "deny-is-minimizable", + "description": "Denies the is_minimizable command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["is_minimizable"] } + }, + "deny-is-minimized": { + "identifier": "deny-is-minimized", + "description": "Denies the is_minimized command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["is_minimized"] } + }, + "deny-is-resizable": { + "identifier": "deny-is-resizable", + "description": "Denies the is_resizable command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["is_resizable"] } + }, + "deny-is-visible": { + "identifier": "deny-is-visible", + "description": "Denies the is_visible command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["is_visible"] } + }, + "deny-maximize": { + "identifier": "deny-maximize", + "description": "Denies the maximize command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["maximize"] } + }, + "deny-minimize": { + "identifier": "deny-minimize", + "description": "Denies the minimize command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["minimize"] } + }, + "deny-monitor-from-point": { + "identifier": "deny-monitor-from-point", + "description": "Denies the monitor_from_point command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["monitor_from_point"] } + }, + "deny-outer-position": { + "identifier": "deny-outer-position", + "description": "Denies the outer_position command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["outer_position"] } + }, + "deny-outer-size": { + "identifier": "deny-outer-size", + "description": "Denies the outer_size command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["outer_size"] } + }, + "deny-primary-monitor": { + "identifier": "deny-primary-monitor", + "description": "Denies the primary_monitor command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["primary_monitor"] } + }, + "deny-request-user-attention": { + "identifier": "deny-request-user-attention", + "description": "Denies the request_user_attention command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["request_user_attention"] } + }, + "deny-scale-factor": { + "identifier": "deny-scale-factor", + "description": "Denies the scale_factor command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["scale_factor"] } + }, + "deny-set-always-on-bottom": { + "identifier": "deny-set-always-on-bottom", + "description": "Denies the set_always_on_bottom command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_always_on_bottom"] } + }, + "deny-set-always-on-top": { + "identifier": "deny-set-always-on-top", + "description": "Denies the set_always_on_top command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_always_on_top"] } + }, + "deny-set-closable": { + "identifier": "deny-set-closable", + "description": "Denies the set_closable command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_closable"] } + }, + "deny-set-content-protected": { + "identifier": "deny-set-content-protected", + "description": "Denies the set_content_protected command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_content_protected"] } + }, + "deny-set-cursor-grab": { + "identifier": "deny-set-cursor-grab", + "description": "Denies the set_cursor_grab command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_cursor_grab"] } + }, + "deny-set-cursor-icon": { + "identifier": "deny-set-cursor-icon", + "description": "Denies the set_cursor_icon command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_cursor_icon"] } + }, + "deny-set-cursor-position": { + "identifier": "deny-set-cursor-position", + "description": "Denies the set_cursor_position command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_cursor_position"] } + }, + "deny-set-cursor-visible": { + "identifier": "deny-set-cursor-visible", + "description": "Denies the set_cursor_visible command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_cursor_visible"] } + }, + "deny-set-decorations": { + "identifier": "deny-set-decorations", + "description": "Denies the set_decorations command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_decorations"] } + }, + "deny-set-effects": { + "identifier": "deny-set-effects", + "description": "Denies the set_effects command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_effects"] } + }, + "deny-set-focus": { + "identifier": "deny-set-focus", + "description": "Denies the set_focus command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_focus"] } + }, + "deny-set-fullscreen": { + "identifier": "deny-set-fullscreen", + "description": "Denies the set_fullscreen command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_fullscreen"] } + }, + "deny-set-icon": { + "identifier": "deny-set-icon", + "description": "Denies the set_icon command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_icon"] } + }, + "deny-set-ignore-cursor-events": { + "identifier": "deny-set-ignore-cursor-events", + "description": "Denies the set_ignore_cursor_events command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_ignore_cursor_events"] } + }, + "deny-set-max-size": { + "identifier": "deny-set-max-size", + "description": "Denies the set_max_size command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_max_size"] } + }, + "deny-set-maximizable": { + "identifier": "deny-set-maximizable", + "description": "Denies the set_maximizable command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_maximizable"] } + }, + "deny-set-min-size": { + "identifier": "deny-set-min-size", + "description": "Denies the set_min_size command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_min_size"] } + }, + "deny-set-minimizable": { + "identifier": "deny-set-minimizable", + "description": "Denies the set_minimizable command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_minimizable"] } + }, + "deny-set-position": { + "identifier": "deny-set-position", + "description": "Denies the set_position command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_position"] } + }, + "deny-set-progress-bar": { + "identifier": "deny-set-progress-bar", + "description": "Denies the set_progress_bar command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_progress_bar"] } + }, + "deny-set-resizable": { + "identifier": "deny-set-resizable", + "description": "Denies the set_resizable command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_resizable"] } + }, + "deny-set-shadow": { + "identifier": "deny-set-shadow", + "description": "Denies the set_shadow command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_shadow"] } + }, + "deny-set-size": { + "identifier": "deny-set-size", + "description": "Denies the set_size command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_size"] } + }, + "deny-set-size-constraints": { + "identifier": "deny-set-size-constraints", + "description": "Denies the set_size_constraints command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_size_constraints"] } + }, + "deny-set-skip-taskbar": { + "identifier": "deny-set-skip-taskbar", + "description": "Denies the set_skip_taskbar command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_skip_taskbar"] } + }, + "deny-set-title": { + "identifier": "deny-set-title", + "description": "Denies the set_title command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_title"] } + }, + "deny-set-title-bar-style": { + "identifier": "deny-set-title-bar-style", + "description": "Denies the set_title_bar_style command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_title_bar_style"] } + }, + "deny-set-visible-on-all-workspaces": { + "identifier": "deny-set-visible-on-all-workspaces", + "description": "Denies the set_visible_on_all_workspaces command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["set_visible_on_all_workspaces"] } + }, + "deny-show": { + "identifier": "deny-show", + "description": "Denies the show command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["show"] } + }, + "deny-start-dragging": { + "identifier": "deny-start-dragging", + "description": "Denies the start_dragging command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["start_dragging"] } + }, + "deny-start-resize-dragging": { + "identifier": "deny-start-resize-dragging", + "description": "Denies the start_resize_dragging command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["start_resize_dragging"] } + }, + "deny-theme": { + "identifier": "deny-theme", + "description": "Denies the theme command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["theme"] } + }, + "deny-title": { + "identifier": "deny-title", + "description": "Denies the title command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["title"] } + }, + "deny-toggle-maximize": { + "identifier": "deny-toggle-maximize", + "description": "Denies the toggle_maximize command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["toggle_maximize"] } + }, + "deny-unmaximize": { + "identifier": "deny-unmaximize", + "description": "Denies the unmaximize command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["unmaximize"] } + }, + "deny-unminimize": { + "identifier": "deny-unminimize", + "description": "Denies the unminimize command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["unminimize"] } + } + }, + "permission_sets": {}, + "global_scope_schema": null + }, + "dialog": { + "default_permission": { + "identifier": "default", + "description": "This permission set configures the types of dialogs\navailable from the dialog plugin.\n\n#### Granted Permissions\n\nAll dialog types are enabled.\n\n\n", + "permissions": [ + "allow-ask", + "allow-confirm", + "allow-message", + "allow-save", + "allow-open" + ] + }, + "permissions": { + "allow-ask": { + "identifier": "allow-ask", + "description": "Enables the ask command without any pre-configured scope.", + "commands": { "allow": ["ask"], "deny": [] } + }, + "allow-confirm": { + "identifier": "allow-confirm", + "description": "Enables the confirm command without any pre-configured scope.", + "commands": { "allow": ["confirm"], "deny": [] } + }, + "allow-message": { + "identifier": "allow-message", + "description": "Enables the message command without any pre-configured scope.", + "commands": { "allow": ["message"], "deny": [] } + }, + "allow-open": { + "identifier": "allow-open", + "description": "Enables the open command without any pre-configured scope.", + "commands": { "allow": ["open"], "deny": [] } + }, + "allow-save": { + "identifier": "allow-save", + "description": "Enables the save command without any pre-configured scope.", + "commands": { "allow": ["save"], "deny": [] } + }, + "deny-ask": { + "identifier": "deny-ask", + "description": "Denies the ask command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["ask"] } + }, + "deny-confirm": { + "identifier": "deny-confirm", + "description": "Denies the confirm command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["confirm"] } + }, + "deny-message": { + "identifier": "deny-message", + "description": "Denies the message command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["message"] } + }, + "deny-open": { + "identifier": "deny-open", + "description": "Denies the open command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["open"] } + }, + "deny-save": { + "identifier": "deny-save", + "description": "Denies the save command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["save"] } + } + }, + "permission_sets": {}, + "global_scope_schema": null + }, + "fs": { + "default_permission": { + "identifier": "default", + "description": "This set of permissions describes the what kind of\nfile system access the `fs` plugin has enabled or denied by default.\n\n#### Granted Permissions\n\nThis default permission set enables read access to the\napplication specific directories (AppConfig, AppData, AppLocalData, AppCache,\nAppLog) and all files and sub directories created in it.\nThe location of these directories depends on the operating system,\nwhere the application is run.\n\nIn general these directories need to be manually created\nby the application at runtime, before accessing files or folders\nin it is possible.\n\nTherefore, it is also allowed to create all of these folders via\nthe `mkdir` command.\n\n#### Denied Permissions\n\nThis default permission set prevents access to critical components\nof the Tauri application by default.\nOn Windows the webview data folder access is denied.\n\n", + "permissions": [ + "create-app-specific-dirs", + "read-app-specific-dirs-recursive", + "deny-default" + ] + }, + "permissions": { + "allow-copy-file": { + "identifier": "allow-copy-file", + "description": "Enables the copy_file command without any pre-configured scope.", + "commands": { "allow": ["copy_file"], "deny": [] } + }, + "allow-create": { + "identifier": "allow-create", + "description": "Enables the create command without any pre-configured scope.", + "commands": { "allow": ["create"], "deny": [] } + }, + "allow-exists": { + "identifier": "allow-exists", + "description": "Enables the exists command without any pre-configured scope.", + "commands": { "allow": ["exists"], "deny": [] } + }, + "allow-fstat": { + "identifier": "allow-fstat", + "description": "Enables the fstat command without any pre-configured scope.", + "commands": { "allow": ["fstat"], "deny": [] } + }, + "allow-ftruncate": { + "identifier": "allow-ftruncate", + "description": "Enables the ftruncate command without any pre-configured scope.", + "commands": { "allow": ["ftruncate"], "deny": [] } + }, + "allow-lstat": { + "identifier": "allow-lstat", + "description": "Enables the lstat command without any pre-configured scope.", + "commands": { "allow": ["lstat"], "deny": [] } + }, + "allow-mkdir": { + "identifier": "allow-mkdir", + "description": "Enables the mkdir command without any pre-configured scope.", + "commands": { "allow": ["mkdir"], "deny": [] } + }, + "allow-open": { + "identifier": "allow-open", + "description": "Enables the open command without any pre-configured scope.", + "commands": { "allow": ["open"], "deny": [] } + }, + "allow-read": { + "identifier": "allow-read", + "description": "Enables the read command without any pre-configured scope.", + "commands": { "allow": ["read"], "deny": [] } + }, + "allow-read-dir": { + "identifier": "allow-read-dir", + "description": "Enables the read_dir command without any pre-configured scope.", + "commands": { "allow": ["read_dir"], "deny": [] } + }, + "allow-read-file": { + "identifier": "allow-read-file", + "description": "Enables the read_file command without any pre-configured scope.", + "commands": { "allow": ["read_file"], "deny": [] } + }, + "allow-read-text-file": { + "identifier": "allow-read-text-file", + "description": "Enables the read_text_file command without any pre-configured scope.", + "commands": { "allow": ["read_text_file"], "deny": [] } + }, + "allow-read-text-file-lines": { + "identifier": "allow-read-text-file-lines", + "description": "Enables the read_text_file_lines command without any pre-configured scope.", + "commands": { "allow": ["read_text_file_lines"], "deny": [] } + }, + "allow-read-text-file-lines-next": { + "identifier": "allow-read-text-file-lines-next", + "description": "Enables the read_text_file_lines_next command without any pre-configured scope.", + "commands": { "allow": ["read_text_file_lines_next"], "deny": [] } + }, + "allow-remove": { + "identifier": "allow-remove", + "description": "Enables the remove command without any pre-configured scope.", + "commands": { "allow": ["remove"], "deny": [] } + }, + "allow-rename": { + "identifier": "allow-rename", + "description": "Enables the rename command without any pre-configured scope.", + "commands": { "allow": ["rename"], "deny": [] } + }, + "allow-seek": { + "identifier": "allow-seek", + "description": "Enables the seek command without any pre-configured scope.", + "commands": { "allow": ["seek"], "deny": [] } + }, + "allow-stat": { + "identifier": "allow-stat", + "description": "Enables the stat command without any pre-configured scope.", + "commands": { "allow": ["stat"], "deny": [] } + }, + "allow-truncate": { + "identifier": "allow-truncate", + "description": "Enables the truncate command without any pre-configured scope.", + "commands": { "allow": ["truncate"], "deny": [] } + }, + "allow-unwatch": { + "identifier": "allow-unwatch", + "description": "Enables the unwatch command without any pre-configured scope.", + "commands": { "allow": ["unwatch"], "deny": [] } + }, + "allow-watch": { + "identifier": "allow-watch", + "description": "Enables the watch command without any pre-configured scope.", + "commands": { "allow": ["watch"], "deny": [] } + }, + "allow-write": { + "identifier": "allow-write", + "description": "Enables the write command without any pre-configured scope.", + "commands": { "allow": ["write"], "deny": [] } + }, + "allow-write-file": { + "identifier": "allow-write-file", + "description": "Enables the write_file command without any pre-configured scope.", + "commands": { "allow": ["write_file"], "deny": [] } + }, + "allow-write-text-file": { + "identifier": "allow-write-text-file", + "description": "Enables the write_text_file command without any pre-configured scope.", + "commands": { "allow": ["write_text_file"], "deny": [] } + }, + "create-app-specific-dirs": { + "identifier": "create-app-specific-dirs", + "description": "This permissions allows to create the application specific directories.\n", + "commands": { "allow": ["mkdir"], "deny": [] }, + "scope": { + "allow": [ + { "path": "$APPCONFIG" }, + { "path": "$APPDATA" }, + { "path": "$APPLOCALDATA" }, + { "path": "$APPCACHE" }, + { "path": "$APPLOG" } + ] + } + }, + "deny-copy-file": { + "identifier": "deny-copy-file", + "description": "Denies the copy_file command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["copy_file"] } + }, + "deny-create": { + "identifier": "deny-create", + "description": "Denies the create command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["create"] } + }, + "deny-exists": { + "identifier": "deny-exists", + "description": "Denies the exists command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["exists"] } + }, + "deny-fstat": { + "identifier": "deny-fstat", + "description": "Denies the fstat command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["fstat"] } + }, + "deny-ftruncate": { + "identifier": "deny-ftruncate", + "description": "Denies the ftruncate command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["ftruncate"] } + }, + "deny-lstat": { + "identifier": "deny-lstat", + "description": "Denies the lstat command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["lstat"] } + }, + "deny-mkdir": { + "identifier": "deny-mkdir", + "description": "Denies the mkdir command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["mkdir"] } + }, + "deny-open": { + "identifier": "deny-open", + "description": "Denies the open command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["open"] } + }, + "deny-read": { + "identifier": "deny-read", + "description": "Denies the read command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["read"] } + }, + "deny-read-dir": { + "identifier": "deny-read-dir", + "description": "Denies the read_dir command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["read_dir"] } + }, + "deny-read-file": { + "identifier": "deny-read-file", + "description": "Denies the read_file command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["read_file"] } + }, + "deny-read-text-file": { + "identifier": "deny-read-text-file", + "description": "Denies the read_text_file command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["read_text_file"] } + }, + "deny-read-text-file-lines": { + "identifier": "deny-read-text-file-lines", + "description": "Denies the read_text_file_lines command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["read_text_file_lines"] } + }, + "deny-read-text-file-lines-next": { + "identifier": "deny-read-text-file-lines-next", + "description": "Denies the read_text_file_lines_next command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["read_text_file_lines_next"] } + }, + "deny-remove": { + "identifier": "deny-remove", + "description": "Denies the remove command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["remove"] } + }, + "deny-rename": { + "identifier": "deny-rename", + "description": "Denies the rename command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["rename"] } + }, + "deny-seek": { + "identifier": "deny-seek", + "description": "Denies the seek command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["seek"] } + }, + "deny-stat": { + "identifier": "deny-stat", + "description": "Denies the stat command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["stat"] } + }, + "deny-truncate": { + "identifier": "deny-truncate", + "description": "Denies the truncate command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["truncate"] } + }, + "deny-unwatch": { + "identifier": "deny-unwatch", + "description": "Denies the unwatch command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["unwatch"] } + }, + "deny-watch": { + "identifier": "deny-watch", + "description": "Denies the watch command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["watch"] } + }, + "deny-webview-data-linux": { + "identifier": "deny-webview-data-linux", + "description": "This denies read access to the\n`$APPLOCALDATA` folder on linux as the webview data and configuration values are stored here.\nAllowing access can lead to sensitive information disclosure and should be well considered.", + "commands": { "allow": [], "deny": [] } + }, + "deny-webview-data-windows": { + "identifier": "deny-webview-data-windows", + "description": "This denies read access to the\n`$APPLOCALDATA/EBWebView` folder on windows as the webview data and configuration values are stored here.\nAllowing access can lead to sensitive information disclosure and should be well considered.", + "commands": { "allow": [], "deny": [] } + }, + "deny-write": { + "identifier": "deny-write", + "description": "Denies the write command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["write"] } + }, + "deny-write-file": { + "identifier": "deny-write-file", + "description": "Denies the write_file command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["write_file"] } + }, + "deny-write-text-file": { + "identifier": "deny-write-text-file", + "description": "Denies the write_text_file command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["write_text_file"] } + }, + "read-all": { + "identifier": "read-all", + "description": "This enables all read related commands without any pre-configured accessible paths.", + "commands": { + "allow": [ + "read_dir", + "read_file", + "read", + "open", + "read_text_file", + "read_text_file_lines", + "read_text_file_lines_next", + "seek", + "stat", + "lstat", + "fstat", + "exists", + "watch", + "unwatch" + ], + "deny": [] + } + }, + "read-app-specific-dirs-recursive": { + "identifier": "read-app-specific-dirs-recursive", + "description": "This permission allows recursive read functionality on the application\nspecific base directories. \n", + "commands": { + "allow": [ + "read_dir", + "read_file", + "read_text_file", + "read_text_file_lines", + "read_text_file_lines_next", + "exists" + ], + "deny": [] + }, + "scope": { + "allow": [ + { "path": "$APPCONFIG/**" }, + { "path": "$APPDATA/**" }, + { "path": "$APPLOCALDATA/**" }, + { "path": "$APPCACHE/**" }, + { "path": "$APPLOG/**" } + ] + } + }, + "read-dirs": { + "identifier": "read-dirs", + "description": "This enables directory read and file metadata related commands without any pre-configured accessible paths.", + "commands": { + "allow": ["read_dir", "stat", "lstat", "fstat", "exists"], + "deny": [] + } + }, + "read-files": { + "identifier": "read-files", + "description": "This enables file read related commands without any pre-configured accessible paths.", + "commands": { + "allow": [ + "read_file", + "read", + "open", + "read_text_file", + "read_text_file_lines", + "read_text_file_lines_next", + "seek", + "stat", + "lstat", + "fstat", + "exists" + ], + "deny": [] + } + }, + "read-meta": { + "identifier": "read-meta", + "description": "This enables all index or metadata related commands without any pre-configured accessible paths.", + "commands": { + "allow": ["read_dir", "stat", "lstat", "fstat", "exists"], + "deny": [] + } + }, + "scope": { + "identifier": "scope", + "description": "An empty permission you can use to modify the global scope.", + "commands": { "allow": [], "deny": [] } + }, + "scope-app": { + "identifier": "scope-app", + "description": "This scope permits access to all files and list content of top level directories in the `$APP`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$APP" }, { "path": "$APP/*" }] } + }, + "scope-app-index": { + "identifier": "scope-app-index", + "description": "This scope permits to list all files and folders in the `$APP`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$APP" }] } + }, + "scope-app-recursive": { + "identifier": "scope-app-recursive", + "description": "This scope permits recursive access to the complete `$APP` folder, including sub directories and files.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$APP" }, { "path": "$APP/**" }] } + }, + "scope-appcache": { + "identifier": "scope-appcache", + "description": "This scope permits access to all files and list content of top level directories in the `$APPCACHE`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { + "allow": [{ "path": "$APPCACHE" }, { "path": "$APPCACHE/*" }] + } + }, + "scope-appcache-index": { + "identifier": "scope-appcache-index", + "description": "This scope permits to list all files and folders in the `$APPCACHE`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$APPCACHE" }] } + }, + "scope-appcache-recursive": { + "identifier": "scope-appcache-recursive", + "description": "This scope permits recursive access to the complete `$APPCACHE` folder, including sub directories and files.", + "commands": { "allow": [], "deny": [] }, + "scope": { + "allow": [{ "path": "$APPCACHE" }, { "path": "$APPCACHE/**" }] + } + }, + "scope-appconfig": { + "identifier": "scope-appconfig", + "description": "This scope permits access to all files and list content of top level directories in the `$APPCONFIG`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { + "allow": [{ "path": "$APPCONFIG" }, { "path": "$APPCONFIG/*" }] + } + }, + "scope-appconfig-index": { + "identifier": "scope-appconfig-index", + "description": "This scope permits to list all files and folders in the `$APPCONFIG`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$APPCONFIG" }] } + }, + "scope-appconfig-recursive": { + "identifier": "scope-appconfig-recursive", + "description": "This scope permits recursive access to the complete `$APPCONFIG` folder, including sub directories and files.", + "commands": { "allow": [], "deny": [] }, + "scope": { + "allow": [{ "path": "$APPCONFIG" }, { "path": "$APPCONFIG/**" }] + } + }, + "scope-appdata": { + "identifier": "scope-appdata", + "description": "This scope permits access to all files and list content of top level directories in the `$APPDATA`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$APPDATA" }, { "path": "$APPDATA/*" }] } + }, + "scope-appdata-index": { + "identifier": "scope-appdata-index", + "description": "This scope permits to list all files and folders in the `$APPDATA`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$APPDATA" }] } + }, + "scope-appdata-recursive": { + "identifier": "scope-appdata-recursive", + "description": "This scope permits recursive access to the complete `$APPDATA` folder, including sub directories and files.", + "commands": { "allow": [], "deny": [] }, + "scope": { + "allow": [{ "path": "$APPDATA" }, { "path": "$APPDATA/**" }] + } + }, + "scope-applocaldata": { + "identifier": "scope-applocaldata", + "description": "This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { + "allow": [{ "path": "$APPLOCALDATA" }, { "path": "$APPLOCALDATA/*" }] + } + }, + "scope-applocaldata-index": { + "identifier": "scope-applocaldata-index", + "description": "This scope permits to list all files and folders in the `$APPLOCALDATA`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$APPLOCALDATA" }] } + }, + "scope-applocaldata-recursive": { + "identifier": "scope-applocaldata-recursive", + "description": "This scope permits recursive access to the complete `$APPLOCALDATA` folder, including sub directories and files.", + "commands": { "allow": [], "deny": [] }, + "scope": { + "allow": [{ "path": "$APPLOCALDATA" }, { "path": "$APPLOCALDATA/**" }] + } + }, + "scope-applog": { + "identifier": "scope-applog", + "description": "This scope permits access to all files and list content of top level directories in the `$APPLOG`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$APPLOG" }, { "path": "$APPLOG/*" }] } + }, + "scope-applog-index": { + "identifier": "scope-applog-index", + "description": "This scope permits to list all files and folders in the `$APPLOG`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$APPLOG" }] } + }, + "scope-applog-recursive": { + "identifier": "scope-applog-recursive", + "description": "This scope permits recursive access to the complete `$APPLOG` folder, including sub directories and files.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$APPLOG" }, { "path": "$APPLOG/**" }] } + }, + "scope-audio": { + "identifier": "scope-audio", + "description": "This scope permits access to all files and list content of top level directories in the `$AUDIO`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$AUDIO" }, { "path": "$AUDIO/*" }] } + }, + "scope-audio-index": { + "identifier": "scope-audio-index", + "description": "This scope permits to list all files and folders in the `$AUDIO`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$AUDIO" }] } + }, + "scope-audio-recursive": { + "identifier": "scope-audio-recursive", + "description": "This scope permits recursive access to the complete `$AUDIO` folder, including sub directories and files.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$AUDIO" }, { "path": "$AUDIO/**" }] } + }, + "scope-cache": { + "identifier": "scope-cache", + "description": "This scope permits access to all files and list content of top level directories in the `$CACHE`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$CACHE" }, { "path": "$CACHE/*" }] } + }, + "scope-cache-index": { + "identifier": "scope-cache-index", + "description": "This scope permits to list all files and folders in the `$CACHE`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$CACHE" }] } + }, + "scope-cache-recursive": { + "identifier": "scope-cache-recursive", + "description": "This scope permits recursive access to the complete `$CACHE` folder, including sub directories and files.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$CACHE" }, { "path": "$CACHE/**" }] } + }, + "scope-config": { + "identifier": "scope-config", + "description": "This scope permits access to all files and list content of top level directories in the `$CONFIG`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$CONFIG" }, { "path": "$CONFIG/*" }] } + }, + "scope-config-index": { + "identifier": "scope-config-index", + "description": "This scope permits to list all files and folders in the `$CONFIG`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$CONFIG" }] } + }, + "scope-config-recursive": { + "identifier": "scope-config-recursive", + "description": "This scope permits recursive access to the complete `$CONFIG` folder, including sub directories and files.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$CONFIG" }, { "path": "$CONFIG/**" }] } + }, + "scope-data": { + "identifier": "scope-data", + "description": "This scope permits access to all files and list content of top level directories in the `$DATA`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$DATA" }, { "path": "$DATA/*" }] } + }, + "scope-data-index": { + "identifier": "scope-data-index", + "description": "This scope permits to list all files and folders in the `$DATA`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$DATA" }] } + }, + "scope-data-recursive": { + "identifier": "scope-data-recursive", + "description": "This scope permits recursive access to the complete `$DATA` folder, including sub directories and files.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$DATA" }, { "path": "$DATA/**" }] } + }, + "scope-desktop": { + "identifier": "scope-desktop", + "description": "This scope permits access to all files and list content of top level directories in the `$DESKTOP`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$DESKTOP" }, { "path": "$DESKTOP/*" }] } + }, + "scope-desktop-index": { + "identifier": "scope-desktop-index", + "description": "This scope permits to list all files and folders in the `$DESKTOP`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$DESKTOP" }] } + }, + "scope-desktop-recursive": { + "identifier": "scope-desktop-recursive", + "description": "This scope permits recursive access to the complete `$DESKTOP` folder, including sub directories and files.", + "commands": { "allow": [], "deny": [] }, + "scope": { + "allow": [{ "path": "$DESKTOP" }, { "path": "$DESKTOP/**" }] + } + }, + "scope-document": { + "identifier": "scope-document", + "description": "This scope permits access to all files and list content of top level directories in the `$DOCUMENT`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { + "allow": [{ "path": "$DOCUMENT" }, { "path": "$DOCUMENT/*" }] + } + }, + "scope-document-index": { + "identifier": "scope-document-index", + "description": "This scope permits to list all files and folders in the `$DOCUMENT`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$DOCUMENT" }] } + }, + "scope-document-recursive": { + "identifier": "scope-document-recursive", + "description": "This scope permits recursive access to the complete `$DOCUMENT` folder, including sub directories and files.", + "commands": { "allow": [], "deny": [] }, + "scope": { + "allow": [{ "path": "$DOCUMENT" }, { "path": "$DOCUMENT/**" }] + } + }, + "scope-download": { + "identifier": "scope-download", + "description": "This scope permits access to all files and list content of top level directories in the `$DOWNLOAD`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { + "allow": [{ "path": "$DOWNLOAD" }, { "path": "$DOWNLOAD/*" }] + } + }, + "scope-download-index": { + "identifier": "scope-download-index", + "description": "This scope permits to list all files and folders in the `$DOWNLOAD`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$DOWNLOAD" }] } + }, + "scope-download-recursive": { + "identifier": "scope-download-recursive", + "description": "This scope permits recursive access to the complete `$DOWNLOAD` folder, including sub directories and files.", + "commands": { "allow": [], "deny": [] }, + "scope": { + "allow": [{ "path": "$DOWNLOAD" }, { "path": "$DOWNLOAD/**" }] + } + }, + "scope-exe": { + "identifier": "scope-exe", + "description": "This scope permits access to all files and list content of top level directories in the `$EXE`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$EXE" }, { "path": "$EXE/*" }] } + }, + "scope-exe-index": { + "identifier": "scope-exe-index", + "description": "This scope permits to list all files and folders in the `$EXE`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$EXE" }] } + }, + "scope-exe-recursive": { + "identifier": "scope-exe-recursive", + "description": "This scope permits recursive access to the complete `$EXE` folder, including sub directories and files.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$EXE" }, { "path": "$EXE/**" }] } + }, + "scope-font": { + "identifier": "scope-font", + "description": "This scope permits access to all files and list content of top level directories in the `$FONT`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$FONT" }, { "path": "$FONT/*" }] } + }, + "scope-font-index": { + "identifier": "scope-font-index", + "description": "This scope permits to list all files and folders in the `$FONT`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$FONT" }] } + }, + "scope-font-recursive": { + "identifier": "scope-font-recursive", + "description": "This scope permits recursive access to the complete `$FONT` folder, including sub directories and files.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$FONT" }, { "path": "$FONT/**" }] } + }, + "scope-home": { + "identifier": "scope-home", + "description": "This scope permits access to all files and list content of top level directories in the `$HOME`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$HOME" }, { "path": "$HOME/*" }] } + }, + "scope-home-index": { + "identifier": "scope-home-index", + "description": "This scope permits to list all files and folders in the `$HOME`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$HOME" }] } + }, + "scope-home-recursive": { + "identifier": "scope-home-recursive", + "description": "This scope permits recursive access to the complete `$HOME` folder, including sub directories and files.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$HOME" }, { "path": "$HOME/**" }] } + }, + "scope-localdata": { + "identifier": "scope-localdata", + "description": "This scope permits access to all files and list content of top level directories in the `$LOCALDATA`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { + "allow": [{ "path": "$LOCALDATA" }, { "path": "$LOCALDATA/*" }] + } + }, + "scope-localdata-index": { + "identifier": "scope-localdata-index", + "description": "This scope permits to list all files and folders in the `$LOCALDATA`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$LOCALDATA" }] } + }, + "scope-localdata-recursive": { + "identifier": "scope-localdata-recursive", + "description": "This scope permits recursive access to the complete `$LOCALDATA` folder, including sub directories and files.", + "commands": { "allow": [], "deny": [] }, + "scope": { + "allow": [{ "path": "$LOCALDATA" }, { "path": "$LOCALDATA/**" }] + } + }, + "scope-log": { + "identifier": "scope-log", + "description": "This scope permits access to all files and list content of top level directories in the `$LOG`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$LOG" }, { "path": "$LOG/*" }] } + }, + "scope-log-index": { + "identifier": "scope-log-index", + "description": "This scope permits to list all files and folders in the `$LOG`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$LOG" }] } + }, + "scope-log-recursive": { + "identifier": "scope-log-recursive", + "description": "This scope permits recursive access to the complete `$LOG` folder, including sub directories and files.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$LOG" }, { "path": "$LOG/**" }] } + }, + "scope-picture": { + "identifier": "scope-picture", + "description": "This scope permits access to all files and list content of top level directories in the `$PICTURE`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$PICTURE" }, { "path": "$PICTURE/*" }] } + }, + "scope-picture-index": { + "identifier": "scope-picture-index", + "description": "This scope permits to list all files and folders in the `$PICTURE`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$PICTURE" }] } + }, + "scope-picture-recursive": { + "identifier": "scope-picture-recursive", + "description": "This scope permits recursive access to the complete `$PICTURE` folder, including sub directories and files.", + "commands": { "allow": [], "deny": [] }, + "scope": { + "allow": [{ "path": "$PICTURE" }, { "path": "$PICTURE/**" }] + } + }, + "scope-public": { + "identifier": "scope-public", + "description": "This scope permits access to all files and list content of top level directories in the `$PUBLIC`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$PUBLIC" }, { "path": "$PUBLIC/*" }] } + }, + "scope-public-index": { + "identifier": "scope-public-index", + "description": "This scope permits to list all files and folders in the `$PUBLIC`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$PUBLIC" }] } + }, + "scope-public-recursive": { + "identifier": "scope-public-recursive", + "description": "This scope permits recursive access to the complete `$PUBLIC` folder, including sub directories and files.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$PUBLIC" }, { "path": "$PUBLIC/**" }] } + }, + "scope-resource": { + "identifier": "scope-resource", + "description": "This scope permits access to all files and list content of top level directories in the `$RESOURCE`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { + "allow": [{ "path": "$RESOURCE" }, { "path": "$RESOURCE/*" }] + } + }, + "scope-resource-index": { + "identifier": "scope-resource-index", + "description": "This scope permits to list all files and folders in the `$RESOURCE`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$RESOURCE" }] } + }, + "scope-resource-recursive": { + "identifier": "scope-resource-recursive", + "description": "This scope permits recursive access to the complete `$RESOURCE` folder, including sub directories and files.", + "commands": { "allow": [], "deny": [] }, + "scope": { + "allow": [{ "path": "$RESOURCE" }, { "path": "$RESOURCE/**" }] + } + }, + "scope-runtime": { + "identifier": "scope-runtime", + "description": "This scope permits access to all files and list content of top level directories in the `$RUNTIME`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$RUNTIME" }, { "path": "$RUNTIME/*" }] } + }, + "scope-runtime-index": { + "identifier": "scope-runtime-index", + "description": "This scope permits to list all files and folders in the `$RUNTIME`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$RUNTIME" }] } + }, + "scope-runtime-recursive": { + "identifier": "scope-runtime-recursive", + "description": "This scope permits recursive access to the complete `$RUNTIME` folder, including sub directories and files.", + "commands": { "allow": [], "deny": [] }, + "scope": { + "allow": [{ "path": "$RUNTIME" }, { "path": "$RUNTIME/**" }] + } + }, + "scope-temp": { + "identifier": "scope-temp", + "description": "This scope permits access to all files and list content of top level directories in the `$TEMP`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$TEMP" }, { "path": "$TEMP/*" }] } + }, + "scope-temp-index": { + "identifier": "scope-temp-index", + "description": "This scope permits to list all files and folders in the `$TEMP`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$TEMP" }] } + }, + "scope-temp-recursive": { + "identifier": "scope-temp-recursive", + "description": "This scope permits recursive access to the complete `$TEMP` folder, including sub directories and files.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$TEMP" }, { "path": "$TEMP/**" }] } + }, + "scope-template": { + "identifier": "scope-template", + "description": "This scope permits access to all files and list content of top level directories in the `$TEMPLATE`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { + "allow": [{ "path": "$TEMPLATE" }, { "path": "$TEMPLATE/*" }] + } + }, + "scope-template-index": { + "identifier": "scope-template-index", + "description": "This scope permits to list all files and folders in the `$TEMPLATE`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$TEMPLATE" }] } + }, + "scope-template-recursive": { + "identifier": "scope-template-recursive", + "description": "This scope permits recursive access to the complete `$TEMPLATE` folder, including sub directories and files.", + "commands": { "allow": [], "deny": [] }, + "scope": { + "allow": [{ "path": "$TEMPLATE" }, { "path": "$TEMPLATE/**" }] + } + }, + "scope-video": { + "identifier": "scope-video", + "description": "This scope permits access to all files and list content of top level directories in the `$VIDEO`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$VIDEO" }, { "path": "$VIDEO/*" }] } + }, + "scope-video-index": { + "identifier": "scope-video-index", + "description": "This scope permits to list all files and folders in the `$VIDEO`folder.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$VIDEO" }] } + }, + "scope-video-recursive": { + "identifier": "scope-video-recursive", + "description": "This scope permits recursive access to the complete `$VIDEO` folder, including sub directories and files.", + "commands": { "allow": [], "deny": [] }, + "scope": { "allow": [{ "path": "$VIDEO" }, { "path": "$VIDEO/**" }] } + }, + "write-all": { + "identifier": "write-all", + "description": "This enables all write related commands without any pre-configured accessible paths.", + "commands": { + "allow": [ + "mkdir", + "create", + "copy_file", + "remove", + "rename", + "truncate", + "ftruncate", + "write", + "write_file", + "write_text_file" + ], + "deny": [] + } + }, + "write-files": { + "identifier": "write-files", + "description": "This enables all file write related commands without any pre-configured accessible paths.", + "commands": { + "allow": [ + "create", + "copy_file", + "remove", + "rename", + "truncate", + "ftruncate", + "write", + "write_file", + "write_text_file" + ], + "deny": [] + } + } + }, + "permission_sets": { + "allow-app-meta": { + "identifier": "allow-app-meta", + "description": "This allows non-recursive read access to metadata of the `$APP` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-app-index"] + }, + "allow-app-meta-recursive": { + "identifier": "allow-app-meta-recursive", + "description": "This allows full recursive read access to metadata of the `$APP` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-app-recursive"] + }, + "allow-app-read": { + "identifier": "allow-app-read", + "description": "This allows non-recursive read access to the `$APP` folder.", + "permissions": ["read-all", "scope-app"] + }, + "allow-app-read-recursive": { + "identifier": "allow-app-read-recursive", + "description": "This allows full recursive read access to the complete `$APP` folder, files and subdirectories.", + "permissions": ["read-all", "scope-app-recursive"] + }, + "allow-app-write": { + "identifier": "allow-app-write", + "description": "This allows non-recursive write access to the `$APP` folder.", + "permissions": ["write-all", "scope-app"] + }, + "allow-app-write-recursive": { + "identifier": "allow-app-write-recursive", + "description": "This allows full recursive write access to the complete `$APP` folder, files and subdirectories.", + "permissions": ["write-all", "scope-app-recursive"] + }, + "allow-appcache-meta": { + "identifier": "allow-appcache-meta", + "description": "This allows non-recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-appcache-index"] + }, + "allow-appcache-meta-recursive": { + "identifier": "allow-appcache-meta-recursive", + "description": "This allows full recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-appcache-recursive"] + }, + "allow-appcache-read": { + "identifier": "allow-appcache-read", + "description": "This allows non-recursive read access to the `$APPCACHE` folder.", + "permissions": ["read-all", "scope-appcache"] + }, + "allow-appcache-read-recursive": { + "identifier": "allow-appcache-read-recursive", + "description": "This allows full recursive read access to the complete `$APPCACHE` folder, files and subdirectories.", + "permissions": ["read-all", "scope-appcache-recursive"] + }, + "allow-appcache-write": { + "identifier": "allow-appcache-write", + "description": "This allows non-recursive write access to the `$APPCACHE` folder.", + "permissions": ["write-all", "scope-appcache"] + }, + "allow-appcache-write-recursive": { + "identifier": "allow-appcache-write-recursive", + "description": "This allows full recursive write access to the complete `$APPCACHE` folder, files and subdirectories.", + "permissions": ["write-all", "scope-appcache-recursive"] + }, + "allow-appconfig-meta": { + "identifier": "allow-appconfig-meta", + "description": "This allows non-recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-appconfig-index"] + }, + "allow-appconfig-meta-recursive": { + "identifier": "allow-appconfig-meta-recursive", + "description": "This allows full recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-appconfig-recursive"] + }, + "allow-appconfig-read": { + "identifier": "allow-appconfig-read", + "description": "This allows non-recursive read access to the `$APPCONFIG` folder.", + "permissions": ["read-all", "scope-appconfig"] + }, + "allow-appconfig-read-recursive": { + "identifier": "allow-appconfig-read-recursive", + "description": "This allows full recursive read access to the complete `$APPCONFIG` folder, files and subdirectories.", + "permissions": ["read-all", "scope-appconfig-recursive"] + }, + "allow-appconfig-write": { + "identifier": "allow-appconfig-write", + "description": "This allows non-recursive write access to the `$APPCONFIG` folder.", + "permissions": ["write-all", "scope-appconfig"] + }, + "allow-appconfig-write-recursive": { + "identifier": "allow-appconfig-write-recursive", + "description": "This allows full recursive write access to the complete `$APPCONFIG` folder, files and subdirectories.", + "permissions": ["write-all", "scope-appconfig-recursive"] + }, + "allow-appdata-meta": { + "identifier": "allow-appdata-meta", + "description": "This allows non-recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-appdata-index"] + }, + "allow-appdata-meta-recursive": { + "identifier": "allow-appdata-meta-recursive", + "description": "This allows full recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-appdata-recursive"] + }, + "allow-appdata-read": { + "identifier": "allow-appdata-read", + "description": "This allows non-recursive read access to the `$APPDATA` folder.", + "permissions": ["read-all", "scope-appdata"] + }, + "allow-appdata-read-recursive": { + "identifier": "allow-appdata-read-recursive", + "description": "This allows full recursive read access to the complete `$APPDATA` folder, files and subdirectories.", + "permissions": ["read-all", "scope-appdata-recursive"] + }, + "allow-appdata-write": { + "identifier": "allow-appdata-write", + "description": "This allows non-recursive write access to the `$APPDATA` folder.", + "permissions": ["write-all", "scope-appdata"] + }, + "allow-appdata-write-recursive": { + "identifier": "allow-appdata-write-recursive", + "description": "This allows full recursive write access to the complete `$APPDATA` folder, files and subdirectories.", + "permissions": ["write-all", "scope-appdata-recursive"] + }, + "allow-applocaldata-meta": { + "identifier": "allow-applocaldata-meta", + "description": "This allows non-recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-applocaldata-index"] + }, + "allow-applocaldata-meta-recursive": { + "identifier": "allow-applocaldata-meta-recursive", + "description": "This allows full recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-applocaldata-recursive"] + }, + "allow-applocaldata-read": { + "identifier": "allow-applocaldata-read", + "description": "This allows non-recursive read access to the `$APPLOCALDATA` folder.", + "permissions": ["read-all", "scope-applocaldata"] + }, + "allow-applocaldata-read-recursive": { + "identifier": "allow-applocaldata-read-recursive", + "description": "This allows full recursive read access to the complete `$APPLOCALDATA` folder, files and subdirectories.", + "permissions": ["read-all", "scope-applocaldata-recursive"] + }, + "allow-applocaldata-write": { + "identifier": "allow-applocaldata-write", + "description": "This allows non-recursive write access to the `$APPLOCALDATA` folder.", + "permissions": ["write-all", "scope-applocaldata"] + }, + "allow-applocaldata-write-recursive": { + "identifier": "allow-applocaldata-write-recursive", + "description": "This allows full recursive write access to the complete `$APPLOCALDATA` folder, files and subdirectories.", + "permissions": ["write-all", "scope-applocaldata-recursive"] + }, + "allow-applog-meta": { + "identifier": "allow-applog-meta", + "description": "This allows non-recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-applog-index"] + }, + "allow-applog-meta-recursive": { + "identifier": "allow-applog-meta-recursive", + "description": "This allows full recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-applog-recursive"] + }, + "allow-applog-read": { + "identifier": "allow-applog-read", + "description": "This allows non-recursive read access to the `$APPLOG` folder.", + "permissions": ["read-all", "scope-applog"] + }, + "allow-applog-read-recursive": { + "identifier": "allow-applog-read-recursive", + "description": "This allows full recursive read access to the complete `$APPLOG` folder, files and subdirectories.", + "permissions": ["read-all", "scope-applog-recursive"] + }, + "allow-applog-write": { + "identifier": "allow-applog-write", + "description": "This allows non-recursive write access to the `$APPLOG` folder.", + "permissions": ["write-all", "scope-applog"] + }, + "allow-applog-write-recursive": { + "identifier": "allow-applog-write-recursive", + "description": "This allows full recursive write access to the complete `$APPLOG` folder, files and subdirectories.", + "permissions": ["write-all", "scope-applog-recursive"] + }, + "allow-audio-meta": { + "identifier": "allow-audio-meta", + "description": "This allows non-recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-audio-index"] + }, + "allow-audio-meta-recursive": { + "identifier": "allow-audio-meta-recursive", + "description": "This allows full recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-audio-recursive"] + }, + "allow-audio-read": { + "identifier": "allow-audio-read", + "description": "This allows non-recursive read access to the `$AUDIO` folder.", + "permissions": ["read-all", "scope-audio"] + }, + "allow-audio-read-recursive": { + "identifier": "allow-audio-read-recursive", + "description": "This allows full recursive read access to the complete `$AUDIO` folder, files and subdirectories.", + "permissions": ["read-all", "scope-audio-recursive"] + }, + "allow-audio-write": { + "identifier": "allow-audio-write", + "description": "This allows non-recursive write access to the `$AUDIO` folder.", + "permissions": ["write-all", "scope-audio"] + }, + "allow-audio-write-recursive": { + "identifier": "allow-audio-write-recursive", + "description": "This allows full recursive write access to the complete `$AUDIO` folder, files and subdirectories.", + "permissions": ["write-all", "scope-audio-recursive"] + }, + "allow-cache-meta": { + "identifier": "allow-cache-meta", + "description": "This allows non-recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-cache-index"] + }, + "allow-cache-meta-recursive": { + "identifier": "allow-cache-meta-recursive", + "description": "This allows full recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-cache-recursive"] + }, + "allow-cache-read": { + "identifier": "allow-cache-read", + "description": "This allows non-recursive read access to the `$CACHE` folder.", + "permissions": ["read-all", "scope-cache"] + }, + "allow-cache-read-recursive": { + "identifier": "allow-cache-read-recursive", + "description": "This allows full recursive read access to the complete `$CACHE` folder, files and subdirectories.", + "permissions": ["read-all", "scope-cache-recursive"] + }, + "allow-cache-write": { + "identifier": "allow-cache-write", + "description": "This allows non-recursive write access to the `$CACHE` folder.", + "permissions": ["write-all", "scope-cache"] + }, + "allow-cache-write-recursive": { + "identifier": "allow-cache-write-recursive", + "description": "This allows full recursive write access to the complete `$CACHE` folder, files and subdirectories.", + "permissions": ["write-all", "scope-cache-recursive"] + }, + "allow-config-meta": { + "identifier": "allow-config-meta", + "description": "This allows non-recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-config-index"] + }, + "allow-config-meta-recursive": { + "identifier": "allow-config-meta-recursive", + "description": "This allows full recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-config-recursive"] + }, + "allow-config-read": { + "identifier": "allow-config-read", + "description": "This allows non-recursive read access to the `$CONFIG` folder.", + "permissions": ["read-all", "scope-config"] + }, + "allow-config-read-recursive": { + "identifier": "allow-config-read-recursive", + "description": "This allows full recursive read access to the complete `$CONFIG` folder, files and subdirectories.", + "permissions": ["read-all", "scope-config-recursive"] + }, + "allow-config-write": { + "identifier": "allow-config-write", + "description": "This allows non-recursive write access to the `$CONFIG` folder.", + "permissions": ["write-all", "scope-config"] + }, + "allow-config-write-recursive": { + "identifier": "allow-config-write-recursive", + "description": "This allows full recursive write access to the complete `$CONFIG` folder, files and subdirectories.", + "permissions": ["write-all", "scope-config-recursive"] + }, + "allow-data-meta": { + "identifier": "allow-data-meta", + "description": "This allows non-recursive read access to metadata of the `$DATA` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-data-index"] + }, + "allow-data-meta-recursive": { + "identifier": "allow-data-meta-recursive", + "description": "This allows full recursive read access to metadata of the `$DATA` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-data-recursive"] + }, + "allow-data-read": { + "identifier": "allow-data-read", + "description": "This allows non-recursive read access to the `$DATA` folder.", + "permissions": ["read-all", "scope-data"] + }, + "allow-data-read-recursive": { + "identifier": "allow-data-read-recursive", + "description": "This allows full recursive read access to the complete `$DATA` folder, files and subdirectories.", + "permissions": ["read-all", "scope-data-recursive"] + }, + "allow-data-write": { + "identifier": "allow-data-write", + "description": "This allows non-recursive write access to the `$DATA` folder.", + "permissions": ["write-all", "scope-data"] + }, + "allow-data-write-recursive": { + "identifier": "allow-data-write-recursive", + "description": "This allows full recursive write access to the complete `$DATA` folder, files and subdirectories.", + "permissions": ["write-all", "scope-data-recursive"] + }, + "allow-desktop-meta": { + "identifier": "allow-desktop-meta", + "description": "This allows non-recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-desktop-index"] + }, + "allow-desktop-meta-recursive": { + "identifier": "allow-desktop-meta-recursive", + "description": "This allows full recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-desktop-recursive"] + }, + "allow-desktop-read": { + "identifier": "allow-desktop-read", + "description": "This allows non-recursive read access to the `$DESKTOP` folder.", + "permissions": ["read-all", "scope-desktop"] + }, + "allow-desktop-read-recursive": { + "identifier": "allow-desktop-read-recursive", + "description": "This allows full recursive read access to the complete `$DESKTOP` folder, files and subdirectories.", + "permissions": ["read-all", "scope-desktop-recursive"] + }, + "allow-desktop-write": { + "identifier": "allow-desktop-write", + "description": "This allows non-recursive write access to the `$DESKTOP` folder.", + "permissions": ["write-all", "scope-desktop"] + }, + "allow-desktop-write-recursive": { + "identifier": "allow-desktop-write-recursive", + "description": "This allows full recursive write access to the complete `$DESKTOP` folder, files and subdirectories.", + "permissions": ["write-all", "scope-desktop-recursive"] + }, + "allow-document-meta": { + "identifier": "allow-document-meta", + "description": "This allows non-recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-document-index"] + }, + "allow-document-meta-recursive": { + "identifier": "allow-document-meta-recursive", + "description": "This allows full recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-document-recursive"] + }, + "allow-document-read": { + "identifier": "allow-document-read", + "description": "This allows non-recursive read access to the `$DOCUMENT` folder.", + "permissions": ["read-all", "scope-document"] + }, + "allow-document-read-recursive": { + "identifier": "allow-document-read-recursive", + "description": "This allows full recursive read access to the complete `$DOCUMENT` folder, files and subdirectories.", + "permissions": ["read-all", "scope-document-recursive"] + }, + "allow-document-write": { + "identifier": "allow-document-write", + "description": "This allows non-recursive write access to the `$DOCUMENT` folder.", + "permissions": ["write-all", "scope-document"] + }, + "allow-document-write-recursive": { + "identifier": "allow-document-write-recursive", + "description": "This allows full recursive write access to the complete `$DOCUMENT` folder, files and subdirectories.", + "permissions": ["write-all", "scope-document-recursive"] + }, + "allow-download-meta": { + "identifier": "allow-download-meta", + "description": "This allows non-recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-download-index"] + }, + "allow-download-meta-recursive": { + "identifier": "allow-download-meta-recursive", + "description": "This allows full recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-download-recursive"] + }, + "allow-download-read": { + "identifier": "allow-download-read", + "description": "This allows non-recursive read access to the `$DOWNLOAD` folder.", + "permissions": ["read-all", "scope-download"] + }, + "allow-download-read-recursive": { + "identifier": "allow-download-read-recursive", + "description": "This allows full recursive read access to the complete `$DOWNLOAD` folder, files and subdirectories.", + "permissions": ["read-all", "scope-download-recursive"] + }, + "allow-download-write": { + "identifier": "allow-download-write", + "description": "This allows non-recursive write access to the `$DOWNLOAD` folder.", + "permissions": ["write-all", "scope-download"] + }, + "allow-download-write-recursive": { + "identifier": "allow-download-write-recursive", + "description": "This allows full recursive write access to the complete `$DOWNLOAD` folder, files and subdirectories.", + "permissions": ["write-all", "scope-download-recursive"] + }, + "allow-exe-meta": { + "identifier": "allow-exe-meta", + "description": "This allows non-recursive read access to metadata of the `$EXE` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-exe-index"] + }, + "allow-exe-meta-recursive": { + "identifier": "allow-exe-meta-recursive", + "description": "This allows full recursive read access to metadata of the `$EXE` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-exe-recursive"] + }, + "allow-exe-read": { + "identifier": "allow-exe-read", + "description": "This allows non-recursive read access to the `$EXE` folder.", + "permissions": ["read-all", "scope-exe"] + }, + "allow-exe-read-recursive": { + "identifier": "allow-exe-read-recursive", + "description": "This allows full recursive read access to the complete `$EXE` folder, files and subdirectories.", + "permissions": ["read-all", "scope-exe-recursive"] + }, + "allow-exe-write": { + "identifier": "allow-exe-write", + "description": "This allows non-recursive write access to the `$EXE` folder.", + "permissions": ["write-all", "scope-exe"] + }, + "allow-exe-write-recursive": { + "identifier": "allow-exe-write-recursive", + "description": "This allows full recursive write access to the complete `$EXE` folder, files and subdirectories.", + "permissions": ["write-all", "scope-exe-recursive"] + }, + "allow-font-meta": { + "identifier": "allow-font-meta", + "description": "This allows non-recursive read access to metadata of the `$FONT` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-font-index"] + }, + "allow-font-meta-recursive": { + "identifier": "allow-font-meta-recursive", + "description": "This allows full recursive read access to metadata of the `$FONT` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-font-recursive"] + }, + "allow-font-read": { + "identifier": "allow-font-read", + "description": "This allows non-recursive read access to the `$FONT` folder.", + "permissions": ["read-all", "scope-font"] + }, + "allow-font-read-recursive": { + "identifier": "allow-font-read-recursive", + "description": "This allows full recursive read access to the complete `$FONT` folder, files and subdirectories.", + "permissions": ["read-all", "scope-font-recursive"] + }, + "allow-font-write": { + "identifier": "allow-font-write", + "description": "This allows non-recursive write access to the `$FONT` folder.", + "permissions": ["write-all", "scope-font"] + }, + "allow-font-write-recursive": { + "identifier": "allow-font-write-recursive", + "description": "This allows full recursive write access to the complete `$FONT` folder, files and subdirectories.", + "permissions": ["write-all", "scope-font-recursive"] + }, + "allow-home-meta": { + "identifier": "allow-home-meta", + "description": "This allows non-recursive read access to metadata of the `$HOME` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-home-index"] + }, + "allow-home-meta-recursive": { + "identifier": "allow-home-meta-recursive", + "description": "This allows full recursive read access to metadata of the `$HOME` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-home-recursive"] + }, + "allow-home-read": { + "identifier": "allow-home-read", + "description": "This allows non-recursive read access to the `$HOME` folder.", + "permissions": ["read-all", "scope-home"] + }, + "allow-home-read-recursive": { + "identifier": "allow-home-read-recursive", + "description": "This allows full recursive read access to the complete `$HOME` folder, files and subdirectories.", + "permissions": ["read-all", "scope-home-recursive"] + }, + "allow-home-write": { + "identifier": "allow-home-write", + "description": "This allows non-recursive write access to the `$HOME` folder.", + "permissions": ["write-all", "scope-home"] + }, + "allow-home-write-recursive": { + "identifier": "allow-home-write-recursive", + "description": "This allows full recursive write access to the complete `$HOME` folder, files and subdirectories.", + "permissions": ["write-all", "scope-home-recursive"] + }, + "allow-localdata-meta": { + "identifier": "allow-localdata-meta", + "description": "This allows non-recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-localdata-index"] + }, + "allow-localdata-meta-recursive": { + "identifier": "allow-localdata-meta-recursive", + "description": "This allows full recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-localdata-recursive"] + }, + "allow-localdata-read": { + "identifier": "allow-localdata-read", + "description": "This allows non-recursive read access to the `$LOCALDATA` folder.", + "permissions": ["read-all", "scope-localdata"] + }, + "allow-localdata-read-recursive": { + "identifier": "allow-localdata-read-recursive", + "description": "This allows full recursive read access to the complete `$LOCALDATA` folder, files and subdirectories.", + "permissions": ["read-all", "scope-localdata-recursive"] + }, + "allow-localdata-write": { + "identifier": "allow-localdata-write", + "description": "This allows non-recursive write access to the `$LOCALDATA` folder.", + "permissions": ["write-all", "scope-localdata"] + }, + "allow-localdata-write-recursive": { + "identifier": "allow-localdata-write-recursive", + "description": "This allows full recursive write access to the complete `$LOCALDATA` folder, files and subdirectories.", + "permissions": ["write-all", "scope-localdata-recursive"] + }, + "allow-log-meta": { + "identifier": "allow-log-meta", + "description": "This allows non-recursive read access to metadata of the `$LOG` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-log-index"] + }, + "allow-log-meta-recursive": { + "identifier": "allow-log-meta-recursive", + "description": "This allows full recursive read access to metadata of the `$LOG` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-log-recursive"] + }, + "allow-log-read": { + "identifier": "allow-log-read", + "description": "This allows non-recursive read access to the `$LOG` folder.", + "permissions": ["read-all", "scope-log"] + }, + "allow-log-read-recursive": { + "identifier": "allow-log-read-recursive", + "description": "This allows full recursive read access to the complete `$LOG` folder, files and subdirectories.", + "permissions": ["read-all", "scope-log-recursive"] + }, + "allow-log-write": { + "identifier": "allow-log-write", + "description": "This allows non-recursive write access to the `$LOG` folder.", + "permissions": ["write-all", "scope-log"] + }, + "allow-log-write-recursive": { + "identifier": "allow-log-write-recursive", + "description": "This allows full recursive write access to the complete `$LOG` folder, files and subdirectories.", + "permissions": ["write-all", "scope-log-recursive"] + }, + "allow-picture-meta": { + "identifier": "allow-picture-meta", + "description": "This allows non-recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-picture-index"] + }, + "allow-picture-meta-recursive": { + "identifier": "allow-picture-meta-recursive", + "description": "This allows full recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-picture-recursive"] + }, + "allow-picture-read": { + "identifier": "allow-picture-read", + "description": "This allows non-recursive read access to the `$PICTURE` folder.", + "permissions": ["read-all", "scope-picture"] + }, + "allow-picture-read-recursive": { + "identifier": "allow-picture-read-recursive", + "description": "This allows full recursive read access to the complete `$PICTURE` folder, files and subdirectories.", + "permissions": ["read-all", "scope-picture-recursive"] + }, + "allow-picture-write": { + "identifier": "allow-picture-write", + "description": "This allows non-recursive write access to the `$PICTURE` folder.", + "permissions": ["write-all", "scope-picture"] + }, + "allow-picture-write-recursive": { + "identifier": "allow-picture-write-recursive", + "description": "This allows full recursive write access to the complete `$PICTURE` folder, files and subdirectories.", + "permissions": ["write-all", "scope-picture-recursive"] + }, + "allow-public-meta": { + "identifier": "allow-public-meta", + "description": "This allows non-recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-public-index"] + }, + "allow-public-meta-recursive": { + "identifier": "allow-public-meta-recursive", + "description": "This allows full recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-public-recursive"] + }, + "allow-public-read": { + "identifier": "allow-public-read", + "description": "This allows non-recursive read access to the `$PUBLIC` folder.", + "permissions": ["read-all", "scope-public"] + }, + "allow-public-read-recursive": { + "identifier": "allow-public-read-recursive", + "description": "This allows full recursive read access to the complete `$PUBLIC` folder, files and subdirectories.", + "permissions": ["read-all", "scope-public-recursive"] + }, + "allow-public-write": { + "identifier": "allow-public-write", + "description": "This allows non-recursive write access to the `$PUBLIC` folder.", + "permissions": ["write-all", "scope-public"] + }, + "allow-public-write-recursive": { + "identifier": "allow-public-write-recursive", + "description": "This allows full recursive write access to the complete `$PUBLIC` folder, files and subdirectories.", + "permissions": ["write-all", "scope-public-recursive"] + }, + "allow-resource-meta": { + "identifier": "allow-resource-meta", + "description": "This allows non-recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-resource-index"] + }, + "allow-resource-meta-recursive": { + "identifier": "allow-resource-meta-recursive", + "description": "This allows full recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-resource-recursive"] + }, + "allow-resource-read": { + "identifier": "allow-resource-read", + "description": "This allows non-recursive read access to the `$RESOURCE` folder.", + "permissions": ["read-all", "scope-resource"] + }, + "allow-resource-read-recursive": { + "identifier": "allow-resource-read-recursive", + "description": "This allows full recursive read access to the complete `$RESOURCE` folder, files and subdirectories.", + "permissions": ["read-all", "scope-resource-recursive"] + }, + "allow-resource-write": { + "identifier": "allow-resource-write", + "description": "This allows non-recursive write access to the `$RESOURCE` folder.", + "permissions": ["write-all", "scope-resource"] + }, + "allow-resource-write-recursive": { + "identifier": "allow-resource-write-recursive", + "description": "This allows full recursive write access to the complete `$RESOURCE` folder, files and subdirectories.", + "permissions": ["write-all", "scope-resource-recursive"] + }, + "allow-runtime-meta": { + "identifier": "allow-runtime-meta", + "description": "This allows non-recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-runtime-index"] + }, + "allow-runtime-meta-recursive": { + "identifier": "allow-runtime-meta-recursive", + "description": "This allows full recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-runtime-recursive"] + }, + "allow-runtime-read": { + "identifier": "allow-runtime-read", + "description": "This allows non-recursive read access to the `$RUNTIME` folder.", + "permissions": ["read-all", "scope-runtime"] + }, + "allow-runtime-read-recursive": { + "identifier": "allow-runtime-read-recursive", + "description": "This allows full recursive read access to the complete `$RUNTIME` folder, files and subdirectories.", + "permissions": ["read-all", "scope-runtime-recursive"] + }, + "allow-runtime-write": { + "identifier": "allow-runtime-write", + "description": "This allows non-recursive write access to the `$RUNTIME` folder.", + "permissions": ["write-all", "scope-runtime"] + }, + "allow-runtime-write-recursive": { + "identifier": "allow-runtime-write-recursive", + "description": "This allows full recursive write access to the complete `$RUNTIME` folder, files and subdirectories.", + "permissions": ["write-all", "scope-runtime-recursive"] + }, + "allow-temp-meta": { + "identifier": "allow-temp-meta", + "description": "This allows non-recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-temp-index"] + }, + "allow-temp-meta-recursive": { + "identifier": "allow-temp-meta-recursive", + "description": "This allows full recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-temp-recursive"] + }, + "allow-temp-read": { + "identifier": "allow-temp-read", + "description": "This allows non-recursive read access to the `$TEMP` folder.", + "permissions": ["read-all", "scope-temp"] + }, + "allow-temp-read-recursive": { + "identifier": "allow-temp-read-recursive", + "description": "This allows full recursive read access to the complete `$TEMP` folder, files and subdirectories.", + "permissions": ["read-all", "scope-temp-recursive"] + }, + "allow-temp-write": { + "identifier": "allow-temp-write", + "description": "This allows non-recursive write access to the `$TEMP` folder.", + "permissions": ["write-all", "scope-temp"] + }, + "allow-temp-write-recursive": { + "identifier": "allow-temp-write-recursive", + "description": "This allows full recursive write access to the complete `$TEMP` folder, files and subdirectories.", + "permissions": ["write-all", "scope-temp-recursive"] + }, + "allow-template-meta": { + "identifier": "allow-template-meta", + "description": "This allows non-recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-template-index"] + }, + "allow-template-meta-recursive": { + "identifier": "allow-template-meta-recursive", + "description": "This allows full recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-template-recursive"] + }, + "allow-template-read": { + "identifier": "allow-template-read", + "description": "This allows non-recursive read access to the `$TEMPLATE` folder.", + "permissions": ["read-all", "scope-template"] + }, + "allow-template-read-recursive": { + "identifier": "allow-template-read-recursive", + "description": "This allows full recursive read access to the complete `$TEMPLATE` folder, files and subdirectories.", + "permissions": ["read-all", "scope-template-recursive"] + }, + "allow-template-write": { + "identifier": "allow-template-write", + "description": "This allows non-recursive write access to the `$TEMPLATE` folder.", + "permissions": ["write-all", "scope-template"] + }, + "allow-template-write-recursive": { + "identifier": "allow-template-write-recursive", + "description": "This allows full recursive write access to the complete `$TEMPLATE` folder, files and subdirectories.", + "permissions": ["write-all", "scope-template-recursive"] + }, + "allow-video-meta": { + "identifier": "allow-video-meta", + "description": "This allows non-recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-video-index"] + }, + "allow-video-meta-recursive": { + "identifier": "allow-video-meta-recursive", + "description": "This allows full recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.", + "permissions": ["read-meta", "scope-video-recursive"] + }, + "allow-video-read": { + "identifier": "allow-video-read", + "description": "This allows non-recursive read access to the `$VIDEO` folder.", + "permissions": ["read-all", "scope-video"] + }, + "allow-video-read-recursive": { + "identifier": "allow-video-read-recursive", + "description": "This allows full recursive read access to the complete `$VIDEO` folder, files and subdirectories.", + "permissions": ["read-all", "scope-video-recursive"] + }, + "allow-video-write": { + "identifier": "allow-video-write", + "description": "This allows non-recursive write access to the `$VIDEO` folder.", + "permissions": ["write-all", "scope-video"] + }, + "allow-video-write-recursive": { + "identifier": "allow-video-write-recursive", + "description": "This allows full recursive write access to the complete `$VIDEO` folder, files and subdirectories.", + "permissions": ["write-all", "scope-video-recursive"] + }, + "deny-default": { + "identifier": "deny-default", + "description": "This denies access to dangerous Tauri relevant files and folders by default.", + "permissions": ["deny-webview-data-linux", "deny-webview-data-windows"] + } + }, + "global_scope_schema": { + "$schema": "http://json-schema.org/draft-07/schema#", + "anyOf": [ + { "description": "FS scope path.", "type": "string" }, + { + "properties": { + "path": { "description": "FS scope path.", "type": "string" } + }, + "required": ["path"], + "type": "object" + } + ], + "description": "FS scope entry.", + "title": "FsScopeEntry" + } + }, + "global-shortcut": { + "default_permission": { + "identifier": "default", + "description": "No features are enabled by default, as we believe\nthe shortcuts can be inherently dangerous and it is\napplication specific if specific shortcuts should be\nregistered or unregistered.\n", + "permissions": [] + }, + "permissions": { + "allow-is-registered": { + "identifier": "allow-is-registered", + "description": "Enables the is_registered command without any pre-configured scope.", + "commands": { "allow": ["is_registered"], "deny": [] } + }, + "allow-register": { + "identifier": "allow-register", + "description": "Enables the register command without any pre-configured scope.", + "commands": { "allow": ["register"], "deny": [] } + }, + "allow-register-all": { + "identifier": "allow-register-all", + "description": "Enables the register_all command without any pre-configured scope.", + "commands": { "allow": ["register_all"], "deny": [] } + }, + "allow-unregister": { + "identifier": "allow-unregister", + "description": "Enables the unregister command without any pre-configured scope.", + "commands": { "allow": ["unregister"], "deny": [] } + }, + "allow-unregister-all": { + "identifier": "allow-unregister-all", + "description": "Enables the unregister_all command without any pre-configured scope.", + "commands": { "allow": ["unregister_all"], "deny": [] } + }, + "deny-is-registered": { + "identifier": "deny-is-registered", + "description": "Denies the is_registered command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["is_registered"] } + }, + "deny-register": { + "identifier": "deny-register", + "description": "Denies the register command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["register"] } + }, + "deny-register-all": { + "identifier": "deny-register-all", + "description": "Denies the register_all command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["register_all"] } + }, + "deny-unregister": { + "identifier": "deny-unregister", + "description": "Denies the unregister command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["unregister"] } + }, + "deny-unregister-all": { + "identifier": "deny-unregister-all", + "description": "Denies the unregister_all command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["unregister_all"] } + } + }, + "permission_sets": {}, + "global_scope_schema": null + }, + "notification": { + "default_permission": { + "identifier": "default", + "description": "This permission set configures which\nnotification features are by default exposed.\n\n#### Granted Permissions\n\nIt allows all notification related features.\n\n", + "permissions": [ + "allow-is-permission-granted", + "allow-request-permission", + "allow-notify", + "allow-register-action-types", + "allow-register-listener", + "allow-cancel", + "allow-get-pending", + "allow-remove-active", + "allow-get-active", + "allow-check-permissions", + "allow-show", + "allow-batch", + "allow-list-channels", + "allow-delete-channel", + "allow-create-channel", + "allow-permission-state" + ] + }, + "permissions": { + "allow-batch": { + "identifier": "allow-batch", + "description": "Enables the batch command without any pre-configured scope.", + "commands": { "allow": ["batch"], "deny": [] } + }, + "allow-cancel": { + "identifier": "allow-cancel", + "description": "Enables the cancel command without any pre-configured scope.", + "commands": { "allow": ["cancel"], "deny": [] } + }, + "allow-check-permissions": { + "identifier": "allow-check-permissions", + "description": "Enables the check_permissions command without any pre-configured scope.", + "commands": { "allow": ["check_permissions"], "deny": [] } + }, + "allow-create-channel": { + "identifier": "allow-create-channel", + "description": "Enables the create_channel command without any pre-configured scope.", + "commands": { "allow": ["create_channel"], "deny": [] } + }, + "allow-delete-channel": { + "identifier": "allow-delete-channel", + "description": "Enables the delete_channel command without any pre-configured scope.", + "commands": { "allow": ["delete_channel"], "deny": [] } + }, + "allow-get-active": { + "identifier": "allow-get-active", + "description": "Enables the get_active command without any pre-configured scope.", + "commands": { "allow": ["get_active"], "deny": [] } + }, + "allow-get-pending": { + "identifier": "allow-get-pending", + "description": "Enables the get_pending command without any pre-configured scope.", + "commands": { "allow": ["get_pending"], "deny": [] } + }, + "allow-is-permission-granted": { + "identifier": "allow-is-permission-granted", + "description": "Enables the is_permission_granted command without any pre-configured scope.", + "commands": { "allow": ["is_permission_granted"], "deny": [] } + }, + "allow-list-channels": { + "identifier": "allow-list-channels", + "description": "Enables the list_channels command without any pre-configured scope.", + "commands": { "allow": ["list_channels"], "deny": [] } + }, + "allow-notify": { + "identifier": "allow-notify", + "description": "Enables the notify command without any pre-configured scope.", + "commands": { "allow": ["notify"], "deny": [] } + }, + "allow-permission-state": { + "identifier": "allow-permission-state", + "description": "Enables the permission_state command without any pre-configured scope.", + "commands": { "allow": ["permission_state"], "deny": [] } + }, + "allow-register-action-types": { + "identifier": "allow-register-action-types", + "description": "Enables the register_action_types command without any pre-configured scope.", + "commands": { "allow": ["register_action_types"], "deny": [] } + }, + "allow-register-listener": { + "identifier": "allow-register-listener", + "description": "Enables the register_listener command without any pre-configured scope.", + "commands": { "allow": ["register_listener"], "deny": [] } + }, + "allow-remove-active": { + "identifier": "allow-remove-active", + "description": "Enables the remove_active command without any pre-configured scope.", + "commands": { "allow": ["remove_active"], "deny": [] } + }, + "allow-request-permission": { + "identifier": "allow-request-permission", + "description": "Enables the request_permission command without any pre-configured scope.", + "commands": { "allow": ["request_permission"], "deny": [] } + }, + "allow-show": { + "identifier": "allow-show", + "description": "Enables the show command without any pre-configured scope.", + "commands": { "allow": ["show"], "deny": [] } + }, + "deny-batch": { + "identifier": "deny-batch", + "description": "Denies the batch command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["batch"] } + }, + "deny-cancel": { + "identifier": "deny-cancel", + "description": "Denies the cancel command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["cancel"] } + }, + "deny-check-permissions": { + "identifier": "deny-check-permissions", + "description": "Denies the check_permissions command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["check_permissions"] } + }, + "deny-create-channel": { + "identifier": "deny-create-channel", + "description": "Denies the create_channel command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["create_channel"] } + }, + "deny-delete-channel": { + "identifier": "deny-delete-channel", + "description": "Denies the delete_channel command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["delete_channel"] } + }, + "deny-get-active": { + "identifier": "deny-get-active", + "description": "Denies the get_active command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["get_active"] } + }, + "deny-get-pending": { + "identifier": "deny-get-pending", + "description": "Denies the get_pending command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["get_pending"] } + }, + "deny-is-permission-granted": { + "identifier": "deny-is-permission-granted", + "description": "Denies the is_permission_granted command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["is_permission_granted"] } + }, + "deny-list-channels": { + "identifier": "deny-list-channels", + "description": "Denies the list_channels command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["list_channels"] } + }, + "deny-notify": { + "identifier": "deny-notify", + "description": "Denies the notify command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["notify"] } + }, + "deny-permission-state": { + "identifier": "deny-permission-state", + "description": "Denies the permission_state command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["permission_state"] } + }, + "deny-register-action-types": { + "identifier": "deny-register-action-types", + "description": "Denies the register_action_types command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["register_action_types"] } + }, + "deny-register-listener": { + "identifier": "deny-register-listener", + "description": "Denies the register_listener command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["register_listener"] } + }, + "deny-remove-active": { + "identifier": "deny-remove-active", + "description": "Denies the remove_active command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["remove_active"] } + }, + "deny-request-permission": { + "identifier": "deny-request-permission", + "description": "Denies the request_permission command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["request_permission"] } + }, + "deny-show": { + "identifier": "deny-show", + "description": "Denies the show command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["show"] } + } + }, + "permission_sets": {}, + "global_scope_schema": null + }, + "process": { + "default_permission": { + "identifier": "default", + "description": "This permission set configures which\nprocess feeatures are by default exposed.\n\n#### Granted Permissions\n\nThis enables to quit via `allow-exit` and restart via `allow-restart`\nthe application.\n", + "permissions": ["allow-exit", "allow-restart"] + }, + "permissions": { + "allow-exit": { + "identifier": "allow-exit", + "description": "Enables the exit command without any pre-configured scope.", + "commands": { "allow": ["exit"], "deny": [] } + }, + "allow-restart": { + "identifier": "allow-restart", + "description": "Enables the restart command without any pre-configured scope.", + "commands": { "allow": ["restart"], "deny": [] } + }, + "deny-exit": { + "identifier": "deny-exit", + "description": "Denies the exit command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["exit"] } + }, + "deny-restart": { + "identifier": "deny-restart", + "description": "Denies the restart command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["restart"] } + } + }, + "permission_sets": {}, + "global_scope_schema": null + }, + "shell": { + "default_permission": { + "identifier": "default", + "description": "This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality without any specific\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n", + "permissions": ["allow-open"] + }, + "permissions": { + "allow-execute": { + "identifier": "allow-execute", + "description": "Enables the execute command without any pre-configured scope.", + "commands": { "allow": ["execute"], "deny": [] } + }, + "allow-kill": { + "identifier": "allow-kill", + "description": "Enables the kill command without any pre-configured scope.", + "commands": { "allow": ["kill"], "deny": [] } + }, + "allow-open": { + "identifier": "allow-open", + "description": "Enables the open command without any pre-configured scope.", + "commands": { "allow": ["open"], "deny": [] } + }, + "allow-spawn": { + "identifier": "allow-spawn", + "description": "Enables the spawn command without any pre-configured scope.", + "commands": { "allow": ["spawn"], "deny": [] } + }, + "allow-stdin-write": { + "identifier": "allow-stdin-write", + "description": "Enables the stdin_write command without any pre-configured scope.", + "commands": { "allow": ["stdin_write"], "deny": [] } + }, + "deny-execute": { + "identifier": "deny-execute", + "description": "Denies the execute command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["execute"] } + }, + "deny-kill": { + "identifier": "deny-kill", + "description": "Denies the kill command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["kill"] } + }, + "deny-open": { + "identifier": "deny-open", + "description": "Denies the open command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["open"] } + }, + "deny-spawn": { + "identifier": "deny-spawn", + "description": "Denies the spawn command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["spawn"] } + }, + "deny-stdin-write": { + "identifier": "deny-stdin-write", + "description": "Denies the stdin_write command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["stdin_write"] } + } + }, + "permission_sets": {}, + "global_scope_schema": { + "$schema": "http://json-schema.org/draft-07/schema#", + "definitions": { + "ShellAllowedArg": { + "anyOf": [ + { + "description": "A non-configurable argument that is passed to the command in the order it was specified.", + "type": "string" + }, + { + "additionalProperties": false, + "description": "A variable that is set while calling the command from the webview API.", + "properties": { + "raw": { + "default": false, + "description": "Marks the validator as a raw regex, meaning the plugin should not make any modification at runtime.\n\nThis means the regex will not match on the entire string by default, which might be exploited if your regex allow unexpected input to be considered valid. When using this option, make sure your regex is correct.", + "type": "boolean" + }, + "validator": { + "description": "[regex] validator to require passed values to conform to an expected input.\n\nThis will require the argument value passed to this variable to match the `validator` regex before it will be executed.\n\nThe regex string is by default surrounded by `^...$` to match the full string. For example the `https?://\\w+` regex would be registered as `^https?://\\w+$`.\n\n[regex]: ", + "type": "string" + } + }, + "required": ["validator"], + "type": "object" + } + ], + "description": "A command argument allowed to be executed by the webview API." + }, + "ShellAllowedArgs": { + "anyOf": [ + { + "description": "Use a simple boolean to allow all or disable all arguments to this command configuration.", + "type": "boolean" + }, + { + "description": "A specific set of [`ShellAllowedArg`] that are valid to call for the command configuration.", + "items": { "$ref": "#/definitions/ShellAllowedArg" }, + "type": "array" + } + ], + "description": "A set of command arguments allowed to be executed by the webview API.\n\nA value of `true` will allow any arguments to be passed to the command. `false` will disable all arguments. A list of [`ShellAllowedArg`] will set those arguments as the only valid arguments to be passed to the attached command configuration." + } + }, + "description": "A command allowed to be executed by the webview API.", + "properties": { + "args": { + "allOf": [{ "$ref": "#/definitions/ShellAllowedArgs" }], + "description": "The allowed arguments for the command execution." + }, + "cmd": { + "description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$APP`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.", + "type": "string" + }, + "name": { + "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", + "type": "string" + }, + "sidecar": { + "description": "If this command is a sidecar command.", + "type": "boolean" + } + }, + "required": ["args", "cmd", "name", "sidecar"], + "title": "Entry", + "type": "object" + } + }, + "updater": { + "default_permission": { + "identifier": "default", + "description": "This permission set configures which kind of\nupdater functions are exposed to the frontend.\n\n#### Granted Permissions\n\nThe full workflow from checking for updates to installing them\nis enabled.\n\n", + "permissions": [ + "allow-check", + "allow-download", + "allow-install", + "allow-download-and-install" + ] + }, + "permissions": { + "allow-check": { + "identifier": "allow-check", + "description": "Enables the check command without any pre-configured scope.", + "commands": { "allow": ["check"], "deny": [] } + }, + "allow-download": { + "identifier": "allow-download", + "description": "Enables the download command without any pre-configured scope.", + "commands": { "allow": ["download"], "deny": [] } + }, + "allow-download-and-install": { + "identifier": "allow-download-and-install", + "description": "Enables the download_and_install command without any pre-configured scope.", + "commands": { "allow": ["download_and_install"], "deny": [] } + }, + "allow-install": { + "identifier": "allow-install", + "description": "Enables the install command without any pre-configured scope.", + "commands": { "allow": ["install"], "deny": [] } + }, + "deny-check": { + "identifier": "deny-check", + "description": "Denies the check command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["check"] } + }, + "deny-download": { + "identifier": "deny-download", + "description": "Denies the download command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["download"] } + }, + "deny-download-and-install": { + "identifier": "deny-download-and-install", + "description": "Denies the download_and_install command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["download_and_install"] } + }, + "deny-install": { + "identifier": "deny-install", + "description": "Denies the install command without any pre-configured scope.", + "commands": { "allow": [], "deny": ["install"] } + } + }, + "permission_sets": {}, + "global_scope_schema": null + } +} diff --git a/src-tauri/gen/schemas/capabilities.json b/src-tauri/gen/schemas/capabilities.json new file mode 100644 index 0000000..66545c9 --- /dev/null +++ b/src-tauri/gen/schemas/capabilities.json @@ -0,0 +1,74 @@ +{ + "desktop-capability": { + "identifier": "desktop-capability", + "description": "", + "local": true, + "permissions": ["global-shortcut:default", "updater:default"], + "platforms": ["macOS", "windows", "linux"] + }, + "migrated": { + "identifier": "migrated", + "description": "permissions that were migrated from v1", + "local": true, + "windows": ["main"], + "permissions": [ + "core:default", + "fs:allow-read-file", + "fs:allow-exists", + { + "identifier": "fs:scope", + "allow": ["$APPDATA/**", "$RESOURCE/../**", "**"] + }, + "core:window:allow-create", + "core:window:allow-center", + "core:window:allow-request-user-attention", + "core:window:allow-set-resizable", + "core:window:allow-set-maximizable", + "core:window:allow-set-minimizable", + "core:window:allow-set-closable", + "core:window:allow-set-title", + "core:window:allow-maximize", + "core:window:allow-unmaximize", + "core:window:allow-minimize", + "core:window:allow-unminimize", + "core:window:allow-show", + "core:window:allow-hide", + "core:window:allow-close", + "core:window:allow-set-decorations", + "core:window:allow-set-always-on-top", + "core:window:allow-set-content-protected", + "core:window:allow-set-size", + "core:window:allow-set-min-size", + "core:window:allow-set-max-size", + "core:window:allow-set-position", + "core:window:allow-set-fullscreen", + "core:window:allow-set-focus", + "core:window:allow-set-icon", + "core:window:allow-set-skip-taskbar", + "core:window:allow-set-cursor-grab", + "core:window:allow-set-cursor-visible", + "core:window:allow-set-cursor-icon", + "core:window:allow-set-cursor-position", + "core:window:allow-set-ignore-cursor-events", + "core:window:allow-start-dragging", + "core:webview:allow-print", + "shell:allow-execute", + "shell:allow-open", + "dialog:allow-open", + "notification:default", + "global-shortcut:allow-is-registered", + "global-shortcut:allow-register", + "global-shortcut:allow-register-all", + "global-shortcut:allow-unregister", + "global-shortcut:allow-unregister-all", + "process:allow-restart", + "process:allow-exit", + "clipboard-manager:allow-read-text", + "clipboard-manager:allow-write-text", + "shell:default", + "dialog:default", + "fs:default", + "notification:default" + ] + } +} diff --git a/src-tauri/gen/schemas/desktop-schema.json b/src-tauri/gen/schemas/desktop-schema.json new file mode 100644 index 0000000..1d67880 --- /dev/null +++ b/src-tauri/gen/schemas/desktop-schema.json @@ -0,0 +1,5171 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "CapabilityFile", + "description": "Capability formats accepted in a capability file.", + "anyOf": [ + { + "description": "A single capability.", + "allOf": [ + { + "$ref": "#/definitions/Capability" + } + ] + }, + { + "description": "A list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + }, + { + "description": "A list of capabilities.", + "type": "object", + "required": ["capabilities"], + "properties": { + "capabilities": { + "description": "The list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + } + } + } + ], + "definitions": { + "Capability": { + "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows fine grained access to the Tauri core, application, or plugin commands. If a window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, \"platforms\": [\"macOS\",\"windows\"] } ```", + "type": "object", + "required": ["identifier", "permissions"], + "properties": { + "identifier": { + "description": "Identifier of the capability.\n\n## Example\n\n`main-user-files-write`", + "type": "string" + }, + "description": { + "description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.", + "default": "", + "type": "string" + }, + "remote": { + "description": "Configure remote URLs that can use the capability permissions.\n\nThis setting is optional and defaults to not being set, as our default use case is that the content is served from our local application.\n\n:::caution Make sure you understand the security implications of providing remote sources with local system access. :::\n\n## Example\n\n```json { \"urls\": [\"https://*.mydomain.dev\"] } ```", + "anyOf": [ + { + "$ref": "#/definitions/CapabilityRemote" + }, + { + "type": "null" + } + ] + }, + "local": { + "description": "Whether this capability is enabled for local app URLs or not. Defaults to `true`.", + "default": true, + "type": "boolean" + }, + "windows": { + "description": "List of windows that are affected by this capability. Can be a glob pattern.\n\nOn multiwebview windows, prefer [`Self::webviews`] for a fine grained access control.\n\n## Example\n\n`[\"main\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "webviews": { + "description": "List of webviews that are affected by this capability. Can be a glob pattern.\n\nThis is only required when using on multiwebview contexts, by default all child webviews of a window that matches [`Self::windows`] are linked.\n\n## Example\n\n`[\"sub-webview-one\", \"sub-webview-two\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "permissions": { + "description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required.\n\n## Example\n\n```json [ \"core:default\", \"shell:allow-open\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] } ```", + "type": "array", + "items": { + "$ref": "#/definitions/PermissionEntry" + }, + "uniqueItems": true + }, + "platforms": { + "description": "Limit which target platforms this capability applies to.\n\nBy default all platforms are targeted.\n\n## Example\n\n`[\"macOS\",\"windows\"]`", + "type": ["array", "null"], + "items": { + "$ref": "#/definitions/Target" + } + } + } + }, + "CapabilityRemote": { + "description": "Configuration for remote URLs that are associated with the capability.", + "type": "object", + "required": ["urls"], + "properties": { + "urls": { + "description": "Remote domains this capability refers to using the [URLPattern standard](https://urlpattern.spec.whatwg.org/).\n\n## Examples\n\n- \"https://*.mydomain.dev\": allows subdomains of mydomain.dev - \"https://mydomain.dev/api/*\": allows any subpath of mydomain.dev/api", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "PermissionEntry": { + "description": "An entry for a permission value in a [`Capability`] can be either a raw permission [`Identifier`] or an object that references a permission and extends its scope.", + "anyOf": [ + { + "description": "Reference a permission or permission set by identifier.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + }, + { + "description": "Reference a permission or permission set by identifier and extends its scope.", + "type": "object", + "oneOf": [ + { + "type": "object", + "required": ["identifier"], + "properties": { + "identifier": { + "oneOf": [ + { + "description": "fs:default -> This set of permissions describes the what kind of\nfile system access the `fs` plugin has enabled or denied by default.\n\n#### Granted Permissions\n\nThis default permission set enables read access to the\napplication specific directories (AppConfig, AppData, AppLocalData, AppCache,\nAppLog) and all files and sub directories created in it.\nThe location of these directories depends on the operating system,\nwhere the application is run.\n\nIn general these directories need to be manually created\nby the application at runtime, before accessing files or folders\nin it is possible.\n\nTherefore, it is also allowed to create all of these folders via\nthe `mkdir` command.\n\n#### Denied Permissions\n\nThis default permission set prevents access to critical components\nof the Tauri application by default.\nOn Windows the webview data folder access is denied.\n\n", + "type": "string", + "enum": ["fs:default"] + }, + { + "description": "fs:allow-app-meta -> This allows non-recursive read access to metadata of the `$APP` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-app-meta"] + }, + { + "description": "fs:allow-app-meta-recursive -> This allows full recursive read access to metadata of the `$APP` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-app-meta-recursive"] + }, + { + "description": "fs:allow-app-read -> This allows non-recursive read access to the `$APP` folder.", + "type": "string", + "enum": ["fs:allow-app-read"] + }, + { + "description": "fs:allow-app-read-recursive -> This allows full recursive read access to the complete `$APP` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-app-read-recursive"] + }, + { + "description": "fs:allow-app-write -> This allows non-recursive write access to the `$APP` folder.", + "type": "string", + "enum": ["fs:allow-app-write"] + }, + { + "description": "fs:allow-app-write-recursive -> This allows full recursive write access to the complete `$APP` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-app-write-recursive"] + }, + { + "description": "fs:allow-appcache-meta -> This allows non-recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-appcache-meta"] + }, + { + "description": "fs:allow-appcache-meta-recursive -> This allows full recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-appcache-meta-recursive"] + }, + { + "description": "fs:allow-appcache-read -> This allows non-recursive read access to the `$APPCACHE` folder.", + "type": "string", + "enum": ["fs:allow-appcache-read"] + }, + { + "description": "fs:allow-appcache-read-recursive -> This allows full recursive read access to the complete `$APPCACHE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-appcache-read-recursive"] + }, + { + "description": "fs:allow-appcache-write -> This allows non-recursive write access to the `$APPCACHE` folder.", + "type": "string", + "enum": ["fs:allow-appcache-write"] + }, + { + "description": "fs:allow-appcache-write-recursive -> This allows full recursive write access to the complete `$APPCACHE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-appcache-write-recursive"] + }, + { + "description": "fs:allow-appconfig-meta -> This allows non-recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-appconfig-meta"] + }, + { + "description": "fs:allow-appconfig-meta-recursive -> This allows full recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-appconfig-meta-recursive"] + }, + { + "description": "fs:allow-appconfig-read -> This allows non-recursive read access to the `$APPCONFIG` folder.", + "type": "string", + "enum": ["fs:allow-appconfig-read"] + }, + { + "description": "fs:allow-appconfig-read-recursive -> This allows full recursive read access to the complete `$APPCONFIG` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-appconfig-read-recursive"] + }, + { + "description": "fs:allow-appconfig-write -> This allows non-recursive write access to the `$APPCONFIG` folder.", + "type": "string", + "enum": ["fs:allow-appconfig-write"] + }, + { + "description": "fs:allow-appconfig-write-recursive -> This allows full recursive write access to the complete `$APPCONFIG` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-appconfig-write-recursive"] + }, + { + "description": "fs:allow-appdata-meta -> This allows non-recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-appdata-meta"] + }, + { + "description": "fs:allow-appdata-meta-recursive -> This allows full recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-appdata-meta-recursive"] + }, + { + "description": "fs:allow-appdata-read -> This allows non-recursive read access to the `$APPDATA` folder.", + "type": "string", + "enum": ["fs:allow-appdata-read"] + }, + { + "description": "fs:allow-appdata-read-recursive -> This allows full recursive read access to the complete `$APPDATA` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-appdata-read-recursive"] + }, + { + "description": "fs:allow-appdata-write -> This allows non-recursive write access to the `$APPDATA` folder.", + "type": "string", + "enum": ["fs:allow-appdata-write"] + }, + { + "description": "fs:allow-appdata-write-recursive -> This allows full recursive write access to the complete `$APPDATA` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-appdata-write-recursive"] + }, + { + "description": "fs:allow-applocaldata-meta -> This allows non-recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-applocaldata-meta"] + }, + { + "description": "fs:allow-applocaldata-meta-recursive -> This allows full recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-applocaldata-meta-recursive"] + }, + { + "description": "fs:allow-applocaldata-read -> This allows non-recursive read access to the `$APPLOCALDATA` folder.", + "type": "string", + "enum": ["fs:allow-applocaldata-read"] + }, + { + "description": "fs:allow-applocaldata-read-recursive -> This allows full recursive read access to the complete `$APPLOCALDATA` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-applocaldata-read-recursive"] + }, + { + "description": "fs:allow-applocaldata-write -> This allows non-recursive write access to the `$APPLOCALDATA` folder.", + "type": "string", + "enum": ["fs:allow-applocaldata-write"] + }, + { + "description": "fs:allow-applocaldata-write-recursive -> This allows full recursive write access to the complete `$APPLOCALDATA` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-applocaldata-write-recursive"] + }, + { + "description": "fs:allow-applog-meta -> This allows non-recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-applog-meta"] + }, + { + "description": "fs:allow-applog-meta-recursive -> This allows full recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-applog-meta-recursive"] + }, + { + "description": "fs:allow-applog-read -> This allows non-recursive read access to the `$APPLOG` folder.", + "type": "string", + "enum": ["fs:allow-applog-read"] + }, + { + "description": "fs:allow-applog-read-recursive -> This allows full recursive read access to the complete `$APPLOG` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-applog-read-recursive"] + }, + { + "description": "fs:allow-applog-write -> This allows non-recursive write access to the `$APPLOG` folder.", + "type": "string", + "enum": ["fs:allow-applog-write"] + }, + { + "description": "fs:allow-applog-write-recursive -> This allows full recursive write access to the complete `$APPLOG` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-applog-write-recursive"] + }, + { + "description": "fs:allow-audio-meta -> This allows non-recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-audio-meta"] + }, + { + "description": "fs:allow-audio-meta-recursive -> This allows full recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-audio-meta-recursive"] + }, + { + "description": "fs:allow-audio-read -> This allows non-recursive read access to the `$AUDIO` folder.", + "type": "string", + "enum": ["fs:allow-audio-read"] + }, + { + "description": "fs:allow-audio-read-recursive -> This allows full recursive read access to the complete `$AUDIO` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-audio-read-recursive"] + }, + { + "description": "fs:allow-audio-write -> This allows non-recursive write access to the `$AUDIO` folder.", + "type": "string", + "enum": ["fs:allow-audio-write"] + }, + { + "description": "fs:allow-audio-write-recursive -> This allows full recursive write access to the complete `$AUDIO` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-audio-write-recursive"] + }, + { + "description": "fs:allow-cache-meta -> This allows non-recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-cache-meta"] + }, + { + "description": "fs:allow-cache-meta-recursive -> This allows full recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-cache-meta-recursive"] + }, + { + "description": "fs:allow-cache-read -> This allows non-recursive read access to the `$CACHE` folder.", + "type": "string", + "enum": ["fs:allow-cache-read"] + }, + { + "description": "fs:allow-cache-read-recursive -> This allows full recursive read access to the complete `$CACHE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-cache-read-recursive"] + }, + { + "description": "fs:allow-cache-write -> This allows non-recursive write access to the `$CACHE` folder.", + "type": "string", + "enum": ["fs:allow-cache-write"] + }, + { + "description": "fs:allow-cache-write-recursive -> This allows full recursive write access to the complete `$CACHE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-cache-write-recursive"] + }, + { + "description": "fs:allow-config-meta -> This allows non-recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-config-meta"] + }, + { + "description": "fs:allow-config-meta-recursive -> This allows full recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-config-meta-recursive"] + }, + { + "description": "fs:allow-config-read -> This allows non-recursive read access to the `$CONFIG` folder.", + "type": "string", + "enum": ["fs:allow-config-read"] + }, + { + "description": "fs:allow-config-read-recursive -> This allows full recursive read access to the complete `$CONFIG` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-config-read-recursive"] + }, + { + "description": "fs:allow-config-write -> This allows non-recursive write access to the `$CONFIG` folder.", + "type": "string", + "enum": ["fs:allow-config-write"] + }, + { + "description": "fs:allow-config-write-recursive -> This allows full recursive write access to the complete `$CONFIG` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-config-write-recursive"] + }, + { + "description": "fs:allow-data-meta -> This allows non-recursive read access to metadata of the `$DATA` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-data-meta"] + }, + { + "description": "fs:allow-data-meta-recursive -> This allows full recursive read access to metadata of the `$DATA` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-data-meta-recursive"] + }, + { + "description": "fs:allow-data-read -> This allows non-recursive read access to the `$DATA` folder.", + "type": "string", + "enum": ["fs:allow-data-read"] + }, + { + "description": "fs:allow-data-read-recursive -> This allows full recursive read access to the complete `$DATA` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-data-read-recursive"] + }, + { + "description": "fs:allow-data-write -> This allows non-recursive write access to the `$DATA` folder.", + "type": "string", + "enum": ["fs:allow-data-write"] + }, + { + "description": "fs:allow-data-write-recursive -> This allows full recursive write access to the complete `$DATA` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-data-write-recursive"] + }, + { + "description": "fs:allow-desktop-meta -> This allows non-recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-desktop-meta"] + }, + { + "description": "fs:allow-desktop-meta-recursive -> This allows full recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-desktop-meta-recursive"] + }, + { + "description": "fs:allow-desktop-read -> This allows non-recursive read access to the `$DESKTOP` folder.", + "type": "string", + "enum": ["fs:allow-desktop-read"] + }, + { + "description": "fs:allow-desktop-read-recursive -> This allows full recursive read access to the complete `$DESKTOP` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-desktop-read-recursive"] + }, + { + "description": "fs:allow-desktop-write -> This allows non-recursive write access to the `$DESKTOP` folder.", + "type": "string", + "enum": ["fs:allow-desktop-write"] + }, + { + "description": "fs:allow-desktop-write-recursive -> This allows full recursive write access to the complete `$DESKTOP` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-desktop-write-recursive"] + }, + { + "description": "fs:allow-document-meta -> This allows non-recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-document-meta"] + }, + { + "description": "fs:allow-document-meta-recursive -> This allows full recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-document-meta-recursive"] + }, + { + "description": "fs:allow-document-read -> This allows non-recursive read access to the `$DOCUMENT` folder.", + "type": "string", + "enum": ["fs:allow-document-read"] + }, + { + "description": "fs:allow-document-read-recursive -> This allows full recursive read access to the complete `$DOCUMENT` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-document-read-recursive"] + }, + { + "description": "fs:allow-document-write -> This allows non-recursive write access to the `$DOCUMENT` folder.", + "type": "string", + "enum": ["fs:allow-document-write"] + }, + { + "description": "fs:allow-document-write-recursive -> This allows full recursive write access to the complete `$DOCUMENT` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-document-write-recursive"] + }, + { + "description": "fs:allow-download-meta -> This allows non-recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-download-meta"] + }, + { + "description": "fs:allow-download-meta-recursive -> This allows full recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-download-meta-recursive"] + }, + { + "description": "fs:allow-download-read -> This allows non-recursive read access to the `$DOWNLOAD` folder.", + "type": "string", + "enum": ["fs:allow-download-read"] + }, + { + "description": "fs:allow-download-read-recursive -> This allows full recursive read access to the complete `$DOWNLOAD` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-download-read-recursive"] + }, + { + "description": "fs:allow-download-write -> This allows non-recursive write access to the `$DOWNLOAD` folder.", + "type": "string", + "enum": ["fs:allow-download-write"] + }, + { + "description": "fs:allow-download-write-recursive -> This allows full recursive write access to the complete `$DOWNLOAD` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-download-write-recursive"] + }, + { + "description": "fs:allow-exe-meta -> This allows non-recursive read access to metadata of the `$EXE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-exe-meta"] + }, + { + "description": "fs:allow-exe-meta-recursive -> This allows full recursive read access to metadata of the `$EXE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-exe-meta-recursive"] + }, + { + "description": "fs:allow-exe-read -> This allows non-recursive read access to the `$EXE` folder.", + "type": "string", + "enum": ["fs:allow-exe-read"] + }, + { + "description": "fs:allow-exe-read-recursive -> This allows full recursive read access to the complete `$EXE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-exe-read-recursive"] + }, + { + "description": "fs:allow-exe-write -> This allows non-recursive write access to the `$EXE` folder.", + "type": "string", + "enum": ["fs:allow-exe-write"] + }, + { + "description": "fs:allow-exe-write-recursive -> This allows full recursive write access to the complete `$EXE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-exe-write-recursive"] + }, + { + "description": "fs:allow-font-meta -> This allows non-recursive read access to metadata of the `$FONT` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-font-meta"] + }, + { + "description": "fs:allow-font-meta-recursive -> This allows full recursive read access to metadata of the `$FONT` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-font-meta-recursive"] + }, + { + "description": "fs:allow-font-read -> This allows non-recursive read access to the `$FONT` folder.", + "type": "string", + "enum": ["fs:allow-font-read"] + }, + { + "description": "fs:allow-font-read-recursive -> This allows full recursive read access to the complete `$FONT` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-font-read-recursive"] + }, + { + "description": "fs:allow-font-write -> This allows non-recursive write access to the `$FONT` folder.", + "type": "string", + "enum": ["fs:allow-font-write"] + }, + { + "description": "fs:allow-font-write-recursive -> This allows full recursive write access to the complete `$FONT` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-font-write-recursive"] + }, + { + "description": "fs:allow-home-meta -> This allows non-recursive read access to metadata of the `$HOME` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-home-meta"] + }, + { + "description": "fs:allow-home-meta-recursive -> This allows full recursive read access to metadata of the `$HOME` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-home-meta-recursive"] + }, + { + "description": "fs:allow-home-read -> This allows non-recursive read access to the `$HOME` folder.", + "type": "string", + "enum": ["fs:allow-home-read"] + }, + { + "description": "fs:allow-home-read-recursive -> This allows full recursive read access to the complete `$HOME` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-home-read-recursive"] + }, + { + "description": "fs:allow-home-write -> This allows non-recursive write access to the `$HOME` folder.", + "type": "string", + "enum": ["fs:allow-home-write"] + }, + { + "description": "fs:allow-home-write-recursive -> This allows full recursive write access to the complete `$HOME` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-home-write-recursive"] + }, + { + "description": "fs:allow-localdata-meta -> This allows non-recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-localdata-meta"] + }, + { + "description": "fs:allow-localdata-meta-recursive -> This allows full recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-localdata-meta-recursive"] + }, + { + "description": "fs:allow-localdata-read -> This allows non-recursive read access to the `$LOCALDATA` folder.", + "type": "string", + "enum": ["fs:allow-localdata-read"] + }, + { + "description": "fs:allow-localdata-read-recursive -> This allows full recursive read access to the complete `$LOCALDATA` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-localdata-read-recursive"] + }, + { + "description": "fs:allow-localdata-write -> This allows non-recursive write access to the `$LOCALDATA` folder.", + "type": "string", + "enum": ["fs:allow-localdata-write"] + }, + { + "description": "fs:allow-localdata-write-recursive -> This allows full recursive write access to the complete `$LOCALDATA` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-localdata-write-recursive"] + }, + { + "description": "fs:allow-log-meta -> This allows non-recursive read access to metadata of the `$LOG` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-log-meta"] + }, + { + "description": "fs:allow-log-meta-recursive -> This allows full recursive read access to metadata of the `$LOG` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-log-meta-recursive"] + }, + { + "description": "fs:allow-log-read -> This allows non-recursive read access to the `$LOG` folder.", + "type": "string", + "enum": ["fs:allow-log-read"] + }, + { + "description": "fs:allow-log-read-recursive -> This allows full recursive read access to the complete `$LOG` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-log-read-recursive"] + }, + { + "description": "fs:allow-log-write -> This allows non-recursive write access to the `$LOG` folder.", + "type": "string", + "enum": ["fs:allow-log-write"] + }, + { + "description": "fs:allow-log-write-recursive -> This allows full recursive write access to the complete `$LOG` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-log-write-recursive"] + }, + { + "description": "fs:allow-picture-meta -> This allows non-recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-picture-meta"] + }, + { + "description": "fs:allow-picture-meta-recursive -> This allows full recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-picture-meta-recursive"] + }, + { + "description": "fs:allow-picture-read -> This allows non-recursive read access to the `$PICTURE` folder.", + "type": "string", + "enum": ["fs:allow-picture-read"] + }, + { + "description": "fs:allow-picture-read-recursive -> This allows full recursive read access to the complete `$PICTURE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-picture-read-recursive"] + }, + { + "description": "fs:allow-picture-write -> This allows non-recursive write access to the `$PICTURE` folder.", + "type": "string", + "enum": ["fs:allow-picture-write"] + }, + { + "description": "fs:allow-picture-write-recursive -> This allows full recursive write access to the complete `$PICTURE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-picture-write-recursive"] + }, + { + "description": "fs:allow-public-meta -> This allows non-recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-public-meta"] + }, + { + "description": "fs:allow-public-meta-recursive -> This allows full recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-public-meta-recursive"] + }, + { + "description": "fs:allow-public-read -> This allows non-recursive read access to the `$PUBLIC` folder.", + "type": "string", + "enum": ["fs:allow-public-read"] + }, + { + "description": "fs:allow-public-read-recursive -> This allows full recursive read access to the complete `$PUBLIC` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-public-read-recursive"] + }, + { + "description": "fs:allow-public-write -> This allows non-recursive write access to the `$PUBLIC` folder.", + "type": "string", + "enum": ["fs:allow-public-write"] + }, + { + "description": "fs:allow-public-write-recursive -> This allows full recursive write access to the complete `$PUBLIC` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-public-write-recursive"] + }, + { + "description": "fs:allow-resource-meta -> This allows non-recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-resource-meta"] + }, + { + "description": "fs:allow-resource-meta-recursive -> This allows full recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-resource-meta-recursive"] + }, + { + "description": "fs:allow-resource-read -> This allows non-recursive read access to the `$RESOURCE` folder.", + "type": "string", + "enum": ["fs:allow-resource-read"] + }, + { + "description": "fs:allow-resource-read-recursive -> This allows full recursive read access to the complete `$RESOURCE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-resource-read-recursive"] + }, + { + "description": "fs:allow-resource-write -> This allows non-recursive write access to the `$RESOURCE` folder.", + "type": "string", + "enum": ["fs:allow-resource-write"] + }, + { + "description": "fs:allow-resource-write-recursive -> This allows full recursive write access to the complete `$RESOURCE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-resource-write-recursive"] + }, + { + "description": "fs:allow-runtime-meta -> This allows non-recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-runtime-meta"] + }, + { + "description": "fs:allow-runtime-meta-recursive -> This allows full recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-runtime-meta-recursive"] + }, + { + "description": "fs:allow-runtime-read -> This allows non-recursive read access to the `$RUNTIME` folder.", + "type": "string", + "enum": ["fs:allow-runtime-read"] + }, + { + "description": "fs:allow-runtime-read-recursive -> This allows full recursive read access to the complete `$RUNTIME` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-runtime-read-recursive"] + }, + { + "description": "fs:allow-runtime-write -> This allows non-recursive write access to the `$RUNTIME` folder.", + "type": "string", + "enum": ["fs:allow-runtime-write"] + }, + { + "description": "fs:allow-runtime-write-recursive -> This allows full recursive write access to the complete `$RUNTIME` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-runtime-write-recursive"] + }, + { + "description": "fs:allow-temp-meta -> This allows non-recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-temp-meta"] + }, + { + "description": "fs:allow-temp-meta-recursive -> This allows full recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-temp-meta-recursive"] + }, + { + "description": "fs:allow-temp-read -> This allows non-recursive read access to the `$TEMP` folder.", + "type": "string", + "enum": ["fs:allow-temp-read"] + }, + { + "description": "fs:allow-temp-read-recursive -> This allows full recursive read access to the complete `$TEMP` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-temp-read-recursive"] + }, + { + "description": "fs:allow-temp-write -> This allows non-recursive write access to the `$TEMP` folder.", + "type": "string", + "enum": ["fs:allow-temp-write"] + }, + { + "description": "fs:allow-temp-write-recursive -> This allows full recursive write access to the complete `$TEMP` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-temp-write-recursive"] + }, + { + "description": "fs:allow-template-meta -> This allows non-recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-template-meta"] + }, + { + "description": "fs:allow-template-meta-recursive -> This allows full recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-template-meta-recursive"] + }, + { + "description": "fs:allow-template-read -> This allows non-recursive read access to the `$TEMPLATE` folder.", + "type": "string", + "enum": ["fs:allow-template-read"] + }, + { + "description": "fs:allow-template-read-recursive -> This allows full recursive read access to the complete `$TEMPLATE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-template-read-recursive"] + }, + { + "description": "fs:allow-template-write -> This allows non-recursive write access to the `$TEMPLATE` folder.", + "type": "string", + "enum": ["fs:allow-template-write"] + }, + { + "description": "fs:allow-template-write-recursive -> This allows full recursive write access to the complete `$TEMPLATE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-template-write-recursive"] + }, + { + "description": "fs:allow-video-meta -> This allows non-recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-video-meta"] + }, + { + "description": "fs:allow-video-meta-recursive -> This allows full recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-video-meta-recursive"] + }, + { + "description": "fs:allow-video-read -> This allows non-recursive read access to the `$VIDEO` folder.", + "type": "string", + "enum": ["fs:allow-video-read"] + }, + { + "description": "fs:allow-video-read-recursive -> This allows full recursive read access to the complete `$VIDEO` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-video-read-recursive"] + }, + { + "description": "fs:allow-video-write -> This allows non-recursive write access to the `$VIDEO` folder.", + "type": "string", + "enum": ["fs:allow-video-write"] + }, + { + "description": "fs:allow-video-write-recursive -> This allows full recursive write access to the complete `$VIDEO` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-video-write-recursive"] + }, + { + "description": "fs:deny-default -> This denies access to dangerous Tauri relevant files and folders by default.", + "type": "string", + "enum": ["fs:deny-default"] + }, + { + "description": "fs:allow-copy-file -> Enables the copy_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-copy-file"] + }, + { + "description": "fs:allow-create -> Enables the create command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-create"] + }, + { + "description": "fs:allow-exists -> Enables the exists command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-exists"] + }, + { + "description": "fs:allow-fstat -> Enables the fstat command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-fstat"] + }, + { + "description": "fs:allow-ftruncate -> Enables the ftruncate command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-ftruncate"] + }, + { + "description": "fs:allow-lstat -> Enables the lstat command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-lstat"] + }, + { + "description": "fs:allow-mkdir -> Enables the mkdir command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-mkdir"] + }, + { + "description": "fs:allow-open -> Enables the open command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-open"] + }, + { + "description": "fs:allow-read -> Enables the read command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-read"] + }, + { + "description": "fs:allow-read-dir -> Enables the read_dir command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-read-dir"] + }, + { + "description": "fs:allow-read-file -> Enables the read_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-read-file"] + }, + { + "description": "fs:allow-read-text-file -> Enables the read_text_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-read-text-file"] + }, + { + "description": "fs:allow-read-text-file-lines -> Enables the read_text_file_lines command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-read-text-file-lines"] + }, + { + "description": "fs:allow-read-text-file-lines-next -> Enables the read_text_file_lines_next command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-read-text-file-lines-next"] + }, + { + "description": "fs:allow-remove -> Enables the remove command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-remove"] + }, + { + "description": "fs:allow-rename -> Enables the rename command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-rename"] + }, + { + "description": "fs:allow-seek -> Enables the seek command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-seek"] + }, + { + "description": "fs:allow-stat -> Enables the stat command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-stat"] + }, + { + "description": "fs:allow-truncate -> Enables the truncate command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-truncate"] + }, + { + "description": "fs:allow-unwatch -> Enables the unwatch command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-unwatch"] + }, + { + "description": "fs:allow-watch -> Enables the watch command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-watch"] + }, + { + "description": "fs:allow-write -> Enables the write command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-write"] + }, + { + "description": "fs:allow-write-file -> Enables the write_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-write-file"] + }, + { + "description": "fs:allow-write-text-file -> Enables the write_text_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-write-text-file"] + }, + { + "description": "fs:create-app-specific-dirs -> This permissions allows to create the application specific directories.\n", + "type": "string", + "enum": ["fs:create-app-specific-dirs"] + }, + { + "description": "fs:deny-copy-file -> Denies the copy_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-copy-file"] + }, + { + "description": "fs:deny-create -> Denies the create command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-create"] + }, + { + "description": "fs:deny-exists -> Denies the exists command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-exists"] + }, + { + "description": "fs:deny-fstat -> Denies the fstat command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-fstat"] + }, + { + "description": "fs:deny-ftruncate -> Denies the ftruncate command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-ftruncate"] + }, + { + "description": "fs:deny-lstat -> Denies the lstat command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-lstat"] + }, + { + "description": "fs:deny-mkdir -> Denies the mkdir command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-mkdir"] + }, + { + "description": "fs:deny-open -> Denies the open command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-open"] + }, + { + "description": "fs:deny-read -> Denies the read command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-read"] + }, + { + "description": "fs:deny-read-dir -> Denies the read_dir command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-read-dir"] + }, + { + "description": "fs:deny-read-file -> Denies the read_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-read-file"] + }, + { + "description": "fs:deny-read-text-file -> Denies the read_text_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-read-text-file"] + }, + { + "description": "fs:deny-read-text-file-lines -> Denies the read_text_file_lines command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-read-text-file-lines"] + }, + { + "description": "fs:deny-read-text-file-lines-next -> Denies the read_text_file_lines_next command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-read-text-file-lines-next"] + }, + { + "description": "fs:deny-remove -> Denies the remove command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-remove"] + }, + { + "description": "fs:deny-rename -> Denies the rename command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-rename"] + }, + { + "description": "fs:deny-seek -> Denies the seek command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-seek"] + }, + { + "description": "fs:deny-stat -> Denies the stat command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-stat"] + }, + { + "description": "fs:deny-truncate -> Denies the truncate command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-truncate"] + }, + { + "description": "fs:deny-unwatch -> Denies the unwatch command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-unwatch"] + }, + { + "description": "fs:deny-watch -> Denies the watch command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-watch"] + }, + { + "description": "fs:deny-webview-data-linux -> This denies read access to the\n`$APPLOCALDATA` folder on linux as the webview data and configuration values are stored here.\nAllowing access can lead to sensitive information disclosure and should be well considered.", + "type": "string", + "enum": ["fs:deny-webview-data-linux"] + }, + { + "description": "fs:deny-webview-data-windows -> This denies read access to the\n`$APPLOCALDATA/EBWebView` folder on windows as the webview data and configuration values are stored here.\nAllowing access can lead to sensitive information disclosure and should be well considered.", + "type": "string", + "enum": ["fs:deny-webview-data-windows"] + }, + { + "description": "fs:deny-write -> Denies the write command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-write"] + }, + { + "description": "fs:deny-write-file -> Denies the write_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-write-file"] + }, + { + "description": "fs:deny-write-text-file -> Denies the write_text_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-write-text-file"] + }, + { + "description": "fs:read-all -> This enables all read related commands without any pre-configured accessible paths.", + "type": "string", + "enum": ["fs:read-all"] + }, + { + "description": "fs:read-app-specific-dirs-recursive -> This permission allows recursive read functionality on the application\nspecific base directories. \n", + "type": "string", + "enum": ["fs:read-app-specific-dirs-recursive"] + }, + { + "description": "fs:read-dirs -> This enables directory read and file metadata related commands without any pre-configured accessible paths.", + "type": "string", + "enum": ["fs:read-dirs"] + }, + { + "description": "fs:read-files -> This enables file read related commands without any pre-configured accessible paths.", + "type": "string", + "enum": ["fs:read-files"] + }, + { + "description": "fs:read-meta -> This enables all index or metadata related commands without any pre-configured accessible paths.", + "type": "string", + "enum": ["fs:read-meta"] + }, + { + "description": "fs:scope -> An empty permission you can use to modify the global scope.", + "type": "string", + "enum": ["fs:scope"] + }, + { + "description": "fs:scope-app -> This scope permits access to all files and list content of top level directories in the `$APP`folder.", + "type": "string", + "enum": ["fs:scope-app"] + }, + { + "description": "fs:scope-app-index -> This scope permits to list all files and folders in the `$APP`folder.", + "type": "string", + "enum": ["fs:scope-app-index"] + }, + { + "description": "fs:scope-app-recursive -> This scope permits recursive access to the complete `$APP` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-app-recursive"] + }, + { + "description": "fs:scope-appcache -> This scope permits access to all files and list content of top level directories in the `$APPCACHE`folder.", + "type": "string", + "enum": ["fs:scope-appcache"] + }, + { + "description": "fs:scope-appcache-index -> This scope permits to list all files and folders in the `$APPCACHE`folder.", + "type": "string", + "enum": ["fs:scope-appcache-index"] + }, + { + "description": "fs:scope-appcache-recursive -> This scope permits recursive access to the complete `$APPCACHE` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-appcache-recursive"] + }, + { + "description": "fs:scope-appconfig -> This scope permits access to all files and list content of top level directories in the `$APPCONFIG`folder.", + "type": "string", + "enum": ["fs:scope-appconfig"] + }, + { + "description": "fs:scope-appconfig-index -> This scope permits to list all files and folders in the `$APPCONFIG`folder.", + "type": "string", + "enum": ["fs:scope-appconfig-index"] + }, + { + "description": "fs:scope-appconfig-recursive -> This scope permits recursive access to the complete `$APPCONFIG` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-appconfig-recursive"] + }, + { + "description": "fs:scope-appdata -> This scope permits access to all files and list content of top level directories in the `$APPDATA`folder.", + "type": "string", + "enum": ["fs:scope-appdata"] + }, + { + "description": "fs:scope-appdata-index -> This scope permits to list all files and folders in the `$APPDATA`folder.", + "type": "string", + "enum": ["fs:scope-appdata-index"] + }, + { + "description": "fs:scope-appdata-recursive -> This scope permits recursive access to the complete `$APPDATA` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-appdata-recursive"] + }, + { + "description": "fs:scope-applocaldata -> This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA`folder.", + "type": "string", + "enum": ["fs:scope-applocaldata"] + }, + { + "description": "fs:scope-applocaldata-index -> This scope permits to list all files and folders in the `$APPLOCALDATA`folder.", + "type": "string", + "enum": ["fs:scope-applocaldata-index"] + }, + { + "description": "fs:scope-applocaldata-recursive -> This scope permits recursive access to the complete `$APPLOCALDATA` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-applocaldata-recursive"] + }, + { + "description": "fs:scope-applog -> This scope permits access to all files and list content of top level directories in the `$APPLOG`folder.", + "type": "string", + "enum": ["fs:scope-applog"] + }, + { + "description": "fs:scope-applog-index -> This scope permits to list all files and folders in the `$APPLOG`folder.", + "type": "string", + "enum": ["fs:scope-applog-index"] + }, + { + "description": "fs:scope-applog-recursive -> This scope permits recursive access to the complete `$APPLOG` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-applog-recursive"] + }, + { + "description": "fs:scope-audio -> This scope permits access to all files and list content of top level directories in the `$AUDIO`folder.", + "type": "string", + "enum": ["fs:scope-audio"] + }, + { + "description": "fs:scope-audio-index -> This scope permits to list all files and folders in the `$AUDIO`folder.", + "type": "string", + "enum": ["fs:scope-audio-index"] + }, + { + "description": "fs:scope-audio-recursive -> This scope permits recursive access to the complete `$AUDIO` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-audio-recursive"] + }, + { + "description": "fs:scope-cache -> This scope permits access to all files and list content of top level directories in the `$CACHE`folder.", + "type": "string", + "enum": ["fs:scope-cache"] + }, + { + "description": "fs:scope-cache-index -> This scope permits to list all files and folders in the `$CACHE`folder.", + "type": "string", + "enum": ["fs:scope-cache-index"] + }, + { + "description": "fs:scope-cache-recursive -> This scope permits recursive access to the complete `$CACHE` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-cache-recursive"] + }, + { + "description": "fs:scope-config -> This scope permits access to all files and list content of top level directories in the `$CONFIG`folder.", + "type": "string", + "enum": ["fs:scope-config"] + }, + { + "description": "fs:scope-config-index -> This scope permits to list all files and folders in the `$CONFIG`folder.", + "type": "string", + "enum": ["fs:scope-config-index"] + }, + { + "description": "fs:scope-config-recursive -> This scope permits recursive access to the complete `$CONFIG` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-config-recursive"] + }, + { + "description": "fs:scope-data -> This scope permits access to all files and list content of top level directories in the `$DATA`folder.", + "type": "string", + "enum": ["fs:scope-data"] + }, + { + "description": "fs:scope-data-index -> This scope permits to list all files and folders in the `$DATA`folder.", + "type": "string", + "enum": ["fs:scope-data-index"] + }, + { + "description": "fs:scope-data-recursive -> This scope permits recursive access to the complete `$DATA` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-data-recursive"] + }, + { + "description": "fs:scope-desktop -> This scope permits access to all files and list content of top level directories in the `$DESKTOP`folder.", + "type": "string", + "enum": ["fs:scope-desktop"] + }, + { + "description": "fs:scope-desktop-index -> This scope permits to list all files and folders in the `$DESKTOP`folder.", + "type": "string", + "enum": ["fs:scope-desktop-index"] + }, + { + "description": "fs:scope-desktop-recursive -> This scope permits recursive access to the complete `$DESKTOP` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-desktop-recursive"] + }, + { + "description": "fs:scope-document -> This scope permits access to all files and list content of top level directories in the `$DOCUMENT`folder.", + "type": "string", + "enum": ["fs:scope-document"] + }, + { + "description": "fs:scope-document-index -> This scope permits to list all files and folders in the `$DOCUMENT`folder.", + "type": "string", + "enum": ["fs:scope-document-index"] + }, + { + "description": "fs:scope-document-recursive -> This scope permits recursive access to the complete `$DOCUMENT` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-document-recursive"] + }, + { + "description": "fs:scope-download -> This scope permits access to all files and list content of top level directories in the `$DOWNLOAD`folder.", + "type": "string", + "enum": ["fs:scope-download"] + }, + { + "description": "fs:scope-download-index -> This scope permits to list all files and folders in the `$DOWNLOAD`folder.", + "type": "string", + "enum": ["fs:scope-download-index"] + }, + { + "description": "fs:scope-download-recursive -> This scope permits recursive access to the complete `$DOWNLOAD` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-download-recursive"] + }, + { + "description": "fs:scope-exe -> This scope permits access to all files and list content of top level directories in the `$EXE`folder.", + "type": "string", + "enum": ["fs:scope-exe"] + }, + { + "description": "fs:scope-exe-index -> This scope permits to list all files and folders in the `$EXE`folder.", + "type": "string", + "enum": ["fs:scope-exe-index"] + }, + { + "description": "fs:scope-exe-recursive -> This scope permits recursive access to the complete `$EXE` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-exe-recursive"] + }, + { + "description": "fs:scope-font -> This scope permits access to all files and list content of top level directories in the `$FONT`folder.", + "type": "string", + "enum": ["fs:scope-font"] + }, + { + "description": "fs:scope-font-index -> This scope permits to list all files and folders in the `$FONT`folder.", + "type": "string", + "enum": ["fs:scope-font-index"] + }, + { + "description": "fs:scope-font-recursive -> This scope permits recursive access to the complete `$FONT` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-font-recursive"] + }, + { + "description": "fs:scope-home -> This scope permits access to all files and list content of top level directories in the `$HOME`folder.", + "type": "string", + "enum": ["fs:scope-home"] + }, + { + "description": "fs:scope-home-index -> This scope permits to list all files and folders in the `$HOME`folder.", + "type": "string", + "enum": ["fs:scope-home-index"] + }, + { + "description": "fs:scope-home-recursive -> This scope permits recursive access to the complete `$HOME` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-home-recursive"] + }, + { + "description": "fs:scope-localdata -> This scope permits access to all files and list content of top level directories in the `$LOCALDATA`folder.", + "type": "string", + "enum": ["fs:scope-localdata"] + }, + { + "description": "fs:scope-localdata-index -> This scope permits to list all files and folders in the `$LOCALDATA`folder.", + "type": "string", + "enum": ["fs:scope-localdata-index"] + }, + { + "description": "fs:scope-localdata-recursive -> This scope permits recursive access to the complete `$LOCALDATA` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-localdata-recursive"] + }, + { + "description": "fs:scope-log -> This scope permits access to all files and list content of top level directories in the `$LOG`folder.", + "type": "string", + "enum": ["fs:scope-log"] + }, + { + "description": "fs:scope-log-index -> This scope permits to list all files and folders in the `$LOG`folder.", + "type": "string", + "enum": ["fs:scope-log-index"] + }, + { + "description": "fs:scope-log-recursive -> This scope permits recursive access to the complete `$LOG` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-log-recursive"] + }, + { + "description": "fs:scope-picture -> This scope permits access to all files and list content of top level directories in the `$PICTURE`folder.", + "type": "string", + "enum": ["fs:scope-picture"] + }, + { + "description": "fs:scope-picture-index -> This scope permits to list all files and folders in the `$PICTURE`folder.", + "type": "string", + "enum": ["fs:scope-picture-index"] + }, + { + "description": "fs:scope-picture-recursive -> This scope permits recursive access to the complete `$PICTURE` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-picture-recursive"] + }, + { + "description": "fs:scope-public -> This scope permits access to all files and list content of top level directories in the `$PUBLIC`folder.", + "type": "string", + "enum": ["fs:scope-public"] + }, + { + "description": "fs:scope-public-index -> This scope permits to list all files and folders in the `$PUBLIC`folder.", + "type": "string", + "enum": ["fs:scope-public-index"] + }, + { + "description": "fs:scope-public-recursive -> This scope permits recursive access to the complete `$PUBLIC` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-public-recursive"] + }, + { + "description": "fs:scope-resource -> This scope permits access to all files and list content of top level directories in the `$RESOURCE`folder.", + "type": "string", + "enum": ["fs:scope-resource"] + }, + { + "description": "fs:scope-resource-index -> This scope permits to list all files and folders in the `$RESOURCE`folder.", + "type": "string", + "enum": ["fs:scope-resource-index"] + }, + { + "description": "fs:scope-resource-recursive -> This scope permits recursive access to the complete `$RESOURCE` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-resource-recursive"] + }, + { + "description": "fs:scope-runtime -> This scope permits access to all files and list content of top level directories in the `$RUNTIME`folder.", + "type": "string", + "enum": ["fs:scope-runtime"] + }, + { + "description": "fs:scope-runtime-index -> This scope permits to list all files and folders in the `$RUNTIME`folder.", + "type": "string", + "enum": ["fs:scope-runtime-index"] + }, + { + "description": "fs:scope-runtime-recursive -> This scope permits recursive access to the complete `$RUNTIME` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-runtime-recursive"] + }, + { + "description": "fs:scope-temp -> This scope permits access to all files and list content of top level directories in the `$TEMP`folder.", + "type": "string", + "enum": ["fs:scope-temp"] + }, + { + "description": "fs:scope-temp-index -> This scope permits to list all files and folders in the `$TEMP`folder.", + "type": "string", + "enum": ["fs:scope-temp-index"] + }, + { + "description": "fs:scope-temp-recursive -> This scope permits recursive access to the complete `$TEMP` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-temp-recursive"] + }, + { + "description": "fs:scope-template -> This scope permits access to all files and list content of top level directories in the `$TEMPLATE`folder.", + "type": "string", + "enum": ["fs:scope-template"] + }, + { + "description": "fs:scope-template-index -> This scope permits to list all files and folders in the `$TEMPLATE`folder.", + "type": "string", + "enum": ["fs:scope-template-index"] + }, + { + "description": "fs:scope-template-recursive -> This scope permits recursive access to the complete `$TEMPLATE` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-template-recursive"] + }, + { + "description": "fs:scope-video -> This scope permits access to all files and list content of top level directories in the `$VIDEO`folder.", + "type": "string", + "enum": ["fs:scope-video"] + }, + { + "description": "fs:scope-video-index -> This scope permits to list all files and folders in the `$VIDEO`folder.", + "type": "string", + "enum": ["fs:scope-video-index"] + }, + { + "description": "fs:scope-video-recursive -> This scope permits recursive access to the complete `$VIDEO` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-video-recursive"] + }, + { + "description": "fs:write-all -> This enables all write related commands without any pre-configured accessible paths.", + "type": "string", + "enum": ["fs:write-all"] + }, + { + "description": "fs:write-files -> This enables all file write related commands without any pre-configured accessible paths.", + "type": "string", + "enum": ["fs:write-files"] + } + ] + }, + "allow": { + "items": { + "title": "FsScopeEntry", + "description": "FS scope entry.", + "anyOf": [ + { + "description": "FS scope path.", + "type": "string" + }, + { + "type": "object", + "required": ["path"], + "properties": { + "path": { + "description": "FS scope path.", + "type": "string" + } + } + } + ] + } + }, + "deny": { + "items": { + "title": "FsScopeEntry", + "description": "FS scope entry.", + "anyOf": [ + { + "description": "FS scope path.", + "type": "string" + }, + { + "type": "object", + "required": ["path"], + "properties": { + "path": { + "description": "FS scope path.", + "type": "string" + } + } + } + ] + } + } + } + }, + { + "type": "object", + "required": ["identifier"], + "properties": { + "identifier": { + "oneOf": [ + { + "description": "shell:default -> This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality without any specific\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n", + "type": "string", + "enum": ["shell:default"] + }, + { + "description": "shell:allow-execute -> Enables the execute command without any pre-configured scope.", + "type": "string", + "enum": ["shell:allow-execute"] + }, + { + "description": "shell:allow-kill -> Enables the kill command without any pre-configured scope.", + "type": "string", + "enum": ["shell:allow-kill"] + }, + { + "description": "shell:allow-open -> Enables the open command without any pre-configured scope.", + "type": "string", + "enum": ["shell:allow-open"] + }, + { + "description": "shell:allow-spawn -> Enables the spawn command without any pre-configured scope.", + "type": "string", + "enum": ["shell:allow-spawn"] + }, + { + "description": "shell:allow-stdin-write -> Enables the stdin_write command without any pre-configured scope.", + "type": "string", + "enum": ["shell:allow-stdin-write"] + }, + { + "description": "shell:deny-execute -> Denies the execute command without any pre-configured scope.", + "type": "string", + "enum": ["shell:deny-execute"] + }, + { + "description": "shell:deny-kill -> Denies the kill command without any pre-configured scope.", + "type": "string", + "enum": ["shell:deny-kill"] + }, + { + "description": "shell:deny-open -> Denies the open command without any pre-configured scope.", + "type": "string", + "enum": ["shell:deny-open"] + }, + { + "description": "shell:deny-spawn -> Denies the spawn command without any pre-configured scope.", + "type": "string", + "enum": ["shell:deny-spawn"] + }, + { + "description": "shell:deny-stdin-write -> Denies the stdin_write command without any pre-configured scope.", + "type": "string", + "enum": ["shell:deny-stdin-write"] + } + ] + }, + "allow": { + "items": { + "title": "Entry", + "description": "A command allowed to be executed by the webview API.", + "type": "object", + "required": ["args", "cmd", "name", "sidecar"], + "properties": { + "args": { + "description": "The allowed arguments for the command execution.", + "allOf": [ + { + "$ref": "#/definitions/ShellAllowedArgs" + } + ] + }, + "cmd": { + "description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$APP`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.", + "type": "string" + }, + "name": { + "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", + "type": "string" + }, + "sidecar": { + "description": "If this command is a sidecar command.", + "type": "boolean" + } + } + } + }, + "deny": { + "items": { + "title": "Entry", + "description": "A command allowed to be executed by the webview API.", + "type": "object", + "required": ["args", "cmd", "name", "sidecar"], + "properties": { + "args": { + "description": "The allowed arguments for the command execution.", + "allOf": [ + { + "$ref": "#/definitions/ShellAllowedArgs" + } + ] + }, + "cmd": { + "description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$APP`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.", + "type": "string" + }, + "name": { + "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", + "type": "string" + }, + "sidecar": { + "description": "If this command is a sidecar command.", + "type": "boolean" + } + } + } + } + } + } + ] + } + ] + }, + "Identifier": { + "oneOf": [ + { + "description": "clipboard-manager:default -> No features are enabled by default, as we believe\nthe clipboard can be inherently dangerous and it is \napplication specific if read and/or write access is needed.\n\nClipboard interaction needs to be explicitly enabled.\n", + "type": "string", + "enum": ["clipboard-manager:default"] + }, + { + "description": "clipboard-manager:allow-clear -> Enables the clear command without any pre-configured scope.", + "type": "string", + "enum": ["clipboard-manager:allow-clear"] + }, + { + "description": "clipboard-manager:allow-read-image -> Enables the read_image command without any pre-configured scope.", + "type": "string", + "enum": ["clipboard-manager:allow-read-image"] + }, + { + "description": "clipboard-manager:allow-read-text -> Enables the read_text command without any pre-configured scope.", + "type": "string", + "enum": ["clipboard-manager:allow-read-text"] + }, + { + "description": "clipboard-manager:allow-write-html -> Enables the write_html command without any pre-configured scope.", + "type": "string", + "enum": ["clipboard-manager:allow-write-html"] + }, + { + "description": "clipboard-manager:allow-write-image -> Enables the write_image command without any pre-configured scope.", + "type": "string", + "enum": ["clipboard-manager:allow-write-image"] + }, + { + "description": "clipboard-manager:allow-write-text -> Enables the write_text command without any pre-configured scope.", + "type": "string", + "enum": ["clipboard-manager:allow-write-text"] + }, + { + "description": "clipboard-manager:deny-clear -> Denies the clear command without any pre-configured scope.", + "type": "string", + "enum": ["clipboard-manager:deny-clear"] + }, + { + "description": "clipboard-manager:deny-read-image -> Denies the read_image command without any pre-configured scope.", + "type": "string", + "enum": ["clipboard-manager:deny-read-image"] + }, + { + "description": "clipboard-manager:deny-read-text -> Denies the read_text command without any pre-configured scope.", + "type": "string", + "enum": ["clipboard-manager:deny-read-text"] + }, + { + "description": "clipboard-manager:deny-write-html -> Denies the write_html command without any pre-configured scope.", + "type": "string", + "enum": ["clipboard-manager:deny-write-html"] + }, + { + "description": "clipboard-manager:deny-write-image -> Denies the write_image command without any pre-configured scope.", + "type": "string", + "enum": ["clipboard-manager:deny-write-image"] + }, + { + "description": "clipboard-manager:deny-write-text -> Denies the write_text command without any pre-configured scope.", + "type": "string", + "enum": ["clipboard-manager:deny-write-text"] + }, + { + "description": "core:app:default -> Default permissions for the plugin.", + "type": "string", + "enum": ["core:app:default"] + }, + { + "description": "core:app:allow-app-hide -> Enables the app_hide command without any pre-configured scope.", + "type": "string", + "enum": ["core:app:allow-app-hide"] + }, + { + "description": "core:app:allow-app-show -> Enables the app_show command without any pre-configured scope.", + "type": "string", + "enum": ["core:app:allow-app-show"] + }, + { + "description": "core:app:allow-default-window-icon -> Enables the default_window_icon command without any pre-configured scope.", + "type": "string", + "enum": ["core:app:allow-default-window-icon"] + }, + { + "description": "core:app:allow-name -> Enables the name command without any pre-configured scope.", + "type": "string", + "enum": ["core:app:allow-name"] + }, + { + "description": "core:app:allow-tauri-version -> Enables the tauri_version command without any pre-configured scope.", + "type": "string", + "enum": ["core:app:allow-tauri-version"] + }, + { + "description": "core:app:allow-version -> Enables the version command without any pre-configured scope.", + "type": "string", + "enum": ["core:app:allow-version"] + }, + { + "description": "core:app:deny-app-hide -> Denies the app_hide command without any pre-configured scope.", + "type": "string", + "enum": ["core:app:deny-app-hide"] + }, + { + "description": "core:app:deny-app-show -> Denies the app_show command without any pre-configured scope.", + "type": "string", + "enum": ["core:app:deny-app-show"] + }, + { + "description": "core:app:deny-default-window-icon -> Denies the default_window_icon command without any pre-configured scope.", + "type": "string", + "enum": ["core:app:deny-default-window-icon"] + }, + { + "description": "core:app:deny-name -> Denies the name command without any pre-configured scope.", + "type": "string", + "enum": ["core:app:deny-name"] + }, + { + "description": "core:app:deny-tauri-version -> Denies the tauri_version command without any pre-configured scope.", + "type": "string", + "enum": ["core:app:deny-tauri-version"] + }, + { + "description": "core:app:deny-version -> Denies the version command without any pre-configured scope.", + "type": "string", + "enum": ["core:app:deny-version"] + }, + { + "description": "core:event:default -> Default permissions for the plugin.", + "type": "string", + "enum": ["core:event:default"] + }, + { + "description": "core:event:allow-emit -> Enables the emit command without any pre-configured scope.", + "type": "string", + "enum": ["core:event:allow-emit"] + }, + { + "description": "core:event:allow-emit-to -> Enables the emit_to command without any pre-configured scope.", + "type": "string", + "enum": ["core:event:allow-emit-to"] + }, + { + "description": "core:event:allow-listen -> Enables the listen command without any pre-configured scope.", + "type": "string", + "enum": ["core:event:allow-listen"] + }, + { + "description": "core:event:allow-unlisten -> Enables the unlisten command without any pre-configured scope.", + "type": "string", + "enum": ["core:event:allow-unlisten"] + }, + { + "description": "core:event:deny-emit -> Denies the emit command without any pre-configured scope.", + "type": "string", + "enum": ["core:event:deny-emit"] + }, + { + "description": "core:event:deny-emit-to -> Denies the emit_to command without any pre-configured scope.", + "type": "string", + "enum": ["core:event:deny-emit-to"] + }, + { + "description": "core:event:deny-listen -> Denies the listen command without any pre-configured scope.", + "type": "string", + "enum": ["core:event:deny-listen"] + }, + { + "description": "core:event:deny-unlisten -> Denies the unlisten command without any pre-configured scope.", + "type": "string", + "enum": ["core:event:deny-unlisten"] + }, + { + "description": "core:image:default -> Default permissions for the plugin.", + "type": "string", + "enum": ["core:image:default"] + }, + { + "description": "core:image:allow-from-bytes -> Enables the from_bytes command without any pre-configured scope.", + "type": "string", + "enum": ["core:image:allow-from-bytes"] + }, + { + "description": "core:image:allow-from-path -> Enables the from_path command without any pre-configured scope.", + "type": "string", + "enum": ["core:image:allow-from-path"] + }, + { + "description": "core:image:allow-new -> Enables the new command without any pre-configured scope.", + "type": "string", + "enum": ["core:image:allow-new"] + }, + { + "description": "core:image:allow-rgba -> Enables the rgba command without any pre-configured scope.", + "type": "string", + "enum": ["core:image:allow-rgba"] + }, + { + "description": "core:image:allow-size -> Enables the size command without any pre-configured scope.", + "type": "string", + "enum": ["core:image:allow-size"] + }, + { + "description": "core:image:deny-from-bytes -> Denies the from_bytes command without any pre-configured scope.", + "type": "string", + "enum": ["core:image:deny-from-bytes"] + }, + { + "description": "core:image:deny-from-path -> Denies the from_path command without any pre-configured scope.", + "type": "string", + "enum": ["core:image:deny-from-path"] + }, + { + "description": "core:image:deny-new -> Denies the new command without any pre-configured scope.", + "type": "string", + "enum": ["core:image:deny-new"] + }, + { + "description": "core:image:deny-rgba -> Denies the rgba command without any pre-configured scope.", + "type": "string", + "enum": ["core:image:deny-rgba"] + }, + { + "description": "core:image:deny-size -> Denies the size command without any pre-configured scope.", + "type": "string", + "enum": ["core:image:deny-size"] + }, + { + "description": "core:menu:default -> Default permissions for the plugin.", + "type": "string", + "enum": ["core:menu:default"] + }, + { + "description": "core:menu:allow-append -> Enables the append command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-append"] + }, + { + "description": "core:menu:allow-create-default -> Enables the create_default command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-create-default"] + }, + { + "description": "core:menu:allow-get -> Enables the get command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-get"] + }, + { + "description": "core:menu:allow-insert -> Enables the insert command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-insert"] + }, + { + "description": "core:menu:allow-is-checked -> Enables the is_checked command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-is-checked"] + }, + { + "description": "core:menu:allow-is-enabled -> Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-is-enabled"] + }, + { + "description": "core:menu:allow-items -> Enables the items command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-items"] + }, + { + "description": "core:menu:allow-new -> Enables the new command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-new"] + }, + { + "description": "core:menu:allow-popup -> Enables the popup command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-popup"] + }, + { + "description": "core:menu:allow-prepend -> Enables the prepend command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-prepend"] + }, + { + "description": "core:menu:allow-remove -> Enables the remove command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-remove"] + }, + { + "description": "core:menu:allow-remove-at -> Enables the remove_at command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-remove-at"] + }, + { + "description": "core:menu:allow-set-accelerator -> Enables the set_accelerator command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-set-accelerator"] + }, + { + "description": "core:menu:allow-set-as-app-menu -> Enables the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-set-as-app-menu"] + }, + { + "description": "core:menu:allow-set-as-help-menu-for-nsapp -> Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-set-as-help-menu-for-nsapp"] + }, + { + "description": "core:menu:allow-set-as-window-menu -> Enables the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-set-as-window-menu"] + }, + { + "description": "core:menu:allow-set-as-windows-menu-for-nsapp -> Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-set-as-windows-menu-for-nsapp"] + }, + { + "description": "core:menu:allow-set-checked -> Enables the set_checked command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-set-checked"] + }, + { + "description": "core:menu:allow-set-enabled -> Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-set-enabled"] + }, + { + "description": "core:menu:allow-set-icon -> Enables the set_icon command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-set-icon"] + }, + { + "description": "core:menu:allow-set-text -> Enables the set_text command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-set-text"] + }, + { + "description": "core:menu:allow-text -> Enables the text command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-text"] + }, + { + "description": "core:menu:deny-append -> Denies the append command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-append"] + }, + { + "description": "core:menu:deny-create-default -> Denies the create_default command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-create-default"] + }, + { + "description": "core:menu:deny-get -> Denies the get command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-get"] + }, + { + "description": "core:menu:deny-insert -> Denies the insert command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-insert"] + }, + { + "description": "core:menu:deny-is-checked -> Denies the is_checked command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-is-checked"] + }, + { + "description": "core:menu:deny-is-enabled -> Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-is-enabled"] + }, + { + "description": "core:menu:deny-items -> Denies the items command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-items"] + }, + { + "description": "core:menu:deny-new -> Denies the new command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-new"] + }, + { + "description": "core:menu:deny-popup -> Denies the popup command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-popup"] + }, + { + "description": "core:menu:deny-prepend -> Denies the prepend command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-prepend"] + }, + { + "description": "core:menu:deny-remove -> Denies the remove command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-remove"] + }, + { + "description": "core:menu:deny-remove-at -> Denies the remove_at command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-remove-at"] + }, + { + "description": "core:menu:deny-set-accelerator -> Denies the set_accelerator command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-set-accelerator"] + }, + { + "description": "core:menu:deny-set-as-app-menu -> Denies the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-set-as-app-menu"] + }, + { + "description": "core:menu:deny-set-as-help-menu-for-nsapp -> Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-set-as-help-menu-for-nsapp"] + }, + { + "description": "core:menu:deny-set-as-window-menu -> Denies the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-set-as-window-menu"] + }, + { + "description": "core:menu:deny-set-as-windows-menu-for-nsapp -> Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-set-as-windows-menu-for-nsapp"] + }, + { + "description": "core:menu:deny-set-checked -> Denies the set_checked command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-set-checked"] + }, + { + "description": "core:menu:deny-set-enabled -> Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-set-enabled"] + }, + { + "description": "core:menu:deny-set-icon -> Denies the set_icon command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-set-icon"] + }, + { + "description": "core:menu:deny-set-text -> Denies the set_text command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-set-text"] + }, + { + "description": "core:menu:deny-text -> Denies the text command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-text"] + }, + { + "description": "core:path:default -> Default permissions for the plugin.", + "type": "string", + "enum": ["core:path:default"] + }, + { + "description": "core:path:allow-basename -> Enables the basename command without any pre-configured scope.", + "type": "string", + "enum": ["core:path:allow-basename"] + }, + { + "description": "core:path:allow-dirname -> Enables the dirname command without any pre-configured scope.", + "type": "string", + "enum": ["core:path:allow-dirname"] + }, + { + "description": "core:path:allow-extname -> Enables the extname command without any pre-configured scope.", + "type": "string", + "enum": ["core:path:allow-extname"] + }, + { + "description": "core:path:allow-is-absolute -> Enables the is_absolute command without any pre-configured scope.", + "type": "string", + "enum": ["core:path:allow-is-absolute"] + }, + { + "description": "core:path:allow-join -> Enables the join command without any pre-configured scope.", + "type": "string", + "enum": ["core:path:allow-join"] + }, + { + "description": "core:path:allow-normalize -> Enables the normalize command without any pre-configured scope.", + "type": "string", + "enum": ["core:path:allow-normalize"] + }, + { + "description": "core:path:allow-resolve -> Enables the resolve command without any pre-configured scope.", + "type": "string", + "enum": ["core:path:allow-resolve"] + }, + { + "description": "core:path:allow-resolve-directory -> Enables the resolve_directory command without any pre-configured scope.", + "type": "string", + "enum": ["core:path:allow-resolve-directory"] + }, + { + "description": "core:path:deny-basename -> Denies the basename command without any pre-configured scope.", + "type": "string", + "enum": ["core:path:deny-basename"] + }, + { + "description": "core:path:deny-dirname -> Denies the dirname command without any pre-configured scope.", + "type": "string", + "enum": ["core:path:deny-dirname"] + }, + { + "description": "core:path:deny-extname -> Denies the extname command without any pre-configured scope.", + "type": "string", + "enum": ["core:path:deny-extname"] + }, + { + "description": "core:path:deny-is-absolute -> Denies the is_absolute command without any pre-configured scope.", + "type": "string", + "enum": ["core:path:deny-is-absolute"] + }, + { + "description": "core:path:deny-join -> Denies the join command without any pre-configured scope.", + "type": "string", + "enum": ["core:path:deny-join"] + }, + { + "description": "core:path:deny-normalize -> Denies the normalize command without any pre-configured scope.", + "type": "string", + "enum": ["core:path:deny-normalize"] + }, + { + "description": "core:path:deny-resolve -> Denies the resolve command without any pre-configured scope.", + "type": "string", + "enum": ["core:path:deny-resolve"] + }, + { + "description": "core:path:deny-resolve-directory -> Denies the resolve_directory command without any pre-configured scope.", + "type": "string", + "enum": ["core:path:deny-resolve-directory"] + }, + { + "description": "core:resources:default -> Default permissions for the plugin.", + "type": "string", + "enum": ["core:resources:default"] + }, + { + "description": "core:resources:allow-close -> Enables the close command without any pre-configured scope.", + "type": "string", + "enum": ["core:resources:allow-close"] + }, + { + "description": "core:resources:deny-close -> Denies the close command without any pre-configured scope.", + "type": "string", + "enum": ["core:resources:deny-close"] + }, + { + "description": "core:tray:default -> Default permissions for the plugin.", + "type": "string", + "enum": ["core:tray:default"] + }, + { + "description": "core:tray:allow-get-by-id -> Enables the get_by_id command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:allow-get-by-id"] + }, + { + "description": "core:tray:allow-new -> Enables the new command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:allow-new"] + }, + { + "description": "core:tray:allow-remove-by-id -> Enables the remove_by_id command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:allow-remove-by-id"] + }, + { + "description": "core:tray:allow-set-icon -> Enables the set_icon command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:allow-set-icon"] + }, + { + "description": "core:tray:allow-set-icon-as-template -> Enables the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:allow-set-icon-as-template"] + }, + { + "description": "core:tray:allow-set-menu -> Enables the set_menu command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:allow-set-menu"] + }, + { + "description": "core:tray:allow-set-show-menu-on-left-click -> Enables the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:allow-set-show-menu-on-left-click"] + }, + { + "description": "core:tray:allow-set-temp-dir-path -> Enables the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:allow-set-temp-dir-path"] + }, + { + "description": "core:tray:allow-set-title -> Enables the set_title command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:allow-set-title"] + }, + { + "description": "core:tray:allow-set-tooltip -> Enables the set_tooltip command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:allow-set-tooltip"] + }, + { + "description": "core:tray:allow-set-visible -> Enables the set_visible command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:allow-set-visible"] + }, + { + "description": "core:tray:deny-get-by-id -> Denies the get_by_id command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:deny-get-by-id"] + }, + { + "description": "core:tray:deny-new -> Denies the new command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:deny-new"] + }, + { + "description": "core:tray:deny-remove-by-id -> Denies the remove_by_id command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:deny-remove-by-id"] + }, + { + "description": "core:tray:deny-set-icon -> Denies the set_icon command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:deny-set-icon"] + }, + { + "description": "core:tray:deny-set-icon-as-template -> Denies the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:deny-set-icon-as-template"] + }, + { + "description": "core:tray:deny-set-menu -> Denies the set_menu command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:deny-set-menu"] + }, + { + "description": "core:tray:deny-set-show-menu-on-left-click -> Denies the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:deny-set-show-menu-on-left-click"] + }, + { + "description": "core:tray:deny-set-temp-dir-path -> Denies the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:deny-set-temp-dir-path"] + }, + { + "description": "core:tray:deny-set-title -> Denies the set_title command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:deny-set-title"] + }, + { + "description": "core:tray:deny-set-tooltip -> Denies the set_tooltip command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:deny-set-tooltip"] + }, + { + "description": "core:tray:deny-set-visible -> Denies the set_visible command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:deny-set-visible"] + }, + { + "description": "core:webview:default -> Default permissions for the plugin.", + "type": "string", + "enum": ["core:webview:default"] + }, + { + "description": "core:webview:allow-create-webview -> Enables the create_webview command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:allow-create-webview"] + }, + { + "description": "core:webview:allow-create-webview-window -> Enables the create_webview_window command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:allow-create-webview-window"] + }, + { + "description": "core:webview:allow-get-all-webviews -> Enables the get_all_webviews command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:allow-get-all-webviews"] + }, + { + "description": "core:webview:allow-internal-toggle-devtools -> Enables the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:allow-internal-toggle-devtools"] + }, + { + "description": "core:webview:allow-print -> Enables the print command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:allow-print"] + }, + { + "description": "core:webview:allow-reparent -> Enables the reparent command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:allow-reparent"] + }, + { + "description": "core:webview:allow-set-webview-focus -> Enables the set_webview_focus command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:allow-set-webview-focus"] + }, + { + "description": "core:webview:allow-set-webview-position -> Enables the set_webview_position command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:allow-set-webview-position"] + }, + { + "description": "core:webview:allow-set-webview-size -> Enables the set_webview_size command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:allow-set-webview-size"] + }, + { + "description": "core:webview:allow-set-webview-zoom -> Enables the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:allow-set-webview-zoom"] + }, + { + "description": "core:webview:allow-webview-close -> Enables the webview_close command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:allow-webview-close"] + }, + { + "description": "core:webview:allow-webview-position -> Enables the webview_position command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:allow-webview-position"] + }, + { + "description": "core:webview:allow-webview-size -> Enables the webview_size command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:allow-webview-size"] + }, + { + "description": "core:webview:deny-create-webview -> Denies the create_webview command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:deny-create-webview"] + }, + { + "description": "core:webview:deny-create-webview-window -> Denies the create_webview_window command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:deny-create-webview-window"] + }, + { + "description": "core:webview:deny-get-all-webviews -> Denies the get_all_webviews command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:deny-get-all-webviews"] + }, + { + "description": "core:webview:deny-internal-toggle-devtools -> Denies the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:deny-internal-toggle-devtools"] + }, + { + "description": "core:webview:deny-print -> Denies the print command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:deny-print"] + }, + { + "description": "core:webview:deny-reparent -> Denies the reparent command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:deny-reparent"] + }, + { + "description": "core:webview:deny-set-webview-focus -> Denies the set_webview_focus command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:deny-set-webview-focus"] + }, + { + "description": "core:webview:deny-set-webview-position -> Denies the set_webview_position command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:deny-set-webview-position"] + }, + { + "description": "core:webview:deny-set-webview-size -> Denies the set_webview_size command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:deny-set-webview-size"] + }, + { + "description": "core:webview:deny-set-webview-zoom -> Denies the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:deny-set-webview-zoom"] + }, + { + "description": "core:webview:deny-webview-close -> Denies the webview_close command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:deny-webview-close"] + }, + { + "description": "core:webview:deny-webview-position -> Denies the webview_position command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:deny-webview-position"] + }, + { + "description": "core:webview:deny-webview-size -> Denies the webview_size command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:deny-webview-size"] + }, + { + "description": "core:window:default -> Default permissions for the plugin.", + "type": "string", + "enum": ["core:window:default"] + }, + { + "description": "core:window:allow-available-monitors -> Enables the available_monitors command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-available-monitors"] + }, + { + "description": "core:window:allow-center -> Enables the center command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-center"] + }, + { + "description": "core:window:allow-close -> Enables the close command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-close"] + }, + { + "description": "core:window:allow-create -> Enables the create command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-create"] + }, + { + "description": "core:window:allow-current-monitor -> Enables the current_monitor command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-current-monitor"] + }, + { + "description": "core:window:allow-cursor-position -> Enables the cursor_position command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-cursor-position"] + }, + { + "description": "core:window:allow-destroy -> Enables the destroy command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-destroy"] + }, + { + "description": "core:window:allow-get-all-windows -> Enables the get_all_windows command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-get-all-windows"] + }, + { + "description": "core:window:allow-hide -> Enables the hide command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-hide"] + }, + { + "description": "core:window:allow-inner-position -> Enables the inner_position command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-inner-position"] + }, + { + "description": "core:window:allow-inner-size -> Enables the inner_size command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-inner-size"] + }, + { + "description": "core:window:allow-internal-toggle-maximize -> Enables the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-internal-toggle-maximize"] + }, + { + "description": "core:window:allow-is-closable -> Enables the is_closable command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-is-closable"] + }, + { + "description": "core:window:allow-is-decorated -> Enables the is_decorated command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-is-decorated"] + }, + { + "description": "core:window:allow-is-focused -> Enables the is_focused command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-is-focused"] + }, + { + "description": "core:window:allow-is-fullscreen -> Enables the is_fullscreen command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-is-fullscreen"] + }, + { + "description": "core:window:allow-is-maximizable -> Enables the is_maximizable command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-is-maximizable"] + }, + { + "description": "core:window:allow-is-maximized -> Enables the is_maximized command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-is-maximized"] + }, + { + "description": "core:window:allow-is-minimizable -> Enables the is_minimizable command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-is-minimizable"] + }, + { + "description": "core:window:allow-is-minimized -> Enables the is_minimized command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-is-minimized"] + }, + { + "description": "core:window:allow-is-resizable -> Enables the is_resizable command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-is-resizable"] + }, + { + "description": "core:window:allow-is-visible -> Enables the is_visible command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-is-visible"] + }, + { + "description": "core:window:allow-maximize -> Enables the maximize command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-maximize"] + }, + { + "description": "core:window:allow-minimize -> Enables the minimize command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-minimize"] + }, + { + "description": "core:window:allow-monitor-from-point -> Enables the monitor_from_point command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-monitor-from-point"] + }, + { + "description": "core:window:allow-outer-position -> Enables the outer_position command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-outer-position"] + }, + { + "description": "core:window:allow-outer-size -> Enables the outer_size command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-outer-size"] + }, + { + "description": "core:window:allow-primary-monitor -> Enables the primary_monitor command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-primary-monitor"] + }, + { + "description": "core:window:allow-request-user-attention -> Enables the request_user_attention command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-request-user-attention"] + }, + { + "description": "core:window:allow-scale-factor -> Enables the scale_factor command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-scale-factor"] + }, + { + "description": "core:window:allow-set-always-on-bottom -> Enables the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-always-on-bottom"] + }, + { + "description": "core:window:allow-set-always-on-top -> Enables the set_always_on_top command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-always-on-top"] + }, + { + "description": "core:window:allow-set-closable -> Enables the set_closable command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-closable"] + }, + { + "description": "core:window:allow-set-content-protected -> Enables the set_content_protected command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-content-protected"] + }, + { + "description": "core:window:allow-set-cursor-grab -> Enables the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-cursor-grab"] + }, + { + "description": "core:window:allow-set-cursor-icon -> Enables the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-cursor-icon"] + }, + { + "description": "core:window:allow-set-cursor-position -> Enables the set_cursor_position command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-cursor-position"] + }, + { + "description": "core:window:allow-set-cursor-visible -> Enables the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-cursor-visible"] + }, + { + "description": "core:window:allow-set-decorations -> Enables the set_decorations command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-decorations"] + }, + { + "description": "core:window:allow-set-effects -> Enables the set_effects command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-effects"] + }, + { + "description": "core:window:allow-set-focus -> Enables the set_focus command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-focus"] + }, + { + "description": "core:window:allow-set-fullscreen -> Enables the set_fullscreen command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-fullscreen"] + }, + { + "description": "core:window:allow-set-icon -> Enables the set_icon command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-icon"] + }, + { + "description": "core:window:allow-set-ignore-cursor-events -> Enables the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-ignore-cursor-events"] + }, + { + "description": "core:window:allow-set-max-size -> Enables the set_max_size command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-max-size"] + }, + { + "description": "core:window:allow-set-maximizable -> Enables the set_maximizable command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-maximizable"] + }, + { + "description": "core:window:allow-set-min-size -> Enables the set_min_size command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-min-size"] + }, + { + "description": "core:window:allow-set-minimizable -> Enables the set_minimizable command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-minimizable"] + }, + { + "description": "core:window:allow-set-position -> Enables the set_position command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-position"] + }, + { + "description": "core:window:allow-set-progress-bar -> Enables the set_progress_bar command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-progress-bar"] + }, + { + "description": "core:window:allow-set-resizable -> Enables the set_resizable command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-resizable"] + }, + { + "description": "core:window:allow-set-shadow -> Enables the set_shadow command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-shadow"] + }, + { + "description": "core:window:allow-set-size -> Enables the set_size command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-size"] + }, + { + "description": "core:window:allow-set-size-constraints -> Enables the set_size_constraints command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-size-constraints"] + }, + { + "description": "core:window:allow-set-skip-taskbar -> Enables the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-skip-taskbar"] + }, + { + "description": "core:window:allow-set-title -> Enables the set_title command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-title"] + }, + { + "description": "core:window:allow-set-title-bar-style -> Enables the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-title-bar-style"] + }, + { + "description": "core:window:allow-set-visible-on-all-workspaces -> Enables the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-visible-on-all-workspaces"] + }, + { + "description": "core:window:allow-show -> Enables the show command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-show"] + }, + { + "description": "core:window:allow-start-dragging -> Enables the start_dragging command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-start-dragging"] + }, + { + "description": "core:window:allow-start-resize-dragging -> Enables the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-start-resize-dragging"] + }, + { + "description": "core:window:allow-theme -> Enables the theme command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-theme"] + }, + { + "description": "core:window:allow-title -> Enables the title command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-title"] + }, + { + "description": "core:window:allow-toggle-maximize -> Enables the toggle_maximize command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-toggle-maximize"] + }, + { + "description": "core:window:allow-unmaximize -> Enables the unmaximize command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-unmaximize"] + }, + { + "description": "core:window:allow-unminimize -> Enables the unminimize command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-unminimize"] + }, + { + "description": "core:window:deny-available-monitors -> Denies the available_monitors command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-available-monitors"] + }, + { + "description": "core:window:deny-center -> Denies the center command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-center"] + }, + { + "description": "core:window:deny-close -> Denies the close command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-close"] + }, + { + "description": "core:window:deny-create -> Denies the create command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-create"] + }, + { + "description": "core:window:deny-current-monitor -> Denies the current_monitor command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-current-monitor"] + }, + { + "description": "core:window:deny-cursor-position -> Denies the cursor_position command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-cursor-position"] + }, + { + "description": "core:window:deny-destroy -> Denies the destroy command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-destroy"] + }, + { + "description": "core:window:deny-get-all-windows -> Denies the get_all_windows command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-get-all-windows"] + }, + { + "description": "core:window:deny-hide -> Denies the hide command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-hide"] + }, + { + "description": "core:window:deny-inner-position -> Denies the inner_position command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-inner-position"] + }, + { + "description": "core:window:deny-inner-size -> Denies the inner_size command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-inner-size"] + }, + { + "description": "core:window:deny-internal-toggle-maximize -> Denies the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-internal-toggle-maximize"] + }, + { + "description": "core:window:deny-is-closable -> Denies the is_closable command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-is-closable"] + }, + { + "description": "core:window:deny-is-decorated -> Denies the is_decorated command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-is-decorated"] + }, + { + "description": "core:window:deny-is-focused -> Denies the is_focused command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-is-focused"] + }, + { + "description": "core:window:deny-is-fullscreen -> Denies the is_fullscreen command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-is-fullscreen"] + }, + { + "description": "core:window:deny-is-maximizable -> Denies the is_maximizable command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-is-maximizable"] + }, + { + "description": "core:window:deny-is-maximized -> Denies the is_maximized command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-is-maximized"] + }, + { + "description": "core:window:deny-is-minimizable -> Denies the is_minimizable command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-is-minimizable"] + }, + { + "description": "core:window:deny-is-minimized -> Denies the is_minimized command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-is-minimized"] + }, + { + "description": "core:window:deny-is-resizable -> Denies the is_resizable command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-is-resizable"] + }, + { + "description": "core:window:deny-is-visible -> Denies the is_visible command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-is-visible"] + }, + { + "description": "core:window:deny-maximize -> Denies the maximize command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-maximize"] + }, + { + "description": "core:window:deny-minimize -> Denies the minimize command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-minimize"] + }, + { + "description": "core:window:deny-monitor-from-point -> Denies the monitor_from_point command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-monitor-from-point"] + }, + { + "description": "core:window:deny-outer-position -> Denies the outer_position command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-outer-position"] + }, + { + "description": "core:window:deny-outer-size -> Denies the outer_size command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-outer-size"] + }, + { + "description": "core:window:deny-primary-monitor -> Denies the primary_monitor command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-primary-monitor"] + }, + { + "description": "core:window:deny-request-user-attention -> Denies the request_user_attention command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-request-user-attention"] + }, + { + "description": "core:window:deny-scale-factor -> Denies the scale_factor command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-scale-factor"] + }, + { + "description": "core:window:deny-set-always-on-bottom -> Denies the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-always-on-bottom"] + }, + { + "description": "core:window:deny-set-always-on-top -> Denies the set_always_on_top command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-always-on-top"] + }, + { + "description": "core:window:deny-set-closable -> Denies the set_closable command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-closable"] + }, + { + "description": "core:window:deny-set-content-protected -> Denies the set_content_protected command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-content-protected"] + }, + { + "description": "core:window:deny-set-cursor-grab -> Denies the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-cursor-grab"] + }, + { + "description": "core:window:deny-set-cursor-icon -> Denies the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-cursor-icon"] + }, + { + "description": "core:window:deny-set-cursor-position -> Denies the set_cursor_position command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-cursor-position"] + }, + { + "description": "core:window:deny-set-cursor-visible -> Denies the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-cursor-visible"] + }, + { + "description": "core:window:deny-set-decorations -> Denies the set_decorations command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-decorations"] + }, + { + "description": "core:window:deny-set-effects -> Denies the set_effects command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-effects"] + }, + { + "description": "core:window:deny-set-focus -> Denies the set_focus command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-focus"] + }, + { + "description": "core:window:deny-set-fullscreen -> Denies the set_fullscreen command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-fullscreen"] + }, + { + "description": "core:window:deny-set-icon -> Denies the set_icon command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-icon"] + }, + { + "description": "core:window:deny-set-ignore-cursor-events -> Denies the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-ignore-cursor-events"] + }, + { + "description": "core:window:deny-set-max-size -> Denies the set_max_size command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-max-size"] + }, + { + "description": "core:window:deny-set-maximizable -> Denies the set_maximizable command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-maximizable"] + }, + { + "description": "core:window:deny-set-min-size -> Denies the set_min_size command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-min-size"] + }, + { + "description": "core:window:deny-set-minimizable -> Denies the set_minimizable command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-minimizable"] + }, + { + "description": "core:window:deny-set-position -> Denies the set_position command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-position"] + }, + { + "description": "core:window:deny-set-progress-bar -> Denies the set_progress_bar command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-progress-bar"] + }, + { + "description": "core:window:deny-set-resizable -> Denies the set_resizable command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-resizable"] + }, + { + "description": "core:window:deny-set-shadow -> Denies the set_shadow command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-shadow"] + }, + { + "description": "core:window:deny-set-size -> Denies the set_size command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-size"] + }, + { + "description": "core:window:deny-set-size-constraints -> Denies the set_size_constraints command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-size-constraints"] + }, + { + "description": "core:window:deny-set-skip-taskbar -> Denies the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-skip-taskbar"] + }, + { + "description": "core:window:deny-set-title -> Denies the set_title command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-title"] + }, + { + "description": "core:window:deny-set-title-bar-style -> Denies the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-title-bar-style"] + }, + { + "description": "core:window:deny-set-visible-on-all-workspaces -> Denies the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-visible-on-all-workspaces"] + }, + { + "description": "core:window:deny-show -> Denies the show command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-show"] + }, + { + "description": "core:window:deny-start-dragging -> Denies the start_dragging command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-start-dragging"] + }, + { + "description": "core:window:deny-start-resize-dragging -> Denies the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-start-resize-dragging"] + }, + { + "description": "core:window:deny-theme -> Denies the theme command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-theme"] + }, + { + "description": "core:window:deny-title -> Denies the title command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-title"] + }, + { + "description": "core:window:deny-toggle-maximize -> Denies the toggle_maximize command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-toggle-maximize"] + }, + { + "description": "core:window:deny-unmaximize -> Denies the unmaximize command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-unmaximize"] + }, + { + "description": "core:window:deny-unminimize -> Denies the unminimize command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-unminimize"] + }, + { + "description": "dialog:default -> This permission set configures the types of dialogs\navailable from the dialog plugin.\n\n#### Granted Permissions\n\nAll dialog types are enabled.\n\n\n", + "type": "string", + "enum": ["dialog:default"] + }, + { + "description": "dialog:allow-ask -> Enables the ask command without any pre-configured scope.", + "type": "string", + "enum": ["dialog:allow-ask"] + }, + { + "description": "dialog:allow-confirm -> Enables the confirm command without any pre-configured scope.", + "type": "string", + "enum": ["dialog:allow-confirm"] + }, + { + "description": "dialog:allow-message -> Enables the message command without any pre-configured scope.", + "type": "string", + "enum": ["dialog:allow-message"] + }, + { + "description": "dialog:allow-open -> Enables the open command without any pre-configured scope.", + "type": "string", + "enum": ["dialog:allow-open"] + }, + { + "description": "dialog:allow-save -> Enables the save command without any pre-configured scope.", + "type": "string", + "enum": ["dialog:allow-save"] + }, + { + "description": "dialog:deny-ask -> Denies the ask command without any pre-configured scope.", + "type": "string", + "enum": ["dialog:deny-ask"] + }, + { + "description": "dialog:deny-confirm -> Denies the confirm command without any pre-configured scope.", + "type": "string", + "enum": ["dialog:deny-confirm"] + }, + { + "description": "dialog:deny-message -> Denies the message command without any pre-configured scope.", + "type": "string", + "enum": ["dialog:deny-message"] + }, + { + "description": "dialog:deny-open -> Denies the open command without any pre-configured scope.", + "type": "string", + "enum": ["dialog:deny-open"] + }, + { + "description": "dialog:deny-save -> Denies the save command without any pre-configured scope.", + "type": "string", + "enum": ["dialog:deny-save"] + }, + { + "description": "fs:allow-app-meta -> This allows non-recursive read access to metadata of the `$APP` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-app-meta"] + }, + { + "description": "fs:allow-app-meta-recursive -> This allows full recursive read access to metadata of the `$APP` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-app-meta-recursive"] + }, + { + "description": "fs:allow-app-read -> This allows non-recursive read access to the `$APP` folder.", + "type": "string", + "enum": ["fs:allow-app-read"] + }, + { + "description": "fs:allow-app-read-recursive -> This allows full recursive read access to the complete `$APP` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-app-read-recursive"] + }, + { + "description": "fs:allow-app-write -> This allows non-recursive write access to the `$APP` folder.", + "type": "string", + "enum": ["fs:allow-app-write"] + }, + { + "description": "fs:allow-app-write-recursive -> This allows full recursive write access to the complete `$APP` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-app-write-recursive"] + }, + { + "description": "fs:allow-appcache-meta -> This allows non-recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-appcache-meta"] + }, + { + "description": "fs:allow-appcache-meta-recursive -> This allows full recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-appcache-meta-recursive"] + }, + { + "description": "fs:allow-appcache-read -> This allows non-recursive read access to the `$APPCACHE` folder.", + "type": "string", + "enum": ["fs:allow-appcache-read"] + }, + { + "description": "fs:allow-appcache-read-recursive -> This allows full recursive read access to the complete `$APPCACHE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-appcache-read-recursive"] + }, + { + "description": "fs:allow-appcache-write -> This allows non-recursive write access to the `$APPCACHE` folder.", + "type": "string", + "enum": ["fs:allow-appcache-write"] + }, + { + "description": "fs:allow-appcache-write-recursive -> This allows full recursive write access to the complete `$APPCACHE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-appcache-write-recursive"] + }, + { + "description": "fs:allow-appconfig-meta -> This allows non-recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-appconfig-meta"] + }, + { + "description": "fs:allow-appconfig-meta-recursive -> This allows full recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-appconfig-meta-recursive"] + }, + { + "description": "fs:allow-appconfig-read -> This allows non-recursive read access to the `$APPCONFIG` folder.", + "type": "string", + "enum": ["fs:allow-appconfig-read"] + }, + { + "description": "fs:allow-appconfig-read-recursive -> This allows full recursive read access to the complete `$APPCONFIG` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-appconfig-read-recursive"] + }, + { + "description": "fs:allow-appconfig-write -> This allows non-recursive write access to the `$APPCONFIG` folder.", + "type": "string", + "enum": ["fs:allow-appconfig-write"] + }, + { + "description": "fs:allow-appconfig-write-recursive -> This allows full recursive write access to the complete `$APPCONFIG` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-appconfig-write-recursive"] + }, + { + "description": "fs:allow-appdata-meta -> This allows non-recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-appdata-meta"] + }, + { + "description": "fs:allow-appdata-meta-recursive -> This allows full recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-appdata-meta-recursive"] + }, + { + "description": "fs:allow-appdata-read -> This allows non-recursive read access to the `$APPDATA` folder.", + "type": "string", + "enum": ["fs:allow-appdata-read"] + }, + { + "description": "fs:allow-appdata-read-recursive -> This allows full recursive read access to the complete `$APPDATA` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-appdata-read-recursive"] + }, + { + "description": "fs:allow-appdata-write -> This allows non-recursive write access to the `$APPDATA` folder.", + "type": "string", + "enum": ["fs:allow-appdata-write"] + }, + { + "description": "fs:allow-appdata-write-recursive -> This allows full recursive write access to the complete `$APPDATA` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-appdata-write-recursive"] + }, + { + "description": "fs:allow-applocaldata-meta -> This allows non-recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-applocaldata-meta"] + }, + { + "description": "fs:allow-applocaldata-meta-recursive -> This allows full recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-applocaldata-meta-recursive"] + }, + { + "description": "fs:allow-applocaldata-read -> This allows non-recursive read access to the `$APPLOCALDATA` folder.", + "type": "string", + "enum": ["fs:allow-applocaldata-read"] + }, + { + "description": "fs:allow-applocaldata-read-recursive -> This allows full recursive read access to the complete `$APPLOCALDATA` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-applocaldata-read-recursive"] + }, + { + "description": "fs:allow-applocaldata-write -> This allows non-recursive write access to the `$APPLOCALDATA` folder.", + "type": "string", + "enum": ["fs:allow-applocaldata-write"] + }, + { + "description": "fs:allow-applocaldata-write-recursive -> This allows full recursive write access to the complete `$APPLOCALDATA` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-applocaldata-write-recursive"] + }, + { + "description": "fs:allow-applog-meta -> This allows non-recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-applog-meta"] + }, + { + "description": "fs:allow-applog-meta-recursive -> This allows full recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-applog-meta-recursive"] + }, + { + "description": "fs:allow-applog-read -> This allows non-recursive read access to the `$APPLOG` folder.", + "type": "string", + "enum": ["fs:allow-applog-read"] + }, + { + "description": "fs:allow-applog-read-recursive -> This allows full recursive read access to the complete `$APPLOG` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-applog-read-recursive"] + }, + { + "description": "fs:allow-applog-write -> This allows non-recursive write access to the `$APPLOG` folder.", + "type": "string", + "enum": ["fs:allow-applog-write"] + }, + { + "description": "fs:allow-applog-write-recursive -> This allows full recursive write access to the complete `$APPLOG` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-applog-write-recursive"] + }, + { + "description": "fs:allow-audio-meta -> This allows non-recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-audio-meta"] + }, + { + "description": "fs:allow-audio-meta-recursive -> This allows full recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-audio-meta-recursive"] + }, + { + "description": "fs:allow-audio-read -> This allows non-recursive read access to the `$AUDIO` folder.", + "type": "string", + "enum": ["fs:allow-audio-read"] + }, + { + "description": "fs:allow-audio-read-recursive -> This allows full recursive read access to the complete `$AUDIO` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-audio-read-recursive"] + }, + { + "description": "fs:allow-audio-write -> This allows non-recursive write access to the `$AUDIO` folder.", + "type": "string", + "enum": ["fs:allow-audio-write"] + }, + { + "description": "fs:allow-audio-write-recursive -> This allows full recursive write access to the complete `$AUDIO` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-audio-write-recursive"] + }, + { + "description": "fs:allow-cache-meta -> This allows non-recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-cache-meta"] + }, + { + "description": "fs:allow-cache-meta-recursive -> This allows full recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-cache-meta-recursive"] + }, + { + "description": "fs:allow-cache-read -> This allows non-recursive read access to the `$CACHE` folder.", + "type": "string", + "enum": ["fs:allow-cache-read"] + }, + { + "description": "fs:allow-cache-read-recursive -> This allows full recursive read access to the complete `$CACHE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-cache-read-recursive"] + }, + { + "description": "fs:allow-cache-write -> This allows non-recursive write access to the `$CACHE` folder.", + "type": "string", + "enum": ["fs:allow-cache-write"] + }, + { + "description": "fs:allow-cache-write-recursive -> This allows full recursive write access to the complete `$CACHE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-cache-write-recursive"] + }, + { + "description": "fs:allow-config-meta -> This allows non-recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-config-meta"] + }, + { + "description": "fs:allow-config-meta-recursive -> This allows full recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-config-meta-recursive"] + }, + { + "description": "fs:allow-config-read -> This allows non-recursive read access to the `$CONFIG` folder.", + "type": "string", + "enum": ["fs:allow-config-read"] + }, + { + "description": "fs:allow-config-read-recursive -> This allows full recursive read access to the complete `$CONFIG` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-config-read-recursive"] + }, + { + "description": "fs:allow-config-write -> This allows non-recursive write access to the `$CONFIG` folder.", + "type": "string", + "enum": ["fs:allow-config-write"] + }, + { + "description": "fs:allow-config-write-recursive -> This allows full recursive write access to the complete `$CONFIG` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-config-write-recursive"] + }, + { + "description": "fs:allow-data-meta -> This allows non-recursive read access to metadata of the `$DATA` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-data-meta"] + }, + { + "description": "fs:allow-data-meta-recursive -> This allows full recursive read access to metadata of the `$DATA` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-data-meta-recursive"] + }, + { + "description": "fs:allow-data-read -> This allows non-recursive read access to the `$DATA` folder.", + "type": "string", + "enum": ["fs:allow-data-read"] + }, + { + "description": "fs:allow-data-read-recursive -> This allows full recursive read access to the complete `$DATA` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-data-read-recursive"] + }, + { + "description": "fs:allow-data-write -> This allows non-recursive write access to the `$DATA` folder.", + "type": "string", + "enum": ["fs:allow-data-write"] + }, + { + "description": "fs:allow-data-write-recursive -> This allows full recursive write access to the complete `$DATA` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-data-write-recursive"] + }, + { + "description": "fs:allow-desktop-meta -> This allows non-recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-desktop-meta"] + }, + { + "description": "fs:allow-desktop-meta-recursive -> This allows full recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-desktop-meta-recursive"] + }, + { + "description": "fs:allow-desktop-read -> This allows non-recursive read access to the `$DESKTOP` folder.", + "type": "string", + "enum": ["fs:allow-desktop-read"] + }, + { + "description": "fs:allow-desktop-read-recursive -> This allows full recursive read access to the complete `$DESKTOP` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-desktop-read-recursive"] + }, + { + "description": "fs:allow-desktop-write -> This allows non-recursive write access to the `$DESKTOP` folder.", + "type": "string", + "enum": ["fs:allow-desktop-write"] + }, + { + "description": "fs:allow-desktop-write-recursive -> This allows full recursive write access to the complete `$DESKTOP` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-desktop-write-recursive"] + }, + { + "description": "fs:allow-document-meta -> This allows non-recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-document-meta"] + }, + { + "description": "fs:allow-document-meta-recursive -> This allows full recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-document-meta-recursive"] + }, + { + "description": "fs:allow-document-read -> This allows non-recursive read access to the `$DOCUMENT` folder.", + "type": "string", + "enum": ["fs:allow-document-read"] + }, + { + "description": "fs:allow-document-read-recursive -> This allows full recursive read access to the complete `$DOCUMENT` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-document-read-recursive"] + }, + { + "description": "fs:allow-document-write -> This allows non-recursive write access to the `$DOCUMENT` folder.", + "type": "string", + "enum": ["fs:allow-document-write"] + }, + { + "description": "fs:allow-document-write-recursive -> This allows full recursive write access to the complete `$DOCUMENT` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-document-write-recursive"] + }, + { + "description": "fs:allow-download-meta -> This allows non-recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-download-meta"] + }, + { + "description": "fs:allow-download-meta-recursive -> This allows full recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-download-meta-recursive"] + }, + { + "description": "fs:allow-download-read -> This allows non-recursive read access to the `$DOWNLOAD` folder.", + "type": "string", + "enum": ["fs:allow-download-read"] + }, + { + "description": "fs:allow-download-read-recursive -> This allows full recursive read access to the complete `$DOWNLOAD` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-download-read-recursive"] + }, + { + "description": "fs:allow-download-write -> This allows non-recursive write access to the `$DOWNLOAD` folder.", + "type": "string", + "enum": ["fs:allow-download-write"] + }, + { + "description": "fs:allow-download-write-recursive -> This allows full recursive write access to the complete `$DOWNLOAD` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-download-write-recursive"] + }, + { + "description": "fs:allow-exe-meta -> This allows non-recursive read access to metadata of the `$EXE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-exe-meta"] + }, + { + "description": "fs:allow-exe-meta-recursive -> This allows full recursive read access to metadata of the `$EXE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-exe-meta-recursive"] + }, + { + "description": "fs:allow-exe-read -> This allows non-recursive read access to the `$EXE` folder.", + "type": "string", + "enum": ["fs:allow-exe-read"] + }, + { + "description": "fs:allow-exe-read-recursive -> This allows full recursive read access to the complete `$EXE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-exe-read-recursive"] + }, + { + "description": "fs:allow-exe-write -> This allows non-recursive write access to the `$EXE` folder.", + "type": "string", + "enum": ["fs:allow-exe-write"] + }, + { + "description": "fs:allow-exe-write-recursive -> This allows full recursive write access to the complete `$EXE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-exe-write-recursive"] + }, + { + "description": "fs:allow-font-meta -> This allows non-recursive read access to metadata of the `$FONT` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-font-meta"] + }, + { + "description": "fs:allow-font-meta-recursive -> This allows full recursive read access to metadata of the `$FONT` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-font-meta-recursive"] + }, + { + "description": "fs:allow-font-read -> This allows non-recursive read access to the `$FONT` folder.", + "type": "string", + "enum": ["fs:allow-font-read"] + }, + { + "description": "fs:allow-font-read-recursive -> This allows full recursive read access to the complete `$FONT` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-font-read-recursive"] + }, + { + "description": "fs:allow-font-write -> This allows non-recursive write access to the `$FONT` folder.", + "type": "string", + "enum": ["fs:allow-font-write"] + }, + { + "description": "fs:allow-font-write-recursive -> This allows full recursive write access to the complete `$FONT` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-font-write-recursive"] + }, + { + "description": "fs:allow-home-meta -> This allows non-recursive read access to metadata of the `$HOME` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-home-meta"] + }, + { + "description": "fs:allow-home-meta-recursive -> This allows full recursive read access to metadata of the `$HOME` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-home-meta-recursive"] + }, + { + "description": "fs:allow-home-read -> This allows non-recursive read access to the `$HOME` folder.", + "type": "string", + "enum": ["fs:allow-home-read"] + }, + { + "description": "fs:allow-home-read-recursive -> This allows full recursive read access to the complete `$HOME` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-home-read-recursive"] + }, + { + "description": "fs:allow-home-write -> This allows non-recursive write access to the `$HOME` folder.", + "type": "string", + "enum": ["fs:allow-home-write"] + }, + { + "description": "fs:allow-home-write-recursive -> This allows full recursive write access to the complete `$HOME` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-home-write-recursive"] + }, + { + "description": "fs:allow-localdata-meta -> This allows non-recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-localdata-meta"] + }, + { + "description": "fs:allow-localdata-meta-recursive -> This allows full recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-localdata-meta-recursive"] + }, + { + "description": "fs:allow-localdata-read -> This allows non-recursive read access to the `$LOCALDATA` folder.", + "type": "string", + "enum": ["fs:allow-localdata-read"] + }, + { + "description": "fs:allow-localdata-read-recursive -> This allows full recursive read access to the complete `$LOCALDATA` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-localdata-read-recursive"] + }, + { + "description": "fs:allow-localdata-write -> This allows non-recursive write access to the `$LOCALDATA` folder.", + "type": "string", + "enum": ["fs:allow-localdata-write"] + }, + { + "description": "fs:allow-localdata-write-recursive -> This allows full recursive write access to the complete `$LOCALDATA` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-localdata-write-recursive"] + }, + { + "description": "fs:allow-log-meta -> This allows non-recursive read access to metadata of the `$LOG` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-log-meta"] + }, + { + "description": "fs:allow-log-meta-recursive -> This allows full recursive read access to metadata of the `$LOG` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-log-meta-recursive"] + }, + { + "description": "fs:allow-log-read -> This allows non-recursive read access to the `$LOG` folder.", + "type": "string", + "enum": ["fs:allow-log-read"] + }, + { + "description": "fs:allow-log-read-recursive -> This allows full recursive read access to the complete `$LOG` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-log-read-recursive"] + }, + { + "description": "fs:allow-log-write -> This allows non-recursive write access to the `$LOG` folder.", + "type": "string", + "enum": ["fs:allow-log-write"] + }, + { + "description": "fs:allow-log-write-recursive -> This allows full recursive write access to the complete `$LOG` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-log-write-recursive"] + }, + { + "description": "fs:allow-picture-meta -> This allows non-recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-picture-meta"] + }, + { + "description": "fs:allow-picture-meta-recursive -> This allows full recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-picture-meta-recursive"] + }, + { + "description": "fs:allow-picture-read -> This allows non-recursive read access to the `$PICTURE` folder.", + "type": "string", + "enum": ["fs:allow-picture-read"] + }, + { + "description": "fs:allow-picture-read-recursive -> This allows full recursive read access to the complete `$PICTURE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-picture-read-recursive"] + }, + { + "description": "fs:allow-picture-write -> This allows non-recursive write access to the `$PICTURE` folder.", + "type": "string", + "enum": ["fs:allow-picture-write"] + }, + { + "description": "fs:allow-picture-write-recursive -> This allows full recursive write access to the complete `$PICTURE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-picture-write-recursive"] + }, + { + "description": "fs:allow-public-meta -> This allows non-recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-public-meta"] + }, + { + "description": "fs:allow-public-meta-recursive -> This allows full recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-public-meta-recursive"] + }, + { + "description": "fs:allow-public-read -> This allows non-recursive read access to the `$PUBLIC` folder.", + "type": "string", + "enum": ["fs:allow-public-read"] + }, + { + "description": "fs:allow-public-read-recursive -> This allows full recursive read access to the complete `$PUBLIC` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-public-read-recursive"] + }, + { + "description": "fs:allow-public-write -> This allows non-recursive write access to the `$PUBLIC` folder.", + "type": "string", + "enum": ["fs:allow-public-write"] + }, + { + "description": "fs:allow-public-write-recursive -> This allows full recursive write access to the complete `$PUBLIC` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-public-write-recursive"] + }, + { + "description": "fs:allow-resource-meta -> This allows non-recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-resource-meta"] + }, + { + "description": "fs:allow-resource-meta-recursive -> This allows full recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-resource-meta-recursive"] + }, + { + "description": "fs:allow-resource-read -> This allows non-recursive read access to the `$RESOURCE` folder.", + "type": "string", + "enum": ["fs:allow-resource-read"] + }, + { + "description": "fs:allow-resource-read-recursive -> This allows full recursive read access to the complete `$RESOURCE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-resource-read-recursive"] + }, + { + "description": "fs:allow-resource-write -> This allows non-recursive write access to the `$RESOURCE` folder.", + "type": "string", + "enum": ["fs:allow-resource-write"] + }, + { + "description": "fs:allow-resource-write-recursive -> This allows full recursive write access to the complete `$RESOURCE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-resource-write-recursive"] + }, + { + "description": "fs:allow-runtime-meta -> This allows non-recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-runtime-meta"] + }, + { + "description": "fs:allow-runtime-meta-recursive -> This allows full recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-runtime-meta-recursive"] + }, + { + "description": "fs:allow-runtime-read -> This allows non-recursive read access to the `$RUNTIME` folder.", + "type": "string", + "enum": ["fs:allow-runtime-read"] + }, + { + "description": "fs:allow-runtime-read-recursive -> This allows full recursive read access to the complete `$RUNTIME` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-runtime-read-recursive"] + }, + { + "description": "fs:allow-runtime-write -> This allows non-recursive write access to the `$RUNTIME` folder.", + "type": "string", + "enum": ["fs:allow-runtime-write"] + }, + { + "description": "fs:allow-runtime-write-recursive -> This allows full recursive write access to the complete `$RUNTIME` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-runtime-write-recursive"] + }, + { + "description": "fs:allow-temp-meta -> This allows non-recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-temp-meta"] + }, + { + "description": "fs:allow-temp-meta-recursive -> This allows full recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-temp-meta-recursive"] + }, + { + "description": "fs:allow-temp-read -> This allows non-recursive read access to the `$TEMP` folder.", + "type": "string", + "enum": ["fs:allow-temp-read"] + }, + { + "description": "fs:allow-temp-read-recursive -> This allows full recursive read access to the complete `$TEMP` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-temp-read-recursive"] + }, + { + "description": "fs:allow-temp-write -> This allows non-recursive write access to the `$TEMP` folder.", + "type": "string", + "enum": ["fs:allow-temp-write"] + }, + { + "description": "fs:allow-temp-write-recursive -> This allows full recursive write access to the complete `$TEMP` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-temp-write-recursive"] + }, + { + "description": "fs:allow-template-meta -> This allows non-recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-template-meta"] + }, + { + "description": "fs:allow-template-meta-recursive -> This allows full recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-template-meta-recursive"] + }, + { + "description": "fs:allow-template-read -> This allows non-recursive read access to the `$TEMPLATE` folder.", + "type": "string", + "enum": ["fs:allow-template-read"] + }, + { + "description": "fs:allow-template-read-recursive -> This allows full recursive read access to the complete `$TEMPLATE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-template-read-recursive"] + }, + { + "description": "fs:allow-template-write -> This allows non-recursive write access to the `$TEMPLATE` folder.", + "type": "string", + "enum": ["fs:allow-template-write"] + }, + { + "description": "fs:allow-template-write-recursive -> This allows full recursive write access to the complete `$TEMPLATE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-template-write-recursive"] + }, + { + "description": "fs:allow-video-meta -> This allows non-recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-video-meta"] + }, + { + "description": "fs:allow-video-meta-recursive -> This allows full recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-video-meta-recursive"] + }, + { + "description": "fs:allow-video-read -> This allows non-recursive read access to the `$VIDEO` folder.", + "type": "string", + "enum": ["fs:allow-video-read"] + }, + { + "description": "fs:allow-video-read-recursive -> This allows full recursive read access to the complete `$VIDEO` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-video-read-recursive"] + }, + { + "description": "fs:allow-video-write -> This allows non-recursive write access to the `$VIDEO` folder.", + "type": "string", + "enum": ["fs:allow-video-write"] + }, + { + "description": "fs:allow-video-write-recursive -> This allows full recursive write access to the complete `$VIDEO` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-video-write-recursive"] + }, + { + "description": "fs:deny-default -> This denies access to dangerous Tauri relevant files and folders by default.", + "type": "string", + "enum": ["fs:deny-default"] + }, + { + "description": "fs:default -> This set of permissions describes the what kind of\nfile system access the `fs` plugin has enabled or denied by default.\n\n#### Granted Permissions\n\nThis default permission set enables read access to the\napplication specific directories (AppConfig, AppData, AppLocalData, AppCache,\nAppLog) and all files and sub directories created in it.\nThe location of these directories depends on the operating system,\nwhere the application is run.\n\nIn general these directories need to be manually created\nby the application at runtime, before accessing files or folders\nin it is possible.\n\nTherefore, it is also allowed to create all of these folders via\nthe `mkdir` command.\n\n#### Denied Permissions\n\nThis default permission set prevents access to critical components\nof the Tauri application by default.\nOn Windows the webview data folder access is denied.\n\n", + "type": "string", + "enum": ["fs:default"] + }, + { + "description": "fs:allow-copy-file -> Enables the copy_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-copy-file"] + }, + { + "description": "fs:allow-create -> Enables the create command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-create"] + }, + { + "description": "fs:allow-exists -> Enables the exists command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-exists"] + }, + { + "description": "fs:allow-fstat -> Enables the fstat command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-fstat"] + }, + { + "description": "fs:allow-ftruncate -> Enables the ftruncate command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-ftruncate"] + }, + { + "description": "fs:allow-lstat -> Enables the lstat command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-lstat"] + }, + { + "description": "fs:allow-mkdir -> Enables the mkdir command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-mkdir"] + }, + { + "description": "fs:allow-open -> Enables the open command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-open"] + }, + { + "description": "fs:allow-read -> Enables the read command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-read"] + }, + { + "description": "fs:allow-read-dir -> Enables the read_dir command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-read-dir"] + }, + { + "description": "fs:allow-read-file -> Enables the read_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-read-file"] + }, + { + "description": "fs:allow-read-text-file -> Enables the read_text_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-read-text-file"] + }, + { + "description": "fs:allow-read-text-file-lines -> Enables the read_text_file_lines command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-read-text-file-lines"] + }, + { + "description": "fs:allow-read-text-file-lines-next -> Enables the read_text_file_lines_next command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-read-text-file-lines-next"] + }, + { + "description": "fs:allow-remove -> Enables the remove command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-remove"] + }, + { + "description": "fs:allow-rename -> Enables the rename command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-rename"] + }, + { + "description": "fs:allow-seek -> Enables the seek command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-seek"] + }, + { + "description": "fs:allow-stat -> Enables the stat command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-stat"] + }, + { + "description": "fs:allow-truncate -> Enables the truncate command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-truncate"] + }, + { + "description": "fs:allow-unwatch -> Enables the unwatch command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-unwatch"] + }, + { + "description": "fs:allow-watch -> Enables the watch command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-watch"] + }, + { + "description": "fs:allow-write -> Enables the write command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-write"] + }, + { + "description": "fs:allow-write-file -> Enables the write_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-write-file"] + }, + { + "description": "fs:allow-write-text-file -> Enables the write_text_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-write-text-file"] + }, + { + "description": "fs:create-app-specific-dirs -> This permissions allows to create the application specific directories.\n", + "type": "string", + "enum": ["fs:create-app-specific-dirs"] + }, + { + "description": "fs:deny-copy-file -> Denies the copy_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-copy-file"] + }, + { + "description": "fs:deny-create -> Denies the create command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-create"] + }, + { + "description": "fs:deny-exists -> Denies the exists command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-exists"] + }, + { + "description": "fs:deny-fstat -> Denies the fstat command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-fstat"] + }, + { + "description": "fs:deny-ftruncate -> Denies the ftruncate command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-ftruncate"] + }, + { + "description": "fs:deny-lstat -> Denies the lstat command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-lstat"] + }, + { + "description": "fs:deny-mkdir -> Denies the mkdir command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-mkdir"] + }, + { + "description": "fs:deny-open -> Denies the open command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-open"] + }, + { + "description": "fs:deny-read -> Denies the read command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-read"] + }, + { + "description": "fs:deny-read-dir -> Denies the read_dir command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-read-dir"] + }, + { + "description": "fs:deny-read-file -> Denies the read_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-read-file"] + }, + { + "description": "fs:deny-read-text-file -> Denies the read_text_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-read-text-file"] + }, + { + "description": "fs:deny-read-text-file-lines -> Denies the read_text_file_lines command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-read-text-file-lines"] + }, + { + "description": "fs:deny-read-text-file-lines-next -> Denies the read_text_file_lines_next command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-read-text-file-lines-next"] + }, + { + "description": "fs:deny-remove -> Denies the remove command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-remove"] + }, + { + "description": "fs:deny-rename -> Denies the rename command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-rename"] + }, + { + "description": "fs:deny-seek -> Denies the seek command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-seek"] + }, + { + "description": "fs:deny-stat -> Denies the stat command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-stat"] + }, + { + "description": "fs:deny-truncate -> Denies the truncate command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-truncate"] + }, + { + "description": "fs:deny-unwatch -> Denies the unwatch command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-unwatch"] + }, + { + "description": "fs:deny-watch -> Denies the watch command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-watch"] + }, + { + "description": "fs:deny-webview-data-linux -> This denies read access to the\n`$APPLOCALDATA` folder on linux as the webview data and configuration values are stored here.\nAllowing access can lead to sensitive information disclosure and should be well considered.", + "type": "string", + "enum": ["fs:deny-webview-data-linux"] + }, + { + "description": "fs:deny-webview-data-windows -> This denies read access to the\n`$APPLOCALDATA/EBWebView` folder on windows as the webview data and configuration values are stored here.\nAllowing access can lead to sensitive information disclosure and should be well considered.", + "type": "string", + "enum": ["fs:deny-webview-data-windows"] + }, + { + "description": "fs:deny-write -> Denies the write command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-write"] + }, + { + "description": "fs:deny-write-file -> Denies the write_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-write-file"] + }, + { + "description": "fs:deny-write-text-file -> Denies the write_text_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-write-text-file"] + }, + { + "description": "fs:read-all -> This enables all read related commands without any pre-configured accessible paths.", + "type": "string", + "enum": ["fs:read-all"] + }, + { + "description": "fs:read-app-specific-dirs-recursive -> This permission allows recursive read functionality on the application\nspecific base directories. \n", + "type": "string", + "enum": ["fs:read-app-specific-dirs-recursive"] + }, + { + "description": "fs:read-dirs -> This enables directory read and file metadata related commands without any pre-configured accessible paths.", + "type": "string", + "enum": ["fs:read-dirs"] + }, + { + "description": "fs:read-files -> This enables file read related commands without any pre-configured accessible paths.", + "type": "string", + "enum": ["fs:read-files"] + }, + { + "description": "fs:read-meta -> This enables all index or metadata related commands without any pre-configured accessible paths.", + "type": "string", + "enum": ["fs:read-meta"] + }, + { + "description": "fs:scope -> An empty permission you can use to modify the global scope.", + "type": "string", + "enum": ["fs:scope"] + }, + { + "description": "fs:scope-app -> This scope permits access to all files and list content of top level directories in the `$APP`folder.", + "type": "string", + "enum": ["fs:scope-app"] + }, + { + "description": "fs:scope-app-index -> This scope permits to list all files and folders in the `$APP`folder.", + "type": "string", + "enum": ["fs:scope-app-index"] + }, + { + "description": "fs:scope-app-recursive -> This scope permits recursive access to the complete `$APP` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-app-recursive"] + }, + { + "description": "fs:scope-appcache -> This scope permits access to all files and list content of top level directories in the `$APPCACHE`folder.", + "type": "string", + "enum": ["fs:scope-appcache"] + }, + { + "description": "fs:scope-appcache-index -> This scope permits to list all files and folders in the `$APPCACHE`folder.", + "type": "string", + "enum": ["fs:scope-appcache-index"] + }, + { + "description": "fs:scope-appcache-recursive -> This scope permits recursive access to the complete `$APPCACHE` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-appcache-recursive"] + }, + { + "description": "fs:scope-appconfig -> This scope permits access to all files and list content of top level directories in the `$APPCONFIG`folder.", + "type": "string", + "enum": ["fs:scope-appconfig"] + }, + { + "description": "fs:scope-appconfig-index -> This scope permits to list all files and folders in the `$APPCONFIG`folder.", + "type": "string", + "enum": ["fs:scope-appconfig-index"] + }, + { + "description": "fs:scope-appconfig-recursive -> This scope permits recursive access to the complete `$APPCONFIG` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-appconfig-recursive"] + }, + { + "description": "fs:scope-appdata -> This scope permits access to all files and list content of top level directories in the `$APPDATA`folder.", + "type": "string", + "enum": ["fs:scope-appdata"] + }, + { + "description": "fs:scope-appdata-index -> This scope permits to list all files and folders in the `$APPDATA`folder.", + "type": "string", + "enum": ["fs:scope-appdata-index"] + }, + { + "description": "fs:scope-appdata-recursive -> This scope permits recursive access to the complete `$APPDATA` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-appdata-recursive"] + }, + { + "description": "fs:scope-applocaldata -> This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA`folder.", + "type": "string", + "enum": ["fs:scope-applocaldata"] + }, + { + "description": "fs:scope-applocaldata-index -> This scope permits to list all files and folders in the `$APPLOCALDATA`folder.", + "type": "string", + "enum": ["fs:scope-applocaldata-index"] + }, + { + "description": "fs:scope-applocaldata-recursive -> This scope permits recursive access to the complete `$APPLOCALDATA` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-applocaldata-recursive"] + }, + { + "description": "fs:scope-applog -> This scope permits access to all files and list content of top level directories in the `$APPLOG`folder.", + "type": "string", + "enum": ["fs:scope-applog"] + }, + { + "description": "fs:scope-applog-index -> This scope permits to list all files and folders in the `$APPLOG`folder.", + "type": "string", + "enum": ["fs:scope-applog-index"] + }, + { + "description": "fs:scope-applog-recursive -> This scope permits recursive access to the complete `$APPLOG` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-applog-recursive"] + }, + { + "description": "fs:scope-audio -> This scope permits access to all files and list content of top level directories in the `$AUDIO`folder.", + "type": "string", + "enum": ["fs:scope-audio"] + }, + { + "description": "fs:scope-audio-index -> This scope permits to list all files and folders in the `$AUDIO`folder.", + "type": "string", + "enum": ["fs:scope-audio-index"] + }, + { + "description": "fs:scope-audio-recursive -> This scope permits recursive access to the complete `$AUDIO` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-audio-recursive"] + }, + { + "description": "fs:scope-cache -> This scope permits access to all files and list content of top level directories in the `$CACHE`folder.", + "type": "string", + "enum": ["fs:scope-cache"] + }, + { + "description": "fs:scope-cache-index -> This scope permits to list all files and folders in the `$CACHE`folder.", + "type": "string", + "enum": ["fs:scope-cache-index"] + }, + { + "description": "fs:scope-cache-recursive -> This scope permits recursive access to the complete `$CACHE` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-cache-recursive"] + }, + { + "description": "fs:scope-config -> This scope permits access to all files and list content of top level directories in the `$CONFIG`folder.", + "type": "string", + "enum": ["fs:scope-config"] + }, + { + "description": "fs:scope-config-index -> This scope permits to list all files and folders in the `$CONFIG`folder.", + "type": "string", + "enum": ["fs:scope-config-index"] + }, + { + "description": "fs:scope-config-recursive -> This scope permits recursive access to the complete `$CONFIG` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-config-recursive"] + }, + { + "description": "fs:scope-data -> This scope permits access to all files and list content of top level directories in the `$DATA`folder.", + "type": "string", + "enum": ["fs:scope-data"] + }, + { + "description": "fs:scope-data-index -> This scope permits to list all files and folders in the `$DATA`folder.", + "type": "string", + "enum": ["fs:scope-data-index"] + }, + { + "description": "fs:scope-data-recursive -> This scope permits recursive access to the complete `$DATA` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-data-recursive"] + }, + { + "description": "fs:scope-desktop -> This scope permits access to all files and list content of top level directories in the `$DESKTOP`folder.", + "type": "string", + "enum": ["fs:scope-desktop"] + }, + { + "description": "fs:scope-desktop-index -> This scope permits to list all files and folders in the `$DESKTOP`folder.", + "type": "string", + "enum": ["fs:scope-desktop-index"] + }, + { + "description": "fs:scope-desktop-recursive -> This scope permits recursive access to the complete `$DESKTOP` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-desktop-recursive"] + }, + { + "description": "fs:scope-document -> This scope permits access to all files and list content of top level directories in the `$DOCUMENT`folder.", + "type": "string", + "enum": ["fs:scope-document"] + }, + { + "description": "fs:scope-document-index -> This scope permits to list all files and folders in the `$DOCUMENT`folder.", + "type": "string", + "enum": ["fs:scope-document-index"] + }, + { + "description": "fs:scope-document-recursive -> This scope permits recursive access to the complete `$DOCUMENT` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-document-recursive"] + }, + { + "description": "fs:scope-download -> This scope permits access to all files and list content of top level directories in the `$DOWNLOAD`folder.", + "type": "string", + "enum": ["fs:scope-download"] + }, + { + "description": "fs:scope-download-index -> This scope permits to list all files and folders in the `$DOWNLOAD`folder.", + "type": "string", + "enum": ["fs:scope-download-index"] + }, + { + "description": "fs:scope-download-recursive -> This scope permits recursive access to the complete `$DOWNLOAD` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-download-recursive"] + }, + { + "description": "fs:scope-exe -> This scope permits access to all files and list content of top level directories in the `$EXE`folder.", + "type": "string", + "enum": ["fs:scope-exe"] + }, + { + "description": "fs:scope-exe-index -> This scope permits to list all files and folders in the `$EXE`folder.", + "type": "string", + "enum": ["fs:scope-exe-index"] + }, + { + "description": "fs:scope-exe-recursive -> This scope permits recursive access to the complete `$EXE` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-exe-recursive"] + }, + { + "description": "fs:scope-font -> This scope permits access to all files and list content of top level directories in the `$FONT`folder.", + "type": "string", + "enum": ["fs:scope-font"] + }, + { + "description": "fs:scope-font-index -> This scope permits to list all files and folders in the `$FONT`folder.", + "type": "string", + "enum": ["fs:scope-font-index"] + }, + { + "description": "fs:scope-font-recursive -> This scope permits recursive access to the complete `$FONT` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-font-recursive"] + }, + { + "description": "fs:scope-home -> This scope permits access to all files and list content of top level directories in the `$HOME`folder.", + "type": "string", + "enum": ["fs:scope-home"] + }, + { + "description": "fs:scope-home-index -> This scope permits to list all files and folders in the `$HOME`folder.", + "type": "string", + "enum": ["fs:scope-home-index"] + }, + { + "description": "fs:scope-home-recursive -> This scope permits recursive access to the complete `$HOME` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-home-recursive"] + }, + { + "description": "fs:scope-localdata -> This scope permits access to all files and list content of top level directories in the `$LOCALDATA`folder.", + "type": "string", + "enum": ["fs:scope-localdata"] + }, + { + "description": "fs:scope-localdata-index -> This scope permits to list all files and folders in the `$LOCALDATA`folder.", + "type": "string", + "enum": ["fs:scope-localdata-index"] + }, + { + "description": "fs:scope-localdata-recursive -> This scope permits recursive access to the complete `$LOCALDATA` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-localdata-recursive"] + }, + { + "description": "fs:scope-log -> This scope permits access to all files and list content of top level directories in the `$LOG`folder.", + "type": "string", + "enum": ["fs:scope-log"] + }, + { + "description": "fs:scope-log-index -> This scope permits to list all files and folders in the `$LOG`folder.", + "type": "string", + "enum": ["fs:scope-log-index"] + }, + { + "description": "fs:scope-log-recursive -> This scope permits recursive access to the complete `$LOG` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-log-recursive"] + }, + { + "description": "fs:scope-picture -> This scope permits access to all files and list content of top level directories in the `$PICTURE`folder.", + "type": "string", + "enum": ["fs:scope-picture"] + }, + { + "description": "fs:scope-picture-index -> This scope permits to list all files and folders in the `$PICTURE`folder.", + "type": "string", + "enum": ["fs:scope-picture-index"] + }, + { + "description": "fs:scope-picture-recursive -> This scope permits recursive access to the complete `$PICTURE` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-picture-recursive"] + }, + { + "description": "fs:scope-public -> This scope permits access to all files and list content of top level directories in the `$PUBLIC`folder.", + "type": "string", + "enum": ["fs:scope-public"] + }, + { + "description": "fs:scope-public-index -> This scope permits to list all files and folders in the `$PUBLIC`folder.", + "type": "string", + "enum": ["fs:scope-public-index"] + }, + { + "description": "fs:scope-public-recursive -> This scope permits recursive access to the complete `$PUBLIC` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-public-recursive"] + }, + { + "description": "fs:scope-resource -> This scope permits access to all files and list content of top level directories in the `$RESOURCE`folder.", + "type": "string", + "enum": ["fs:scope-resource"] + }, + { + "description": "fs:scope-resource-index -> This scope permits to list all files and folders in the `$RESOURCE`folder.", + "type": "string", + "enum": ["fs:scope-resource-index"] + }, + { + "description": "fs:scope-resource-recursive -> This scope permits recursive access to the complete `$RESOURCE` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-resource-recursive"] + }, + { + "description": "fs:scope-runtime -> This scope permits access to all files and list content of top level directories in the `$RUNTIME`folder.", + "type": "string", + "enum": ["fs:scope-runtime"] + }, + { + "description": "fs:scope-runtime-index -> This scope permits to list all files and folders in the `$RUNTIME`folder.", + "type": "string", + "enum": ["fs:scope-runtime-index"] + }, + { + "description": "fs:scope-runtime-recursive -> This scope permits recursive access to the complete `$RUNTIME` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-runtime-recursive"] + }, + { + "description": "fs:scope-temp -> This scope permits access to all files and list content of top level directories in the `$TEMP`folder.", + "type": "string", + "enum": ["fs:scope-temp"] + }, + { + "description": "fs:scope-temp-index -> This scope permits to list all files and folders in the `$TEMP`folder.", + "type": "string", + "enum": ["fs:scope-temp-index"] + }, + { + "description": "fs:scope-temp-recursive -> This scope permits recursive access to the complete `$TEMP` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-temp-recursive"] + }, + { + "description": "fs:scope-template -> This scope permits access to all files and list content of top level directories in the `$TEMPLATE`folder.", + "type": "string", + "enum": ["fs:scope-template"] + }, + { + "description": "fs:scope-template-index -> This scope permits to list all files and folders in the `$TEMPLATE`folder.", + "type": "string", + "enum": ["fs:scope-template-index"] + }, + { + "description": "fs:scope-template-recursive -> This scope permits recursive access to the complete `$TEMPLATE` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-template-recursive"] + }, + { + "description": "fs:scope-video -> This scope permits access to all files and list content of top level directories in the `$VIDEO`folder.", + "type": "string", + "enum": ["fs:scope-video"] + }, + { + "description": "fs:scope-video-index -> This scope permits to list all files and folders in the `$VIDEO`folder.", + "type": "string", + "enum": ["fs:scope-video-index"] + }, + { + "description": "fs:scope-video-recursive -> This scope permits recursive access to the complete `$VIDEO` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-video-recursive"] + }, + { + "description": "fs:write-all -> This enables all write related commands without any pre-configured accessible paths.", + "type": "string", + "enum": ["fs:write-all"] + }, + { + "description": "fs:write-files -> This enables all file write related commands without any pre-configured accessible paths.", + "type": "string", + "enum": ["fs:write-files"] + }, + { + "description": "global-shortcut:default -> No features are enabled by default, as we believe\nthe shortcuts can be inherently dangerous and it is\napplication specific if specific shortcuts should be\nregistered or unregistered.\n", + "type": "string", + "enum": ["global-shortcut:default"] + }, + { + "description": "global-shortcut:allow-is-registered -> Enables the is_registered command without any pre-configured scope.", + "type": "string", + "enum": ["global-shortcut:allow-is-registered"] + }, + { + "description": "global-shortcut:allow-register -> Enables the register command without any pre-configured scope.", + "type": "string", + "enum": ["global-shortcut:allow-register"] + }, + { + "description": "global-shortcut:allow-register-all -> Enables the register_all command without any pre-configured scope.", + "type": "string", + "enum": ["global-shortcut:allow-register-all"] + }, + { + "description": "global-shortcut:allow-unregister -> Enables the unregister command without any pre-configured scope.", + "type": "string", + "enum": ["global-shortcut:allow-unregister"] + }, + { + "description": "global-shortcut:allow-unregister-all -> Enables the unregister_all command without any pre-configured scope.", + "type": "string", + "enum": ["global-shortcut:allow-unregister-all"] + }, + { + "description": "global-shortcut:deny-is-registered -> Denies the is_registered command without any pre-configured scope.", + "type": "string", + "enum": ["global-shortcut:deny-is-registered"] + }, + { + "description": "global-shortcut:deny-register -> Denies the register command without any pre-configured scope.", + "type": "string", + "enum": ["global-shortcut:deny-register"] + }, + { + "description": "global-shortcut:deny-register-all -> Denies the register_all command without any pre-configured scope.", + "type": "string", + "enum": ["global-shortcut:deny-register-all"] + }, + { + "description": "global-shortcut:deny-unregister -> Denies the unregister command without any pre-configured scope.", + "type": "string", + "enum": ["global-shortcut:deny-unregister"] + }, + { + "description": "global-shortcut:deny-unregister-all -> Denies the unregister_all command without any pre-configured scope.", + "type": "string", + "enum": ["global-shortcut:deny-unregister-all"] + }, + { + "description": "notification:default -> This permission set configures which\nnotification features are by default exposed.\n\n#### Granted Permissions\n\nIt allows all notification related features.\n\n", + "type": "string", + "enum": ["notification:default"] + }, + { + "description": "notification:allow-batch -> Enables the batch command without any pre-configured scope.", + "type": "string", + "enum": ["notification:allow-batch"] + }, + { + "description": "notification:allow-cancel -> Enables the cancel command without any pre-configured scope.", + "type": "string", + "enum": ["notification:allow-cancel"] + }, + { + "description": "notification:allow-check-permissions -> Enables the check_permissions command without any pre-configured scope.", + "type": "string", + "enum": ["notification:allow-check-permissions"] + }, + { + "description": "notification:allow-create-channel -> Enables the create_channel command without any pre-configured scope.", + "type": "string", + "enum": ["notification:allow-create-channel"] + }, + { + "description": "notification:allow-delete-channel -> Enables the delete_channel command without any pre-configured scope.", + "type": "string", + "enum": ["notification:allow-delete-channel"] + }, + { + "description": "notification:allow-get-active -> Enables the get_active command without any pre-configured scope.", + "type": "string", + "enum": ["notification:allow-get-active"] + }, + { + "description": "notification:allow-get-pending -> Enables the get_pending command without any pre-configured scope.", + "type": "string", + "enum": ["notification:allow-get-pending"] + }, + { + "description": "notification:allow-is-permission-granted -> Enables the is_permission_granted command without any pre-configured scope.", + "type": "string", + "enum": ["notification:allow-is-permission-granted"] + }, + { + "description": "notification:allow-list-channels -> Enables the list_channels command without any pre-configured scope.", + "type": "string", + "enum": ["notification:allow-list-channels"] + }, + { + "description": "notification:allow-notify -> Enables the notify command without any pre-configured scope.", + "type": "string", + "enum": ["notification:allow-notify"] + }, + { + "description": "notification:allow-permission-state -> Enables the permission_state command without any pre-configured scope.", + "type": "string", + "enum": ["notification:allow-permission-state"] + }, + { + "description": "notification:allow-register-action-types -> Enables the register_action_types command without any pre-configured scope.", + "type": "string", + "enum": ["notification:allow-register-action-types"] + }, + { + "description": "notification:allow-register-listener -> Enables the register_listener command without any pre-configured scope.", + "type": "string", + "enum": ["notification:allow-register-listener"] + }, + { + "description": "notification:allow-remove-active -> Enables the remove_active command without any pre-configured scope.", + "type": "string", + "enum": ["notification:allow-remove-active"] + }, + { + "description": "notification:allow-request-permission -> Enables the request_permission command without any pre-configured scope.", + "type": "string", + "enum": ["notification:allow-request-permission"] + }, + { + "description": "notification:allow-show -> Enables the show command without any pre-configured scope.", + "type": "string", + "enum": ["notification:allow-show"] + }, + { + "description": "notification:deny-batch -> Denies the batch command without any pre-configured scope.", + "type": "string", + "enum": ["notification:deny-batch"] + }, + { + "description": "notification:deny-cancel -> Denies the cancel command without any pre-configured scope.", + "type": "string", + "enum": ["notification:deny-cancel"] + }, + { + "description": "notification:deny-check-permissions -> Denies the check_permissions command without any pre-configured scope.", + "type": "string", + "enum": ["notification:deny-check-permissions"] + }, + { + "description": "notification:deny-create-channel -> Denies the create_channel command without any pre-configured scope.", + "type": "string", + "enum": ["notification:deny-create-channel"] + }, + { + "description": "notification:deny-delete-channel -> Denies the delete_channel command without any pre-configured scope.", + "type": "string", + "enum": ["notification:deny-delete-channel"] + }, + { + "description": "notification:deny-get-active -> Denies the get_active command without any pre-configured scope.", + "type": "string", + "enum": ["notification:deny-get-active"] + }, + { + "description": "notification:deny-get-pending -> Denies the get_pending command without any pre-configured scope.", + "type": "string", + "enum": ["notification:deny-get-pending"] + }, + { + "description": "notification:deny-is-permission-granted -> Denies the is_permission_granted command without any pre-configured scope.", + "type": "string", + "enum": ["notification:deny-is-permission-granted"] + }, + { + "description": "notification:deny-list-channels -> Denies the list_channels command without any pre-configured scope.", + "type": "string", + "enum": ["notification:deny-list-channels"] + }, + { + "description": "notification:deny-notify -> Denies the notify command without any pre-configured scope.", + "type": "string", + "enum": ["notification:deny-notify"] + }, + { + "description": "notification:deny-permission-state -> Denies the permission_state command without any pre-configured scope.", + "type": "string", + "enum": ["notification:deny-permission-state"] + }, + { + "description": "notification:deny-register-action-types -> Denies the register_action_types command without any pre-configured scope.", + "type": "string", + "enum": ["notification:deny-register-action-types"] + }, + { + "description": "notification:deny-register-listener -> Denies the register_listener command without any pre-configured scope.", + "type": "string", + "enum": ["notification:deny-register-listener"] + }, + { + "description": "notification:deny-remove-active -> Denies the remove_active command without any pre-configured scope.", + "type": "string", + "enum": ["notification:deny-remove-active"] + }, + { + "description": "notification:deny-request-permission -> Denies the request_permission command without any pre-configured scope.", + "type": "string", + "enum": ["notification:deny-request-permission"] + }, + { + "description": "notification:deny-show -> Denies the show command without any pre-configured scope.", + "type": "string", + "enum": ["notification:deny-show"] + }, + { + "description": "process:default -> This permission set configures which\nprocess feeatures are by default exposed.\n\n#### Granted Permissions\n\nThis enables to quit via `allow-exit` and restart via `allow-restart`\nthe application.\n", + "type": "string", + "enum": ["process:default"] + }, + { + "description": "process:allow-exit -> Enables the exit command without any pre-configured scope.", + "type": "string", + "enum": ["process:allow-exit"] + }, + { + "description": "process:allow-restart -> Enables the restart command without any pre-configured scope.", + "type": "string", + "enum": ["process:allow-restart"] + }, + { + "description": "process:deny-exit -> Denies the exit command without any pre-configured scope.", + "type": "string", + "enum": ["process:deny-exit"] + }, + { + "description": "process:deny-restart -> Denies the restart command without any pre-configured scope.", + "type": "string", + "enum": ["process:deny-restart"] + }, + { + "description": "shell:default -> This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality without any specific\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n", + "type": "string", + "enum": ["shell:default"] + }, + { + "description": "shell:allow-execute -> Enables the execute command without any pre-configured scope.", + "type": "string", + "enum": ["shell:allow-execute"] + }, + { + "description": "shell:allow-kill -> Enables the kill command without any pre-configured scope.", + "type": "string", + "enum": ["shell:allow-kill"] + }, + { + "description": "shell:allow-open -> Enables the open command without any pre-configured scope.", + "type": "string", + "enum": ["shell:allow-open"] + }, + { + "description": "shell:allow-spawn -> Enables the spawn command without any pre-configured scope.", + "type": "string", + "enum": ["shell:allow-spawn"] + }, + { + "description": "shell:allow-stdin-write -> Enables the stdin_write command without any pre-configured scope.", + "type": "string", + "enum": ["shell:allow-stdin-write"] + }, + { + "description": "shell:deny-execute -> Denies the execute command without any pre-configured scope.", + "type": "string", + "enum": ["shell:deny-execute"] + }, + { + "description": "shell:deny-kill -> Denies the kill command without any pre-configured scope.", + "type": "string", + "enum": ["shell:deny-kill"] + }, + { + "description": "shell:deny-open -> Denies the open command without any pre-configured scope.", + "type": "string", + "enum": ["shell:deny-open"] + }, + { + "description": "shell:deny-spawn -> Denies the spawn command without any pre-configured scope.", + "type": "string", + "enum": ["shell:deny-spawn"] + }, + { + "description": "shell:deny-stdin-write -> Denies the stdin_write command without any pre-configured scope.", + "type": "string", + "enum": ["shell:deny-stdin-write"] + }, + { + "description": "updater:default -> This permission set configures which kind of\nupdater functions are exposed to the frontend.\n\n#### Granted Permissions\n\nThe full workflow from checking for updates to installing them\nis enabled.\n\n", + "type": "string", + "enum": ["updater:default"] + }, + { + "description": "updater:allow-check -> Enables the check command without any pre-configured scope.", + "type": "string", + "enum": ["updater:allow-check"] + }, + { + "description": "updater:allow-download -> Enables the download command without any pre-configured scope.", + "type": "string", + "enum": ["updater:allow-download"] + }, + { + "description": "updater:allow-download-and-install -> Enables the download_and_install command without any pre-configured scope.", + "type": "string", + "enum": ["updater:allow-download-and-install"] + }, + { + "description": "updater:allow-install -> Enables the install command without any pre-configured scope.", + "type": "string", + "enum": ["updater:allow-install"] + }, + { + "description": "updater:deny-check -> Denies the check command without any pre-configured scope.", + "type": "string", + "enum": ["updater:deny-check"] + }, + { + "description": "updater:deny-download -> Denies the download command without any pre-configured scope.", + "type": "string", + "enum": ["updater:deny-download"] + }, + { + "description": "updater:deny-download-and-install -> Denies the download_and_install command without any pre-configured scope.", + "type": "string", + "enum": ["updater:deny-download-and-install"] + }, + { + "description": "updater:deny-install -> Denies the install command without any pre-configured scope.", + "type": "string", + "enum": ["updater:deny-install"] + } + ] + }, + "Value": { + "description": "All supported ACL values.", + "anyOf": [ + { + "description": "Represents a null JSON value.", + "type": "null" + }, + { + "description": "Represents a [`bool`].", + "type": "boolean" + }, + { + "description": "Represents a valid ACL [`Number`].", + "allOf": [ + { + "$ref": "#/definitions/Number" + } + ] + }, + { + "description": "Represents a [`String`].", + "type": "string" + }, + { + "description": "Represents a list of other [`Value`]s.", + "type": "array", + "items": { + "$ref": "#/definitions/Value" + } + }, + { + "description": "Represents a map of [`String`] keys to [`Value`]s.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/Value" + } + } + ] + }, + "Number": { + "description": "A valid ACL number.", + "anyOf": [ + { + "description": "Represents an [`i64`].", + "type": "integer", + "format": "int64" + }, + { + "description": "Represents a [`f64`].", + "type": "number", + "format": "double" + } + ] + }, + "Target": { + "description": "Platform target.", + "oneOf": [ + { + "description": "MacOS.", + "type": "string", + "enum": ["macOS"] + }, + { + "description": "Windows.", + "type": "string", + "enum": ["windows"] + }, + { + "description": "Linux.", + "type": "string", + "enum": ["linux"] + }, + { + "description": "Android.", + "type": "string", + "enum": ["android"] + }, + { + "description": "iOS.", + "type": "string", + "enum": ["iOS"] + } + ] + }, + "ShellAllowedArg": { + "description": "A command argument allowed to be executed by the webview API.", + "anyOf": [ + { + "description": "A non-configurable argument that is passed to the command in the order it was specified.", + "type": "string" + }, + { + "description": "A variable that is set while calling the command from the webview API.", + "type": "object", + "required": ["validator"], + "properties": { + "raw": { + "description": "Marks the validator as a raw regex, meaning the plugin should not make any modification at runtime.\n\nThis means the regex will not match on the entire string by default, which might be exploited if your regex allow unexpected input to be considered valid. When using this option, make sure your regex is correct.", + "default": false, + "type": "boolean" + }, + "validator": { + "description": "[regex] validator to require passed values to conform to an expected input.\n\nThis will require the argument value passed to this variable to match the `validator` regex before it will be executed.\n\nThe regex string is by default surrounded by `^...$` to match the full string. For example the `https?://\\w+` regex would be registered as `^https?://\\w+$`.\n\n[regex]: ", + "type": "string" + } + }, + "additionalProperties": false + } + ] + }, + "ShellAllowedArgs": { + "description": "A set of command arguments allowed to be executed by the webview API.\n\nA value of `true` will allow any arguments to be passed to the command. `false` will disable all arguments. A list of [`ShellAllowedArg`] will set those arguments as the only valid arguments to be passed to the attached command configuration.", + "anyOf": [ + { + "description": "Use a simple boolean to allow all or disable all arguments to this command configuration.", + "type": "boolean" + }, + { + "description": "A specific set of [`ShellAllowedArg`] that are valid to call for the command configuration.", + "type": "array", + "items": { + "$ref": "#/definitions/ShellAllowedArg" + } + } + ] + } + } +} diff --git a/src-tauri/gen/schemas/macOS-schema.json b/src-tauri/gen/schemas/macOS-schema.json new file mode 100644 index 0000000..1d67880 --- /dev/null +++ b/src-tauri/gen/schemas/macOS-schema.json @@ -0,0 +1,5171 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "CapabilityFile", + "description": "Capability formats accepted in a capability file.", + "anyOf": [ + { + "description": "A single capability.", + "allOf": [ + { + "$ref": "#/definitions/Capability" + } + ] + }, + { + "description": "A list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + }, + { + "description": "A list of capabilities.", + "type": "object", + "required": ["capabilities"], + "properties": { + "capabilities": { + "description": "The list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + } + } + } + ], + "definitions": { + "Capability": { + "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows fine grained access to the Tauri core, application, or plugin commands. If a window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, \"platforms\": [\"macOS\",\"windows\"] } ```", + "type": "object", + "required": ["identifier", "permissions"], + "properties": { + "identifier": { + "description": "Identifier of the capability.\n\n## Example\n\n`main-user-files-write`", + "type": "string" + }, + "description": { + "description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.", + "default": "", + "type": "string" + }, + "remote": { + "description": "Configure remote URLs that can use the capability permissions.\n\nThis setting is optional and defaults to not being set, as our default use case is that the content is served from our local application.\n\n:::caution Make sure you understand the security implications of providing remote sources with local system access. :::\n\n## Example\n\n```json { \"urls\": [\"https://*.mydomain.dev\"] } ```", + "anyOf": [ + { + "$ref": "#/definitions/CapabilityRemote" + }, + { + "type": "null" + } + ] + }, + "local": { + "description": "Whether this capability is enabled for local app URLs or not. Defaults to `true`.", + "default": true, + "type": "boolean" + }, + "windows": { + "description": "List of windows that are affected by this capability. Can be a glob pattern.\n\nOn multiwebview windows, prefer [`Self::webviews`] for a fine grained access control.\n\n## Example\n\n`[\"main\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "webviews": { + "description": "List of webviews that are affected by this capability. Can be a glob pattern.\n\nThis is only required when using on multiwebview contexts, by default all child webviews of a window that matches [`Self::windows`] are linked.\n\n## Example\n\n`[\"sub-webview-one\", \"sub-webview-two\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "permissions": { + "description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required.\n\n## Example\n\n```json [ \"core:default\", \"shell:allow-open\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] } ```", + "type": "array", + "items": { + "$ref": "#/definitions/PermissionEntry" + }, + "uniqueItems": true + }, + "platforms": { + "description": "Limit which target platforms this capability applies to.\n\nBy default all platforms are targeted.\n\n## Example\n\n`[\"macOS\",\"windows\"]`", + "type": ["array", "null"], + "items": { + "$ref": "#/definitions/Target" + } + } + } + }, + "CapabilityRemote": { + "description": "Configuration for remote URLs that are associated with the capability.", + "type": "object", + "required": ["urls"], + "properties": { + "urls": { + "description": "Remote domains this capability refers to using the [URLPattern standard](https://urlpattern.spec.whatwg.org/).\n\n## Examples\n\n- \"https://*.mydomain.dev\": allows subdomains of mydomain.dev - \"https://mydomain.dev/api/*\": allows any subpath of mydomain.dev/api", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "PermissionEntry": { + "description": "An entry for a permission value in a [`Capability`] can be either a raw permission [`Identifier`] or an object that references a permission and extends its scope.", + "anyOf": [ + { + "description": "Reference a permission or permission set by identifier.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + }, + { + "description": "Reference a permission or permission set by identifier and extends its scope.", + "type": "object", + "oneOf": [ + { + "type": "object", + "required": ["identifier"], + "properties": { + "identifier": { + "oneOf": [ + { + "description": "fs:default -> This set of permissions describes the what kind of\nfile system access the `fs` plugin has enabled or denied by default.\n\n#### Granted Permissions\n\nThis default permission set enables read access to the\napplication specific directories (AppConfig, AppData, AppLocalData, AppCache,\nAppLog) and all files and sub directories created in it.\nThe location of these directories depends on the operating system,\nwhere the application is run.\n\nIn general these directories need to be manually created\nby the application at runtime, before accessing files or folders\nin it is possible.\n\nTherefore, it is also allowed to create all of these folders via\nthe `mkdir` command.\n\n#### Denied Permissions\n\nThis default permission set prevents access to critical components\nof the Tauri application by default.\nOn Windows the webview data folder access is denied.\n\n", + "type": "string", + "enum": ["fs:default"] + }, + { + "description": "fs:allow-app-meta -> This allows non-recursive read access to metadata of the `$APP` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-app-meta"] + }, + { + "description": "fs:allow-app-meta-recursive -> This allows full recursive read access to metadata of the `$APP` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-app-meta-recursive"] + }, + { + "description": "fs:allow-app-read -> This allows non-recursive read access to the `$APP` folder.", + "type": "string", + "enum": ["fs:allow-app-read"] + }, + { + "description": "fs:allow-app-read-recursive -> This allows full recursive read access to the complete `$APP` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-app-read-recursive"] + }, + { + "description": "fs:allow-app-write -> This allows non-recursive write access to the `$APP` folder.", + "type": "string", + "enum": ["fs:allow-app-write"] + }, + { + "description": "fs:allow-app-write-recursive -> This allows full recursive write access to the complete `$APP` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-app-write-recursive"] + }, + { + "description": "fs:allow-appcache-meta -> This allows non-recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-appcache-meta"] + }, + { + "description": "fs:allow-appcache-meta-recursive -> This allows full recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-appcache-meta-recursive"] + }, + { + "description": "fs:allow-appcache-read -> This allows non-recursive read access to the `$APPCACHE` folder.", + "type": "string", + "enum": ["fs:allow-appcache-read"] + }, + { + "description": "fs:allow-appcache-read-recursive -> This allows full recursive read access to the complete `$APPCACHE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-appcache-read-recursive"] + }, + { + "description": "fs:allow-appcache-write -> This allows non-recursive write access to the `$APPCACHE` folder.", + "type": "string", + "enum": ["fs:allow-appcache-write"] + }, + { + "description": "fs:allow-appcache-write-recursive -> This allows full recursive write access to the complete `$APPCACHE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-appcache-write-recursive"] + }, + { + "description": "fs:allow-appconfig-meta -> This allows non-recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-appconfig-meta"] + }, + { + "description": "fs:allow-appconfig-meta-recursive -> This allows full recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-appconfig-meta-recursive"] + }, + { + "description": "fs:allow-appconfig-read -> This allows non-recursive read access to the `$APPCONFIG` folder.", + "type": "string", + "enum": ["fs:allow-appconfig-read"] + }, + { + "description": "fs:allow-appconfig-read-recursive -> This allows full recursive read access to the complete `$APPCONFIG` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-appconfig-read-recursive"] + }, + { + "description": "fs:allow-appconfig-write -> This allows non-recursive write access to the `$APPCONFIG` folder.", + "type": "string", + "enum": ["fs:allow-appconfig-write"] + }, + { + "description": "fs:allow-appconfig-write-recursive -> This allows full recursive write access to the complete `$APPCONFIG` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-appconfig-write-recursive"] + }, + { + "description": "fs:allow-appdata-meta -> This allows non-recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-appdata-meta"] + }, + { + "description": "fs:allow-appdata-meta-recursive -> This allows full recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-appdata-meta-recursive"] + }, + { + "description": "fs:allow-appdata-read -> This allows non-recursive read access to the `$APPDATA` folder.", + "type": "string", + "enum": ["fs:allow-appdata-read"] + }, + { + "description": "fs:allow-appdata-read-recursive -> This allows full recursive read access to the complete `$APPDATA` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-appdata-read-recursive"] + }, + { + "description": "fs:allow-appdata-write -> This allows non-recursive write access to the `$APPDATA` folder.", + "type": "string", + "enum": ["fs:allow-appdata-write"] + }, + { + "description": "fs:allow-appdata-write-recursive -> This allows full recursive write access to the complete `$APPDATA` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-appdata-write-recursive"] + }, + { + "description": "fs:allow-applocaldata-meta -> This allows non-recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-applocaldata-meta"] + }, + { + "description": "fs:allow-applocaldata-meta-recursive -> This allows full recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-applocaldata-meta-recursive"] + }, + { + "description": "fs:allow-applocaldata-read -> This allows non-recursive read access to the `$APPLOCALDATA` folder.", + "type": "string", + "enum": ["fs:allow-applocaldata-read"] + }, + { + "description": "fs:allow-applocaldata-read-recursive -> This allows full recursive read access to the complete `$APPLOCALDATA` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-applocaldata-read-recursive"] + }, + { + "description": "fs:allow-applocaldata-write -> This allows non-recursive write access to the `$APPLOCALDATA` folder.", + "type": "string", + "enum": ["fs:allow-applocaldata-write"] + }, + { + "description": "fs:allow-applocaldata-write-recursive -> This allows full recursive write access to the complete `$APPLOCALDATA` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-applocaldata-write-recursive"] + }, + { + "description": "fs:allow-applog-meta -> This allows non-recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-applog-meta"] + }, + { + "description": "fs:allow-applog-meta-recursive -> This allows full recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-applog-meta-recursive"] + }, + { + "description": "fs:allow-applog-read -> This allows non-recursive read access to the `$APPLOG` folder.", + "type": "string", + "enum": ["fs:allow-applog-read"] + }, + { + "description": "fs:allow-applog-read-recursive -> This allows full recursive read access to the complete `$APPLOG` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-applog-read-recursive"] + }, + { + "description": "fs:allow-applog-write -> This allows non-recursive write access to the `$APPLOG` folder.", + "type": "string", + "enum": ["fs:allow-applog-write"] + }, + { + "description": "fs:allow-applog-write-recursive -> This allows full recursive write access to the complete `$APPLOG` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-applog-write-recursive"] + }, + { + "description": "fs:allow-audio-meta -> This allows non-recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-audio-meta"] + }, + { + "description": "fs:allow-audio-meta-recursive -> This allows full recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-audio-meta-recursive"] + }, + { + "description": "fs:allow-audio-read -> This allows non-recursive read access to the `$AUDIO` folder.", + "type": "string", + "enum": ["fs:allow-audio-read"] + }, + { + "description": "fs:allow-audio-read-recursive -> This allows full recursive read access to the complete `$AUDIO` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-audio-read-recursive"] + }, + { + "description": "fs:allow-audio-write -> This allows non-recursive write access to the `$AUDIO` folder.", + "type": "string", + "enum": ["fs:allow-audio-write"] + }, + { + "description": "fs:allow-audio-write-recursive -> This allows full recursive write access to the complete `$AUDIO` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-audio-write-recursive"] + }, + { + "description": "fs:allow-cache-meta -> This allows non-recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-cache-meta"] + }, + { + "description": "fs:allow-cache-meta-recursive -> This allows full recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-cache-meta-recursive"] + }, + { + "description": "fs:allow-cache-read -> This allows non-recursive read access to the `$CACHE` folder.", + "type": "string", + "enum": ["fs:allow-cache-read"] + }, + { + "description": "fs:allow-cache-read-recursive -> This allows full recursive read access to the complete `$CACHE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-cache-read-recursive"] + }, + { + "description": "fs:allow-cache-write -> This allows non-recursive write access to the `$CACHE` folder.", + "type": "string", + "enum": ["fs:allow-cache-write"] + }, + { + "description": "fs:allow-cache-write-recursive -> This allows full recursive write access to the complete `$CACHE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-cache-write-recursive"] + }, + { + "description": "fs:allow-config-meta -> This allows non-recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-config-meta"] + }, + { + "description": "fs:allow-config-meta-recursive -> This allows full recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-config-meta-recursive"] + }, + { + "description": "fs:allow-config-read -> This allows non-recursive read access to the `$CONFIG` folder.", + "type": "string", + "enum": ["fs:allow-config-read"] + }, + { + "description": "fs:allow-config-read-recursive -> This allows full recursive read access to the complete `$CONFIG` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-config-read-recursive"] + }, + { + "description": "fs:allow-config-write -> This allows non-recursive write access to the `$CONFIG` folder.", + "type": "string", + "enum": ["fs:allow-config-write"] + }, + { + "description": "fs:allow-config-write-recursive -> This allows full recursive write access to the complete `$CONFIG` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-config-write-recursive"] + }, + { + "description": "fs:allow-data-meta -> This allows non-recursive read access to metadata of the `$DATA` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-data-meta"] + }, + { + "description": "fs:allow-data-meta-recursive -> This allows full recursive read access to metadata of the `$DATA` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-data-meta-recursive"] + }, + { + "description": "fs:allow-data-read -> This allows non-recursive read access to the `$DATA` folder.", + "type": "string", + "enum": ["fs:allow-data-read"] + }, + { + "description": "fs:allow-data-read-recursive -> This allows full recursive read access to the complete `$DATA` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-data-read-recursive"] + }, + { + "description": "fs:allow-data-write -> This allows non-recursive write access to the `$DATA` folder.", + "type": "string", + "enum": ["fs:allow-data-write"] + }, + { + "description": "fs:allow-data-write-recursive -> This allows full recursive write access to the complete `$DATA` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-data-write-recursive"] + }, + { + "description": "fs:allow-desktop-meta -> This allows non-recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-desktop-meta"] + }, + { + "description": "fs:allow-desktop-meta-recursive -> This allows full recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-desktop-meta-recursive"] + }, + { + "description": "fs:allow-desktop-read -> This allows non-recursive read access to the `$DESKTOP` folder.", + "type": "string", + "enum": ["fs:allow-desktop-read"] + }, + { + "description": "fs:allow-desktop-read-recursive -> This allows full recursive read access to the complete `$DESKTOP` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-desktop-read-recursive"] + }, + { + "description": "fs:allow-desktop-write -> This allows non-recursive write access to the `$DESKTOP` folder.", + "type": "string", + "enum": ["fs:allow-desktop-write"] + }, + { + "description": "fs:allow-desktop-write-recursive -> This allows full recursive write access to the complete `$DESKTOP` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-desktop-write-recursive"] + }, + { + "description": "fs:allow-document-meta -> This allows non-recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-document-meta"] + }, + { + "description": "fs:allow-document-meta-recursive -> This allows full recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-document-meta-recursive"] + }, + { + "description": "fs:allow-document-read -> This allows non-recursive read access to the `$DOCUMENT` folder.", + "type": "string", + "enum": ["fs:allow-document-read"] + }, + { + "description": "fs:allow-document-read-recursive -> This allows full recursive read access to the complete `$DOCUMENT` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-document-read-recursive"] + }, + { + "description": "fs:allow-document-write -> This allows non-recursive write access to the `$DOCUMENT` folder.", + "type": "string", + "enum": ["fs:allow-document-write"] + }, + { + "description": "fs:allow-document-write-recursive -> This allows full recursive write access to the complete `$DOCUMENT` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-document-write-recursive"] + }, + { + "description": "fs:allow-download-meta -> This allows non-recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-download-meta"] + }, + { + "description": "fs:allow-download-meta-recursive -> This allows full recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-download-meta-recursive"] + }, + { + "description": "fs:allow-download-read -> This allows non-recursive read access to the `$DOWNLOAD` folder.", + "type": "string", + "enum": ["fs:allow-download-read"] + }, + { + "description": "fs:allow-download-read-recursive -> This allows full recursive read access to the complete `$DOWNLOAD` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-download-read-recursive"] + }, + { + "description": "fs:allow-download-write -> This allows non-recursive write access to the `$DOWNLOAD` folder.", + "type": "string", + "enum": ["fs:allow-download-write"] + }, + { + "description": "fs:allow-download-write-recursive -> This allows full recursive write access to the complete `$DOWNLOAD` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-download-write-recursive"] + }, + { + "description": "fs:allow-exe-meta -> This allows non-recursive read access to metadata of the `$EXE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-exe-meta"] + }, + { + "description": "fs:allow-exe-meta-recursive -> This allows full recursive read access to metadata of the `$EXE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-exe-meta-recursive"] + }, + { + "description": "fs:allow-exe-read -> This allows non-recursive read access to the `$EXE` folder.", + "type": "string", + "enum": ["fs:allow-exe-read"] + }, + { + "description": "fs:allow-exe-read-recursive -> This allows full recursive read access to the complete `$EXE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-exe-read-recursive"] + }, + { + "description": "fs:allow-exe-write -> This allows non-recursive write access to the `$EXE` folder.", + "type": "string", + "enum": ["fs:allow-exe-write"] + }, + { + "description": "fs:allow-exe-write-recursive -> This allows full recursive write access to the complete `$EXE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-exe-write-recursive"] + }, + { + "description": "fs:allow-font-meta -> This allows non-recursive read access to metadata of the `$FONT` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-font-meta"] + }, + { + "description": "fs:allow-font-meta-recursive -> This allows full recursive read access to metadata of the `$FONT` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-font-meta-recursive"] + }, + { + "description": "fs:allow-font-read -> This allows non-recursive read access to the `$FONT` folder.", + "type": "string", + "enum": ["fs:allow-font-read"] + }, + { + "description": "fs:allow-font-read-recursive -> This allows full recursive read access to the complete `$FONT` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-font-read-recursive"] + }, + { + "description": "fs:allow-font-write -> This allows non-recursive write access to the `$FONT` folder.", + "type": "string", + "enum": ["fs:allow-font-write"] + }, + { + "description": "fs:allow-font-write-recursive -> This allows full recursive write access to the complete `$FONT` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-font-write-recursive"] + }, + { + "description": "fs:allow-home-meta -> This allows non-recursive read access to metadata of the `$HOME` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-home-meta"] + }, + { + "description": "fs:allow-home-meta-recursive -> This allows full recursive read access to metadata of the `$HOME` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-home-meta-recursive"] + }, + { + "description": "fs:allow-home-read -> This allows non-recursive read access to the `$HOME` folder.", + "type": "string", + "enum": ["fs:allow-home-read"] + }, + { + "description": "fs:allow-home-read-recursive -> This allows full recursive read access to the complete `$HOME` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-home-read-recursive"] + }, + { + "description": "fs:allow-home-write -> This allows non-recursive write access to the `$HOME` folder.", + "type": "string", + "enum": ["fs:allow-home-write"] + }, + { + "description": "fs:allow-home-write-recursive -> This allows full recursive write access to the complete `$HOME` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-home-write-recursive"] + }, + { + "description": "fs:allow-localdata-meta -> This allows non-recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-localdata-meta"] + }, + { + "description": "fs:allow-localdata-meta-recursive -> This allows full recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-localdata-meta-recursive"] + }, + { + "description": "fs:allow-localdata-read -> This allows non-recursive read access to the `$LOCALDATA` folder.", + "type": "string", + "enum": ["fs:allow-localdata-read"] + }, + { + "description": "fs:allow-localdata-read-recursive -> This allows full recursive read access to the complete `$LOCALDATA` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-localdata-read-recursive"] + }, + { + "description": "fs:allow-localdata-write -> This allows non-recursive write access to the `$LOCALDATA` folder.", + "type": "string", + "enum": ["fs:allow-localdata-write"] + }, + { + "description": "fs:allow-localdata-write-recursive -> This allows full recursive write access to the complete `$LOCALDATA` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-localdata-write-recursive"] + }, + { + "description": "fs:allow-log-meta -> This allows non-recursive read access to metadata of the `$LOG` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-log-meta"] + }, + { + "description": "fs:allow-log-meta-recursive -> This allows full recursive read access to metadata of the `$LOG` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-log-meta-recursive"] + }, + { + "description": "fs:allow-log-read -> This allows non-recursive read access to the `$LOG` folder.", + "type": "string", + "enum": ["fs:allow-log-read"] + }, + { + "description": "fs:allow-log-read-recursive -> This allows full recursive read access to the complete `$LOG` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-log-read-recursive"] + }, + { + "description": "fs:allow-log-write -> This allows non-recursive write access to the `$LOG` folder.", + "type": "string", + "enum": ["fs:allow-log-write"] + }, + { + "description": "fs:allow-log-write-recursive -> This allows full recursive write access to the complete `$LOG` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-log-write-recursive"] + }, + { + "description": "fs:allow-picture-meta -> This allows non-recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-picture-meta"] + }, + { + "description": "fs:allow-picture-meta-recursive -> This allows full recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-picture-meta-recursive"] + }, + { + "description": "fs:allow-picture-read -> This allows non-recursive read access to the `$PICTURE` folder.", + "type": "string", + "enum": ["fs:allow-picture-read"] + }, + { + "description": "fs:allow-picture-read-recursive -> This allows full recursive read access to the complete `$PICTURE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-picture-read-recursive"] + }, + { + "description": "fs:allow-picture-write -> This allows non-recursive write access to the `$PICTURE` folder.", + "type": "string", + "enum": ["fs:allow-picture-write"] + }, + { + "description": "fs:allow-picture-write-recursive -> This allows full recursive write access to the complete `$PICTURE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-picture-write-recursive"] + }, + { + "description": "fs:allow-public-meta -> This allows non-recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-public-meta"] + }, + { + "description": "fs:allow-public-meta-recursive -> This allows full recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-public-meta-recursive"] + }, + { + "description": "fs:allow-public-read -> This allows non-recursive read access to the `$PUBLIC` folder.", + "type": "string", + "enum": ["fs:allow-public-read"] + }, + { + "description": "fs:allow-public-read-recursive -> This allows full recursive read access to the complete `$PUBLIC` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-public-read-recursive"] + }, + { + "description": "fs:allow-public-write -> This allows non-recursive write access to the `$PUBLIC` folder.", + "type": "string", + "enum": ["fs:allow-public-write"] + }, + { + "description": "fs:allow-public-write-recursive -> This allows full recursive write access to the complete `$PUBLIC` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-public-write-recursive"] + }, + { + "description": "fs:allow-resource-meta -> This allows non-recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-resource-meta"] + }, + { + "description": "fs:allow-resource-meta-recursive -> This allows full recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-resource-meta-recursive"] + }, + { + "description": "fs:allow-resource-read -> This allows non-recursive read access to the `$RESOURCE` folder.", + "type": "string", + "enum": ["fs:allow-resource-read"] + }, + { + "description": "fs:allow-resource-read-recursive -> This allows full recursive read access to the complete `$RESOURCE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-resource-read-recursive"] + }, + { + "description": "fs:allow-resource-write -> This allows non-recursive write access to the `$RESOURCE` folder.", + "type": "string", + "enum": ["fs:allow-resource-write"] + }, + { + "description": "fs:allow-resource-write-recursive -> This allows full recursive write access to the complete `$RESOURCE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-resource-write-recursive"] + }, + { + "description": "fs:allow-runtime-meta -> This allows non-recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-runtime-meta"] + }, + { + "description": "fs:allow-runtime-meta-recursive -> This allows full recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-runtime-meta-recursive"] + }, + { + "description": "fs:allow-runtime-read -> This allows non-recursive read access to the `$RUNTIME` folder.", + "type": "string", + "enum": ["fs:allow-runtime-read"] + }, + { + "description": "fs:allow-runtime-read-recursive -> This allows full recursive read access to the complete `$RUNTIME` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-runtime-read-recursive"] + }, + { + "description": "fs:allow-runtime-write -> This allows non-recursive write access to the `$RUNTIME` folder.", + "type": "string", + "enum": ["fs:allow-runtime-write"] + }, + { + "description": "fs:allow-runtime-write-recursive -> This allows full recursive write access to the complete `$RUNTIME` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-runtime-write-recursive"] + }, + { + "description": "fs:allow-temp-meta -> This allows non-recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-temp-meta"] + }, + { + "description": "fs:allow-temp-meta-recursive -> This allows full recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-temp-meta-recursive"] + }, + { + "description": "fs:allow-temp-read -> This allows non-recursive read access to the `$TEMP` folder.", + "type": "string", + "enum": ["fs:allow-temp-read"] + }, + { + "description": "fs:allow-temp-read-recursive -> This allows full recursive read access to the complete `$TEMP` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-temp-read-recursive"] + }, + { + "description": "fs:allow-temp-write -> This allows non-recursive write access to the `$TEMP` folder.", + "type": "string", + "enum": ["fs:allow-temp-write"] + }, + { + "description": "fs:allow-temp-write-recursive -> This allows full recursive write access to the complete `$TEMP` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-temp-write-recursive"] + }, + { + "description": "fs:allow-template-meta -> This allows non-recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-template-meta"] + }, + { + "description": "fs:allow-template-meta-recursive -> This allows full recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-template-meta-recursive"] + }, + { + "description": "fs:allow-template-read -> This allows non-recursive read access to the `$TEMPLATE` folder.", + "type": "string", + "enum": ["fs:allow-template-read"] + }, + { + "description": "fs:allow-template-read-recursive -> This allows full recursive read access to the complete `$TEMPLATE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-template-read-recursive"] + }, + { + "description": "fs:allow-template-write -> This allows non-recursive write access to the `$TEMPLATE` folder.", + "type": "string", + "enum": ["fs:allow-template-write"] + }, + { + "description": "fs:allow-template-write-recursive -> This allows full recursive write access to the complete `$TEMPLATE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-template-write-recursive"] + }, + { + "description": "fs:allow-video-meta -> This allows non-recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-video-meta"] + }, + { + "description": "fs:allow-video-meta-recursive -> This allows full recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-video-meta-recursive"] + }, + { + "description": "fs:allow-video-read -> This allows non-recursive read access to the `$VIDEO` folder.", + "type": "string", + "enum": ["fs:allow-video-read"] + }, + { + "description": "fs:allow-video-read-recursive -> This allows full recursive read access to the complete `$VIDEO` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-video-read-recursive"] + }, + { + "description": "fs:allow-video-write -> This allows non-recursive write access to the `$VIDEO` folder.", + "type": "string", + "enum": ["fs:allow-video-write"] + }, + { + "description": "fs:allow-video-write-recursive -> This allows full recursive write access to the complete `$VIDEO` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-video-write-recursive"] + }, + { + "description": "fs:deny-default -> This denies access to dangerous Tauri relevant files and folders by default.", + "type": "string", + "enum": ["fs:deny-default"] + }, + { + "description": "fs:allow-copy-file -> Enables the copy_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-copy-file"] + }, + { + "description": "fs:allow-create -> Enables the create command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-create"] + }, + { + "description": "fs:allow-exists -> Enables the exists command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-exists"] + }, + { + "description": "fs:allow-fstat -> Enables the fstat command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-fstat"] + }, + { + "description": "fs:allow-ftruncate -> Enables the ftruncate command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-ftruncate"] + }, + { + "description": "fs:allow-lstat -> Enables the lstat command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-lstat"] + }, + { + "description": "fs:allow-mkdir -> Enables the mkdir command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-mkdir"] + }, + { + "description": "fs:allow-open -> Enables the open command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-open"] + }, + { + "description": "fs:allow-read -> Enables the read command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-read"] + }, + { + "description": "fs:allow-read-dir -> Enables the read_dir command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-read-dir"] + }, + { + "description": "fs:allow-read-file -> Enables the read_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-read-file"] + }, + { + "description": "fs:allow-read-text-file -> Enables the read_text_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-read-text-file"] + }, + { + "description": "fs:allow-read-text-file-lines -> Enables the read_text_file_lines command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-read-text-file-lines"] + }, + { + "description": "fs:allow-read-text-file-lines-next -> Enables the read_text_file_lines_next command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-read-text-file-lines-next"] + }, + { + "description": "fs:allow-remove -> Enables the remove command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-remove"] + }, + { + "description": "fs:allow-rename -> Enables the rename command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-rename"] + }, + { + "description": "fs:allow-seek -> Enables the seek command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-seek"] + }, + { + "description": "fs:allow-stat -> Enables the stat command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-stat"] + }, + { + "description": "fs:allow-truncate -> Enables the truncate command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-truncate"] + }, + { + "description": "fs:allow-unwatch -> Enables the unwatch command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-unwatch"] + }, + { + "description": "fs:allow-watch -> Enables the watch command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-watch"] + }, + { + "description": "fs:allow-write -> Enables the write command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-write"] + }, + { + "description": "fs:allow-write-file -> Enables the write_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-write-file"] + }, + { + "description": "fs:allow-write-text-file -> Enables the write_text_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-write-text-file"] + }, + { + "description": "fs:create-app-specific-dirs -> This permissions allows to create the application specific directories.\n", + "type": "string", + "enum": ["fs:create-app-specific-dirs"] + }, + { + "description": "fs:deny-copy-file -> Denies the copy_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-copy-file"] + }, + { + "description": "fs:deny-create -> Denies the create command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-create"] + }, + { + "description": "fs:deny-exists -> Denies the exists command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-exists"] + }, + { + "description": "fs:deny-fstat -> Denies the fstat command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-fstat"] + }, + { + "description": "fs:deny-ftruncate -> Denies the ftruncate command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-ftruncate"] + }, + { + "description": "fs:deny-lstat -> Denies the lstat command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-lstat"] + }, + { + "description": "fs:deny-mkdir -> Denies the mkdir command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-mkdir"] + }, + { + "description": "fs:deny-open -> Denies the open command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-open"] + }, + { + "description": "fs:deny-read -> Denies the read command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-read"] + }, + { + "description": "fs:deny-read-dir -> Denies the read_dir command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-read-dir"] + }, + { + "description": "fs:deny-read-file -> Denies the read_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-read-file"] + }, + { + "description": "fs:deny-read-text-file -> Denies the read_text_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-read-text-file"] + }, + { + "description": "fs:deny-read-text-file-lines -> Denies the read_text_file_lines command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-read-text-file-lines"] + }, + { + "description": "fs:deny-read-text-file-lines-next -> Denies the read_text_file_lines_next command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-read-text-file-lines-next"] + }, + { + "description": "fs:deny-remove -> Denies the remove command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-remove"] + }, + { + "description": "fs:deny-rename -> Denies the rename command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-rename"] + }, + { + "description": "fs:deny-seek -> Denies the seek command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-seek"] + }, + { + "description": "fs:deny-stat -> Denies the stat command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-stat"] + }, + { + "description": "fs:deny-truncate -> Denies the truncate command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-truncate"] + }, + { + "description": "fs:deny-unwatch -> Denies the unwatch command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-unwatch"] + }, + { + "description": "fs:deny-watch -> Denies the watch command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-watch"] + }, + { + "description": "fs:deny-webview-data-linux -> This denies read access to the\n`$APPLOCALDATA` folder on linux as the webview data and configuration values are stored here.\nAllowing access can lead to sensitive information disclosure and should be well considered.", + "type": "string", + "enum": ["fs:deny-webview-data-linux"] + }, + { + "description": "fs:deny-webview-data-windows -> This denies read access to the\n`$APPLOCALDATA/EBWebView` folder on windows as the webview data and configuration values are stored here.\nAllowing access can lead to sensitive information disclosure and should be well considered.", + "type": "string", + "enum": ["fs:deny-webview-data-windows"] + }, + { + "description": "fs:deny-write -> Denies the write command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-write"] + }, + { + "description": "fs:deny-write-file -> Denies the write_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-write-file"] + }, + { + "description": "fs:deny-write-text-file -> Denies the write_text_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-write-text-file"] + }, + { + "description": "fs:read-all -> This enables all read related commands without any pre-configured accessible paths.", + "type": "string", + "enum": ["fs:read-all"] + }, + { + "description": "fs:read-app-specific-dirs-recursive -> This permission allows recursive read functionality on the application\nspecific base directories. \n", + "type": "string", + "enum": ["fs:read-app-specific-dirs-recursive"] + }, + { + "description": "fs:read-dirs -> This enables directory read and file metadata related commands without any pre-configured accessible paths.", + "type": "string", + "enum": ["fs:read-dirs"] + }, + { + "description": "fs:read-files -> This enables file read related commands without any pre-configured accessible paths.", + "type": "string", + "enum": ["fs:read-files"] + }, + { + "description": "fs:read-meta -> This enables all index or metadata related commands without any pre-configured accessible paths.", + "type": "string", + "enum": ["fs:read-meta"] + }, + { + "description": "fs:scope -> An empty permission you can use to modify the global scope.", + "type": "string", + "enum": ["fs:scope"] + }, + { + "description": "fs:scope-app -> This scope permits access to all files and list content of top level directories in the `$APP`folder.", + "type": "string", + "enum": ["fs:scope-app"] + }, + { + "description": "fs:scope-app-index -> This scope permits to list all files and folders in the `$APP`folder.", + "type": "string", + "enum": ["fs:scope-app-index"] + }, + { + "description": "fs:scope-app-recursive -> This scope permits recursive access to the complete `$APP` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-app-recursive"] + }, + { + "description": "fs:scope-appcache -> This scope permits access to all files and list content of top level directories in the `$APPCACHE`folder.", + "type": "string", + "enum": ["fs:scope-appcache"] + }, + { + "description": "fs:scope-appcache-index -> This scope permits to list all files and folders in the `$APPCACHE`folder.", + "type": "string", + "enum": ["fs:scope-appcache-index"] + }, + { + "description": "fs:scope-appcache-recursive -> This scope permits recursive access to the complete `$APPCACHE` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-appcache-recursive"] + }, + { + "description": "fs:scope-appconfig -> This scope permits access to all files and list content of top level directories in the `$APPCONFIG`folder.", + "type": "string", + "enum": ["fs:scope-appconfig"] + }, + { + "description": "fs:scope-appconfig-index -> This scope permits to list all files and folders in the `$APPCONFIG`folder.", + "type": "string", + "enum": ["fs:scope-appconfig-index"] + }, + { + "description": "fs:scope-appconfig-recursive -> This scope permits recursive access to the complete `$APPCONFIG` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-appconfig-recursive"] + }, + { + "description": "fs:scope-appdata -> This scope permits access to all files and list content of top level directories in the `$APPDATA`folder.", + "type": "string", + "enum": ["fs:scope-appdata"] + }, + { + "description": "fs:scope-appdata-index -> This scope permits to list all files and folders in the `$APPDATA`folder.", + "type": "string", + "enum": ["fs:scope-appdata-index"] + }, + { + "description": "fs:scope-appdata-recursive -> This scope permits recursive access to the complete `$APPDATA` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-appdata-recursive"] + }, + { + "description": "fs:scope-applocaldata -> This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA`folder.", + "type": "string", + "enum": ["fs:scope-applocaldata"] + }, + { + "description": "fs:scope-applocaldata-index -> This scope permits to list all files and folders in the `$APPLOCALDATA`folder.", + "type": "string", + "enum": ["fs:scope-applocaldata-index"] + }, + { + "description": "fs:scope-applocaldata-recursive -> This scope permits recursive access to the complete `$APPLOCALDATA` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-applocaldata-recursive"] + }, + { + "description": "fs:scope-applog -> This scope permits access to all files and list content of top level directories in the `$APPLOG`folder.", + "type": "string", + "enum": ["fs:scope-applog"] + }, + { + "description": "fs:scope-applog-index -> This scope permits to list all files and folders in the `$APPLOG`folder.", + "type": "string", + "enum": ["fs:scope-applog-index"] + }, + { + "description": "fs:scope-applog-recursive -> This scope permits recursive access to the complete `$APPLOG` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-applog-recursive"] + }, + { + "description": "fs:scope-audio -> This scope permits access to all files and list content of top level directories in the `$AUDIO`folder.", + "type": "string", + "enum": ["fs:scope-audio"] + }, + { + "description": "fs:scope-audio-index -> This scope permits to list all files and folders in the `$AUDIO`folder.", + "type": "string", + "enum": ["fs:scope-audio-index"] + }, + { + "description": "fs:scope-audio-recursive -> This scope permits recursive access to the complete `$AUDIO` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-audio-recursive"] + }, + { + "description": "fs:scope-cache -> This scope permits access to all files and list content of top level directories in the `$CACHE`folder.", + "type": "string", + "enum": ["fs:scope-cache"] + }, + { + "description": "fs:scope-cache-index -> This scope permits to list all files and folders in the `$CACHE`folder.", + "type": "string", + "enum": ["fs:scope-cache-index"] + }, + { + "description": "fs:scope-cache-recursive -> This scope permits recursive access to the complete `$CACHE` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-cache-recursive"] + }, + { + "description": "fs:scope-config -> This scope permits access to all files and list content of top level directories in the `$CONFIG`folder.", + "type": "string", + "enum": ["fs:scope-config"] + }, + { + "description": "fs:scope-config-index -> This scope permits to list all files and folders in the `$CONFIG`folder.", + "type": "string", + "enum": ["fs:scope-config-index"] + }, + { + "description": "fs:scope-config-recursive -> This scope permits recursive access to the complete `$CONFIG` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-config-recursive"] + }, + { + "description": "fs:scope-data -> This scope permits access to all files and list content of top level directories in the `$DATA`folder.", + "type": "string", + "enum": ["fs:scope-data"] + }, + { + "description": "fs:scope-data-index -> This scope permits to list all files and folders in the `$DATA`folder.", + "type": "string", + "enum": ["fs:scope-data-index"] + }, + { + "description": "fs:scope-data-recursive -> This scope permits recursive access to the complete `$DATA` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-data-recursive"] + }, + { + "description": "fs:scope-desktop -> This scope permits access to all files and list content of top level directories in the `$DESKTOP`folder.", + "type": "string", + "enum": ["fs:scope-desktop"] + }, + { + "description": "fs:scope-desktop-index -> This scope permits to list all files and folders in the `$DESKTOP`folder.", + "type": "string", + "enum": ["fs:scope-desktop-index"] + }, + { + "description": "fs:scope-desktop-recursive -> This scope permits recursive access to the complete `$DESKTOP` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-desktop-recursive"] + }, + { + "description": "fs:scope-document -> This scope permits access to all files and list content of top level directories in the `$DOCUMENT`folder.", + "type": "string", + "enum": ["fs:scope-document"] + }, + { + "description": "fs:scope-document-index -> This scope permits to list all files and folders in the `$DOCUMENT`folder.", + "type": "string", + "enum": ["fs:scope-document-index"] + }, + { + "description": "fs:scope-document-recursive -> This scope permits recursive access to the complete `$DOCUMENT` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-document-recursive"] + }, + { + "description": "fs:scope-download -> This scope permits access to all files and list content of top level directories in the `$DOWNLOAD`folder.", + "type": "string", + "enum": ["fs:scope-download"] + }, + { + "description": "fs:scope-download-index -> This scope permits to list all files and folders in the `$DOWNLOAD`folder.", + "type": "string", + "enum": ["fs:scope-download-index"] + }, + { + "description": "fs:scope-download-recursive -> This scope permits recursive access to the complete `$DOWNLOAD` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-download-recursive"] + }, + { + "description": "fs:scope-exe -> This scope permits access to all files and list content of top level directories in the `$EXE`folder.", + "type": "string", + "enum": ["fs:scope-exe"] + }, + { + "description": "fs:scope-exe-index -> This scope permits to list all files and folders in the `$EXE`folder.", + "type": "string", + "enum": ["fs:scope-exe-index"] + }, + { + "description": "fs:scope-exe-recursive -> This scope permits recursive access to the complete `$EXE` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-exe-recursive"] + }, + { + "description": "fs:scope-font -> This scope permits access to all files and list content of top level directories in the `$FONT`folder.", + "type": "string", + "enum": ["fs:scope-font"] + }, + { + "description": "fs:scope-font-index -> This scope permits to list all files and folders in the `$FONT`folder.", + "type": "string", + "enum": ["fs:scope-font-index"] + }, + { + "description": "fs:scope-font-recursive -> This scope permits recursive access to the complete `$FONT` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-font-recursive"] + }, + { + "description": "fs:scope-home -> This scope permits access to all files and list content of top level directories in the `$HOME`folder.", + "type": "string", + "enum": ["fs:scope-home"] + }, + { + "description": "fs:scope-home-index -> This scope permits to list all files and folders in the `$HOME`folder.", + "type": "string", + "enum": ["fs:scope-home-index"] + }, + { + "description": "fs:scope-home-recursive -> This scope permits recursive access to the complete `$HOME` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-home-recursive"] + }, + { + "description": "fs:scope-localdata -> This scope permits access to all files and list content of top level directories in the `$LOCALDATA`folder.", + "type": "string", + "enum": ["fs:scope-localdata"] + }, + { + "description": "fs:scope-localdata-index -> This scope permits to list all files and folders in the `$LOCALDATA`folder.", + "type": "string", + "enum": ["fs:scope-localdata-index"] + }, + { + "description": "fs:scope-localdata-recursive -> This scope permits recursive access to the complete `$LOCALDATA` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-localdata-recursive"] + }, + { + "description": "fs:scope-log -> This scope permits access to all files and list content of top level directories in the `$LOG`folder.", + "type": "string", + "enum": ["fs:scope-log"] + }, + { + "description": "fs:scope-log-index -> This scope permits to list all files and folders in the `$LOG`folder.", + "type": "string", + "enum": ["fs:scope-log-index"] + }, + { + "description": "fs:scope-log-recursive -> This scope permits recursive access to the complete `$LOG` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-log-recursive"] + }, + { + "description": "fs:scope-picture -> This scope permits access to all files and list content of top level directories in the `$PICTURE`folder.", + "type": "string", + "enum": ["fs:scope-picture"] + }, + { + "description": "fs:scope-picture-index -> This scope permits to list all files and folders in the `$PICTURE`folder.", + "type": "string", + "enum": ["fs:scope-picture-index"] + }, + { + "description": "fs:scope-picture-recursive -> This scope permits recursive access to the complete `$PICTURE` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-picture-recursive"] + }, + { + "description": "fs:scope-public -> This scope permits access to all files and list content of top level directories in the `$PUBLIC`folder.", + "type": "string", + "enum": ["fs:scope-public"] + }, + { + "description": "fs:scope-public-index -> This scope permits to list all files and folders in the `$PUBLIC`folder.", + "type": "string", + "enum": ["fs:scope-public-index"] + }, + { + "description": "fs:scope-public-recursive -> This scope permits recursive access to the complete `$PUBLIC` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-public-recursive"] + }, + { + "description": "fs:scope-resource -> This scope permits access to all files and list content of top level directories in the `$RESOURCE`folder.", + "type": "string", + "enum": ["fs:scope-resource"] + }, + { + "description": "fs:scope-resource-index -> This scope permits to list all files and folders in the `$RESOURCE`folder.", + "type": "string", + "enum": ["fs:scope-resource-index"] + }, + { + "description": "fs:scope-resource-recursive -> This scope permits recursive access to the complete `$RESOURCE` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-resource-recursive"] + }, + { + "description": "fs:scope-runtime -> This scope permits access to all files and list content of top level directories in the `$RUNTIME`folder.", + "type": "string", + "enum": ["fs:scope-runtime"] + }, + { + "description": "fs:scope-runtime-index -> This scope permits to list all files and folders in the `$RUNTIME`folder.", + "type": "string", + "enum": ["fs:scope-runtime-index"] + }, + { + "description": "fs:scope-runtime-recursive -> This scope permits recursive access to the complete `$RUNTIME` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-runtime-recursive"] + }, + { + "description": "fs:scope-temp -> This scope permits access to all files and list content of top level directories in the `$TEMP`folder.", + "type": "string", + "enum": ["fs:scope-temp"] + }, + { + "description": "fs:scope-temp-index -> This scope permits to list all files and folders in the `$TEMP`folder.", + "type": "string", + "enum": ["fs:scope-temp-index"] + }, + { + "description": "fs:scope-temp-recursive -> This scope permits recursive access to the complete `$TEMP` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-temp-recursive"] + }, + { + "description": "fs:scope-template -> This scope permits access to all files and list content of top level directories in the `$TEMPLATE`folder.", + "type": "string", + "enum": ["fs:scope-template"] + }, + { + "description": "fs:scope-template-index -> This scope permits to list all files and folders in the `$TEMPLATE`folder.", + "type": "string", + "enum": ["fs:scope-template-index"] + }, + { + "description": "fs:scope-template-recursive -> This scope permits recursive access to the complete `$TEMPLATE` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-template-recursive"] + }, + { + "description": "fs:scope-video -> This scope permits access to all files and list content of top level directories in the `$VIDEO`folder.", + "type": "string", + "enum": ["fs:scope-video"] + }, + { + "description": "fs:scope-video-index -> This scope permits to list all files and folders in the `$VIDEO`folder.", + "type": "string", + "enum": ["fs:scope-video-index"] + }, + { + "description": "fs:scope-video-recursive -> This scope permits recursive access to the complete `$VIDEO` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-video-recursive"] + }, + { + "description": "fs:write-all -> This enables all write related commands without any pre-configured accessible paths.", + "type": "string", + "enum": ["fs:write-all"] + }, + { + "description": "fs:write-files -> This enables all file write related commands without any pre-configured accessible paths.", + "type": "string", + "enum": ["fs:write-files"] + } + ] + }, + "allow": { + "items": { + "title": "FsScopeEntry", + "description": "FS scope entry.", + "anyOf": [ + { + "description": "FS scope path.", + "type": "string" + }, + { + "type": "object", + "required": ["path"], + "properties": { + "path": { + "description": "FS scope path.", + "type": "string" + } + } + } + ] + } + }, + "deny": { + "items": { + "title": "FsScopeEntry", + "description": "FS scope entry.", + "anyOf": [ + { + "description": "FS scope path.", + "type": "string" + }, + { + "type": "object", + "required": ["path"], + "properties": { + "path": { + "description": "FS scope path.", + "type": "string" + } + } + } + ] + } + } + } + }, + { + "type": "object", + "required": ["identifier"], + "properties": { + "identifier": { + "oneOf": [ + { + "description": "shell:default -> This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality without any specific\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n", + "type": "string", + "enum": ["shell:default"] + }, + { + "description": "shell:allow-execute -> Enables the execute command without any pre-configured scope.", + "type": "string", + "enum": ["shell:allow-execute"] + }, + { + "description": "shell:allow-kill -> Enables the kill command without any pre-configured scope.", + "type": "string", + "enum": ["shell:allow-kill"] + }, + { + "description": "shell:allow-open -> Enables the open command without any pre-configured scope.", + "type": "string", + "enum": ["shell:allow-open"] + }, + { + "description": "shell:allow-spawn -> Enables the spawn command without any pre-configured scope.", + "type": "string", + "enum": ["shell:allow-spawn"] + }, + { + "description": "shell:allow-stdin-write -> Enables the stdin_write command without any pre-configured scope.", + "type": "string", + "enum": ["shell:allow-stdin-write"] + }, + { + "description": "shell:deny-execute -> Denies the execute command without any pre-configured scope.", + "type": "string", + "enum": ["shell:deny-execute"] + }, + { + "description": "shell:deny-kill -> Denies the kill command without any pre-configured scope.", + "type": "string", + "enum": ["shell:deny-kill"] + }, + { + "description": "shell:deny-open -> Denies the open command without any pre-configured scope.", + "type": "string", + "enum": ["shell:deny-open"] + }, + { + "description": "shell:deny-spawn -> Denies the spawn command without any pre-configured scope.", + "type": "string", + "enum": ["shell:deny-spawn"] + }, + { + "description": "shell:deny-stdin-write -> Denies the stdin_write command without any pre-configured scope.", + "type": "string", + "enum": ["shell:deny-stdin-write"] + } + ] + }, + "allow": { + "items": { + "title": "Entry", + "description": "A command allowed to be executed by the webview API.", + "type": "object", + "required": ["args", "cmd", "name", "sidecar"], + "properties": { + "args": { + "description": "The allowed arguments for the command execution.", + "allOf": [ + { + "$ref": "#/definitions/ShellAllowedArgs" + } + ] + }, + "cmd": { + "description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$APP`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.", + "type": "string" + }, + "name": { + "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", + "type": "string" + }, + "sidecar": { + "description": "If this command is a sidecar command.", + "type": "boolean" + } + } + } + }, + "deny": { + "items": { + "title": "Entry", + "description": "A command allowed to be executed by the webview API.", + "type": "object", + "required": ["args", "cmd", "name", "sidecar"], + "properties": { + "args": { + "description": "The allowed arguments for the command execution.", + "allOf": [ + { + "$ref": "#/definitions/ShellAllowedArgs" + } + ] + }, + "cmd": { + "description": "The command name. It can start with a variable that resolves to a system base directory. The variables are: `$AUDIO`, `$CACHE`, `$CONFIG`, `$DATA`, `$LOCALDATA`, `$DESKTOP`, `$DOCUMENT`, `$DOWNLOAD`, `$EXE`, `$FONT`, `$HOME`, `$PICTURE`, `$PUBLIC`, `$RUNTIME`, `$TEMPLATE`, `$VIDEO`, `$RESOURCE`, `$APP`, `$LOG`, `$TEMP`, `$APPCONFIG`, `$APPDATA`, `$APPLOCALDATA`, `$APPCACHE`, `$APPLOG`.", + "type": "string" + }, + "name": { + "description": "The name for this allowed shell command configuration.\n\nThis name will be used inside of the webview API to call this command along with any specified arguments.", + "type": "string" + }, + "sidecar": { + "description": "If this command is a sidecar command.", + "type": "boolean" + } + } + } + } + } + } + ] + } + ] + }, + "Identifier": { + "oneOf": [ + { + "description": "clipboard-manager:default -> No features are enabled by default, as we believe\nthe clipboard can be inherently dangerous and it is \napplication specific if read and/or write access is needed.\n\nClipboard interaction needs to be explicitly enabled.\n", + "type": "string", + "enum": ["clipboard-manager:default"] + }, + { + "description": "clipboard-manager:allow-clear -> Enables the clear command without any pre-configured scope.", + "type": "string", + "enum": ["clipboard-manager:allow-clear"] + }, + { + "description": "clipboard-manager:allow-read-image -> Enables the read_image command without any pre-configured scope.", + "type": "string", + "enum": ["clipboard-manager:allow-read-image"] + }, + { + "description": "clipboard-manager:allow-read-text -> Enables the read_text command without any pre-configured scope.", + "type": "string", + "enum": ["clipboard-manager:allow-read-text"] + }, + { + "description": "clipboard-manager:allow-write-html -> Enables the write_html command without any pre-configured scope.", + "type": "string", + "enum": ["clipboard-manager:allow-write-html"] + }, + { + "description": "clipboard-manager:allow-write-image -> Enables the write_image command without any pre-configured scope.", + "type": "string", + "enum": ["clipboard-manager:allow-write-image"] + }, + { + "description": "clipboard-manager:allow-write-text -> Enables the write_text command without any pre-configured scope.", + "type": "string", + "enum": ["clipboard-manager:allow-write-text"] + }, + { + "description": "clipboard-manager:deny-clear -> Denies the clear command without any pre-configured scope.", + "type": "string", + "enum": ["clipboard-manager:deny-clear"] + }, + { + "description": "clipboard-manager:deny-read-image -> Denies the read_image command without any pre-configured scope.", + "type": "string", + "enum": ["clipboard-manager:deny-read-image"] + }, + { + "description": "clipboard-manager:deny-read-text -> Denies the read_text command without any pre-configured scope.", + "type": "string", + "enum": ["clipboard-manager:deny-read-text"] + }, + { + "description": "clipboard-manager:deny-write-html -> Denies the write_html command without any pre-configured scope.", + "type": "string", + "enum": ["clipboard-manager:deny-write-html"] + }, + { + "description": "clipboard-manager:deny-write-image -> Denies the write_image command without any pre-configured scope.", + "type": "string", + "enum": ["clipboard-manager:deny-write-image"] + }, + { + "description": "clipboard-manager:deny-write-text -> Denies the write_text command without any pre-configured scope.", + "type": "string", + "enum": ["clipboard-manager:deny-write-text"] + }, + { + "description": "core:app:default -> Default permissions for the plugin.", + "type": "string", + "enum": ["core:app:default"] + }, + { + "description": "core:app:allow-app-hide -> Enables the app_hide command without any pre-configured scope.", + "type": "string", + "enum": ["core:app:allow-app-hide"] + }, + { + "description": "core:app:allow-app-show -> Enables the app_show command without any pre-configured scope.", + "type": "string", + "enum": ["core:app:allow-app-show"] + }, + { + "description": "core:app:allow-default-window-icon -> Enables the default_window_icon command without any pre-configured scope.", + "type": "string", + "enum": ["core:app:allow-default-window-icon"] + }, + { + "description": "core:app:allow-name -> Enables the name command without any pre-configured scope.", + "type": "string", + "enum": ["core:app:allow-name"] + }, + { + "description": "core:app:allow-tauri-version -> Enables the tauri_version command without any pre-configured scope.", + "type": "string", + "enum": ["core:app:allow-tauri-version"] + }, + { + "description": "core:app:allow-version -> Enables the version command without any pre-configured scope.", + "type": "string", + "enum": ["core:app:allow-version"] + }, + { + "description": "core:app:deny-app-hide -> Denies the app_hide command without any pre-configured scope.", + "type": "string", + "enum": ["core:app:deny-app-hide"] + }, + { + "description": "core:app:deny-app-show -> Denies the app_show command without any pre-configured scope.", + "type": "string", + "enum": ["core:app:deny-app-show"] + }, + { + "description": "core:app:deny-default-window-icon -> Denies the default_window_icon command without any pre-configured scope.", + "type": "string", + "enum": ["core:app:deny-default-window-icon"] + }, + { + "description": "core:app:deny-name -> Denies the name command without any pre-configured scope.", + "type": "string", + "enum": ["core:app:deny-name"] + }, + { + "description": "core:app:deny-tauri-version -> Denies the tauri_version command without any pre-configured scope.", + "type": "string", + "enum": ["core:app:deny-tauri-version"] + }, + { + "description": "core:app:deny-version -> Denies the version command without any pre-configured scope.", + "type": "string", + "enum": ["core:app:deny-version"] + }, + { + "description": "core:event:default -> Default permissions for the plugin.", + "type": "string", + "enum": ["core:event:default"] + }, + { + "description": "core:event:allow-emit -> Enables the emit command without any pre-configured scope.", + "type": "string", + "enum": ["core:event:allow-emit"] + }, + { + "description": "core:event:allow-emit-to -> Enables the emit_to command without any pre-configured scope.", + "type": "string", + "enum": ["core:event:allow-emit-to"] + }, + { + "description": "core:event:allow-listen -> Enables the listen command without any pre-configured scope.", + "type": "string", + "enum": ["core:event:allow-listen"] + }, + { + "description": "core:event:allow-unlisten -> Enables the unlisten command without any pre-configured scope.", + "type": "string", + "enum": ["core:event:allow-unlisten"] + }, + { + "description": "core:event:deny-emit -> Denies the emit command without any pre-configured scope.", + "type": "string", + "enum": ["core:event:deny-emit"] + }, + { + "description": "core:event:deny-emit-to -> Denies the emit_to command without any pre-configured scope.", + "type": "string", + "enum": ["core:event:deny-emit-to"] + }, + { + "description": "core:event:deny-listen -> Denies the listen command without any pre-configured scope.", + "type": "string", + "enum": ["core:event:deny-listen"] + }, + { + "description": "core:event:deny-unlisten -> Denies the unlisten command without any pre-configured scope.", + "type": "string", + "enum": ["core:event:deny-unlisten"] + }, + { + "description": "core:image:default -> Default permissions for the plugin.", + "type": "string", + "enum": ["core:image:default"] + }, + { + "description": "core:image:allow-from-bytes -> Enables the from_bytes command without any pre-configured scope.", + "type": "string", + "enum": ["core:image:allow-from-bytes"] + }, + { + "description": "core:image:allow-from-path -> Enables the from_path command without any pre-configured scope.", + "type": "string", + "enum": ["core:image:allow-from-path"] + }, + { + "description": "core:image:allow-new -> Enables the new command without any pre-configured scope.", + "type": "string", + "enum": ["core:image:allow-new"] + }, + { + "description": "core:image:allow-rgba -> Enables the rgba command without any pre-configured scope.", + "type": "string", + "enum": ["core:image:allow-rgba"] + }, + { + "description": "core:image:allow-size -> Enables the size command without any pre-configured scope.", + "type": "string", + "enum": ["core:image:allow-size"] + }, + { + "description": "core:image:deny-from-bytes -> Denies the from_bytes command without any pre-configured scope.", + "type": "string", + "enum": ["core:image:deny-from-bytes"] + }, + { + "description": "core:image:deny-from-path -> Denies the from_path command without any pre-configured scope.", + "type": "string", + "enum": ["core:image:deny-from-path"] + }, + { + "description": "core:image:deny-new -> Denies the new command without any pre-configured scope.", + "type": "string", + "enum": ["core:image:deny-new"] + }, + { + "description": "core:image:deny-rgba -> Denies the rgba command without any pre-configured scope.", + "type": "string", + "enum": ["core:image:deny-rgba"] + }, + { + "description": "core:image:deny-size -> Denies the size command without any pre-configured scope.", + "type": "string", + "enum": ["core:image:deny-size"] + }, + { + "description": "core:menu:default -> Default permissions for the plugin.", + "type": "string", + "enum": ["core:menu:default"] + }, + { + "description": "core:menu:allow-append -> Enables the append command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-append"] + }, + { + "description": "core:menu:allow-create-default -> Enables the create_default command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-create-default"] + }, + { + "description": "core:menu:allow-get -> Enables the get command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-get"] + }, + { + "description": "core:menu:allow-insert -> Enables the insert command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-insert"] + }, + { + "description": "core:menu:allow-is-checked -> Enables the is_checked command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-is-checked"] + }, + { + "description": "core:menu:allow-is-enabled -> Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-is-enabled"] + }, + { + "description": "core:menu:allow-items -> Enables the items command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-items"] + }, + { + "description": "core:menu:allow-new -> Enables the new command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-new"] + }, + { + "description": "core:menu:allow-popup -> Enables the popup command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-popup"] + }, + { + "description": "core:menu:allow-prepend -> Enables the prepend command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-prepend"] + }, + { + "description": "core:menu:allow-remove -> Enables the remove command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-remove"] + }, + { + "description": "core:menu:allow-remove-at -> Enables the remove_at command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-remove-at"] + }, + { + "description": "core:menu:allow-set-accelerator -> Enables the set_accelerator command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-set-accelerator"] + }, + { + "description": "core:menu:allow-set-as-app-menu -> Enables the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-set-as-app-menu"] + }, + { + "description": "core:menu:allow-set-as-help-menu-for-nsapp -> Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-set-as-help-menu-for-nsapp"] + }, + { + "description": "core:menu:allow-set-as-window-menu -> Enables the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-set-as-window-menu"] + }, + { + "description": "core:menu:allow-set-as-windows-menu-for-nsapp -> Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-set-as-windows-menu-for-nsapp"] + }, + { + "description": "core:menu:allow-set-checked -> Enables the set_checked command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-set-checked"] + }, + { + "description": "core:menu:allow-set-enabled -> Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-set-enabled"] + }, + { + "description": "core:menu:allow-set-icon -> Enables the set_icon command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-set-icon"] + }, + { + "description": "core:menu:allow-set-text -> Enables the set_text command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-set-text"] + }, + { + "description": "core:menu:allow-text -> Enables the text command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:allow-text"] + }, + { + "description": "core:menu:deny-append -> Denies the append command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-append"] + }, + { + "description": "core:menu:deny-create-default -> Denies the create_default command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-create-default"] + }, + { + "description": "core:menu:deny-get -> Denies the get command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-get"] + }, + { + "description": "core:menu:deny-insert -> Denies the insert command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-insert"] + }, + { + "description": "core:menu:deny-is-checked -> Denies the is_checked command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-is-checked"] + }, + { + "description": "core:menu:deny-is-enabled -> Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-is-enabled"] + }, + { + "description": "core:menu:deny-items -> Denies the items command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-items"] + }, + { + "description": "core:menu:deny-new -> Denies the new command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-new"] + }, + { + "description": "core:menu:deny-popup -> Denies the popup command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-popup"] + }, + { + "description": "core:menu:deny-prepend -> Denies the prepend command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-prepend"] + }, + { + "description": "core:menu:deny-remove -> Denies the remove command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-remove"] + }, + { + "description": "core:menu:deny-remove-at -> Denies the remove_at command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-remove-at"] + }, + { + "description": "core:menu:deny-set-accelerator -> Denies the set_accelerator command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-set-accelerator"] + }, + { + "description": "core:menu:deny-set-as-app-menu -> Denies the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-set-as-app-menu"] + }, + { + "description": "core:menu:deny-set-as-help-menu-for-nsapp -> Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-set-as-help-menu-for-nsapp"] + }, + { + "description": "core:menu:deny-set-as-window-menu -> Denies the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-set-as-window-menu"] + }, + { + "description": "core:menu:deny-set-as-windows-menu-for-nsapp -> Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-set-as-windows-menu-for-nsapp"] + }, + { + "description": "core:menu:deny-set-checked -> Denies the set_checked command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-set-checked"] + }, + { + "description": "core:menu:deny-set-enabled -> Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-set-enabled"] + }, + { + "description": "core:menu:deny-set-icon -> Denies the set_icon command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-set-icon"] + }, + { + "description": "core:menu:deny-set-text -> Denies the set_text command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-set-text"] + }, + { + "description": "core:menu:deny-text -> Denies the text command without any pre-configured scope.", + "type": "string", + "enum": ["core:menu:deny-text"] + }, + { + "description": "core:path:default -> Default permissions for the plugin.", + "type": "string", + "enum": ["core:path:default"] + }, + { + "description": "core:path:allow-basename -> Enables the basename command without any pre-configured scope.", + "type": "string", + "enum": ["core:path:allow-basename"] + }, + { + "description": "core:path:allow-dirname -> Enables the dirname command without any pre-configured scope.", + "type": "string", + "enum": ["core:path:allow-dirname"] + }, + { + "description": "core:path:allow-extname -> Enables the extname command without any pre-configured scope.", + "type": "string", + "enum": ["core:path:allow-extname"] + }, + { + "description": "core:path:allow-is-absolute -> Enables the is_absolute command without any pre-configured scope.", + "type": "string", + "enum": ["core:path:allow-is-absolute"] + }, + { + "description": "core:path:allow-join -> Enables the join command without any pre-configured scope.", + "type": "string", + "enum": ["core:path:allow-join"] + }, + { + "description": "core:path:allow-normalize -> Enables the normalize command without any pre-configured scope.", + "type": "string", + "enum": ["core:path:allow-normalize"] + }, + { + "description": "core:path:allow-resolve -> Enables the resolve command without any pre-configured scope.", + "type": "string", + "enum": ["core:path:allow-resolve"] + }, + { + "description": "core:path:allow-resolve-directory -> Enables the resolve_directory command without any pre-configured scope.", + "type": "string", + "enum": ["core:path:allow-resolve-directory"] + }, + { + "description": "core:path:deny-basename -> Denies the basename command without any pre-configured scope.", + "type": "string", + "enum": ["core:path:deny-basename"] + }, + { + "description": "core:path:deny-dirname -> Denies the dirname command without any pre-configured scope.", + "type": "string", + "enum": ["core:path:deny-dirname"] + }, + { + "description": "core:path:deny-extname -> Denies the extname command without any pre-configured scope.", + "type": "string", + "enum": ["core:path:deny-extname"] + }, + { + "description": "core:path:deny-is-absolute -> Denies the is_absolute command without any pre-configured scope.", + "type": "string", + "enum": ["core:path:deny-is-absolute"] + }, + { + "description": "core:path:deny-join -> Denies the join command without any pre-configured scope.", + "type": "string", + "enum": ["core:path:deny-join"] + }, + { + "description": "core:path:deny-normalize -> Denies the normalize command without any pre-configured scope.", + "type": "string", + "enum": ["core:path:deny-normalize"] + }, + { + "description": "core:path:deny-resolve -> Denies the resolve command without any pre-configured scope.", + "type": "string", + "enum": ["core:path:deny-resolve"] + }, + { + "description": "core:path:deny-resolve-directory -> Denies the resolve_directory command without any pre-configured scope.", + "type": "string", + "enum": ["core:path:deny-resolve-directory"] + }, + { + "description": "core:resources:default -> Default permissions for the plugin.", + "type": "string", + "enum": ["core:resources:default"] + }, + { + "description": "core:resources:allow-close -> Enables the close command without any pre-configured scope.", + "type": "string", + "enum": ["core:resources:allow-close"] + }, + { + "description": "core:resources:deny-close -> Denies the close command without any pre-configured scope.", + "type": "string", + "enum": ["core:resources:deny-close"] + }, + { + "description": "core:tray:default -> Default permissions for the plugin.", + "type": "string", + "enum": ["core:tray:default"] + }, + { + "description": "core:tray:allow-get-by-id -> Enables the get_by_id command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:allow-get-by-id"] + }, + { + "description": "core:tray:allow-new -> Enables the new command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:allow-new"] + }, + { + "description": "core:tray:allow-remove-by-id -> Enables the remove_by_id command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:allow-remove-by-id"] + }, + { + "description": "core:tray:allow-set-icon -> Enables the set_icon command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:allow-set-icon"] + }, + { + "description": "core:tray:allow-set-icon-as-template -> Enables the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:allow-set-icon-as-template"] + }, + { + "description": "core:tray:allow-set-menu -> Enables the set_menu command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:allow-set-menu"] + }, + { + "description": "core:tray:allow-set-show-menu-on-left-click -> Enables the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:allow-set-show-menu-on-left-click"] + }, + { + "description": "core:tray:allow-set-temp-dir-path -> Enables the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:allow-set-temp-dir-path"] + }, + { + "description": "core:tray:allow-set-title -> Enables the set_title command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:allow-set-title"] + }, + { + "description": "core:tray:allow-set-tooltip -> Enables the set_tooltip command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:allow-set-tooltip"] + }, + { + "description": "core:tray:allow-set-visible -> Enables the set_visible command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:allow-set-visible"] + }, + { + "description": "core:tray:deny-get-by-id -> Denies the get_by_id command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:deny-get-by-id"] + }, + { + "description": "core:tray:deny-new -> Denies the new command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:deny-new"] + }, + { + "description": "core:tray:deny-remove-by-id -> Denies the remove_by_id command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:deny-remove-by-id"] + }, + { + "description": "core:tray:deny-set-icon -> Denies the set_icon command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:deny-set-icon"] + }, + { + "description": "core:tray:deny-set-icon-as-template -> Denies the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:deny-set-icon-as-template"] + }, + { + "description": "core:tray:deny-set-menu -> Denies the set_menu command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:deny-set-menu"] + }, + { + "description": "core:tray:deny-set-show-menu-on-left-click -> Denies the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:deny-set-show-menu-on-left-click"] + }, + { + "description": "core:tray:deny-set-temp-dir-path -> Denies the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:deny-set-temp-dir-path"] + }, + { + "description": "core:tray:deny-set-title -> Denies the set_title command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:deny-set-title"] + }, + { + "description": "core:tray:deny-set-tooltip -> Denies the set_tooltip command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:deny-set-tooltip"] + }, + { + "description": "core:tray:deny-set-visible -> Denies the set_visible command without any pre-configured scope.", + "type": "string", + "enum": ["core:tray:deny-set-visible"] + }, + { + "description": "core:webview:default -> Default permissions for the plugin.", + "type": "string", + "enum": ["core:webview:default"] + }, + { + "description": "core:webview:allow-create-webview -> Enables the create_webview command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:allow-create-webview"] + }, + { + "description": "core:webview:allow-create-webview-window -> Enables the create_webview_window command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:allow-create-webview-window"] + }, + { + "description": "core:webview:allow-get-all-webviews -> Enables the get_all_webviews command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:allow-get-all-webviews"] + }, + { + "description": "core:webview:allow-internal-toggle-devtools -> Enables the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:allow-internal-toggle-devtools"] + }, + { + "description": "core:webview:allow-print -> Enables the print command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:allow-print"] + }, + { + "description": "core:webview:allow-reparent -> Enables the reparent command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:allow-reparent"] + }, + { + "description": "core:webview:allow-set-webview-focus -> Enables the set_webview_focus command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:allow-set-webview-focus"] + }, + { + "description": "core:webview:allow-set-webview-position -> Enables the set_webview_position command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:allow-set-webview-position"] + }, + { + "description": "core:webview:allow-set-webview-size -> Enables the set_webview_size command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:allow-set-webview-size"] + }, + { + "description": "core:webview:allow-set-webview-zoom -> Enables the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:allow-set-webview-zoom"] + }, + { + "description": "core:webview:allow-webview-close -> Enables the webview_close command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:allow-webview-close"] + }, + { + "description": "core:webview:allow-webview-position -> Enables the webview_position command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:allow-webview-position"] + }, + { + "description": "core:webview:allow-webview-size -> Enables the webview_size command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:allow-webview-size"] + }, + { + "description": "core:webview:deny-create-webview -> Denies the create_webview command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:deny-create-webview"] + }, + { + "description": "core:webview:deny-create-webview-window -> Denies the create_webview_window command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:deny-create-webview-window"] + }, + { + "description": "core:webview:deny-get-all-webviews -> Denies the get_all_webviews command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:deny-get-all-webviews"] + }, + { + "description": "core:webview:deny-internal-toggle-devtools -> Denies the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:deny-internal-toggle-devtools"] + }, + { + "description": "core:webview:deny-print -> Denies the print command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:deny-print"] + }, + { + "description": "core:webview:deny-reparent -> Denies the reparent command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:deny-reparent"] + }, + { + "description": "core:webview:deny-set-webview-focus -> Denies the set_webview_focus command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:deny-set-webview-focus"] + }, + { + "description": "core:webview:deny-set-webview-position -> Denies the set_webview_position command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:deny-set-webview-position"] + }, + { + "description": "core:webview:deny-set-webview-size -> Denies the set_webview_size command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:deny-set-webview-size"] + }, + { + "description": "core:webview:deny-set-webview-zoom -> Denies the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:deny-set-webview-zoom"] + }, + { + "description": "core:webview:deny-webview-close -> Denies the webview_close command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:deny-webview-close"] + }, + { + "description": "core:webview:deny-webview-position -> Denies the webview_position command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:deny-webview-position"] + }, + { + "description": "core:webview:deny-webview-size -> Denies the webview_size command without any pre-configured scope.", + "type": "string", + "enum": ["core:webview:deny-webview-size"] + }, + { + "description": "core:window:default -> Default permissions for the plugin.", + "type": "string", + "enum": ["core:window:default"] + }, + { + "description": "core:window:allow-available-monitors -> Enables the available_monitors command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-available-monitors"] + }, + { + "description": "core:window:allow-center -> Enables the center command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-center"] + }, + { + "description": "core:window:allow-close -> Enables the close command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-close"] + }, + { + "description": "core:window:allow-create -> Enables the create command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-create"] + }, + { + "description": "core:window:allow-current-monitor -> Enables the current_monitor command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-current-monitor"] + }, + { + "description": "core:window:allow-cursor-position -> Enables the cursor_position command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-cursor-position"] + }, + { + "description": "core:window:allow-destroy -> Enables the destroy command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-destroy"] + }, + { + "description": "core:window:allow-get-all-windows -> Enables the get_all_windows command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-get-all-windows"] + }, + { + "description": "core:window:allow-hide -> Enables the hide command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-hide"] + }, + { + "description": "core:window:allow-inner-position -> Enables the inner_position command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-inner-position"] + }, + { + "description": "core:window:allow-inner-size -> Enables the inner_size command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-inner-size"] + }, + { + "description": "core:window:allow-internal-toggle-maximize -> Enables the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-internal-toggle-maximize"] + }, + { + "description": "core:window:allow-is-closable -> Enables the is_closable command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-is-closable"] + }, + { + "description": "core:window:allow-is-decorated -> Enables the is_decorated command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-is-decorated"] + }, + { + "description": "core:window:allow-is-focused -> Enables the is_focused command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-is-focused"] + }, + { + "description": "core:window:allow-is-fullscreen -> Enables the is_fullscreen command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-is-fullscreen"] + }, + { + "description": "core:window:allow-is-maximizable -> Enables the is_maximizable command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-is-maximizable"] + }, + { + "description": "core:window:allow-is-maximized -> Enables the is_maximized command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-is-maximized"] + }, + { + "description": "core:window:allow-is-minimizable -> Enables the is_minimizable command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-is-minimizable"] + }, + { + "description": "core:window:allow-is-minimized -> Enables the is_minimized command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-is-minimized"] + }, + { + "description": "core:window:allow-is-resizable -> Enables the is_resizable command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-is-resizable"] + }, + { + "description": "core:window:allow-is-visible -> Enables the is_visible command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-is-visible"] + }, + { + "description": "core:window:allow-maximize -> Enables the maximize command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-maximize"] + }, + { + "description": "core:window:allow-minimize -> Enables the minimize command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-minimize"] + }, + { + "description": "core:window:allow-monitor-from-point -> Enables the monitor_from_point command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-monitor-from-point"] + }, + { + "description": "core:window:allow-outer-position -> Enables the outer_position command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-outer-position"] + }, + { + "description": "core:window:allow-outer-size -> Enables the outer_size command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-outer-size"] + }, + { + "description": "core:window:allow-primary-monitor -> Enables the primary_monitor command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-primary-monitor"] + }, + { + "description": "core:window:allow-request-user-attention -> Enables the request_user_attention command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-request-user-attention"] + }, + { + "description": "core:window:allow-scale-factor -> Enables the scale_factor command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-scale-factor"] + }, + { + "description": "core:window:allow-set-always-on-bottom -> Enables the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-always-on-bottom"] + }, + { + "description": "core:window:allow-set-always-on-top -> Enables the set_always_on_top command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-always-on-top"] + }, + { + "description": "core:window:allow-set-closable -> Enables the set_closable command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-closable"] + }, + { + "description": "core:window:allow-set-content-protected -> Enables the set_content_protected command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-content-protected"] + }, + { + "description": "core:window:allow-set-cursor-grab -> Enables the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-cursor-grab"] + }, + { + "description": "core:window:allow-set-cursor-icon -> Enables the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-cursor-icon"] + }, + { + "description": "core:window:allow-set-cursor-position -> Enables the set_cursor_position command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-cursor-position"] + }, + { + "description": "core:window:allow-set-cursor-visible -> Enables the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-cursor-visible"] + }, + { + "description": "core:window:allow-set-decorations -> Enables the set_decorations command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-decorations"] + }, + { + "description": "core:window:allow-set-effects -> Enables the set_effects command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-effects"] + }, + { + "description": "core:window:allow-set-focus -> Enables the set_focus command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-focus"] + }, + { + "description": "core:window:allow-set-fullscreen -> Enables the set_fullscreen command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-fullscreen"] + }, + { + "description": "core:window:allow-set-icon -> Enables the set_icon command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-icon"] + }, + { + "description": "core:window:allow-set-ignore-cursor-events -> Enables the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-ignore-cursor-events"] + }, + { + "description": "core:window:allow-set-max-size -> Enables the set_max_size command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-max-size"] + }, + { + "description": "core:window:allow-set-maximizable -> Enables the set_maximizable command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-maximizable"] + }, + { + "description": "core:window:allow-set-min-size -> Enables the set_min_size command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-min-size"] + }, + { + "description": "core:window:allow-set-minimizable -> Enables the set_minimizable command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-minimizable"] + }, + { + "description": "core:window:allow-set-position -> Enables the set_position command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-position"] + }, + { + "description": "core:window:allow-set-progress-bar -> Enables the set_progress_bar command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-progress-bar"] + }, + { + "description": "core:window:allow-set-resizable -> Enables the set_resizable command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-resizable"] + }, + { + "description": "core:window:allow-set-shadow -> Enables the set_shadow command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-shadow"] + }, + { + "description": "core:window:allow-set-size -> Enables the set_size command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-size"] + }, + { + "description": "core:window:allow-set-size-constraints -> Enables the set_size_constraints command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-size-constraints"] + }, + { + "description": "core:window:allow-set-skip-taskbar -> Enables the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-skip-taskbar"] + }, + { + "description": "core:window:allow-set-title -> Enables the set_title command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-title"] + }, + { + "description": "core:window:allow-set-title-bar-style -> Enables the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-title-bar-style"] + }, + { + "description": "core:window:allow-set-visible-on-all-workspaces -> Enables the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-set-visible-on-all-workspaces"] + }, + { + "description": "core:window:allow-show -> Enables the show command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-show"] + }, + { + "description": "core:window:allow-start-dragging -> Enables the start_dragging command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-start-dragging"] + }, + { + "description": "core:window:allow-start-resize-dragging -> Enables the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-start-resize-dragging"] + }, + { + "description": "core:window:allow-theme -> Enables the theme command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-theme"] + }, + { + "description": "core:window:allow-title -> Enables the title command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-title"] + }, + { + "description": "core:window:allow-toggle-maximize -> Enables the toggle_maximize command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-toggle-maximize"] + }, + { + "description": "core:window:allow-unmaximize -> Enables the unmaximize command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-unmaximize"] + }, + { + "description": "core:window:allow-unminimize -> Enables the unminimize command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:allow-unminimize"] + }, + { + "description": "core:window:deny-available-monitors -> Denies the available_monitors command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-available-monitors"] + }, + { + "description": "core:window:deny-center -> Denies the center command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-center"] + }, + { + "description": "core:window:deny-close -> Denies the close command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-close"] + }, + { + "description": "core:window:deny-create -> Denies the create command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-create"] + }, + { + "description": "core:window:deny-current-monitor -> Denies the current_monitor command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-current-monitor"] + }, + { + "description": "core:window:deny-cursor-position -> Denies the cursor_position command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-cursor-position"] + }, + { + "description": "core:window:deny-destroy -> Denies the destroy command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-destroy"] + }, + { + "description": "core:window:deny-get-all-windows -> Denies the get_all_windows command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-get-all-windows"] + }, + { + "description": "core:window:deny-hide -> Denies the hide command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-hide"] + }, + { + "description": "core:window:deny-inner-position -> Denies the inner_position command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-inner-position"] + }, + { + "description": "core:window:deny-inner-size -> Denies the inner_size command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-inner-size"] + }, + { + "description": "core:window:deny-internal-toggle-maximize -> Denies the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-internal-toggle-maximize"] + }, + { + "description": "core:window:deny-is-closable -> Denies the is_closable command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-is-closable"] + }, + { + "description": "core:window:deny-is-decorated -> Denies the is_decorated command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-is-decorated"] + }, + { + "description": "core:window:deny-is-focused -> Denies the is_focused command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-is-focused"] + }, + { + "description": "core:window:deny-is-fullscreen -> Denies the is_fullscreen command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-is-fullscreen"] + }, + { + "description": "core:window:deny-is-maximizable -> Denies the is_maximizable command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-is-maximizable"] + }, + { + "description": "core:window:deny-is-maximized -> Denies the is_maximized command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-is-maximized"] + }, + { + "description": "core:window:deny-is-minimizable -> Denies the is_minimizable command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-is-minimizable"] + }, + { + "description": "core:window:deny-is-minimized -> Denies the is_minimized command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-is-minimized"] + }, + { + "description": "core:window:deny-is-resizable -> Denies the is_resizable command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-is-resizable"] + }, + { + "description": "core:window:deny-is-visible -> Denies the is_visible command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-is-visible"] + }, + { + "description": "core:window:deny-maximize -> Denies the maximize command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-maximize"] + }, + { + "description": "core:window:deny-minimize -> Denies the minimize command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-minimize"] + }, + { + "description": "core:window:deny-monitor-from-point -> Denies the monitor_from_point command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-monitor-from-point"] + }, + { + "description": "core:window:deny-outer-position -> Denies the outer_position command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-outer-position"] + }, + { + "description": "core:window:deny-outer-size -> Denies the outer_size command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-outer-size"] + }, + { + "description": "core:window:deny-primary-monitor -> Denies the primary_monitor command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-primary-monitor"] + }, + { + "description": "core:window:deny-request-user-attention -> Denies the request_user_attention command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-request-user-attention"] + }, + { + "description": "core:window:deny-scale-factor -> Denies the scale_factor command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-scale-factor"] + }, + { + "description": "core:window:deny-set-always-on-bottom -> Denies the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-always-on-bottom"] + }, + { + "description": "core:window:deny-set-always-on-top -> Denies the set_always_on_top command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-always-on-top"] + }, + { + "description": "core:window:deny-set-closable -> Denies the set_closable command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-closable"] + }, + { + "description": "core:window:deny-set-content-protected -> Denies the set_content_protected command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-content-protected"] + }, + { + "description": "core:window:deny-set-cursor-grab -> Denies the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-cursor-grab"] + }, + { + "description": "core:window:deny-set-cursor-icon -> Denies the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-cursor-icon"] + }, + { + "description": "core:window:deny-set-cursor-position -> Denies the set_cursor_position command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-cursor-position"] + }, + { + "description": "core:window:deny-set-cursor-visible -> Denies the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-cursor-visible"] + }, + { + "description": "core:window:deny-set-decorations -> Denies the set_decorations command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-decorations"] + }, + { + "description": "core:window:deny-set-effects -> Denies the set_effects command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-effects"] + }, + { + "description": "core:window:deny-set-focus -> Denies the set_focus command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-focus"] + }, + { + "description": "core:window:deny-set-fullscreen -> Denies the set_fullscreen command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-fullscreen"] + }, + { + "description": "core:window:deny-set-icon -> Denies the set_icon command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-icon"] + }, + { + "description": "core:window:deny-set-ignore-cursor-events -> Denies the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-ignore-cursor-events"] + }, + { + "description": "core:window:deny-set-max-size -> Denies the set_max_size command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-max-size"] + }, + { + "description": "core:window:deny-set-maximizable -> Denies the set_maximizable command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-maximizable"] + }, + { + "description": "core:window:deny-set-min-size -> Denies the set_min_size command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-min-size"] + }, + { + "description": "core:window:deny-set-minimizable -> Denies the set_minimizable command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-minimizable"] + }, + { + "description": "core:window:deny-set-position -> Denies the set_position command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-position"] + }, + { + "description": "core:window:deny-set-progress-bar -> Denies the set_progress_bar command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-progress-bar"] + }, + { + "description": "core:window:deny-set-resizable -> Denies the set_resizable command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-resizable"] + }, + { + "description": "core:window:deny-set-shadow -> Denies the set_shadow command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-shadow"] + }, + { + "description": "core:window:deny-set-size -> Denies the set_size command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-size"] + }, + { + "description": "core:window:deny-set-size-constraints -> Denies the set_size_constraints command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-size-constraints"] + }, + { + "description": "core:window:deny-set-skip-taskbar -> Denies the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-skip-taskbar"] + }, + { + "description": "core:window:deny-set-title -> Denies the set_title command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-title"] + }, + { + "description": "core:window:deny-set-title-bar-style -> Denies the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-title-bar-style"] + }, + { + "description": "core:window:deny-set-visible-on-all-workspaces -> Denies the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-set-visible-on-all-workspaces"] + }, + { + "description": "core:window:deny-show -> Denies the show command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-show"] + }, + { + "description": "core:window:deny-start-dragging -> Denies the start_dragging command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-start-dragging"] + }, + { + "description": "core:window:deny-start-resize-dragging -> Denies the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-start-resize-dragging"] + }, + { + "description": "core:window:deny-theme -> Denies the theme command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-theme"] + }, + { + "description": "core:window:deny-title -> Denies the title command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-title"] + }, + { + "description": "core:window:deny-toggle-maximize -> Denies the toggle_maximize command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-toggle-maximize"] + }, + { + "description": "core:window:deny-unmaximize -> Denies the unmaximize command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-unmaximize"] + }, + { + "description": "core:window:deny-unminimize -> Denies the unminimize command without any pre-configured scope.", + "type": "string", + "enum": ["core:window:deny-unminimize"] + }, + { + "description": "dialog:default -> This permission set configures the types of dialogs\navailable from the dialog plugin.\n\n#### Granted Permissions\n\nAll dialog types are enabled.\n\n\n", + "type": "string", + "enum": ["dialog:default"] + }, + { + "description": "dialog:allow-ask -> Enables the ask command without any pre-configured scope.", + "type": "string", + "enum": ["dialog:allow-ask"] + }, + { + "description": "dialog:allow-confirm -> Enables the confirm command without any pre-configured scope.", + "type": "string", + "enum": ["dialog:allow-confirm"] + }, + { + "description": "dialog:allow-message -> Enables the message command without any pre-configured scope.", + "type": "string", + "enum": ["dialog:allow-message"] + }, + { + "description": "dialog:allow-open -> Enables the open command without any pre-configured scope.", + "type": "string", + "enum": ["dialog:allow-open"] + }, + { + "description": "dialog:allow-save -> Enables the save command without any pre-configured scope.", + "type": "string", + "enum": ["dialog:allow-save"] + }, + { + "description": "dialog:deny-ask -> Denies the ask command without any pre-configured scope.", + "type": "string", + "enum": ["dialog:deny-ask"] + }, + { + "description": "dialog:deny-confirm -> Denies the confirm command without any pre-configured scope.", + "type": "string", + "enum": ["dialog:deny-confirm"] + }, + { + "description": "dialog:deny-message -> Denies the message command without any pre-configured scope.", + "type": "string", + "enum": ["dialog:deny-message"] + }, + { + "description": "dialog:deny-open -> Denies the open command without any pre-configured scope.", + "type": "string", + "enum": ["dialog:deny-open"] + }, + { + "description": "dialog:deny-save -> Denies the save command without any pre-configured scope.", + "type": "string", + "enum": ["dialog:deny-save"] + }, + { + "description": "fs:allow-app-meta -> This allows non-recursive read access to metadata of the `$APP` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-app-meta"] + }, + { + "description": "fs:allow-app-meta-recursive -> This allows full recursive read access to metadata of the `$APP` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-app-meta-recursive"] + }, + { + "description": "fs:allow-app-read -> This allows non-recursive read access to the `$APP` folder.", + "type": "string", + "enum": ["fs:allow-app-read"] + }, + { + "description": "fs:allow-app-read-recursive -> This allows full recursive read access to the complete `$APP` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-app-read-recursive"] + }, + { + "description": "fs:allow-app-write -> This allows non-recursive write access to the `$APP` folder.", + "type": "string", + "enum": ["fs:allow-app-write"] + }, + { + "description": "fs:allow-app-write-recursive -> This allows full recursive write access to the complete `$APP` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-app-write-recursive"] + }, + { + "description": "fs:allow-appcache-meta -> This allows non-recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-appcache-meta"] + }, + { + "description": "fs:allow-appcache-meta-recursive -> This allows full recursive read access to metadata of the `$APPCACHE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-appcache-meta-recursive"] + }, + { + "description": "fs:allow-appcache-read -> This allows non-recursive read access to the `$APPCACHE` folder.", + "type": "string", + "enum": ["fs:allow-appcache-read"] + }, + { + "description": "fs:allow-appcache-read-recursive -> This allows full recursive read access to the complete `$APPCACHE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-appcache-read-recursive"] + }, + { + "description": "fs:allow-appcache-write -> This allows non-recursive write access to the `$APPCACHE` folder.", + "type": "string", + "enum": ["fs:allow-appcache-write"] + }, + { + "description": "fs:allow-appcache-write-recursive -> This allows full recursive write access to the complete `$APPCACHE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-appcache-write-recursive"] + }, + { + "description": "fs:allow-appconfig-meta -> This allows non-recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-appconfig-meta"] + }, + { + "description": "fs:allow-appconfig-meta-recursive -> This allows full recursive read access to metadata of the `$APPCONFIG` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-appconfig-meta-recursive"] + }, + { + "description": "fs:allow-appconfig-read -> This allows non-recursive read access to the `$APPCONFIG` folder.", + "type": "string", + "enum": ["fs:allow-appconfig-read"] + }, + { + "description": "fs:allow-appconfig-read-recursive -> This allows full recursive read access to the complete `$APPCONFIG` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-appconfig-read-recursive"] + }, + { + "description": "fs:allow-appconfig-write -> This allows non-recursive write access to the `$APPCONFIG` folder.", + "type": "string", + "enum": ["fs:allow-appconfig-write"] + }, + { + "description": "fs:allow-appconfig-write-recursive -> This allows full recursive write access to the complete `$APPCONFIG` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-appconfig-write-recursive"] + }, + { + "description": "fs:allow-appdata-meta -> This allows non-recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-appdata-meta"] + }, + { + "description": "fs:allow-appdata-meta-recursive -> This allows full recursive read access to metadata of the `$APPDATA` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-appdata-meta-recursive"] + }, + { + "description": "fs:allow-appdata-read -> This allows non-recursive read access to the `$APPDATA` folder.", + "type": "string", + "enum": ["fs:allow-appdata-read"] + }, + { + "description": "fs:allow-appdata-read-recursive -> This allows full recursive read access to the complete `$APPDATA` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-appdata-read-recursive"] + }, + { + "description": "fs:allow-appdata-write -> This allows non-recursive write access to the `$APPDATA` folder.", + "type": "string", + "enum": ["fs:allow-appdata-write"] + }, + { + "description": "fs:allow-appdata-write-recursive -> This allows full recursive write access to the complete `$APPDATA` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-appdata-write-recursive"] + }, + { + "description": "fs:allow-applocaldata-meta -> This allows non-recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-applocaldata-meta"] + }, + { + "description": "fs:allow-applocaldata-meta-recursive -> This allows full recursive read access to metadata of the `$APPLOCALDATA` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-applocaldata-meta-recursive"] + }, + { + "description": "fs:allow-applocaldata-read -> This allows non-recursive read access to the `$APPLOCALDATA` folder.", + "type": "string", + "enum": ["fs:allow-applocaldata-read"] + }, + { + "description": "fs:allow-applocaldata-read-recursive -> This allows full recursive read access to the complete `$APPLOCALDATA` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-applocaldata-read-recursive"] + }, + { + "description": "fs:allow-applocaldata-write -> This allows non-recursive write access to the `$APPLOCALDATA` folder.", + "type": "string", + "enum": ["fs:allow-applocaldata-write"] + }, + { + "description": "fs:allow-applocaldata-write-recursive -> This allows full recursive write access to the complete `$APPLOCALDATA` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-applocaldata-write-recursive"] + }, + { + "description": "fs:allow-applog-meta -> This allows non-recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-applog-meta"] + }, + { + "description": "fs:allow-applog-meta-recursive -> This allows full recursive read access to metadata of the `$APPLOG` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-applog-meta-recursive"] + }, + { + "description": "fs:allow-applog-read -> This allows non-recursive read access to the `$APPLOG` folder.", + "type": "string", + "enum": ["fs:allow-applog-read"] + }, + { + "description": "fs:allow-applog-read-recursive -> This allows full recursive read access to the complete `$APPLOG` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-applog-read-recursive"] + }, + { + "description": "fs:allow-applog-write -> This allows non-recursive write access to the `$APPLOG` folder.", + "type": "string", + "enum": ["fs:allow-applog-write"] + }, + { + "description": "fs:allow-applog-write-recursive -> This allows full recursive write access to the complete `$APPLOG` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-applog-write-recursive"] + }, + { + "description": "fs:allow-audio-meta -> This allows non-recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-audio-meta"] + }, + { + "description": "fs:allow-audio-meta-recursive -> This allows full recursive read access to metadata of the `$AUDIO` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-audio-meta-recursive"] + }, + { + "description": "fs:allow-audio-read -> This allows non-recursive read access to the `$AUDIO` folder.", + "type": "string", + "enum": ["fs:allow-audio-read"] + }, + { + "description": "fs:allow-audio-read-recursive -> This allows full recursive read access to the complete `$AUDIO` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-audio-read-recursive"] + }, + { + "description": "fs:allow-audio-write -> This allows non-recursive write access to the `$AUDIO` folder.", + "type": "string", + "enum": ["fs:allow-audio-write"] + }, + { + "description": "fs:allow-audio-write-recursive -> This allows full recursive write access to the complete `$AUDIO` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-audio-write-recursive"] + }, + { + "description": "fs:allow-cache-meta -> This allows non-recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-cache-meta"] + }, + { + "description": "fs:allow-cache-meta-recursive -> This allows full recursive read access to metadata of the `$CACHE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-cache-meta-recursive"] + }, + { + "description": "fs:allow-cache-read -> This allows non-recursive read access to the `$CACHE` folder.", + "type": "string", + "enum": ["fs:allow-cache-read"] + }, + { + "description": "fs:allow-cache-read-recursive -> This allows full recursive read access to the complete `$CACHE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-cache-read-recursive"] + }, + { + "description": "fs:allow-cache-write -> This allows non-recursive write access to the `$CACHE` folder.", + "type": "string", + "enum": ["fs:allow-cache-write"] + }, + { + "description": "fs:allow-cache-write-recursive -> This allows full recursive write access to the complete `$CACHE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-cache-write-recursive"] + }, + { + "description": "fs:allow-config-meta -> This allows non-recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-config-meta"] + }, + { + "description": "fs:allow-config-meta-recursive -> This allows full recursive read access to metadata of the `$CONFIG` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-config-meta-recursive"] + }, + { + "description": "fs:allow-config-read -> This allows non-recursive read access to the `$CONFIG` folder.", + "type": "string", + "enum": ["fs:allow-config-read"] + }, + { + "description": "fs:allow-config-read-recursive -> This allows full recursive read access to the complete `$CONFIG` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-config-read-recursive"] + }, + { + "description": "fs:allow-config-write -> This allows non-recursive write access to the `$CONFIG` folder.", + "type": "string", + "enum": ["fs:allow-config-write"] + }, + { + "description": "fs:allow-config-write-recursive -> This allows full recursive write access to the complete `$CONFIG` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-config-write-recursive"] + }, + { + "description": "fs:allow-data-meta -> This allows non-recursive read access to metadata of the `$DATA` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-data-meta"] + }, + { + "description": "fs:allow-data-meta-recursive -> This allows full recursive read access to metadata of the `$DATA` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-data-meta-recursive"] + }, + { + "description": "fs:allow-data-read -> This allows non-recursive read access to the `$DATA` folder.", + "type": "string", + "enum": ["fs:allow-data-read"] + }, + { + "description": "fs:allow-data-read-recursive -> This allows full recursive read access to the complete `$DATA` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-data-read-recursive"] + }, + { + "description": "fs:allow-data-write -> This allows non-recursive write access to the `$DATA` folder.", + "type": "string", + "enum": ["fs:allow-data-write"] + }, + { + "description": "fs:allow-data-write-recursive -> This allows full recursive write access to the complete `$DATA` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-data-write-recursive"] + }, + { + "description": "fs:allow-desktop-meta -> This allows non-recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-desktop-meta"] + }, + { + "description": "fs:allow-desktop-meta-recursive -> This allows full recursive read access to metadata of the `$DESKTOP` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-desktop-meta-recursive"] + }, + { + "description": "fs:allow-desktop-read -> This allows non-recursive read access to the `$DESKTOP` folder.", + "type": "string", + "enum": ["fs:allow-desktop-read"] + }, + { + "description": "fs:allow-desktop-read-recursive -> This allows full recursive read access to the complete `$DESKTOP` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-desktop-read-recursive"] + }, + { + "description": "fs:allow-desktop-write -> This allows non-recursive write access to the `$DESKTOP` folder.", + "type": "string", + "enum": ["fs:allow-desktop-write"] + }, + { + "description": "fs:allow-desktop-write-recursive -> This allows full recursive write access to the complete `$DESKTOP` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-desktop-write-recursive"] + }, + { + "description": "fs:allow-document-meta -> This allows non-recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-document-meta"] + }, + { + "description": "fs:allow-document-meta-recursive -> This allows full recursive read access to metadata of the `$DOCUMENT` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-document-meta-recursive"] + }, + { + "description": "fs:allow-document-read -> This allows non-recursive read access to the `$DOCUMENT` folder.", + "type": "string", + "enum": ["fs:allow-document-read"] + }, + { + "description": "fs:allow-document-read-recursive -> This allows full recursive read access to the complete `$DOCUMENT` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-document-read-recursive"] + }, + { + "description": "fs:allow-document-write -> This allows non-recursive write access to the `$DOCUMENT` folder.", + "type": "string", + "enum": ["fs:allow-document-write"] + }, + { + "description": "fs:allow-document-write-recursive -> This allows full recursive write access to the complete `$DOCUMENT` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-document-write-recursive"] + }, + { + "description": "fs:allow-download-meta -> This allows non-recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-download-meta"] + }, + { + "description": "fs:allow-download-meta-recursive -> This allows full recursive read access to metadata of the `$DOWNLOAD` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-download-meta-recursive"] + }, + { + "description": "fs:allow-download-read -> This allows non-recursive read access to the `$DOWNLOAD` folder.", + "type": "string", + "enum": ["fs:allow-download-read"] + }, + { + "description": "fs:allow-download-read-recursive -> This allows full recursive read access to the complete `$DOWNLOAD` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-download-read-recursive"] + }, + { + "description": "fs:allow-download-write -> This allows non-recursive write access to the `$DOWNLOAD` folder.", + "type": "string", + "enum": ["fs:allow-download-write"] + }, + { + "description": "fs:allow-download-write-recursive -> This allows full recursive write access to the complete `$DOWNLOAD` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-download-write-recursive"] + }, + { + "description": "fs:allow-exe-meta -> This allows non-recursive read access to metadata of the `$EXE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-exe-meta"] + }, + { + "description": "fs:allow-exe-meta-recursive -> This allows full recursive read access to metadata of the `$EXE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-exe-meta-recursive"] + }, + { + "description": "fs:allow-exe-read -> This allows non-recursive read access to the `$EXE` folder.", + "type": "string", + "enum": ["fs:allow-exe-read"] + }, + { + "description": "fs:allow-exe-read-recursive -> This allows full recursive read access to the complete `$EXE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-exe-read-recursive"] + }, + { + "description": "fs:allow-exe-write -> This allows non-recursive write access to the `$EXE` folder.", + "type": "string", + "enum": ["fs:allow-exe-write"] + }, + { + "description": "fs:allow-exe-write-recursive -> This allows full recursive write access to the complete `$EXE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-exe-write-recursive"] + }, + { + "description": "fs:allow-font-meta -> This allows non-recursive read access to metadata of the `$FONT` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-font-meta"] + }, + { + "description": "fs:allow-font-meta-recursive -> This allows full recursive read access to metadata of the `$FONT` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-font-meta-recursive"] + }, + { + "description": "fs:allow-font-read -> This allows non-recursive read access to the `$FONT` folder.", + "type": "string", + "enum": ["fs:allow-font-read"] + }, + { + "description": "fs:allow-font-read-recursive -> This allows full recursive read access to the complete `$FONT` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-font-read-recursive"] + }, + { + "description": "fs:allow-font-write -> This allows non-recursive write access to the `$FONT` folder.", + "type": "string", + "enum": ["fs:allow-font-write"] + }, + { + "description": "fs:allow-font-write-recursive -> This allows full recursive write access to the complete `$FONT` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-font-write-recursive"] + }, + { + "description": "fs:allow-home-meta -> This allows non-recursive read access to metadata of the `$HOME` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-home-meta"] + }, + { + "description": "fs:allow-home-meta-recursive -> This allows full recursive read access to metadata of the `$HOME` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-home-meta-recursive"] + }, + { + "description": "fs:allow-home-read -> This allows non-recursive read access to the `$HOME` folder.", + "type": "string", + "enum": ["fs:allow-home-read"] + }, + { + "description": "fs:allow-home-read-recursive -> This allows full recursive read access to the complete `$HOME` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-home-read-recursive"] + }, + { + "description": "fs:allow-home-write -> This allows non-recursive write access to the `$HOME` folder.", + "type": "string", + "enum": ["fs:allow-home-write"] + }, + { + "description": "fs:allow-home-write-recursive -> This allows full recursive write access to the complete `$HOME` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-home-write-recursive"] + }, + { + "description": "fs:allow-localdata-meta -> This allows non-recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-localdata-meta"] + }, + { + "description": "fs:allow-localdata-meta-recursive -> This allows full recursive read access to metadata of the `$LOCALDATA` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-localdata-meta-recursive"] + }, + { + "description": "fs:allow-localdata-read -> This allows non-recursive read access to the `$LOCALDATA` folder.", + "type": "string", + "enum": ["fs:allow-localdata-read"] + }, + { + "description": "fs:allow-localdata-read-recursive -> This allows full recursive read access to the complete `$LOCALDATA` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-localdata-read-recursive"] + }, + { + "description": "fs:allow-localdata-write -> This allows non-recursive write access to the `$LOCALDATA` folder.", + "type": "string", + "enum": ["fs:allow-localdata-write"] + }, + { + "description": "fs:allow-localdata-write-recursive -> This allows full recursive write access to the complete `$LOCALDATA` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-localdata-write-recursive"] + }, + { + "description": "fs:allow-log-meta -> This allows non-recursive read access to metadata of the `$LOG` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-log-meta"] + }, + { + "description": "fs:allow-log-meta-recursive -> This allows full recursive read access to metadata of the `$LOG` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-log-meta-recursive"] + }, + { + "description": "fs:allow-log-read -> This allows non-recursive read access to the `$LOG` folder.", + "type": "string", + "enum": ["fs:allow-log-read"] + }, + { + "description": "fs:allow-log-read-recursive -> This allows full recursive read access to the complete `$LOG` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-log-read-recursive"] + }, + { + "description": "fs:allow-log-write -> This allows non-recursive write access to the `$LOG` folder.", + "type": "string", + "enum": ["fs:allow-log-write"] + }, + { + "description": "fs:allow-log-write-recursive -> This allows full recursive write access to the complete `$LOG` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-log-write-recursive"] + }, + { + "description": "fs:allow-picture-meta -> This allows non-recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-picture-meta"] + }, + { + "description": "fs:allow-picture-meta-recursive -> This allows full recursive read access to metadata of the `$PICTURE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-picture-meta-recursive"] + }, + { + "description": "fs:allow-picture-read -> This allows non-recursive read access to the `$PICTURE` folder.", + "type": "string", + "enum": ["fs:allow-picture-read"] + }, + { + "description": "fs:allow-picture-read-recursive -> This allows full recursive read access to the complete `$PICTURE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-picture-read-recursive"] + }, + { + "description": "fs:allow-picture-write -> This allows non-recursive write access to the `$PICTURE` folder.", + "type": "string", + "enum": ["fs:allow-picture-write"] + }, + { + "description": "fs:allow-picture-write-recursive -> This allows full recursive write access to the complete `$PICTURE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-picture-write-recursive"] + }, + { + "description": "fs:allow-public-meta -> This allows non-recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-public-meta"] + }, + { + "description": "fs:allow-public-meta-recursive -> This allows full recursive read access to metadata of the `$PUBLIC` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-public-meta-recursive"] + }, + { + "description": "fs:allow-public-read -> This allows non-recursive read access to the `$PUBLIC` folder.", + "type": "string", + "enum": ["fs:allow-public-read"] + }, + { + "description": "fs:allow-public-read-recursive -> This allows full recursive read access to the complete `$PUBLIC` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-public-read-recursive"] + }, + { + "description": "fs:allow-public-write -> This allows non-recursive write access to the `$PUBLIC` folder.", + "type": "string", + "enum": ["fs:allow-public-write"] + }, + { + "description": "fs:allow-public-write-recursive -> This allows full recursive write access to the complete `$PUBLIC` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-public-write-recursive"] + }, + { + "description": "fs:allow-resource-meta -> This allows non-recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-resource-meta"] + }, + { + "description": "fs:allow-resource-meta-recursive -> This allows full recursive read access to metadata of the `$RESOURCE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-resource-meta-recursive"] + }, + { + "description": "fs:allow-resource-read -> This allows non-recursive read access to the `$RESOURCE` folder.", + "type": "string", + "enum": ["fs:allow-resource-read"] + }, + { + "description": "fs:allow-resource-read-recursive -> This allows full recursive read access to the complete `$RESOURCE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-resource-read-recursive"] + }, + { + "description": "fs:allow-resource-write -> This allows non-recursive write access to the `$RESOURCE` folder.", + "type": "string", + "enum": ["fs:allow-resource-write"] + }, + { + "description": "fs:allow-resource-write-recursive -> This allows full recursive write access to the complete `$RESOURCE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-resource-write-recursive"] + }, + { + "description": "fs:allow-runtime-meta -> This allows non-recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-runtime-meta"] + }, + { + "description": "fs:allow-runtime-meta-recursive -> This allows full recursive read access to metadata of the `$RUNTIME` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-runtime-meta-recursive"] + }, + { + "description": "fs:allow-runtime-read -> This allows non-recursive read access to the `$RUNTIME` folder.", + "type": "string", + "enum": ["fs:allow-runtime-read"] + }, + { + "description": "fs:allow-runtime-read-recursive -> This allows full recursive read access to the complete `$RUNTIME` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-runtime-read-recursive"] + }, + { + "description": "fs:allow-runtime-write -> This allows non-recursive write access to the `$RUNTIME` folder.", + "type": "string", + "enum": ["fs:allow-runtime-write"] + }, + { + "description": "fs:allow-runtime-write-recursive -> This allows full recursive write access to the complete `$RUNTIME` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-runtime-write-recursive"] + }, + { + "description": "fs:allow-temp-meta -> This allows non-recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-temp-meta"] + }, + { + "description": "fs:allow-temp-meta-recursive -> This allows full recursive read access to metadata of the `$TEMP` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-temp-meta-recursive"] + }, + { + "description": "fs:allow-temp-read -> This allows non-recursive read access to the `$TEMP` folder.", + "type": "string", + "enum": ["fs:allow-temp-read"] + }, + { + "description": "fs:allow-temp-read-recursive -> This allows full recursive read access to the complete `$TEMP` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-temp-read-recursive"] + }, + { + "description": "fs:allow-temp-write -> This allows non-recursive write access to the `$TEMP` folder.", + "type": "string", + "enum": ["fs:allow-temp-write"] + }, + { + "description": "fs:allow-temp-write-recursive -> This allows full recursive write access to the complete `$TEMP` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-temp-write-recursive"] + }, + { + "description": "fs:allow-template-meta -> This allows non-recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-template-meta"] + }, + { + "description": "fs:allow-template-meta-recursive -> This allows full recursive read access to metadata of the `$TEMPLATE` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-template-meta-recursive"] + }, + { + "description": "fs:allow-template-read -> This allows non-recursive read access to the `$TEMPLATE` folder.", + "type": "string", + "enum": ["fs:allow-template-read"] + }, + { + "description": "fs:allow-template-read-recursive -> This allows full recursive read access to the complete `$TEMPLATE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-template-read-recursive"] + }, + { + "description": "fs:allow-template-write -> This allows non-recursive write access to the `$TEMPLATE` folder.", + "type": "string", + "enum": ["fs:allow-template-write"] + }, + { + "description": "fs:allow-template-write-recursive -> This allows full recursive write access to the complete `$TEMPLATE` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-template-write-recursive"] + }, + { + "description": "fs:allow-video-meta -> This allows non-recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-video-meta"] + }, + { + "description": "fs:allow-video-meta-recursive -> This allows full recursive read access to metadata of the `$VIDEO` folder, including file listing and statistics.", + "type": "string", + "enum": ["fs:allow-video-meta-recursive"] + }, + { + "description": "fs:allow-video-read -> This allows non-recursive read access to the `$VIDEO` folder.", + "type": "string", + "enum": ["fs:allow-video-read"] + }, + { + "description": "fs:allow-video-read-recursive -> This allows full recursive read access to the complete `$VIDEO` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-video-read-recursive"] + }, + { + "description": "fs:allow-video-write -> This allows non-recursive write access to the `$VIDEO` folder.", + "type": "string", + "enum": ["fs:allow-video-write"] + }, + { + "description": "fs:allow-video-write-recursive -> This allows full recursive write access to the complete `$VIDEO` folder, files and subdirectories.", + "type": "string", + "enum": ["fs:allow-video-write-recursive"] + }, + { + "description": "fs:deny-default -> This denies access to dangerous Tauri relevant files and folders by default.", + "type": "string", + "enum": ["fs:deny-default"] + }, + { + "description": "fs:default -> This set of permissions describes the what kind of\nfile system access the `fs` plugin has enabled or denied by default.\n\n#### Granted Permissions\n\nThis default permission set enables read access to the\napplication specific directories (AppConfig, AppData, AppLocalData, AppCache,\nAppLog) and all files and sub directories created in it.\nThe location of these directories depends on the operating system,\nwhere the application is run.\n\nIn general these directories need to be manually created\nby the application at runtime, before accessing files or folders\nin it is possible.\n\nTherefore, it is also allowed to create all of these folders via\nthe `mkdir` command.\n\n#### Denied Permissions\n\nThis default permission set prevents access to critical components\nof the Tauri application by default.\nOn Windows the webview data folder access is denied.\n\n", + "type": "string", + "enum": ["fs:default"] + }, + { + "description": "fs:allow-copy-file -> Enables the copy_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-copy-file"] + }, + { + "description": "fs:allow-create -> Enables the create command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-create"] + }, + { + "description": "fs:allow-exists -> Enables the exists command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-exists"] + }, + { + "description": "fs:allow-fstat -> Enables the fstat command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-fstat"] + }, + { + "description": "fs:allow-ftruncate -> Enables the ftruncate command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-ftruncate"] + }, + { + "description": "fs:allow-lstat -> Enables the lstat command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-lstat"] + }, + { + "description": "fs:allow-mkdir -> Enables the mkdir command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-mkdir"] + }, + { + "description": "fs:allow-open -> Enables the open command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-open"] + }, + { + "description": "fs:allow-read -> Enables the read command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-read"] + }, + { + "description": "fs:allow-read-dir -> Enables the read_dir command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-read-dir"] + }, + { + "description": "fs:allow-read-file -> Enables the read_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-read-file"] + }, + { + "description": "fs:allow-read-text-file -> Enables the read_text_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-read-text-file"] + }, + { + "description": "fs:allow-read-text-file-lines -> Enables the read_text_file_lines command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-read-text-file-lines"] + }, + { + "description": "fs:allow-read-text-file-lines-next -> Enables the read_text_file_lines_next command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-read-text-file-lines-next"] + }, + { + "description": "fs:allow-remove -> Enables the remove command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-remove"] + }, + { + "description": "fs:allow-rename -> Enables the rename command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-rename"] + }, + { + "description": "fs:allow-seek -> Enables the seek command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-seek"] + }, + { + "description": "fs:allow-stat -> Enables the stat command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-stat"] + }, + { + "description": "fs:allow-truncate -> Enables the truncate command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-truncate"] + }, + { + "description": "fs:allow-unwatch -> Enables the unwatch command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-unwatch"] + }, + { + "description": "fs:allow-watch -> Enables the watch command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-watch"] + }, + { + "description": "fs:allow-write -> Enables the write command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-write"] + }, + { + "description": "fs:allow-write-file -> Enables the write_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-write-file"] + }, + { + "description": "fs:allow-write-text-file -> Enables the write_text_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:allow-write-text-file"] + }, + { + "description": "fs:create-app-specific-dirs -> This permissions allows to create the application specific directories.\n", + "type": "string", + "enum": ["fs:create-app-specific-dirs"] + }, + { + "description": "fs:deny-copy-file -> Denies the copy_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-copy-file"] + }, + { + "description": "fs:deny-create -> Denies the create command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-create"] + }, + { + "description": "fs:deny-exists -> Denies the exists command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-exists"] + }, + { + "description": "fs:deny-fstat -> Denies the fstat command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-fstat"] + }, + { + "description": "fs:deny-ftruncate -> Denies the ftruncate command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-ftruncate"] + }, + { + "description": "fs:deny-lstat -> Denies the lstat command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-lstat"] + }, + { + "description": "fs:deny-mkdir -> Denies the mkdir command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-mkdir"] + }, + { + "description": "fs:deny-open -> Denies the open command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-open"] + }, + { + "description": "fs:deny-read -> Denies the read command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-read"] + }, + { + "description": "fs:deny-read-dir -> Denies the read_dir command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-read-dir"] + }, + { + "description": "fs:deny-read-file -> Denies the read_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-read-file"] + }, + { + "description": "fs:deny-read-text-file -> Denies the read_text_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-read-text-file"] + }, + { + "description": "fs:deny-read-text-file-lines -> Denies the read_text_file_lines command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-read-text-file-lines"] + }, + { + "description": "fs:deny-read-text-file-lines-next -> Denies the read_text_file_lines_next command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-read-text-file-lines-next"] + }, + { + "description": "fs:deny-remove -> Denies the remove command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-remove"] + }, + { + "description": "fs:deny-rename -> Denies the rename command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-rename"] + }, + { + "description": "fs:deny-seek -> Denies the seek command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-seek"] + }, + { + "description": "fs:deny-stat -> Denies the stat command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-stat"] + }, + { + "description": "fs:deny-truncate -> Denies the truncate command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-truncate"] + }, + { + "description": "fs:deny-unwatch -> Denies the unwatch command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-unwatch"] + }, + { + "description": "fs:deny-watch -> Denies the watch command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-watch"] + }, + { + "description": "fs:deny-webview-data-linux -> This denies read access to the\n`$APPLOCALDATA` folder on linux as the webview data and configuration values are stored here.\nAllowing access can lead to sensitive information disclosure and should be well considered.", + "type": "string", + "enum": ["fs:deny-webview-data-linux"] + }, + { + "description": "fs:deny-webview-data-windows -> This denies read access to the\n`$APPLOCALDATA/EBWebView` folder on windows as the webview data and configuration values are stored here.\nAllowing access can lead to sensitive information disclosure and should be well considered.", + "type": "string", + "enum": ["fs:deny-webview-data-windows"] + }, + { + "description": "fs:deny-write -> Denies the write command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-write"] + }, + { + "description": "fs:deny-write-file -> Denies the write_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-write-file"] + }, + { + "description": "fs:deny-write-text-file -> Denies the write_text_file command without any pre-configured scope.", + "type": "string", + "enum": ["fs:deny-write-text-file"] + }, + { + "description": "fs:read-all -> This enables all read related commands without any pre-configured accessible paths.", + "type": "string", + "enum": ["fs:read-all"] + }, + { + "description": "fs:read-app-specific-dirs-recursive -> This permission allows recursive read functionality on the application\nspecific base directories. \n", + "type": "string", + "enum": ["fs:read-app-specific-dirs-recursive"] + }, + { + "description": "fs:read-dirs -> This enables directory read and file metadata related commands without any pre-configured accessible paths.", + "type": "string", + "enum": ["fs:read-dirs"] + }, + { + "description": "fs:read-files -> This enables file read related commands without any pre-configured accessible paths.", + "type": "string", + "enum": ["fs:read-files"] + }, + { + "description": "fs:read-meta -> This enables all index or metadata related commands without any pre-configured accessible paths.", + "type": "string", + "enum": ["fs:read-meta"] + }, + { + "description": "fs:scope -> An empty permission you can use to modify the global scope.", + "type": "string", + "enum": ["fs:scope"] + }, + { + "description": "fs:scope-app -> This scope permits access to all files and list content of top level directories in the `$APP`folder.", + "type": "string", + "enum": ["fs:scope-app"] + }, + { + "description": "fs:scope-app-index -> This scope permits to list all files and folders in the `$APP`folder.", + "type": "string", + "enum": ["fs:scope-app-index"] + }, + { + "description": "fs:scope-app-recursive -> This scope permits recursive access to the complete `$APP` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-app-recursive"] + }, + { + "description": "fs:scope-appcache -> This scope permits access to all files and list content of top level directories in the `$APPCACHE`folder.", + "type": "string", + "enum": ["fs:scope-appcache"] + }, + { + "description": "fs:scope-appcache-index -> This scope permits to list all files and folders in the `$APPCACHE`folder.", + "type": "string", + "enum": ["fs:scope-appcache-index"] + }, + { + "description": "fs:scope-appcache-recursive -> This scope permits recursive access to the complete `$APPCACHE` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-appcache-recursive"] + }, + { + "description": "fs:scope-appconfig -> This scope permits access to all files and list content of top level directories in the `$APPCONFIG`folder.", + "type": "string", + "enum": ["fs:scope-appconfig"] + }, + { + "description": "fs:scope-appconfig-index -> This scope permits to list all files and folders in the `$APPCONFIG`folder.", + "type": "string", + "enum": ["fs:scope-appconfig-index"] + }, + { + "description": "fs:scope-appconfig-recursive -> This scope permits recursive access to the complete `$APPCONFIG` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-appconfig-recursive"] + }, + { + "description": "fs:scope-appdata -> This scope permits access to all files and list content of top level directories in the `$APPDATA`folder.", + "type": "string", + "enum": ["fs:scope-appdata"] + }, + { + "description": "fs:scope-appdata-index -> This scope permits to list all files and folders in the `$APPDATA`folder.", + "type": "string", + "enum": ["fs:scope-appdata-index"] + }, + { + "description": "fs:scope-appdata-recursive -> This scope permits recursive access to the complete `$APPDATA` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-appdata-recursive"] + }, + { + "description": "fs:scope-applocaldata -> This scope permits access to all files and list content of top level directories in the `$APPLOCALDATA`folder.", + "type": "string", + "enum": ["fs:scope-applocaldata"] + }, + { + "description": "fs:scope-applocaldata-index -> This scope permits to list all files and folders in the `$APPLOCALDATA`folder.", + "type": "string", + "enum": ["fs:scope-applocaldata-index"] + }, + { + "description": "fs:scope-applocaldata-recursive -> This scope permits recursive access to the complete `$APPLOCALDATA` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-applocaldata-recursive"] + }, + { + "description": "fs:scope-applog -> This scope permits access to all files and list content of top level directories in the `$APPLOG`folder.", + "type": "string", + "enum": ["fs:scope-applog"] + }, + { + "description": "fs:scope-applog-index -> This scope permits to list all files and folders in the `$APPLOG`folder.", + "type": "string", + "enum": ["fs:scope-applog-index"] + }, + { + "description": "fs:scope-applog-recursive -> This scope permits recursive access to the complete `$APPLOG` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-applog-recursive"] + }, + { + "description": "fs:scope-audio -> This scope permits access to all files and list content of top level directories in the `$AUDIO`folder.", + "type": "string", + "enum": ["fs:scope-audio"] + }, + { + "description": "fs:scope-audio-index -> This scope permits to list all files and folders in the `$AUDIO`folder.", + "type": "string", + "enum": ["fs:scope-audio-index"] + }, + { + "description": "fs:scope-audio-recursive -> This scope permits recursive access to the complete `$AUDIO` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-audio-recursive"] + }, + { + "description": "fs:scope-cache -> This scope permits access to all files and list content of top level directories in the `$CACHE`folder.", + "type": "string", + "enum": ["fs:scope-cache"] + }, + { + "description": "fs:scope-cache-index -> This scope permits to list all files and folders in the `$CACHE`folder.", + "type": "string", + "enum": ["fs:scope-cache-index"] + }, + { + "description": "fs:scope-cache-recursive -> This scope permits recursive access to the complete `$CACHE` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-cache-recursive"] + }, + { + "description": "fs:scope-config -> This scope permits access to all files and list content of top level directories in the `$CONFIG`folder.", + "type": "string", + "enum": ["fs:scope-config"] + }, + { + "description": "fs:scope-config-index -> This scope permits to list all files and folders in the `$CONFIG`folder.", + "type": "string", + "enum": ["fs:scope-config-index"] + }, + { + "description": "fs:scope-config-recursive -> This scope permits recursive access to the complete `$CONFIG` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-config-recursive"] + }, + { + "description": "fs:scope-data -> This scope permits access to all files and list content of top level directories in the `$DATA`folder.", + "type": "string", + "enum": ["fs:scope-data"] + }, + { + "description": "fs:scope-data-index -> This scope permits to list all files and folders in the `$DATA`folder.", + "type": "string", + "enum": ["fs:scope-data-index"] + }, + { + "description": "fs:scope-data-recursive -> This scope permits recursive access to the complete `$DATA` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-data-recursive"] + }, + { + "description": "fs:scope-desktop -> This scope permits access to all files and list content of top level directories in the `$DESKTOP`folder.", + "type": "string", + "enum": ["fs:scope-desktop"] + }, + { + "description": "fs:scope-desktop-index -> This scope permits to list all files and folders in the `$DESKTOP`folder.", + "type": "string", + "enum": ["fs:scope-desktop-index"] + }, + { + "description": "fs:scope-desktop-recursive -> This scope permits recursive access to the complete `$DESKTOP` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-desktop-recursive"] + }, + { + "description": "fs:scope-document -> This scope permits access to all files and list content of top level directories in the `$DOCUMENT`folder.", + "type": "string", + "enum": ["fs:scope-document"] + }, + { + "description": "fs:scope-document-index -> This scope permits to list all files and folders in the `$DOCUMENT`folder.", + "type": "string", + "enum": ["fs:scope-document-index"] + }, + { + "description": "fs:scope-document-recursive -> This scope permits recursive access to the complete `$DOCUMENT` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-document-recursive"] + }, + { + "description": "fs:scope-download -> This scope permits access to all files and list content of top level directories in the `$DOWNLOAD`folder.", + "type": "string", + "enum": ["fs:scope-download"] + }, + { + "description": "fs:scope-download-index -> This scope permits to list all files and folders in the `$DOWNLOAD`folder.", + "type": "string", + "enum": ["fs:scope-download-index"] + }, + { + "description": "fs:scope-download-recursive -> This scope permits recursive access to the complete `$DOWNLOAD` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-download-recursive"] + }, + { + "description": "fs:scope-exe -> This scope permits access to all files and list content of top level directories in the `$EXE`folder.", + "type": "string", + "enum": ["fs:scope-exe"] + }, + { + "description": "fs:scope-exe-index -> This scope permits to list all files and folders in the `$EXE`folder.", + "type": "string", + "enum": ["fs:scope-exe-index"] + }, + { + "description": "fs:scope-exe-recursive -> This scope permits recursive access to the complete `$EXE` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-exe-recursive"] + }, + { + "description": "fs:scope-font -> This scope permits access to all files and list content of top level directories in the `$FONT`folder.", + "type": "string", + "enum": ["fs:scope-font"] + }, + { + "description": "fs:scope-font-index -> This scope permits to list all files and folders in the `$FONT`folder.", + "type": "string", + "enum": ["fs:scope-font-index"] + }, + { + "description": "fs:scope-font-recursive -> This scope permits recursive access to the complete `$FONT` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-font-recursive"] + }, + { + "description": "fs:scope-home -> This scope permits access to all files and list content of top level directories in the `$HOME`folder.", + "type": "string", + "enum": ["fs:scope-home"] + }, + { + "description": "fs:scope-home-index -> This scope permits to list all files and folders in the `$HOME`folder.", + "type": "string", + "enum": ["fs:scope-home-index"] + }, + { + "description": "fs:scope-home-recursive -> This scope permits recursive access to the complete `$HOME` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-home-recursive"] + }, + { + "description": "fs:scope-localdata -> This scope permits access to all files and list content of top level directories in the `$LOCALDATA`folder.", + "type": "string", + "enum": ["fs:scope-localdata"] + }, + { + "description": "fs:scope-localdata-index -> This scope permits to list all files and folders in the `$LOCALDATA`folder.", + "type": "string", + "enum": ["fs:scope-localdata-index"] + }, + { + "description": "fs:scope-localdata-recursive -> This scope permits recursive access to the complete `$LOCALDATA` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-localdata-recursive"] + }, + { + "description": "fs:scope-log -> This scope permits access to all files and list content of top level directories in the `$LOG`folder.", + "type": "string", + "enum": ["fs:scope-log"] + }, + { + "description": "fs:scope-log-index -> This scope permits to list all files and folders in the `$LOG`folder.", + "type": "string", + "enum": ["fs:scope-log-index"] + }, + { + "description": "fs:scope-log-recursive -> This scope permits recursive access to the complete `$LOG` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-log-recursive"] + }, + { + "description": "fs:scope-picture -> This scope permits access to all files and list content of top level directories in the `$PICTURE`folder.", + "type": "string", + "enum": ["fs:scope-picture"] + }, + { + "description": "fs:scope-picture-index -> This scope permits to list all files and folders in the `$PICTURE`folder.", + "type": "string", + "enum": ["fs:scope-picture-index"] + }, + { + "description": "fs:scope-picture-recursive -> This scope permits recursive access to the complete `$PICTURE` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-picture-recursive"] + }, + { + "description": "fs:scope-public -> This scope permits access to all files and list content of top level directories in the `$PUBLIC`folder.", + "type": "string", + "enum": ["fs:scope-public"] + }, + { + "description": "fs:scope-public-index -> This scope permits to list all files and folders in the `$PUBLIC`folder.", + "type": "string", + "enum": ["fs:scope-public-index"] + }, + { + "description": "fs:scope-public-recursive -> This scope permits recursive access to the complete `$PUBLIC` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-public-recursive"] + }, + { + "description": "fs:scope-resource -> This scope permits access to all files and list content of top level directories in the `$RESOURCE`folder.", + "type": "string", + "enum": ["fs:scope-resource"] + }, + { + "description": "fs:scope-resource-index -> This scope permits to list all files and folders in the `$RESOURCE`folder.", + "type": "string", + "enum": ["fs:scope-resource-index"] + }, + { + "description": "fs:scope-resource-recursive -> This scope permits recursive access to the complete `$RESOURCE` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-resource-recursive"] + }, + { + "description": "fs:scope-runtime -> This scope permits access to all files and list content of top level directories in the `$RUNTIME`folder.", + "type": "string", + "enum": ["fs:scope-runtime"] + }, + { + "description": "fs:scope-runtime-index -> This scope permits to list all files and folders in the `$RUNTIME`folder.", + "type": "string", + "enum": ["fs:scope-runtime-index"] + }, + { + "description": "fs:scope-runtime-recursive -> This scope permits recursive access to the complete `$RUNTIME` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-runtime-recursive"] + }, + { + "description": "fs:scope-temp -> This scope permits access to all files and list content of top level directories in the `$TEMP`folder.", + "type": "string", + "enum": ["fs:scope-temp"] + }, + { + "description": "fs:scope-temp-index -> This scope permits to list all files and folders in the `$TEMP`folder.", + "type": "string", + "enum": ["fs:scope-temp-index"] + }, + { + "description": "fs:scope-temp-recursive -> This scope permits recursive access to the complete `$TEMP` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-temp-recursive"] + }, + { + "description": "fs:scope-template -> This scope permits access to all files and list content of top level directories in the `$TEMPLATE`folder.", + "type": "string", + "enum": ["fs:scope-template"] + }, + { + "description": "fs:scope-template-index -> This scope permits to list all files and folders in the `$TEMPLATE`folder.", + "type": "string", + "enum": ["fs:scope-template-index"] + }, + { + "description": "fs:scope-template-recursive -> This scope permits recursive access to the complete `$TEMPLATE` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-template-recursive"] + }, + { + "description": "fs:scope-video -> This scope permits access to all files and list content of top level directories in the `$VIDEO`folder.", + "type": "string", + "enum": ["fs:scope-video"] + }, + { + "description": "fs:scope-video-index -> This scope permits to list all files and folders in the `$VIDEO`folder.", + "type": "string", + "enum": ["fs:scope-video-index"] + }, + { + "description": "fs:scope-video-recursive -> This scope permits recursive access to the complete `$VIDEO` folder, including sub directories and files.", + "type": "string", + "enum": ["fs:scope-video-recursive"] + }, + { + "description": "fs:write-all -> This enables all write related commands without any pre-configured accessible paths.", + "type": "string", + "enum": ["fs:write-all"] + }, + { + "description": "fs:write-files -> This enables all file write related commands without any pre-configured accessible paths.", + "type": "string", + "enum": ["fs:write-files"] + }, + { + "description": "global-shortcut:default -> No features are enabled by default, as we believe\nthe shortcuts can be inherently dangerous and it is\napplication specific if specific shortcuts should be\nregistered or unregistered.\n", + "type": "string", + "enum": ["global-shortcut:default"] + }, + { + "description": "global-shortcut:allow-is-registered -> Enables the is_registered command without any pre-configured scope.", + "type": "string", + "enum": ["global-shortcut:allow-is-registered"] + }, + { + "description": "global-shortcut:allow-register -> Enables the register command without any pre-configured scope.", + "type": "string", + "enum": ["global-shortcut:allow-register"] + }, + { + "description": "global-shortcut:allow-register-all -> Enables the register_all command without any pre-configured scope.", + "type": "string", + "enum": ["global-shortcut:allow-register-all"] + }, + { + "description": "global-shortcut:allow-unregister -> Enables the unregister command without any pre-configured scope.", + "type": "string", + "enum": ["global-shortcut:allow-unregister"] + }, + { + "description": "global-shortcut:allow-unregister-all -> Enables the unregister_all command without any pre-configured scope.", + "type": "string", + "enum": ["global-shortcut:allow-unregister-all"] + }, + { + "description": "global-shortcut:deny-is-registered -> Denies the is_registered command without any pre-configured scope.", + "type": "string", + "enum": ["global-shortcut:deny-is-registered"] + }, + { + "description": "global-shortcut:deny-register -> Denies the register command without any pre-configured scope.", + "type": "string", + "enum": ["global-shortcut:deny-register"] + }, + { + "description": "global-shortcut:deny-register-all -> Denies the register_all command without any pre-configured scope.", + "type": "string", + "enum": ["global-shortcut:deny-register-all"] + }, + { + "description": "global-shortcut:deny-unregister -> Denies the unregister command without any pre-configured scope.", + "type": "string", + "enum": ["global-shortcut:deny-unregister"] + }, + { + "description": "global-shortcut:deny-unregister-all -> Denies the unregister_all command without any pre-configured scope.", + "type": "string", + "enum": ["global-shortcut:deny-unregister-all"] + }, + { + "description": "notification:default -> This permission set configures which\nnotification features are by default exposed.\n\n#### Granted Permissions\n\nIt allows all notification related features.\n\n", + "type": "string", + "enum": ["notification:default"] + }, + { + "description": "notification:allow-batch -> Enables the batch command without any pre-configured scope.", + "type": "string", + "enum": ["notification:allow-batch"] + }, + { + "description": "notification:allow-cancel -> Enables the cancel command without any pre-configured scope.", + "type": "string", + "enum": ["notification:allow-cancel"] + }, + { + "description": "notification:allow-check-permissions -> Enables the check_permissions command without any pre-configured scope.", + "type": "string", + "enum": ["notification:allow-check-permissions"] + }, + { + "description": "notification:allow-create-channel -> Enables the create_channel command without any pre-configured scope.", + "type": "string", + "enum": ["notification:allow-create-channel"] + }, + { + "description": "notification:allow-delete-channel -> Enables the delete_channel command without any pre-configured scope.", + "type": "string", + "enum": ["notification:allow-delete-channel"] + }, + { + "description": "notification:allow-get-active -> Enables the get_active command without any pre-configured scope.", + "type": "string", + "enum": ["notification:allow-get-active"] + }, + { + "description": "notification:allow-get-pending -> Enables the get_pending command without any pre-configured scope.", + "type": "string", + "enum": ["notification:allow-get-pending"] + }, + { + "description": "notification:allow-is-permission-granted -> Enables the is_permission_granted command without any pre-configured scope.", + "type": "string", + "enum": ["notification:allow-is-permission-granted"] + }, + { + "description": "notification:allow-list-channels -> Enables the list_channels command without any pre-configured scope.", + "type": "string", + "enum": ["notification:allow-list-channels"] + }, + { + "description": "notification:allow-notify -> Enables the notify command without any pre-configured scope.", + "type": "string", + "enum": ["notification:allow-notify"] + }, + { + "description": "notification:allow-permission-state -> Enables the permission_state command without any pre-configured scope.", + "type": "string", + "enum": ["notification:allow-permission-state"] + }, + { + "description": "notification:allow-register-action-types -> Enables the register_action_types command without any pre-configured scope.", + "type": "string", + "enum": ["notification:allow-register-action-types"] + }, + { + "description": "notification:allow-register-listener -> Enables the register_listener command without any pre-configured scope.", + "type": "string", + "enum": ["notification:allow-register-listener"] + }, + { + "description": "notification:allow-remove-active -> Enables the remove_active command without any pre-configured scope.", + "type": "string", + "enum": ["notification:allow-remove-active"] + }, + { + "description": "notification:allow-request-permission -> Enables the request_permission command without any pre-configured scope.", + "type": "string", + "enum": ["notification:allow-request-permission"] + }, + { + "description": "notification:allow-show -> Enables the show command without any pre-configured scope.", + "type": "string", + "enum": ["notification:allow-show"] + }, + { + "description": "notification:deny-batch -> Denies the batch command without any pre-configured scope.", + "type": "string", + "enum": ["notification:deny-batch"] + }, + { + "description": "notification:deny-cancel -> Denies the cancel command without any pre-configured scope.", + "type": "string", + "enum": ["notification:deny-cancel"] + }, + { + "description": "notification:deny-check-permissions -> Denies the check_permissions command without any pre-configured scope.", + "type": "string", + "enum": ["notification:deny-check-permissions"] + }, + { + "description": "notification:deny-create-channel -> Denies the create_channel command without any pre-configured scope.", + "type": "string", + "enum": ["notification:deny-create-channel"] + }, + { + "description": "notification:deny-delete-channel -> Denies the delete_channel command without any pre-configured scope.", + "type": "string", + "enum": ["notification:deny-delete-channel"] + }, + { + "description": "notification:deny-get-active -> Denies the get_active command without any pre-configured scope.", + "type": "string", + "enum": ["notification:deny-get-active"] + }, + { + "description": "notification:deny-get-pending -> Denies the get_pending command without any pre-configured scope.", + "type": "string", + "enum": ["notification:deny-get-pending"] + }, + { + "description": "notification:deny-is-permission-granted -> Denies the is_permission_granted command without any pre-configured scope.", + "type": "string", + "enum": ["notification:deny-is-permission-granted"] + }, + { + "description": "notification:deny-list-channels -> Denies the list_channels command without any pre-configured scope.", + "type": "string", + "enum": ["notification:deny-list-channels"] + }, + { + "description": "notification:deny-notify -> Denies the notify command without any pre-configured scope.", + "type": "string", + "enum": ["notification:deny-notify"] + }, + { + "description": "notification:deny-permission-state -> Denies the permission_state command without any pre-configured scope.", + "type": "string", + "enum": ["notification:deny-permission-state"] + }, + { + "description": "notification:deny-register-action-types -> Denies the register_action_types command without any pre-configured scope.", + "type": "string", + "enum": ["notification:deny-register-action-types"] + }, + { + "description": "notification:deny-register-listener -> Denies the register_listener command without any pre-configured scope.", + "type": "string", + "enum": ["notification:deny-register-listener"] + }, + { + "description": "notification:deny-remove-active -> Denies the remove_active command without any pre-configured scope.", + "type": "string", + "enum": ["notification:deny-remove-active"] + }, + { + "description": "notification:deny-request-permission -> Denies the request_permission command without any pre-configured scope.", + "type": "string", + "enum": ["notification:deny-request-permission"] + }, + { + "description": "notification:deny-show -> Denies the show command without any pre-configured scope.", + "type": "string", + "enum": ["notification:deny-show"] + }, + { + "description": "process:default -> This permission set configures which\nprocess feeatures are by default exposed.\n\n#### Granted Permissions\n\nThis enables to quit via `allow-exit` and restart via `allow-restart`\nthe application.\n", + "type": "string", + "enum": ["process:default"] + }, + { + "description": "process:allow-exit -> Enables the exit command without any pre-configured scope.", + "type": "string", + "enum": ["process:allow-exit"] + }, + { + "description": "process:allow-restart -> Enables the restart command without any pre-configured scope.", + "type": "string", + "enum": ["process:allow-restart"] + }, + { + "description": "process:deny-exit -> Denies the exit command without any pre-configured scope.", + "type": "string", + "enum": ["process:deny-exit"] + }, + { + "description": "process:deny-restart -> Denies the restart command without any pre-configured scope.", + "type": "string", + "enum": ["process:deny-restart"] + }, + { + "description": "shell:default -> This permission set configures which\nshell functionality is exposed by default.\n\n#### Granted Permissions\n\nIt allows to use the `open` functionality without any specific\nscope pre-configured. It will allow opening `http(s)://`,\n`tel:` and `mailto:` links.\n", + "type": "string", + "enum": ["shell:default"] + }, + { + "description": "shell:allow-execute -> Enables the execute command without any pre-configured scope.", + "type": "string", + "enum": ["shell:allow-execute"] + }, + { + "description": "shell:allow-kill -> Enables the kill command without any pre-configured scope.", + "type": "string", + "enum": ["shell:allow-kill"] + }, + { + "description": "shell:allow-open -> Enables the open command without any pre-configured scope.", + "type": "string", + "enum": ["shell:allow-open"] + }, + { + "description": "shell:allow-spawn -> Enables the spawn command without any pre-configured scope.", + "type": "string", + "enum": ["shell:allow-spawn"] + }, + { + "description": "shell:allow-stdin-write -> Enables the stdin_write command without any pre-configured scope.", + "type": "string", + "enum": ["shell:allow-stdin-write"] + }, + { + "description": "shell:deny-execute -> Denies the execute command without any pre-configured scope.", + "type": "string", + "enum": ["shell:deny-execute"] + }, + { + "description": "shell:deny-kill -> Denies the kill command without any pre-configured scope.", + "type": "string", + "enum": ["shell:deny-kill"] + }, + { + "description": "shell:deny-open -> Denies the open command without any pre-configured scope.", + "type": "string", + "enum": ["shell:deny-open"] + }, + { + "description": "shell:deny-spawn -> Denies the spawn command without any pre-configured scope.", + "type": "string", + "enum": ["shell:deny-spawn"] + }, + { + "description": "shell:deny-stdin-write -> Denies the stdin_write command without any pre-configured scope.", + "type": "string", + "enum": ["shell:deny-stdin-write"] + }, + { + "description": "updater:default -> This permission set configures which kind of\nupdater functions are exposed to the frontend.\n\n#### Granted Permissions\n\nThe full workflow from checking for updates to installing them\nis enabled.\n\n", + "type": "string", + "enum": ["updater:default"] + }, + { + "description": "updater:allow-check -> Enables the check command without any pre-configured scope.", + "type": "string", + "enum": ["updater:allow-check"] + }, + { + "description": "updater:allow-download -> Enables the download command without any pre-configured scope.", + "type": "string", + "enum": ["updater:allow-download"] + }, + { + "description": "updater:allow-download-and-install -> Enables the download_and_install command without any pre-configured scope.", + "type": "string", + "enum": ["updater:allow-download-and-install"] + }, + { + "description": "updater:allow-install -> Enables the install command without any pre-configured scope.", + "type": "string", + "enum": ["updater:allow-install"] + }, + { + "description": "updater:deny-check -> Denies the check command without any pre-configured scope.", + "type": "string", + "enum": ["updater:deny-check"] + }, + { + "description": "updater:deny-download -> Denies the download command without any pre-configured scope.", + "type": "string", + "enum": ["updater:deny-download"] + }, + { + "description": "updater:deny-download-and-install -> Denies the download_and_install command without any pre-configured scope.", + "type": "string", + "enum": ["updater:deny-download-and-install"] + }, + { + "description": "updater:deny-install -> Denies the install command without any pre-configured scope.", + "type": "string", + "enum": ["updater:deny-install"] + } + ] + }, + "Value": { + "description": "All supported ACL values.", + "anyOf": [ + { + "description": "Represents a null JSON value.", + "type": "null" + }, + { + "description": "Represents a [`bool`].", + "type": "boolean" + }, + { + "description": "Represents a valid ACL [`Number`].", + "allOf": [ + { + "$ref": "#/definitions/Number" + } + ] + }, + { + "description": "Represents a [`String`].", + "type": "string" + }, + { + "description": "Represents a list of other [`Value`]s.", + "type": "array", + "items": { + "$ref": "#/definitions/Value" + } + }, + { + "description": "Represents a map of [`String`] keys to [`Value`]s.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/Value" + } + } + ] + }, + "Number": { + "description": "A valid ACL number.", + "anyOf": [ + { + "description": "Represents an [`i64`].", + "type": "integer", + "format": "int64" + }, + { + "description": "Represents a [`f64`].", + "type": "number", + "format": "double" + } + ] + }, + "Target": { + "description": "Platform target.", + "oneOf": [ + { + "description": "MacOS.", + "type": "string", + "enum": ["macOS"] + }, + { + "description": "Windows.", + "type": "string", + "enum": ["windows"] + }, + { + "description": "Linux.", + "type": "string", + "enum": ["linux"] + }, + { + "description": "Android.", + "type": "string", + "enum": ["android"] + }, + { + "description": "iOS.", + "type": "string", + "enum": ["iOS"] + } + ] + }, + "ShellAllowedArg": { + "description": "A command argument allowed to be executed by the webview API.", + "anyOf": [ + { + "description": "A non-configurable argument that is passed to the command in the order it was specified.", + "type": "string" + }, + { + "description": "A variable that is set while calling the command from the webview API.", + "type": "object", + "required": ["validator"], + "properties": { + "raw": { + "description": "Marks the validator as a raw regex, meaning the plugin should not make any modification at runtime.\n\nThis means the regex will not match on the entire string by default, which might be exploited if your regex allow unexpected input to be considered valid. When using this option, make sure your regex is correct.", + "default": false, + "type": "boolean" + }, + "validator": { + "description": "[regex] validator to require passed values to conform to an expected input.\n\nThis will require the argument value passed to this variable to match the `validator` regex before it will be executed.\n\nThe regex string is by default surrounded by `^...$` to match the full string. For example the `https?://\\w+` regex would be registered as `^https?://\\w+$`.\n\n[regex]: ", + "type": "string" + } + }, + "additionalProperties": false + } + ] + }, + "ShellAllowedArgs": { + "description": "A set of command arguments allowed to be executed by the webview API.\n\nA value of `true` will allow any arguments to be passed to the command. `false` will disable all arguments. A list of [`ShellAllowedArg`] will set those arguments as the only valid arguments to be passed to the attached command configuration.", + "anyOf": [ + { + "description": "Use a simple boolean to allow all or disable all arguments to this command configuration.", + "type": "boolean" + }, + { + "description": "A specific set of [`ShellAllowedArg`] that are valid to call for the command configuration.", + "type": "array", + "items": { + "$ref": "#/definitions/ShellAllowedArg" + } + } + ] + } + } +} diff --git a/src-tauri/src/cmds.rs b/src-tauri/src/cmds.rs index 47f8137..a560fd8 100644 --- a/src-tauri/src/cmds.rs +++ b/src-tauri/src/cmds.rs @@ -10,8 +10,8 @@ use network_interface::NetworkInterface; use serde_yaml::Mapping; use std::collections::{HashMap, VecDeque}; use sysproxy::{Autoproxy, Sysproxy}; -use tauri::{api, Manager}; type CmdResult = Result; +use tauri::Manager; #[tauri::command] pub fn copy_clash_env(app_handle: tauri::AppHandle) -> CmdResult { @@ -361,7 +361,7 @@ pub fn get_network_interfaces_info() -> CmdResult> { #[tauri::command] pub fn open_devtools(app_handle: tauri::AppHandle) { - if let Some(window) = app_handle.get_window("main") { + if let Some(window) = app_handle.get_webview_window("main") { if !window.is_devtools_open() { window.open_devtools(); } else { @@ -374,7 +374,6 @@ pub fn open_devtools(app_handle: tauri::AppHandle) { pub fn exit_app(app_handle: tauri::AppHandle) { let _ = resolve::save_window_size_position(&app_handle, true); resolve::resolve_reset(); - api::process::kill_children(); app_handle.exit(0); std::process::exit(0); } diff --git a/src-tauri/src/core/core.rs b/src-tauri/src/core/core.rs index d49cfcd..acea3b8 100644 --- a/src-tauri/src/core/core.rs +++ b/src-tauri/src/core/core.rs @@ -2,19 +2,22 @@ use crate::config::*; use crate::core::{clash_api, handle, logger::Logger, service}; use crate::log_err; use crate::utils::dirs; -use anyhow::{bail, Result}; +use anyhow::{bail, Context, Result}; use once_cell::sync::OnceCell; use parking_lot::Mutex; use serde_yaml::Mapping; -use std::{sync::Arc, time::Duration}; +use std::{fs, io::Write, sync::Arc, time::Duration}; use sysinfo::{ProcessRefreshKind, RefreshKind, System}; -use tauri::api::process::{Command, CommandChild, CommandEvent}; +use tauri::AppHandle; +use tauri_plugin_shell::process::{CommandChild, CommandEvent}; +use tauri_plugin_shell::ShellExt; + use tokio::time::sleep; #[derive(Debug)] pub struct CoreManager { + app_handle: Arc>>, sidecar: Arc>>, - #[allow(unused)] use_service_mode: Arc>, } @@ -24,12 +27,14 @@ impl CoreManager { static CORE_MANAGER: OnceCell = OnceCell::new(); CORE_MANAGER.get_or_init(|| CoreManager { + app_handle: Arc::new(Mutex::new(None)), sidecar: Arc::new(Mutex::new(None)), use_service_mode: Arc::new(Mutex::new(false)), }) } - pub fn init(&self) -> Result<()> { + pub fn init(&self, app_handle: &AppHandle) -> Result<()> { + *self.app_handle.lock() = Some(app_handle.clone()); tauri::async_runtime::spawn(async { // 启动clash log_err!(Self::global().run_core().await); @@ -39,7 +44,7 @@ impl CoreManager { } /// 检查订阅是否正确 - pub fn check_config(&self) -> Result<()> { + pub async fn check_config(&self) -> Result<()> { let config_path = Config::generate_file(ConfigType::Check)?; let config_path = dirs::path_to_str(&config_path)?; @@ -62,19 +67,29 @@ impl CoreManager { let test_dir = dirs::app_home_dir()?.join("test"); let test_dir = dirs::path_to_str(&test_dir)?; + let app_handle_option = { + let lock = self.app_handle.lock(); + lock.as_ref().cloned() + }; + + if let Some(app_handle) = app_handle_option { + let output = app_handle + .shell() + .sidecar(clash_core)? + .args(["-t", "-d", test_dir, "-f", config_path]) + .output() + .await?; - let output = Command::new_sidecar(clash_core)? - .args(["-t", "-d", test_dir, "-f", config_path]) - .output()?; - - if !output.status.success() { - let error = clash_api::parse_check_output(output.stdout.clone()); - let error = match !error.is_empty() { - true => error, - false => output.stdout.clone(), - }; - Logger::global().set_log(output.stdout); - bail!("{error}"); + if !output.status.success() { + let stdout = String::from_utf8(output.stdout).unwrap_or_default(); + let error = clash_api::parse_check_output(stdout.clone()); + let error = match !error.is_empty() { + true => error, + false => stdout.clone(), + }; + Logger::global().set_log(stdout.clone()); + bail!("{error}"); + } } Ok(()) @@ -156,37 +171,54 @@ impl CoreManager { let args = vec!["-d", app_dir, "-f", config_path]; - let cmd = Command::new_sidecar(clash_core)?; - let (mut rx, cmd_child) = cmd.args(args).spawn()?; + let app_handle = self.app_handle.lock(); - let mut sidecar = self.sidecar.lock(); - *sidecar = Some(cmd_child); - drop(sidecar); + if let Some(app_handle) = app_handle.as_ref() { + let cmd = app_handle.shell().sidecar(clash_core)?; + let (mut rx, cmd_child) = cmd.args(args).spawn()?; - tauri::async_runtime::spawn(async move { - while let Some(event) = rx.recv().await { - match event { - CommandEvent::Stdout(line) => { - log::info!(target: "app", "[mihomo]: {line}"); - Logger::global().set_log(line); + // 将pid写入文件中 + crate::log_err!((|| { + let pid = cmd_child.pid(); + let path = dirs::clash_pid_path()?; + fs::File::create(path) + .context("failed to create the pid file")? + .write(format!("{pid}").as_bytes()) + .context("failed to write pid to the file")?; + >::Ok(()) + })()); + + let mut sidecar = self.sidecar.lock(); + *sidecar = Some(cmd_child); + drop(sidecar); + + tauri::async_runtime::spawn(async move { + while let Some(event) = rx.recv().await { + match event { + CommandEvent::Stdout(line) => { + let line = String::from_utf8(line).unwrap_or_default(); + log::info!(target: "app", "[mihomo]: {line}"); + Logger::global().set_log(line); + } + CommandEvent::Stderr(err) => { + let err = String::from_utf8(err).unwrap_or_default(); + log::error!(target: "app", "[mihomo]: {err}"); + Logger::global().set_log(err); + } + CommandEvent::Error(err) => { + log::error!(target: "app", "[mihomo]: {err}"); + Logger::global().set_log(err); + } + CommandEvent::Terminated(_) => { + log::info!(target: "app", "mihomo core terminated"); + let _ = CoreManager::global().recover_core(); + break; + } + _ => {} } - CommandEvent::Stderr(err) => { - log::error!(target: "app", "[mihomo]: {err}"); - Logger::global().set_log(err); - } - CommandEvent::Error(err) => { - log::error!(target: "app", "[mihomo]: {err}"); - Logger::global().set_log(err); - } - CommandEvent::Terminated(_) => { - log::info!(target: "app", "mihomo core terminated"); - let _ = CoreManager::global().recover_core(); - break; - } - _ => {} } - } - }); + }); + } Ok(()) } @@ -268,7 +300,7 @@ impl CoreManager { // 更新订阅 Config::generate().await?; - self.check_config()?; + self.check_config().await?; // 清掉旧日志 Logger::global().clear_log(); @@ -296,7 +328,7 @@ impl CoreManager { Config::generate().await?; // 检查订阅是否正常 - self.check_config()?; + self.check_config().await?; // 更新运行时订阅 let path = Config::generate_file(ConfigType::Run)?; diff --git a/src-tauri/src/core/handle.rs b/src-tauri/src/core/handle.rs index d12d459..614356c 100644 --- a/src-tauri/src/core/handle.rs +++ b/src-tauri/src/core/handle.rs @@ -4,7 +4,7 @@ use anyhow::{bail, Result}; use once_cell::sync::OnceCell; use parking_lot::Mutex; use std::sync::Arc; -use tauri::{AppHandle, Manager, Window}; +use tauri::{AppHandle, WebviewWindow, Manager, Emitter}; #[derive(Debug, Default, Clone)] pub struct Handle { @@ -20,15 +20,15 @@ impl Handle { }) } - pub fn init(&self, app_handle: AppHandle) { - *self.app_handle.lock() = Some(app_handle); + pub fn init(&self, app_handle: &AppHandle) { + *self.app_handle.lock() = Some(app_handle.clone()); } - pub fn get_window(&self) -> Option { + pub fn get_window(&self) -> Option { self.app_handle .lock() .as_ref() - .and_then(|a| a.get_window("main")) + .and_then(|a| a.get_webview_window("main")) } pub fn refresh_clash() { diff --git a/src-tauri/src/core/hotkey.rs b/src-tauri/src/core/hotkey.rs index 14303ea..e53fdff 100644 --- a/src-tauri/src/core/hotkey.rs +++ b/src-tauri/src/core/hotkey.rs @@ -3,11 +3,11 @@ use anyhow::{bail, Result}; use once_cell::sync::OnceCell; use parking_lot::Mutex; use std::{collections::HashMap, sync::Arc}; -use tauri::{AppHandle, GlobalShortcutManager}; +use tauri::AppHandle; +use tauri_plugin_global_shortcut::GlobalShortcutExt; pub struct Hotkey { current: Arc>>, // 保存当前的热键设置 - app_handle: Arc>>, } @@ -21,9 +21,8 @@ impl Hotkey { }) } - pub fn init(&self, app_handle: AppHandle) -> Result<()> { - *self.app_handle.lock() = Some(app_handle); - + pub fn init(&self, app_handle: &AppHandle) -> Result<()> { + *self.app_handle.lock() = Some(app_handle.clone()); let verge = Config::verge(); if let Some(hotkeys) = verge.latest().hotkeys.as_ref() { @@ -49,18 +48,14 @@ impl Hotkey { Ok(()) } - fn get_manager(&self) -> Result { + fn register(&self, hotkey: &str, func: &str) -> Result<()> { let app_handle = self.app_handle.lock(); if app_handle.is_none() { bail!("failed to get the hotkey manager"); } - Ok(app_handle.as_ref().unwrap().global_shortcut_manager()) - } + let manager = app_handle.as_ref().unwrap().global_shortcut(); - fn register(&self, hotkey: &str, func: &str) -> Result<()> { - let mut manager = self.get_manager()?; - - if manager.is_registered(hotkey)? { + if manager.is_registered(hotkey) { manager.unregister(hotkey)?; } @@ -71,17 +66,22 @@ impl Hotkey { "clash_mode_direct" => || feat::change_clash_mode("direct".into()), "toggle_system_proxy" => feat::toggle_system_proxy, "toggle_tun_mode" => feat::toggle_tun_mode, - _ => bail!("invalid function \"{func}\""), }; - manager.register(hotkey, f)?; + let _ = manager.on_shortcut(hotkey, move |_, _, _| f()); log::info!(target: "app", "register hotkey {hotkey} {func}"); Ok(()) } fn unregister(&self, hotkey: &str) -> Result<()> { - self.get_manager()?.unregister(hotkey)?; + let app_handle = self.app_handle.lock(); + if app_handle.is_none() { + bail!("failed to get the hotkey manager"); + } + let manager = app_handle.as_ref().unwrap().global_shortcut(); + manager.unregister(hotkey)?; + log::info!(target: "app", "unregister hotkey {hotkey}"); Ok(()) } @@ -153,8 +153,10 @@ impl Hotkey { impl Drop for Hotkey { fn drop(&mut self) { - if let Ok(mut manager) = self.get_manager() { - let _ = manager.unregister_all(); + if let Some(app_handle) = self.app_handle.lock().as_ref() { + if let Err(e) = app_handle.global_shortcut().unregister_all() { + log::error!("Error unregistering all hotkeys: {:?}", e); + } } } } diff --git a/src-tauri/src/core/tray.rs b/src-tauri/src/core/tray.rs index d1b6fef..585d032 100644 --- a/src-tauri/src/core/tray.rs +++ b/src-tauri/src/core/tray.rs @@ -5,19 +5,14 @@ use crate::{ utils::{dirs, resolve}, }; use anyhow::Result; -use tauri::{ - api, AppHandle, CustomMenuItem, Manager, SystemTrayEvent, SystemTrayMenu, SystemTrayMenuItem, - SystemTraySubmenu, -}; - +use tauri::menu::{MenuBuilder, MenuEvent, MenuItemBuilder, PredefinedMenuItem, SubmenuBuilder}; +use tauri::tray::{MouseButton, MouseButtonState, TrayIcon, TrayIconBuilder, TrayIconEvent}; +use tauri::{AppHandle, Manager}; pub struct Tray {} impl Tray { - pub fn tray_menu(app_handle: &AppHandle) -> SystemTrayMenu { + pub fn update_systray(app_handle: &AppHandle) -> Result<()> { let zh = { Config::verge().latest().language == Some("zh".into()) }; - - let version = app_handle.package_info().version.to_string(); - macro_rules! t { ($en: expr, $zh: expr) => { if zh { @@ -28,80 +23,92 @@ impl Tray { }; } - SystemTrayMenu::new() - .add_item(CustomMenuItem::new( - "open_window", - t!("Dashboard", "打开面板"), - )) - .add_native_item(SystemTrayMenuItem::Separator) - .add_item(CustomMenuItem::new( - "rule_mode", - t!("Rule Mode", "规则模式"), - )) - .add_item(CustomMenuItem::new( - "global_mode", - t!("Global Mode", "全局模式"), - )) - .add_item(CustomMenuItem::new( - "direct_mode", - t!("Direct Mode", "直连模式"), - )) - .add_native_item(SystemTrayMenuItem::Separator) - .add_item(CustomMenuItem::new( - "system_proxy", - t!("System Proxy", "系统代理"), - )) - .add_item(CustomMenuItem::new("tun_mode", t!("TUN Mode", "Tun 模式"))) - .add_item(CustomMenuItem::new( - "copy_env", - t!("Copy Env", "复制环境变量"), - )) - .add_submenu(SystemTraySubmenu::new( - t!("Open Dir", "打开目录"), - SystemTrayMenu::new() - .add_item(CustomMenuItem::new( - "open_app_dir", - t!("App Dir", "应用目录"), - )) - .add_item(CustomMenuItem::new( - "open_core_dir", - t!("Core Dir", "内核目录"), - )) - .add_item(CustomMenuItem::new( - "open_logs_dir", - t!("Logs Dir", "日志目录"), - )), - )) - .add_submenu(SystemTraySubmenu::new( - t!("More", "更多"), - SystemTrayMenu::new() - .add_item(CustomMenuItem::new( - "restart_clash", - t!("Restart Clash", "重启 Clash"), - )) - .add_item(CustomMenuItem::new( - "restart_app", - t!("Restart App", "重启应用"), - )) - .add_item( - CustomMenuItem::new("app_version", format!("Version {version}")).disabled(), - ), - )) - .add_native_item(SystemTrayMenuItem::Separator) - .add_item(CustomMenuItem::new("quit", t!("Quit", "退出"))) - } + let version = app_handle.package_info().version.to_string(); + + let open_window = MenuItemBuilder::with_id("open_window", t!("Dashboard", "打开面板")) + .build(app_handle)?; + let rule_mode = + MenuItemBuilder::with_id("rule_mode", t!("Rule Mode", "规则模式")).build(app_handle)?; + let global_mode = MenuItemBuilder::with_id("global_mode", t!("Global Mode", "全局模式")) + .build(app_handle)?; + let direct_mode = MenuItemBuilder::with_id("direct_mode", t!("Direct Mode", "直连模式")) + .build(app_handle)?; + let system_proxy = MenuItemBuilder::with_id("system_proxy", t!("System Proxy", "系统代理")) + .build(app_handle)?; + let tun_mode = + MenuItemBuilder::with_id("tun_mode", t!("TUN Mode", "Tun 模式")).build(app_handle)?; + let copy_env = MenuItemBuilder::with_id("copy_env", t!("Copy Env", "复制环境变量")) + .build(app_handle)?; + let open_app_dir = MenuItemBuilder::with_id("open_app_dir", t!("App Dir", "应用目录")) + .build(app_handle)?; + let open_core_dir = MenuItemBuilder::with_id("open_core_dir", t!("Core Dir", "内核目录")) + .build(app_handle)?; + let open_logs_dir = MenuItemBuilder::with_id("open_logs_dir", t!("Logs Dir", "日志目录")) + .build(app_handle)?; + let open_dir = SubmenuBuilder::with_id(app_handle, "open_dir", t!("Open Dir", "打开目录")) + .items(&[&open_app_dir, &open_core_dir, &open_logs_dir]) + .build()?; + let restart_clash = + MenuItemBuilder::with_id("restart_clash", t!("Restart Clash", "重启 Clash")) + .build(app_handle)?; + let restart_app = MenuItemBuilder::with_id("restart_app", t!("Restart App", "重启应用")) + .build(app_handle)?; + let app_version = MenuItemBuilder::with_id("app_version", format!("Version {version}")) + .build(app_handle)?; + let more = SubmenuBuilder::with_id(app_handle, "more", t!("More", "更多")) + .items(&[&restart_clash, &restart_app, &app_version]) + .build()?; + let quit = MenuItemBuilder::with_id("quit", t!("Quit", "退出")) + .accelerator("CmdOrControl+Q") + .build(app_handle)?; + let separator = PredefinedMenuItem::separator(app_handle)?; + let menu = MenuBuilder::new(app_handle) + .items(&[ + &open_window, + &separator, + &rule_mode, + &global_mode, + &direct_mode, + &separator, + &system_proxy, + &tun_mode, + ©_env, + &open_dir, + &more, + &separator, + &quit, + ]) + .build()?; + + let _ = TrayIconBuilder::with_id("verge_tray") + .menu(&menu) + .on_menu_event(Self::on_menu_event) + .on_tray_icon_event(|tray, event| { + let tray_event = { Config::verge().latest().tray_event.clone() }; + let tray_event: String = tray_event.unwrap_or("main_window".into()); + if let TrayIconEvent::Click { + button: MouseButton::Left, + button_state: MouseButtonState::Up, + .. + } = event + { + let app = tray.app_handle(); + match tray_event.as_str() { + "system_proxy" => feat::toggle_system_proxy(), + "tun_mode" => feat::toggle_tun_mode(), + "main_window" => resolve::create_window(app), + _ => {} + } + } + }) + .build(app_handle); - pub fn update_systray(app_handle: &AppHandle) -> Result<()> { - app_handle - .tray_handle() - .set_menu(Tray::tray_menu(app_handle))?; Tray::update_part(app_handle)?; Ok(()) } pub fn update_part(app_handle: &AppHandle) -> Result<()> { let zh = { Config::verge().latest().language == Some("zh".into()) }; - let version = app_handle.package_info().version.to_string(); macro_rules! t { @@ -124,225 +131,263 @@ impl Tray { .to_owned() }; - let tray = app_handle.tray_handle(); + if let Some(menu) = app_handle.menu() { + if let Some(item) = menu.get("rule_mode") { + let item = item.as_check_menuitem().unwrap(); + let _ = item.set_checked(mode == "rule"); + } + if let Some(item) = menu.get("global_mode") { + let item = item.as_check_menuitem().unwrap(); + let _ = item.set_checked(mode == "global"); + } + if let Some(item) = menu.get("direct_mode") { + let item = item.as_check_menuitem().unwrap(); + let _ = item.set_checked(mode == "direct"); + } - let _ = tray.get_item("rule_mode").set_selected(mode == "rule"); - let _ = tray.get_item("global_mode").set_selected(mode == "global"); - let _ = tray.get_item("direct_mode").set_selected(mode == "direct"); + #[cfg(target_os = "linux")] + match mode.as_str() { + "rule" => { + if let Some(item) = menu.get("rule_mode") { + let _ = item + .as_menuitem() + .unwrap() + .set_text(t!("Rule Mode ✔", "规则模式 ✔")); + } - #[cfg(target_os = "linux")] - match mode.as_str() { - "rule" => { - let _ = tray - .get_item("rule_mode") - .set_title(t!("Rule Mode ✔", "规则模式 ✔")); - let _ = tray - .get_item("global_mode") - .set_title(t!("Global Mode", "全局模式")); - let _ = tray - .get_item("direct_mode") - .set_title(t!("Direct Mode", "直连模式")); - } - "global" => { - let _ = tray - .get_item("rule_mode") - .set_title(t!("Rule Mode", "规则模式")); - let _ = tray - .get_item("global_mode") - .set_title(t!("Global Mode ✔", "全局模式 ✔")); - let _ = tray - .get_item("direct_mode") - .set_title(t!("Direct Mode", "直连模式")); - } - "direct" => { - let _ = tray - .get_item("rule_mode") - .set_title(t!("Rule Mode", "规则模式")); - let _ = tray - .get_item("global_mode") - .set_title(t!("Global Mode", "全局模式")); - let _ = tray - .get_item("direct_mode") - .set_title(t!("Direct Mode ✔", "直连模式 ✔")); - } - _ => {} - } + if let Some(item) = menu.get("global_mode") { + let _ = item + .as_menuitem() + .unwrap() + .set_text(t!("Global Mode", "全局模式")); + } - let verge = Config::verge(); - let verge = verge.latest(); - let system_proxy = verge.enable_system_proxy.as_ref().unwrap_or(&false); - let tun_mode = verge.enable_tun_mode.as_ref().unwrap_or(&false); - #[cfg(target_os = "macos")] - let tray_icon = verge.tray_icon.clone().unwrap_or("monochrome".to_string()); - let common_tray_icon = verge.common_tray_icon.as_ref().unwrap_or(&false); - let sysproxy_tray_icon = verge.sysproxy_tray_icon.as_ref().unwrap_or(&false); - let tun_tray_icon = verge.tun_tray_icon.as_ref().unwrap_or(&false); - #[cfg(target_os = "macos")] - match tray_icon.as_str() { - "monochrome" => { - let _ = tray.set_icon_as_template(true); - } - "colorful" => { - let _ = tray.set_icon_as_template(false); - } - _ => {} - } - let mut indication_icon = if *system_proxy { - #[cfg(target_os = "macos")] - let mut icon = match tray_icon.as_str() { - "monochrome" => include_bytes!("../../icons/tray-icon-sys-mono.ico").to_vec(), - "colorful" => include_bytes!("../../icons/tray-icon-sys.ico").to_vec(), - _ => include_bytes!("../../icons/tray-icon-sys-mono.ico").to_vec(), - }; - #[cfg(not(target_os = "macos"))] - let mut icon = include_bytes!("../../icons/tray-icon-sys.ico").to_vec(); - - if *sysproxy_tray_icon { - let icon_dir_path = dirs::app_home_dir()?.join("icons"); - let png_path = icon_dir_path.join("sysproxy.png"); - let ico_path = icon_dir_path.join("sysproxy.ico"); - if ico_path.exists() { - icon = std::fs::read(ico_path).unwrap(); - } else if png_path.exists() { - icon = std::fs::read(png_path).unwrap(); + if let Some(item) = menu.get("direct_mode") { + let _ = item + .as_menuitem() + .unwrap() + .set_text(t!("Direct Mode", "直连模式")); + } } - } - icon - } else { - #[cfg(target_os = "macos")] - let mut icon = match tray_icon.as_str() { - "monochrome" => include_bytes!("../../icons/tray-icon-mono.ico").to_vec(), - "colorful" => include_bytes!("../../icons/tray-icon.ico").to_vec(), - _ => include_bytes!("../../icons/tray-icon-mono.ico").to_vec(), - }; - #[cfg(not(target_os = "macos"))] - let mut icon = include_bytes!("../../icons/tray-icon.ico").to_vec(); - if *common_tray_icon { - let icon_dir_path = dirs::app_home_dir()?.join("icons"); - let png_path = icon_dir_path.join("common.png"); - let ico_path = icon_dir_path.join("common.ico"); - if ico_path.exists() { - icon = std::fs::read(ico_path).unwrap(); - } else if png_path.exists() { - icon = std::fs::read(png_path).unwrap(); + "global" => { + if let Some(item) = menu.get("rule_mode") { + let _ = item + .as_menuitem() + .unwrap() + .set_text(t!("Rule Mode", "规则模式")); + } + + if let Some(item) = menu.get("global_mode") { + let _ = item + .as_menuitem() + .unwrap() + .set_text(t!("Global Mode ✔", "全局模式 ✔")); + } + + if let Some(item) = menu.get("direct_mode") { + let _ = item + .as_menuitem() + .unwrap() + .set_text(t!("Direct Mode", "直连模式")); + } } - } - icon - }; - - if *tun_mode { - #[cfg(target_os = "macos")] - let mut icon = match tray_icon.as_str() { - "monochrome" => include_bytes!("../../icons/tray-icon-tun-mono.ico").to_vec(), - "colorful" => include_bytes!("../../icons/tray-icon-tun.ico").to_vec(), - _ => include_bytes!("../../icons/tray-icon-tun-mono.ico").to_vec(), - }; - #[cfg(not(target_os = "macos"))] - let mut icon = include_bytes!("../../icons/tray-icon-tun.ico").to_vec(); - if *tun_tray_icon { - let icon_dir_path = dirs::app_home_dir()?.join("icons"); - let png_path = icon_dir_path.join("tun.png"); - let ico_path = icon_dir_path.join("tun.ico"); - if ico_path.exists() { - icon = std::fs::read(ico_path).unwrap(); - } else if png_path.exists() { - icon = std::fs::read(png_path).unwrap(); + "direct" => { + if let Some(item) = menu.get("rule_mode") { + let _ = item + .as_menuitem() + .unwrap() + .set_text(t!("Rule Mode", "规则模式")); + } + if let Some(item) = menu.get("global_mode") { + let _ = item + .as_menuitem() + .unwrap() + .set_text(t!("Global Mode", "全局模式")); + } + if let Some(item) = menu.get("direct_mode") { + let _ = item + .as_menuitem() + .unwrap() + .set_text(t!("Direct Mode ✔", "直连模式 ✔")); + } } + _ => {} } - indication_icon = icon - } - let _ = tray.set_icon(tauri::Icon::Raw(indication_icon)); + let verge = Config::verge(); + let verge = verge.latest(); + let system_proxy = verge.enable_system_proxy.as_ref().unwrap_or(&false); + let tun_mode = verge.enable_tun_mode.as_ref().unwrap_or(&false); + #[cfg(target_os = "macos")] + let tray_icon = verge.tray_icon.clone().unwrap_or("monochrome".to_string()); + let common_tray_icon = verge.common_tray_icon.as_ref().unwrap_or(&false); + let sysproxy_tray_icon = verge.sysproxy_tray_icon.as_ref().unwrap_or(&false); + let tun_tray_icon = verge.tun_tray_icon.as_ref().unwrap_or(&false); + let tray: TrayIcon = app_handle.tray_by_id("verge_tray").unwrap(); - let _ = tray.get_item("system_proxy").set_selected(*system_proxy); - let _ = tray.get_item("tun_mode").set_selected(*tun_mode); - #[cfg(target_os = "linux")] - { - if *system_proxy { - let _ = tray - .get_item("system_proxy") - .set_title(t!("System Proxy ✔", "系统代理 ✔")); + #[cfg(target_os = "macos")] + match tray_icon.as_str() { + "monochrome" => { + let _ = tray.set_icon_as_template(true); + } + "colorful" => { + let _ = tray.set_icon_as_template(false); + } + _ => {} + } + let mut indication_icon = if *system_proxy { + #[cfg(target_os = "macos")] + let mut icon = match tray_icon.as_str() { + "monochrome" => include_bytes!("../../icons/tray-icon-sys-mono.ico").to_vec(), + "colorful" => include_bytes!("../../icons/tray-icon-sys.ico").to_vec(), + _ => include_bytes!("../../icons/tray-icon-sys-mono.ico").to_vec(), + }; + #[cfg(not(target_os = "macos"))] + let mut icon = include_bytes!("../../icons/tray-icon-sys.ico").to_vec(); + + if *sysproxy_tray_icon { + let icon_dir_path = dirs::app_home_dir()?.join("icons"); + let png_path = icon_dir_path.join("sysproxy.png"); + let ico_path = icon_dir_path.join("sysproxy.ico"); + if ico_path.exists() { + icon = std::fs::read(ico_path).unwrap(); + } else if png_path.exists() { + icon = std::fs::read(png_path).unwrap(); + } + } + icon } else { - let _ = tray - .get_item("system_proxy") - .set_title(t!("System Proxy", "系统代理")); - } + #[cfg(target_os = "macos")] + let mut icon = match tray_icon.as_str() { + "monochrome" => include_bytes!("../../icons/tray-icon-mono.ico").to_vec(), + "colorful" => include_bytes!("../../icons/tray-icon.ico").to_vec(), + _ => include_bytes!("../../icons/tray-icon-mono.ico").to_vec(), + }; + #[cfg(not(target_os = "macos"))] + let mut icon = include_bytes!("../../icons/tray-icon.ico").to_vec(); + if *common_tray_icon { + let icon_dir_path = dirs::app_home_dir()?.join("icons"); + let png_path = icon_dir_path.join("common.png"); + let ico_path = icon_dir_path.join("common.ico"); + if ico_path.exists() { + icon = std::fs::read(ico_path).unwrap(); + } else if png_path.exists() { + icon = std::fs::read(png_path).unwrap(); + } + } + icon + }; if *tun_mode { - let _ = tray - .get_item("tun_mode") - .set_title(t!("TUN Mode ✔", "Tun 模式 ✔")); - } else { - let _ = tray - .get_item("tun_mode") - .set_title(t!("TUN Mode", "Tun 模式")); + #[cfg(target_os = "macos")] + let mut icon = match tray_icon.as_str() { + "monochrome" => include_bytes!("../../icons/tray-icon-tun-mono.ico").to_vec(), + "colorful" => include_bytes!("../../icons/tray-icon-tun.ico").to_vec(), + _ => include_bytes!("../../icons/tray-icon-tun-mono.ico").to_vec(), + }; + #[cfg(not(target_os = "macos"))] + let mut icon = include_bytes!("../../icons/tray-icon-tun.ico").to_vec(); + if *tun_tray_icon { + let icon_dir_path = dirs::app_home_dir()?.join("icons"); + let png_path = icon_dir_path.join("tun.png"); + let ico_path = icon_dir_path.join("tun.ico"); + if ico_path.exists() { + icon = std::fs::read(ico_path).unwrap(); + } else if png_path.exists() { + icon = std::fs::read(png_path).unwrap(); + } + } + indication_icon = icon } - } - let switch_map = { - let mut map = std::collections::HashMap::new(); - map.insert(true, "on"); - map.insert(false, "off"); - map - }; + let _ = tray.set_icon(Some(tauri::image::Image::from_bytes(&indication_icon)?)); + if let Some(item) = menu.get("system_proxy") { + let item = item.as_check_menuitem().unwrap(); + let _ = item.set_checked(mode == "system_proxy"); + } + if let Some(item) = menu.get("tun_mode") { + let item = item.as_check_menuitem().unwrap(); + let _ = item.set_checked(mode == "tun_mode"); + } - let mut current_profile_name = "None".to_string(); - let profiles = Config::profiles(); - let profiles = profiles.latest(); - if let Some(current_profile_uid) = profiles.get_current() { - let current_profile = profiles.get_item(¤t_profile_uid); - current_profile_name = match ¤t_profile.unwrap().name { - Some(profile_name) => profile_name.to_string(), - None => current_profile_name, + #[cfg(target_os = "linux")] + { + if let Some(item) = menu.get("system_proxy") { + if *system_proxy { + let _ = item + .as_menuitem() + .unwrap() + .set_text(t!("System Proxy ✔", "系统代理 ✔")); + } else { + let _ = item + .as_menuitem() + .unwrap() + .set_text(t!("System Proxy", "系统代理")); + } + } + + if let Some(item) = menu.get("tun_mode") { + if *tun_mode { + let _ = item + .as_menuitem() + .unwrap() + .set_text(t!("TUN Mode ✔", "Tun 模式 ✔")); + } else { + let _ = item + .as_menuitem() + .unwrap() + .set_text(t!("TUN Mode", "Tun 模式")); + } + } + } + + let switch_map = { + let mut map = std::collections::HashMap::new(); + map.insert(true, "on"); + map.insert(false, "off"); + map }; - }; - let _ = tray.set_tooltip(&format!( - "Clash Verge {version}\n{}: {}\n{}: {}\n{}: {}", - t!("SysProxy", "系统代理"), - switch_map[system_proxy], - t!("TUN", "Tun模式"), - switch_map[tun_mode], - t!("Profile", "当前订阅"), - current_profile_name - )); + + let mut current_profile_name = "None".to_string(); + let profiles = Config::profiles(); + let profiles = profiles.latest(); + if let Some(current_profile_uid) = profiles.get_current() { + let current_profile = profiles.get_item(¤t_profile_uid); + current_profile_name = match ¤t_profile.unwrap().name { + Some(profile_name) => profile_name.to_string(), + None => current_profile_name, + }; + }; + + let _ = tray.set_tooltip(Some(&format!( + "Clash Verge {version}\n{}: {}\n{}: {}\n{}: {}", + t!("SysProxy", "系统代理"), + switch_map[system_proxy], + t!("TUN", "Tun模式"), + switch_map[tun_mode], + t!("Profile", "当前订阅"), + current_profile_name + ))); + } Ok(()) } - pub fn on_click(app_handle: &AppHandle) { - let tray_event = { Config::verge().latest().tray_event.clone() }; - let tray_event = tray_event.unwrap_or("main_window".into()); - match tray_event.as_str() { + pub fn on_menu_event(app_handle: &AppHandle, event: MenuEvent) { + match event.id.as_ref() { + mode @ ("rule_mode" | "global_mode" | "direct_mode") => { + let mode = &mode[0..mode.len() - 5]; + feat::change_clash_mode(mode.into()); + } + "open_window" => resolve::create_window(app_handle), "system_proxy" => feat::toggle_system_proxy(), "tun_mode" => feat::toggle_tun_mode(), - "main_window" => resolve::create_window(app_handle), - _ => {} - } - } - - pub fn on_system_tray_event(app_handle: &AppHandle, event: SystemTrayEvent) { - match event { - #[cfg(not(target_os = "macos"))] - SystemTrayEvent::LeftClick { .. } => Tray::on_click(app_handle), - #[cfg(target_os = "macos")] - SystemTrayEvent::RightClick { .. } => Tray::on_click(app_handle), - SystemTrayEvent::MenuItemClick { id, .. } => match id.as_str() { - mode @ ("rule_mode" | "global_mode" | "direct_mode") => { - let mode = &mode[0..mode.len() - 5]; - feat::change_clash_mode(mode.into()); - } - "open_window" => resolve::create_window(app_handle), - "system_proxy" => feat::toggle_system_proxy(), - "tun_mode" => feat::toggle_tun_mode(), - "copy_env" => feat::copy_clash_env(app_handle), - "open_app_dir" => crate::log_err!(cmds::open_app_dir()), - "open_core_dir" => crate::log_err!(cmds::open_core_dir()), - "open_logs_dir" => crate::log_err!(cmds::open_logs_dir()), - "restart_clash" => feat::restart_clash_core(), - "restart_app" => api::process::restart(&app_handle.env()), - "quit" => cmds::exit_app(app_handle.clone()), - - _ => {} - }, + "copy_env" => feat::copy_clash_env(app_handle), + "open_app_dir" => crate::log_err!(cmds::open_app_dir()), + "open_core_dir" => crate::log_err!(cmds::open_core_dir()), + "open_logs_dir" => crate::log_err!(cmds::open_logs_dir()), + "restart_clash" => feat::restart_clash_core(), + "restart_app" => tauri::process::restart(&app_handle.env()), + "quit" => cmds::exit_app(app_handle.clone()), _ => {} } } diff --git a/src-tauri/src/feat.rs b/src-tauri/src/feat.rs index e4d6503..0260e5d 100644 --- a/src-tauri/src/feat.rs +++ b/src-tauri/src/feat.rs @@ -10,14 +10,15 @@ use crate::log_err; use crate::utils::resolve; use anyhow::{bail, Result}; use serde_yaml::{Mapping, Value}; -use tauri::{AppHandle, ClipboardManager, Manager}; +use tauri::{AppHandle, Manager}; +use tauri_plugin_clipboard_manager::ClipboardExt; // 打开面板 pub fn open_or_close_dashboard() { let handle = handle::Handle::global(); let app_handle = handle.app_handle.lock(); if let Some(app_handle) = app_handle.as_ref() { - if let Some(window) = app_handle.get_window("main") { + if let Some(window) = app_handle.get_webview_window("main") { if let Ok(true) = window.is_focused() { let _ = window.close(); return; @@ -319,8 +320,7 @@ pub fn copy_clash_env(app_handle: &AppHandle) { let cmd: String = format!("set http_proxy={http_proxy}\r\nset https_proxy={http_proxy}"); let ps: String = format!("$env:HTTP_PROXY=\"{http_proxy}\"; $env:HTTPS_PROXY=\"{http_proxy}\""); - let mut cliboard = app_handle.clipboard_manager(); - + let cliboard = app_handle.clipboard(); let env_type = { Config::verge().latest().env_type.clone() }; let env_type = match env_type { Some(env_type) => env_type, diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 380a78a..bbc884a 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -11,7 +11,7 @@ mod feat; mod utils; use crate::utils::{init, resolve, server}; -use tauri::{api, SystemTray}; +use tauri::tray::TrayIconBuilder; fn main() -> std::io::Result<()> { // 单例检测 @@ -34,14 +34,37 @@ fn main() -> std::io::Result<()> { #[allow(unused_mut)] let mut builder = tauri::Builder::default() - .system_tray(SystemTray::new()) + .plugin(tauri_plugin_updater::Builder::new().build()) + .plugin(tauri_plugin_clipboard_manager::init()) + .plugin(tauri_plugin_process::init()) + .plugin(tauri_plugin_global_shortcut::Builder::new().build()) + .plugin(tauri_plugin_notification::init()) + .plugin(tauri_plugin_fs::init()) + .plugin(tauri_plugin_dialog::init()) + .plugin(tauri_plugin_shell::init()) .setup(|app| { + TrayIconBuilder::new().build(app)?; + + #[cfg(target_os = "macos")] + { + use tauri::menu::MenuBuilder; + let _ = MenuBuilder::new(app) + .copy() + .paste() + .undo() + .redo() + .cut() + .select_all() + .quit() + .close_window() + .build(); + } tauri::async_runtime::block_on(async move { resolve::resolve_setup(app).await; }); + Ok(()) }) - .on_system_tray_event(core::tray::Tray::on_system_tray_event) .invoke_handler(tauri::generate_handler![ // common cmds::get_sys_proxy, @@ -97,26 +120,6 @@ fn main() -> std::io::Result<()> { cmds::clash_api_get_proxy_delay ]); - #[cfg(target_os = "macos")] - { - use tauri::{Menu, MenuItem, Submenu}; - - builder = builder.menu( - Menu::new().add_submenu(Submenu::new( - "Edit", - Menu::new() - .add_native_item(MenuItem::Undo) - .add_native_item(MenuItem::Redo) - .add_native_item(MenuItem::Copy) - .add_native_item(MenuItem::Paste) - .add_native_item(MenuItem::Cut) - .add_native_item(MenuItem::SelectAll) - .add_native_item(MenuItem::CloseWindow) - .add_native_item(MenuItem::Quit), - )), - ); - } - let app = builder .build(tauri::generate_context!()) .expect("error while running tauri application"); @@ -125,10 +128,6 @@ fn main() -> std::io::Result<()> { tauri::RunEvent::ExitRequested { api, .. } => { api.prevent_exit(); } - tauri::RunEvent::Updater(tauri::UpdaterEvent::Downloaded) => { - resolve::resolve_reset(); - api::process::kill_children(); - } tauri::RunEvent::WindowEvent { label, event, .. } => { if label == "main" { match event { diff --git a/src-tauri/src/utils/dirs.rs b/src-tauri/src/utils/dirs.rs index deda1c1..227e126 100644 --- a/src-tauri/src/utils/dirs.rs +++ b/src-tauri/src/utils/dirs.rs @@ -2,10 +2,7 @@ use crate::core::handle; use anyhow::Result; use once_cell::sync::OnceCell; use std::path::PathBuf; -use tauri::{ - api::path::{data_dir, resource_dir}, - Env, -}; +use tauri::Manager; #[cfg(not(feature = "verge-dev"))] pub static APP_ID: &str = "io.github.clash-verge-rev.clash-verge-rev"; @@ -48,9 +45,21 @@ pub fn app_home_dir() -> Result { return Ok(PathBuf::from(app_dir).join(".config").join(APP_ID)); } - Ok(data_dir() - .ok_or(anyhow::anyhow!("failed to get app home dir"))? - .join(APP_ID)) + let handle = handle::Handle::global(); + let app_handle = handle.app_handle.lock(); + + if let Some(app_handle) = app_handle.as_ref() { + match app_handle.path().data_dir() { + Ok(dir) => { + return Ok(dir.join(APP_ID)); + } + Err(e) => { + log::error!("Failed to get the app home directory: {}", e); + return Err(anyhow::anyhow!("Failed to get the app homedirectory")); + } + } + } + Err(anyhow::anyhow!("failed to get the app home dir")) } /// get the resources dir @@ -58,10 +67,15 @@ pub fn app_resources_dir() -> Result { let handle = handle::Handle::global(); let app_handle = handle.app_handle.lock(); if let Some(app_handle) = app_handle.as_ref() { - let res_dir = resource_dir(app_handle.package_info(), &Env::default()) - .ok_or(anyhow::anyhow!("failed to get the resource dir"))? - .join("resources"); - return Ok(res_dir); + match app_handle.path().resource_dir() { + Ok(dir) => { + return Ok(dir.join("resources")); + } + Err(e) => { + log::error!("Failed to get the resource directory: {}", e); + return Err(anyhow::anyhow!("Failed to get the resource directory")); + } + }; }; Err(anyhow::anyhow!("failed to get the resource dir")) } @@ -88,6 +102,10 @@ pub fn profiles_path() -> Result { Ok(app_home_dir()?.join(PROFILE_YAML)) } +pub fn clash_pid_path() -> Result { + Ok(app_home_dir()?.join("clash.pid")) +} + #[cfg(not(target_os = "windows"))] pub fn service_path() -> Result { Ok(app_resources_dir()?.join("clash-verge-service")) diff --git a/src-tauri/src/utils/help.rs b/src-tauri/src/utils/help.rs index 7c175de..1d698fb 100644 --- a/src-tauri/src/utils/help.rs +++ b/src-tauri/src/utils/help.rs @@ -4,10 +4,8 @@ use nanoid::nanoid; use serde::{de::DeserializeOwned, Serialize}; use serde_yaml::{Mapping, Value}; use std::{fs, path::PathBuf, str::FromStr}; -use tauri::{ - api::shell::{open, Program}, - Manager, -}; +use tauri_plugin_shell::ShellExt; + /// read data from yaml as struct T pub fn read_yaml(path: &PathBuf) -> Result { @@ -104,20 +102,7 @@ pub fn get_last_part_and_decode(url: &str) -> Option { /// open file /// use vscode by default pub fn open_file(app: tauri::AppHandle, path: PathBuf) -> Result<()> { - #[cfg(target_os = "macos")] - let code = "Visual Studio Code"; - #[cfg(not(target_os = "macos"))] - let code = "code"; - - let _ = match Program::from_str(code) { - Ok(code) => open(&app.shell_scope(), path.to_string_lossy(), Some(code)), - Err(err) => { - log::error!(target: "app", "Can't find VScode `{err}`"); - // default open - open(&app.shell_scope(), path.to_string_lossy(), None) - } - }; - + app.shell().open(path.to_string_lossy(), None).unwrap(); Ok(()) } diff --git a/src-tauri/src/utils/init.rs b/src-tauri/src/utils/init.rs index 943e33c..3d50d6c 100644 --- a/src-tauri/src/utils/init.rs +++ b/src-tauri/src/utils/init.rs @@ -10,7 +10,8 @@ use log4rs::encode::pattern::PatternEncoder; use std::fs::{self, DirEntry}; use std::path::PathBuf; use std::str::FromStr; -use tauri::api::process::Command; +use tauri::AppHandle; +use tauri_plugin_shell::ShellExt; /// initialize this instance's log file fn init_log() -> Result<()> { @@ -296,43 +297,39 @@ pub fn init_scheme() -> Result<()> { Ok(()) } -pub fn startup_script() -> Result<()> { - let path = { +pub async fn startup_script(app_handle: &AppHandle) -> Result<()> { + let script_path = { let verge = Config::verge(); let verge = verge.latest(); verge.startup_script.clone().unwrap_or("".to_string()) }; - if !path.is_empty() { - let mut shell = ""; - if path.ends_with(".sh") { - shell = "bash"; - } - if path.ends_with(".ps1") { - shell = "powershell"; - } - if path.ends_with(".bat") { - shell = "powershell"; - } - if shell.is_empty() { - return Err(anyhow::anyhow!("unsupported script: {path}")); - } - let current_dir = PathBuf::from(path.clone()); - if !current_dir.exists() { - return Err(anyhow::anyhow!("script not found: {path}")); - } - let current_dir = current_dir.parent(); - match current_dir { - Some(dir) => { - let _ = Command::new(shell) - .current_dir(dir.to_path_buf()) - .args([path]) - .output()?; - } - None => { - let _ = Command::new(shell).args([path]).output()?; - } - } + if script_path.is_empty() { + return Ok(()); } + + let shell_type = if script_path.ends_with(".sh") { + "bash" + } else if script_path.ends_with(".ps1") || script_path.ends_with(".bat") { + "powershell" + } else { + return Err(anyhow::anyhow!("unsupported script extension: {}", script_path)); + }; + + let script_dir = PathBuf::from(&script_path); + if !script_dir.exists() { + return Err(anyhow::anyhow!("script not found: {}", script_path)); + } + + let parent_dir = script_dir.parent(); + let working_dir = parent_dir.unwrap_or(script_dir.as_ref()); + + app_handle + .shell() + .command(shell_type) + .current_dir(working_dir.to_path_buf()) + .args(&[script_path]) + .output().await?; + Ok(()) } diff --git a/src-tauri/src/utils/resolve.rs b/src-tauri/src/utils/resolve.rs index b31b878..e333531 100644 --- a/src-tauri/src/utils/resolve.rs +++ b/src-tauri/src/utils/resolve.rs @@ -6,10 +6,12 @@ use anyhow::Result; use once_cell::sync::OnceCell; use serde_yaml::Mapping; use std::net::TcpListener; -use tauri::api::notification; use tauri::{App, AppHandle, Manager}; #[cfg(not(target_os = "linux"))] -use window_shadows::set_shadow; +// use window_shadows::set_shadow; +use tauri_plugin_notification::NotificationExt; + + pub static VERSION: OnceCell = OnceCell::new(); @@ -33,14 +35,14 @@ pub fn find_unused_port() -> Result { /// handle something when start app pub async fn resolve_setup(app: &mut App) { #[cfg(target_os = "macos")] - app.set_activation_policy(tauri::ActivationPolicy::Accessory); + app.set_activation_policy(tauri::ActivationPolicy::Regular); let version = app.package_info().version.to_string(); handle::Handle::global().init(app.app_handle()); VERSION.get_or_init(|| version.clone()); log_err!(init::init_resources()); log_err!(init::init_scheme()); - log_err!(init::startup_script()); + log_err!(init::startup_script(app.app_handle()).await); // 处理随机端口 let enable_random_port = Config::verge().latest().enable_random_port.unwrap_or(false); @@ -74,7 +76,7 @@ pub async fn resolve_setup(app: &mut App) { log_err!(Config::init_config().await); log::trace!("launch core"); - log_err!(CoreManager::global().init()); + log_err!(CoreManager::global().init(app.app_handle())); // setup a simple http server for singleton log::trace!("launch embed server"); @@ -115,17 +117,17 @@ pub fn resolve_reset() { /// create main window pub fn create_window(app_handle: &AppHandle) { - if let Some(window) = app_handle.get_window("main") { + if let Some(window) = app_handle.get_webview_window("main") { trace_err!(window.unminimize(), "set win unminimize"); trace_err!(window.show(), "set win visible"); trace_err!(window.set_focus(), "set win focus"); return; } - let mut builder = tauri::window::WindowBuilder::new( + let mut builder = tauri::WebviewWindowBuilder::new( app_handle, "main".to_string(), - tauri::WindowUrl::App("index.html".into()), + tauri::WebviewUrl::App("index.html".into()), ) .title("Clash Verge") .visible(false) @@ -199,8 +201,8 @@ pub fn create_window(app_handle: &AppHandle) { trace_err!(win.center(), "set win center"); } - #[cfg(not(target_os = "linux"))] - trace_err!(set_shadow(&win, true), "set win shadow"); + // #[cfg(not(target_os = "linux"))] + // trace_err!(set_shadow(&win, true), "set win shadow"); if is_maximized { trace_err!(win.maximize(), "set win maximize"); } @@ -221,7 +223,7 @@ pub fn save_window_size_position(app_handle: &AppHandle, save_to_file: bool) -> } let win = app_handle - .get_window("main") + .get_webview_window("main") .ok_or(anyhow::anyhow!("failed to get window"))?; let scale = win.scale_factor()?; @@ -241,21 +243,30 @@ pub async fn resolve_scheme(param: String) -> Result<()> { let url = param .trim_start_matches("clash://install-config/?url=") .trim_start_matches("clash://install-config?url="); - match import_profile(url.to_string(), None).await { - Ok(_) => { - notification::Notification::new(crate::utils::dirs::APP_ID) - .title("Clash Verge") - .body("Import profile success") - .show() - .unwrap(); - } - Err(e) => { - notification::Notification::new(crate::utils::dirs::APP_ID) - .title("Clash Verge") - .body(format!("Import profile failed: {e}")) - .show() - .unwrap(); - log::error!("Import profile failed: {e}"); + + let handle = handle::Handle::global(); + let app_handle = handle.app_handle.lock(); + if let Some(app_handle) = app_handle.as_ref() { + match import_profile(url.to_string(), None).await { + Ok(_) => { + app_handle + .notification() + .builder() + .title("Clash Verge") + .body("Import profile success") + .show() + .unwrap(); + } + Err(e) => { + app_handle + .notification() + .builder() + .title("Clash Verge") + .body(format!("Import profile failed: {e}")) + .show() + .unwrap(); + log::error!("Import profile failed: {e}"); + } } } Ok(()) diff --git a/src-tauri/src/utils/server.rs b/src-tauri/src/utils/server.rs index ac16b67..64a00a3 100644 --- a/src-tauri/src/utils/server.rs +++ b/src-tauri/src/utils/server.rs @@ -1,20 +1,16 @@ extern crate warp; use super::resolve; -use crate::{ - config::{Config, IVerge, DEFAULT_PAC}, - log_err, -}; +use crate::config::{Config, IVerge, DEFAULT_PAC}; use anyhow::{bail, Result}; use port_scanner::local_port_available; use std::convert::Infallible; use tauri::AppHandle; +use warp::http::StatusCode; use warp::Filter; #[derive(serde::Deserialize, Debug)] -struct QueryParam { - param: String, -} +struct QueryParam {} /// check whether there is already exists pub async fn check_singleton() -> Result<()> { @@ -56,14 +52,15 @@ pub async fn check_singleton() -> Result<()> { /// The embed server only be used to implement singleton process /// maybe it can be used as pac server later -pub fn embed_server(app_handle: AppHandle) { +pub fn embed_server(app_handle: &AppHandle) { let port = IVerge::get_singleton_port(); + let handle = app_handle.clone(); tauri::async_runtime::spawn(async move { let ping = warp::path!("commands" / "ping").map(move || "ok"); let visible = warp::path!("commands" / "visible").map(move || { - resolve::create_window(&app_handle); + resolve::create_window(&handle); "ok" }); @@ -87,9 +84,9 @@ pub fn embed_server(app_handle: AppHandle) { .and(warp::query::()) .and_then(scheme_handler); - async fn scheme_handler(query: QueryParam) -> Result { - log_err!(resolve::resolve_scheme(query.param).await); - Ok("ok") + async fn scheme_handler(_: QueryParam) -> Result { + //let _ = resolve::resolve_scheme(query.param).await; + Ok(warp::reply::with_status("Ok", StatusCode::OK)) } let commands = ping.or(visible).or(pac).or(scheme); warp::serve(commands).run(([127, 0, 0, 1], port)).await; diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index b1138b2..416c56e 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,82 +1,49 @@ { - "$schema": "../node_modules/@tauri-apps/cli/schema.json", - "package": { - "productName": "Clash Verge", - "version": "1.7.7" + "$schema": "../node_modules/@tauri-apps/cli/config.schema.json", + "bundle": { + "active": true, + "longDescription": "A Clash Meta GUI based on tauri.", + "icon": [ + "icons/32x32.png", + "icons/128x128.png", + "icons/128x128@2x.png", + "icons/icon.icns", + "icons/icon.ico" + ], + "resources": ["resources"], + "publisher": "Clash Verge Rev", + "externalBin": ["sidecar/verge-mihomo", "sidecar/verge-mihomo-alpha"], + "copyright": "GNU General Public License v3.0", + "category": "DeveloperTool", + "shortDescription": "A Clash Meta GUI based on tauri.", + "createUpdaterArtifacts": "v1Compatible" }, "build": { - "distDir": "../dist", - "devPath": "http://localhost:3000/", + "beforeBuildCommand": "pnpm run web:build", + "frontendDist": "../dist", "beforeDevCommand": "pnpm run web:dev", - "beforeBuildCommand": "pnpm run web:build" + "devUrl": "http://localhost:3000/" }, - "tauri": { - "bundle": { - "active": true, - "identifier": "io.github.clash-verge-rev.clash-verge-rev", - "icon": [ - "icons/32x32.png", - "icons/128x128.png", - "icons/128x128@2x.png", - "icons/icon.icns", - "icons/icon.ico" - ], - "resources": ["resources"], - "publisher": "Clash Verge Rev", - "externalBin": ["sidecar/verge-mihomo", "sidecar/verge-mihomo-alpha"], - "copyright": "GNU General Public License v3.0", - "category": "DeveloperTool", - "shortDescription": "A Clash Meta GUI based on tauri.", - "longDescription": "A Clash Meta GUI based on tauri." - }, + "productName": "Clash Verge", + "version": "1.7.7", + "identifier": "io.github.clash-verge-rev.clash-verge-rev", + "plugins": { "updater": { - "active": true, + "pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IEQyOEMyRjBCQkVGOUJEREYKUldUZnZmbStDeStNMHU5Mmo1N24xQXZwSVRYbXA2NUpzZE5oVzlqeS9Bc0t6RVV4MmtwVjBZaHgK", "endpoints": [ "https://download.clashverge.dev/https://github.com/clash-verge-rev/clash-verge-rev/releases/download/updater/update-proxy.json", "https://github.com/clash-verge-rev/clash-verge-rev/releases/download/updater/update.json" - ], - "dialog": false, - "pubkey": "dW50cnVzdGVkIGNvbW1lbnQ6IG1pbmlzaWduIHB1YmxpYyBrZXk6IEQyOEMyRjBCQkVGOUJEREYKUldUZnZmbStDeStNMHU5Mmo1N24xQXZwSVRYbXA2NUpzZE5oVzlqeS9Bc0t6RVV4MmtwVjBZaHgK" - }, - "allowlist": { - "shell": { - "all": true - }, - "window": { - "all": true - }, - "process": { - "all": true - }, - "globalShortcut": { - "all": true - }, - "clipboard": { - "all": true - }, - "notification": { - "all": true - }, - "dialog": { - "all": false, - "open": true - }, - "protocol": { - "asset": true, - "assetScope": ["$APPDATA/**", "$RESOURCE/../**", "**"] - }, - "path": { - "all": true - }, - "fs": { - "exists": true, - "readFile": true, - "scope": ["$APPDATA/**", "$RESOURCE/../**", "**"] - } - }, - "windows": [], - "security": { - "csp": "default-src blob: data: filesystem: ws: wss: http: https: tauri: asset: 'unsafe-eval' 'unsafe-inline' 'self';" + ] } + }, + "app": { + "security": { + "assetProtocol": { + "scope": ["$APPDATA/**", "$RESOURCE/../**", "**"], + "enable": true + }, + "csp": "default-src blob: data: filesystem: ws: wss: http: https: tauri: asset: 'unsafe-eval' 'unsafe-inline' 'self';; connect-src ipc: http://ipc.localhost" + }, + "windows": [] } } diff --git a/src-tauri/tauri.linux.conf.json b/src-tauri/tauri.linux.conf.json index 3a2dc9e..eb8e2ae 100644 --- a/src-tauri/tauri.linux.conf.json +++ b/src-tauri/tauri.linux.conf.json @@ -1,12 +1,8 @@ { - "$schema": "../node_modules/@tauri-apps/cli/schema.json", - "tauri": { - "systemTray": { - "iconPath": "icons/tray-icon.ico" - }, - "bundle": { - "identifier": "io.github.clash-verge-rev.clash-verge-rev", - "targets": ["deb", "rpm"], + "$schema": "../node_modules/@tauri-apps/cli/config.schema.json", + "bundle": { + "targets": ["deb", "rpm"], + "linux": { "deb": { "depends": ["openssl"], "desktopTemplate": "./template/clash-verge.desktop", @@ -22,5 +18,10 @@ "obsoletes": ["clash-verge"] } } + }, + "app": { + "trayIcon": { + "iconPath": "icons/tray-icon.ico" + } } } diff --git a/src-tauri/tauri.macos.conf.json b/src-tauri/tauri.macos.conf.json index 8f7c87a..21748a5 100644 --- a/src-tauri/tauri.macos.conf.json +++ b/src-tauri/tauri.macos.conf.json @@ -1,20 +1,13 @@ { - "$schema": "../node_modules/@tauri-apps/cli/schema.json", - "tauri": { - "systemTray": { - "iconPath": "icons/tray-icon-mono.ico", - "iconAsTemplate": true - }, - "bundle": { - "identifier": "io.github.clash-verge-rev.clash-verge-rev", - "targets": ["app", "dmg", "updater"], - "macOS": { - "frameworks": [], - "minimumSystemVersion": "10.15", - "exceptionDomain": "", - "signingIdentity": null, - "entitlements": null - }, + "$schema": "../node_modules/@tauri-apps/cli/config.schema.json", + "bundle": { + "targets": ["app", "dmg"], + "macOS": { + "frameworks": [], + "minimumSystemVersion": "10.15", + "exceptionDomain": "", + "signingIdentity": null, + "entitlements": null, "dmg": { "background": "images/background.png", "appPosition": { @@ -35,5 +28,11 @@ } } } + }, + "app": { + "trayIcon": { + "iconPath": "icons/tray-icon-mono.ico", + "iconAsTemplate": true + } } } diff --git a/src-tauri/tauri.windows.conf.json b/src-tauri/tauri.windows.conf.json index b986efa..f3a7d6a 100644 --- a/src-tauri/tauri.windows.conf.json +++ b/src-tauri/tauri.windows.conf.json @@ -1,29 +1,28 @@ { - "$schema": "../node_modules/@tauri-apps/cli/schema.json", - "tauri": { - "systemTray": { - "iconPath": "icons/tray-icon.ico" - }, - "bundle": { - "identifier": "io.github.clash-verge-rev.clash-verge-rev", - "targets": ["nsis", "updater"], - "windows": { - "certificateThumbprint": null, - "digestAlgorithm": "sha256", - "timestampUrl": "", - "webviewInstallMode": { - "type": "embedBootstrapper", - "silent": true - }, - "nsis": { - "displayLanguageSelector": true, - "installerIcon": "icons/icon.ico", - "languages": ["SimpChinese", "English"], - "license": "../LICENSE", - "installMode": "perMachine", - "template": "./template/installer.nsi" - } + "$schema": "../node_modules/@tauri-apps/cli/config.schema.json", + "bundle": { + "targets": ["nsis"], + "windows": { + "certificateThumbprint": null, + "digestAlgorithm": "sha256", + "timestampUrl": "", + "webviewInstallMode": { + "type": "embedBootstrapper", + "silent": true + }, + "nsis": { + "displayLanguageSelector": true, + "installerIcon": "icons/icon.ico", + "languages": ["SimpChinese", "English"], + "installMode": "perMachine", + "template": "./template/installer.nsi" } } + }, + "app": { + "trayIcon": { + "iconPath": "icons/tray-icon.ico", + "iconAsTemplate": true + } } } diff --git a/src/components/base/base-notice.tsx b/src/components/base/base-notice.tsx index ec60d9c..dfc96e0 100644 --- a/src/components/base/base-notice.tsx +++ b/src/components/base/base-notice.tsx @@ -7,7 +7,8 @@ import { ErrorRounded, } from "@mui/icons-material"; import { useVerge } from "@/hooks/use-verge"; -import { appWindow } from "@tauri-apps/api/window"; +import { getCurrentWebviewWindow } from "@tauri-apps/api/webviewWindow"; +const appWindow = getCurrentWebviewWindow(); interface InnerProps { type: string; duration?: number; diff --git a/src/components/layout/layout-control.tsx b/src/components/layout/layout-control.tsx index 6a69051..eda6a8c 100644 --- a/src/components/layout/layout-control.tsx +++ b/src/components/layout/layout-control.tsx @@ -1,5 +1,5 @@ import { Button, ButtonGroup } from "@mui/material"; -import { appWindow } from "@tauri-apps/api/window"; +import { getCurrentWebviewWindow } from "@tauri-apps/api/webviewWindow"; import { CloseRounded, CropSquareRounded, @@ -9,6 +9,7 @@ import { PushPinRounded, } from "@mui/icons-material"; import { useEffect, useState } from "react"; +const appWindow = getCurrentWebviewWindow(); export const LayoutControl = () => { const minWidth = 40; diff --git a/src/components/layout/update-button.tsx b/src/components/layout/update-button.tsx index 601a890..93f9c3b 100644 --- a/src/components/layout/update-button.tsx +++ b/src/components/layout/update-button.tsx @@ -1,7 +1,7 @@ import useSWR from "swr"; import { useRef } from "react"; import { Button } from "@mui/material"; -import { checkUpdate } from "@tauri-apps/api/updater"; +import { check } from "@tauri-apps/plugin-updater"; import { UpdateViewer } from "../setting/mods/update-viewer"; import { DialogRef } from "../base"; import { useVerge } from "@/hooks/use-verge"; @@ -19,7 +19,7 @@ export const UpdateButton = (props: Props) => { const { data: updateInfo } = useSWR( auto_check_update || auto_check_update === null ? "checkUpdate" : null, - checkUpdate, + check, { errorRetryCount: 2, revalidateIfStale: false, @@ -27,7 +27,7 @@ export const UpdateButton = (props: Props) => { } ); - if (!updateInfo?.shouldUpdate) return null; + if (!updateInfo?.available) return null; return ( <> diff --git a/src/components/layout/use-custom-theme.ts b/src/components/layout/use-custom-theme.ts index 99879a7..4d2ca52 100644 --- a/src/components/layout/use-custom-theme.ts +++ b/src/components/layout/use-custom-theme.ts @@ -1,9 +1,10 @@ import { useEffect, useMemo } from "react"; import { alpha, createTheme, Shadows, Theme } from "@mui/material"; -import { appWindow } from "@tauri-apps/api/window"; +import { getCurrentWebviewWindow } from "@tauri-apps/api/webviewWindow"; import { useSetThemeMode, useThemeMode } from "@/services/states"; import { defaultTheme, defaultDarkTheme } from "@/pages/_theme"; import { useVerge } from "@/hooks/use-verge"; +const appWindow = getCurrentWebviewWindow(); /** * custom theme diff --git a/src/components/profile/editor-viewer.tsx b/src/components/profile/editor-viewer.tsx index 74e297c..e1ccd0b 100644 --- a/src/components/profile/editor-viewer.tsx +++ b/src/components/profile/editor-viewer.tsx @@ -18,7 +18,7 @@ import { import { useThemeMode } from "@/services/states"; import { Notice } from "@/components/base"; import { nanoid } from "nanoid"; -import { appWindow } from "@tauri-apps/api/window"; +import { getCurrentWebviewWindow } from "@tauri-apps/api/webviewWindow"; import getSystem from "@/utils/get-system"; import debounce from "@/utils/debounce"; @@ -29,6 +29,7 @@ import { type JSONSchema7 } from "json-schema"; import metaSchema from "meta-json-schema/schemas/meta-json-schema.json"; import mergeSchema from "meta-json-schema/schemas/clash-verge-merge-json-schema.json"; import pac from "types-pac/pac.d.ts?raw"; +const appWindow = getCurrentWebviewWindow(); type Language = "yaml" | "javascript" | "css"; type Schema = LanguageSchemaMap[T]; diff --git a/src/components/profile/group-item.tsx b/src/components/profile/group-item.tsx index cda55bb..5d69bb7 100644 --- a/src/components/profile/group-item.tsx +++ b/src/components/profile/group-item.tsx @@ -10,7 +10,7 @@ import { DeleteForeverRounded, UndoRounded } from "@mui/icons-material"; import { useSortable } from "@dnd-kit/sortable"; import { CSS } from "@dnd-kit/utilities"; import { downloadIconCache } from "@/services/cmds"; -import { convertFileSrc } from "@tauri-apps/api/tauri"; +import { convertFileSrc } from "@tauri-apps/api/core"; import { useEffect, useState } from "react"; interface Props { type: "prepend" | "original" | "delete" | "append"; diff --git a/src/components/profile/profile-item.tsx b/src/components/profile/profile-item.tsx index 916e419..4cf7101 100644 --- a/src/components/profile/profile-item.tsx +++ b/src/components/profile/profile-item.tsx @@ -30,7 +30,7 @@ import { EditorViewer } from "@/components/profile/editor-viewer"; import { ProfileBox } from "./profile-box"; import parseTraffic from "@/utils/parse-traffic"; import { ConfirmViewer } from "@/components/profile/confirm-viewer"; -import { open } from "@tauri-apps/api/shell"; +import { open } from "@tauri-apps/plugin-shell"; import { ProxiesEditorViewer } from "./proxies-editor-viewer"; const round = keyframes` from { transform: rotate(0deg); } diff --git a/src/components/proxy/proxy-render.tsx b/src/components/proxy/proxy-render.tsx index 18a7fbb..54675ed 100644 --- a/src/components/proxy/proxy-render.tsx +++ b/src/components/proxy/proxy-render.tsx @@ -19,7 +19,7 @@ import type { IRenderItem } from "./use-render-list"; import { useVerge } from "@/hooks/use-verge"; import { useThemeMode } from "@/services/states"; import { useEffect, useMemo, useState } from "react"; -import { convertFileSrc } from "@tauri-apps/api/tauri"; +import { convertFileSrc } from "@tauri-apps/api/core"; import { downloadIconCache } from "@/services/cmds"; interface RenderProps { diff --git a/src/components/setting/mods/layout-viewer.tsx b/src/components/setting/mods/layout-viewer.tsx index 8db6ed5..4253545 100644 --- a/src/components/setting/mods/layout-viewer.tsx +++ b/src/components/setting/mods/layout-viewer.tsx @@ -12,11 +12,11 @@ import { import { useVerge } from "@/hooks/use-verge"; import { BaseDialog, DialogRef, Notice, Switch } from "@/components/base"; import { GuardState } from "./guard-state"; -import { open as openDialog } from "@tauri-apps/api/dialog"; -import { convertFileSrc } from "@tauri-apps/api/tauri"; +import { open as openDialog } from "@tauri-apps/plugin-dialog"; +import { convertFileSrc } from "@tauri-apps/api/core"; import { copyIconFile, getAppDir } from "@/services/cmds"; import { join } from "@tauri-apps/api/path"; -import { exists } from "@tauri-apps/api/fs"; +import { exists } from "@tauri-apps/plugin-fs"; import getSystem from "@/utils/get-system"; const OS = getSystem(); @@ -186,7 +186,7 @@ export const LayoutViewer = forwardRef((props, ref) => { onChangeData({ common_tray_icon: false }); patchVerge({ common_tray_icon: false }); } else { - const path = await openDialog({ + const selected = await openDialog({ directory: false, multiple: false, filters: [ @@ -196,8 +196,8 @@ export const LayoutViewer = forwardRef((props, ref) => { }, ], }); - if (path?.length) { - await copyIconFile(`${path}`, "common"); + if (selected?.path.length) { + await copyIconFile(`${selected.path}`, "common"); await initIconPath(); onChangeData({ common_tray_icon: true }); patchVerge({ common_tray_icon: true }); @@ -232,7 +232,7 @@ export const LayoutViewer = forwardRef((props, ref) => { onChangeData({ sysproxy_tray_icon: false }); patchVerge({ sysproxy_tray_icon: false }); } else { - const path = await openDialog({ + const selected = await openDialog({ directory: false, multiple: false, filters: [ @@ -242,8 +242,8 @@ export const LayoutViewer = forwardRef((props, ref) => { }, ], }); - if (path?.length) { - await copyIconFile(`${path}`, "sysproxy"); + if (selected?.path.length) { + await copyIconFile(`${selected.path}`, "sysproxy"); await initIconPath(); onChangeData({ sysproxy_tray_icon: true }); patchVerge({ sysproxy_tray_icon: true }); @@ -276,7 +276,7 @@ export const LayoutViewer = forwardRef((props, ref) => { onChangeData({ tun_tray_icon: false }); patchVerge({ tun_tray_icon: false }); } else { - const path = await openDialog({ + const selected = await openDialog({ directory: false, multiple: false, filters: [ @@ -286,8 +286,8 @@ export const LayoutViewer = forwardRef((props, ref) => { }, ], }); - if (path?.length) { - await copyIconFile(`${path}`, "tun"); + if (selected?.path.length) { + await copyIconFile(`${selected.path}`, "tun"); await initIconPath(); onChangeData({ tun_tray_icon: true }); patchVerge({ tun_tray_icon: true }); diff --git a/src/components/setting/mods/network-interface-viewer.tsx b/src/components/setting/mods/network-interface-viewer.tsx index e6e7b4a..5c24ede 100644 --- a/src/components/setting/mods/network-interface-viewer.tsx +++ b/src/components/setting/mods/network-interface-viewer.tsx @@ -4,7 +4,7 @@ import { BaseDialog, DialogRef, Notice } from "@/components/base"; import { getNetworkInterfacesInfo } from "@/services/cmds"; import { alpha, Box, Button, Chip, IconButton } from "@mui/material"; import { ContentCopyRounded } from "@mui/icons-material"; -import { writeText } from "@tauri-apps/api/clipboard"; +import { writeText } from "@tauri-apps/plugin-clipboard-manager"; export const NetworkInterfaceViewer = forwardRef((props, ref) => { const { t } = useTranslation(); diff --git a/src/components/setting/mods/update-viewer.tsx b/src/components/setting/mods/update-viewer.tsx index bea9a01..d0887e6 100644 --- a/src/components/setting/mods/update-viewer.tsx +++ b/src/components/setting/mods/update-viewer.tsx @@ -3,13 +3,13 @@ import { forwardRef, useImperativeHandle, useState, useMemo } from "react"; import { useLockFn } from "ahooks"; import { Box, LinearProgress, Button } from "@mui/material"; import { useTranslation } from "react-i18next"; -import { relaunch } from "@tauri-apps/api/process"; -import { checkUpdate, installUpdate } from "@tauri-apps/api/updater"; +import { relaunch } from "@tauri-apps/plugin-process"; +import { check as checkUpdate } from "@tauri-apps/plugin-updater"; import { BaseDialog, DialogRef, Notice } from "@/components/base"; import { useUpdateState, useSetUpdateState } from "@/services/states"; import { listen, Event, UnlistenFn } from "@tauri-apps/api/event"; import { portableFlag } from "@/pages/_layout"; -import { open as openUrl } from "@tauri-apps/api/shell"; +import { open as openUrl } from "@tauri-apps/plugin-shell"; import ReactMarkdown from "react-markdown"; let eventListener: UnlistenFn | null = null; @@ -38,17 +38,17 @@ export const UpdateViewer = forwardRef((props, ref) => { })); const markdownContent = useMemo(() => { - if (!updateInfo?.manifest?.body) { + if (!updateInfo?.body) { return "New Version is available"; } - return updateInfo?.manifest?.body; + return updateInfo?.body; }, [updateInfo]); const breakChangeFlag = useMemo(() => { - if (!updateInfo?.manifest?.body) { + if (!updateInfo?.body) { return false; } - return updateInfo?.manifest?.body.toLowerCase().includes("break change"); + return updateInfo?.body.toLowerCase().includes("break change"); }, [updateInfo]); const onUpdate = useLockFn(async () => { @@ -56,7 +56,7 @@ export const UpdateViewer = forwardRef((props, ref) => { Notice.error(t("Portable Updater Error")); return; } - if (!updateInfo?.manifest?.body) return; + if (!updateInfo?.body) return; if (breakChangeFlag) { Notice.error(t("Break Change Update Error")); return; @@ -77,7 +77,7 @@ export const UpdateViewer = forwardRef((props, ref) => { } ); try { - await installUpdate(); + await updateInfo.install(); await relaunch(); } catch (err: any) { Notice.error(err?.message || err.toString()); @@ -91,14 +91,14 @@ export const UpdateViewer = forwardRef((props, ref) => { open={open} title={ - {`New Version v${updateInfo?.manifest?.version}`} + {`New Version v${updateInfo?.version}`}