 We are inside of all of the geeks and nerds and normal people that are using console and other terminals right now. How do we make people using it? Should users grab their own way? It's really hard to start. And realistically, there is no way that a Linux user will not use the shell. Even if we are selling them the idea that Ubuntu is easy, you can just download, install and use it. All of the tutorials are based on shell. All of the Wikipedia stuff are also in shell. Whenever there is a tutorial with pictures, sometimes there are pictures of shell comments that the user should type to. But for a beginner, this is not really good, and sometimes even for a non-beginner. I've seen and I've been an admin on a few distros on Telegram, a few distro channels, where if the user asks some answer about how to use a well-known clear application, he will be treated as someone not worthy, because we do have a little bit of guru syndrome that if you are not up to my standards, then you should study alone in the dark in your mother's basement, because I still cannot teach who you are not up to my level. But this is really not good. I've tried to do an experiment with many students and many terminals to see how the user would actually handle it. Yeah, I think I already said that. So how pure a terminal is? It's common that within KDE, people tend to say, I'm not going to use KDE, it has too many options, it is bloated. I want something sleek, I want something that's pure and simple. But a terminal, a pure terminal for a user, it's not simple. So my army of newbies from more than five different universities tried to use all of those terminals. They tried X-term, they tried GNOME terminal, Terminator, Console, KDE, URX, VT and ST, with those questions. How do I change the text size? How do I open this file? How do I search through the history of the terminal? How do I open another program when there is already an application running on the terminal? How do I copy paste some text? How do I see a preview of the file? Which folder am I on? I think that we take for granted because we know how to use it, but not for people that are starting. So a few different universities. I have an army of minions that I basically attacked and said, man, you are on this university, your teacher gave your time to me and now I control your life. Do this for me. And how do I change the text size? Zero people on X-term were able to do it because on X-term you actually need to find a really strange X-authority file and type a really different way of setting up a font. URX, VT, the same thing, they were not able to change the font size on ST. They were also not able to change the font size on ST, you actually need to download the C codes, change the font size on C code and recompile. GNOME terminal, 90% were able to do that, which is really good. The only problem on GNOME terminal was the name of the option. Instead of font size, it had zoom. Terminator, 100% console, 100% and kitty, I'm not sure if all of you know kitty is a new terminal based on Rust that it's getting some traction, so I put it there too. And console and terminator, the only ones that people actually manage to change the font size, something that it's really simple, but some terminals, no. How do I open this file? This is really nice. So besides console, not a single student. And I'm not talking about preschool kids, I'm talking about technical students on a technical university. They were only able to open a file, an image on console, and maybe why it is so complicated to open a file. Because this is how they try to open the file. They try to run open image. There is no open command. They thought that there is an image command to open an image. There is nothing related to that. And they tried to open viewer to view a file. Nothing related to that. XDD open, it's not known. It is not easy to find out. But why they were able to open on console? Because you right click on the file and click on open. It works. I just said that. How do I search through the history? Same thing happened. Xterm, ST, and Kitty, there is no way to search the history besides running the application piping through GRAMP. You have no idea how hard is the concept of piping. I was talking with a C++ developer, UNIX C++ developer on one university, and I have asked him to grab through history for me. He said that he looked on Wikipedia on how to filter commands. And he sent me the command that worked. But in his explanation, he said, I've seen this, but there is this weird vertical slash that I have no idea what this does. On GNOME Terminator and console, it was way simpler because there is a quick way to find the filter. I've asked the people that did not manage to do that on GNOME Terminator and Terminator on why they could not find it, and it was because it was hidden behind the mini while in console, it was on the toolbar. So nice find icon there they were able to use. How do I open another program? So basically the idea is I have a terminal running vi. I went to open another program. How do I do that? ST and extern, zero, Kiri now, Kiri has something. Kiri also works with tabs. So no user were able to send application to the background and open application on the foreground, but they were, ah, sorry. Sometimes my English fails me. Sometimes they were able to open tabs or splits and open two applications there. That was good. How do I copy paste text? Now this is nice. So Kiri, GNOME Terminator and console, they have right click copy, but whenever people were trying to use the terminal, the keyboard, they killed the application because control C is not something that you don't determine, and we know that. We all know that because we are used to it, but not for newcomers. On Mac, this actually works because Mac uses a different command to control C, control V. Maybe we should, and we have a patch open for that already, maybe we should give the user the option to control C as control C, and he can change wherever he wants to control C to Q application later in the future when he is more used to that. And how do I preview the file before opening it? Only console there. Which folder am I? This was actually nice because console and terminator, we actually give the folder on the toolbar, so they were actually able to see, but the user's new PWD. So it was a nice surprise for me. And this is just me to show you the myth of a simple terminal because whenever people say to me, I want a terminal that is simple, but simple for who? If you are talking for somebody that it's used to Unix, if you are talking to somebody that really knows the way on the terminal, every terminal will be simple because every terminal will have the ability to do stuff. And the shells, they are actually complex because we have a lot of things that don't actually mean anything, like grep, like more, like less. If you're talking to a newcomer, they have no idea that more is less, that you can actually look for a file using cats or bats. Why do you have animals there? The most simple terminal is the harder for the user to use it. Yeah. Those are the things that I actually dislike from the 70s, SHCP and VRME. We can use move, share, copy, remove nowadays. We can remove XDZ open and write open because even if you ask something simple, like go with a man, they are not able to quit because there is nothing indicating that pressing Q will leave that. And then you have VI, that it's a double column and a different letter, or IMAX, that it's a really weird key combination. Sorry. So opening an application is also complicated, even if you know the name of the application. Like I'm gonna use, I did not actually wanted to use this application, it's the one that it's my head right now, so sorry people. If you install GNOMETerminal, the GNOME console, sorry, not GNOMETerminal, GNOME console, and you type GNOME console on the terminal, nothing will happen because there is no GNOME console there. If you try GNOME and then press tab twice, should show the application. It will not appear there because GNOME console has, it does not even starts with GNOME. If you just type console because maybe they voted slightly similar name to it, it will also not open because there is nothing related to console. GNOME console name is KGT. White has a K, it's not even a KDE application. But it's really unintuitive when you are using visual applications and the terminal application. And the student, one student cried in despair. Another thing that I ask them to do, compile an application with IHRs. I've prepared them a really nice template based on the IHRs for them to fix. I've passed it on STD string to STD string. To, sorry, I've passed it a Q string to an STD string and I've asked them to look in the code where it was wrong just by looking at the compile output IHRs. And I'm not sure if you ever try to do that but the actual amount of IHR lines for just sending a Q string to an STD string is around 500, no, sorry, 1,300 lines of code of IHR. Just for one single line. It's impossible to find IHR. So you need to be able to search. And mostly they couldn't. Now how do we actually make this easier for them? We implement things that simulate file manager application. We give them hints whenever they want. We give bells saying, man, this is wrong. You can try to do something different here. You add them a way to manage their window instead of allowing the window manager to do its job because a window manager does not really know that you are using a terminal and terminals sometimes have a different semantics and have sensible context menus. This is a pain point for me because we don't have sensible context menus on case yet but it's something that I want to put. And all of the applications, all of the things that I've asked the students to do were actually finished in console correctly and this is so good because I'm not going to use KD software, it is bloated. Yes, we have a lot of options. That's the reason that people are able to use our software. But we are far from having same defaults. We need to fix that. Some users struggle to try to find something that was in front of them. Now, what new users like on the terminal? They really like the search and the forward and backwards so you could search up and down. They like the tabs. They like the idea that you can configure your tab title. They like the idea that you can set colors to your tab title. They like the splits. They like the scroll back with unlimited lines. They like the graphic support and this is something that I will show in a bit and they really like the menu actions based on file folder and the advanced users. We had a few, like three or four advanced users there. They really like the plugin system and the multiple terminal broadcasts. Now, multiple terminal broadcasts, it's not something that a lot of console people say or use but it's there and it's nice. Basically, you can have as many tabs and splits as you want. You type in one tab and you are typing all of them at the same time. You have six of supports. You have right to left and right to left and left to right text. And you have quick access to SSH. Just like Windows users, when they are migrating to Linux, they miss that. They want a way to use something like Putty on now, we can. And they have semantic terminal actions. I think this is one of the few terminals that implemented that and I believe that the developer is here. Maybe, yes, he's here. I love you, dude. So basically what the health semantic implementations is. Now console can understand input and output. So you can type tons of comments and selects only what you type it instead of selecting all of the text. It can understand the beginning and the end of the comments. So you can visually see where something started and stopped. If you are running those comments that gives you tons of output, this is so good. You can basically copy the last secluded comment just by Ctrl-Right-Shift-C. And without selecting anything, this is so cool. And different actions based on positions of the click. So I'm gonna try to show that as soon as I am able to move this to the, to here. Ctrl-Shift-P, mouse, mouse, mouse. I lost my mouse. Yes. Wait. How do I pass this? I'm gonna move this here. Cool. So my mouse is a little bit slow here, but this will work. I hope I'm gonna kill the presentation. No, I'm not going to kill the presentation. Let's open a new thing. Plugging system. So I have here an SSH plugin that I can basically double click and I can connect to my SSH. This is initially read from the SSH config and I have all of my common access SSH servers here. If you do not want to add something from your SSH config, you can add new ones just by clicking the buttons below. This is so slow. Close this. Quick comments. So I know that it's easy to save a comment on any file, basically any Bash file or even on Bash profile or ZSH RC, Bash RC. I know that. But sometimes you use more than SSH, you use, you are able to log in on a secure shell. You have your local shell, you have your local shell running a different shell like ZSH or Bash. And here I have my common access functions. Like if I want to reformat modified files or remove files from the Staging area on Git because I always forget how to use those. So I have quick access here with names that can contain spaces so I can actually search. And for me, this is so useful. And whenever I'm typing those things down here, typing them down here, if I start to type temp equals to, equals to slash temp one. You can see that I have a tiny box here that are yelling at me about Bash mistakes because I'm also running the shell check always. So it will only allow you to save your common access thing as soon as you are typing things without averse. Showing this to the new commerce, they also really enjoy that because whenever they are typing Bash, there is nothing telling them to my mates. There isn't ever here, fix it. I am trying now to implement this as soon as you type. Let's see if I would be able to do that in the near future. Which folder is this? Downloads. I have here my pictures, settings, here, mouse, mouse. Now I can basically access quickly, which is really cool. And this is not just on the folder. If I open an application here, like vim test, and I write something that it is on the same folder, I will probably also be able to, oh, it actually worked, but it's on my screen. So you cannot see the tooltip. I think this is a cute bug. It's not showing the tooltip on the right place. Yeah, no, from here, not where it should show. Yes, good. And when I was doing this, I was also talking to another colleague from Haiti. He wanted to try to implement a few things inside of console and said, I work with HTML all day long, but I do want to do something that it's useful for me because I like to use VI with HTML. So he implemented, can you see that, no. Wrong thingy, sorry. No, yes. So this is a color, but which color is this? We can allow console to show you. And now if you are a graphics user, if you need to generate some graphics, like sometimes you use GNU plots. With GNU plots, you need to say, I'm going to use 6.0. 6.0 is a terminal-based graphical mode. And you can ask to plot something. And it will plot directly on console. I'm going to quit here. Clean the terminals, so there is no trash, and I'm going to do some echo, a, b, c, l, s. And now I can select everything, right-click, and I have some different types of copies. Because it understands that it's a location, it understands that it's a command. And it's been really, really awesome adding those things to console. And basically I've spoken so fast, and I think I still have like half an hour, but my talk is over. So if you have questions, or if you want to join me to speak some stuff, or you want to help console to get better, please do. Do we have questions? I see one here. I'll be looking at the online questions as well. So how are you actually doing this? Are you parsing the current line in the buffer, or is there another way of getting the context? Doing what? I've shown many things. I mean, how do you get the context for what is actually selected, for example, like if it's an image or is it a... This is a question that it's better that he answers because he was the implementer of that. No? Yeah. Okay. I think he asked about the tooltips. And this is what I did. It's the tooltip or the selection? No. So I mean, how do you know... So you showed like context-sensitive menus, like if you right-click on a file, it'll show you open the file, if you right-click on... So it knows the difference between a file and a folder and things like this. So how do you know... Where are you getting that context from? Are you just arcing the current buffer? Or is there another way of getting the context where you know for sure that this is a file or a folder? So this... Oh, I actually forgot to say a few things. I will say them later. This is actually something that I did not... Sorry, you even mentioned the other thing. Basically, whenever you ask Bash to change the directory, Bash tells us where we are. So for the directory, it's that. As soon as I know that I am on a directory, I will parse everything inside of the directory and I keep in memory. Whenever there is text, I'm running a RegEx patrol of the files on that directory. And then if I find something that it's there, I know that I can activate a tooltip and I know that I can activate some in it. And I know if something is a directory or a file. Any other questions? Yeah. Sorry. So basically, console has everything that we were looking for. It has speeds, features, advanced features and extensibility via plugins. But we also lack a few things. We lack window support and this is so important. Like we will not able to win the console race without window support. We need proper macOS integration. We do have some macOS integration, but as soon as you start to use the mac terminals, it integrates better with the OS for some reasons. For instance, we are not able to fetch some shell environment. We also have export and share profiles. We basically, the profile system within console is good, but it's too complex. We need to simplify and make people actually use it properly. Some people were using it for managing SSH. This was my first thought about using the plugins. We could add, copy and paste the six-cell images because now that we have an image there, the image is a Q image. We are basically painting an image and we could right-click copy it. We could do shared sessions. For the six-cells? Can you explain the six-cells? Yes, yes I can. So six-cells are terminator-based images from the 70s. It is a technology that we're using to send stuff to the printers. That it could use those matricial printers to print images. And it got a research for a... It got a research a few years ago. People in Japan, they really like six-cells and they started implementing things on top of that. And then I realized that I did not have any kind of images on my terminal that I could actually relate it to. So I've implemented the two tips. But the two tips are fake images. They are not on the terminal. They are a layer that I'm creating on top. And then I've started trying to add six-cells and I failed completely. It was horrible. I could not understand the documents from the 80s. And then this lovely person joined the project and it implemented everything. New plot again. So this is a six-cell. You can see that this is actually graphical. This is not text. And it's completely within the terminal. And with this, you can actually use text-based browsers and see all of the images. My console doesn't do this. Yes. Is this released or how do I enable? I'm sorry, I'm not understanding it's muffled. How do I enable this? I'm trying to do the previewing an image and it doesn't work on my console. Is this released? The preview mouse overlay or the preview six-cell? When you hover something. Okay, so this is one of the things that I said that we need to get better with better defaults. You need to enter on configuration, configure profile, mouse, advanced, underlying links. That's too much, too much. I am fighting to have this enabled by default. But the thing is, the last time that I got something enabled by default, I got yelled at. I do not like to be yelled at. There is a question here, I think. Are there any works to change, to shelf dependent behavior? Because I remember with my last jail, I could just copy in file names and they would be properly escaped. But now it changed the shell and now console does not escape how my shell provides it. So some things need to, seems to be necessary that is shell dependent. Are there any ways to do that with console? And I'm saying that I'm thinking mostly because I could not actually understand the question. But can you repeat slowly? You have file names with spaces or other things that needs to be escaped. So you select something and you paste it in. Okay. And yeah. So no, no. We have no idea if there is a space we are not able to actually find that this is a file. The shell must provide us like ZSH does with quotes. Or a philosophical question on direction. You're trying to make console easier to use if you're first user never using terminal before. But at some point they're going to be in an SSH session or be using known terminal or something or the emergency shell and this stuff's not going to work. At what point is a balance to and for teach people how to use what exists versus put a layer on top, a level and direction? That's an awesome question. So we are also trying to do everything by the standards. The improvements that he did on console are back at by standards and I am also pushing some standards all around. I'm talking to other developers of other terminals to implement some stuff. So the mouse over on files. I'm trying to push that. I'm trying to push the URL escaping console actually now can embed a URL link just like a normal link. Like I click here that will actually send you somewhere. Most of the things that we are doing are back at by standards. So if the users starts to use now maybe in the future other terminals will implement it. And another thing is usually you start with something simpler and then you start to like and to enjoy and you search for things. So we will be able to be a better shell user if the shell is not punching with the face in the beginning but it gives you time just to look for proper ways to do afterwards. Sometimes you just want to be able to install something because your video player is not playing a video and then you search the tutorials control C control V works. And after using the command a few times you actually start to understand the command and you actually start to make sense and you stop using the things that are made for newcomers but they should be there to help those people starting. Make sense? Hi, have you tried or have you have a look at fig.io? It's an autocomplete system for terminals which shows the autocompletion with a full graphical interface. So instead of autocompleting with text it shows images and autocompletion. I'm just wondering if you've had a taken a look at that and are you working towards it? Right now I'm not sure if it's open source or proprietary but it's only available on Mac and it's certainly a venture backed company so they have their own agenda. It is in my agenda. I have a kind of working implementation that has visual autocompletes. I'm also using a few other applications that I'm trying to force them to have a visual autocomplete for instance the TLDR. So yeah, it is not working yet but it's something that I am trying to do to push into console. Especially because then you can quickly search for things easier than on the text. Mouse clicking, because mouse clicking is so good when you can point click and make it work. It occurs to me that the way you're getting the context for where a file is or, so coming back to my original question it occurs to me that this might not work when you're on an SSH session for example. Yes, that's correct. And this might be a usability thing where people expect it because newcomers don't understand maybe the difference between being in an SSH session and being in a normal session. And they might have expectations and then suddenly file a bug saying hey, suddenly my image hovering doesn't work. That is true. So do you have already ways to handle that? No, no I don't. When I was developing that I also had that problem. I've talked to a few people and the basic consensus was that's mostly okay because at least it works on one place. And now that we have six cells we can have six cells through SSH that will work. And we need to work within the limitations of the system. So unfortunately I don't think that I can do anything related to two tips or to show images on hover or to do actions based on files within an SSH server unfortunately. I really wanted to but I don't think that I can do that. If you have any idea on how can I do that I'd be lovely to understand because I've tried and I failed. One last question. Oh, there is another one there later. Did you look at how it compares to Microsoft PowerShell at all? You've spoken too quickly. Did you look at how it compares with Microsoft PowerShell at all? I've looked at a little bit on PowerShell and I've also looked at on, I think it's Warp. So basically I was looking at different terminals on different systems when I was developing my things. The biggest one that I tried to do the same features was Warp not PowerShell, especially because they just got a 20 million grant for the terminal and I was shocked. Okay, this is probably not for now, but for both. But I think I have some ideas about how to implement tooltips over FH. Oh, cool. That's awesome. Okay, that's all the time we've got. Thank you very much, Thomas. Big applause, please.