Shell
このコンテンツはまだ日本語訳がありません。
Access the system shell. Allows you to spawn child processes.
Supported Platforms
This plugin requires a Rust version of at least 1.77.2
Platform | Level | Notes |
---|---|---|
windows | ||
linux | ||
macos | ||
android | | Only allows to open URLs via |
ios | | Only allows to open URLs via |
Opener
If you’re looking for documentation for the shell.open
API, check out the new Opener plugin instead.
Setup
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
deno task tauri add shell
bun tauri add shell
cargo tauri add shell
-
Run the following command in the
src-tauri
folder to add the plugin to the project’s dependencies inCargo.toml
:cargo add tauri-plugin-shell -
Modify
lib.rs
to initialize the plugin:src-tauri/src/lib.rs #[cfg_attr(mobile, tauri::mobile_entry_point)]pub 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-shelldeno add npm:@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__.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 potentially dangerous plugin commands and scopes are blocked and cannot be accessed. You must modify the permissions in your capabilities
configuration to enable these.
See the Capabilities Overview for more information and the step by step guide to use plugin permissions.
{ "$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 } ] } ]}
Default Permission
This permission set configures which shell functionality is exposed by default.
Granted Permissions
It allows to use the open
functionality without any specific
scope pre-configured. It will allow opening http(s)://
,
tel:
and mailto:
links.
allow-open
Permission Table
Identifier | Description |
---|---|
|
Enables the execute command without any pre-configured scope. |
|
Denies the execute command without any pre-configured scope. |
|
Enables the kill command without any pre-configured scope. |
|
Denies the kill command without any pre-configured scope. |
|
Enables the open command without any pre-configured scope. |
|
Denies the open command without any pre-configured scope. |
|
Enables the spawn command without any pre-configured scope. |
|
Denies the spawn command without any pre-configured scope. |
|
Enables the stdin_write command without any pre-configured scope. |
|
Denies the stdin_write command without any pre-configured scope. |
© 2025 Tauri Contributors. CC-BY / MIT