11 stable releases

2.0.16 Mar 3, 2025
2.0.15 Feb 25, 2025
2.0.12 Nov 14, 2024
2.0.11 Oct 3, 2024
0.0.5 Jun 19, 2024

#240 in GUI

Download history 108/week @ 2024-11-20 51/week @ 2024-11-27 59/week @ 2024-12-04 69/week @ 2024-12-11 56/week @ 2024-12-18 24/week @ 2024-12-25 115/week @ 2025-01-01 168/week @ 2025-01-08 59/week @ 2025-01-15 63/week @ 2025-01-22 36/week @ 2025-01-29 440/week @ 2025-02-05 315/week @ 2025-02-12 265/week @ 2025-02-19 405/week @ 2025-02-26 77/week @ 2025-03-05

1,099 downloads per month

MIT license

195KB
1.5K SLoC

Rust 1.5K SLoC // 0.1% comments TypeScript 342 SLoC // 0.4% comments JavaScript 27 SLoC // 0.1% comments

Tauri Plugin Shellx

Currently this plugin only supports Tauri v2

Deploy Docs

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.

Docs

JS/TS API Documentation: https://huakunshen.github.io/tauri-plugin-shellx/

Installation

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-shellx

Usage

Install 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.

Example

An example app can be found at ./examples/tauri-app.

This example app is a simplified terminal emulator.

API

All API functions can be found in the API documentation.

Execute

const cmd = Command.create('echo', ['echo', 'Hello, World!'])
const out = await cmd.execute()
const stdout = out.stdout
// stdout === 'Hello, World!'

Spawn

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()

Extra APIs

Except for the original APIs, this plugin also provides some additional APIs:

Scripts Wrapper

These functions are simply wrappers for the execute function, 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])
  • makeBashScript
  • makePowershellScript
  • makeAppleScript
  • makePythonScript
  • makeZshScript
  • makeNodeScript
  • executeBashScript
  • executePowershellScript
  • executeAppleScript
  • executePythonScript
  • executeZshScript
  • executeNodeScript

Other Utilities

  • likelyOnWindows
  • hasCommand
  • fixPathEnv
    • If the command you run cannot be found in the PATH environment variable, you can use this function to fix it.

Dependencies

~21–56MB
~1M SLoC