Skip to content

Mouse scroll wheel not supported in TUI #32

Description

@Gobd

The chat viewport has no mouse wheel support — the only way to scroll is via
keyboard shortcuts. For users who habitually reach for the scroll wheel this
is a friction point, especially in long conversations.

Workaround / partial fix: Implemented in https://github.com/Gobd/vix.
tea.MouseWheelMsg is handled and scrolls the chat viewport by 3 lines per
tick.

Known trade-offs introduced by enabling mouse mode:

  • Text selection becomes harder. Once the terminal hands mouse events to
    the application, the terminal emulator no longer owns click-and-drag, so
    the OS-level text selection that normally lets you highlight and copy chat
    output stops working.

  • Copy workaround. The fork partially addresses this with a click-and-drag
    selection overlay (highlights the selected region in the chat view and copies
    to clipboard on release). In the fork you can also hold Option to fall back
    to native terminal selection when you need it. Still not a complete
    replacement for all selection scenarios.

Suggested approach: Default mouse mode to off with a keybinding to toggle
it on/off — so users can flip it on to scroll, then off when they need to
select and copy.

However, the toggle approach breaks down for two important cases that
require mouse mode to be active:

  • Scroll-while-selecting — dragging to the edge of the viewport to
    auto-scroll while extending a selection.
  • Shift+click to extend — clicking further down to extend an existing
    selection without re-anchoring it.

Both of these require mouse mode on, so toggling off to copy defeats the
purpose. A more complete solution would likely need the app to own the full
selection+copy flow (as the fork's drag-to-select overlay begins to do) rather
than delegating any of it to the terminal, paired with a dedicated keybinding
to yank the selected region to clipboard.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions