What do you envision from the terminal of the future? #12932
Replies: 35 comments 78 replies
-
As an example of the kind of thing we're thinking about: #3121 - shell-driven autocomplete menus that can provide rich info to the user, outside the limitations of the text grid itself. Sure, there are shells that implement similar features, but with the caveat that they need to print the menu to the buffer themselves. This leads to a lot of different implementations across different shells. Having the terminal display the suggestions also allows the terminal to provide semantic context to screen readers. I really don't want this to be something that's Windows Terminal-specific, or based on heuristics. Shells have pretty great auto-completion that can already be configured. So I'd rather let the commandline app do the driving. Imagine if you could have vim/emacs/whoever provide the |
Beta Was this translation helpful? Give feedback.
-
Because you listed Better Emoji Support, I'd love centralized place to share and install themes, sorta like what VS Code has. Easy to distribute or download. That's one of my most used functions in VS Code. I have no idea if other terminals do theme stores -- Windows Terminal is the only one I use, other than default macOS terminal. Extensions in the store would also be fab. |
Beta Was this translation helpful? Give feedback.
-
Autocomplete and autocorrect. |
Beta Was this translation helpful? Give feedback.
-
Tab jumps through long commands. If I need to fix something in the middle of a 4 line command being able to jump quickly through it without holding an arrow for 20 seconds would be nice. :) |
Beta Was this translation helpful? Give feedback.
-
I think this might be a good place to start: Symbolics Demo: Kalman Reti Well... If you really want to get crazy, that is. Objects can be returned as objects, which can be clicked on and altered. For instance, if I go Language integration would be nice. Being able to move between say python objects and pass them around instead of bytestreams. But that might be more a shell thing. Also, shells really shouldn't have to be purely text based. You should be able to go 'cat cat.jpg' and get a picture of a cat in a terminal. You should be able to have a terminal based application with a video embedded. You should be able to use your mouse on things that are supported, and move fluidly between the keyboard based terminal workflow and the graphical results. |
Beta Was this translation helpful? Give feedback.
-
I'd love to see kitty-style graphics support. Examples in use: |
Beta Was this translation helpful? Give feedback.
-
How about “undo?” For bonus points, make something like “rm -rf /“ undoable using some kind of snapshot or diff/transaction/commit system. |
Beta Was this translation helpful? Give feedback.
-
Came across this a few days back and thought it was cool. Maybe some features from this.👆🏼 |
Beta Was this translation helpful? Give feedback.
-
Password plugin support. (Make it Chrome-compatible so I can drop the 1Password extension in my terminal.) This almost works in Hyper.js but is janky. Embeddable terminal. (A dream would be to let me tear off the tab, then drop it into VSCode and vice versa.) Kind of like #12932 (reply in thread) describes for output hooks, a customizable translation layer for input. E.g. if I drop an image, paste as a bytestream instead of a path or convert my typed ASCII to e.g. hex. vi cursor mode for select/copy/search |
Beta Was this translation helpful? Give feedback.
-
How about copying from the terminal not as HTML formatted text, but as an SVG? Terminal UI libraries can implement the feature, but if the terminal itself did, it would be a lot more useful. |
Beta Was this translation helpful? Give feedback.
-
I have a file called "terminal wishlist"! Here's some:
|
Beta Was this translation helpful? Give feedback.
-
Co-Pilot for terminal. Should work for batch file commands, PowerShell and Wsl distros. Can you imagine it being able to intelligently help you automate and complete all sorts of command line tasks? Ten years into the future? It might not even take that long. It would be epic. |
Beta Was this translation helpful? Give feedback.
-
The ability to record input and output (inclusive of things like timing and unprintable and whitespace characters) into a file that can easily be replayed by other terminal users, without actually doing anything (just visually replaying what was recorded). Recording straight to MP4 doesn't always capture what I want. I want to be able to view the file and scroll through and see what happened, and I want to be able to replay that in real time inside some application so it looks like i'm watching a terminal, and I want to be able to share a video of it (if I have to make the video by screen-capturing a replay, that's fine; I don't need an MP4 renderer, really.) Capturing and recording straight to MP4 locks things like theme and font and sizing into the video and that isn't always desired. |
Beta Was this translation helpful? Give feedback.
-
In materia of personalization, the option of "retro effect", wich are located under "default values > aparience", could be fine if we can define the value of the effect, as well as we do with opacity or blur effect. Thanks |
Beta Was this translation helpful? Give feedback.
-
If we break the terminal users into 2 groups: Non-techy folks, and techy ones... non-techy folks don't use terminals -- that's a domain exclusively for power users. I don't have data to back this up, but I'd say that it's mostly IT people that deal with any Terminal app on purpose. Talking specifically about devs, there's a sizeable amount of them that prefer to work from the terminal, if they have the option. This is specially true for people who do text-editing from the terminal, like your average Vim and Emacs user. Those are some of the people most affected by the capabilities of any terminal. Even for those of us who are mainly gui users, it's nice to have the option to do quick edits of files right from the terminal, because it's just so fast to:
To me, it makes sense to put some points in optimizing the experience for the people that mostly use the product. The people that sit at the computers for 40 hours a week creating the other software, for the rest of the population. How about this: ncurses was released about 29 years ago (https://en.wikipedia.org/wiki/Ncurses), and the original was released about 40 years ago. How about we develop a new api for developing console-based applications, specially text-based editors. I cannot foresee a future, ever, in which a sizeable portion of developers won't either prefer, or substantially use, terminal-based applications. So, it seems to me that it's worth investing in making that experience better. And, if the experience is good for them, that will automatically be good for others, too. Guis too over the world and they left console apps completely impoverished. With this, there must also be built-in capability to suspend and resume console-based applications. Again, consider a Vim/Emacs/Nano/Micro like text-editor. One shouldn't have to close the app to get back to the terminal. Switching back and forth between the app and the terminal, in the same window/tab, (suspend/resume) shouldn't be something extra-ordinary; instead, it should be a fairly mundane thing. Ideally, the app should know when it's being suspended, so it can make behavioral choices based on that (though, this is a nice to have, not vital). Additionally, some API for console-apps to invoke other console-based commands, and make use of them as resources -- you know, like apps actually making use of each other. As long as permissions are respected, apps should be able to make use of other apps, just like humans do; whether it's just text output or simple errors codes (like the average legacy apps) or the modern, object-based workflow, pioneered by powershell. There's no reason why console-apps shouldn't make use of the ever growing world of binaries, powershell-scripts, python, lua, javascript, and whatever else it can run in the background, to help them do their Don't think of it like "Only nerds and greybeards use the terminal". There's a reason why it was one of the first interfaces we had for computers -- it's primal and full of possibilities. Console apps are in need of a renaissance. And yes, this would involve other departments to make it happen. But, it's time, ladies and gentleman. |
Beta Was this translation helpful? Give feedback.
-
would it be possible to support text "windowing" so that applications could define textual windows and their contents, but also keep things like Windows Narrator doing the right things, preventing it from reading the entire terminal left to right, line by line? in the context of an application I am running from within Terminal, I imagine a windowing system where I define a window's top left coordinate, and a height and width, all of which are defined as values between 0 and 1. I specify a border, and a shadow, bg color, fg color, etc, except it's all rendered in UTF-8. scrolling within a window will scroll the contents of that window only, if the content is scrollable. the contents of each window are stored locally in RAM and not re-requested each time I scroll a single line in the terminal. I am making no suggestions about any command-line applications, only full-terminal textual applications like text editors or IRC clients, things like that, including SSH applications. I |
Beta Was this translation helpful? Give feedback.
This comment was marked as off-topic.
This comment was marked as off-topic.
-
terminal of the future should be very good
|
Beta Was this translation helpful? Give feedback.
-
If this topic isn't dead, I'd like to add drag and drop sftp support. You can already drag a folder to the command line to paste in a path, but if I'm in an sftp session, it would be useful to drag a folder into the terminal to upload it to the current remote directory. Someone mentioned nushell, but you should also look at clink and oh my posh! for ideas. |
Beta Was this translation helpful? Give feedback.
-
I'd like to know what new development efforts/planned features came of this thread, if that isn't being kept secret. |
Beta Was this translation helpful? Give feedback.
-
I think I can come with 2 crazy ideas :
|
Beta Was this translation helpful? Give feedback.
-
Add support for full font fallback sequences, so that text in other languages can be displayed better. |
Beta Was this translation helpful? Give feedback.
-
Thank you for inviting us to post wish lists :D Here is mine. Sorry if any of it already exists or is on the TODO list. Below, "I" am an application program written in C that uses a terminal emulator to interact with a user. I would like all terminal emulators on all platforms to support everything below, in the same way. (1.) I would like to be able to interact with the terminal only through an input stream of bytes and an output stream of bytes.
Since Windows terminals can be in non-vt modes, it would be nice if there was a vt sequence that is recognized in all modes that would put the terminal into vt mode. (2.) I would like a simple way to ask the terminal what common vt escape sequences it supports for display, using a vt sequence query/response. (3.) I would like a simple way to ask the terminal exactly what it sends (to my stdin) for all key presses and mouse events. (4.) I would like a simple way to distinguish a press of the escape key from the start of an escape sequence. (5.) Suggested alternative solution for 1 - 4: (6.) I would like a way to ask the terminal to not redraw its screen until I finish telling it all the changes to make. (7.) I would like a way to specify left and right bounds on a scrolling region, in addition to the top and bottom. I would also like to be able to erase that region in a simple way. I would also like to be able to command a scroll of that region left or right as well as up or down. (8.) I would like a way to have the terminal append text to the normal screen buffer while the alternate screen buffer is being used and displayed. (9.) I would like to be able to ask the terminal which key combinations are being intercepted by the terminal and OS so that I don't use those myself. (Even better would be if I can negotiate for the right to handle them myself.) (10.) Could I also do file system and serial port I/O etc. on the terminal's computer through vt sequences? That way I could wait for input from any of them with a (blocking) call to e.g. fscanf(). Why? (1.) Because in some cases those 2 streams might be all I have; e.g. if I'm running remotely through something like TELNET, or on a simple embedded system connected through RS232 serial. (BTW can Windows Terminal be used as a serial terminal?) (2./3.) Because in some cases I won't be running on the same computer as the terminal, and might not have a way to check an environment variable on the terminal computer. And anyway sometimes $TERM is a lie. And I might not have access to ncurses/Termcap/Terminfo/whatever, or just prefer not to use them. (1./2./3.) So I don't have to be compiled differently for every platform. (6.) So my user will see all the changes happen instantly, and not see any of the intermediate states. Also, so that not as much time is spent updating the screen. |
Beta Was this translation helpful? Give feedback.
-
I would love to see a way to disable certain types of text rendering. For example, in my particular use-case, I would like to be able to disable italics terminal-wide. They look terrible with my font and having to keep figuring out how to disable them in every program is exhausting. |
Beta Was this translation helpful? Give feedback.
-
Anything to improve separation/visibility of input and output would be great. I thought about a two-pane approach with input/history rows on left and output pane on right but probably this isn't the answer. However maybe you could take some inspiration from IDEs:
|
Beta Was this translation helpful? Give feedback.
-
I've been exploring the capabilities of Windows Terminal and am impressed with its versatility and the sendInput command. However, I've noticed a limitation that I believe could significantly enhance its functionality. I'm not sure if this has been proposed before, so I apologize if this is a duplicate request. In Linux environments, we have the expect command, which allows for waiting for a specific output and responding to it accordingly. Implementing a similar feature in Windows Terminal would be incredibly beneficial. Here's a rough idea of how it could look in the settings: Copy code
{
"name": "Example",
"command":
{
"action": "multipleActions",
"actions": [
{ "action": "waitOutput", "output": "foo", "action": ... },
{ "action": "waitOutput", "output": "bar", "action": ... }
]
},
"keys": ""
} This concept would allow for more dynamic and responsive scripting within the Terminal, adapting to varying outputs and scenarios. It would be a valuable addition, especially for those who require complex interaction with their terminal sessions. I understand this might be outside the current scope of Windows Terminal, or perhaps there are complexities I'm not aware of. Any feedback or thoughts on this possibility would be greatly appreciated. |
Beta Was this translation helpful? Give feedback.
-
as a user of the terminal i expect terminal to report its capabilities in direct way, those are generally described by "modes", oldish DECRQM (DEC request mode) or for example when i launch "hyper" terminal, it identifies as "conhost", but i know that conhost supports mouse tracking very well, but that "hyper" itself dont let events to squeeze to me to parse them. i have a |
Beta Was this translation helpful? Give feedback.
-
Like tmux's send-keys feature, I need to send commands to a specific tab using wt, for example: Thanks |
Beta Was this translation helpful? Give feedback.
-
We wanted to start a discussion to see what kinds of crazy ideas people might have for things that a terminal emulator might be capable of doing. Things that would make you more productive. Things that would enable command line applications to provide new experiences to users. Things that you might imagine every terminal does in 10 years, but no terminal is doing right now. What does your terminal environment look like in 2030?
I want folks to really go wild with their imaginations here. We've obviously got years of work planned here, and tons of great ideas we're already aware of and working on. But I'm looking for things that maybe no one else has thought of yet. The kinds of ideas that might take a few years for the Terminal to get to, but we might want to point ourselves in the direction of now.
For clarity, lets skip over things like the following. We've heard these requests before, they're good ideas, and they've likely got precedent. They're also the kinds of things we're already aware of and already planning (to the best of our ability).
experimental.useAtlasEngine
) #9999Or really, anything on the first few pages of https://github.com/microsoft/terminal/issues?q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc, we're aware of.
Maybe you want collapsible regions in the terminal. Maybe a notebook-like commandline interface, where each command runs in its own buffer. I'm not necessarily looking for features that a shell (
bash
,pwsh
) should provide, but I am interested in features that the terminal could provide for shells to add new features. I don't necessarily want Windows Terminal specific ideas, I want whatever you can imagine.<discuss>
Beta Was this translation helpful? Give feedback.
All reactions