top 18 comments

sorted by: hot top controversial new old
[–] 7 points 8 months ago (1 child)

How does btop compare against a GTK+ task manager in terms of memory usage when you include the terminal emulator in the btop count? It'd be a more technically correct comparison that way.

  • source
  • hideshow 1 child comment
  • [–] 18 points 8 months ago (9 children)

    Is this a take from the 1980s?

    Of course cli and TUIs are great. However they aren’t as discoverable and harder to learn than a nice GUI.

    Is vim or eMacs great? Sure, but so is Visual Code for other reasons.

    cli and TUI suck at drag and drop and copy and paste between applications.

  • source
  • hideshow 9 child comments
  • [–] 8 points 8 months ago (6 children)

    I solved the drag and drop issue with dragon. Copying and pasting depends purely on your terminal emulator, no?

  • source
  • parent
  • hideshow 6 child comments
  • [–] 4 points 8 months ago (2 children)

    As I've found with nvim using the lazy-vim config, no. That program, for example, requires a separate clipboard manager if you want to copy between it and your system.

  • source
  • parent
  • hideshow 2 child comments
  • [–] -1 points 8 months ago* (2 children)

    Which terminal emulator copies with ctrl+c?

  • source
  • parent
  • hideshow 2 child comments
  • [–] 4 points 8 months ago (1 child)

    Most terminal emulators will copy with Ctrl+Shift+c. I'm using foot, if you set this part of your config, it will copy with just Ctrl+c.

    [key-bindings]
    clipboard-copy=Control+c XF86Copy
    

    But now for most shells you don't have a keybind to send SIGINT, which is very commonly used.

  • source
  • parent
  • hideshow 1 child comment
  • [–] [S] 1 point 8 months ago (1 child)

    Well, I didn't exist in 1980s. So this is how I feel as a 2000s kid and current software engineer.

    I think good ideas are worth updating for new generations.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 6 points 8 months ago (4 children)

    Warning: bit of a rabbit hole ahead - I lost an hour reading up on git email workflows

  • source
  • hideshow 4 child comments
  • [–] [S] 2 points 8 months ago (3 children)

    Oh yeah that is a VERY BIG rabbit hole :))

    One hour only scratches the surface though. But I really like the git email workflow. It's so simple (not easy) and pure. If my colleagues could get on board with me I would definitely be using it at work.

  • source
  • parent
  • hideshow 3 child comments
  • [–] 2 points 8 months ago (1 child)

    I would too!! I'm mulling over using it on my personal projects - I still create tickets, open PRs, even though they are one-man-projects, so working the git email in there will probably happen next weekend. So excited already :D

    An hour gave me the gist indeed, I'm sure there's many more to learn, but the concept already blew my mind. And it fits the terminal-based workflow I'm slowly creeping towards.

    No hope for my workplace through, the people there are still clinging to office365 mail without access for 3rd party clients. But they're chill so I am too, that's our (unspoken) deal :)

  • source
  • parent
  • hideshow 1 child comment
  • [–] 10 points 8 months ago (1 child)

    That's a lot of words to say "GUIs, TUIs and CLIs are good at different things"

  • source
  • hideshow 1 child comment
  • [–] [S] 1 point 8 months ago

    And most of writing of gnu and fsf are a lot of words to say "free software good proprietary software bad" for example?

    That's why we write! :) When I say "I prefer CLI and TUI over GUI" I might need to explain why. And explain when a GUI might be a better option. I write these for myself and my friends and colleagues mostly. I just happen to share them on the internet :)

  • source
  • parent
  • 51 comments in c/linux@lemmy.ml view that post
    [–] 51 points 8 months ago* (last edited 8 months ago) (5 children)

    I generally agree but it depends on the application and the computer purpose / input you will most use.

    Like.. it doesn't make much sense to have a CLI/TUI for an image editor.. if you start using things like sixel you are essentially building a GUI that runs in a terminal, not a TUI. The same happens with videogames, video players and related entertainment applications.

    But like I said, I do generally agree. I'd even argue that when possible, GUIs should just be frontends that ultimately just call the corresponding CLI programs with the appropriate parameters, avoiding duplication.

  • source
  • hideshow 5 child comments
  • [–] -1 points 8 months ago (3 children)

    GUIs just being front-ends for a CLI tool is a horrible idea. This is why most git GUIs fail so terribly. I have seen too many of those where all the buttons were just replacements for CLI calls. If it is just a front-end for a CLI, then why the heck not just use the CLI?

    A good git GUI has not been designed to just wrap the CLI. Instead, it works with the structure of git (commits, branches, tags, etc), and builds around those from the ground up. Only once the functionality has been designed should the question arise: What CLI commands do we need to implement this?

  • source
  • parent
  • hideshow 3 child comments
  • [–] 8 points 8 months ago* (last edited 8 months ago)

    In general, I agree that you can always use the CLI raw, but a frontend is a lot more friendly for many. It's the reason some people prefer TUI over CLI as well (some people really like lazygit and lazydocker which are just frontends wrapping git and docker CLI calls and presenting it in a TUI). A TUI/GUI can structure information in panels, it can be more context-sensitive and it can help provide visual representations of the operation.

    Also, wrapping CLI commands (whether through a GUI or a TUI) means the wrapper can automatically combine the commands in whichever way it's best for a particular goal, or more conveniently set up batch processing... it's helpful for people who don't like having to make their own scripts, or craft long oneliners.

    Plus: lets say you have your computer hooked to your TV and don't have space for a keyboard (but can use a small wireless mouse on the arm of your couch), a GUI wrapper that allows you to perform operations with just a mouse can be very convenient.

    I don't know what kind of GUIs are you imagining, but I've hardly ever seen 1-to-1 recreations to a single individual command (unless that command is extremely complex or a graphical representation would be actually useful).

    Some examples:

    Gparted creates a job list of terminal commands for the disk manipulation, but it presents a graphical representation of the disks before you actually commit to executing the commands internally, so you can see what would be the result of the changes in the GUI side before actually pressing the button that actually executes parted, fdisk, mkfs, resize2fs, etc. (they do wrap the commands when it comes to executing the changes), without you needing to go through the steps and specific syntax of each of them on your own.

    There are wrappers to ffmpeg for video editing or transcoding that some people find convenient for discoverability of the options available and/or to have a limited list of presets / sanitized options for those who don't want to bother creating their own scripts. Sometimes also showing video previews for the graphical representation (useful when the operation is about cropping the image, or picking the exact millisecond where to cut). An example is LosslessCut, they keep a log of the ffmpeg calls.. or maybe Shutter Encoder (press Alt+C to see the console commands).

    In Synaptic, the GUI package manager, pressing "Apply" calls the appropriate APT commands as a CLI app inside a VTE with the selection of the packages you have decided to add/remove/update, which you have previously selected in the listing that is generated from the GUI view of the app. Some people like having a graphical detailed listing which might be useful for conveniently browsing packages and seeing their detailed description, while still you get the raw information and accurate log from the installation that you would get when you are just using the CLI.

  • source
  • parent
  • [–] 2 points 8 months ago (1 child)

    Have you seen debugging in an ide, they usually just run gdb / lldb commands

  • source
  • parent
  • hideshow 1 child comment
  • [–] 1 point 8 months ago

    I have barely any experience with raw gdb, but debugging is something that allows for a lot of contextual actions. Even just placing a breakpoint is simpler if you can click the line instead of copy-pasting the line number. But also evaluating expresssions while on a breakpoint, or a graph with an overview of all threads. I doubt these are straight-forward commands in gdb, and if they are, you need to figure out the exact parameters (like line number).

    Furthermore, I have tried raw gdb once, and got super confused as to what I was supposed to do or look at. Yet every IDE makes it trivial to use debuggers. Learning the options available to you is much easier in a well designed GUI.

  • source
  • parent
  • [–] 12 points 8 months ago* (last edited 8 months ago) (1 child)

    Thumb rule: whichever I feel comfortable with in a given situation, I use.

  • source
  • hideshow 1 child comment
  • [–] 10 points 8 months ago (3 children)

    "That's why I always have 10GB of free ram on my laptop with 16GB of ram" lol, good job sport I wonder if they browse the web on command line? lynx and curl can be rough. I take the position that sometimes gui is good, sometimes tui, sometimes cli. ncurses is a headache to write for.

  • source
  • hideshow 3 child comments
  • [–] [S] 4 points 8 months ago* (last edited 8 months ago)

    Yeah browsers are the main GUI I use. w3m is great for reading blogs and those types of things but like you say, not the best experience for most things. And we can't really blame it on them, the modern web is horribly written most of the time.

  • source
  • parent
  • [+] 1 point 8 months ago* (last edited 8 months ago) (1 child)
  • [–] 2 points 8 months ago

    I would totally love to browse a simpler "layer" of the Internet that could be navigated with Lynx! The biggest downside would be lack of images. (Maybe Lynx can do images?)

    But I could see an indie web of little blogs and human created artifacts that would be surfed kinda like logging into a MUD. :D

  • source
  • parent
  • load more comments (-1 replies)
    [–] 8 points 8 months ago (2 children)
  • [–] 31 points 8 months ago* (last edited 8 months ago) (6 children)

    CLI designers: "Here are the commands and arguments in a txt file, they'll only change when absolutely necessary and we'll be sure to inform you both in the docs and as a warning in the CLI itself."

    GUI designers: "go fuck yourself and re-learn where we hid all the buttons this time, after waiting for our two second fly-in animation for every submenu of course. Don't worry though, here's a condescending popup tour that only shows you the most basic features you could already see with your eyes. If you're still confused, here's an AI chatbot that will just repeat the contents of the popup tour and then act like you're an idiot. Hey, HEY! STOP WHAT YOU'RE DOING THIS INSTANT AND READ ABOUT OUR NEW BUZZWORD FEATURE YOU NEVER ASKED FOR! TRY IT RIGHT NOW OR ELSE! Also we're keylogging you and recording your mouse movements as "analytics" for """improving""" our UI (even though it's only getting worse with each new version), you understand. "

  • source
  • hideshow 6 child comments
  • [–] 25 points 8 months ago (4 children)

    CLI: Here's a txt file, now memorize it you peasant

    Good GUI: Welcome back my friend, straight the thing again? Btw on the right you can see some relevant info and links.

  • source
  • parent
  • hideshow 4 child comments
  • [–] 11 points 8 months ago* (last edited 8 months ago)

    CLI: Welcome back my friend, forgot a command or argument? Just type --help and read the super terse and bullshit free txt file in less time it takes for the GUI startup animations to finish. Too long? Type | grep to directly search for it in less time than it takes for the search button to expand and let you start typing! Realize you keep doing the same few steps? Just write a script instead of memorizing what specific sequence of buttons to click or hope that the GUI remembers where you left off! Need to tell a team member how to do something? Just send them the commands or a full script in chat instead of jumping on a video call and walking them through which of these abstract, indescribable icons they need to click which they'll definitely get wrong and open some weird submenu you then have to tell them how to leave!

    GUI: Ooh a GPU and gigabytes of VRAM just for my animations? You shouldn't have! Ooh you mouseovered something for one millisecond while moving it to the actual thing you want? Let me lag the entire window and cover up the thing you wanted with this popup that takes longer to disappear the more irrelevant it is! Also none of the text in mouseover popups is selectable so you can't copy from it even if you did need it (Visual Studio static analysis messages I'm looking at you). Still need help? Well you first have to find where the help button is if there even is one! We're increasingly not including help files because it "should" "just" be intuitive. Or just watch a 10 minute video walking through how to do something that could have been two lines in the terminal, stupid! Want to automate something that takes like ten clicks because we hid everything in nested submenus to "avoid clutter"? Go ahead and install a third party macro suite and record your mouse clicks and movements that will break as soon as the next update drops and slightly shift the margins around!

  • source
  • parent
  • [–] 4 points 8 months ago (1 child)

    First off, I'm really glad to see posts from personal websites and blogs! Way to keep the indie web alive!

    Sadly I got a Cloudflare error trying to open the page. But, I think on this subject, GUIs can be great tools, but they're the most commonly designed with exploitative dark patterns and "our users are drooling simpletons" in mind.

    Terminals are also super cool. It's definitely easier to automate terminal programs than GUIs!

    Also TUI? Man, opening BTOP is always a treat .

    It just kinda depends on the tool for the job, right? Blender is a great example of a streamlined necessary graphical interface that asks for a terminal-like familiarity from the user. (And GUI-only folks kinda rage at it at first hehe)

    Running as much as possible in terminal is definitely easier on the resources though, and I want to get a lot better at that. (As sexy as KDE is!)

  • source
  • hideshow 1 child comment
  • [–] [S] 3 points 8 months ago

    Thank you! Sorry for the cloud error, the server's origin website is hosted in my country Iran, which is currently in a semi-blackout and very bad internet distruptions. Very sad.

    You might see the blog if you try a couple times more, I can see it with most VPNs.

    I completely agree with your points. I'm stating the same sentiment in the blog.

    I prefer GUIs for two things:

    1. Things that are inherently graphical (gimp, blender, etc)
    2. Things that I don't use very often, and the GUI is too simple to be bothered with a cli.
  • source
  • parent
  • [–] 7 points 8 months ago (13 children)

    What is a TUI? I haven't heard that term before.

  • source
  • hideshow 13 child comments
  • [–] 16 points 8 months ago* (last edited 8 months ago) (2 children)

    TUI: Terminal Text User Interface, something like htop in example. CLI: Command Line Interface, something like grep in example.

    Edit: "Text" is probably the correct word, not "Terminal".

  • source
  • parent
  • hideshow 2 child comments
  • [–] 3 points 8 months ago* (1 child)

    Isn't the T for "text"? (ie. "Text User Interface")

    I mean, in the context of Unix systems it's most likely gonna be within a terminal emulator, but in theory you can have a TUI inside an SDL window rendering the text there (specially when they are ports from other systems where they might be using different character sets than whats available in terminals.. or if they want to force a specific font).

    The only example that comes to my head right now is ZZT, but I believe there are many games on Steam that use a TUI rendered within their own program, not a terminal.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 6 points 8 months ago (5 children)

    It's a UI that sits in the terminal (thus TUI). Think htop, or btop; They are often ran from CLI, but offer more of a UI.

  • source
  • parent
  • hideshow 5 child comments
  • [–] 6 points 8 months ago (4 children)

    Thanks! I guess something like vim would count as a TUI then.

  • source
  • parent
  • hideshow 4 child comments
  • [–] 2 points 8 months ago (2 children)

    I’d say vi is in a fuzzy grey area below a tui. It’s more than a cli but shares a lot with cli programs; it pretty much has its own command line built in. At the same time it has nothing like dialog box or menus like normal tui programs.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 5 points 8 months ago* (last edited 8 months ago) (1 child)

    Personally, I feel that if it uses control characters to update the screen in previous positions, altering the scroll buffer, moving beyond where the cursor is and redrawing the screen, then it's a TUI.

    CLI programs only output plain text in a stream, using just control characters for coloring and formatting, and if they do any re-drawing it's only for the current line (eg. progressbars and so).

    So.. even something like less is a TUI program.. but things like more or sed would be CLI programs.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 3 points 8 months ago (2 children)

    I've seen your tool box. I've shared some that may be good additions to your shop ;)

  • source
  • hideshow 2 child comments
  • [–] 13 points 8 months ago (8 children)

    well, actually nobody gives a shit, use whatever you fit best for the task.

  • source
  • hideshow 8 child comments
  • [–] 15 points 8 months ago (7 children)

    For me to be able to use whatever I want, it needs to exist. Therefore it is a relevant discussion to have, since it might influence a developer to consider TUI instead of just going for GUI as the default.

  • source
  • parent
  • hideshow 7 child comments
  • [–] -5 points 8 months ago (6 children)

    Waiting for others to do something for you is the wrong approach. Get off your ass and be the developer. Creating an interface for a tool is no rocket science.

  • source
  • parent
  • hideshow 6 child comments
  • [–] 4 points 8 months ago*

    It's significantly easier to make a third party GUI for a command line tool than to make a third party CLI for a GUI only tool because you'll be working with an opaque binary that doesn't have any public APIs.

  • source
  • parent
  • [–] 3 points 8 months ago (3 children)

    Ironic coming from someone that is using a computer with OS and programs written by someone else and hardware constructed by other people, using electricity produced by others, et.c. :)

  • source
  • parent
  • hideshow 3 child comments
  • [–] 3 points 8 months ago

    Entirely unrelated to your point (with which I fully agree) but wouldn't it make more sense to replace the first period in "et.c." with just a space (if you're not going to forego the period)? et isn't short for anything so the period doesn't quite make sense (and you wouldn't be using any more letters than you already are).

    No worries, either way (obviously); I was just thinking.

  • source
  • parent
  • [+] 1 point 8 months ago* (last edited 8 months ago) (1 child)
  • [–] 3 points 8 months ago

    Someone has never configured a managed network router! Disorganized feature creep is the name of the game in there: gotta make sure the old commands still work exactly the same but add new ones constantly for new features!

  • source
  • parent
  • 7 comments in c/linux@sh.itjust.works view that post
    [–] 10 points 8 months ago (5 children)

    This is not something I’d ask of developers, but I like having a GUI for initially learning all the options and flags. It’s nice having a visual of which parameters are allowed together, where order matters, which ones accept arguments, etc. This is partly how I learned Ffmpeg back when I was still using Windows.

    Once I’ve got a high level understanding, then I’m headed for the terminal.

    Realistically I have a text editor putting a script or complex command together with the man page open on another screen. Not as friendly but generally works.

    I don’t see TUIs a lot. Usually they are very linear. Would be interesting to see one with more of a 2D array of options.

  • source
  • hideshow 5 child comments
  • [–] 4 points 8 months ago (4 children)

    I agree with this but I will say the tldr package is a life saver when GUI is not an option

  • source
  • parent
  • hideshow 4 child comments
  • [–] 2 points 8 months ago (3 children)
  • [–] 2 points 8 months ago*

    "Mum, dad, I have something to tell you. I hope you can understand. I... I like GUIs and I always have."

  • source