This is major league bullshit tho.
On linux, where the config file for a specific program is, can vary annoyingly greatly depending on what distro you’re using and sometimes the same config file exists in several places and somehow certain parts of the configuration parameters get taken from several of those files, so if you think you’ve found what the actual config file should be and remove the duplicates, suddenly the program uses defaults or doesn’t even work at all.
XDG Base Directory & XDG User Directories will help you immensely. At least, for the programs that follow the XDG specs. Also, check out XDG Ninja.
Yup. Is it in /usr /var /etc or /opt? Maybe in some hidden home folder? Sure, you can Google it, but there’s no guarantee you’ll find the right answer.
There are only a handful of places Windows sticks stuff, and it’s pretty predictable.
You should never be expected to edit anything in /usr, /opt or /var. That’s highly unusual. For which software did you have to do this?
Generally /usr should be managed by the package manager, /etc is for global custom configs and the user home is user specific.
/var shouldn’t really be config, mostly logs or webservers for some reason.Disagree. Take game saves on windows. They can be in appdata\local, appdata\roaming, documents\company-name, documents\savedgames\company-name I’m sure there are more.
Nah. 3 places.
- Appdata subfolder
- Documents
- Game installation folder
Savegame folder is then placed either ina folder with game name or studio name, so easy to check all these locations within minutes.
Let’s not talk about rpgmaker games tho. I’ve seen them do some wacky shit with gamesaves.
Edit: To make my point clearer, I disagree with person above me about their disagreement. Savegames on windows are predictable as hell. Thanks to person below for pointing out I didn’t convey. :<
Lol, appdata subfolder is already 3 different places 😂
TLDR; Windows crap, I love Linux
Long read ahead, this resulted in a pretty big rant, but I feel better now:
Windows has way more silly places. From registry to ini files, assemblies, common files, services, drivers…it’s everywhere.
Do you know how an MSI packages for software installation work? Let me tell you, it’s a mess. An utter and complete garbage format. A database with hundreds of buggy functions, empty lines and internal inconsistencies. There wasn’t even a way to create them comfortably without paying for expensive software back then. Yea, im looking at you, flexera admin studio.
I automated hundreds of custom software installations on 2000 clients from windows 2000 to XP to Windows 7 to Windows 10… for >10 years, so I know what I’m talking about.
On Linux 99% of apps save global settings in /etc and usersettings in /home/user/.* or the newer way XDG_CONFIG_HOME.
But since all is a file on Linux every config can simply be copied to restore or backup settings. Almost every tool has man pages. How hard is it to run man tool and read the specifics if you need help? Windows? Sometimes you got some help files in a strange format (.hlp?). Other then that, start the browser and ask Google.
Linux package managing since 2003 has been better then it ever has been on Windows to this day.
One command to update all components? Packages will be installed and removed automatically to fulfill the dependencies of the software you want to install? Every package is build by a trusty maintainer of the OS instead of some overworked windows engineer that needs to create profit.
Do you know how Deb files work? They are simpel zips of the folder structure and files the software consists of. A textfile with metadata like maintainer, name, version and, very important: dependencies. Last but not least there are a two or three files that can contain scripts that need to be executed prior or past installation. That’s it. And you can do everything with it.
On Windows you often are forced to find the right combination of weird parameters to ensure a program starts. commandlines like “c:\windows\powershell.exe -e cmd /c program name”, happen way more often then you would expect.
On Linux I get: Global package manager and updates with trusted packages, no telemetry, more safety, no ads, better privacy…and many more.
My personal opinion: I don’t understand how people can even question the superiority of Linux for personal devices.
To add to this, Dotfiles is a very helpful Arch Wiki page.
Tell that to the file I just dropped in to ~/.steam/debian-installation/steamapps/compatdata/1086940/pfx
This is the “appdata” folder, this is where all the application’s data goes.
So whats the “Programs” folder then?
This is also where the application’s data and files go.
But I thought thats the “Programs x86” folder.
This is also where the application’s data and files go.
Ok whats “Program Files” then?
This is also where the application’s data and files go.
So my config file is in either one if those 4?
No thats in the “Documents” folder, obviously.Windows program data file structure has always been the wild west.
And Linux isn’t? There’s definitely not a central location either.
Agreed, but the number of places where to search for the config is not as big as in Windows. And there is the fact that most software is open source, so you could always check where the application saves it’s data.
System wide config for an application? Lets put that under C:\users*????
Don’t forget about the hidden ProgramData directory at the root of the file system. Ableton Live likes to install there for some ungodly reason.
Don’t forget that there’s a hidden system junction at
C:\ProgramData\Application Data
that points toC:\ProgramData
. Because everyone loves loops in their filesystem. Of courseC:\Users\All Users
is also a junction toC:\ProgramData
. This kills updatedb in WSL.Always remember,
C:\ProgramData
is the eqivalent of/etc
in Linux. If they don’t know where to put/hide shit, but needs admin priviliges to edit and users can only read, you put it inC:\ProgramData
.I think programdata is closer to /usr/lib or maybe /var/lib.
You almost never see config files in programdata.
Config files that are meant to be used as sane defaults for new user accounts, yes. Config files that are meant to be manually edited, no.
Besides, there are a lot of examples of configs that are saved in ProgramData, like, let’s say, registration info for proprietery programs (of course, this info needs to be shared amongst users, so your safest bet is ProgramData). Hidden by default, makes it perfect for storing everything the program is trying to hide from the user.
Yeah, the Documents config file/dir pisses me off the most as well!
Game save data? No, my documents.
Application config files? Again, my documents.
Temporary documents I don’t care about keeping? Downloads, duh.
My actual documents? Desktop.
My desktop? Turned icons off because it was too messy.Just another day using Windows…
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.
They don’t have config files in Windows. Apps just throw things everywhere without rhyme of reason
To be fair sometimes configs instead of XDG_CONFIG_HOME(~/.config) are stored in XDG_DATA_HOME(~/.local/share)
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.
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.Mozilla products:
“What is this .config folder you talk about?”
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.
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
%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.
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.
Or
~/.local/share/${software_name_or_whatever}
… Or~/.${software_name_or_whatever}/
Oof
Or
~/.config/software_name
.
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…
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 horrifies me…