wez / wezterm

A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust
https://wezfurlong.org/wezterm/
Other
14.86k stars 676 forks source link

Smooth Scrolling #3812

Open patrickaldis opened 1 year ago

patrickaldis commented 1 year ago

It would be great to be able to use precision scrolling when scrolling back through the terminal. i.e. scrolling 1-1 with touchpad, not just jumping back a line at a time.

This could be implemented as a configuration option - I know in a terminal emulator pixel by pixel scrolling might not be everyone's cup of tea.

wez commented 1 year ago

See also https://github.com/wez/wezterm/issues/382

patrickaldis commented 1 year ago

Ah my apologies, I didn't see this. Out of interest, why do you think it's out of scope for the project?

wez commented 1 year ago

a terminal is a fixed grid of character cells. There isn't a smooth scrolling concept for them. A terminal emulator models the behavior of that kind of terminal. Pixel level scrolling is difficult to map to that because you'd need to dynamically switch to partially showing rows from either the top or bottom depending on the direction of scrolling, and that has ramifications for the rest of the rendering machinery.

It adds complexity and I just don't feel that it is necessary.

tmccombs commented 6 months ago

See also https://flak.tedunangst.com/post/terminal-smooth-scrolling

reneknuvers commented 5 months ago

VT320 terminals had it. It looks awesome, especially on a CRT with slower phosphors. It had issues with eightfolding the redraw time, but it looked great.

Alacritty does this afak.

theherk commented 3 months ago

VT320 terminals had it.

Indeed it does look good. I think it would be a great feature.

nh2 commented 1 month ago

Since it hasn't been said in here yet:

The main UX benefit of smooth scrolling is that it is much easier to see visually how far you're scrolling.

Check this video comparing wezterm with gnome-terminal:

https://github.com/wez/wezterm/assets/399535/be0185af-d371-43ff-8e14-725b34804a50

Hentioe commented 1 week ago

I recommend you try Neovide's smooth scrolling, I was impressed by it.

Install neovide + neovim, run neovide ~/.wezterm.lua, and feel the scrolling.

This user experience is really great.