I absolutely despise the following directories: Documents, Music, Pictures, Public, Templates, Videos. Why? Because applications randomly dump stuff into these directories and fill them with junk files. I don’t want any application putting anything into directories I actually use, unless I explicitly tell them to. It is not possible to keep your files organized if applications randomly dump trash files into them.
I just keep my stuff far away from
$HOME
and not bother about the junk. Not even a subdirectory under$HOME
.Same goes for ’ My documents’ on windows.
I absolutely despise the following directories: Documents, Music, Pictures, Public, Templates, Videos.
Change them: https://wiki.archlinux.org/title/XDG_user_directories
The apps dumping files into foldes like Documents usually don’t care about the XDG_user_directories spec, iirc.
These places are a cesspool of junk in every system, it’s incredible. MacOS has this kind of shit too, just like Windows, with apps dumping crap there without a care.
Same shit happens on Windows. Games will just install their shit literally all over OS with no rhyme or reason to it.
Why can’t the save game and config.ini just be in the main god damn game directory? Nobody knows.
I’d like to set nautilus to show hidden files, but I can’t stand the amount of “trash” there’s in home
Everyone is thinking “my app is the best, it totally deserves a ~/.myappisthebest directory”
Y’know what’s worse? When there’s no dot. Worse than that, it’s an undotted directory used to store a single config file. Ugh, unpleasant memories. 😒
I just write my config files directly to random unused blocks on /dev/sda, filesystems are overrated.
Nah, dump em’ to /tmp/ and let the user figure out the rest
/dev/null
You still have sd devices? /s
One of my greatest pet peeves is random folders appearing in my home folder. Thanks for this
Let’s count them. (not including legacy or standard locations like .local, .config, or .cache, .ssh, and shell configuration files
- .aws
- .azure
- .bun
- .byobu
- .cargo
- .dbus
- .docker
- .dokku
- .keychain
- .kube
- .minikube
- .motd_shown
- .node_repl_history
- .npm
- .nuxt
- .nuxtrc
- .nvm
- .oh-my-zsh
- .pack
- .psql_history
- .pyenv
- .python_history
- .redhat
- .ruff_cache
- .rustup
- .selected_editor
- .sqlite_history
- .sudo_as_admin_successful
- .tmux.conf
- .tox
- .ts_node_repl_history
- .vim
- .viminfo
- .vimrc
- .vscode-server
- .wget-hsts
- .yarn
And a couple more, non-hidden files for Go.
- go
- sdk/go1.20
i can almost ignore the hidden ones, but
~/go
? no thats just rudeafaik, tmux can use
~/.config/tmux/tmux.conf
or something, if~/.tmux
is not foundNeat! Git has the same behavior.
Is it a problem to change this?
If these were links to issues that could be reacted to, I’d totally do that.
Why aren’t all of these just normal directories under either .local (for data files) or .config (for configuration)???
Actually, I think the XDG directories should be under a single XDG directory either dotted or not (a better name would be OK with me) ~/xdg/Documents, ~/xdg/Music, ~/xdg/Pictures etc.
That’s the beauty: XDG compliant applications are entirely configurable using standardized environment variables.
Documents, Music, etc actually are configurable. Just edit
~/.config/user-dirs.dirs
Tangentially related: I recently learned that there are tools for handling dotfiles such as chezmoi and yadm. I would suppose that after spending some time on backing up the dotfiles that matter one can purge the remainders without much issue. I also remember some tool that was made for the purpose of cleaning $HOME, but can not recall its name (if anyone knows please let me know).
xdg-ninja maybe?
Yes, that is the one. Thanks!
W should make a .dotfiles directory for them.
export XDG_CONFIG_HOME=/home/juser/.dotfiles
Well, isn’t it
.config
by default?Yes, but OP wanted
.dotfiles
. Nice thing with XDG is that you can change all that.The user directories Desktop, Downloads, etc. can be changed as well: https://wiki.archlinux.org/title/XDG_user_directories
…that’s assuming that apps actually respect that environment variable. The problem is that if the app is writing to ${HOME} then they’re already not following XDG spec.
Is there any good gui application for mange these but also edit them in a user friendly way like getting a dropdown for a settings like: Yes/No, Country Sweden. Number size range etc. So include validation. Even nix os does not have that.
I’m new to Linux. Should I be using something like chezmoi?
No it’s doesn’t matter. There are so many other things to learn.
If you spend a decent chunk of time on config, I’d say yes - it’s worth learning 🙂
whats chezmoi
My casa es tu casa - you’re always welcome
That being said, chezmoi helps you manage your personal configuration files (dotfiles, like ~/.gitconfig) across multiple machines.
Also if the normal invocation of your program produces more than 3k lines of stdout, sanitize it and default to a file.
You might wanna backup your dotfiles somewhere remote too. I literally lost dotfiles that I’d been building up for years because I couldn’t remember the password to my Linux machine after coming back from vacation. Funny enough though, a couple hours after nuking my OS I magically remember my password.
Oof. Yeah, I once forgot my LastPass password literally less than 30 seconds after entering it on another device. Muscle memory versus active memory kind of thing.
i couldn’t recite my most-used passwords if i tried. i would need to ‘air type’ them out while doing so.
Unless you disk was encrypted, you could have booted up a live distro and back up the files you needed (or even overwrite the shadow file to get a new password)
In the late 90s I taught an intro course for folks who wanted to run *nix boxen (Solaris, IIRC). On the afternoon of the last day I had them swap places after lunch and gain root access to each others’ machines. It was partly for root passwd recovery and other maintenance tasks, but also to demonstrate that physical access to the box was a serious issue.
They may not want their configuration stored in $HOME, for example:
they’re on a machine that isn’t under their physical control and ~/.config is mounted over the network from their personal machine;
That sounds like it’s a bad way to handle configuration, since among many other problems, it won’t work with the many programs that do have dotfiles in home directory, but even if that happened, you could just symlink it.
they prefer to version control their configuration files using git, with a configuration directory managed over different branches;
I do that. I symlink that config into a git-controlled directory. If OP plans to put his entire ~/.config in git, he is doing things wrong, because some of that needs to be machine-local.
the user simply wants to have a clean and consistent $HOME directory and filesystem
If whatever program you are using to view your home directory cannot hide those files, it is broken, as it does not work with a whole lot of existing software.
less secure,
If your home directory is “not secure”, you’re probably in trouble already.
Like, there are reasons you may not want to put dotfiles in a homedir, but none of the arguments in the article are them.
EDIT: I will ask developers to stop dumping directories and files that don’t start with a dot in people’s home directories, though. I gave up over twenty years ago and put my actual stuff under ~/m just to keep it from being polluted with all the other things that dump non-dotfiles/-dotdirs in a home directory. Looking at my current system, I have:
-
A number of directories containing video game saves and configuration. I am pretty sure that these are mostly bad Windows ports or possibly Windows programs under WINE that just dump stuff into a user’s home directory there (not even good on Windows). Some are Windows Steam games.
-
WINE apparently has decided that it’s a good idea to default to sticking the Windows home directory and all of its directories in there.
-
Apparently some webcam software that I used at one point.
-
A few logfiles
-
Hmmmmmm
No.
It needed to be said.
I hate it when an application puts its configuration data in its own dotfile under $HOME instead in ~/.config. Also hate it when caches are stored in ~/.config, because then I have to manually tag those subdirectories for exclusion before doing a backup.