• slazer2au@lemmy.world
    link
    fedilink
    English
    arrow-up
    156
    ·
    12 days ago

    Good GUI are hard to make while a good cli is rather easy.

    Nothing wrong with a GUI that does what it needs without fluff.

    • toebert@piefed.social
      link
      fedilink
      English
      arrow-up
      119
      arrow-down
      1
      ·
      12 days ago

      The cli has one other benefit which I think is rarely recognised: it’s pretty easy to tell someone you need to run “xyz -a -b -c” (bringing the safety risk with it to be fair), but it gets a lot harder to be like “so in the top left there is a cog button that opens a panel on the right where you’re looking for the 2nd tab and there’ll be a checkbox”.

      The things I appreciate even more than a good gui are programs with a good gui and a cli.

    • BartyDeCanter@lemmy.sdf.org
      link
      fedilink
      arrow-up
      6
      ·
      edit-2
      12 days ago

      So true. I mostly live in the embedded world but have had to write GUIs from time to time, mostly to connect and send commands to some sort of embedded device.

      I always start with a cli version for testing and then write the GUI. A quick wrapper around the comms library and I’m done.

      But there are so many annoying fiddly little details in the GUI to deal with that it usually takes as long just to write the GUI as it does the entire rest of the code. Layout, menus, tooltips, icon choices, dealing with screen sizes, DPI, resizing windows, responsive data, etc.

      Edit: A simple example that I’ve dealt with many times is reading and writing config data. For the CLI version it’s typically two commands:

      ‘tool read_cfg’ reads from the device and prints the config to stout

      ‘tool write_cfg’ reads a config from stdin and sends to the device.

      Add a ‘-f’ option to use a file instead of stout for people that don’t remember how to use redirects. Add a couple of documentation sentences to the help command. If there are any issues, print them to stderr and bail. If the user wants to edit the config they can use whatever $EDITOR they prefer.

      The same functionality in a GUI means that you have to first implement an editor for values. In my case that was generally a bunch of nested key/value pairs so I could probably find a widget that would work. And then understand how it handles being resized, gets styled, uses tooltips, etc. Of course there would need to be some code to get the data into and out of that widget which would probably need massaging. Then I need to let the user know if there are local edits. And then there is the fact that the data is now in three places, on a local disc, on the device, and in the editor and I need to communicate with the user that there is a difference between loading and saving from disc vs the device. Do I give a warning that loading from once place will overwrite anything they’ve changed in the editor? How do I make the four load/save buttons have obvious icons? And how to handle errors? An annoying pop up? Partially load the data? Something else? So many little things that have to be designed, implemented, and tested.

  • Reygle@lemmy.world
    link
    fedilink
    arrow-up
    33
    ·
    12 days ago

    That’s totally fine. GUIs let us theme our terminal windows, tile them, jiggle them around, maybe even make them wobbly!!!

  • ComradePenguin@lemmy.ml
    link
    fedilink
    arrow-up
    18
    ·
    11 days ago

    I CAN interact with CLI, but i WANT to interact with good GUI. I don’t want to learn CLI commands when I don’t have to. Especially in the cases where I use it rarely

      • porous_grey_matter@lemmy.ml
        link
        fedilink
        arrow-up
        2
        ·
        11 days ago

        Yeah and that’s totally fair enough, but people who like using a command line and know the tools well rarely if ever have to type out long paths or commands. Tab completion and history suggestion (especially in a modern shell like fish or zsh) is a joy to use, and doesn’t just do file paths but command options and arguments. Man pages are very overwhelming at first, but if you’re practiced at scanning them, then it’s a lot more convenient to get the info right where you are than to navigate to another window. But the learning curve is steep and I get why someone wouldn’t want to bother.

  • rozodru@piefed.world
    link
    fedilink
    English
    arrow-up
    18
    ·
    12 days ago

    before I made the switch to Linux I never used a terminal. never. hell on Windows I even used a GUI for Git. I used sublime text as my IDE. if it wasn’t a GUI I was lost.

    Then I switched to Linux and it forced me to actually sit down and learn the terminal and now…now I have a hard time using GUI’s. If something has a CLI or TUI option then I go for that over a GUI. like everything even my music player and video player. my IDE of choice now is DOOM Emacs. my file manager is Yazi. for Git I either use lazygit or just straight up the command line. but for everything else it’s just so much faster and in the long run easier to just use the terminal.

    All that being said if you like GUI’s then hey more power to you and that’s fine. that’s the beauty of Linux. you run your system how you want to and don’t let others tell you otherwise. Hell I know a guy that uses NixOS and doesn’t have anything installed other than git and comma. he runs everything via comma. literally everything.

  • Lettuce eat lettuce@lemmy.ml
    link
    fedilink
    arrow-up
    18
    ·
    12 days ago

    I like good GUIs. There are GUIs that are clean, responsive, well designed, and full-featured.

    Sadly, that is rare nowadays, regardless if the software is FOSS or not.

    It seems like for proprietary software, the corporate approach is to design slow, boring GUIs that lack most/all advanced functionality. It’s designed for dumb users who just want to click and swipe.

    FOSS on the other hand rarely has full or even part time UI/UX devs due to the cost. So often the GUIs are clunky, messy, and a horrible pain to navigate. The upside is that they usually have extremely deep features, but good luck finding them.

    If I have to pick, FOSS all the way, but I wish I didn’t have to. There are a few FOSS programs that have very nice UIs, Bitwarden, Protonmail, Musescore, Godot, and many are getting better, but the landscape is still rough out there.

    As for CLI, I prefer it for some things, it’s just faster depending on the function. I find myself operating with a hybrid setup now days. I have become proficient enough with the command line that I can switch seamlessly between my GUI environments and the CLI-only environments. I don’t really think about it much anymore.

    • Zannsolo@lemmy.world
      link
      fedilink
      arrow-up
      2
      ·
      12 days ago

      It’s a user interface. Users are fucking stupid this the interface needs to be fucking stupid. When you have to put that much in to stop stupid the interface suffers.

      • Shanmugha@lemmy.world
        link
        fedilink
        arrow-up
        1
        ·
        12 days ago

        Why stop stupid but not users?

        Allow me to illustrate (c, Johny Silverhand):

        • user fucks up
        • starts complaining
        • just plain tell them they got exactly what they told the software to do. End of story. Wants to quit - good luck
  • pedz@lemmy.ca
    link
    fedilink
    arrow-up
    16
    ·
    12 days ago

    I’m undecided with modern GUI because most modern software is just a web page now. And it will offer you a choice between boring light mode and boring dark mode.

    I miss the days of GTK2 with hundreds of themes. It was one of the main reason I switched to Linux; the customization. I don’t know how many hours I must have spent on gnome-look.org. Now I don’t even bother to try new themes and just use Fluent-Dark. My desktop is boring and looks like everyone else that has a dark mode. I really really miss GTK2 and all my favourite themes I can’t use anymore. I tried making my own and played around with Oomox but it’s not the same.

    But one thing that I do prefer to be GUI now is IRC. Now that there are web clients (sigh) that can display images and videos directly in the channels, chatting in text mode only is kind of annoying with all the links we are sharing.

  • JackbyDev@programming.dev
    link
    fedilink
    English
    arrow-up
    15
    ·
    11 days ago

    In the same way some GUIs are trash, lord have mercy some CLIs are trash. Things like adding two verbose flags makes it extra verbose. Things like the parameter order mattering. Yeesh. It can be rough. It really varies tool by tool.

      • JackbyDev@programming.dev
        link
        fedilink
        English
        arrow-up
        2
        ·
        10 days ago

        Yeah, I guess that’s true. I suppose given more time to think about it I wouldn’t really complain about that. It’s mostly things like script in out that are sort of annoying versus something like script --in foo --out bar.

        • kunaltyagi@programming.dev
          link
          fedilink
          arrow-up
          1
          ·
          10 days ago

          I believe API (CLI or programmatic) should never have 2 arguments of the same type but different roles next to each other without visual cues.

          No fn("in.txt", "out.txt") and no script in out

  • xylogx@lemmy.world
    link
    fedilink
    English
    arrow-up
    13
    ·
    11 days ago

    I like GUIs but I also like automation. Give me a nice simple GUI but also give me a way to run from a bash shell so I can automate functions based on complex conditions and/or a schedule.

  • DiabolicalBird@lemmy.ca
    link
    fedilink
    arrow-up
    13
    ·
    10 days ago

    If we want the year of the Linux desktop to actually happen we need to have good GUI tools for almost everything. The second you say “command line” most people’s eyes glaze over and they say they’ll stick with Windows. Believe it or not guys, most people just want something that functions out of the box and they don’t want to mess with it.

  • Pope-King Joe@lemmy.world
    link
    fedilink
    English
    arrow-up
    13
    ·
    12 days ago

    I still do updates and most package installs through my terminal, but anything else I look for a GUI solution. I’m lazy.