From ae848c1e71d545b351a373538c7e3e32e443e364 Mon Sep 17 00:00:00 2001 From: 0ri0nexe <87997348+0ri0nexe@users.noreply.github.com> Date: Sun, 3 Sep 2023 13:31:28 +0200 Subject: [PATCH] i18n(fr): Translate list.mdx, notification.mdx, prerequisites/index.mdx, upgrade-migrate/from-tauri-1.mdx (#1445) * Translated list.mdx from English to French * fixed the problematic link * removed capitalized letters * Translated notification.mdx from English to french * added the translation of prerequisites/index.mdx * added the visual strudio screenshot (in french) * fixed links * upgrade-migrate/from-tauri-1.mdx translated * trying something with links * useless commit * some little changes * fixed links * last small changes * Update src/content/docs/fr/2/guide/notification.mdx Update on capitalized letter (thanks to @lorenzolewis) Co-authored-by: Lorenzo Lewis * Update src/content/docs/fr/2/guide/notification.mdx Deleted some mistake (thanks to @lorenzolewis) Co-authored-by: Lorenzo Lewis * Update src/content/docs/fr/2/guide/notification.mdx fixed some lines problems (thanks to @lorenzolewis) Co-authored-by: Lorenzo Lewis * Update src/content/docs/fr/2/guide/notification.mdx Removed some ":" (Thanks to @lorenzolewis) Co-authored-by: Lorenzo Lewis * Update src/content/docs/fr/2/guide/upgrade-migrate/from-tauri-1.mdx Added Capitalized letters Co-authored-by: Lorenzo Lewis * Update src/content/docs/fr/2/guide/upgrade-migrate/from-tauri-1.mdx capitalizing letters again (thanks to @lorenzolewis) Co-authored-by: Lorenzo Lewis * Update src/content/docs/fr/2/guide/upgrade-migrate/from-tauri-1.mdx same Co-authored-by: Lorenzo Lewis * Update src/content/docs/fr/2/guide/upgrade-migrate/from-tauri-1.mdx capitalized letters again Co-authored-by: Lorenzo Lewis * fixed small problems * Update src/content/docs/fr/2/guide/upgrade-migrate/from-tauri-1.mdx Fixed sentence meaning (thanks to @david-crabnebula) Co-authored-by: David <142232773+david-crabnebula@users.noreply.github.com> * Update src/content/docs/fr/2/guide/upgrade-migrate/from-tauri-1.mdx Sentence fixed (thanks to @david-crabnebula) Co-authored-by: David <142232773+david-crabnebula@users.noreply.github.com> * Update src/content/docs/fr/2/guide/upgrade-migrate/from-tauri-1.mdx Simplifying a sentence (thanks to @david-crabnebula) Co-authored-by: David <142232773+david-crabnebula@users.noreply.github.com> * Update src/content/docs/fr/2/guide/upgrade-migrate/from-tauri-1.mdx Small changes (thanks to @david-crabnebula) Co-authored-by: David <142232773+david-crabnebula@users.noreply.github.com> * Update src/content/docs/fr/2/guide/upgrade-migrate/from-tauri-1.mdx typo fixes (thanks to @david-crabnebula) Co-authored-by: David <142232773+david-crabnebula@users.noreply.github.com> * Update src/content/docs/fr/2/guide/upgrade-migrate/from-tauri-1.mdx same Co-authored-by: David <142232773+david-crabnebula@users.noreply.github.com> * Update src/content/docs/fr/2/guide/upgrade-migrate/from-tauri-1.mdx again Co-authored-by: David <142232773+david-crabnebula@users.noreply.github.com> * Update src/content/docs/fr/2/guide/notification.mdx links updating (thanks to @lorenzolewis) Co-authored-by: Lorenzo Lewis * Update src/content/docs/fr/2/guide/prerequisites/index.mdx same Co-authored-by: Lorenzo Lewis * Update src/content/docs/fr/2/guide/prerequisites/index.mdx same Co-authored-by: Lorenzo Lewis * Update src/content/docs/fr/2/guide/prerequisites/index.mdx same Co-authored-by: Lorenzo Lewis * Update src/content/docs/fr/2/guide/prerequisites/index.mdx same Co-authored-by: Lorenzo Lewis * Update src/content/docs/fr/2/guide/prerequisites/index.mdx same Co-authored-by: Lorenzo Lewis * Update src/content/docs/fr/2/guide/upgrade-migrate/from-tauri-1.mdx same Co-authored-by: Lorenzo Lewis * Update src/content/docs/fr/2/guide/upgrade-migrate/from-tauri-1.mdx same Co-authored-by: Lorenzo Lewis * Update src/content/docs/fr/2/guide/upgrade-migrate/from-tauri-1.mdx Co-authored-by: Lorenzo Lewis * fixed some small mistakes * last changes (i hope) * fix links Signed-off-by: Lorenzo Lewis * Revert translating guide Signed-off-by: Lorenzo Lewis --------- Signed-off-by: Lorenzo Lewis Co-authored-by: Lorenzo Lewis Co-authored-by: David <142232773+david-crabnebula@users.noreply.github.com> --- .github/TRANSLATING.md | 1 - src/content/docs/fr/2/guide/list.mdx | 34 + src/content/docs/fr/2/guide/notification.mdx | 166 +++ .../docs/fr/2/guide/prerequisites/index.mdx | 316 +++++ .../visual-studio-build-tools-installer.png | Bin 0 -> 98931 bytes .../2/guide/upgrade-migrate/from-tauri-1.mdx | 1147 +++++++++++++++++ 6 files changed, 1663 insertions(+), 1 deletion(-) create mode 100644 src/content/docs/fr/2/guide/list.mdx create mode 100644 src/content/docs/fr/2/guide/notification.mdx create mode 100644 src/content/docs/fr/2/guide/prerequisites/index.mdx create mode 100644 src/content/docs/fr/2/guide/prerequisites/visual-studio-build-tools-installer.png create mode 100644 src/content/docs/fr/2/guide/upgrade-migrate/from-tauri-1.mdx diff --git a/.github/TRANSLATING.md b/.github/TRANSLATING.md index e5250a3c9..85fbd9f4b 100644 --- a/.github/TRANSLATING.md +++ b/.github/TRANSLATING.md @@ -46,7 +46,6 @@ Here are some guidelines to help with the translation. - [ ] Preserve the Markdown formatting. This includes headers (#, ##, etc.), lists (*, -, 1.), and inline styles like bold, italic, and code. - [ ] Ensure that links ([link text](URL)) remain functional and direct to the correct locations. -- [ ] Append the locale to any internal links (for example `/index` -> `/fr/index`). - [ ] Ensure code blocks (triple backticks ```) are unchanged in terms of their syntax and content. - [ ] Double-check tables, making sure their structure remains intact. Using the Prettier formatter is a great way to do this. diff --git a/src/content/docs/fr/2/guide/list.mdx b/src/content/docs/fr/2/guide/list.mdx new file mode 100644 index 000000000..764388b98 --- /dev/null +++ b/src/content/docs/fr/2/guide/list.mdx @@ -0,0 +1,34 @@ +--- +title: Liste des Fonctionnalités & Cas d'Utilisations +i18nReady: true +--- + +import GuideList from '@components/list/Guides.astro'; +import RecipeList from '@components/list/Recipes.astro'; +import CommunityList from '@components/list/Community.astro'; + +Tauri est conçu dans une optique d'extensibilité. Sur cette page, vous trouverez : + +- **[Fonctionnalités](#fonctionnalités)** : Les caractéristiques et fonctionnalités intégrées nativement à Tauri +- **[Cas d'utilisations](#cas-dutilisations)** : Les utilisations communes basées sur des fonctionnalités +- **[Ressources de la communauté](#ressources-de-la-communauté)** : Plus de plugins et de cas d'utilisations développés par la communauté Tauri + +{/* TODO: Search bar component that syncs/filters across this whole list */} + +## Fonctionnalités + + + +## Cas d'utilisations + + + +## Ressources de la communauté + + + +:::tip[Vous avez quelque chose d'intéressant à partager ?] + +Si vous avez créé un plugin, un guide ou un cas d'utilisation, nous aimerions l'inclure ici ! [Soumettez une demande de tirage (pull request)](https://github.com/tauri-apps/tauri-docs/pulls) pour l'ajouter à cette page. + +::: \ No newline at end of file diff --git a/src/content/docs/fr/2/guide/notification.mdx b/src/content/docs/fr/2/guide/notification.mdx new file mode 100644 index 000000000..9bf9dd120 --- /dev/null +++ b/src/content/docs/fr/2/guide/notification.mdx @@ -0,0 +1,166 @@ +--- +title: Notifications +description: Envoie une notification native à l'utilisateur. +i18nReady: true +--- + +import PluginBreadcrumb from '@components/PluginBreadcrumb.astro'; +import { Tabs, TabItem } from '@astrojs/starlight/components'; +import CommandTabs from '@components/CommandTabs.astro'; +import Stub from '@components/Stub.astro'; + + + +Envoie une notification native à votre utilisateur via le plugin de notification. + +## Installation + +Pour commencer, installez le plugin de notifications. + + + + + 1. Utilisez le gestionnaire de package (package manager) de votre projet pour ajouter la dépendance: + + + + 2. Modifiez `lib.rs` pour initialiser le plugin: + + {/* TODO: Revise once https://github.com/tauri-apps/tauri/issues/7696 is in */} + + ```rust + #[cfg_attr(mobile, tauri::mobile_entry_point)] + pub fn run() { + tauri::Builder::default() + // Initialisation du plugin + .plugin(tauri_plugin_notification::init()) + .run(tauri::generate_context!()) + .expect("error while running tauri application"); + } + ``` + + + + + 1. Executez `cargo add tauri-plugin-notification` pour ajouter le plugin aux dépendances du projet dans `Cargo.toml`. + + 2. Modifiez `lib.rs` pour initialisez le plugin: + + + ```rust + // lib.rs + #[cfg_attr(mobile, tauri::mobile_entry_point)] + pub fn run() { + tauri::Builder::default() + // Initialisation du plugin + .plugin(tauri_plugin_notification::init()) + .run(tauri::generate_context!()) + .expect("error while running tauri application"); + } + ``` + + 3. Si vous voulez utiliser les notification de JavaScript, vous devez aussi installer le package npm: + + + + + + + + +## Utilisation + + +Voici quelques exemples montrant comment utiliser le plugin de notification: + +- [Envoyer une notification aux utilisateurs](#envoyer-une-notification) +- [Ajouter une action à une notification](#actions) +- [Ajouter une pièce jointe à une notification](#attachments) +- [Envoyer une notification dans un channel spécifique](#channels) + +{/* TODO: Link to which language to use, frontend vs. backend guide when it's made */} + +Le plugin de notification est disponible aussi bien en JavaScript qu'en Rust. + + +### Envoyer une Notification + +{/* TODO: Demo component */} + +Suivez ces étapes pour envoyer une notification: + +1. Vérifier si la permission est accordée +2. Demander la permission si elle n’est pas accordée +3. Envoyer la notification + + + + +```js +import { + isPermissionGranted, + requestPermission, + sendNotification, +} from '@tauri-apps/plugin-notification'; + +// Avez-vous la permission d'envoyer une notification ? +let permissionGranted = await isPermissionGranted(); + +// Le cas échéant on la demande +if (!permissionGranted) { + const permission = await requestPermission(); + permissionGranted = permission === 'granted'; +} + +// Une fois la permission obtenue, on envoie la notification +if (permissionGranted) { + sendNotification({ title: 'Tauri', body: 'Tauri est incroyable!' }); +} +``` + + + + +{/* TODO: */} + + + + + + +### Actions + +{/* TODO: */} + + + +### Attachments + +{/* TODO: */} + + + +### Channels + +{/* TODO: */} + + + +## Sécurité à prendre en compte + +Mis à part les procédures normales de nettoyage des entrées de l'utilisateur, il n'y a actuellement aucun problème de sécurité connu. \ No newline at end of file diff --git a/src/content/docs/fr/2/guide/prerequisites/index.mdx b/src/content/docs/fr/2/guide/prerequisites/index.mdx new file mode 100644 index 000000000..7f3e16372 --- /dev/null +++ b/src/content/docs/fr/2/guide/prerequisites/index.mdx @@ -0,0 +1,316 @@ +--- +title: Prérequis +i18nReady: true +--- + +import { Tabs, TabItem, Card } from '@astrojs/starlight/components'; + +Pour commencer à construire votre projet avec Tauri, vous aurez d'abord besoin d'installer quelques dépendances: + +1. [Dépendances Systèmes](#dépendances-systèmes) +2. [Rust](#rust) +3. [Configuration pour des programmes sur mobile](#configuration-pour-mobile) (requis seulement pour le développement mobile) + +## Dépendances Systèmes + +Suivez les liens pour votre système d'exploitation: + +- [Linux](#linux) (Voir les distributions en dessous) +- [macOS Catalina (10.15) et plus](#macos) +- [Windows 7 et plus](#windows) + +### Linux + +Tauri exige un système varié de dépendances pour le développement sur Linux. Celles-ci peuvent être différentes selon votre distribution, mais nous avons inclus quelques distributions populaires ci-dessous pour vous aider durant l'installation. + +{/* Note: These are the officially supported linux distributions. */} +{/* If you wish to add another please open an issue to discuss prior to opening a PR */} + + + + +```sh +sudo apt update +sudo apt install libwebkit2gtk-4.0-dev \ + build-essential \ + curl \ + wget \ + file \ + libssl-dev \ + libgtk-3-dev \ + libayatana-appindicator3-dev \ + librsvg2-dev +``` + + + + +```sh +sudo pacman -Syu +sudo pacman -S --needed \ + webkit2gtk \ + base-devel \ + curl \ + wget \ + file \ + openssl \ + appmenu-gtk-module \ + gtk3 \ + libappindicator-gtk3 \ + librsvg \ + libvips +``` + + + + +```sh +sudo dnf check-update +sudo dnf install webkit2gtk4.0-devel \ + openssl-devel \ + curl \ + wget \ + file \ + libappindicator-gtk3-devel \ + librsvg2-devel +sudo dnf group install "C Development Tools and Libraries" +``` + + + + +```sh +sudo emerge --ask \ + net-libs/webkit-gtk:4.1 \ + dev-libs/libappindicator \ + net-misc/curl \ + net-misc/wget \ + sys-apps/file +``` + + + + +```sh +sudo zypper up +sudo zypper in webkit2gtk3-soup2-devel \ + libopenssl-devel \ + curl \ + wget \ + file \ + libappindicator3-1 \ + librsvg-devel +sudo zypper in -t pattern devel_basis +``` + + + + +TODO: Need to build out NixOS instructions + + + + +Si votre distribution n'est pas incluse ci-dessus, vous devriez jeter un œil ici: [Awesome Tauri on GitHub](https://github.com/tauri-apps/awesome-tauri#guides) pour voir si un guide a été créé. + +Suivant: [Installation de Rust](#rust) + +### macOS + +Tauri utilise une plusieurs dépendances macOS et iOS de [Xcode](https://developer.apple.com/xcode/resources/). + +Téléchargez et installez Xcode à partir des sites suivants : + +- [Mac App Store](https://apps.apple.com/gb/app/xcode/id497799835?mt=12) +- [Apple Developer website](https://developer.apple.com/xcode/resources/). + +Assurez-vous de lancer Xcode après installation pour qu'il puisse finir l'installation. + +
+Développement uniquement pour les applications sur ordinateur? +Si vous planifiez de développer des applications de bureau qui ne prennent pas en charge iOS vous pouvez installer Xcode Command Line Tools à la place: + +```sh +xcode-select --install +``` + +
+ +Suivant: [Installation de Rust](#rust) + +### Windows + +Tauri utilise les "Microsoft C++ Build Tools" ainsi que Microsoft Edge WebView2. Ils sont tous les deux requis pour le développement Windows. + +Suivez les étapes ci-dessous pour installer les dépendances requises. + +#### Microsoft C++ Build Tools + +1. Téléchargez l'installateur [Microsoft C++ Build Tools](https://visualstudio.microsoft.com/visual-cpp-build-tools/) et ouvrez-le pour commencer l'installation. +2. Pendant l'installation, cochez l'option "Développement Desktop en C++" ("Desktop development with C++" en anglais) . + +![Visual Studio C++ Build Tools installer screenshot](./visual-studio-build-tools-installer.png) + +Suivant: [Installation de WebView2](#webview2). + +#### WebView2 + +:::tip +WebView 2 est déjà installé sur Windows 10 (depuis la version 1803) et versions supérieurs de Windows. Si vous développez sur l'une de ces versions, vous pouvez passer cette étape et aller directement à [l'installation de Rust](#rust). +::: + +Tauri utilise Microsoft Edge WebView2 pour produire un rendu sur Windows. + +Installez WebView2 en visitant la [section de téléchargement de WebView2 Runtime](https://developer.microsoft.com/en-us/microsoft-edge/webview2/#download-section) +Téléchargez "Evergreen Boostrapper" and installez-le. + +Suivant: [Installation de Rust](#rust) + +## Rust + +Tauri est développé en [Rust](https://www.rust-lang.org) et l'exige pour fonctionner. Installez Rust en utilisant une des méthodes suivantes. Vous pouvez voir plus de méthodes d'installation sur https://www.rust-lang.org/tools/install. + + + + +Installer via [`rustup`](https://github.com/rust-lang/rustup) en utilisant la commande: + +```sh +curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh +``` + +:::tip[Astuce Sécurité] +Nous avons vérifié ce script bash, et il fait ce qu'il est supposé faire. Cependant, avant d'éxécuter aveuglément un script curl-bash, il est toujours avisé d'y jeter un coup d'œil en premier lieu. + +Voici le fichier contenant le script: [rustup.sh](https://sh.rustup.rs/) +::: + + + + + Visitez https://www.rust-lang.org/tools/install pour installer `rustup`. + + + + +Assurez-vous de relancer votre terminal (et parfois votre système) pour que les modifications prennent effet. + +Suivant: [Configuration pour Mobile](#configuration-pour-mobile) si vous voulez construire une application pour Android et iOS. Dans le cas contraire, [Create a Project](/2/guide/create/). + +## Configuration pour Mobile + +Si vous vouler que votre application soit utilisable sur Android et iOS, il faut ajouter quelques dépendances que vous devez installer: + +- [Android](#android) +- [iOS](#ios) + +### Android + +1. Téléchargez et installez [Android Studio à partir du site Android Developers](https://developer.android.com/studio) +2. Configurez la variable d'environement `JAVA_HOME`: + +{/* TODO: Can this be done in the 4th step? */} + + + + +```sh +export JAVA_HOME=/opt/android-studio/jbr +``` + + + + +```sh +export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home" +``` + + + + +```ps +[System.Environment]::SetEnvironmentVariable("JAVA_HOME", "C:\Program Files\Android\Android Studio\jbr", "User") +``` + + + +3. Utilisez le SDK Manager dans Android Studio pour installer: + +- Android SDK Platform +- Android SDK Platform-Tools +- NDK (Side by side) +- Android SDK Build-Tools +- Android SDK Command-line Tools + +4. Configurez les variables d'environemment `ANDROID_HOME` et `NDK_HOME` + +{/* TODO: Does the version number change below? */} + + + + +```sh +export ANDROID_HOME="$HOME/Library/Android/sdk" +export NDK_HOME="$ANDROID_HOME/ndk/25.0.8775105" +``` + + + + +{/* TODO: Do we need a note about this version? */} + +```ps +[System.Environment]::SetEnvironmentVariable("ANDROID_HOME", "$env:LocalAppData\Android\Sdk", "User") +[System.Environment]::SetEnvironmentVariable("NDK_HOME", "$env:LocalAppData\Android\Sdk\ndk\25.0.8775105", "User") +``` + + + + + +5. Ajoutez les "targets" Android avec `rustup`: + + + + +```sh +rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android +``` + + + + + ```ps + rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android + ``` + + + + +Suivant: [Installation pour Android](#ios) ou [Create a project](/2/guide/create/). + +### iOS + +:::caution[macOS Only] +Le développement iOS exige Xcode et est seulement disponible sur macOS +::: + +Ajoutez les "targets" iOS avec `rustup` dans le terminal: + +```sh +rustup target add aarch64-apple-ios x86_64-apple-ios aarch64-apple-ios-sim +``` + +Assurez-vous d'avoir installé Xcode et non Xcode Command Line Tools dans la section [Dépendances systèmes macOS](#macos). + +Suivant: [Create a project](/2/guide/create/). + +## Problèmes + +Si vous rencontrez un problème durant l'installation, assurez-vous de consulter le [guide de résolution de problèmes](/2/guide/troubleshoot/) ou rejoignez le [Discord de Tauri](https://discord.com/invite/tauri) + + + +Maintenant que vous avez installé tous les prérequis, vous êtes fin prêt pour [créer votre premier projet Tauri](/2/guide/create/) ! + + diff --git a/src/content/docs/fr/2/guide/prerequisites/visual-studio-build-tools-installer.png b/src/content/docs/fr/2/guide/prerequisites/visual-studio-build-tools-installer.png new file mode 100644 index 0000000000000000000000000000000000000000..3c3908b7a61d80b8ffcfecad73dc552749bb6556 GIT binary patch literal 98931 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 Kp;GSAtN#Z95ri-R literal 0 HcmV?d00001 diff --git a/src/content/docs/fr/2/guide/upgrade-migrate/from-tauri-1.mdx b/src/content/docs/fr/2/guide/upgrade-migrate/from-tauri-1.mdx new file mode 100644 index 000000000..ed0c48e46 --- /dev/null +++ b/src/content/docs/fr/2/guide/upgrade-migrate/from-tauri-1.mdx @@ -0,0 +1,1147 @@ +--- +title: Mise à Niveau Depuis Tauri 1.0 + +i18nReady: true +--- + +import { Tabs, TabItem } from '@astrojs/starlight/components'; +import CommandTabs from '@components/CommandTabs.astro'; + +Ce guide vous explique comment mettre à niveau votre application basée sur Tauri 1.0 vers Tauri 2.0. + +## Migration Automatisée + +Tauri v2 contient la commande `migrate` qui simplifie votre migration: + + + +{/* TODO: 2.0 */} + +Apprenez-en plus à-propos de la commande `migrate` dans l'[interface de référence des commandes](/2/reference/cli#migrate) + +Learn more about the `migrate` command in the [Command Line Interface reference](/2/reference/cli#migrate) + +## Sommaire des Changements + +Voici ci-dessous un sommaire des changement entre Tauri 1.0 et Tauri 2.0: + +### Configuration Tauri + +- `tauri > allowlist` retiré. +- `tauri > allowlist > protocol > assetScope` déplacé vers `tauri > security > assetProtocol > scope`. +- `tauri > cli` déplacé vers `plugins > cli`. +- `tauri > updater` déplacé vers `tauri > bundle > updater`. +- `tauri > updater > dialog` retiré. +- `tauri > updater > endpoints` déplacé vers `plugins > updater`. +- `tauri > systemTray` renomé en `tauri > trayIcon`. + +[Référence de l'API de configuration de Tauri 2.0](/2/reference/config) + +### Nouvelles Fonctionnalités de Cargo + +- linux-protocol-body: Permet les protocols de requêtes "body parsing", autorisant l'IPC à l'utiliser. Nécéssite webkit2gtk 2.40. + +### Fonctionnalités Cargo Retirées + +- reqwest-client: reqwest est maintenant le seul client supporté. +- reqwest-native-tls-vendored: utilisez `native-tls-vendored` à la place. +- process-command-api: utilisez le plugin `shell` à la place (voir les instructions dans la section suivante). +- shell-open-api: utilisez le plugin `shell` à la place (voir les instructions dans la section suivante). +- windows7-compat: déplacé vers le plugin `notification`. +- updater: Updater est maintenant un plugin. +- linux-protocol-headers: est maintenant activé par défaut car la version minimal de webkit2gtk a été augmentée. +- system-tray: renomé en `tray-icon`. + +### Changement de Crate Rust + +- `api` module enlevé. Chaque module d'API peut être trouvé dans un plugin Tauri. +- `api::dialog` module enlevé. Utilisez `tauri-plugin-dialog` à la place. [Migration](#migrer-vers-un-dialog-plugin) +- `api::file` module enlevé. Utilisez Rust's [`std::fs`](https://doc.rust-lang.org/std/fs/) à la place. +- `api::http` module enlevé. Utilisez `tauri-plugin-http` à la place. [Migration](#migrer-vers-un-plugin-http) +- `api::ip` module réécrit et déplacé vers `tauri::ipc`. Jetez un œil aux nouvelles APIs, particulièrement `tauri::ipc::Channel`. +- fonctions du module `api::path` et `tauri::PathResolved` déplacées vers `tauri::Manager::path`. [Migration](#migrer-de-path-vers-tauri-manager) +- `api::process::Command`, `tauri::api::shell` et `tauri::Manager::shell_scope` APIs enlevées. Utilisez `tauri-plugin-shell` à la place. [Migration](#migrer-vers-un-shell-plugin) +- `api::process::current_binary` et `tauri::api::process::restart` déplacés vers `tauri::process`. +- `api::version` module a été retiré. Utilisez la [crate semver](https://docs.rs/semver/latest/semver/) à la place. +- `App::clipboard_manager` et `AppHandle::clipboard_manager` enlevés. Utilisez `tauri-plugin-clipboard` à la place. [Migration](#migrer-vers-un-clipboard-plugin) +- `App::get_cli_matches` enlevé. Utilisez `tauri-plugin-cli` à la place. [Migration](#migrer-vers-un-cli-plugin) +- `App::global_shortcut_manager` et `AppHandle::global_shortcut_manager` enlevés. Utilisez `tauri-plugin-global-shortcut` à la place. [Migration](#migrer-vers-un-global-shortcut-plugin) +- `Manager::fs_scope` enlevé. Le "scope" du fichier système est accessible via `tauri_plugin_fs::FsExt`. +- `Plugin::PluginApi` reçoit maintenant une configuration de plugin en tant que deuxième argument. +- `Plugin::setup_with_config` enlevé. Utilisez `tauri::Plugin::PluginApi` mis à jour à la place. +- `scope::ipc::RemoteDomainAccessScope::enable_tauri_api` et `scope::ipc::RemoteDomainAccessScope::enables_tauri_api` enlevés. Activer chaque plugin "core" individuellement via `scope::ipc::RemoteDomainAccessScope::add_plugin` à la place. +- `updater` module enlevé. Utilisez `tauri-plugin-updater` à la place. [Migration](#migrer-vers-un-updater-plugin) +- `Menu`, `MenuEvent`, `CustomMenuItem`, `Submenu`, `WindowMenuEvent`, `MenuItem` et `Builder::on_menu_event` APIs enlevés. [Migration](#migrer-vers-un-menu) +- `SystemTray`, `SystemTrayHandle`, `SystemTrayMenu`, `SystemTrayMenuItemHandle`, `SystemTraySubmenu`, `MenuEntry` et `SystemTrayMenuItem` APIs enlevées. [Migration](#migrer-vers-un-tray-icon-module) + +### Changements de l'API JavaScript + +Le package `@tauri-apps/api` ne fournis plus de modules "non-core". Seul les modules `tauri`, `path` et `event` sont exportés. Tous les autres ont été déplacés vers des plugins. + +- `@tauri-apps/api/app` module enlevé. Utilisez `@tauri-apps/plugin-app` à la place. [Migration](#migrer-votre-app-plugin) +- `@tauri-apps/api/cli` module enlevé. Utilisez `@tauri-apps/plugin-cli` à la place. [Migration](#migrer-vers-un-cli-plugin) +- `@tauri-apps/api/clipboard` module enlevé. Utilisez `@tauri-apps/plugin-clipboard` à la place. [Migration](#migrer-vers-un-clipboard-plugin) +- `@tauri-apps/api/dialog` module enlevé. Utilisez `@tauri-apps/plugin-dialog` à la place. [Migration](#migrer-vers-un-dialog-plugin) +- `@tauri-apps/api/fs` module enlevé. Utilisez `@tauri-apps/plugin-fs` à la place. [Migration](#migrer-vers-un-file-system-plugin) +- `@tauri-apps/api/global-shortcut` module enlevé. Utilisez `@tauri-apps/plugin-global-shortcut` à la place. [Migration](#migrer-vers-un-global-shortcut-plugin) +- `@tauri-apps/api/http` module enlevé. Utilisez `@tauri-apps/plugin-http` à la place. [Migration](#migrer-vers-un-plugin-http) +- `@tauri-apps/api/os` module enlevé. Utilisez `@tauri-apps/plugin-os` à la place. [Migration](#migrer-vers-un-os-plugin) +- `@tauri-apps/api/notification` module enlevé. Utilisez `@tauri-apps/plugin-notification` à la place. [Migration](#migrer-vers-un-notification-plugin) +- `@tauri-apps/api/process` module enlevé. Utilisez `@tauri-apps/plugin-process` à la place. [Migration](#migrer-vers-un-process-plugin) +- `@tauri-apps/api/shell` module enlevé. Utilisez `@tauri-apps/plugin-shell` à la place. [Migration](#migrer-vers-un-shell-plugin) +- `@tauri-apps/api/updater` module enlevé. Utilisez `@tauri-apps/plugin-updater` à la place [Migration](#migrer-vers-un-updater-plugin) +- `@tauri-apps/api/window` module enlevé. Utilisez `@tauri-apps/plugin-window` à la place [Migration](#migrer-vers-un-window-plugin) + +## Etapes de Migration Détaillées + +Les scénarios communs que vous pouvez rencontrer lors de votre migration de Tauri 1.0 vers Tauri 2.0. + +### Migrer votre "App Plugin" + +Les APIs JavaScript `@tauri-apps/api/app` ont été enlevées. Utilisez le plugin `@tauri-apps/plugin-app` à la place: + +1. Ajoutez vos dépendances Cargo: + +```toml +# Cargo.toml +[dependencies] +tauri-plugin-app = "2" +``` + +2. Utilisez-les dans un projet JavaScript ou Rust: + + + + +```rust +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_app::init()) +} +``` + +```json +// package.json +{ + "dependencies": { + "@tauri-apps/plugin-app": "^2.0.0" + } +} +``` + +```js +import { show, hide } from '@tauri-apps/plugin-app'; +await hide(); +await show(); +``` + + + + +```rust +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_app::init()) + .setup(|app| { + #[cfg(target_os = "macos")] + { + app.hide()?; + app.show()?; + } + Ok(()) + }) +} +``` + + + + +### Migrer vers un "CLI Plugin" + +Les APIs Rust `App::get_cli_matches` et JavaScript `@tauri-apps/api/cli` APIs ont été retirées. Utilisez le plugin `@tauri-apps/plugin-cli` à la place: + +1. Ajoutez vos dépendances Cargo: + +```toml +# Cargo.toml +[dependencies] +tauri-plugin-cli = "2" +``` + +2. Utilisez-les dans un projet JavaScript ou Rust: + + + + +```rust +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_cli::init()) +} +``` + +```json +// package.json +{ + "dependencies": { + "@tauri-apps/plugin-cli": "^2.0.0" + } +} +``` + +```js +import { getMatches } from '@tauri-apps/plugin-cli'; +const matches = await getMatches(); +``` + + + + +```rust +fn main() { + use tauri_plugin_cli::CliExt; + tauri::Builder::default() + .plugin(tauri_plugin_cli::init()) + .setup(|app| { + let cli_matches = app.cli().matches()?; + Ok(()) + }) +} +``` + + + + +### Migrer vers un "Clipboard Plugin" + +Les APIs Rust `App::clipboard_manager` et `AppHandle::clipboard_manager` ainsi que l'API JavaScript `@tauri-apps/api/clipboard` ont été retirées. Utilisez le plugin `@tauri-apps/plugin-clipboard-manager` à la place: + +```toml +[dependencies] +tauri-plugin-clipboard-manager = "2" +``` + + + + +```rust +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_clipboard_manager::init()) +} +``` + +```json +// package.json +{ + "dependencies": { + "@tauri-apps/plugin-clipboard-manager": "^2.0.0" + } +} +``` + +```js +import { writeText, readText } from '@tauri-apps/plugin-clipboard-manager'; +await writeText('Tauri is awesome!'); +assert(await readText(), 'Tauri is awesome!'); +``` + + + + +```rust +use tauri_plugin_clipboard::{ClipboardExt, ClipKind}; +tauri::Builder::default() + .plugin(tauri_plugin_clipboard::init()) + .setup(|app| { + app.clipboard().write(ClipKind::PlainText { + label: None, + text: "Tauri is awesome!".into(), + })?; + Ok(()) + }) +``` + + + + +### Migrer vers un "Dialog Plugin" + +les APIs Rust `tauri::api::dialog` et JavaScript `@tauri-apps/api/dialog` ont été retirées. Utilisez le plugin `@tauri-apps/plugin-dialog` à la place: + +1. Ajoutez vos dépendances Cargo: + +```toml +# Cargo.toml +[dependencies] +tauri-plugin-dialog = "2" +``` + +2. Utilisez-les dans un projet JavaScript ou Rust: + + + + +```rust +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_dialog::init()) +} +``` + +```json +// package.json +{ + "dependencies": { + "@tauri-apps/plugin-dialog": "^2.0.0" + } +} +``` + +```js +import { save } from '@tauri-apps/plugin-dialog'; +const filePath = await save({ + filters: [ + { + name: 'Image', + extensions: ['png', 'jpeg'], + }, + ], +}); +``` + + + + +```rust +use tauri_plugin_dialog::DialogExt; +tauri::Builder::default() + .plugin(tauri_plugin_dialog::init()) + .setup(|app| { + app.dialog().file().pick_file(|file_path| { + // do something with the optional file path here + // the file path is `None` if the user closed the dialog + }); + + app.dialog().message("Tauri is Awesome!").show(); + Ok(()) + }) +``` + + + + +### Migrer vers un "File System Plugin" + +Les APIs Rust `App::get_cli_matches` et JavaScript `@tauri-apps/api/fs` ont été retirées. Utilisez le plugin [`std::fs`](https://doc.rust-lang.org/std/fs/) for Rust et `@tauri-apps/plugin-fs` for JavaScript à la place: + +1. Ajoutez vos dépendances Cargo: + +```toml +# Cargo.toml +[dependencies] +tauri-plugin-fs = "2" +``` + +2. Utilisez-les dans un projet JavaScript ou Rust: + + + + +```rust +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_fs::init()) +} +``` + +```json +// package.json +{ + "dependencies": { + "@tauri-apps/plugin-fs": "^2.0.0" + } +} +``` + +```js +import { createDir, BaseDirectory } from '@tauri-apps/plugin-fs'; +await createDir('db', { dir: BaseDirectory.AppLocalData }); +``` + + + + +Utilisez les fonctions Rust [`std::fs`](https://doc.rust-lang.org/std/fs/). + + + + +### Migrer vers un "Global Shortcut Plugin" + +Les APIs Rust `App::global_shortcut_manager` et `AppHandle::global_shortcut_manager` ainsi que l'API JavaScript `@tauri-apps/api/global-shortcut` ont été retirées. Utilisez le plugin `@tauri-apps/plugin-global-shortcut` à la place: + +1. Ajoutez vos dépendances Cargo: + +```toml +# Cargo.toml +[dependencies] +tauri-plugin-global-shortcut = "2" +``` + +2. Utilisez-les dans un projet JavaScript ou Rust: + + + + +```rust +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_global_shortcut::init()) +} +``` + +```json +// package.json +{ + "dependencies": { + "@tauri-apps/plugin-global-shortcut": "^2.0.0" + } +} +``` + +```js +import { register } from '@tauri-apps/plugin-global-shortcut'; +await register('CommandOrControl+Shift+C', () => { + console.log('Shortcut triggered'); +}); +``` + + + + +```rust +use tauri_plugin_global_shortcut::GlobalShortcutExt; + +tauri::Builder::default() + .plugin(tauri_plugin_shortcut::init()) + .setup(|app| { + app.global_shortcut().register("CmdOrCtrl+Y")?; + Ok(()) + }) +``` + + + + +### Migrer vers un plugin HTTP + +Les APIs Rust `tauri::api::http` et JavaScript `@tauri-apps/api/http` ont été retirées. Utilisez le plugin `@tauri-apps/plugin-http` à la place: + +1. Ajoutez vos dépendances Cargo: + +```toml +# Cargo.toml +[dependencies] +tauri-plugin-http = "2" +``` + +2. Utilisez-les dans un projet JavaScript ou Rust: + + + + +```rust +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_http::init()) +} +``` + +```json +// package.json +{ + "dependencies": { + "@tauri-apps/plugin-http": "^2.0.0" + } +} +``` + +```js +import { fetch } from '@tauri-apps/plugin-http'; +const response = await fetch( + 'https://raw.githubusercontent.com/tauri-apps/tauri/dev/package.json' +); +``` + + + + +```rust +use tauri_plugin_dialog::reqwest; + +tauri::Builder::default() + .plugin(tauri_plugin_http::init()) + .setup(|app| { + let response_data = tauri::async_runtime::block_on(async { + let response = reqwest::get( + "https://raw.githubusercontent.com/tauri-apps/tauri/dev/package.json", + ) + .await + .unwrap(); + response.text().await + })?; + Ok(()) + }) +``` + +Le plugin HTTP "re-exports" (expose) [reqwest](https://docs.rs/reqwest/latest/reqwest/) pour que vous puissiez avoir accès à la documentation pour plus d'informations. + + + + +### Migrer vers un "Notification Plugin" + +Les APIs Rust `tauri::api::notification` et JavaScript `@tauri-apps/api/notification` ont été retirées. Utilisez le plugin `@tauri-apps/plugin-notification` à la place: + +1. Ajoutez vos dépendances Cargo: + +```toml +# Cargo.toml +[dependencies] +tauri-plugin-notification = "2" +``` + +2. Utilisez-les dans un projet JavaScript ou Rust: + + + + +```rust +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_notification::init()) +} +``` + +```json +// package.json +{ + "dependencies": { + "@tauri-apps/plugin-notification": "^2.0.0" + } +} +``` + +```js +import { sendNotification } from '@tauri-apps/plugin-notification'; +sendNotification('Tauri is awesome!'); +``` + + + + +```rust +use tauri_plugin_notification::{NotificationExt, PermissionState}; + +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_notification::init()) + .setup(|app| { + if app.notification().permission_state()? == PermissionState::Unknown { + app.notification().request_permission()?; + } + if app.notification().permission_state()? == PermissionState::Granted { + app.notification() + .builder() + .body("Tauri is awesome!") + .show()?; + } + Ok(()) + }) +} +``` + + + + +### Migrer vers un "Menu Module" + +Les APIs Rust `Menu` ont été déplacées vers le module `tauri::menu` et remaniée pour utiliser la [crate muda](https://github.com/tauri-apps/muda). + +L'API JavaScript `@tauri-apps/api/window` `onMenuClicked()` va être migrée dans une prochaine version. + +#### Utilisez `tauri::menu::MenuBuilder` + +Utilisez `tauri::menu::MenuBuilder` à la place de `tauri::Menu`. Notez que son constructeur prend en argument une instance de "Manager" (parmis `App`, `AppHandle` ou `Window`): + +```rust +use tauri::menu::MenuBuilder; + +tauri::Builder::default() + .setup(|app| { + let menu = MenuBuilder::new(app) + .copy() + .paste() + .separator() + .undo() + .redo() + .text("open-url", "Open URL") + .check("toggle", "Toggle") + .icon("show-app", "Show App", app.default_window_icon().cloned().unwrap()) + .build()?; + Ok(()) + }) +``` + +#### Utilisez `tauri::menu::PredefinedMenuItem` + +Utilisez `tauri::menu::PredefinedMenuItem` à la place de `tauri::MenuItem`: + +```rust +use tauri::menu::{MenuBuilder, PredefinedMenuItem}; + +tauri::Builder::default() + .setup(|app| { + let menu = MenuBuilder::new(app).item(&PredefinedMenuItem::copy(app)).build()?; + Ok(()) + }) +``` + +:::tip +Le constructeur de menu possède des méthodes dédiées pour ajouter chaque "item" de menu prédéfini pour que vous puissiez appeler `.copy()` à la place de `.item(&PredefinedMenuItem::copy(app, None))`. +::: + +#### Utilisez `tauri::menu::MenuItemBuilder` + +Utilisez `tauri::menu::MenuItemBuilder` à la place de `tauri::CustomMenuItem`: + +```rust +use tauri::menu::MenuItemBuilder; + +tauri::Builder::default() + .setup(|app| { + let toggle = MenuItemBuilder::new("Toggle").accelerator("Ctrl+Shift+T").build(app); + Ok(()) + }) +``` + +#### Utilisez `tauri::menu::SubmenuBuilder` + +Utilisez `tauri::menu::SubmenuBuilder` à la place de `tauri::Submenu`: + +```rust +use tauri::menu::{MenuBuilder, SubmenuBuilder}; + +tauri::Builder::default() + .setup(|app| { + let submenu = SubmenuBuilder::new(app, "Sub") + .text("Tauri") + .separator() + .check("Is Awesome") + .build()?; + let menu = MenuBuilder::new(app).item(&submenu).build()?; + Ok(()) + }) +``` + +`tauri::Builder::menu` prend maintenant une "closure" car le menu a besoin d'une instance de "Manager" pour être construit. Voir [la documentation](https://docs.rs/tauri/2.0.0-alpha/tauri/struct.Builder.html#method.menu) pour plus d'information. + +#### Evenement du Menu + +L'API Rust `tauri::Builder::on_menu_event` a été retirée. Utilisez `tauri::App::on_menu_event` ou `tauri::AppHandle::on_menu_event` à la place: + +```rust +use tauri::menu::{CheckMenuItemBuilder, MenuBuilder, MenuItemBuilder}; + +tauri::Builder::default() + .setup(|app| { + let toggle = MenuItemBuilder::with_id("toggle", "Toggle").build(app); + let check = CheckMenuItemBuilder::new("Mark").build(app); + let menu = MenuBuilder::new(app).items(&[&toggle, &check]).build()?; + + app.set_menu(menu)?; + + app.on_menu_event(move |app, event| { + if event.id() == check.id() { + println!("`check` triggered, do something! is checked? {}", check.is_checked().unwrap()); + } else if event.id() == "toggle" { + println!("toggle triggered!"); + } + }); + Ok(()) + }) +``` + +Notez qu'il y a deux manières de vérifier qu'un "item" de menu est sélectionné: on peut "move" (la fonctionnalités rust des closure) l'"item" vers un gestionnaire d'événement (event handler) sous forme de closure et comparer les IDs, ou définir une ID personnalisée via le constructeur `with_id` et utiliser cette ID (chaine de caractère) pour la comparer. + +:::tip +Les "items" de menu peuvent être partagés entre les menus, et l'événement de menu est lié à un "item" de menu plutôt qu'à un menu ou une "window". +Si vous ne voulez pas que tous les "listeners" soient déclenchés (triggered) lorsqu'un "item" de menu est sélectionné, ne partagez pas les "items" de menu et utilisez des instances dédiés à la place, que vous pouvez "move" dans une closure passée à `tauri::Window/WindowBuilder::on_menu_event` +::: + +### Migrer vers un "OS Plugin" + +Les APIs Rust `tauri::api::os` et JavaScript `@tauri-apps/api/os` ont été retirées. Utilisez le plugin `@tauri-apps/plugin-os` à la place: + +1. Ajoutez vos dépendances Cargo: + +```toml +# Cargo.toml +[dependencies] +tauri-plugin-os = "2" +``` + +2. Utilisez-les dans un projet JavaScript ou Rust: + + + + +```rust +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_os::init()) +} +``` + +```json +// package.json +{ + "dependencies": { + "@tauri-apps/plugin-os": "^2.0.0" + } +} +``` + +```js +import { arch } from '@tauri-apps/plugin-os'; +const architecture = await arch(); +``` + + + + +```rust +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_os::init()) + .setup(|app| { + let os_arch = tauri_plugin_os::arch(); + Ok(()) + }) +} +``` + + + + +### Migrer vers un "Process Plugin" + +Les APIs Rust `tauri::api::process` et JavaScript `@tauri-apps/api/process` ont été retirées. Utilisez le plugin `@tauri-apps/plugin-process` à la place: + +1. Ajoutez vos dépendances Cargo: + +```toml +# Cargo.toml +[dependencies] +tauri-plugin-process = "2" +``` + +2. Utilisez-les dans un projet JavaScript ou Rust: + + + + +```rust +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_process::init()) +} +``` + +```json +// package.json +{ + "dependencies": { + "@tauri-apps/plugin-process": "^2.0.0" + } +} +``` + +```js +import { exit, relaunch } from '@tauri-apps/plugin-process'; +await exit(0); +await relaunch(); +``` + + + + +```rust +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_process::init()) + .setup(|app| { + // exit the app with a status code + app.handle().exit(1); + // restart the app + app.handle().restart(); + Ok(()) + }) +} +``` + + + + +### Migrer vers un "Shell Plugin" + +Les APIs Rust `tauri::api::shell` et JavaScript `@tauri-apps/api/shell` ont été retirées. Utilisez le plugin `@tauri-apps/plugin-shell` à la place: + +1. Ajoutez vos dépendances Cargo: + +```toml +# Cargo.toml +[dependencies] +tauri-plugin-shell = "2" +``` + +2. Utilisez-les dans un projet JavaScript ou Rust: + + + + +```rust +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_shell::init()) +} +``` + +```json +// package.json +{ + "dependencies": { + "@tauri-apps/plugin-shell": "^2.0.0" + } +} +``` + +```js +import { Command, open } from '@tauri-apps/plugin-shell'; +const output = await Command.create('echo', 'message').execute(); + +await open('https://github.com/tauri-apps/tauri'); +``` + + + + +- Ouvrez un URL + +```rust +use tauri_plugin_shell::ShellExt; + +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_shell::init()) + .setup(|app| { + app.shell().open("https://github.com/tauri-apps/tauri", None)?; + Ok(()) + }) +} +``` + +- Créez un processus subordonné et récupérez le code de status + +```rust +use tauri_plugin_shell::ShellExt; + +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_shell::init()) + .setup(|app| { + let status = tauri::async_runtime::block_on(async move { app.shell().command("which").args(["ls"]).status().await.unwrap() }); + println!("`which` finished with status: {:?}", status.code()); + Ok(()) + }) +} +``` + +- Créez un processus subordonné et capturez sa sortie + +```rust +use tauri_plugin_shell::ShellExt; + +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_shell::init()) + .setup(|app| { + let output = tauri::async_runtime::block_on(async move { app.shell().command("echo").args(["TAURI"]).output().await.unwrap() }); + assert!(output.status.success()); + assert_eq!(String::from_utf8(output.stdout).unwrap(), "TAURI"); + Ok(()) + }) +} +``` + +- Créez un processus subordonné et lisez ses évenements read its events de manière asynchrone: + +```rust +use tauri_plugin_shell::{ShellExt, process::CommandEvent}; + +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_shell::init()) + .setup(|app| { + let handle = app.handle().clone(); + tauri::async_runtime::spawn(async move { + let (mut rx, mut child) = handle.shell().command("cargo") + .args(["tauri", "dev"]) + .spawn() + .expect("Failed to spawn cargo"); + + let mut i = 0; + while let Some(event) = rx.recv().await { + if let CommandEvent::Stdout(line) = event { + println!("got: {}", String::from_utf8(line).unwrap()); + i += 1; + if i == 4 { + child.write("message from Rust\n".as_bytes()).unwrap(); + i = 0; + } + } + } + }); + Ok(()) + }) +} +``` + + + + +### Migrer vers un "Tray Icon Module" + +Les APIs Rust `SystemTray` ont été renommés en `TrayIcon` par soucis de cohérence. Les nouvelles APIs peuvent être trouvées dans le module Rust `tray`. + +#### Utilisez `tauri::tray::TrayIconBuilder` + +Utilisez `tauri::tray::TrayIconBuilder` à la place de `tauri::SystemTray`: + +```rust +let tray = tauri::tray::TrayIconBuilder::with_id("my-tray").build(app)?; +``` + +Voir [TrayIconBuilder](https://docs.rs/tauri/2.0.0-alpha/tauri/tray/struct.TrayIconBuilder.html) pour plus d'informations. + +#### Migrer vers un Menu + +Utilisez `tauri::menu::Menu` à la place de `tauri::SystemTrayMenu`, `tauri::menu::Submenu` à la place de `tauri::SystemTraySubmenu` et `tauri::menu::PredefinedMenuItem` à la place de `tauri::SystemTrayMenuItem`. [Migration](#migrer-vers-un-menu) + +#### Les évenements de "Tray" + +`tauri::SystemTray::on_event` a été séparé dans `tauri::tray::TrayIconBuilder::on_menu_event` et `tauri::tray::TrayIconBuilder::on_tray_event`: + +```rust +use tauri::{ + menu::{MenuBuilder, MenuItemBuilder}, + tray::{ClickType, TrayIconBuilder}, +}; + +tauri::Builder::default() + .setup(|app| { + let toggle = MenuItemBuilder::with_id("toggle", "Toggle").build(app); + let menu = MenuBuilder::new(app).items(&[&toggle]).build()?; + let tray = TrayIconBuilder::new() + .menu(&menu) + .on_menu_event(move |app, event| match event.id().as_ref() { + "toggle" => { + println!("toggle clicked"); + } + _ => (), + }) + .on_tray_event(|tray, event| { + if event.click_type == ClickType::Left { + let app = tray.app_handle(); + if let Some(window) = app.get_window("main") { + let _ = window.show(); + let _ = window.set_focus(); + } + } + }) + .build(app)?; + + Ok(()) + }) +``` + +### Migrer vers un "Updater Plugin" + +Les APIs Rust `tauri::updater` et JavaScript `@tauri-apps/api-updater` ont été retirées. Pour définir une cible à mise à jour personnalisée, utilisez `@tauri-apps/plugin-updater`: + +1. Ajoutez vos dépendances Cargo: + +```toml +[dependencies] +tauri-plugin-updater = "2" +``` + +2. Utilisez-les dans un projet JavaScript ou Rust: + + + + +```rust +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_updater::Builder::new().build()) +} +``` + +```json +// package.json +{ + "dependencies": { + "@tauri-apps/plugin-updater": "^2.0.0" + } +} +``` + +```js +import { check } from '@tauri-apps/plugin-updater'; +import { relaunch } from '@tauri-apps/plugin-process'; + +const update = await check(); +if (update.response.available) { + console.log( + `Update to ${update.response.latestVersion} available! Date: ${update.response.date}` + ); + console.log(`Release notes: ${update.response.body}`); + await update.downloadAndInstall(); + // nécéssite le plugin `process` + await relaunch(); +} +``` + + + + +Pour chercher des mises à jour: + +```rust +use tauri_plugin_updater::UpdaterExt; + +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_updater::Builder::new().build()) + .setup(|app| { + let handle = app.handle(); + tauri::async_runtime::spawn(async move { + let response = handle.updater().check().await; + }); + Ok(()) + }) +} +``` + +Pour définir une cible à mettre à jour personnalisée: + +```rust +fn main() { + let mut updater = tauri_plugin_updater::Builder::new(); + #[cfg(target_os = "macos")] + { + updater = updater.target("darwin-universal"); + } + tauri::Builder::default() + .plugin(updater.build()) +} +``` + + + + +### Migrer vers un "Window Plugin" + +Les API Rust `tauri::window` et JavaScript `@tauri-apps/api/window` ont été retirées. Utilisez le plugin `@tauri-apps/plugin-window` à la place: + +1. Ajoutez vos dépendances Cargo: + +```toml +# Cargo.toml +[dependencies] +tauri-plugin-window = "2" +``` + +2. Utilisez-les dans un projet JavaScript ou Rust: + + + + +```rust +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_window::init()) +} +``` + +```json +// package.json +{ + "dependencies": { + "@tauri-apps/plugin-window": "^2.0.0" + } +} +``` + +```js +import { appWindow } from '@tauri-apps/plugin-window'; +await appWindow.setTitle('Tauri'); +``` + + + + +```rust +use tauri::Manager; + +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_window::init()) + .setup(|app| { + let window = app.get_window("main").unwrap(); + window.set_title("Tauri")?; + Ok(()) + }) +} +``` + + + + +### Migrer de "Path" vers "Tauri Manager" + +Les fonctions du module Rust `tauri::api::path` et `tauri::PathResolver` ont été déplacées vers `tauri::Manager::path`: + +```rust +use tauri::{path::BaseDirectory, Manager}; + +tauri::Builder::default() + .setup(|app| { + let home_dir_path = app.path().home_dir().expect("failed to get home dir"); + + let path = app.path().resolve("path/to/something", BaseDirectory::Config)?; + + Ok(()) + }) +```