Option to cause window to automatically scroll to bottom when new output is received #12184

Open
opened 2026-01-31 03:08:19 +00:00 by claunia · 4 comments
Owner

Originally created by @richardthombs on GitHub (Jan 25, 2021).

Description of the new feature/enhancement

Add a profileoOption to cause window to automatically scroll to bottom when new output is received

When I am working on ASP.NET with Entity Framework, I have a dotnet watch run pane active.

EF Core is particularly verbose with its stack traces, so often the root error message is so far up the trace that I have to scroll then window up to see it.

Once I've fixed the error and recompiled, it would be great if the pane auto-scrolled back to the bottom so that I can see the output from the current compilation. As it stands at the moment, I have to scroll back down manually each time, which is slow and often I forget and think that I'm looking at a new error when in actual fact I'm still staring at the old one.

Proposed technical implementation details (optional)

I would like to be able to set a flag on panes like this so that they always scroll the most recent output into view.

Originally created by @richardthombs on GitHub (Jan 25, 2021). <!-- 🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨 I ACKNOWLEDGE THE FOLLOWING BEFORE PROCEEDING: 1. If I delete this entire template and go my own path, the core team may close my issue without further explanation or engagement. 2. If I list multiple bugs/concerns in this one issue, the core team may close my issue without further explanation or engagement. 3. If I write an issue that has many duplicates, the core team may close my issue without further explanation or engagement (and without necessarily spending time to find the exact duplicate ID number). 4. If I leave the title incomplete when filing the issue, the core team may close my issue without further explanation or engagement. 5. If I file something completely blank in the body, the core team may close my issue without further explanation or engagement. All good? Then proceed! --> # Description of the new feature/enhancement <!-- A clear and concise description of what the problem is that the new feature would solve. Describe why and how a user would use this new functionality (if applicable). --> Add a profileoOption to cause window to automatically scroll to bottom when new output is received When I am working on ASP.NET with Entity Framework, I have a `dotnet watch run` pane active. EF Core is particularly verbose with its stack traces, so often the root error message is so far up the trace that I have to scroll then window up to see it. Once I've fixed the error and recompiled, it would be _great_ if the pane auto-scrolled back to the bottom so that I can see the output from the current compilation. As it stands at the moment, I have to scroll back down manually each time, which is slow and often I forget and think that I'm looking at a new error when in actual fact I'm still staring at the old one. # Proposed technical implementation details (optional) <!-- A clear and concise description of what you want to happen. --> I would like to be able to set a flag on panes like this so that they always scroll the most recent output into view.
claunia added the Area-SettingsIssue-TaskProduct-Terminal labels 2026-01-31 03:08:19 +00:00
Author
Owner

@zadjii-msft commented on GitHub (Jan 25, 2021):

Alright, well color me surprised. We discussed making this a setting in #2529, and implemented in #6062, also related are #980 and #3863.

Looks like we decided against making this a setting, because

  1. No other terminal emulators had a similar setting
  2. The user can just press a key and leverage the snapOnInput behavior to snap to the bottom
  3. We couldn't find a good way of expressing a setting for this

So I guess now that there's a request for a setting, do we need to re-open that discussion?

@zadjii-msft commented on GitHub (Jan 25, 2021): Alright, well color me surprised. We discussed making this a setting in #2529, and implemented in #6062, also related are #980 and #3863. Looks like we decided against making this a setting, because 1. No other terminal emulators had a similar setting 2. The user can just press a key and leverage the `snapOnInput` behavior to snap to the bottom 3. We couldn't find a good way of expressing a setting for this So I guess now that there's a request for a setting, do we need to re-open that discussion?
Author
Owner

@richardthombs commented on GitHub (Jan 26, 2021):

@zadjii-msft Thanks for considering this. I would say that your reason 2 doesn't reflect all the actions that my particular scenario requires as a workaround. I have a multi-monitor setup with this terminal window on a secondary display. So I have to:

  1. Move mouse over to the window & pane.
  2. Click the mouse.
  3. Hit a key.
  4. Alt-Tab back to VS Code.
  5. Move mouse across monitors and back into the VS Code window.

1 & 2 could be done with Alt-Tab, but there is no telling how deep the required window will be in the stack so there is a bit of a visual recognition delay while hunting for the correct image to Tab, Tab, Tab to.

@richardthombs commented on GitHub (Jan 26, 2021): @zadjii-msft Thanks for considering this. I would say that your reason 2 doesn't reflect all the actions that my particular scenario requires as a workaround. I have a multi-monitor setup with this terminal window on a secondary display. So I have to: 1. Move mouse over to the window & pane. 2. Click the mouse. 3. Hit a key. 4. Alt-Tab back to VS Code. 5. Move mouse across monitors and back into the VS Code window. 1 & 2 could be done with Alt-Tab, but there is no telling how deep the required window will be in the stack so there is a bit of a visual recognition delay while hunting for the correct image to Tab, Tab, Tab to.
Author
Owner

@FlukeFan commented on GitHub (Nov 12, 2022):

Having recently moved to using Windows Terminal, I'm finding the same issue (that it doesn't play nicely with "dotnet watch", and long stack traces where I need to scroll up to see what failed).

So I guess now that there's a request for a setting, do we need to re-open that discussion?

Has the discussion be re-opened?

@FlukeFan commented on GitHub (Nov 12, 2022): Having recently moved to using Windows Terminal, I'm finding the same issue (that it doesn't play nicely with "dotnet watch", and long stack traces where I need to scroll up to see what failed). > So I guess now that there's a request for a setting, do we need to re-open that discussion? Has the discussion be re-opened?
Author
Owner

@dmex commented on GitHub (Mar 1, 2025):

@zadjii-msft

Terminal is using the XAML ScrollViewer control and should already include built-in support for this and a number of other similar requests? The ScrollViewer exposes the the IScrollAnchorProvider interface for automatic scrolling and scroll anchoring:

When the user is scrolled to the very bottom and a new message arrives the content should appear to shift up to make room to display the new message. In reality, what happens is that the viewport needs to shift down to track the new end of the scrollable content.

The special case for edge anchoring:

if both values are 1.0 and the user is scrolled to the end then the end of the content is used as the anchor. If the position of the end grows due to size changes then the new end is used.

https://learn.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.iscrollanchorprovider?view=winrt-26100#special-case-anchoring-at-the-edge

@dmex commented on GitHub (Mar 1, 2025): @zadjii-msft Terminal is using the XAML ScrollViewer control and should already include built-in support for this and a number of other similar requests? The ScrollViewer exposes the the [IScrollAnchorProvider](https://learn.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.iscrollanchorprovider?view=winrt-26100) interface for automatic scrolling and scroll anchoring: > When the user is scrolled to the very bottom and a new message arrives the content should appear to shift up to make room to display the new message. In reality, what happens is that the viewport needs to shift down to track the new end of the scrollable content. The special case for edge anchoring: > if both values are 1.0 and the user is scrolled to the end then the end of the content is used as the anchor. If the position of the end grows due to size changes then the new end is used. https://learn.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.iscrollanchorprovider?view=winrt-26100#special-case-anchoring-at-the-edge
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#12184