From fc19e2b360aae736f7363666764e220a9fb2e18a Mon Sep 17 00:00:00 2001 From: Naman Garg Date: Thu, 7 Mar 2024 04:50:41 +0530 Subject: [PATCH 01/15] Add Installation and Usage --- src/content/docs/features/single-instance.mdx | 47 ++++++++++++++++--- 1 file changed, 41 insertions(+), 6 deletions(-) diff --git a/src/content/docs/features/single-instance.mdx b/src/content/docs/features/single-instance.mdx index aac6b1123d..fc8b85e47d 100644 --- a/src/content/docs/features/single-instance.mdx +++ b/src/content/docs/features/single-instance.mdx @@ -1,14 +1,49 @@ --- title: Single Instance -description: Ensure a single instance of your tauri app is running. +description: Plugin to ensure that a single instance of your tauri app is running at a time. --- -import Stub from '@components/Stub.astro'; import PluginLinks from '@components/PluginLinks.astro'; +import { Tabs, TabItem } from '@astrojs/starlight/components'; - - Based on - https://github.com/tauri-apps/plugins-workspace/tree/v2/plugins/single-instance - +Plugin to ensure that a single instance of your tauri app is running at a time. + + +## Install + +_This plugin requires a Rust version of at least **1.75**_ + +You can install the Core plugin by adding the following to your `Cargo.toml` file: + + + +```toml title="src-tauri/Cargo.toml" ins={2} +[dependencies] +tauri-plugin-single-instance = "2.0.0-beta" +``` + + + +```toml title="src-tauri/Cargo.toml" ins={2} +[dependencies] +tauri-plugin-single-instance = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" } +``` + + + +## Usage + +To use this plugin, you need to register the core plugin with Tauri: + +```rust title="src-tauri/src/main.rs" ins={4} +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_shell::init()) + .plugin(tauri_plugin_single_instance::init(|_, _, _| {})) + .invoke_handler(tauri::generate_handler![greet]) + .run(tauri::generate_context!()) + .expect("error while running tauri application"); +} +``` From 1024c3fe0aee170ed53e187e6f5bba92aea91775 Mon Sep 17 00:00:00 2001 From: Naman Garg Date: Fri, 8 Mar 2024 05:27:29 +0530 Subject: [PATCH 02/15] Add Focusing WIndow example --- src/content/docs/features/single-instance.mdx | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/content/docs/features/single-instance.mdx b/src/content/docs/features/single-instance.mdx index fc8b85e47d..0b352dc57a 100644 --- a/src/content/docs/features/single-instance.mdx +++ b/src/content/docs/features/single-instance.mdx @@ -47,3 +47,34 @@ fn main() { .expect("error while running tauri application"); } ``` + +### Focusing on New Instance + +By default, nothing happens if you open a new instance. To focus the Window when user tries to open a new instance: + + +```rust title="src-tauri/src/main.rs" {1} {6-8} {14-23} +use tauri::{AppHandle, Manager}; + +fn main() { + tauri::Builder::default() + .plugin(tauri_plugin_shell::init()) + .plugin(tauri_plugin_single_instance::init(|app, _, _| { + let _ = show_window(app); + })) + .invoke_handler(tauri::generate_handler![greet]) + .run(tauri::generate_context!()) + .expect("error while running tauri application"); +} + +fn show_window(app: &AppHandle) { + let windows = app.webview_windows(); + + windows + .values() + .next() + .expect("Sorry, no window found") + .set_focus() + .expect("Can't Bring Window to Focus"); +} +``` From 70fc59f7b2bff0d6259845a8754dd100420550d1 Mon Sep 17 00:00:00 2001 From: Naman Garg <155433377+naman-crabnebula@users.noreply.github.com> Date: Mon, 11 Mar 2024 18:04:09 +0530 Subject: [PATCH 03/15] update example description --- src/content/docs/features/single-instance.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/features/single-instance.mdx b/src/content/docs/features/single-instance.mdx index 0b352dc57a..921f1d1a80 100644 --- a/src/content/docs/features/single-instance.mdx +++ b/src/content/docs/features/single-instance.mdx @@ -50,7 +50,7 @@ fn main() { ### Focusing on New Instance -By default, nothing happens if you open a new instance. To focus the Window when user tries to open a new instance: +By default, nothing happens if you open a new instance and another instance is already running. To focus the Window of already running instance when user tries to open a new instance: ```rust title="src-tauri/src/main.rs" {1} {6-8} {14-23} From 4e0e9008fadf258460a1b03043e6e22368824696 Mon Sep 17 00:00:00 2001 From: Naman Garg <155433377+naman-crabnebula@users.noreply.github.com> Date: Mon, 11 Mar 2024 19:00:08 +0530 Subject: [PATCH 04/15] Add more info about usage Co-authored-by: Lucas Fernandes Nogueira --- src/content/docs/features/single-instance.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/features/single-instance.mdx b/src/content/docs/features/single-instance.mdx index 921f1d1a80..5cc3fb7a43 100644 --- a/src/content/docs/features/single-instance.mdx +++ b/src/content/docs/features/single-instance.mdx @@ -35,7 +35,7 @@ tauri-plugin-single-instance = { git = "https://github.com/tauri-apps/plugins-wo ## Usage -To use this plugin, you need to register the core plugin with Tauri: +To use this plugin, you need to register the core plugin with Tauri. The plugin init() method takes a closure that is called when a new app instance was started, but closed by the plugin. The closure has three arguments: the AppHandle, the list of arguments (important for instance on deep link usage) and the current working directory: ```rust title="src-tauri/src/main.rs" ins={4} fn main() { From cdf125bf7ebfd93cf0d276b17406cfd0c4fa97e5 Mon Sep 17 00:00:00 2001 From: Naman Garg <155433377+naman-crabnebula@users.noreply.github.com> Date: Mon, 11 Mar 2024 19:02:17 +0530 Subject: [PATCH 05/15] Improve Focusing new instance description Co-authored-by: Lucas Fernandes Nogueira --- src/content/docs/features/single-instance.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/features/single-instance.mdx b/src/content/docs/features/single-instance.mdx index 5cc3fb7a43..5f7fd27ed2 100644 --- a/src/content/docs/features/single-instance.mdx +++ b/src/content/docs/features/single-instance.mdx @@ -50,7 +50,7 @@ fn main() { ### Focusing on New Instance -By default, nothing happens if you open a new instance and another instance is already running. To focus the Window of already running instance when user tries to open a new instance: +By default nothing happens when you start a new instance and the application is already running. To focus the window of the running instance when user tries to open a new instance, change the callback closure: ```rust title="src-tauri/src/main.rs" {1} {6-8} {14-23} From 74a11069c4449b23af048b8c764cc24e56d1a5e5 Mon Sep 17 00:00:00 2001 From: Naman Garg <155433377+naman-crabnebula@users.noreply.github.com> Date: Mon, 11 Mar 2024 19:51:53 +0530 Subject: [PATCH 06/15] Remove unnecessary LOC from examples --- src/content/docs/features/single-instance.mdx | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/content/docs/features/single-instance.mdx b/src/content/docs/features/single-instance.mdx index 5f7fd27ed2..39f6aaa545 100644 --- a/src/content/docs/features/single-instance.mdx +++ b/src/content/docs/features/single-instance.mdx @@ -37,12 +37,10 @@ tauri-plugin-single-instance = { git = "https://github.com/tauri-apps/plugins-wo To use this plugin, you need to register the core plugin with Tauri. The plugin init() method takes a closure that is called when a new app instance was started, but closed by the plugin. The closure has three arguments: the AppHandle, the list of arguments (important for instance on deep link usage) and the current working directory: -```rust title="src-tauri/src/main.rs" ins={4} +```rust title="src-tauri/src/main.rs" ins={3} fn main() { tauri::Builder::default() - .plugin(tauri_plugin_shell::init()) .plugin(tauri_plugin_single_instance::init(|_, _, _| {})) - .invoke_handler(tauri::generate_handler![greet]) .run(tauri::generate_context!()) .expect("error while running tauri application"); } @@ -53,16 +51,14 @@ fn main() { By default nothing happens when you start a new instance and the application is already running. To focus the window of the running instance when user tries to open a new instance, change the callback closure: -```rust title="src-tauri/src/main.rs" {1} {6-8} {14-23} +```rust title="src-tauri/src/main.rs" {1} {5-7} {12-21} use tauri::{AppHandle, Manager}; fn main() { tauri::Builder::default() - .plugin(tauri_plugin_shell::init()) .plugin(tauri_plugin_single_instance::init(|app, _, _| { let _ = show_window(app); })) - .invoke_handler(tauri::generate_handler![greet]) .run(tauri::generate_context!()) .expect("error while running tauri application"); } From 22a34db50901719ca968b80f3f65a4d195d28a49 Mon Sep 17 00:00:00 2001 From: Naman Garg <155433377+naman-crabnebula@users.noreply.github.com> Date: Mon, 11 Mar 2024 20:00:34 +0530 Subject: [PATCH 07/15] add parameter name --- src/content/docs/features/single-instance.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/content/docs/features/single-instance.mdx b/src/content/docs/features/single-instance.mdx index 39f6aaa545..3ed67a4a28 100644 --- a/src/content/docs/features/single-instance.mdx +++ b/src/content/docs/features/single-instance.mdx @@ -40,7 +40,7 @@ To use this plugin, you need to register the core plugin with Tauri. The plugin ```rust title="src-tauri/src/main.rs" ins={3} fn main() { tauri::Builder::default() - .plugin(tauri_plugin_single_instance::init(|_, _, _| {})) + .plugin(tauri_plugin_single_instance::init(|app, args, cwd| {})) .run(tauri::generate_context!()) .expect("error while running tauri application"); } @@ -56,7 +56,7 @@ use tauri::{AppHandle, Manager}; fn main() { tauri::Builder::default() - .plugin(tauri_plugin_single_instance::init(|app, _, _| { + .plugin(tauri_plugin_single_instance::init(|app, args, cwd| { let _ = show_window(app); })) .run(tauri::generate_context!()) From 8e2395cff72da102c4704a53c3c6dd7036492926 Mon Sep 17 00:00:00 2001 From: Naman Garg Date: Mon, 18 Mar 2024 21:44:17 +0530 Subject: [PATCH 08/15] Change `main.rs` to `lib.rs` --- src/content/docs/features/single-instance.mdx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/content/docs/features/single-instance.mdx b/src/content/docs/features/single-instance.mdx index 3ed67a4a28..e5f833b42c 100644 --- a/src/content/docs/features/single-instance.mdx +++ b/src/content/docs/features/single-instance.mdx @@ -37,8 +37,8 @@ tauri-plugin-single-instance = { git = "https://github.com/tauri-apps/plugins-wo To use this plugin, you need to register the core plugin with Tauri. The plugin init() method takes a closure that is called when a new app instance was started, but closed by the plugin. The closure has three arguments: the AppHandle, the list of arguments (important for instance on deep link usage) and the current working directory: -```rust title="src-tauri/src/main.rs" ins={3} -fn main() { +```rust title="src-tauri/src/lib.rs" ins={3} +pub fn run() { tauri::Builder::default() .plugin(tauri_plugin_single_instance::init(|app, args, cwd| {})) .run(tauri::generate_context!()) @@ -51,10 +51,10 @@ fn main() { By default nothing happens when you start a new instance and the application is already running. To focus the window of the running instance when user tries to open a new instance, change the callback closure: -```rust title="src-tauri/src/main.rs" {1} {5-7} {12-21} +```rust title="src-tauri/src/lib.rs" {1} {5-7} {12-21} use tauri::{AppHandle, Manager}; -fn main() { +pub fn run() { tauri::Builder::default() .plugin(tauri_plugin_single_instance::init(|app, args, cwd| { let _ = show_window(app); From fcba3cded4cb0793c9cfc513442d362faeba2a02 Mon Sep 17 00:00:00 2001 From: Naman Garg Date: Mon, 18 Mar 2024 23:19:48 +0530 Subject: [PATCH 09/15] Update Setup and usage --- src/content/docs/features/single-instance.mdx | 76 +++++++++++++------ 1 file changed, 51 insertions(+), 25 deletions(-) diff --git a/src/content/docs/features/single-instance.mdx b/src/content/docs/features/single-instance.mdx index e5f833b42c..370a3bb7ae 100644 --- a/src/content/docs/features/single-instance.mdx +++ b/src/content/docs/features/single-instance.mdx @@ -5,45 +5,71 @@ description: Plugin to ensure that a single instance of your tauri app is runnin import PluginLinks from '@components/PluginLinks.astro'; import { Tabs, TabItem } from '@astrojs/starlight/components'; +import CommandTabs from '@components/CommandTabs.astro'; Plugin to ensure that a single instance of your tauri app is running at a time. +## Setup -## Install - -_This plugin requires a Rust version of at least **1.75**_ - -You can install the Core plugin by adding the following to your `Cargo.toml` file: +We can install and initialize the Single Instance Plugin in one of the two ways: - -```toml title="src-tauri/Cargo.toml" ins={2} -[dependencies] -tauri-plugin-single-instance = "2.0.0-beta" -``` - - + + + We can simply use [`tauri add`](/references/v2/cli/#add) to automatically install as well as initialize the plugin with your Tauri Application. + + + + + + We also have the option to manually install and initialize the plugin. To do so, we need to follow two simple steps: + + 1. **Install :** Add the plugin to the project's dependencies in `Cargo.toml`. + + + + ```toml title="src-tauri/Cargo.toml" ins={2} + [dependencies] + tauri-plugin-single-instance = "2.0.0-beta" + ``` + + + + ```toml title="src-tauri/Cargo.toml" ins={2} + [dependencies] + tauri-plugin-single-instance = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" } + ``` + + + + 2. **Initialize :** Update `lib.rs` (or `main.rs` for desktop-only apps) to initialize the plugin: + + ```rust title="src-tauri/src/lib.rs" ins={3} + pub fn run() { + tauri::Builder::default() + .plugin(tauri_plugin_single_instance::init(|app, args, cwd| {})) + .run(tauri::generate_context!()) + .expect("error while running tauri application"); + } + ``` + -```toml title="src-tauri/Cargo.toml" ins={2} -[dependencies] -tauri-plugin-single-instance = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" } -``` - ## Usage -To use this plugin, you need to register the core plugin with Tauri. The plugin init() method takes a closure that is called when a new app instance was started, but closed by the plugin. The closure has three arguments: the AppHandle, the list of arguments (important for instance on deep link usage) and the current working directory: +The plugin is already installed and initialized, and it should be functioning correctly right away. Nevertheless, we can also enhance its functionality with the `init()` method. -```rust title="src-tauri/src/lib.rs" ins={3} -pub fn run() { - tauri::Builder::default() - .plugin(tauri_plugin_single_instance::init(|app, args, cwd| {})) - .run(tauri::generate_context!()) - .expect("error while running tauri application"); -} +The plugin `init()` method takes a closure that is invoked when a new app instance was started, but closed by the plugin. +The closure has three arguments: the AppHandle, the list of arguments (crucial, especially for scenarios involving deep link usage) and the current working directory. For example: + +```rust +.plugin(tauri_plugin_single_instance::init(|app, args, cwd| {})) ``` ### Focusing on New Instance From 146d5ba8676d312d71c09b57b27e42e633a06956 Mon Sep 17 00:00:00 2001 From: Naman Garg Date: Tue, 19 Mar 2024 01:44:47 +0530 Subject: [PATCH 10/15] Use Starlight Steps --- src/content/docs/features/single-instance.mdx | 68 ++++++++++--------- 1 file changed, 37 insertions(+), 31 deletions(-) diff --git a/src/content/docs/features/single-instance.mdx b/src/content/docs/features/single-instance.mdx index 370a3bb7ae..61775e4f97 100644 --- a/src/content/docs/features/single-instance.mdx +++ b/src/content/docs/features/single-instance.mdx @@ -4,7 +4,7 @@ description: Plugin to ensure that a single instance of your tauri app is runnin --- import PluginLinks from '@components/PluginLinks.astro'; -import { Tabs, TabItem } from '@astrojs/starlight/components'; +import { Tabs, TabItem, Steps } from '@astrojs/starlight/components'; import CommandTabs from '@components/CommandTabs.astro'; @@ -27,36 +27,42 @@ We can install and initialize the Single Instance Plugin in one of the two ways: - We also have the option to manually install and initialize the plugin. To do so, we need to follow two simple steps: - - 1. **Install :** Add the plugin to the project's dependencies in `Cargo.toml`. - - - - ```toml title="src-tauri/Cargo.toml" ins={2} - [dependencies] - tauri-plugin-single-instance = "2.0.0-beta" - ``` - - - - ```toml title="src-tauri/Cargo.toml" ins={2} - [dependencies] - tauri-plugin-single-instance = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" } - ``` - - - - 2. **Initialize :** Update `lib.rs` (or `main.rs` for desktop-only apps) to initialize the plugin: - - ```rust title="src-tauri/src/lib.rs" ins={3} - pub fn run() { - tauri::Builder::default() - .plugin(tauri_plugin_single_instance::init(|app, args, cwd| {})) - .run(tauri::generate_context!()) - .expect("error while running tauri application"); - } - ``` + +
    + We also have the option to manually install and initialize the plugin. To do so, we need to follow two simple steps: + +
  1. + **Install :** Add the plugin to the project's dependencies in `Cargo.toml`. + + + ```toml title="src-tauri/Cargo.toml" ins={2} + [dependencies] + tauri-plugin-single-instance = "2.0.0-beta" + ``` + + + + ```toml title="src-tauri/Cargo.toml" ins={2} + [dependencies] + tauri-plugin-single-instance = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v2" } + ``` + + +
  2. +
  3. + **Initialize :** Update `lib.rs` (or `main.rs` for desktop-only apps) to initialize the plugin: + + ```rust title="src-tauri/src/lib.rs" ins={3} + pub fn run() { + tauri::Builder::default() + .plugin(tauri_plugin_single_instance::init(|app, args, cwd| {})) + .run(tauri::generate_context!()) + .expect("error while running tauri application"); + } + ``` +
  4. +
+
From d3c0d502db807512647800233dd7d3e0d3a33d47 Mon Sep 17 00:00:00 2001 From: Naman Garg Date: Tue, 19 Mar 2024 02:10:26 +0530 Subject: [PATCH 11/15] Improve wording for Usage Section --- src/content/docs/features/single-instance.mdx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/content/docs/features/single-instance.mdx b/src/content/docs/features/single-instance.mdx index 61775e4f97..2c5b193c1c 100644 --- a/src/content/docs/features/single-instance.mdx +++ b/src/content/docs/features/single-instance.mdx @@ -72,10 +72,17 @@ We can install and initialize the Single Instance Plugin in one of the two ways: The plugin is already installed and initialized, and it should be functioning correctly right away. Nevertheless, we can also enhance its functionality with the `init()` method. The plugin `init()` method takes a closure that is invoked when a new app instance was started, but closed by the plugin. -The closure has three arguments: the AppHandle, the list of arguments (crucial, especially for scenarios involving deep link usage) and the current working directory. For example: +The closure has three arguments: +1. **`app` :** The [AppHandle](https://docs.rs/tauri/latest/tauri/struct.AppHandle.html) of the application. +2. **`args` :** The list of arguments, that was passed by the user to initiate this new instance. +3. **`cwd` :** The Current Working Directory denotes the directory from which the new application instance was launched. + +So, the closure should look like below ```rust -.plugin(tauri_plugin_single_instance::init(|app, args, cwd| {})) +.plugin(tauri_plugin_single_instance::init(|app, args, cwd| { + // Write your code here... +})) ``` ### Focusing on New Instance From 7ee0bfebfac8d3def357d67677f2ef9f05901243 Mon Sep 17 00:00:00 2001 From: Naman Garg Date: Tue, 19 Mar 2024 02:15:07 +0530 Subject: [PATCH 12/15] Update focusing new instance line --- src/content/docs/features/single-instance.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/features/single-instance.mdx b/src/content/docs/features/single-instance.mdx index 2c5b193c1c..a2f1d5dfea 100644 --- a/src/content/docs/features/single-instance.mdx +++ b/src/content/docs/features/single-instance.mdx @@ -87,7 +87,7 @@ So, the closure should look like below ### Focusing on New Instance -By default nothing happens when you start a new instance and the application is already running. To focus the window of the running instance when user tries to open a new instance, change the callback closure: +By default, when you initiate a new instance while the application is already running, no action is taken. To focus the window of the running instance when user tries to open a new instance, alter the callback closure as follows: ```rust title="src-tauri/src/lib.rs" {1} {5-7} {12-21} From a2af032af365162d717cd7404ee66a2722805ed2 Mon Sep 17 00:00:00 2001 From: Naman Garg <155433377+naman-crabnebula@users.noreply.github.com> Date: Tue, 26 Mar 2024 17:29:32 +0530 Subject: [PATCH 13/15] Update src/content/docs/features/single-instance.mdx Co-authored-by: Vitor Ayres --- src/content/docs/features/single-instance.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/features/single-instance.mdx b/src/content/docs/features/single-instance.mdx index a2f1d5dfea..0aad21531e 100644 --- a/src/content/docs/features/single-instance.mdx +++ b/src/content/docs/features/single-instance.mdx @@ -13,7 +13,7 @@ Plugin to ensure that a single instance of your tauri app is running at a time. ## Setup -We can install and initialize the Single Instance Plugin in one of the two ways: +Install the single-instance plugin to get started. From 3ced7bb1db793376d0ac712cedb744ee85ace4eb Mon Sep 17 00:00:00 2001 From: Naman Garg Date: Tue, 26 Mar 2024 17:43:10 +0530 Subject: [PATCH 14/15] Apply recommendations --- src/content/docs/features/single-instance.mdx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/content/docs/features/single-instance.mdx b/src/content/docs/features/single-instance.mdx index 0aad21531e..21730259ec 100644 --- a/src/content/docs/features/single-instance.mdx +++ b/src/content/docs/features/single-instance.mdx @@ -18,7 +18,7 @@ Install the single-instance plugin to get started. - We can simply use [`tauri add`](/references/v2/cli/#add) to automatically install as well as initialize the plugin with your Tauri Application. + Use your project's package manager to add the dependency:
    - We also have the option to manually install and initialize the plugin. To do so, we need to follow two simple steps: -
  1. **Install :** Add the plugin to the project's dependencies in `Cargo.toml`. From 1a25d99eac70ff6bad2f483c245a7cb925cf96e8 Mon Sep 17 00:00:00 2001 From: Naman Garg Date: Tue, 26 Mar 2024 17:52:17 +0530 Subject: [PATCH 15/15] Make description more uniform --- src/content/docs/features/single-instance.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/content/docs/features/single-instance.mdx b/src/content/docs/features/single-instance.mdx index 21730259ec..362cbf6aa3 100644 --- a/src/content/docs/features/single-instance.mdx +++ b/src/content/docs/features/single-instance.mdx @@ -1,6 +1,6 @@ --- title: Single Instance -description: Plugin to ensure that a single instance of your tauri app is running at a time. +description: Ensure that a single instance of your Tauri app is running at a time. --- import PluginLinks from '@components/PluginLinks.astro'; @@ -9,11 +9,11 @@ import CommandTabs from '@components/CommandTabs.astro'; -Plugin to ensure that a single instance of your tauri app is running at a time. +Ensure that a single instance of your tauri app is running at a time using the Single Instance Plugin. ## Setup -Install the single-instance plugin to get started. +Install the Single Instance plugin to get started.