Shell
Ce contenu n’est pas encore disponible dans votre langue.
Access the system shell. Allows you to spawn child processes and manage files and URLs using their default application.
Supported Platforms
- Windows
- Linux
- macOS
Setup
This plugin requires a Rust version of at least 1.75
Install the shell plugin to get started.
Use your project’s package manager to add the dependency:
npm run tauri add shell
yarn run tauri add shell
pnpm tauri add shell
bun tauri add shell
cargo tauri add shell
-
Install the shell plugin by adding the following to your
Cargo.toml
file:src-tauri/Cargo.toml [dependencies]tauri-plugin-shell = "2.0.0-beta"# alternatively with Git:tauri-plugin-shell = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" } -
Modify
lib.rs
to initialize the plugin:src-tauri/src/lib.rs fn run() {tauri::Builder::default().plugin(tauri_plugin_shell::init()).run(tauri::generate_context!()).expect("error while running tauri application");} -
Install the JavaScript Guest bindings using your preferred JavaScript package manager:
npm install @tauri-apps/plugin-shellyarn add @tauri-apps/plugin-shellpnpm add @tauri-apps/plugin-shellbun add @tauri-apps/plugin-shell
Usage
The shell plugin is available in both JavaScript and Rust.
import { Command } from '@tauri-apps/plugin-shell';// when using `"withGlobalTauri": true`, you may use// const { Command } = window.__TAURI_PLUGIN_SHELL__;
let result = await Command.create('exec-sh', [ '-c', "echo 'Hello World!'",]).execute();console.log(result);
use tauri_plugin_shell::ShellExt;
let shell = app_handle.shell();let output = tauri::async_runtime::block_on(async move { shell .command("echo") .args(["Hello from Rust!"]) .output() .await .unwrap()});if output.status.success() { println!("Result: {:?}", String::from_utf8(output.stdout));} else { println!("Exit with code: {}", output.status.code().unwrap());}
Permissions
By default all plugin commands are blocked and cannot be accessed. You must define a list of permissions in your capabilities
configuration.
See Permissions Overview for more information.
{ "$schema": "../gen/schemas/desktop-schema.json", "identifier": "main-capability", "description": "Capability for the main window", "windows": ["main"], "permissions": [ { "identifier": "shell:allow-execute", "allow": [ { "name": "exec-sh", "cmd": "sh", "args": [ "-c", { "validator": "\\S+" } ], "sidecar": false } ] } ]}
Permission | Description |
---|---|
shell:allow-execute | Enables the execute command without any pre-configured scope. |
shell:deny-execute | Denies the execute command without any pre-configured scope. |
shell:allow-kill | Enables the kill command without any pre-configured scope. |
shell:deny-kill | Denies the kill command without any pre-configured scope. |
shell:allow-open | Enables the open command without any pre-configured scope. |
shell:deny-open | Denies the open command without any pre-configured scope. |
shell:allow-stdin-write | Enables the stdin_write command without any pre-configured scope. |
shell:deny-stdin-write | Denies the stdin_write command without any pre-configured scope. |
© 2024 Tauri Contributors. CC-BY / MIT