GUI is a generic swiss army knife. It’s easy to introduce to someone, and it has a whole array of tools ready for use. However, each of those tools is only half-decent at its job at best, and all of the tools are unwieldy. The manual is included, but it mostly tells you how to do things that are pretty obvious.
CLI is a toolbox full of quality tools and gadgets. Most people who open the box for the first time don’t even know which tools they’re looking for. In addition, each tool has a set of instructions that must be followed to a T. Those who know how to use the tools can get things done super quickly, but those who don’t know will inevitably cause some problems. Oh, but the high-detail manuals for all the tools are in the side compartment of the toolbox too.
The only thing worse than reading documentation/tutorials about how to do things in GUIs is writing documentation about how to do things in GUIs. It’s just screenshot after screenshot. And following it is like playing a ScummVM game, only less fun and lots more alt+tabbing.
I do most of my work at the command line, my co-workers do think I’m nuts for doing it, but one of our recent projects required us all to log into a client’s systems, and a significant portion of the tasks must be done via bash prompt. Suddenly, I’m no longer the team weirdo, I’m a subject matter expert.
Having started out in programming before the GUI era, typing commands just feels good to me. But tbh Linux commands really are ridiculously cryptic - and needlessly so. In the 1980s and 90s there was a great OS called VMS whose commands and options were all English words (I don’t know if it was localized). It was amazingly intuitive. For example, to print 3 copies of a file in landscape orientation the command would be PRINT /COPIES=3 /ORIENTATION=LANDSCAPE. And you could abbreviate anything any way you wanted as long as it was still unambiguous. So PRI /COP=3 /OR=LAND would work, and if you really hated typing you could probably get away with PR /C=3 /O=L. And it wasn’t even case-sensitive, I’m just using uppercase for illustration.
The point is, there’s no reason to make everybody remember some programmer’s individual decision about how to abbreviate something - “chmod o+rwx” could have been “setmode /other=read,write,execute” or something equally easy for newbies. The original developers of Unix and its descendants just thought the way they thought. Terseness was partly just computer culture of that era. Since computers were small with tight resources, filenames on many systems were limited to 8 characters with 3-char extension. This was still true even for DOS. Variables in older languages were often single characters or a letter + digit. As late as 1991 I remember having to debug an ancient accounting program whose variables were all like A1, A2, B5… with no comments. It was a freaking nightmare.
Anyway, I’m just saying the crypticness is largely cultural and unnecessary. If there is some kind of CLI “skin” that lets you interact with Linux at the command line using normal words, I’d love to know about it.
typing commands just feels good to me
That’s because for the most part, it’s faster. You don’t have to lift one hand off the keyboard. Also using the cursor and clicking on something requires more precision and effort to get right compared to typing a word or 2 and hitting enter.
This is me kinda bragging, but at my typing speeds, something like
ls -la
is under half a second. Typing cd proj (tab to auto complete) (first few letters of project name if it’s fairly unique) (tab to auto complete), hitting enter, and then typing a quickdocker compose up
is an order of magnitude faster than starting the containers in docker GUI.But tbh Linux commands really are ridiculously cryptic - and needlessly so.
Agreed. Okay, to be fair, for parameters, most of the time you have the double-dash options which spell out what they do, and for advanced users there’s the shorthands so everyone should be happy. But the program/command names themselves. Ugh. Why can’t we standardize aliases for copy, move, remove/delete? Keep the old binaries names, but make it so that guides for new users could use actual English aliases so people would learn quicker?
And you could abbreviate anything any way you wanted as long as it was still unambiguous.
Oh that reminds me of diskpart on Windows. I always liked the fact that I could abbreviate “assign” to “ass”.
Sadly, Windows and “ass” are increasingly easy to associate.
Tbh the terminal is super convenient. No random UI placement. Most things follow one of several conventions so less to get used to. It’s easy to output the results of one command into another making automation obvious, no possibility for ads. It’s pretty sweet
It’s different, it’s unfamiliar territory and I’m pretty dumb. But I need it. I need to get on that linux like a fish needs water. I will be joining the linux soon enough, or so help me God.
I have literally never seen whatever this post is referring to
" i shouldn’t have to memorize commands"
the up arrow:
i dont use the terminal to be productive, i use it to feel like a hacker
Setting the colorscheme to green on black increases hacker rating by 20%
I’ve never met any windows evangelists to be honest. Lots of Apple evangelists though who will spend forever talking about windows. Every developer I’ve met who uses Windows always had a tongue in cheek sort of “well it kind of sucks in some ways but it’s what I’m used to, one day maybe I’ll get off my ass and change OS”.
Reminds me of the “I use Arch Linux btw” meme which doesn’t really happen as much anymore other than as a joke. Also, I use Arch Linux btw
Im not an evangelist for windows (I won’t try to convert you) but I’m unashamed of being a software engineer who uses Windows as my main dev platform
This is a wild guess but is C# one of your most used languages?
At work everything I do is in the Javascript/Web world. Typescript backend, webpack react, etc. I use C++ and C# for personal projects because I personally despise Javascript world
That’s like my opposite haha, all my own projects are TypeScript and vite react, at work I was working with C#. Though I do prefer static typing much more.
Are there people who are mad at other people for using the terminal? Is this really a thing that exists?
Not really. But you know, gotta find ways to feel smarter than other people so here we go.
There are definitely people who think it is reasonable to memorize button locations and 10 levels of menus in GUI programs but would rather go into cardiac arrest than use something like
program --option input-file output-file
.As far as I’m concerned “windows key, start typing the name of the application” or “CMD+space, start typing the name of the application” is the right way to handle GUI. Apple nailed it with Spotlight and it’s vastly improved Windows and a variety of Linux DE’s
Ahh I hate that windows does that. It makes it impossible to do anything else with the super key.
Super+D is what I use but anything but just tap that button and flash your screen with a menu you didn’t want is great.
Uh… Do you think spotlight was first doing search by typing from a hotkey…?
What you’re describing are basic menus and icon search. I honestly don’t get what you’re getting at with this at all, maybe I’m just dumb.
I suppose the point is that the way people interact with GUIs actually resembles how they interact with CLIs. They type from memory instead of hunting through a nested hierarchy to get where they were going. There was a time when Desktop UIs considered text input to be almost a sin against ease of use, an overcorrection for trying to be “better” than CLI. So you were made to try to remember which category was deignated to hold an application that you were looking for, or else click through a search dialog that only found filenames, and did so slowly.
Now a lot of GUIs incorporate more textual considerations. The ‘enter text to launch’ is one example, and a lot of advanced applications now have a “What do you want to do?” text prompt. The only UI for LLMs is CLI, really. One difference is GUI text entry tends to be a bit “fuzzier” compared to a traditional CLI interface which is pretty specific and unforgiving.
thing with gui is you don’t need to memorize button locations and menus. If you do it’s poor layout. Good gui lets you find things you didn’t know you were looking for intuitively, without external resources or manual. CLI requires you to know what exactly you are doing and is impossible to use without external resources. Nothing against terminal but unless you know what you are doing and every command required to complete that action, it’s ass. If gui was so bad and cli was so good, guis would not be used by anyone.
I mean you dont go around copy pasting device ids and running commands for 20 minutes to connect your device through terminal when it is done with 2 clicks in the gui even by someone who has never used a pc before.
To be fair if you want to learn your options (without properly informing yourself using a manual) tab complete can be useful if implemented.
Also most programs come with their manuals so I’d barely call it external. The manuals are also usually better than what I’ve come to expect from the text to go with buttons in a GUI.
Knowing what commands are required is always going to be necessary but there’s also not that many worth remembering.
Usually it’s the other way around
People can do whatever they like, and heck I find CLI intimidating sometimes, but I’m always learning something new a little bit at a time.
I’m tired of seeing it in every field of interest that has any kind of payoff, whether art or FOSS.
“I’m [(almost always) a guy] who (maybe has kids and) has a job. I stopped learning anything after I got my job-paper / degree / highschool diploma. I shouldn’t have to learn anything anymore. I am happy to shell out disposable sad-salary-man money (and maybe my soul idk) to any mega-corp that offers me a “create desired outcome button” without me having to think too much. It’s [current year]! I shouldn’t have to think anymore! Therefore Linux is super behind and only for nerds and I desire its benefits so much that I leave this complaint anywhere these folks gather so they know what I deserve.”
Agh. I gotta go before this rant gets too long lol
I use Linux and I prefer GUIs. I’m the kind of person that would rather open a filemanager as superuser and drag and drop system files than type commands and addresses. I hope you hax0rs won’t forget that we mere mortals exist too and you’ll make GUIs for us 🙏🙏🙏
Tbf, the file explorer is actually one really good argument for GUIs over terminals. Same with editing text. Its either simple enough to use Nano or I need a proper text editor. I don’t mess around with vim or anything like that that.
Its all tools. Some things are easier in a file manager, some things are easier in a GUI.
You’ve angered the Emacs gods 😨
It’s wild that Linux stans are such masochists that they believe they can convert people to loving abuse, instead of just making the interface better to attract users.
What I consider a “better interface” is almost certainly not what a new user would consider a “better interface.”
You’re not Neo.
Use a UI like a grown up