diff --git a/apps/client/src/translations/en/translation.json b/apps/client/src/translations/en/translation.json
index d76843a27..28cfd98f2 100644
--- a/apps/client/src/translations/en/translation.json
+++ b/apps/client/src/translations/en/translation.json
@@ -1118,7 +1118,8 @@
"title": "Performance",
"enable-motion": "Enable transitions and animations",
"enable-shadows": "Enable shadows",
- "enable-backdrop-effects": "Enable background effects for menus, popups and panels"
+ "enable-backdrop-effects": "Enable background effects for menus, popups and panels",
+ "enable-smooth-scroll": "Enable smooth scrolling"
},
"ai_llm": {
"not_started": "Not started",
diff --git a/apps/client/src/widgets/type_widgets/options/appearance.tsx b/apps/client/src/widgets/type_widgets/options/appearance.tsx
index a6f5a77c6..2da8ebb1e 100644
--- a/apps/client/src/widgets/type_widgets/options/appearance.tsx
+++ b/apps/client/src/widgets/type_widgets/options/appearance.tsx
@@ -250,6 +250,7 @@ function Performance() {
const [ motionEnabled, setMotionEnabled ] = useTriliumOptionBool("motionEnabled");
const [ shadowsEnabled, setShadowsEnabled ] = useTriliumOptionBool("shadowsEnabled");
const [ backdropEffectsEnabled, setBackdropEffectsEnabled ] = useTriliumOptionBool("backdropEffectsEnabled");
+ const [ smoothScrollEnabled, setSmoothScrollEnabled ] = useTriliumOptionBool("smoothScrollEnabled");
return
+
+
}
diff --git a/apps/desktop/src/main.ts b/apps/desktop/src/main.ts
index d1af78e5a..673595830 100644
--- a/apps/desktop/src/main.ts
+++ b/apps/desktop/src/main.ts
@@ -25,6 +25,12 @@ async function main() {
// needed for excalidraw export https://github.com/zadam/trilium/issues/4271
electron.app.commandLine.appendSwitch("enable-experimental-web-platform-features");
electron.app.commandLine.appendSwitch("lang", options.getOptionOrNull("formattingLocale") ?? "en");
+
+ // Disable smooth scroll if the option is set
+ const smoothScrollEnabled = options.getOptionOrNull("smoothScrollEnabled");
+ if (smoothScrollEnabled === "false") {
+ electron.app.commandLine.appendSwitch("disable-smooth-scrolling");
+ }
// Electron 36 crashes with "Using GTK 2/3 and GTK 4 in the same process is not supported" on some distributions.
// See https://github.com/electron/electron/issues/46538 for more info.
diff --git a/apps/server/src/routes/api/options.ts b/apps/server/src/routes/api/options.ts
index 290dd5743..4f76acd68 100644
--- a/apps/server/src/routes/api/options.ts
+++ b/apps/server/src/routes/api/options.ts
@@ -65,6 +65,7 @@ const ALLOWED_OPTIONS = new Set([
"monthlyBackupEnabled",
"motionEnabled",
"shadowsEnabled",
+ "smoothScrollEnabled",
"backdropEffectsEnabled",
"maxContentWidth",
"compressImages",
diff --git a/apps/server/src/services/options_init.ts b/apps/server/src/services/options_init.ts
index e2c0a7389..1fd945cdd 100644
--- a/apps/server/src/services/options_init.ts
+++ b/apps/server/src/services/options_init.ts
@@ -155,7 +155,7 @@ const defaultOptions: DefaultOption[] = [
{ name: "motionEnabled", value: "true", isSynced: false },
{ name: "shadowsEnabled", value: "true", isSynced: false },
{ name: "backdropEffectsEnabled", value: "true", isSynced: false },
-
+ { name: "smoothScrollEnabled", value: "true", isSynced: false },
// Internationalization
{ name: "locale", value: "en", isSynced: true },
diff --git a/packages/commons/src/lib/options_interface.ts b/packages/commons/src/lib/options_interface.ts
index ae63d0250..a94b25857 100644
--- a/packages/commons/src/lib/options_interface.ts
+++ b/packages/commons/src/lib/options_interface.ts
@@ -96,6 +96,7 @@ export interface OptionDefinitions extends KeyboardShortcutsOptions