|
@@ -1,6 +1,6 @@
|
|
<img src=".github/splash.png" alt="Tauri" />
|
|
<img src=".github/splash.png" alt="Tauri" />
|
|
|
|
|
|
-[](https://github.com/tauri-apps/tauri/tree/dev)
|
|
|
|
|
|
+[](https://github.com/tauri-apps/tauri/tree/dev)
|
|
[](https://opencollective.com/tauri)
|
|
[](https://opencollective.com/tauri)
|
|
[](https://github.com/tauri-apps/tauri/actions?query=workflow%3A%22test+library%22)
|
|
[](https://github.com/tauri-apps/tauri/actions?query=workflow%3A%22test+library%22)
|
|
[](https://app.fossa.com/projects/git%2Bgithub.com%2Ftauri-apps%2Ftauri?ref=badge_shield)
|
|
[](https://app.fossa.com/projects/git%2Bgithub.com%2Ftauri-apps%2Ftauri?ref=badge_shield)
|
|
@@ -13,17 +13,36 @@
|
|
|
|
|
|
## Current Releases
|
|
## Current Releases
|
|
|
|
|
|
-| Component | Description | Version | Lin | Win | Mac |
|
|
|
|
-| ------------------------------------------------------------------------------- | ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | --- | --- | --- |
|
|
|
|
-| [**cli.rs**](https://github.com/tauri-apps/tauri/tree/dev/tooling/cli) | create, develop and build apps | [](https://crates.io/crates/tauri-cli) | ✅ | ✅ | ✅ |
|
|
|
|
-| [**cli.js**](https://github.com/tauri-apps/tauri/tree/dev/tooling/cli/node) | Node.js CLI wrapper for cli.rs | [](https://www.npmjs.com/package/@tauri-apps/cli) | ✅ | ✅ | ✅ |
|
|
|
|
-| [**api.js**](https://github.com/tauri-apps/tauri/tree/dev/tooling/api) | JS API for interaction with Rust backend | [](https://www.npmjs.com/package/@tauri-apps/api) | ✅ | ✅ | ✅ |
|
|
|
|
-| [**create-tauri-app**](https://github.com/tauri-apps/create-tauri-app) | Get started with your first Tauri app | [](https://www.npmjs.com/package/create-tauri-app) | ✅ | ✅ | ✅ |
|
|
|
|
-| [**vue-cli-plugin-tauri**](https://github.com/tauri-apps/vue-cli-plugin-tauri/) | Vue CLI plugin for Tauri | [](https://www.npmjs.com/package/vue-cli-plugin-tauri) | ✅ | ✅ | ✅ |
|
|
|
|
-| [**core**](https://github.com/tauri-apps/tauri/tree/dev/core/tauri) | runtime core | [](https://crates.io/crates/tauri) | ✅ | ✅ | ✅ |
|
|
|
|
-| [**bundler**](https://github.com/tauri-apps/tauri/tree/dev/tooling/bundler) | manufacture the final binaries | [](https://crates.io/crates/tauri-bundler) | ✅ | ✅ | ✅ |
|
|
|
|
|
|
+### Core
|
|
|
|
+
|
|
|
|
+| Component | Description | Version | Lin | Win | Mac |
|
|
|
|
+| -------------------------------------------------------------------------------------------- | ----------------------------------------- | -------------------------------------------------------------------------------------------------------- | --- | --- | --- |
|
|
|
|
+| [**tauri**](https://github.com/tauri-apps/tauri/tree/dev/core/tauri) | runtime core | [](https://crates.io/crates/tauri) | ✅ | ✅ | ✅ |
|
|
|
|
+| [**tauri-build**](https://github.com/tauri-apps/tauri/tree/dev/core/tauri-build) | applies macros at build-time | [](https://crates.io/crates/tauri-build) | ✅ | ✅ | ✅ |
|
|
|
|
+| [**tauri-codegen**](https://github.com/tauri-apps/tauri/tree/dev/core/tauri-codegen) | handles assets, parses tauri.conf.json | [](https://crates.io/crates/tauri-codegen) | ✅ | ✅ | ✅ |
|
|
|
|
+| [**tauri-macros**](https://github.com/tauri-apps/tauri/tree/dev/core/tauri-macros) | creates macros using tauri-codegen | [](https://crates.io/crates/tauri-macros) | ✅ | ✅ | ✅ |
|
|
|
|
+| [**tauri-runtime**](https://github.com/tauri-apps/tauri/tree/dev/core/tauri-runtime) | layer between Tauri and webview libraries | [](https://crates.io/crates/tauri-runtime) | ✅ | ✅ | ✅ |
|
|
|
|
+| [**tauri-runtime-wry**](https://github.com/tauri-apps/tauri/tree/dev/core/tauri-runtime-wry) | enables system-level interaction via WRY | [](https://crates.io/crates/tauri-runtime-wry) | ✅ | ✅ | ✅ |
|
|
|
|
+| [**tauri-utils**](https://github.com/tauri-apps/tauri/tree/dev/core/tauri-utils) | common code used across the tauri crates | [](https://crates.io/crates/tauri-utils) | ✅ | ✅ | ✅ |
|
|
|
|
+
|
|
|
|
+### Tooling
|
|
|
|
+
|
|
|
|
+| Component | Description | Version | Lin | Win | Mac |
|
|
|
|
+| --------------------------------------------------------------------------- | ---------------------------------------- | ------------------------------------------------------------------------------------------------------ | --- | --- | --- |
|
|
|
|
+| [**bundler**](https://github.com/tauri-apps/tauri/tree/dev/tooling/bundler) | manufacture the final binaries | [](https://crates.io/crates/tauri-bundler) | ✅ | ✅ | ✅ |
|
|
|
|
+| [**api.js**](https://github.com/tauri-apps/tauri/tree/dev/tooling/api) | JS API for interaction with Rust backend | [](https://www.npmjs.com/package/@tauri-apps/api) | ✅ | ✅ | ✅ |
|
|
|
|
+| [**cli.rs**](https://github.com/tauri-apps/tauri/tree/dev/tooling/cli) | create, develop and build apps | [](https://crates.io/crates/tauri-cli) | ✅ | ✅ | ✅ |
|
|
|
|
+| [**cli.js**](https://github.com/tauri-apps/tauri/tree/dev/tooling/cli/node) | Node.js CLI wrapper for cli.rs | [](https://www.npmjs.com/package/@tauri-apps/cli) | ✅ | ✅ | ✅ |
|
|
|
|
+
|
|
|
|
+### Utilities and Plugins
|
|
|
|
+
|
|
|
|
+| Component | Description | Version | Lin | Win | Mac |
|
|
|
|
+| ------------------------------------------------------------------------------- | ------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | --- | --- | --- |
|
|
|
|
+| [**create-tauri-app**](https://github.com/tauri-apps/create-tauri-app) | Get started with your first Tauri app | [](https://www.npmjs.com/package/create-tauri-app) | ✅ | ✅ | ✅ |
|
|
|
|
+| [**vue-cli-plugin-tauri**](https://github.com/tauri-apps/vue-cli-plugin-tauri/) | Vue CLI plugin for Tauri | [](https://www.npmjs.com/package/vue-cli-plugin-tauri) | ✅ | ✅ | ✅ |
|
|
|
|
|
|
## Introduction
|
|
## Introduction
|
|
|
|
+
|
|
Tauri is a framework for building tiny, blazingly fast binaries for all major desktop platforms. Developers can integrate any front-end framework that compiles to HTML, JS and CSS for building their user interface. The backend of the application is a rust-sourced binary with an API that the front-end can interact with.
|
|
Tauri is a framework for building tiny, blazingly fast binaries for all major desktop platforms. Developers can integrate any front-end framework that compiles to HTML, JS and CSS for building their user interface. The backend of the application is a rust-sourced binary with an API that the front-end can interact with.
|
|
|
|
|
|
The user interface in Tauri apps currently leverages [`tao`](https://docs.rs/tao) as a window handling library on macOS and Windows, and [`gtk`](https://gtk-rs.org/docs/gtk/) on Linux via the **Tauri-team** incubated and maintained [WRY](https://github.com/tauri-apps/wry), which creates a unified interface to the system webview (and other goodies like Menu and Taskbar), leveraging WebKit on macOS, WebView2 on Windows and WebKitGTK on Linux.
|
|
The user interface in Tauri apps currently leverages [`tao`](https://docs.rs/tao) as a window handling library on macOS and Windows, and [`gtk`](https://gtk-rs.org/docs/gtk/) on Linux via the **Tauri-team** incubated and maintained [WRY](https://github.com/tauri-apps/wry), which creates a unified interface to the system webview (and other goodies like Menu and Taskbar), leveraging WebKit on macOS, WebView2 on Windows and WebKitGTK on Linux.
|
|
@@ -31,16 +50,38 @@ The user interface in Tauri apps currently leverages [`tao`](https://docs.rs/tao
|
|
To learn more about the details of how all of these pieces fit together, please consult this [ARCHITECTURE.md](https://github.com/tauri-apps/tauri/blob/dev/ARCHITECTURE.md) document.
|
|
To learn more about the details of how all of these pieces fit together, please consult this [ARCHITECTURE.md](https://github.com/tauri-apps/tauri/blob/dev/ARCHITECTURE.md) document.
|
|
|
|
|
|
## Get Started
|
|
## Get Started
|
|
|
|
+
|
|
If you are interested in making a tauri app, please visit the [documentation website](https://tauri.studio). This README is directed towards those who are interested in contributing to the core library. But if you just want a quick overview about where `tauri` is at in its development, here's a quick burndown:
|
|
If you are interested in making a tauri app, please visit the [documentation website](https://tauri.studio). This README is directed towards those who are interested in contributing to the core library. But if you just want a quick overview about where `tauri` is at in its development, here's a quick burndown:
|
|
|
|
|
|
### Platforms
|
|
### Platforms
|
|
-- [x] Windows 7,8,10
|
|
|
|
-- [x] Linux
|
|
|
|
-- [x] macOS
|
|
|
|
-- [ ] iOS (in progress)
|
|
|
|
-- [ ] android (soon)
|
|
|
|
|
|
+
|
|
|
|
+Tauri currently supports development and distribution on the following platforms:
|
|
|
|
+
|
|
|
|
+| Platform | Versions |
|
|
|
|
+| :----------------------- | :-------------- |
|
|
|
|
+| Windows | 7 and above |
|
|
|
|
+| macOS | 10.15 and above |
|
|
|
|
+| Linux | See below |
|
|
|
|
+| iOS/iPadOS (coming soon) | |
|
|
|
|
+| Android (coming soon) | |
|
|
|
|
+
|
|
|
|
+**Linux Support**
|
|
|
|
+
|
|
|
|
+For **developing** Tauri apps refer to the [Getting Started guide on tauri.app](https://tauri.app/v1/guides/getting-started/prerequisites#setting-up-linux).
|
|
|
|
+
|
|
|
|
+For **running** Tauri apps we support the below configurations (these are automatically added as dependencies for .deb and are bundled for AppImage so that your users don't need to manually install them):
|
|
|
|
+
|
|
|
|
+- Debian (Ubuntu 18.04 and above or equivalent) with the following packages installed:
|
|
|
|
+ - `libwebkit2gtk-4.0-37`, `libgtk-3-0`, `libayatana-appindicator3-1`<sup>1</sup>
|
|
|
|
+- Arch with the following packages installed:
|
|
|
|
+ - `webkit2gtk`, `gtk3`, `libayatana-appindicator`<sup>1</sup>
|
|
|
|
+- Fedora (latest 2 versions) with the following packages installed:
|
|
|
|
+ - `webkit2gtk3`, `gtk3`, `libappindicator-gtk3`<sup>1</sup>
|
|
|
|
+
|
|
|
|
+<sup>1</sup> `appindicator` is only required if system trays are used
|
|
|
|
|
|
### App Bundles
|
|
### App Bundles
|
|
|
|
+
|
|
- [x] App Icons
|
|
- [x] App Icons
|
|
- [x] Build on macOS (.app, .dmg)
|
|
- [x] Build on macOS (.app, .dmg)
|
|
- [x] Build on Linux (.deb, AppImage)
|
|
- [x] Build on Linux (.deb, AppImage)
|
|
@@ -57,6 +98,7 @@ If you are interested in making a tauri app, please visit the [documentation web
|
|
- [ ] One-Time commands (coming soon)
|
|
- [ ] One-Time commands (coming soon)
|
|
|
|
|
|
### Security Features
|
|
### Security Features
|
|
|
|
+
|
|
- [x] localhost-free (:fire:)
|
|
- [x] localhost-free (:fire:)
|
|
- [x] custom protocol for secure mode
|
|
- [x] custom protocol for secure mode
|
|
- [x] Dynamic ahead of Time Compilation (dAoT) with functional tree-shaking
|
|
- [x] Dynamic ahead of Time Compilation (dAoT) with functional tree-shaking
|
|
@@ -65,6 +107,7 @@ If you are interested in making a tauri app, please visit the [documentation web
|
|
- [x] CSP Injection
|
|
- [x] CSP Injection
|
|
|
|
|
|
### Utilities
|
|
### Utilities
|
|
|
|
+
|
|
- [x] GH Action for creating binaries for all platforms
|
|
- [x] GH Action for creating binaries for all platforms
|
|
- [x] VS Code Extension
|
|
- [x] VS Code Extension
|
|
- [x] Tauri Core Plugins
|
|
- [x] Tauri Core Plugins
|
|
@@ -96,6 +139,7 @@ If you are interested in making a tauri app, please visit the [documentation web
|
|
| Sidecar Binaries | Yes | No |
|
|
| Sidecar Binaries | Yes | No |
|
|
|
|
|
|
#### Notes
|
|
#### Notes
|
|
|
|
+
|
|
1. Electron has no native auto updater on Linux, but is offered by electron-packager
|
|
1. Electron has no native auto updater on Linux, but is offered by electron-packager
|
|
|
|
|
|
## Development
|
|
## Development
|
|
@@ -103,6 +147,7 @@ If you are interested in making a tauri app, please visit the [documentation web
|
|
Tauri is a system composed of a number of moving pieces:
|
|
Tauri is a system composed of a number of moving pieces:
|
|
|
|
|
|
### Infrastructure
|
|
### Infrastructure
|
|
|
|
+
|
|
- Git for code management
|
|
- Git for code management
|
|
- GitHub for project management
|
|
- GitHub for project management
|
|
- GitHub actions for CI and CD
|
|
- GitHub actions for CI and CD
|
|
@@ -111,19 +156,23 @@ Tauri is a system composed of a number of moving pieces:
|
|
- DigitalOcean Meilisearch instance
|
|
- DigitalOcean Meilisearch instance
|
|
|
|
|
|
### Major Runtimes
|
|
### Major Runtimes
|
|
|
|
+
|
|
- Node.js for running the CLI (deno and pure rust are on the roadmap)
|
|
- Node.js for running the CLI (deno and pure rust are on the roadmap)
|
|
- Cargo for testing, running the dev service, building binaries and as the runtime harness for the webview
|
|
- Cargo for testing, running the dev service, building binaries and as the runtime harness for the webview
|
|
|
|
|
|
### Major Languages
|
|
### Major Languages
|
|
|
|
+
|
|
- Rust for the CLI
|
|
- Rust for the CLI
|
|
- ECMAScript bindings to the Rust API, written in typescript
|
|
- ECMAScript bindings to the Rust API, written in typescript
|
|
- Rust for bindings, rust side of the API, harnesses
|
|
- Rust for bindings, rust side of the API, harnesses
|
|
- Rust plugins to Tauri backend
|
|
- Rust plugins to Tauri backend
|
|
|
|
|
|
### Operating systems
|
|
### Operating systems
|
|
|
|
+
|
|
Tauri core can be developed on Mac, Linux and Windows, but you are encouraged to use the latest possible operating systems and build tools for your OS.
|
|
Tauri core can be developed on Mac, Linux and Windows, but you are encouraged to use the latest possible operating systems and build tools for your OS.
|
|
|
|
|
|
### Contributing
|
|
### Contributing
|
|
|
|
+
|
|
Before you start working on something, it's best to check if there is an existing issue first. It's also a good idea to stop by the Discord server and confirm with the team if it makes sense or if someone else is already working on it.
|
|
Before you start working on something, it's best to check if there is an existing issue first. It's also a good idea to stop by the Discord server and confirm with the team if it makes sense or if someone else is already working on it.
|
|
|
|
|
|
Please make sure to read the [Contributing Guide](./.github/CONTRIBUTING.md) before making a pull request.
|
|
Please make sure to read the [Contributing Guide](./.github/CONTRIBUTING.md) before making a pull request.
|
|
@@ -131,31 +180,38 @@ Please make sure to read the [Contributing Guide](./.github/CONTRIBUTING.md) bef
|
|
Thank you to everyone contributing to Tauri!
|
|
Thank you to everyone contributing to Tauri!
|
|
|
|
|
|
### Documentation
|
|
### Documentation
|
|
|
|
+
|
|
Documentation in a polyglot system is a tricky proposition. To this end, we prefer to use inline documentation of Rust code and at JSDoc in typescript / javascript code. We autocollect these and publish them using Docusaurus v2 and netlify. Here is the hosting repository for the documentation site: https://github.com/tauri-apps/tauri-docs
|
|
Documentation in a polyglot system is a tricky proposition. To this end, we prefer to use inline documentation of Rust code and at JSDoc in typescript / javascript code. We autocollect these and publish them using Docusaurus v2 and netlify. Here is the hosting repository for the documentation site: https://github.com/tauri-apps/tauri-docs
|
|
|
|
|
|
### Testing & Linting
|
|
### Testing & Linting
|
|
|
|
+
|
|
Test all the things! We have a number of test suites, but are always looking to improve our coverage:
|
|
Test all the things! We have a number of test suites, but are always looking to improve our coverage:
|
|
|
|
+
|
|
- Rust (`cargo test`) => sourced via inline `#[cfg(test)]` declarations
|
|
- Rust (`cargo test`) => sourced via inline `#[cfg(test)]` declarations
|
|
- TS (`jest`) => via spec files
|
|
- TS (`jest`) => via spec files
|
|
- Smoke Tests (run on merges to latest)
|
|
- Smoke Tests (run on merges to latest)
|
|
- eslint, clippy
|
|
- eslint, clippy
|
|
|
|
|
|
### CI/CD
|
|
### CI/CD
|
|
|
|
+
|
|
We recommend you read this article to understand better how we run our pipelines: https://www.jacobbolda.com/setting-up-ci-and-cd-for-tauri/
|
|
We recommend you read this article to understand better how we run our pipelines: https://www.jacobbolda.com/setting-up-ci-and-cd-for-tauri/
|
|
|
|
|
|
## Organization
|
|
## Organization
|
|
|
|
+
|
|
Tauri aims to be a sustainable collective based on principles that guide [sustainable free and open software communities](https://sfosc.org). To this end it has become a Programme within the [Commons Conservancy](https://commonsconservancy.org/), and you can contribute financially via [Open Collective](https://opencollective.com/tauri).
|
|
Tauri aims to be a sustainable collective based on principles that guide [sustainable free and open software communities](https://sfosc.org). To this end it has become a Programme within the [Commons Conservancy](https://commonsconservancy.org/), and you can contribute financially via [Open Collective](https://opencollective.com/tauri).
|
|
|
|
|
|
## Semver
|
|
## Semver
|
|
|
|
+
|
|
**tauri** is following [Semantic Versioning 2.0](https://semver.org/).
|
|
**tauri** is following [Semantic Versioning 2.0](https://semver.org/).
|
|
|
|
|
|
## Licenses
|
|
## Licenses
|
|
|
|
+
|
|
Code: (c) 2015 - 2021 - The Tauri Programme within The Commons Conservancy.
|
|
Code: (c) 2015 - 2021 - The Tauri Programme within The Commons Conservancy.
|
|
|
|
|
|
MIT or MIT/Apache 2.0 where applicable.
|
|
MIT or MIT/Apache 2.0 where applicable.
|
|
|
|
|
|
Logo: CC-BY-NC-ND
|
|
Logo: CC-BY-NC-ND
|
|
-- Original Tauri Logo Designs by [Alve Larsson](https://alve.io/), [Daniel Thompson-Yvetot](https://github.com/nothingismagick) and [Guillaume Chau](https://github.com/akryum)
|
|
|
|
|
|
|
|
|
|
+- Original Tauri Logo Designs by [Alve Larsson](https://alve.io/), [Daniel Thompson-Yvetot](https://github.com/nothingismagick) and [Guillaume Chau](https://github.com/akryum)
|
|
|
|
|
|
[](https://app.fossa.com/projects/git%2Bgithub.com%2Ftauri-apps%2Ftauri?ref=badge_large)
|
|
[](https://app.fossa.com/projects/git%2Bgithub.com%2Ftauri-apps%2Ftauri?ref=badge_large)
|