This is a mod of the original official Tauri plugin tauri-plugin-shell.
The purpose is to provide the option to remove restrictions on shell commands (every command has to be pre-defined in capability).
Caution
It is not recommended to use this plugin. This plugin was created for another project https://github.com/kunkunsh/kunkun, which contains an extension system. I implemented a custom permission control layer in JS to ensure security. You should use the original shell plugin unless there is a reason you have to unlock the permissions control.
This plugin allows you to execute any shell commands freely without any restrictions.
JS/TS API Documentation: https://huakunshen.github.io/tauri-plugin-shellx/
- NPM Package: https://www.npmjs.com/package/tauri-plugin-shellx-api
- Rust Crate: https://crates.io/crates/tauri-plugin-shellx
Make sure your npm package version and rust crate version are the same, or you may encounter compatibility issues.
npm install tauri-plugin-shellx-api
cargo add tauri-plugin-shellxInstall rust crate from https://crates.io/crates/tauri-plugin-shellx
Init plugin like this. The init() function takes a single unlocked argument.
let unlocked = true;
tauri::Builder::default()
.plugin(tauri_plugin_shellx::init(unlocked))
...- If set to true, capability and permission settings are ignored.
- If set to false, it will work like the original
tauri-plugin-shell.
An example app can be found at ./examples/tauri-app.
This example app is a simplified terminal emulator.
All API functions can be found in the API documentation.
const cmd = Command.create('echo', ['echo', 'Hello, World!'])
const out = await cmd.execute()
const stdout = out.stdout
// stdout === 'Hello, World!'Spawn a process for long-running tasks, and get stdout/stderr stream for real-time output.
const cmd = Command.create('ffmpeg', [
'-i',
'/Users/xxx/input.mp4',
'/Users/xxx/output.mp4'
])
cmd.on('close', (data) => {
console.log(
`command finished with code ${data.code} and signal ${data.signal}`
)
})
cmd.on('error', (error) => console.error(`command error: "${error}"`))
cmd.stdout.on('data', (line) => console.log(`command stdout: "${line}"`))
cmd.stderr.on('data', (line) => console.log(`command stderr: "${line}"`))
const child = await cmd.spawn()
console.log('pid:', child.pid)
await child.kill()Except for the original APIs, this plugin also provides some additional APIs:
These functions are simply wrappers for the
executefunction, which can be used to execute scripts.
You can also construct your own script runner wrapper
const powershellCmd = Command.create('powershell', ['-Command', script])
const bashCmd = Command.create('bash', ['-c', script])makeBashScriptmakePowershellScriptmakeAppleScriptmakePythonScriptmakeZshScriptmakeNodeScriptexecuteBashScriptexecutePowershellScriptexecuteAppleScriptexecutePythonScriptexecuteZshScriptexecuteNodeScript
likelyOnWindowshasCommandfixPathEnv- If the command you run cannot be found in the PATH environment variable, you can use this function to fix it.
