Docker: right where you chose to put it.
It still doesn’t apply to propritery software.
Sure it does! Throw that festering pile of garbage into a docker container and keep it away from everything important while bind mounting the arbitrarily-placed config directory in the container to something sane on the host.
Linux is confusing for non IT people looking for program settings. It might be in share, local or config or hidden somewhere. On W 10 I just look under ProgramData. Maybe W11 is different. But Linux application devs need to agree on a single place. As users sometimes need to access it for plugins and resources.
I mostly saw them in ~/.config or /etc
~/.config
for local,/etc
for global.
You mean the 2 ProgramData folders? Altho who the hell puts config stuff there? Anyways, the 2 official settings apps, the 3 AppData folders and then the registry for every little thing Microsoft doesn’t want you to edit for whatever reason? And then the countless 3rd party config apps for every device aiming to make this process easier? Yea I totally don’t Google where to toggle stuff on windows as step #1, noo… And W11 just has a slightly better 2nd official settings app, so sadly not too different.
Also who the hell puts config stuff on Linux into /local or /share? It was always in ~/.config (personal) or /etc (system wide) from my experience.
Altho who the hell puts config stuff there?
Permanent configs that should be shared amongst users, yes. Like, for example, AnyDesk stores it’s ID and encrypted password there.
That is what the xdg standard and file hierarchy standard are for.
I feel mildly aroused when I see a program or a game that collects everything in it’s folder and can be used from a USB drive. Some paid, industrial grade software leaves so much traces and depends on so much different hidden files and keys it’s making me sick.
Any game can be used from a USB drive if that USB drive is running a live OS.
That’s deep 🤔
You can make a Confucius meme quote out of it.
Or if you just symlink /usr, /opt, and /home to that usb drive. You may be asking why you wouldn’t just mount partitions on the usb drive to those locations. This is not a question I will be answering
This isn’t really accurate for either side. For Linux, I’ve had crap shove configs in ~, /etc, /var, at least.
On Windows, it could be literally anywhere or in the registry.
That’s one thing I especially like about Flatpaks on the Linux side. Everything’s in ~/.var.
Which unfortunately also don’t follow xdg-dir specification…
Or
~/.local/share/${software_name_or_whatever}
… Or~/.${software_name_or_whatever}/
Oof
Or
~/.config/software_name
.Being the ‘correct one’ makes it easy to skip over… thx
i love apps which don’t follow the XDG Base Directory spec 🥰🥰
not seen in this comic: the linux file isn’t where the comic/manual/internet nerds says it should be, and there’s no realistic way to find it
Nonsense. And even if the config file cannot be found in the usual directories then there are always tools like KFind that can search your entire OS within seconds.
congratulations. you’ve just sent a linux newb down a 12 hour rabbit hole that doesn’t actually solve their problem.
and thats the power of linux baby hell yeah
Sure there is:
find / -name myprogram*.md -o -name myprogram*.txt
or start with just looking for the program name and pipe toless
So simple
The prompt was realistic not simple lol. Usually some
man
orprogramname -h
and then reading will tell you where to look and that’s simple. Not many people want to hear “RTFM” though.
For Linux applications that respect XDG? Sure. There are plenty that don’t because they either predate that specification, or they just don’t care. Linux filesystems are generally much faster at executing reads on many small files, meaning fast search tools like
ripgrep
andfd
make it so I don’t really have to care. They’ll run through my whole$HOME
in 5 seconds flat. There’s also stuff likelocate
, although I don’t like maintaining an index. SSDs are so damn fast that I can justrg --hidden --glob '*.toml' 'the_setting_i_want_to_change' ~/
whenever I want.%appdata%
Takes you to the roaming subfolder though
Most configs should be in the roaming directory, since you’d usually expect them to roam between computers on a domain. The local directory is only for stuff that doesn’t make sense to sync to other computers - things like caches, configs specific to that individual PC, etc.
Not that it matters for home users, as home users generally aren’t using Active Directory with roaming profiles.
Tell that to the developers. At this point I’m sure they are just rolling a dice to decide where they should put things.
Don’t forget that appdata nowadays has 3 sub folders, local, locallow, and roaming.
Also there’s C:\programdata
Also some programs just store it in the user folder, the documents folder, or games/ my games folder if they are a game.
What the fuck is local low? I don’t understand. Local is Billy G’s jizz… I get that… And Roaming is for poor plebs. But why LocalLow? Is it like cache? But I have seens games saving their save files there. I don’t understand
The folders actually do make sense.
Roaming: this data can be moved between machines in a domain if you have a roaming profile. E.g. go to another workstation and your browser configuration is the same? Means it’s in Roaming.
Local: this data will not be synchronized between machines when you roam. This could be your browser’s cache.
LocalLow: like local, but for applications that are “low integrity”, like Internet Explorer. These folders have special properties. https://helgeklein.com/blog/internet-explorer-in-protected-mode-how-the-low-integrity-environment-gets-created/
And half the time you’ll find it in the registry too. Linux has proven quite well that an OS doesn’t need a registry.
Oh, and what’s with ProgramData and AppData being two completely different things. I understand the difference between the two directories, but there is no difference between a program and an app. Everywhere else it’s Machine/User.
Linux has proven quite well that an OS doesn’t need a registry.
Gnomes dconf would like to have a word with you. It’s really interesting how the Gnome people seem to get rid of every useful feature as it might confuse the user or be complex, but on the other hand add this registry-like anti-feature to make the system just as unmanageable as Windows.
What you can find in dconf is well organized compared to what is inside of the regedit hell.
It could also be stored in the registry.
Oooh the registry is even more fun.
- HKLM, HKCU? These are statements dreamt up by the utterly deranged
- Store it in software, make your own root folder
- Also for 32 bit programs there wow6432node
- There’s also the policies section, but this kind of makes sense to have it split off
- Also make sure to follow the apple methodology of having multiple different key names like Apple, Apple inc., etc
I still have no idea why HK is in front… why is the key hot 🤔… and what key are we talking about…
Oh, yeah, and the different key names… Windows, Windows NT (WITH a white space…), Win…
HKEY means “handle to registry key”… Not that that helps anything.
When code opens a file, device, etc, it’s given a “handle” to it, which is an internal reference so that Windows knows which file you’re reading or writing, and it keeps track of where you are in the document. Similarly, HKEY_CURRENT_USER is the handle that gives you the current user part of the registry.
Tell that to the file I just dropped in to ~/.steam/debian-installation/steamapps/compatdata/1086940/pfx
Mozilla products:
“What is this .config folder you talk about?”
Or in /home/username/.applicationname/ if they want to be annoying.
This should be considered a war crime, and doubly so when they don’t even have the decency to prefix it with a dot (looking at you Golang). It’s my home folder, not a dumping grounds for random trash.
and snap
fuck snap
What does snap do to your home directory? I haven’t touched Ubuntu in a very long time
The setting you’re looking for could be in
appdata%
It could be inlocalappdata%
It could be inC:\ProgramData
. It could be in the registry. It could be in HKLM. It could be in HKCU. It could be in any of the userdirs. It could be in the application’s directory.HA! Joke’s on you, it was an envvar all along!
True story.
Everyone knows the real power of configuration on Windows is regedit.
Let’s not pretend regedit is a good thing, it is littered with unreadable keys and has terrible UI and UX. And it requires root privileges to edit anything.
I believe one of the worst disservice Windows has done to secure computing is to make users desensitized about root privileges. Every single action you do need root privileges, install app, changing config, people would just click allow whenever UAC pops up…
This means any program can easily inject rootkit into Windows during install, without the users noticing a thing, like LoL.
As opposed to sudo command?
You don’t need to use sudo command that much on linux. I personally only need to use it to edit two config files when setting up my system, that is it.
One for pre-connection mac randomization, one to enable a kernel module I need, because my distro disable many of them by default. I am very conscious of the changes I am making. However on Windows, I have no idea what the app installers are doing.
Not to mention, most users don’t even need to make these changes. Per-network randomization is likely good enough for most user, and they probably not on a security-hardened distro which disables tons of kernel modules.
For a office work and entertainments, flatpak apps are more than enough. And developers can choose to get their sdk via flatpak or podman dev containers. None of them requires sudo.
Is there a good reason for a everyday user (not a tinker nor a system admin) to use sudo in linux?
Not sure what you’re doing there, but it’s pretty much every other command needs sudo here… Can’t even install updates without it.
To this day, I still don’t know how to set a path variable permanently in any Linux distro
export PATH=$PATH:/mypath1:/mypath2
in~/.profile
. Means “add:/mypath1:/mypath2
to what is already in $PATH.” If you need the entire system to be aware, set or update it in/etc/environment
withPATH=...
I do feel like setting environment variable on linux is not as intuitive as on windows, but after I setup my workflow, I realized I never have the need to manually set any environmental variable besides in flatseal.
Maybe you have a specific use case for it?
Some people have diacritics and spaces in their usernames, which wreaks havoc for badly written programs accessing AppData or folders in the user’s “home” directory, such as Documents. And there are lots of such programs.
When setting up Windows, use a short and memorable, DOS-compatible username, and then change it later (the home folder will still have the old name). You can then move indiidual Libraries (Documents, Downloads, Music, Pictures and Videos) to the root of D:\ too.