Repository navigation
Open
Labels
Area-ExtensibilityA feature that would ideally be fulfilled by us having an extension model.A feature that would ideally be fulfilled by us having an extension model.Area-UserInterfaceIssues pertaining to the user interface of the Console or TerminalIssues pertaining to the user interface of the Console or TerminalIssue-FeatureComplex enough to require an in depth planning process and actual budgeted, scheduled work.Complex enough to require an in depth planning process and actual budgeted, scheduled work.Product-TerminalThe new Windows Terminal.The new Windows Terminal.
Milestone
Description
As seen in the original mockups:
We've apparently discussed this in a ton of threads but never had an issue for it. So this is that issue.
Things to consider:
- It must be optional. Many users won't want a status bar.
- How does it play with tabs on the bottom? See Feature request: Enable customization for tabs on bottom/right/left #835
- What info would a user want there?
- Username, machine name, date/time are all
easykinda Hard, because of SSH. - Keep in mind that many things from the shell (child process) we won't be able to access. Things like current path, git branch, active codepage.
- Working path might be possible with OSC 7 (in Open new terminal tab in same directory as existing tab (OSC 7?) #3158), though, it'll only work for shells that set it (which won't include
cmd.exe).
- Working path might be possible with OSC 7 (in Open new terminal tab in same directory as existing tab (OSC 7?) #3158), though, it'll only work for shells that set it (which won't include
- Username, machine name, date/time are all
- How does the user specify the contents of the statusbar? Alignment of pieces of info?
- Should the user be able to add buttons to the status bar that perform actions? E.g. a "gear" button to quickly open the settings?
These are all things that should be enumerated in a spec before we review a PR.
Reacted by Egmont Koblinger, KytoSai, Chester Liu, eFiggy, Xinyang Li, Robert Jordan, Jo Kachikaran, Davy, キャラ, 19lmyers and 41 more
Reacted by Adrian Widerski, Sohail Rajdev, Robert Jordan, Davy, Luan Vitor Simião Oliveira, Jeremy Shore, Marlon Macedo, Robert Poenaru, Eric Tian, Keyvhinng and 7 more
Metadata
Metadata
Assignees
Labels
Area-ExtensibilityA feature that would ideally be fulfilled by us having an extension model.A feature that would ideally be fulfilled by us having an extension model.Area-UserInterfaceIssues pertaining to the user interface of the Console or TerminalIssues pertaining to the user interface of the Console or TerminalIssue-FeatureComplex enough to require an in depth planning process and actual budgeted, scheduled work.Complex enough to require an in depth planning process and actual budgeted, scheduled work.Product-TerminalThe new Windows Terminal.The new Windows Terminal.

Activity
egmontkob commentedon Nov 6, 2019
See OSC 7 in #3158.
Once you know the current path (and it's a local one), it's easily doable. Maybe watch for the change of whichever file tracks the checked out branch, or update every few seconds, or update every time OSC 7 is reissued.
Just wondering: Would you hardcode getting the git branch, or maybe have a plugin system that can be extended for other VCSs too?
Hmmm, does WT not know the codepage (is conversion done by some layer running inside the terminal)?
zadjii-msft commentedon Nov 6, 2019
Oh lawd, I forgot that existed. That is excellent, and should definitely be considered for part of this. I'll update the OP. You're right that it does make displaying the git branch much easier (so long as a shell actually sets it 😉)
Well no(ish). WT is always running in 65001. Conpty is the layer that's responsible for the magic translation here - it's the one that's actually running in an interesting codepage. It's the one that is changed when the client application calls
SetConsole*Codepage. Then conpty does the magic to translate that to UTF-8 for the terminal to consume. So the interesting codepage, the one the client app is running in, isn't really exposed to WT.DHowett-MSFT commentedon Nov 6, 2019
Even username/machinename are fraught with peril for anything except local sessions. There's heuristic detection, sure, but that'd require us to crack the title (if we are graced with a shell that sets it) or figure out which part of the output stream is a prompt.
egmontkob commentedon Nov 6, 2019
Username and hostname can probably be squeezed into OSC 7 without problems, using the standard file://username@hostname/path... syntax. Alas, it needs efforts from OSes (shells etc.) actually emitting it, which doesn't really seem to happen.
mdtauk commentedon Nov 6, 2019
I'd like to throw my voice in for enabling the status bar to be in the window shell itself, but also to be placed within the terminal area itself, using the profile's colour scheme.
DHowett-MSFT commentedon Nov 6, 2019
It's just that, like, everything that we can conceivably put in the status bar is already on the screen somewhere, innit?
mdtauk commentedon Nov 6, 2019
Progress could be displayed?
Linux profiles may offer more information to display.
Azure cloud may have local timezone.
egmontkob commentedon Nov 6, 2019
All of these require heavy design and cooperation between components (like Linux, Azure etc.), not just some easy UI work.
22 remaining items
Jaykul commentedon Mar 24, 2023
The things that are really worth having on a status bar are things that the shell doesn't know about, like the zoom level, or that change during the execution of a command, like "how long has this command been running" or "what input has been typed" (because it might not have been read by the process yet) ... or the current input/output encoding.
I'm sure a case can be made for additional controls, like maybe a slider for changing the window opacity or zoom level, or a button to send CTRL+C, or to open the command palette...
But yes, a lot of people would take information that would be better in your prompt (so there's a record of it left behind in the buffer) and happily see just the current value in the status bar instead...
mdtauk commentedon Mar 24, 2023
In the spirit of the customisation encouraged with Terminal - how about allowing the user to choose what appears in a status bar?
You could use a shorthand for various content and then display what is chosen.
DHowett commentedon Mar 24, 2023
I don't disagree that the status bar could be used to display things the shell doesn't know. However, it also cannot be used to display things the terminal doesn't know.
Unfortunately, that includes things like...
Footnotes
I mean, it could display your current login user... but it can't know that when I
ssh foomy username goes from beingDustinto beingdhowett. ↩wekempf commentedon May 3, 2023
The shell should be in control of what's displayed, much like it is with the title. Basically something like https://mdgrs.hashnode.dev/building-your-own-terminal-status-bar-in-powershell but applied to the status bar instead of the title bar. There's all sorts of customizations done out there, targeting the prompt, the title and evidently the status bar. Just make this controllable from the shell and let users go to town. It sounds like https://vt100.net/docs/vt510-rm/DECSASD.html is intended to do just this.
The shell knows most of what a user would want displayed, for the things it doesn't know you could specify certain placeholders that the terminal would replace and fill in. Give a way to write to the status bar and third parties will find ways to make it easy to create "beautiful" status bars, and end users will customize it to their needs.
I've customized my prompt to the point of it being distracting, with information that is stale as soon as it's displayed, etc. Having a place to display real time information that's always visible can elevate the experience tremendously. The DynamicTitles linked above really illustrates what can be done, it's just unfortunate that the title bar isn't a good place to display a lot of this, especially with tabs.
An1MuS1111 commentedon Mar 15, 2025
@fontainevictor09 How did you get your status bar like this?
I have started to use tmux, but I couldn't find any status bar
like yours.
shmuelie commentedon Sep 14, 2026
For what it's worth, I wanted a status bar bad enough that I built Terminal Multiplexer for Windows to get it 😅