diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 7e77aab2e672..1d856b7874fa 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -22,7 +22,7 @@ Hi! We, the maintainers, are really excited that you are interested in contribut - Issues with no clear repro steps will not be triaged. If an issue labeled "need repro" receives no further input from the issue author for more than 5 days, it will be closed. -- If your issue is resolved but still open, don’t hesitate to close it. In case you found a solution by yourself, it could be helpful to explain how you fixed it. +- If your issue is resolved but still open, don't hesitate to close it. In case you found a solution by yourself, it could be helpful to explain how you fixed it. - Most importantly, we beg your patience: the team must balance your request against many other responsibilities — fixing other bugs, answering other questions, new features, new documentation, etc. The issue list is not paid support and we cannot make guarantees about how fast your issue can be resolved. diff --git a/.github/sponsors/crabnebula.svg b/.github/sponsors/crabnebula.svg new file mode 100644 index 000000000000..40e24131b51e --- /dev/null +++ b/.github/sponsors/crabnebula.svg @@ -0,0 +1,31 @@ + \ No newline at end of file diff --git a/README.md b/README.md index 18903b7b5f03..25a4c7218184 100644 --- a/README.md +++ b/README.md @@ -9,121 +9,49 @@ [](https://good-labs.github.io/greater-good-affirmation) [](https://opencollective.com/tauri) -## Current Releases - -### 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) | ✅ | ✅ | ✅ | -| [**tauri-cli**](https://github.com/tauri-apps/tauri/tree/dev/tooling/cli) | create, develop and build apps | [](https://crates.io/crates/tauri-cli) | ✅ | ✅ | ✅ | -| [**@tauri-apps/cli**](https://github.com/tauri-apps/tauri/tree/dev/tooling/cli/node) | Node.js CLI wrapper for `tauri-cli` | [](https://www.npmjs.com/package/@tauri-apps/cli) | ✅ | ✅ | ✅ | -| [**@tauri-apps/api**](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) | ✅ | ✅ | ✅ | - -### 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 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, Windows, Linux, Android and iOS. To render your application, Tauri uses [WRY](https://github.com/tauri-apps/wry), a library which provides a unified interface to the system webview, leveraging WKWebView on macOS & iOS, WebView2 on Windows, WebKitGTK on Linux and Android System WebView on Android. 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 - -If you are interested in making a tauri app, please visit the [documentation website](https://tauri.app). 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 - -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** +## Getting Started -For **developing** Tauri apps refer to the [Getting Started guide on tauri.app](https://tauri.app/v1/guides/getting-started/prerequisites#setting-up-linux). +If you are interested in making a tauri app, please visit the [documentation website](https://tauri.app). -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): +The quickest way to get started is to install the [prerequisites](https://tauri.app/v1/guides/getting-started/prerequisites) for your system and create a new project with [`create-tauri-app`](https://github.com/tauri-apps/create-tauri-app/#usage). For example with `npm`: -- Debian (Ubuntu 18.04 and above or equivalent) with the following packages installed: - - `libwebkit2gtk-4.1-0`, `libgtk-3-0`, `libayatana-appindicator3-1`1 -- Arch with the following packages installed: - - `webkit2gtk`, `gtk3`, `libayatana-appindicator`1 -- Fedora (latest 2 versions) with the following packages installed: - - `webkit2gtk3`, `gtk3`, `libappindicator-gtk3`1 -- Void with the following packages installed: - - `webkit2gtk`, `gtk+3`, `libappindicator`1 +```sh +npm create tauri-app@latest +``` -1 `appindicator` is only required if system trays are used +## Features -### Features +The list of Tauri's features includes, but is not limited to: -- [x] Desktop Bundler (.app, .dmg, .deb, AppImage, .msi) -- [x] Self Updater -- [x] App Signing -- [x] Native Notifications (toast) -- [x] App Tray -- [x] Core Plugin System -- [x] Scoped Filesystem -- [x] Sidecar +- Built-in app bundler to create app bundles in formats like `.app`, `.dmg`, `.deb`, `.AppImage` and Windows installers like `.exe` (via NSIS) and `.msi` (via WiX). +- Built-in self updater (desktop only) +- System tray icons +- Native notifications +- Localhost free (:fire:) +- GitHub action for streamlined CI +- VS Code extension -### Security Features - -- [x] localhost-free (:fire:) -- [x] custom protocol for secure mode -- [x] Dynamic ahead of Time Compilation (dAoT) with functional tree-shaking -- [x] functional Address Space Layout Randomization -- [x] OTP salting of function names and messages at runtime -- [x] CSP Injection - -### Utilities - -- [x] Rust-based CLI -- [x] GH Action for creating binaries for all platforms -- [x] VS Code Extension - -## Development - -Tauri is a system composed of a number of moving pieces: - -### Infrastructure - -- Git for code management -- GitHub for project management -- GitHub actions for CI and CD -- Discord for discussions -- Netlify-hosted documentation website -- DigitalOcean Meilisearch instance +### Platforms -### Operating systems +Tauri currently supports development and distribution on the following platforms: -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. +| Platform | Versions | +| :----------------- | :-------------------------------------------------------------------------------------------------------------- | +| Windows | 7 and above | +| macOS | 10.15 and above | +| Linux | webkit2gtk 4.0 for Tauri v1 (for example Ubuntu 18.04). webkit2gtk 4.1 for Tauri v2 (for example Ubuntu 22.04). | +| iOS/iPadOS (alpha) | 9 and above | +| Android (alpha) | 7 and above | -### 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. @@ -133,32 +61,31 @@ Thank you to everyone contributing to Tauri! ### 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 - -### Testing & Linting +Documentation in a polyglot system is a tricky proposition. To this end, we prefer to use inline documentation in the Rust & JS source code as much as possible. Check out the hosting repository for the documentation site for further information: https://github.com/tauri-apps/tauri-docs -Test all the things! We have a number of test suites, but are always looking to improve our coverage: +## Partners -- Rust (`cargo test`) => sourced via inline `#[cfg(test)]` declarations -- Typescript (`jest`) => via spec files -- Smoke Tests (run on merges to latest) -- eslint, clippy +
+
+ |
+