Let the apologists have a field day in the comments.
I don’t care if settings are done by GUI or terminal, I just want clear and concise descriptions for specific settings and not a condescending “go read the man pages you fucking noob”. I’ve been fucking with Linux for over a decade now; a lack of clear documentation is not my problem, and at this point is unacceptable.
Especially when the settings are named the same/similar as other apps but do different things
Just fucking comment line quickly what the fucking thing does you dickheads, or use your settings page for more than 3 things and stop hiding everything else in your fucking .YAML (also Stop using .YAML)
YAML is good for scripting services (like docker stacks), but otherwise I agree, stop using it for absolutely everything.
I also wish Linux used a standardized config file format.
Sounds like you’re gonna love nixos
I actually looked into it, although I didn’t like very much that the config file is actually a program and an odd language. They should have used something commonplace like JSON
At this point, TOML is my favorite since it basically amounts to an attempt at standardizing the
.ini
/.conf
style of config “language”/files. It’s still simple enough, but pretty powerful, and was seemingly good for the Rust and Python projects to be convinced to choose it as a default…Absolutely. I was going to suggest TOML as the standardized Linux format as well.
go read the man pages you fucking noob
And when you actually go and read the man page, it says some shit like “Some of these options are not fully documented. For an accurate description of their functionality, consult the source code”
Recursive comments
I’ve been fucking with Linux for over a decade now; a lack of clear documentation is not my problem, and at this point is unacceptable.
Well seems to me that the lack of clear documentation is in fact your problem.
I mean, fucking around for a decade?!
: P
Hey, hey - stop that.
Windows users are used to everything being so locked down that it’s virtually impossible to mess up your system… lots of this stuff is in config files because exposing it for everyday users would be asking for people to completely brick their workflow.
If you put every option in a GUI, there would be so much stuff that nobody could find anything.
I think you just discribed windows I know my head hurts looking at GPOs.
No Windows put everything in a GUI, then added a second GUI that didn’t quite have all the functionality of the first one so kept both around, then despite the second GUI existing for nearly 10 years it still couldn’t do everything the first one could and then they completely redesigned it rather than just introducing all the functionality from the first GUI, but they removed some of the functionality of the second GUI from the first GUI so now both GUIs are incomplete and full of functions that just link to the other GUI
That’s basically Sharepoint. You better bookmark the three different Web pages because they have different options you won’t find on the two other. But also just finding and remembering those three Web pages is a Pita. I or better yet, never have to manage Sharepoint pages. This stuff is worse than printers.
Oh god don’t get me started on SharePoint, I only recently discovered that disabling permission inheritance doesn’t actually disable permission inheritance…
As kludgey as they are, though, I do wish there was a good replacement for GPOs in Linux
There is and it can be mapped to GPOs when connecting to AD https://en.wikipedia.org/wiki/System_Security_Services_Daemon
As cool as that is, I’m only seeing authentication and rights management, which have little to do with what GPOs do
It’s limited of course https://4sysops.com/archives/applying-group-policy-to-linux-using-sssd/
That’s not just limited, that’s an incredibly tiny bit of user rights assignments, which is an incredibly tiny part of group policy and does nothing to configure the system… It’s useful, but not really what I’m talking about
That’s why you put it in 3, with no rhyme or reason for which goes where
Now we got it only in config files where we can’t find anything. Also don’t you put a single wrong character in there, it could break everything.
Well-made GUIs can even prevent disaster by exposing settings in a diggestable way and making sure entries are properly edited. Good UI/UX conveys functionality through form and can be navigated intuitively.
To make settings inaccessible on purpose or even alienate people deemed “too stupid” for them is called Tech Paternalism, and it fucking sucks.
A well-documented config file is like the exact opposite of “tech paternalism”.
To make settings inaccessible on purpose or even alienate people deemed “too stupid” for them is called Tech Paternalism, and it fucking sucks.
You’re referring to Windows Registry right?
The Linux equivilent of this is atomic/immutable distros (SteamOS and Android being the most popular examples, but Fedora also has one that’s fairly popular).
What people expect:
✅Fix my box
❎Fuck my shit up
What we would get: System Kernel Interface
🔳 Regex Recursion
🔳 Kernel Language (Internal) [Dropdown: en-us, Dvorak, binary, Klingon, non-binary (Borg analog), Esperanto]
🔳 Ignore LPT on fire
🔳 Memory hole on sysctl
🔳 Mansplain man(8)
I expect a Red x
Yeah some people seem to have this expectation that there should just magically be a button to unbreak the PC. They talk about their personal pain points when using Linux as if there’s a conspiracy of devs to hide the unbreak buttons for the sake of elitism, but that… just isn’t a thing? If it was that easy to fix an issue, you probably wouldn’t need to fix it because the system would already come unbroken by default. I sympathize with everyone’s Bluetooth configuration woes but mostly it’s a pain in the ass because Bluetooth, in general, is a pain in the ass, not because of elitist devs (who I should mention are doing this in their free time for no pay. There’s almost no money in desktop Linux, unlike in servers).
This makes sense, within reason. Limiting the visibility of low level system settings and statistics is good for the normal user’s experience. That is not just to keep them from breaking their system, but it also makes the commonly used settings easier to navigate and use.
I don’t say this in a gatekeeping way either. I am a developer and old computer nerd who has a terminal open pretty much all the time. But I also run Mint and I use the GUI for all kinds of stuff. If I may stretch to make a metaphor, the primary user-friendly UI from the driver’s seat of my car doesn’t have indicators or controls for all kinds of things I care about, but they are things I don’t need to do every day in the middle of a drive. I can do something out of the ordinary to get to them when the need arises.
The nice thing about Linux is that in the GUI these things are merely hidden. They aren’t locked down and denied access entirely like you might get with a commercial OS.
The worthwhile discussion/argument IMO is just where best to draw that line. I personally don’t have strong opinions on the computer side because I am comfortable with CLI and text files. My gut feel is that more GUI is good, but my suspicion is that actual “normie” users want simple. To them the OS is just the screen that holds the icons for their apps, like a smart phone. It is not a gargantuan tree of settings they can peruse like I might.
Funny though, I DO have a strong opinion in the case of my car metaphor. I currently drive an old economy car, and it doesn’t have a coolant temperature gauge. There’s just a warning light for when the coolant is already too hot or is still cold and warming up. The lack of the gauge doesn’t affect the performance of the car and it has not ruined my day in over a decade of ownership, but I’m a bit of a car guy and an engineer to boot, so I want more information like you might see in a truck or sports car.
That’s another nice thing about the open nature of Linux. There isn’t one official setup that everybody gets out of the box, which can be confusing, but it can certainly be made to fit many different people’s needs.
I’ve been using linix for like 18 years and I still prefer GUI over CLI hands down. Make things easy by letting me click on some nicely explained buttons.
“No, honey. We have Linux at home,”
Linux at home:
linix
Sure… Want to fix the stupid new menus in windows 11? Oh it is just a new guid key in the registry in a location you wouldn’t expect. You know just cut and paste shit into the registry you found on the internet. Windows is just as annoying, if not more so.
In any case: what system GUI’s do you want? GUIS make everything so much harder, careful what you wish for.
Does Windows 11 still use the Windows 7 control panel?
They deprecated that to prevent users from messing with things
No, there’s a couple rogue advanced dialogues but the control panel’s finally been well replaced
Ehhhh, you can still get in there. Also there are several control panel only functions. It’s been pretty frustrating how they’ve incremented change. I feel like they should have gone menu by menu in control panel and just built their new settings application page by page and then just pushed one big control panel alternative. Then they could phase the old one out or leave it in for legacy users or whatever. But the new settings and how that menu changes every few months is frustrating as hell.
rip in peace, control panel. will be missed.
12 years ago maybe, plasma made a lot of improvements since then
Can I edit systemd services and bootloader settings somewhere?
Systemdgenie is good enough for me, but that’s just me.
There really aren’t any simple settings for grub that need a GUI and honestly the systemd service CLI for enabling starting and disabling is pretty damn easy
YaST on OpenSUSE is pretty nice.
I always viewed YaST as SMIT(ty) for linux. Haven’t looked at suse in forever, though.
I have no idea what SMIT(ty) is, so I’ll just smile and nod [smiles and nods]
https://en.wikipedia.org/wiki/System_Management_Interface_Tool
It’s a menu driven system management tool for IBM’s AIX unix variant. Oddly enough, even Wikipedia shows the relationship from SMIT to YaST. Instead of just smile and nod, next time make up something about “smitty print” (damn near everything was under the “print submenu”, ostensibly because you were printing out the config to screen), and look like you are a grizzled veteran of corporate unix from the days of yore.
:-)
NixOS has the potential to do really well here. The Nix language has a rich enough type system to generate GUI forms for every field, and there are several projects being worked on that allow editing NixOS options from a GUI. They’re still very janky, but it’s definitely possible to get to a point where a layperson could operate them without breaking their system.
Nix is definitely where I’d bet on good GUI development, if I had to choose. I’ve had my own issues with NixOS in the past, primarily due to me simply not being able to fully grasp some of the language for configs, but I’d definitely assume that GUI editing would be much easier due to the more predictable nature of the config files.
What’s the deal with NixOS? I’ve never tried it
It’s whole deal is “declarative” system configuration. Essentially, it means if your config file is identical to someone else’s, your systems will have identical software/dependencies, and everything should, in theory, run the same, generally speaking.
So for instance, to install a package, instead of running
sudo apt install nameofpackage
, I would just edit my NixOS config file to have the linepkgs.nameofpackage
in it, run a command to “rebuild” my system usingsudo nixos-rebuild switch
, and it would automatically be installed.That’s not the whole of it of course, but that’s just a general overview. It’s really good for if you’re running multiple systems that need the same software, because all you need to do is copy the config file over, run
sudo nixos-rebuild switch
, and the systems now have identical software.Oh yeah, and you can also easily rollback. If you break anything, you can, while starting to boot NixOS, just select the previous configuration, start your system, and any changes you’d made to software/settings will just be undone. It’s great for troubleshooting.
AFAIK NixOS also has the largest number of supported packages out of any distro.
Wow! That sounds like a dream! It gives me i3wm and emacs vibes.
Since suggestions in the comments are just words of apologists, do you have a proposal for a solution, or is this just a rant post?
All I’m getting right now is a vague idea of some Master GUI that resembles the cockpit of a commercial jet that no “average user” is ever going to try and decipher, anyway.
do you have a proposal for a solution, or is this just a rant post?
I think this post captures a commonly felt problem whether or not it is still a fair criticism.
This could be paraphrased as “GUI for the GUI settings, non-GUI for the non-GUI settings.” It’s not surprising to me that parts of Linux that run on systems that don’t have GUIs do not have GUI settings. I understand the frustration, but building those is more work, and more things that can break, go out of date, etc…
What if Linux presented its config files in an app like regedit? Would that be easier? I doubt it. But with complicated data structures, making a first-class app just to edit a specific text file or set of files on disk is a very low ROI for engineering hours.
Then at least give users the ability to edit said text files with a text editor… but the community fights that as well. 🙄 The only distro I ever saw that enabled users to open a file browser and, through that, a text editor as root to edit system files was Mint. KDE had it for a short while before they patched it out again as far as I know (last time I checked Dolphin outright refused to start with root privileges).
It’s not like there weren’t ways to make it easier with little investment. Some elitists just managed to suppress even those efforts for decades.
Kde allows you to edit files with elevated permissions; use Kate for that. Open any system file in Kate and it will ask you for your password when you’ll try to save it.
Hey man, it’s no surprise the gui people are good at making the gui settings in the gui :P
I think there should be a standard for config files, where it defines all of the options and possible values, so that an app can be made to modify them.
There doesn’t seem to be an existing standard for what I described, from what I see.
There are existing standards. The issue is that there are too many different standards and some programs will choose to make their conf files half standardized, half unique.
There’s INI, YAML, JSON, XML, TOML, etc.
Honestly, the Linux team needs to just choose one of these formats, declare it the gold standard, and slowly migrate the config files for most core components over to it. By declaring a standard, you’ll eventually get the developers of most major third-party tools and components to eventually migrate.
Thats not exactly what I meant, I meant a system where you would have a file that defines all the options for an app, and their possible values, so a gui or program could be made to edit them.
Yeah something like that should be doable but it would require that programs provide a schema and the OS to have a way for the programs to “announce” themselves so it can be aware of the configuration files and the schema.
I’m sure some project could create a GUI that could cover the most common applications, though.
It’s always fun trying to set up a program, learning the config syntax, running it, having it fail, and then spending an hour debugging before you realize it never even read your config changes because you were supposed to use one of the other half dozen conf files it has spread all across your drive. Is it under
/etc/
,/usr/local/etc/
,/opt/
, or your home directory?I was thinking, they would put the definitions in a specific directory, like if its installed locally, ~/.config/definitions or if installed globally /etc/definitions and then any settings apps would search for those.
What comes sort of close, is that you can define so-called “schemas”, at least for JSON, TOML, YAML and XML. Here’s what that might look like for JSON: https://json-schema.org/learn/getting-started-step-by-step
I don’t know, if you can actually generate a GUI from such a schema, though. They’re intended for validating existing data, so I don’t know, if they give you enough data to work with to actually provide a GUI. For example, you don’t really have a human-readable name in these. The fields are rather called e.g. “productName”.
Yeah, I am aware of schemas, I meant something where you would have, for example, a conf.definition.json file:
{ screenResolution: { definition: "What resolution the screen should be", options: [ "1920x1080", "720x470" ] } }
So then, a settings app could control settings for other programs, like apple does, by checking this file, and editing the configuration file based on it.
Schemas are a nightmare to work with, and are totally unreadable
If you ignore the gui part, this sounds a lot like nixos.
It’s not about what serialization format, it’s about what possible values there are for each field.
Any modern Linux distro viable for the average user uses systemd, and there ain’t many different bootloaders being used by big distros either (almost always either Grub or systemd-boot, rarely Efistub). Likewise it’s clear for years that Wayland is the future (not to mention this problem persists for over 2 decades now).
I don’t see a problem with lack of standardized config files, rather a lack of interest by the rather tech-conservative part of the Linux community (who by now often have a lot to say in development circles).
*Laughs in CLI.
Also TOML lol
Yeah, I’ve definitely grown to like TOML, especially after spending hours trying to edit a giant (nested) YAML file…
I didn’t realize the indentation in TOML was purely aesthetic.
This
[servers] [servers.alpha] ip = "10.0.0.1" dc = "eqdc10" [servers.beta] ip = "10.0.0.2" dc = "eqdc10"
equals this
[servers] [servers.alpha] ip = "10.0.0.1" dc = "eqdc10" [servers.beta] ip = "10.0.0.2" dc = "eqdc10"
which equals this
{ "servers": { "alpha": { "ip": "10.0.0.1", "dc": "eqdc10" }, "beta": { "ip": "10.0.0.2", "dc": "eqdc10" } } }
Once the file is big enough wouldn’t it be better to convert it to json before editing, then converting it back?
Let the computer deal with indents and all that stuff.
I love this comment. JSON is by far the format that cares the least about being human-readable or -writable, but you’re seriously proposing writing it rather than YAML. And I kind of don’t even really disagree. But a big problem with that strategy is that you won’t find documentation for how to write the configuration in JSON.
I disagree that json is not human writable. JSON is perfectly writable since it has explicit visible separations between elements.
It might look ugly but it’s perfectly readable and writeable.
Granted, I always read json after parsing it with an auto formatter. Maybe that’s why people say that json is difficult to read? It’s true that unformatted json (minified) is way worse than yaml but no one in their right mind would not format the json, specially when it’s natively supported by most code editors.
BTW, about documentation, post formatting json looks very much like a yaml, all yaml docs can be converted to json instructions if you think a little bit.
Oh, that is actually the part I do agree with. I don’t think everyone will, but I do actually think JSON is easier to read and write (correctly) than YAML. I specifically wrote that JSON cares the least about that, because it was designed to just serialize JavaScript objects into strings and back. As far as its original purpose is concerned, no one would ever need to hand-edit JSON. Which is also why it doesn’t support comments (which is still somewhat of a dealbreaker for a configuration language, although I guess for your proposed workaround, one could potentially use a JSON flavor which supports comments; potentially, you can even write your JSON in the YAML file with comments directly and then not convert it, since YAML is a superset of JSON).
As for documentation, yeah, it is possible to convert, but it makes it more annoying, particularly also if you then can’t easily re-use configs in another project. And if you’re working in a team, having to explain to all your team members, how they can convert the official documentation, is also not really acceptable…
Because … well … wait, not a bad idea. Although, this would get rid of comments. Which in my case, I didn’t have too many, so I could have manually added them back.
*openSUSE enters the chatroom
SUSE/openSUSE are the only ones that have it figured out. It requires a lot of polish, but it’s the only distro that seems to really care about a deeper system configuration through GUI, and that’s really appreciated.