To be honest, it is quite complicated now as well with all of the proprietary software
To be honest, it is quite complicated now as well with all of the proprietary software
To be honest, it is quite complicated now as well with all of the proprietary software
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 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 in C:\ProgramData
.
Don't forget that there's a hidden system junction at C:\ProgramData\Application Data
that points to C:\ProgramData
. Because everyone loves loops in their filesystem. Of course C:\Users\All Users
is also a junction to C:\ProgramData
. This kills updatedb in WSL.
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.
Yeah, the Documents config file/dir pisses me off the most as well!
System wide config for an application? Lets put that under C:\users????
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 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.
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.
Funny thing is, most 3rd-party utility tools don't use registry but a config. Which makes them portable, btw.
there is no difference between a program and an app
Yeah the naming is confusing. The reason is what you said - machine vs app.
Back on Windows 9x, some apps would store files directly in the C:\Program Files
directory. This was 'fine' at the time since every app ran with full permissions. Users were at C:\Windows\Users
, but users were optional so not every install used it.
Windows XP had a better NT-based permission model (not nearly as improved as Vista, but better than 9x) and allowing regular users to write to the Program Files and Windows folders wasn't really a good idea. It added two directories for settings:
C:\Documents and Settings\username\Application Data
for user-specific dataC:\Documents and Settings\All Users\Application Data
for non-user-specific dataVista kept the former but moved the latter to C:\ProgramData
. I can't remember why.
Windows 7 moved the user stuff to C:\Users
.
ProgramData is for admin stuff and things that need to be shared between users. AppData is for personalized settings per user. For example, AnyDesk stores the unattended access password in ProgramData, as well as the ID. Sure they do get copied to AppData when AnyDesk runs on boot/login on any user, but you could also have some user specific options (like language) and they get stored in a separate file in AppData.
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/
Local is for regular apps, LocalLow is for depressed apps and Roaming is for high apps looking for munchies.
You can rename them in the environment variables UI. Has anyone tried this, any software who has the path hardcoded?
Btw, here's the paths.
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...
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.
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
That is good... unless you plan on sharing the app between users, then it sucks, because every user has to be an admin in order to change the config... and then, you have one user that sets it like so and so, and another that sets it completely different. And this is why separate settings for users is a good thing. Sure, have an option for a global config, and let that copy be copied to the local config as sane defaults, but not having the option to actually have separate configs in user directories is, from an IT perspective, insane.
Or in /home/username/.applicationname/ if they want to be annoying.
Or in /etc/
<application>
, or in /var/<application>
I've seen all of that, sometimes differing between distributions for maximum annoyance. So I don't think we get to act smug in I'm this particular case.The setting you're looking for could be in %appdata%
It could be in %localappdata%
It could be in C:\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.
This is the real answer.
Oh that setting is super easy to change, just go to run, type in regedit, expand HKEY_LOCAL_MACHINE then just scroll until you find CLSID-73838-abf83-c758d57-87a90ba, set the value to zero and reboot!
Probably just log in an out, but still, I fail to see how this is easier than changing some_bool_setting
from =true
to =false
is harder... maybe because you actually know what you're changing, so that makes it scarier 🤔.
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
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.
Mozilla products:
"What is this .config folder you talk about?"
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.
windows is simple, all configs are keys accesible via reddit
[Deleted]
half the time its been deleted because Spez is a greedy pigboy
Via Reddit How?
Sorry, that was my lame joke about the simlar sound of the windows essential tool "regedit".
My only surviving knowledge from when I used to be able to do things on windows was that it was always a bucket of shite until you "regedit" a bunch of things. These edits were arcane secrets known only to mystical internet guru's like some bloke called "Fred Vorck" and impossible to figure out by logic, reason or even through mundane hard work. I assumed that's what the lower panel in the OP is getting at.
But on reflection, I'd be sad if there's not a forum on reddit called "regedit" will all the advice on what registry keys to fix - so unintentionally it might not be the worst advice - apart from the word "simple".
edit: reddit isshit
https://www.reddit.com/r/regedit/
%appdata%
Takes you to the roaming subfolder though
Which contains 90% of what you search. Then just press backspace, and you reach the appdata folder.
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.
%localappdata%
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....
They don't have config files in Windows. Apps just throw things everywhere without rhyme of reason
Tell that to the file I just dropped in to ~/.steam/debian-installation/steamapps/compatdata/1086940/pfx
Shrug don't remember the last time I actually needed to modify a system config file on Windows...
Software actually does store it's configs in files... sometimes.
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.
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.
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
and fd
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 like locate
, although I don't like maintaining an index. SSDs are so damn fast that I can just rg --hidden --glob '*.toml' 'the_setting_i_want_to_change' ~/
whenever I want.
To be fair sometimes configs instead of XDG_CONFIG_HOME(/.config) are stored in XDG_DATA_HOME(/.local/share)
/etc or /usr/local/etc and done
For user space /home/$user/.config/application_name/config.file_name
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
with PATH=...
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?
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 to appdata/
... Do not EVER try to gain access over all your files in appdata/
. 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.
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.
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.
I use an all encompassing indexing app on windows called "Everything" and it let's me find....everything, since it indexes it all, it also finds it instantly. if you have to use windows, I suggest getting it. It's no cost.
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.
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.
I mostly saw them in ~/.config or /etc
~/.config
for local, /etc
for global.
That is what the xdg standard and file hierarchy standard are for.
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.
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.
What system wide software stores their configs in anything but /etc? Data, sure, but not configs.
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.
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.
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.