From 09fae62888c7e3e5f29fffe15664872ccde492a0 Mon Sep 17 00:00:00 2001 From: Mohamed Boudra Date: Wed, 18 Mar 2026 21:10:51 +0700 Subject: [PATCH] Tighten terminal scrollbar gutter --- packages/app/src/components/terminal-emulator.tsx | 5 ++++- .../terminal/runtime/terminal-emulator-runtime.ts | 14 ++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/packages/app/src/components/terminal-emulator.tsx b/packages/app/src/components/terminal-emulator.tsx index 69fcc0fef..38b347724 100644 --- a/packages/app/src/components/terminal-emulator.tsx +++ b/packages/app/src/components/terminal-emulator.tsx @@ -634,7 +634,10 @@ export default function TerminalEmulator({ height: "100%", overflow: "hidden", overscrollBehavior: "none", - padding: 8, + paddingTop: 8, + paddingBottom: 8, + paddingLeft: 8, + paddingRight: 0, }} /> {scrollbarGeometry.isVisible ? ( diff --git a/packages/app/src/terminal/runtime/terminal-emulator-runtime.ts b/packages/app/src/terminal/runtime/terminal-emulator-runtime.ts index 3f161d5ca..6ccdfca5a 100644 --- a/packages/app/src/terminal/runtime/terminal-emulator-runtime.ts +++ b/packages/app/src/terminal/runtime/terminal-emulator-runtime.ts @@ -86,6 +86,13 @@ const DEFAULT_TERMINAL_FONT_FAMILY = [ "monospace", ].join(", "); +function withOverviewRulerBorderHidden(theme: ITheme): ITheme { + return { + ...theme, + overviewRulerBorder: theme.background ?? "transparent", + }; +} + export class TerminalEmulatorRuntime { private callbacks: TerminalEmulatorRuntimeCallbacks = {}; private pendingModifiers: PendingTerminalModifiers = { @@ -138,8 +145,11 @@ export class TerminalEmulatorRuntime { fontFamily: DEFAULT_TERMINAL_FONT_FAMILY, fontSize: 13, lineHeight: 1.0, + overviewRuler: { + width: 8, + }, scrollback: 10_000, - theme: input.theme, + theme: withOverviewRulerBorderHidden(input.theme), }); const fitAddon = new FitAddon(); const unicode11Addon = new Unicode11Addon(); @@ -435,7 +445,7 @@ export class TerminalEmulatorRuntime { } try { - terminal.options.theme = input.theme; + terminal.options.theme = withOverviewRulerBorderHidden(input.theme); } catch { // ignore return;