Add an option to disable smooth scrolling for the Electron app (#6912)

This commit is contained in:
Elian Doran 2025-09-06 22:41:26 +03:00 committed by GitHub
commit 86a620bc08
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 26 additions and 3 deletions

View File

@ -1118,7 +1118,9 @@
"title": "Performance", "title": "Performance",
"enable-motion": "Enable transitions and animations", "enable-motion": "Enable transitions and animations",
"enable-shadows": "Enable shadows", "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",
"app-restart-required": "(a restart of the application is required for the change to take effect)"
}, },
"ai_llm": { "ai_llm": {
"not_started": "Not started", "not_started": "Not started",

View File

@ -2013,7 +2013,9 @@
"title": "Setări de performanță", "title": "Setări de performanță",
"enable-motion": "Activează tranzițiile și animațiile", "enable-motion": "Activează tranzițiile și animațiile",
"enable-shadows": "Activează umbrirea elementelor", "enable-shadows": "Activează umbrirea elementelor",
"enable-backdrop-effects": "Activează efectele de fundal pentru meniuri, popup-uri și panouri" "enable-backdrop-effects": "Activează efectele de fundal pentru meniuri, popup-uri și panouri",
"enable-smooth-scroll": "Activează derularea lină",
"app-restart-required": "(este necesară repornirea aplicației pentru ca modificarea să aibă efect)"
}, },
"settings": { "settings": {
"related_settings": "Setări similare" "related_settings": "Setări similare"

View File

@ -266,9 +266,20 @@ function Performance() {
label={t("ui-performance.enable-backdrop-effects")} label={t("ui-performance.enable-backdrop-effects")}
currentValue={backdropEffectsEnabled} onChange={setBackdropEffectsEnabled} currentValue={backdropEffectsEnabled} onChange={setBackdropEffectsEnabled}
/> />
{isElectron() && <SmoothScrollEnabledOption />}
</OptionsSection> </OptionsSection>
} }
function SmoothScrollEnabledOption() {
const [ smoothScrollEnabled, setSmoothScrollEnabled ] = useTriliumOptionBool("smoothScrollEnabled");
return <FormCheckbox
label={`${t("ui-performance.enable-smooth-scroll")} ${t("ui-performance.app-restart-required")}`}
currentValue={smoothScrollEnabled} onChange={setSmoothScrollEnabled}
/>
}
function MaxContentWidth() { function MaxContentWidth() {
const [ maxContentWidth, setMaxContentWidth ] = useTriliumOption("maxContentWidth"); const [ maxContentWidth, setMaxContentWidth ] = useTriliumOption("maxContentWidth");

View File

@ -25,6 +25,12 @@ async function main() {
// needed for excalidraw export https://github.com/zadam/trilium/issues/4271 // needed for excalidraw export https://github.com/zadam/trilium/issues/4271
electron.app.commandLine.appendSwitch("enable-experimental-web-platform-features"); electron.app.commandLine.appendSwitch("enable-experimental-web-platform-features");
electron.app.commandLine.appendSwitch("lang", options.getOptionOrNull("formattingLocale") ?? "en"); 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. // 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. // See https://github.com/electron/electron/issues/46538 for more info.

View File

@ -65,6 +65,7 @@ const ALLOWED_OPTIONS = new Set<OptionNames>([
"monthlyBackupEnabled", "monthlyBackupEnabled",
"motionEnabled", "motionEnabled",
"shadowsEnabled", "shadowsEnabled",
"smoothScrollEnabled",
"backdropEffectsEnabled", "backdropEffectsEnabled",
"maxContentWidth", "maxContentWidth",
"compressImages", "compressImages",

View File

@ -155,7 +155,7 @@ const defaultOptions: DefaultOption[] = [
{ name: "motionEnabled", value: "true", isSynced: false }, { name: "motionEnabled", value: "true", isSynced: false },
{ name: "shadowsEnabled", value: "true", isSynced: false }, { name: "shadowsEnabled", value: "true", isSynced: false },
{ name: "backdropEffectsEnabled", value: "true", isSynced: false }, { name: "backdropEffectsEnabled", value: "true", isSynced: false },
{ name: "smoothScrollEnabled", value: "true", isSynced: false },
// Internationalization // Internationalization
{ name: "locale", value: "en", isSynced: true }, { name: "locale", value: "en", isSynced: true },

View File

@ -96,6 +96,7 @@ export interface OptionDefinitions extends KeyboardShortcutsOptions<KeyboardActi
motionEnabled: boolean; motionEnabled: boolean;
shadowsEnabled: boolean; shadowsEnabled: boolean;
backdropEffectsEnabled: boolean; backdropEffectsEnabled: boolean;
smoothScrollEnabled: boolean;
codeNoteTheme: string; codeNoteTheme: string;
initialized: boolean; initialized: boolean;