Screenshot is from Windows where dotfiles aren't hidden by default. And all the lazy developers that created those directories, didn't bother to set the hidden attribute (See appdata is greyed, because it has the hidden attribute set)
I'd be rich if I had a penny for every time a savegame or config file is stored somewhere totally whack.
Fun thing of you enable protected folders on windows: No app can get write access your Documents folder (or Images or Videos or...) unless you put them explicitly on the whitelist. That means you get to experience all the programs that are crashing or hanging or... just because they're simply assuming that that's the best place to dump data and because these folders always exist, you don't need proper error handling in case you cannot access them...
I'm completely self-taught when it comes to Linux, so I have some obvious gaps in my knowledge. I've looked for good write-ups on how Linux folders are intended for use and been unable to find a good resource. Thank you for sharing the official standard name. Reading up on it now.
I hate it. I think a lot of devs who write cross-platform open-source software just use the %userprofile% automatic env variable to dump dotfiles in Windows since it can basically directly replace $HOME. In my opinion using something like %localappdata% is definitely preferred.
If you’re on a Windows box, the apps you’re calling out are assuming some level of FHS or XDG compatibility, neither of which are Windows things.
If you’re on a mac, macOS uses its own thing but can play well with dotdirs. However, you’ll find a mix of assuming XDG and weird macOS storage locations depending on how the tool determines storage location priority.
They are in subfolders of C:\Users\Username\AppData\Roaming or \Local or \LocalLow.
Or in the program's installation path in C:\Program Files or \Program Files(x86).
Or in a separate directory directly under C:\
Or the settings are handled via Registry keys.
Or whatever the fuck Microsoft Store apps do.
Or any combination of the above.
Everyone here is talking about conventions used on Linux, but this looks like Windows Explorer to me...?
Why are there so many directory names in there following Linux "hidden file" conventions, if that's the case?
If you write cross-platform software, the easiest solution is usually to pretend everything's Unix. You'll hit some problems (e.g. assuming all filesystem APIs always use UTF-8 will bite you on Windows, which switched to UCS2 before UTF-8 or UTF-16 were invented, so now uses UTF-16 for Unicode-aware functions as that's the one that's ABI compatible with UCS2, and passing UTF-8 to the eight-bit-char functions requires you to opt into that mode explicitly), but mostly everything will just work. There's no XDG_CONFIG telling you to put these files anywhere in particular, as Windows is Windows, so most things use ~ as a fallback, which Windows knows to treat as %USERPROFILE%.
Lots of frameworks for applications and games have automatic translation of file paths to sensible directories, but when you're writing software you're probably doing shit fast and dirty until it's ready for release, by that time you now have a bunch of people relying on your software so changing the file structure will cause loads of issues.
This is not a Linux or Windows thing. It's a lazy developer thing. It's also another one of the ways that some devs will coddle the end-user because "learning a file directory system is hard."
I couldn't say whether I prefer it one way or the other, but the dot prefix does stick out like a sore thumb on systems that don't hide them by default... though I think AnyOldName3's explaination makes sense.
for someone regularly using both: it is a convenience feature.
that way i just know config files are under ~/.myApp.
if windows devs would beore consistent, i would be ok with %APPDATA%\myApp. however, too often it is under %APPDATA%\..\Roaming\myApp - which is just a pain. so i prefere linux style on windows.
.android is either from the Android SDK, or possibly Android Studio so blame either Google or IntelliJ. .vscode is Visual Studio Code which is made by Microsoft so your guess is as good as mine on that one. .eclipse is Eclipse and is a Java IDE approximately the age of dirt and might actually pre-date the AppData folder existing. .ssh is OpenSSH and has been around long enough on the *nix side of things that it might pre-date both AppData and the XDG folder conventions. Not sure about most of the rest.
The guidelines for Windows developers kinda suck tbh. Maybe it's better these days, but plenty of weird legacy software behaviour can be blamed on MSDN.
AFAIK appdata are stored in ~/.local/share, but you don't even have that folder!?!?!
It's not the Linux convention that's fucked up in this regard, but your system.
If you want it stored in ~/AppData, you need to make a link to it from ~/.local/share.
I'm no expert, so there may be other ways to do it. but apparently your system doesn't follow conventions.
It's frustrating when apps apply Linux-specific behavior to other platforms. No windows apps should be just throwing hidden folders into the user directory!