Skip to content

Scroll

How Otty handles scrollback and the scroll gesture. Everything here is configured in the GUI — no config file needed.

Scroll keys

Page-wise scroll: ⇧PageUp / ⇧PageDown. Top / bottom: ⇧Home / ⇧End. ⌘PageUp / ⌘PageDown jump to the previous / next command when Shell Integration is on. New output (or typing) snaps the viewport back to the bottom.

Scroll behavior

Settings → Controls → Scroll collects how the viewport moves.

Scroll Past Last Line (Disabled by default)

Scroll Past Last Line: Last Line With Content

Lets you keep scrolling after the prompt reaches the bottom, anchoring the last row (or cursor) higher up so it isn't pinned to the very edge. Pick where it stops:

OptionWhere scrolling stops
DisabledClamps at the bottom of the buffer — no overscroll.
Last Line With ContentThe bottom-most row with text (usually the prompt) lands at the viewport top.
Last Line In MiddleThat same content row lands at the vertical middle instead of the top.
Cursor LineThe cursor row lands at the top, even if it sits on a blank line below the prompt.

Disabled on the alternate screen, so full-screen TUIs (vim, htop, less) keep their own bottom edge.

Scroll Past First Line (Disabled by default)

Scroll Past First Line: First Line In Middle

The mirror image at the top of scrollback — push the oldest row down into the viewport instead of clamping at the very first line.

OptionWhere scrolling stops
DisabledClamps at the top of scrollback.
Same as Scroll Past Last LineMirrors whatever Scroll Past Last Line is set to, so you only tune one knob.
First Line With ContentThe topmost row of history lands at the viewport bottom.
First Line In MiddleThe topmost row lands at the vertical middle.

Smooth Scroll (on by default)

Smooth Scroll: Off
Smooth Scroll: On

Scrolls the viewport at pixel granularity instead of snapping a whole row at a time. When the gesture ends the offset snaps back to a row boundary so glyphs stay pixel-aligned. Turn it off for a classic row-by-row jump.

See also

Otty