From 7a3ca52819f44f4cabef6b7961ce153039d2a02f Mon Sep 17 00:00:00 2001 From: FTCHD <144691102+FTCHD@users.noreply.github.com> Date: Thu, 14 Aug 2025 22:50:48 +0200 Subject: [PATCH] open on startup (autostart) Signed-off-by: FTCHD <144691102+FTCHD@users.noreply.github.com> --- lib/store.ts | 6 ++++ src-tauri/src/lib.rs | 2 +- src/pages/Settings.tsx | 66 +++++++++++++++++++++++------------------- 3 files changed, 43 insertions(+), 31 deletions(-) diff --git a/lib/store.ts b/lib/store.ts index 7f65aa3..e8364c6 100644 --- a/lib/store.ts +++ b/lib/store.ts @@ -77,6 +77,9 @@ interface PersistedState { isFirstOpen: boolean setIsFirstOpen: (isFirstOpen: boolean) => void + startOnBoot: boolean + setStartOnBoot: (startOnBoot: boolean) => void + scheduledTasks: ScheduledTask[] addScheduledTask: ( task: Omit< @@ -179,6 +182,9 @@ export const usePersistedStore = create()( isFirstOpen: true, setIsFirstOpen: (isFirstOpen: boolean) => set((_) => ({ isFirstOpen })), + startOnBoot: false, + setStartOnBoot: (startOnBoot: boolean) => set((_) => ({ startOnBoot })), + scheduledTasks: [], addScheduledTask: ( task: Omit< diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 81f1a6d..04ea191 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -87,7 +87,7 @@ pub fn run() { .plugin(tauri_plugin_os::init()) .plugin(tauri_plugin_notification::init()) .plugin(tauri_plugin_process::init()) - // .plugin(tauri_plugin_autostart::init(tauri_plugin_autostart::MacosLauncher::LaunchAgent, Some(vec![]))) + .plugin(tauri_plugin_autostart::init(tauri_plugin_autostart::MacosLauncher::LaunchAgent, Some(vec![]))) // .plugin(tauri_plugin_single_instance::init(|app, argv, cwd| { // println!("{}, {argv:?}, {cwd}", app.package_info().name); // // app.emit("single-instance", Payload { args: argv, cwd }).unwrap(); diff --git a/src/pages/Settings.tsx b/src/pages/Settings.tsx index e2ffc6c..dd682c8 100644 --- a/src/pages/Settings.tsx +++ b/src/pages/Settings.tsx @@ -3,7 +3,6 @@ import { Card, CardBody, Checkbox, - Chip, Dropdown, DropdownItem, DropdownMenu, @@ -25,6 +24,7 @@ import { tempDir, } from '@tauri-apps/api/path' import { getCurrentWindow } from '@tauri-apps/api/window' +import { disable, enable } from '@tauri-apps/plugin-autostart' import { writeText } from '@tauri-apps/plugin-clipboard-manager' import { ask, message } from '@tauri-apps/plugin-dialog' import { remove } from '@tauri-apps/plugin-fs' @@ -258,6 +258,10 @@ function GeneralSection() { const disabledActions = usePersistedStore((state) => state.disabledActions) const setDisabledActions = usePersistedStore((state) => state.setDisabledActions) + const startOnBoot = usePersistedStore((state) => state.startOnBoot) + const setStartOnBoot = usePersistedStore((state) => state.setStartOnBoot) + const licenseValid = usePersistedStore((state) => state.licenseValid) + const [updateButtonText, setUpdateButtonText] = useState('Check for updates') const [isWorkingUpdate, setIsWorkingUpdate] = useState(false) const [update, setUpdate] = useState(null) @@ -433,13 +437,37 @@ function GeneralSection() {
- -
-

Start on boot

- - Coming soon - -
+ { + if (!licenseValid) { + await message('Community version does not support start on boot.', { + title: 'Missing license', + kind: 'error', + }) + return + } + + try { + if (value) { + await enable() + } else { + await disable() + } + + setStartOnBoot(value) + } catch (error) { + await message( + `An error occurred while toggling start on boot. ${error}`, + { + title: 'Error', + kind: 'error', + } + ) + } + }} + > + Start on boot Delete option
- - {/* - - */}