Edit: I’ve updated this post by adding a really quick video at the bottom — check it out. It briefly shows the results of the concepts in this post.
It was just yesterday when I wrote the Windows Terminal Fun Surprise post. This was a short post about executing the Alt+Shift+D keyboard key combination inside Windows Terminal. I got myself to a point where I could programmatically send in this key combination using the below commands.
Add-Type -AssemblyName System.Windows.Forms [System.Windows.Forms.SendKeys]::SendWait('%+D')
This got me thinking: Can I use this to prep a command for immediate use? I know, what does that even mean? My profile script $PROFILE, contains a good deal of helpful tools. And then it has something like the PowerShell ASCII art below. It’s actually a work logo, but you get the idea. This laptop with the PowerShell logo will stand in just fine, however.
Function Show-PowerShellAsciiArt { @" ._________________. |.---------------.| || PowerShell || || \ || || \ || || / || || / ------ || ||_______________|| /.-.-.-.-.-.-.-.-.\ /.-.-.-.-.-.-.-.-.-.\ /.-.-.-.-.-.-.-.-.-.-.\ /______/__________\___o_\ \_______________________/ "@ } # End Function: Show-PowerShellAsciiArt. Show-PowerShellAsciiArt
As cool as I think this logo is — the one I actually use — and as certain as I am about it appearing every time I open a new terminal, I feel like it’s in the way when I want to start to use my terminal. Like you, I suspect, I want my prompt and cursor in the top-leftish corner and ready to go pretty quickly. The difference is, I’m willing a momentary slowdown. I can do better, however.
The thought was: Can I place a command at the prompt as a part of my profile script, that will allow me to just press Enter to clear the screen? You see, I usually type cls
or clear
, press Enter and then start with whatever I’m doing. I want the logo, but I also want to get started as soon as I can. The answer to that most recent thought though is yes.
In addition to the above Show-PowerShellAsciiArt
function, is one more brief function and a modification to the code that started off this post.
Function Clear-Logo {Clear-Host} Add-Type -AssemblyName System.Windows.Forms [System.Windows.Forms.SendKeys]::SendWait('Clear-Logo')
Now, when my profile script executes, it places the “Clear-Logo” text at my prompt, allowing me to just press Enter to clear the image and start doing what I do at the command line. As you can see, Clear-Logo
is only there to invoke Clear-Host
. Still, I like it better.
Press Enter and voilĂ .
In order to get a better idea of how this works — just in case, I didn’t do a great job explaining it, who knows — I’ve included a short video below. This shows me opening two new tabs in Windows Terminal and pressing Enter after each is open, and therefore, clearing the screen (the logo).