Shell
Accede al shell del sistema. Te permite generar procesos hijo.
Plataformas Soportadas
Sección titulada “Plataformas Soportadas”Este plugin requiere una versión de Rust de al menos 1.77.2
| Plataforma | Nivel | Notas |
|---|---|---|
| windows | ||
| linux | ||
| macos | ||
| android | Solo permite abrir URLs a través de | |
| ios | Solo permite abrir URLs a través de |
Si estás buscando documentación para la API shell.open, en su lugar consulta el nuevo plugin Opener.
Configuración
Sección titulada “Configuración”Instala el plugin shell para comenzar.
Usa el gestor de paquetes de tu proyecto para agregar la dependencia:
npm run tauri add shellyarn run tauri add shellpnpm tauri add shelldeno task tauri add shellbun tauri add shellcargo tauri add shell-
Ejecuta el siguiente comando en la carpeta
src-tauripara agregar el plugin a las dependencias del proyecto enCargo.toml:cargo add tauri-plugin-shell -
Modifica
lib.rspara inicializar el 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");} -
Instala los bindings de JavaScript utilizando tu gestor de paquetes de JavaScript preferido:
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
El plugin shell está disponible tanto en JavaScript como en 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());}Permisos
Sección titulada “Permisos”De forma predeterminada, todos los comandos y alcances (scopes) potencialmente peligrosos del plugin están bloqueados y no se puede acceder a ellos. Debes modificar los permisos en tu configuración de capabilities para habilitarlos.
Consulta la Visión General de Capacidades para obtener más información y la guía paso a paso para usar permisos de plugins.
{ "$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 } ] } ]}Permiso Predeterminado
Este conjunto de permisos configura qué funcionalidad de shell se expone por defecto.
Permisos Otorgados
Permite usar la funcionalidad open con un
scope razonable preconfigurado. Permitirá abrir enlaces http(s)://,
tel: y mailto:.
Este conjunto de permisos predeterminado incluye lo siguiente:
allow-open
Tabla de Permisos
| Identificador | Descripción |
|---|---|
|
|
Habilita el comando execute sin ningún scope preconfigurado. |
|
|
Deniega el comando execute sin ningún scope preconfigurado. |
|
|
Habilita el comando kill sin ningún scope preconfigurado. |
|
|
Deniega el comando kill sin ningún scope preconfigurado. |
|
|
Habilita el comando open sin ningún ámbito preconfigurado. |
|
|
Deniega el comando open sin ningún ámbito preconfigurado. |
|
|
Habilita el comando spawn sin ningún scope preconfigurado. |
|
|
Deniega el comando spawn sin ningún scope preconfigurado. |
|
|
Habilita el comando stdin_write sin ningún scope preconfigurado. |
|
|
Deniega el comando stdin_write sin ningún scope preconfigurado. |
© 2026 Colaboradores de Tauri. CC-BY / MIT