Skip to content

Add an optional status bar to the bottom #3459

Open

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 easy kinda 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.
  • 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.

Activity

  1. added
    Issue-FeatureComplex enough to require an in depth planning process and actual budgeted, scheduled work.
    Area-UserInterfaceIssues pertaining to the user interface of the Console or Terminal
    on Nov 6, 2019
  2. ghost added
    Needs-TriageIt's a new issue that the core contributor team needs to triage at the next triage meeting
    on Nov 6, 2019
  3. egmontkob commented on Nov 6, 2019

    @egmontkob

    Things like current path

    See OSC 7 in #3158.

    git branch

    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?

    active codepage

    Hmmm, does WT not know the codepage (is conversion done by some layer running inside the terminal)?

  4. zadjii-msft commented on Nov 6, 2019

    @zadjii-msft
    MemberAuthor

    See OSC 7 in #3158.

    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 😉)

    Hmmm, does WT not know the codepage (is conversion done by some layer running inside the terminal)?

    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.

  5. DHowett-MSFT commented on Nov 6, 2019

    @DHowett-MSFT
    Contributor

    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.

  6. egmontkob commented on Nov 6, 2019

    @egmontkob

    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.

  7. mdtauk commented on Nov 6, 2019

    @mdtauk

    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.

    59804721-0fb2fd80-92e7-11e9-9cd6-7d7a242feda5
    57567807-a500cf00-73d6-11e9-806f-39cc316e916b

    59804746-2194a080-92e7-11e9-8ee7-cde122dceb64
    57567803-9fa38480-73d6-11e9-827a-549de5d65a62

  8. DHowett-MSFT commented on Nov 6, 2019

    @DHowett-MSFT
    Contributor

    It's just that, like, everything that we can conceivably put in the status bar is already on the screen somewhere, innit?

  9. mdtauk commented on Nov 6, 2019

    @mdtauk

    It's just that, like, everything that we can conceivably put in the status bar is already on the screen somewhere, innit?

    Progress could be displayed?

    Linux profiles may offer more information to display.

    Azure cloud may have local timezone.

  10. egmontkob commented on Nov 6, 2019

    @egmontkob

    Progress [...] Linux profiles [...] Azure local timezone

    All of these require heavy design and cooperation between components (like Linux, Azure etc.), not just some easy UI work.

  11. 22 remaining items

  12. Jaykul commented on Mar 24, 2023

    @Jaykul
    Contributor

    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...

    1. Current directory
    2. Git branch
    3. Current user
    4. Console encoding
    5. Date and time
    6. Duration of the previous command.
  13. mdtauk commented on Mar 24, 2023

    @mdtauk

    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.

    image

  14. DHowett commented on Mar 24, 2023

    @DHowett
    Member

    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...

    • the working directory
    • how long a command has been running after having been spawned by the shell
    • the output codepage of the connected application
    • the current user1

    Footnotes

    1. I mean, it could display your current login user... but it can't know that when I ssh foo my username goes from being Dustin to being dhowett. ↩

  15. wekempf commented on May 3, 2023

    @wekempf

    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.

  16. An1MuS1111 commented on Mar 15, 2025

    @An1MuS1111

    @fontainevictor09 How did you get your status bar like this?

    I have started to use tmux, but I couldn't find any status bar

    Image

    like yours.

  17. shmuelie commented on Sep 14, 2026

    @shmuelie

    For what it's worth, I wanted a status bar bad enough that I built Terminal Multiplexer for Windows to get it 😅

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

Area-ExtensibilityA feature that would ideally be fulfilled by us having an extension model.Area-UserInterfaceIssues pertaining to the user interface of the Console or TerminalIssue-FeatureComplex enough to require an in depth planning process and actual budgeted, scheduled work.Product-TerminalThe new Windows Terminal.

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions