Opener
This plugin allows you to open files and URLs in a specified, or the default, application. It also supports “revealing” files in the system’s file explorer.
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 |
Install the opener plugin to get started.
Use your project’s package manager to add the dependency:
npm run tauri add openeryarn run tauri add openerpnpm tauri add openerdeno task tauri add openerbun tauri add openercargo tauri add opener-
Run the following command in the
src-taurifolder to add the plugin to the project’s dependencies inCargo.toml:cargo add tauri-plugin-opener -
Modify
lib.rsto initialize the plugin:src-tauri/src/lib.rs #[cfg_attr(mobile, tauri::mobile_entry_point)]pub fn run() {tauri::Builder::default().plugin(tauri_plugin_opener::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-openeryarn add @tauri-apps/plugin-openerpnpm add @tauri-apps/plugin-openerdeno add npm:@tauri-apps/plugin-openerbun add @tauri-apps/plugin-opener
The opener plugin is available in both JavaScript and Rust.
import { openPath } from '@tauri-apps/plugin-opener';// when using `"withGlobalTauri": true`, you may use// const { openPath } = window.__TAURI__.opener;
// opens a file using the default program:await openPath('/path/to/file');// opens a file using `vlc` command on Windows:await openPath('C:/path/to/file', 'vlc');Note that app is an instance of App or AppHandle.
use tauri_plugin_opener::OpenerExt;
// opens a file using the default program:app.opener().open_path("/path/to/file", None::<&str>);// opens a file using `vlc` command on Windows:app.opener().open_path("C:/path/to/file", Some("vlc"));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.
Below are two example scope configurations. Both path and url use the glob pattern syntax to define allowed file paths and URLs.
First, an example on how to add permissions to specific paths for the openPath() function:
{ "$schema": "../gen/schemas/desktop-schema.json", "identifier": "main-capability", "description": "Capability for the main window", "windows": ["main"], "permissions": [ { "identifier": "opener:allow-open-path", "allow": [ { "path": "/path/to/file" }, { "path": "$APPDATA/file" } ] } ]}Lastly, an example on how to add permissions for the exact https://tauri.app URL and all URLs on a custom protocol (must be known to the OS) for the openUrl() function:
{ "$schema": "../gen/schemas/desktop-schema.json", "identifier": "main-capability", "description": "Capability for the main window", "windows": ["main"], "permissions": [ { "identifier": "opener:allow-open-url", "allow": [ { "url": "https://tauri.app" }, { "url": "custom:*" } ] } ]}Default Permission
This permission set allows opening mailto:, tel:, https:// and http:// urls using their default application
as well as reveal file in directories using default file explorer
This default permission set includes the following:
allow-open-urlallow-reveal-item-in-dirallow-default-urls
Permission Table
| Identifier | Description |
|---|---|
|
|
This enables opening |
|
|
Enables the open_path command without any pre-configured scope. |
|
|
Denies the open_path command without any pre-configured scope. |
|
|
Enables the open_url command without any pre-configured scope. |
|
|
Denies the open_url command without any pre-configured scope. |
|
|
Enables the reveal_item_in_dir command without any pre-configured scope. |
|
|
Denies the reveal_item_in_dir command without any pre-configured scope. |
© 2025 Tauri Contributors. CC-BY / MIT