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
.Being the ‘correct one’ makes it easy to skip over… thx
i love apps which don’t follow the XDG Base Directory spec 🥰🥰
Which one is your favorate, mine is
~/freedroid/.
😝If you have flatpak, and the application don’t need full user home access, then you can move the folder to application sandbox by setting a persistent path.
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…
The idea of the registry is so freaking nice. Imagine if all the configs of a system could be changed through a centralized and consistent API.
/etc or /usr/local/etc and done
For user space /home/$user/.config/application_name/config.file_name
Have you found
appdata/local/Application Data
? It’s a “conjunction point” that you can only find via the command line, and only exists for backwards compatibility. It points toappdata/
… Do not EVER try to gain access over all your files inappdata/
. It’ll break due to that conjunction point.There are symlinks in Windows all over the place for backwards compatibility. Just look at “Documents and Settings”, it’s a symlink to ”Users".
Yet, you still have to install the same libraries with every app over and over, even though they can be shared. Why? Because Windows has no sense of default library locations, except for the things it absolutely needs to work.
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.
programs writing shit in the document folder are so freaking annoying. I typically backup my document folder, as they contains most of my user files.
And some stupid program just decide to litter it with their temporary file, and game saves…
It is okay if they only do what you asked for.
“Okay, Audacity, save to ‘C:\Users\me\Documents\recording.aup’”
*folder 'C:\Users\me\Documents\recording_data' shows up*
Oh no, I think AoE (some version) will sometimes save game file to Documents, and IIRC, wechat will save temp file to documents without user interaction
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.
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.
What system wide software stores their configs in anything but /etc? Data, sure, but not configs.
nginx at the very least, but there’s way more
Nginx’ default config location is
/etc/nginx/
Yeah I missed the “anything but”, sorry
Docker installs in /var/lib. Tenable and Nessus use /opt.
There are tons of packages that store config files in places other than /etc.
I don’t know what Tenable and Nessus are. I’m guess you have to install them from outside the package manager or build them from source, in which case, yeah, using /opt for config would be acceptable.
Docker’s config file is located at:
/etc/docker/daemon.json
It’s not in RHEL. Tenable and Nessus are vulnerability scanners, and Nessus at least can be installed via yum.
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. :<
Yes but appdata subfolder is local, locallow or roaming so the poster above you is still correct.
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.
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?
Brother scanner utilities:
/opt
Pretty sure I had to change something in/usr
once, but I forgot what. Now,/var
would be very unusual. But most of the time, all the configuration files happen to be somewhere in/etc
.Docker on RHEL saves everything in /var/lib, for example. Tenable and Nessus stick it in /opt. I’m currently doing a rhel7->8 upgrade, and that shit gets stuck everywhere.
But, I also have issues on my Pis. For a lot of the packages I use, I’m lucky if they actually put their .service file in /etc/systemd. Having to run a find / command on a pi can take forever.
Trust me, that is not Linux specific, Windows has that bullshit as well. Everything depends on how the devs wanted to solve the local settings problem, and if you have devs that work 1 or 2 years on the project and then quit, which in turn are replaced by other devs, you get this bullshit. The new ones usually don’t wanna touch the old one’s code, or if they do, they only make minor changes, just enough to make something that’s not working, work.
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.
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
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.
Until flatpak came along and just keeps everything in their respective app sandbox.
If your app don’t need full user home access (most app don’t), you can use a persistent folder to place the folder in app sandbox instead of home.
It is not only more clean, but also more secure and private.
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.
How does it not solve their problem if they’re searching for configuration files? That would only be the case if the files do not exist in the first place, and then there’s really no difference between GNU/Linux and Windows at all if you assume that initial configuration has not occurred. What would you do?
and thats the power of linux baby hell yeah
Mozilla products:
“What is this .config folder you talk about?”
To be fair sometimes configs instead of XDG_CONFIG_HOME(~/.config) are stored in XDG_DATA_HOME(~/.local/share)
There once was a time when configs were not in a universal place like .config. I have terrible memories of trying to fix a gnome setting gone wrong and having to search several files in four different places and just having to firebomb everything.
Still the case today… Not every Linux app complies with XDG.
All that depends on developer. Majority of my used Windows software is portable stored in folder that’s synced with Dropbox. All settings are then usually stored in the same folder so I can easily copy SW over to another machine without loosing any configuration / history.
Some of those programs still do not store settings in same folder, you can often simply export settings from GUI.
%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.
%localappdata%
Which contains 90% of what you search. Then just press backspace, and you reach the appdata folder.
To this day, I still don’t know how to set a path variable permanently in any Linux distro
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?
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=...
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.
That is what the xdg standard and file hierarchy standard are for.
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…
Despite what developers do at the end of the day, there are conventions for application directories on every OS.
I just use the
directories
crate in Rust.Yeah… It’s an awesome crate. I use it for my app too.
🦀
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.
Don’t forget
%USERPROFILE%/AppData/Local/Programs
, where some programs get installed to because the developer doesn’t want to make it a system wide installation.System wide config for an application? Lets put that under C:\users*????
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…
I have to say I love having no desktop. Something about watching my coworkers become dependent on it is neurotic.
Agreed. It’s much nicer to see your wallpaper than a mess of mismatched icons that may need to be occasionally clicked.
Same here. I don’t need icons, just press
Win
and type in the program. I just gotta pray for Windows to not open Edge and search in Bing.If you’re using Windows, you can get a much better experience by ditching the Microsoft start menu entirely.
Everything Search to index files and Flow Launcher for searching files and applications. You can even make it open when you press the windows key.
Or if you still want a start menu, Start11 is worth paying for to get away from Microsoft’s ad-ridden crapware they call the start menu. It even supports using Everything for showing file results.
Flow Launcher seems pretty cool. I’ll try it out. Thanks!
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.
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.
Selects separate drive for install
Adobe: “Imma, pretend I didn’t see that”
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.
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.