A gui is helpful sometimes, but there’s a lot of cases where there’s no feasible way to make a good gui that does what the terminal can do.
Right tools for the right job.
For example, a gui to move a file from one folder to another is nice - drag and drop.
A gui that finds all files in a directory with a max depth of 2 but excludes logs and runs grep and on matching files extracts the second field of every line in the file? Please just let me write a one liner in bash
I don’t think I’ve ever used grep outside of a CLI.
Surely you’ve used something roughly equivalent like searching a text, be it web page or other document, for a word or filtering a spreadsheet?
How would one use grep for a webpage in a browser? Does the page need to be accessed outside the browser?
You should be able to use curl to get the HTML and then pipe it to grep.
Agreed 👍.
Disagree. Anything that can be done with terminal can be done with a GUI, you just need to be good at UX. Most programmers I know are pretty bad at UX, and program for themselves, not the user.
Edit, just to clarify (because I know some of you will feel personally attacked): I’m not saying a GUI may be better, or more efficient than a CLI, I’m just saying that it can be done. And as an example, see 3D shaders in modern programs, that need no code at all and are purely visual. That was unthinkable some years ago.
They tried to replace programming languages with drag-and-drop toolkits too. It can be done, but sometimes there’s a reason we don’t do it.
But I’m not talking about programming languages, I’m talking about CLI programs, or system commands.
And I’m not telling a GUI would be better, or more efficient, I’m just saying that it can be done (something you are saying too about programming languages).
That’s the point: a GUI can replace a CLI. Is it better? Sometimes it is, sometimes it isn’t. Is it possible? Absolutely.
I would assert that basically every shell I’m aware of is also a programming/scripting langauge, able to handle things like loops and branches. This is possible to do in a GUI but it’s kind of telling no one has achieved this in a desktop environment to any significant degree, including in the Linux space.
“Iterate over all of the files in this folder, if it’s a video file of any format, create a folder with the same name as the video file in ~/Videos and move the file there.” I’m unaware of an OS desktop environment that can do even that level of automation with default GUI tools. It’s like 5 lines of Bash including “done;” at the end. You can probably do it in PowerShell, but I bet Windows power users would rather use AutoHotKey for this.
You really can’t imagine doing that with a GUI? Here you have something to give you an idea (sorry it’s in Spanish, but I guess you can get an idea of how it may work):
Here I’m selecting a specific type of files (PDFs, but I can select several different types, as I’m organising by file type), after which I did a right click, and selected a contextual action that shows a popup to do a following action. In this case it’s renaming, but it could easily be a “Move to…” that could include a check option of “Create a folder for each file”. I mean, it was actually pretty fast too. It’s not that difficult.
It wouldn’t make sense to add clutter to a GUI that benefits a tiny fraction of users a tiny fraction of the time while making the experience worse for everyone else.
I can imagine making a GUI that does it. But most aren’t able to. “That could include a check option of…” yeah it doesn’t though, is my point. GUIs are for doing things manually.
How would you implement piping in GUI?
Could you show us an example program with a GUI you created for this?
https://en.wikipedia.org/wiki/Automator_(macOS), or in general, https://en.wikipedia.org/wiki/Visual_programming_language
'Course, there’s a reason those things basically never catch on, which is that they don’t actually reduce the inherent difficulty of figuring out the algorithm, and for anything non-trivial messing with a whole bunch of drop-down lists and shit is more cumbersome than just typing the damn thing.
This right here, you can gui a single program, but with pipes we can chain nearly infinite programs. No way can you make a gui that is that flexible, I refuse to believe until I see it
Are you talking about sending the output of one process to the input of another?
I think the shaders I’ve mentioned are a great example of that: you do something in a block, then send the result to the input of another block.
Sorry if it’s not what you mean, but my point is that, with some effort, you can create a visual representation of even the most abstract concepts. Physicists do this constantly. If we can make a visual representations of 4D, for example, what prevents us from doing the same for programming logic? Or for commands?
Yeah, and doing this would take significantly longer to use every time than typing up a chain of commands in a terminal.
Agreed. But that’s not my point. My point is that it can be done.
And in some cases, even if it’s less than ideal, and is way more cumbersome than using a CLI, you are helping non-tech-savvy people do things they couldn’t do any other way.
Linux users: Non tech savvy people? Yuck
Also Linux users: Everyone should be running Linux instead of Windows!
Put those two statements together and the logical conclusion is that Linux users simply want everybody to be tech-savvy (although I’d use a different term: computer-literate). What’s wrong with that?
Nobody capable of defining an algorithm in a visual flowchart like that isn’t also capable of doing it in a CLI (or at least, in text in general – writing a script). It’s thinking through what you want to happen that’s the hard part; expressing it in the UI is trivial in comparison.
Some people have problems remembering commands, for example. And it’s easier for them if they can see it.
Yes, you can teach a kid to program (with some effort), but there’s a reason why Scratch presents logic units with shapes and colors and a GUI.
There are many reasons why a visual representation may be easier to grasp than just resorting to memory and remembering abstract concepts.
I mean, do you remember everything that you write? You’ve never had to visit Stack Overflow to remember how to do something, because you forgot the exact syntax of an operation? Now, how about if I put things visually in front of you? What would be easier?
Wow, you created this program for creating shaders visually? That’s impressive! You mind sharing the source code?
Things like that have been around for a long time. It was like two decades ago that I saw this shader scheme in softimage|xsi.
For implementing something like that, each node in that graph would have an array of inputs and outputs. Each of those would have a type like vector, scalar, colour, string. Then you only allow connections if the inputs and outputs match types (though you can also have conversion nodes or selectors that say pick the red channel of a colour to turn it into a scalar). Each input can be set to a constant value instead of connecting something else to it. Outputs don’t need to be connected, which is mostly useful if a node has multiple outputs. Then each node has an evaluation function that takes all input parameters and maybe internal configuration parameters (though you might as well make everything an input param since there’s no real functional difference) and uses them to calculate the outputs, which it then sends on to anything connected to those.
I’m not much of a UI guy but displaying it for the GUI would just involve drawing boxes or some shape for the node, then spaces for each of the inputs on the left side and outputs on the right side maybe colour code them by type, and lines running along the connections. Then just add the name and/or other visual information you want to display and positional information to let users move it around their work area.
Most programmers are bad at UX but not nearly as bad as GUI designers are at understanding abstraction.
Most programmers are bad at both lol.
That’s your opinion, and I disagree with it. It takes a lot of abstract thinking to synthesize an action in a visual way, like an icon.
Designers are good at lateral thinking, and founding visual ways of representing abstract concepts (and you can’t represent something visually if you don’t understand it first).
You can have your GUI do anything a terminal can I guess, but you’d need a few million buttons on that gui where the programmer has anticipated each and every combination of CLI command that you are going to use, encoded that to a button or menu, included text entry boxes for each variable and have bundled every program, application and dependency that has ever existed. Totally possible.
So true!!!
Super + T in my case, but still…
(shhh 🤫, it’s actually the win key, but don’t let the Linux users hear ya 🤫)
Super + Enter 😏
Tiling manager crew checking in (I use hyprland btw)
I do ctrl + enter for terminal, with super+enter being used to launch emacs
◉‿◉ The Win-key isn’t real
For me it’s the (custom-ordered) Arch logo key ◉‿◉
Using it in Linux is a win… HA!
For me, it’s:
mod + return
for terminalmod + e
for file managermod + r
for dmenu/bemenumod + d
to switch to the next empty workspace.
All because I have to work with win10 workstations and using a different, superior shortcut scheme would mess up my muscle memory. Remembering to use
shutdown -s -f -t 0
instead ofpoweroff
is difficult enough, and don’t even get me started with the audacity to usecurl
as an alias forInvoke-WebRequest
!Super + D for show desktop in my case.
Super key? Windows key?
Say what now?
Typed on my 1991 ibm model m keyboard
I have to confess. I had to look up the shortcut for terminal because I haven’t interacted with a Linux desktop in years. I’m a Windows cuck, but not a total imposter bc I’ve kept a debian server running on my network for years. Whenever something breaks or I do an update (the updates are invariably the cause of the breakage) I manage her with ssh.
It’s Ctrl+Alt+T on most DEs… but, that’s way too many keys for my taste, so I usually just add Super+T as well (don’t remove the default).
Few days ago I was in meeting with two friend, we did something for school, and my screen was shared. At one point I had to type something in Vim so I opened a terminal. They were shocked, confused and said something like “we aren’t hackers” (and we are on IT department). More people should know about beauty of CLI.
Sounds like windows people :D
They use Windows but to be fair there are Windows users who use CLI (I have one friend who does).
Yeah, I spend far too much of my life managing Windows workstations, Servers and Azure things and almost all of it is in PowerShell.
deleted by creator
Honestly, I like both. I use whichever provides the biggest productivity multiplier. For example, I can navigate around the filesystem and manipulate text files and code extremely quickly in the terminal. On the flip side, I like to use a gui which allows me to spread 6-12 terminal windows across my multiple displays.
Yeah, GUIs are great. I especially like having multiple tabs to organize my terminals for different tasks.
The terminal is not fancy, or pretty, and its not that nice to use, but its always available and it gets the job done, just like OPs mum
My terminal is pretty, fancy, a nice to use. I’m not sure, you might be using the default LXDE terminal or something like that, but some people take the time to make their terminal enjoyable.
I like to use starship.rs
You can make it fancy and pretty.
That’s where the comparison falls apart.
Mod+Enter
i3 FTW
I love you
I can’t say I love the terminal, if there’s a GUI for a task I’ll use that but there comes a time in every troubleshooting session where the terminal is just the only way to do something reliably.
I’m not going to lie though, I forget commands constantly so have to search the most basic shit to type in.
The trick is to build a massive history file and let auto complete use it for parts.
I think only some shells support that.
It is a nice feature, though.
Ash is the only one I’m aware of, but that’s primarily going to be found and used on stuff like routers or other embedded devices. Any modern shell can support history. That said, many users will disable it or wipe it on logout for security reasons.
It’s not just history support. It will provide autocomplete suggestions based on what you’ve already typed and allow you to browse the history of a specific query.
Zsh is the only shell I’ve used that supports it, using Manjaro.
My Ubuntu 22.04 server using Bash does not. It only supports the basic history that I think you are referring to where you can just browse the history of all your commands at once.
Congratulations, you’re human.
Intellij: Has a modern GUI for Git with code cleanup, import optimization and visualization of changes.
Me: Open terminal, ‘git commit -m “wrote code” && git push’. Then realize I forgot to add half of the files, so I make another commit. Then realize I forgot to cleanup bad indents, so I make another commit. Then realize my code doesn’t even build, so I make another commit, etc.
‘git rebase -i main’
git commit -a --amend
git commit --amend --no-edit
The only Git GUI that I find actually lets me do the basics in a simple way is GitHub desktop. It allows me to quickly see a diff of the changes, select a few lines or a chunk or all the file, it manages stashes and conflicts for me which is like 98% of my usage. Otherwise I use gitui or the git cli for anything more complex than committing and switching/merging branches.
I’ve started using LazyGit recently and I love it. It runs in CLI and essentially just maps the git commands to keyboard shortcuts. Really easy to use and learn, definitely increased my productivity
And there’s a neovim plugin for it. It’s my favorite git client.
Magit for Emacs is amazing. It helped me understand git.
It takes a lot of energy to move from the keyboard to the mouse and back constantly, gross.
I wish the ThinkPad nub was more popular.
If you want to get better with the nub use it to play StarCraft brood war.
Actually crazy idea: spacebar trackpad.
Please no I cannot even imagine the horrors that would arise from this
Remember the BlackBerry Key2? Entire keyboard was a trackpad. Genius.
Please no.
But it takes nearly no energy to stay on the mouse.
Yes, that’s why I’ve adapted my workflow to be as mouse-centric as possible.
Almost feels like I’m using my PC as a smartphone with a keyboard.
I’m sure that works great for doing nothing productive
Never seen a movie huh?
You think those are made in the Terminal?
That’s what trackpoint is for
And even less if you can script it.
That’s another nice thing about the CLI: Once you figure out how to do something making a script is usually as easy as getting the commands out of your history.
I’ve yet to see any GUI automation tool that’s as easy to use.
Don’t forget us dyslexics though! Cli is rough on that, but gui tends to avoid the errors a typo can cause.
I swear, having to copy/paste stuff in terminal to avoid typing the damn commands five times is way less convenient.
I get it, Linux veterans love the terminal because it is efficient and capable. But there’s multiple reasons for a gui interface for common tasks, accessibility being the biggest.
Maybe some of those answers can help you
A lot of Linux users love the terminal because it’s archaic and makes them stand out from the crowd.
Every thread has people conducting autofellatio by mentioning that one time they opened the terminal in front of Windows users and got called hackers.
deleted by creator
UI file manager is bloat. Mouse is bloat.
Why have many input device when few device do?
Kids these days are too soft with their avocado toast and their graphical user interfaces
Super + T my favorite
meta + T is for tiling
meta + enter is for a terminal
It depends, on tiling WM for example tiling is automatic.
Ah, a man of taste… simple, elegant 🧐.
Say I wanted to make a bunch of folders with sequentially numbered names, and the same sub folders in them.
This would take ages with a GUI but you can do it with one line in the terminal
$mod+Return
crew wherr you atmy boi
We are right there with you my guy
I’m the kind that never opens a file manager other than to move stuff from one directory to another
File Manager is the best for bulk renaming too
I’m a POSIX shell Chad I write shell scripts with parameters in pure POSIX shell for such things /s
You should try the ranger file manager, thanks to that I almost don’t use GUI file managers unless I have a headache
I have heard of it, but never got around to it. I suppose if I get tired of grep and find and shell scripts I’ll probably head that way myself. Thanks
deleted by creator