I sort of get the appeal of fine-tuning the terminal environment to perfection but after fiddling with such things for many years - decades - I ended up using mostly stock settings with a very few changes. The advantage of that approach is that I feel at home just about anywhere instead of just on my one or few customised systems. My customisations mostly consist of a local /bin directory with a few hundred scripts (wc -l now shows 263) I made over the years which I dump in a new environment plus a few additions to .bashrc (yes, bash, not one of the fancy replacements (zsh, fish, oil, ...) which are supposed to be better but in reality just end up being different) to set custom paths etc.
I usually treat an app putting stuff into $HOME with no reason to change that as a reason to not use the app. I've genuinely switched software multiple times because of the old one doing this.
I also suggest you try xdg-ninja, which automatically scans your home directory and shows which of those directories you can change to a different location:
Besides cleanliness which is more a preference I agree, separating config, data, and cache makes it easy to know what can/should be backed up, what can be synced across machines, etc.
The app ‘Conductor’ does this, and I had to uninstall it; I just can’t crack my ‘ls ~/.co<TAB>’ habit, and “nd” is juuuuuust ahead of “nf”.
It *used to* be ‘~/c<TAB>’ before .claude crapped itself into existence..
I also suggest you try xdg-ninja, which automatically scans your home directory and shows which of those directories you can change to a different location:
https://github.com/b3nj5m1n/xdg-ninja
I have a big shell config file that sets proper locations for all sort of programs I use:
https://github.com/flexagoon/dotfiles/blob/main/dot_config/f...