_______ _ _ _______ __ __ _______ _______ __ _ |______ | | |______ \_/ |_____| |_____| | \ | ______| |_____| | | | | | | | \_|
sf.me > Blog > Why I Use Terminal Apps
Posted on: 13 March 2023
Reading time: 5 min
“Ah, yes. Graphical-user interface (GUI) apps. They are so comfortable and easy to use. You just click some buttons and get your computer to do what you want.”
That was what I thought before I learned how spectacular terminal applications are. I do not use a calendar or email GUI app. I use its terminal equivalent. Specifically, I use khal for my calendar/to-do, neomutt for my email, sxiv for my image viewing, mpv for my video playing and even Neovim with Vimwiki for my notes. I am also switching to apps that work better with terminals. What prompted me to switch?
Firstly, I realized that apps that allow me to use my keyboard and reduce mouse usage to as little as possible saved me a lot of time. By a lot of time, I don't mean a few minutes. I mean hours in the long run. Moving your hand to your mouse and clicking a button takes at least three seconds. Multiply that hundreds of times a day and 365 days an year. That leads to a lot of time wasted just moving your hand to your mouse.
Also, this prevents wrist strain in the long run.
The speed of terminal apps have helped me get a lot more productive. Getting myself to start working immediately helped me a lot. I use Neovim for my text editor, and whenever I need to write text, its much faster to press a shortcut to open a blank file in Neovim than to open a GUI equivalent. It is faster pressing a shortcut than to open my applications menu and search for my calendar app and wait a few seconds for the bloated app to open up. Terminal apps are just more lightweight. As a result, they operate faster and save me more than just a few seconds.
CLI apps are more standardized. With a GUI, the procedure for solving an issue or using the application's functionality is similar to this:
This is the sole reason that you see the terminal being used so much in Linux. It's easier to say “Open your terminal and type this” than to blabber a long list of instructions that will become redundant if the application in question decides to change their UI in an update.
Due to the lightweight nature of the command line, your tools can run on just about any computer. It does not matter if your computer has a Pentium processor or a 12th-generation i9. GUI tools have system requirements and if it is a robust tool with a fancy interface, chances are that the requirements just for the app to look good knocks that tool off your app list on your 10-year-old computer.
While GUI apps are simple to use initially, your speed using the apps remains slow all the time. Sure, you may learn where every button is and be able to open any setting you want quickly, but that speed is nothing compared to one of a command line. With a command line, your speed is slower than a snail at first. However, after some time of using the program, you can do things at a similar speed as a GUI app.
If you daily-drive a terminal program, it takes only a few days for you to become faster at it than using a GUI program. After that, you will be able to understand your most used commands and use aliases to shorten them.
For example, if you view your free space regularly, instead of typing a 50-character command to print your free space, you can just alias that command to 'free-space'. Doing this will make it so that whenever you type 'free-space', it performs the aforementioned 50-character command and displays the output. This will save your more than just a few hours of time.
With terminal apps, you have a plethora of choices. I can almost guarantee that an app with functionality you wish existed does exist in the form of a command line application. There are obscure apps with spectacular functionality which can change your computing experience that you will miss out on if you stay away from the terminal.
When it comes to GUI apps, you have to be honest. They do not have 100% functionality. It is simply implausible to fit every single function in a GUI app. Doing so would result in a lot of code to maintain, an extremely heavy app and a confusing layout. However, with a terminal app, all you have to do is type:
man command
or
command --help
and get the complete functionality of the app, all within less than 5% of the app size of its GUI equivalent.
All GUI apps are basically middlemen for the command line. They essentially use the command line for you. When you ditch the GUI and go straight for the terminal, you talk directly to the computer in a way in which the computer understands.
When people first look at the terminal, it becomes set in their mind that it is difficult to use and that mentality stays for an extraordinarily long time. Due to this, they never experiment or even open the terminal application. If they run into an issue which requires the use of the terminal to fix, they decide to just live with the issue instead of using the terminal. However, if people use the terminal for a few weeks, they realize that it outpaces almost every other GUI app in almost everything.
... including terminal applications. Terminal applications are amazing. They allow me to do so much. However, there are extremely rare cases in which I have no choice but to use a GUI. This is if the GUI application in question requires you to use only their app. There are also some specific use-cases in which GUI apps just make more sense. Video editing, advanced photo manipulation and 3D modelling are great examples.
...terminal applications should be used as much as possible. They are swift. They can be used quickly and also use less resources and space while running on just about anything. Futhermore, they are not as difficult as they look and can be used for uses which GUI apps do not have. They cannot be used all the time because there are rare exceptions in which GUI applications have to be used. However, these are so little that I do not mind keeping GUI apps just for these use cases.