Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/huakunshen/tauri-plugin-shellx
An unlocked modification of the original tauri-plugin-shell. Provide the option to bypass permission.
https://github.com/huakunshen/tauri-plugin-shellx
plugin shell tauri
Last synced: 28 days ago
JSON representation
An unlocked modification of the original tauri-plugin-shell. Provide the option to bypass permission.
- Host: GitHub
- URL: https://github.com/huakunshen/tauri-plugin-shellx
- Owner: HuakunShen
- Created: 2024-06-18T22:47:56.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2024-10-03T15:47:25.000Z (about 1 month ago)
- Last Synced: 2024-10-09T11:23:09.514Z (28 days ago)
- Topics: plugin, shell, tauri
- Language: Rust
- Homepage: https://huakunshen.github.io/tauri-plugin-shellx/
- Size: 845 KB
- Stars: 0
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
Awesome Lists containing this project
README
# Tauri Plugin Shellx
Currently this plugin only supports Tauri v2
[![Deploy Docs](https://github.com/HuakunShen/tauri-plugin-shellx/actions/workflows/docs.yml/badge.svg)](https://github.com/HuakunShen/tauri-plugin-shellx/actions/workflows/docs.yml)
This is a mod of the original official Tauri plugin [tauri-plugin-shell](https://github.com/tauri-apps/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).
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
- NPM Package: https://www.npmjs.com/package/tauri-plugin-shellx-api
- Rust Crate: https://crates.io/crates/tauri-plugin-shellxMake sure your npm package version and rust crate version are the same, or you may encounter compatibility issues.
```bash
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.
```rust
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](./examples/tauri-app).
This example app is a simplified terminal emulator.
![](./assets/demo.png)
## API
All API functions can be found in the [API documentation](https://huakunshen.github.io/tauri-plugin-shellx/).
### Execute
```ts
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.
```ts
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
```ts
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.