I’ve got to say, some Linux people’s fetish for running everything from the command line gets just creepy at times.

I mean things like “why click a button when you could memorize yet another command instead?” pushed to extremes. I don’t want to memorize a text command to play or pause my music, dude.

“Why click a couple of buttons in a GUI when you can instead slowly drive yourself mad trying futilely to remember the proper syntax for a ffmpeg command?”

EDIT: I love providing TWO examples of the command line being an accessibility nightmare, only for people to argue that ackshually, the real accessibility nightmare is not having to type “ffmpeg -ss 01:28:05.035 -to 01:28:14.461 -copyts -i "input.mp4" -ss 01:28:05.035 -to 01:28:14.461 -c:v libx264 -crf 17 -b:v 1M -vf "subtitles=subtitle.srt,scale=-1:320,format=yuv420p" -c:a aac -af "pan=stereo|FL=0.5*FC+0.707*FL+0.707*BL+0.5*LFE|FR=0.5*FC+0.707*FR+0.707*BR+0.5*LFE" -movflags +faststart output.mp4” entirely from memory.

My mentions right now.

@erkhyan I out loud (over) shared my joy on discovering a use case for nixos because it is a truly beautiful way to manage a system.

Of course everyone knows that using a functional language to declaratively describe infrastructure is optimal.

@erkhyan variant on another joke :-)

@erkhyan

Yeah… about a dozen is where I land too, but it includes vi and knowing how to get out, so...

@erkhyan I would not think about controlling an audio player that has a GUI from the command line. But I frequently just play an mp3 from the command line since i don't have an GUI audio player on the machine that I use frequently enough to have memorized its usage.

Otoh, command line tools often remove another layer of complexity and make debugging easier. If it doesn't work in the shell, don't bother trying the GUI. It's usually not going to work either.

@Zugschlus The entire last paragraph in my post is not just a description of my first-hand experience with CLI tools but also my main counter-example for the command line requiring “less complexity”.
@erkhyan "aplay" and "mpg321" usually work wihtout complex parameters ;-) And they give me tab completion.
@erkhyan because the command line doesn't rely on some flutter or react framework with dubious accessibility because of some dev reusing and kludging a component from somewhere else or forgetting to label the button. The learning curve for the CLI is steeper, but when I hit enter it will work. A command is difficult. An inaccessible button means I have to find new software
@PepperTheVixen The accessibility argument in my case runs directly into the face of “I can and will forget a text command but can never forget what a GUI element looks like”
@erkhyan @PepperTheVixen have you seen the redesign of m$ run menu?
@mist @PepperTheVixen “Have you seen Scylla?”, said Charybdis.
@erkhyan @PepperTheVixen Charybdis can speak?? :D
@erkhyan @PepperTheVixen Accessibility looks like different things to different people.

To someone with difficulty walking and standing, driving a car is more accessible than taking the bus. But to a blind person, the bus is more accessible than driving.

Pepper is blind and GUIs can be quite inconsistent in their compatibility with screen readers and other tools used by blind computer users. Meanwhile for the averagely abled user the GUI is easier to use most of the time.
@LunaDragofelis @erkhyan You make a good point. People have different access needs, and they can sometimes conflict. I think we should give people as many options as possible so that they can use the one that works best for them

@LunaDragofelis @PepperTheVixen I’ll just point out that my preference for GUIs does not come from me being an “averagely abled user” but, as mentioned, because my memory is a lot less dependable than that of an averagely abled user. Also, my ability to mistype is a lot higher than my ability to misclick.

I regularly use CLI tools, but let’s be honest: without autocomplete and a document literally titled “my frequently used commands” open on my screen, I simply would not be able to.

@erkhyan @LunaDragofelis I understand. I made assumptions about your post, and I apologize for that. I'm glad you've got an interface that works for you! :3
@erkhyan Yeah a lot of linux users sure seem to like inventing extra steps to do something.
@erkhyan Why is it creepy? There are legitimate use cases for both that are pretty simple to grasp: Sure, on my desktop, I probably want to use a GUI. But then there may also be a button on my keyboard that I may want to map to a specific action. My window manager allows that button to trigger a command. And there we go - both are useful.
@f09fa681 I’ve just had several people explain to me now that memorizing Just One More Command™ is better accessibility than navigating a graphical interface. Yes, that IS creepy.
@erkhyan Okay, I can agree with that when it comes to the memorizing aspect. 😅 (Yes, I'm converting videos regularly to some width and height with specific bitrates, etc but no way in hell am I going to memorize that convoluted ffmpeg command.)
@erkhyan @f09fa681 Oh, the type of people who never heard or refuse to use even alias, letalone a 3 line bash script. Yeah no those are weird

@erkhyan

fetish for running everything from the command line gets just creepy

Basically Gentoo users.

“Why click a couple of buttons in a GUI when you can instead slowly drive yourself mad trying futilely to remember the proper syntax for a ffmpeg command?”

There are some cases where it's better to use the CLI than the GUI. Take for example HandBrake: to this day, merging 2 audio tracks is still not possible so I have to resort to literally use FFmpeg CLI to merge what I mustn't.

And it's annoying doing that for a lot of files but when this is the only way to achieve it, you have to get to the CLI itself sometimes. Obviously, this kind of command I automate it in a script file so that I don't have to type it each time I need to merge audio tracks.

@erkhyan There is a reason a colossal amount of effort was expended in running away from single tasking and text only operating environments with all speed possible!

Each have their place.

It's also wild some other commenter's justification seems to be 'Unix GUI programming and architecture sucks, so we should use a CLI app' instead of fixing the infrastructure and applications.

I like CLIs, but come on. Last night was an incidence of 'oh, well, this version of tar is a special cut down implementation for the install disk, it's different from the other identically named tar provided in a full installation, and doesn't provide all the options in the man page'

Plus also 'error 21:' (almost certainly a library missing), which is just as bad as the GUI situation outlined.

@erkhyan this is where shortcuts and aliases are my go to. i prefer not to take my hands off my board to use the mouse. it is faster for me to use shortcuts or alias commands with something like dmenu, and my working flow is not impeded

@erkhyan Linux terminal users: UX and UI design is a waste of money and a waste of talent that can be better spent on development.

Also Linux terminal users: using my program is simple, all you need to do is parse an argument through the glupshitto group (if one doesn't exist then make it yourself) with modified permissions that lets you change the config file to input the mac address of the bluetooth device you want to connect, but only if you have the python dependancies loaded into X11 (we haven't developed for Wayland yet) which if you don't have pyfixr 1.2.6.3.10-6 (not to be confused with phfixr 1.2.6.3.10-6) then what are you even doing using a computer in 2026? Oh, the error message says you can't install without merging your pacnew files? Guess you'd better do that *refuses to elaborate*. If you don't know what I am talking about, you'd better get yourself a Linux+ certification ($400 USD) so you too can help all the poor unfortunate souls, like I'm doing right now for u :3c.

@erkhyan If I lost my Bash history, I’d be fucked!

@erkhyan I agree.

The command line should be a last resort if a GUI solution is impossible which is extremely rare, so yeah… it is creepy that Linux folk are completely okay in infodumping so many commands to people that they almost look like hieroglyphs to me.

@erkhyan atleast in my case, its not a fetish, its about having more control.

The way I see it though, I don't think everyone needs to follow one approach? Each of us does what works best for us?

@erkhyan Is this a strawman argument? Does anyone actually use the CLI to pause their music player?

And for your ffmpeg example, how would you do that using a GUI? Sometimes a CLI application can do things that a GUI one can't. And vice versa.

@dahan There are more than a handful of CLI-only music players out there, something I’m only aware of because Linux-centric websites have reported on them. But I chose music players as just one example. As a visual artist, maybe I probably should have pointed at CLI graphics utilities instead?

As for that ffmpeg command, at the very least a (well-designed) GUI would include labels telling me which command does what, rather than send me down a google black hole just to try and figure out how to achieve literally anything. Half that command could have literally been just a handful of checkboxes in a dialog.

@erkhyan While it's certainly possible to write a GUI app that does … whatever that ffmpeg command does, in an easy an intuitive way, I meant which GUI app that exists right now can do that? It's unfair to call using the CLI a creepy fetish if it's literally the only way to do whatever needs to be done.

But even if someone wants to use the CLI over a GUI that can do the same job, I'm not seeing how that's creepy at all.

@dahan I’ve personally experienced at least one instance where a basic function existed within a piece of software (Kate, to be more precise), but simply wasn’t exposed in the GUI at all. You had to know the function actually existed, and also you had to know the terminal function to access it. And to this day, the function in question is still not accessible from the GUI, because it was specifically decided that whoever needed that function could just git good with terminal commands.

Which leads to another of my annoyances: the argument that the CLI is better because an acceptably functional GUI does not exist, but too often, the main reason why a functional GUI does not exist is because everyone who could make one has decided that the CLI’s very existence makes a GUI unnecessary.

@dahan @erkhyan There are all manner of GUIs that front-end ffmpeg for their own purposes. A user of OpenBroadcastStudio wants to resize a video, the convenient drag and drop software translates into the needed ffmpeg calls. But OBS doesn't offer every option available in ffmpeg because that's not what their users need.

If you need an esoteric ffmpeg option, OBS is probably not the tool you're using. ffmpeg can certainly do it via CLI, but then it's on you to read the man page.

@dahan i have a CLI music player*, but it doesnt support pausing**

* its for tracker modules and organya modules because NO audio player loops them correctly for whatever reason
** ^Z technically works
*** i very often forget to actually put on any music

that said the argument does seem overblown to me

@erkhyan I do the vast majority of stuff with GUIs, however I use the command line regularly, particularly since I learned about ctrl+R to search in my history: I don't type 99% of the commands I use, I search them and maybe change some arguments. Of course that requires me to have used them at least once. When I'm assisting someone else, it's much more likely that I can just copy and paste some text rather than browsing whatever GUI they have installed to do something, which may change a lot (and _does_ change a lot when it's something like windows).

To quickly cut and merge video segments I use losslesscut instead of messing up with the CLI. To just reencode videos I use handbrake. But for some other specific things I do need the CLI.

@erkhyan For me alot of things are easier to do from a shell, both for convenience & accessibility reasons. Learning to use it is worth it to me because I'm not hurting myself with a mouse or trackpoint & it's easy for me to learn from a manual.

Some things are still better to do with a pointing device on a GUI though, because they're not practical or are too hard to do with a command line tool. Video editing is a very good example. I end up not doing those things much because of needing to use a mouse, trackpad, or trackpoint. If there was a keyboard driven video editor, that would be awesome for me, but I don't think there is.

@erkhyan `man ffmpeg-filters`? i dont expect someone to memorize all filters, i do expect someone to memorize that input parameters go before the input, output parameters go before the output. for what the parameters are you check the manual.
dont want to use ffmpeg? great! i.. have no idea where else to point you because ffmpeg is the path of least resistance for me

@erkhyan That's not accessible, unless you happened to have memorized it already (which I'm sure people have). The CLI can be more efficient in a lot of cases, and Linux gives you plenty of ways to chain things together in that vein. But it's not helpful if you have to waste time on a journey of discovery for a basic task.

A lot of people come to/stay on Linux because of the CLI's flexibility, and unfortunately you hear a lot about it due to that.

@erkhyan Ignoring the obvious use case of automation, a big reason why I like CLI is that text is searchable. Even if a Linux-style man page is long and complicated, at least I can search it. The same can't be said for a GUI menu. Visually hunting for the right checkbox or field in an arbitrarily-organized set of GUI menus is a frustrating nightmare for me, I am absolutely terrible at it. But with man pages and CLI, I can simply search for what I'm looking for and find the answer right away.
@leaf I have the opposite problem. If there is a GUI option that does what I need, I will always manage to find it regardless of how the GUI is organized; but with a CLI interface, there will always be a frustratingly long period of rereading the manual several times then reading a bunch of online resources before I find what I need.

@erkhyan I seriously feel I am visual search impaired. So my experience of using GUIs is:
1. search in vain for the checkbox
2. web search for where the check box is, but the information I find is outdated so the checkbox isn't actually where the video/image says
3. repeat step 2 ad nauseum. eventually either I find it or I ragequit

Command line interfaces feel cozy. the text can't hide from me. the computer does the work of searching, the precise sort of searching that I am horrible at.

@erkhyan This reminds me of zap, a programmer I met in the later 80:s. He’d habitually write C source by doing
% cat > hello.c
on the command line, and then quickly type his source, line for line, until punching EOF.

He’d *then* do
% cat hello.c | sed <a long line>
which would *indent* the code nicely.

Never saw a compile fail for him. Still we mocked him for that cat.
#unix #c

@erkhyan lol

My head canon is that ffmpeg commands can only be copied and pasted, it is physically impossible to write one yourself 😂

@erkhyan Yeah definitely. I live in the CLI but also prefer a GUI for many tasks. For repetitive tasks I often prefer CLI so it's easier to automate. Also I find it easier to make CLI tools when I am just making them for myself to use, it takes more time to make a nice GUI.

Your ffmpeg example is hilarious, I would say for something like that i'd prefer a GUI frontend, or if it's something I need to do frequently especially for batches, just make it a shell alias/function/script.

The part that I don't quite get is vim users' aversion to using the mouse. I don't usually want to type 20jf(v%y when dragging the mouse to select some text and then pressing y does the same thing...

@erkhyan Linux is great as it lets people use software the way they want to.

The terminal was the original, so piping commands into other commands is great for people who enjoy that, just like guis are great for people who enjoy them.

Being annoyed or creeped out by how other people want to use computers and structure their workflows is weird.

@joelh I have mentioned before that I have personally run into instances before where no usable GUI exists for a specific software function because the basic assumption is that it is available from the terminal anyway.

In fact I have been told several times in this exact thread that I should not criticize a focus on CLI tools because the equivalent GUIs, if they exist at all, will always be incomplete and half-baked anyway.