[HN Gopher] Xdg-ninja: checking your $HOME for unwanted files an...
___________________________________________________________________
Xdg-ninja: checking your $HOME for unwanted files and directories
Author : plushugh
Score : 54 points
Date : 2025-03-06 00:43 UTC (22 hours ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| neilv wrote:
| > _A shell script which checks your $HOME for unwanted files and
| directories._
|
| IIUC, based on skimming some of the code, this seems to be for
| people who want to layout their home directory according to the
| conventions that the XDG group suggested [1], well into the
| history of Unix-y systems.
|
| For example, a given tool, `foo`, might've originally created a
| `~/.foo/` directory, which `foo` still supports for backward
| compatibility, but `foo` now prefers XDG convention
| `~/.config/foo/`. `xdg-ninja` can inform you of that, and help
| you move the directory.
|
| For another example, tool `bar` might still default to config
| file `~/.barrc`, but `xdg-ninja` might advise you to move it to
| XDG-like `~/.config/bar/rc`, and to set `bar`'s `BARRC`
| environment variable to point to that, even though `bar` doesn't
| use XDG conventions directly.
|
| [1] https://specifications.freedesktop.org/basedir-spec/latest/
| swaits wrote:
| Yes.
| asicsp wrote:
| See also: "$HOME, Not So Sweet $HOME"
| https://gist.github.com/sharadhr/39b804236c1941e9c30d90af828...
| hulitu wrote:
| > Xdg
|
| This is the crap responsible for poluting $HOME. If the user does
| not configure anything, just use global defaults.
| oguz-ismail wrote:
| This. Bring back configuration via environment variables
| throw-the-towel wrote:
| But why? I think a config file is way easier to understand.
| cedilla wrote:
| And when I change a setting in a program, where does it set
| that environment variable?
| internet_points wrote:
| Yes, I'd muuuch rather type `FONT_SIZE=7
| FONT_FAMILY='DejaVuSans' FONT_WEIGHT=normal BG=black FG=pink
| FG_HL=blue BG_VISUAL=green
| THING='noremapsomething<vimscript>' vim` than polluting my
| home with a single ~/.config directory in which to put all my
| config files. And if that gets too long to type every time I
| start vim I can just make an alias and put it in a file and
| ..oh
| smittywerben wrote:
| RegEdit.exe welcomes you with open arms. It even supports
| multiple endian mixed encoding strings. Clearly it was
| designed for galactic scale.
| bheadmaster wrote:
| > This is the crap responsible for poluting $HOME.
|
| I think people who wrote software used $HOME for dotfiles way
| before XDG even existed.
|
| > If the user does not configure anything, just use global
| defaults.
|
| And if he does, where do you put the dotfiles? $HOME? XDG
| defines an cleaner hierarchy.
| 2mlWQbCK wrote:
| Clean hierarchy? How do I even guess if some config-file is
| hidden in ~/.config/ or ~/.local/share? I never figured that
| out. Looking at the contents of those directories here I
| can't guess better than a coin-toss. Why not just have a
| single ~/.dotfiles or something (if hidden files in ~/ is
| somehow a problem that needs to be solved)?
| eadmund wrote:
| > How do I even guess if some config-file is hidden in
| ~/.config/ or ~/.local/share
|
| A config file always belongs in ~/.config/PROGRAM. It never
| belongs in ~/.local/share/PROGRAM.
|
| Data files (e.g. icons) belong in ~/.local/share/PROGRAM.
|
| User-specific state (e.g. window positions) belongs in
| ~/.local/state/PROGRAM.
|
| Executables belong in ~/.local/bin/.
|
| Cached files (which may be deleted any time for space)
| belong in ~/.cache.
|
| Source: https://specifications.freedesktop.org/basedir-
| spec/latest/
|
| > Why not just have a single ~/.dotfiles or something (if
| hidden files in ~/ is somehow a problem that needs to be
| solved)?
|
| I believe that the answer is that certain of those
| directories make sense to share across different hosts
| (e.g. your laptop and desktop) and others don't.
| blooalien wrote:
| > I believe that the answer is that certain of those
| directories make sense to share across different hosts
| (e.g. your laptop and desktop) and others don't.
|
| Also; Some of those directories make sense to flag for
| backup in your favorite backup software (personal
| settings, data files, etc), where others (cache) make
| sense to _not_ waste drive space on backing up.
| wang_li wrote:
| I believe the point they are making is that for plenty of
| tools people don't change any configuration settings. If I
| haven't changed from the application default setting, why is
| the application creating a configuration file in my home
| directory hierarchy?
| rnhmjoj wrote:
| I'm not sure how you came to that conclusion, but you got
| everything completely wrong.
|
| First of all, writing state and configuration files in the home
| directory, without any well thought out structure, has been a
| common practice since UNIX existed, XDG did not even exist
| then.
|
| Precisely because this lazy practice causes all sorts of
| problems, the cross-desktop group (XDG) came up with a standard
| called the "base directory specification"[1] which proposes to
| divide applications files into configuration, data, caches and
| are supposed to be stored in subdirectories named after the
| application in $XDG_CONFIG_HOME ($HOME/.config if unsed),
| $XDG_DATA_HOME ($HOME/.local/share if unset), $XDG_CACHE_HOME
| ($HOME/.cache if unset), respectively.
|
| [1]: https://specifications.freedesktop.org/basedir-
| spec/latest/
| porridgeraisin wrote:
| I shall refrain from my usual XDG-hate rant, while still leaving
| this comment in here to potentially start the usual flamewar.
| arcanemachiner wrote:
| But why would anyone possibly hate XDG?!
| throw16180339 wrote:
| Some people seemingly resent any functionality that wasn't
| part of V7.
| ChocolateGod wrote:
| This is one of the reasons I like Flatpak, it can force
| misbehaving apps to not pollute my home folder with their hidden
| .folders that never get cleaned up on removal and instead go in a
| managed directory where it belongs.
| ryandrake wrote:
| Interesting info about Flatpak. I didn't know that!
|
| Unfortunately, conventions and suggestions only sometimes work
| in software development. There will always be developers who
| ignore or actively fight the conventions because it's important
| to them to do everything _their way_. This is usually the
| reason behind why we still have Windows applications trying to
| install themselves under the root C:\ directory and macOS
| applications that ship with an unnecessary installer rather
| than using the conventional "drag the app into the
| Applications folder."
| 8200_unit wrote:
| flatpak creates more issues than it solves for me personally
| butz wrote:
| I wonder if Firefox will ever fix this 20 year old issue
| https://bugzilla.mozilla.org/show_bug.cgi?id=259356 ?
| robertlagrant wrote:
| It got soft-killed 12 years ago, by the looks of the thread[0].
| Incredibly, some of the same people are still replying across
| the decades.
|
| [0] https://bugzilla.mozilla.org/show_bug.cgi?id=259356#c69
| polivier wrote:
| This is a tough problem to solve. I currently use NixOS with
| impermanence [1] which is one way of solving it. Impermanence, in
| short, allows you to explicitely opt-in the files and directories
| that are persisted after each reboot.
|
| So while my `~` is not "clean" in the sense that all my config
| files are in `~/.config`, it is "clean" in the sense that all
| files in `~` are there for a reason (i.e., `~` is not polluted by
| the old config/cache of uninstalled packages).
|
| [1] https://github.com/nix-community/impermanence
___________________________________________________________________
(page generated 2025-03-06 23:02 UTC)