diff --git a/surfsense_web/app/dashboard/[search_space_id]/user-settings/components/DesktopContent.tsx b/surfsense_web/app/dashboard/[search_space_id]/user-settings/components/DesktopContent.tsx
new file mode 100644
index 000000000..1522e153f
--- /dev/null
+++ b/surfsense_web/app/dashboard/[search_space_id]/user-settings/components/DesktopContent.tsx
@@ -0,0 +1,79 @@
+"use client";
+
+import { useEffect, useState } from "react";
+import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
+import { Label } from "@/components/ui/label";
+import { Switch } from "@/components/ui/switch";
+import { Spinner } from "@/components/ui/spinner";
+
+export function DesktopContent() {
+ const [isElectron, setIsElectron] = useState(false);
+ const [loading, setLoading] = useState(true);
+ const [enabled, setEnabled] = useState(true);
+
+ useEffect(() => {
+ if (!window.electronAPI) {
+ setLoading(false);
+ return;
+ }
+ setIsElectron(true);
+
+ window.electronAPI.getAutocompleteEnabled().then((val) => {
+ setEnabled(val);
+ setLoading(false);
+ });
+ }, []);
+
+ if (!isElectron) {
+ return (
+
+
+ Desktop settings are only available in the SurfSense desktop app.
+
+
+ );
+ }
+
+ if (loading) {
+ return (
+
+
+
+ );
+ }
+
+ const handleToggle = async (checked: boolean) => {
+ setEnabled(checked);
+ await window.electronAPI!.setAutocompleteEnabled(checked);
+ };
+
+ return (
+
+
+
+ Autocomplete
+
+ Get inline writing suggestions powered by your knowledge base as you type in any app.
+
+
+
+
+
+
+
+ Show suggestions while typing in other applications.
+
+
+
+
+
+
+
+ );
+}
diff --git a/surfsense_web/components/settings/user-settings-dialog.tsx b/surfsense_web/components/settings/user-settings-dialog.tsx
index 389ebc5fd..b74ff973b 100644
--- a/surfsense_web/components/settings/user-settings-dialog.tsx
+++ b/surfsense_web/components/settings/user-settings-dialog.tsx
@@ -1,13 +1,14 @@
"use client";
import { useAtom } from "jotai";
-import { Globe, KeyRound, Receipt, Sparkles, User } from "lucide-react";
+import { Globe, KeyRound, Monitor, Receipt, Sparkles, User } from "lucide-react";
import { useTranslations } from "next-intl";
import { ApiKeyContent } from "@/app/dashboard/[search_space_id]/user-settings/components/ApiKeyContent";
import { CommunityPromptsContent } from "@/app/dashboard/[search_space_id]/user-settings/components/CommunityPromptsContent";
import { ProfileContent } from "@/app/dashboard/[search_space_id]/user-settings/components/ProfileContent";
import { PromptsContent } from "@/app/dashboard/[search_space_id]/user-settings/components/PromptsContent";
import { PurchaseHistoryContent } from "@/app/dashboard/[search_space_id]/user-settings/components/PurchaseHistoryContent";
+import { DesktopContent } from "@/app/dashboard/[search_space_id]/user-settings/components/DesktopContent";
import { userSettingsDialogAtom } from "@/atoms/settings/settings-dialog.atoms";
import { SettingsDialog } from "@/components/settings/settings-dialog";
@@ -37,6 +38,9 @@ export function UserSettingsDialog() {
label: "Purchase History",
icon: ,
},
+ ...(typeof window !== "undefined" && window.electronAPI
+ ? [{ value: "desktop", label: "Desktop", icon: }]
+ : []),
];
return (
@@ -54,6 +58,7 @@ export function UserSettingsDialog() {
{state.initialTab === "prompts" && }
{state.initialTab === "community-prompts" && }
{state.initialTab === "purchases" && }
+ {state.initialTab === "desktop" && }
);