I just spent half an hour decluterring my $HOME dotfiles and movinf everything I could to standard XDG config, data and state directories. Looks much cleaner now.
~
.CFUserTextEncoding .cargo/ .local/ .ssh/ Library/ backup/
.DS_Store .config/ .mail/ .stack/ Movies/ cwd/
.Renviron .ctags .npm/ .zprofile Music/ tmp/
.Trash/ .cups/ .nvm/ Desktop/ Pictures/
.cabal/ .deno/ .roswell/ Documents/ Public/
.cache/ .ghcup/ .rustup/ Downloads/ Sites/
The cornerstone for running zsh properly is to point ZDOTDIR
to the relevant XDG data directory.
ZDOTDIR=$HOME/.config/zsh
for file in $HOME/.config/profile.d/*.sh; do
. "$file"
done