$HOME pollution

Run a big X11 WM and you get all those nice xdg dirs, Pictures, Documents, Templates, Bullshit in your home directory, with extra hassle needed to remove it. Run a package manager for a new language, without knowing you should create a config to turn off the default behaviour, and there, another new directory in $HOME. Run something like Virtualbox, music creation programs, programming IDEs, whatnot, if you don't follow everything in the GUI windows and change paths, another new directory.

Run enough programs, per default, and your home dir ends up looking like backyards of Windows, without any convention at all. Just a typical gore of autogenerated application profile and data directories.

It would be nice to introduce a NO_TRESPASSING envvar programs should observe and never imply and create directories on their own.
 
...or chose a more minimalistic WM instead a bloated DE with lot pollution, and decide which programs you use.
I hate it too, if some create own non-standard extra subdirs messing up my place. To me this can be a killer criteria not to use a certain prog.
Beside some 'standards' most progs I use place their junk in ~/.config under a comprehandable name (also a killer crit.) Without wine I wouldn't even had a ~/Desktop dir.
 
I prefer that new applications create their folders directly in $HOME over going down hiding them somewhere in existhing shared folders.

Yes I agree it should be a preference, to be honored by programs.

...or chose a more minimalistic WM instead a bloated DE with lot pollution, and decide which programs you use.
I hate it too, if some create own non-standard extra subdirs messing up my place. To me this can be a killer criteria not to use a certain prog.
Beside some 'standards' most progs I use place their junk in ~/.config under a comprehandable name (also a killer crit.) Without wine I wouldn't even had a ~/Desktop dir.

KDE isn't hard to reconfigure, just a couple of settings GUI clicks and those xdg dirs can be deleted, but I would like to skip that and just presume ~ as the default directory for all the xdg folders.



I would like applications to behave the way they did - persist default (latest) directories inside their own configuration by default. Typically if there was no latest dir entry, $HOME was used.
 
inside their own configuration by default.
You mean in a directory like /usr/local/etc/<name_of_app>/config?

Unix is a multi user system. If you do the above, every time another user runs the application, another set of configs is created (or the current one modified). Who will handle the cleanup? How do you deal with permissions? How about storage quota, a user is now using disk space in a place where they traditionally don't? What if the number of users makes /usr/local run out of disk space? How does one deal with all the user files when the application is upgraded? How do you clean all of these up when a user is deleted or renamed?

What you are proposing is quite similar to the Windows registry, except implemented as a file system instead of as a database. Which is great for a de-facto single user system, but doesn't fit into the Unix philosophy. The user's home directory (or preferably a subdirectory) is the better place. With dot files (the name of the app's config directory starts with a dot, therefore is invisible by default) the config directories don't get in the way much during normal user work.
 
I agree, it would be wonderful if all the ~/.* files were inside ~/.config (and maybe a ~/.data since all of them aren't necessarily config files). It's annoying. I currently have about 30 dot files and I suspect others have way more. The problem is that many of the programs we use predate the .config practice and early UNIX folks found the idea of hiding '.' files by default to be the solution. I suppose the simplest solution would be to just break myself of the habitual use of 'ls -la' and 'ls -lrt' (yes, I know, aliases are our friends but they may not be present on all of the systems I touch so it's just more consistent).
 
You mean in a directory like /usr/local/etc/<name_of_app>/config?

No I am not proposing writing outside of user's home.

Everything depends on type and amount of data the application needs to persist.

Something like a text editor might live with just one dotfile. So a default-save directory for the application would be persisted in that dotfile. A web browser might need a whole tree for storage, so it might be located in $HOME/.local alltogether per Unix convention, or in $HOME/.config per arbitrary convention.

Ideally (in my opinion) the dotdirs should move to .local or .config, whatever suits the case better.
 
Code:
% ls -a $HOME/ | wc
   1793    1830   27060
% ls -ad $HOME/.??* | wc
    653     654   20602

Oops. Quite a few dotfiles.
 
Unix is a multi user system. If you do the above, every time another user runs the application, another set of configs is created (or the current one modified). Who will handle the cleanup? How do you deal with permissions? How about storage quota, a user is now using disk space in a place where they traditionally don't? What if the number of users makes /usr/local run out of disk space? How does one deal with all the user files when the application is upgraded? How do you clean all of these up when a user is deleted or renamed?
Even if a multiuser system, most users rarely share each others' files/directories.

Personally I would prefer each user get a personalized virtual machine or system (sort of a jail -- the root namespace and everything below), while everything the system provides goes under /sys. I said "sort of a jail" because I want a single virtual system composed from *all* the machines (within one's home or org) one has access to. If everyone has a similar looking namespaces, programs are less likely to break and securities has to be thought through upfront - it is also clear unix'es 03777 permission universe is not up to modern security challenges.

Shared project files go under /projects/<projectname> etc. Similarly services to have their own "personalized" namespace, with careful connections with other services and users.

This is different enough that unless I prototype something, it will remain a faint dream! [A high probability]
 
Partially agree, if something is going to be blocked, at least, the file or top level folder needs to be noted into a standard named file under ~/. This way if you need it, you can know how to get it, or you'll know what's missing.

There needs to be a standard folder which they go into. .config is one. Different program suites install into different places. Or placing anything which doesn't fit into .config and other places in your proposed definition into another specific subdirectory under ~/. So it can fill that up, instead being all over the base directory of home. Then, FreeBSD can know to also use that directory for configuration settings.

.core is another one, which shows up everywhere when a program starts or terminates. It shows up in any directory you type a program in to run it. There needs to be a standard ~/.core/ directory as well, where every .core file automatically gets placed there, and perhaps in addition, notes the directory the program was run in.
 
Personally I would prefer each user get a personalized virtual machine or system
Congratulations. You just invented IBM VM. The machine boots into a very simple virtual machine manager, and every user gets an OS of their own (called cp/cms). Every user gets virtual disks, virtual tape drivers, virtual printers, virtual card readers, and a virtual console. The user's normal "home disk" is typically called the A disk, by convention.

The problem is that every user now needs to install all the software. Which is clearly insane, because now you need 100s of copies of that software. So you instead put shared software (system software, what we in BSD would call ports, and site-local software) into a shared file system (cleverly called SFS), which is typically made available as the X or T disk, and every user can mount it. Yes, it is a cluster file system, because there are multiple (usually hundreds of) mounts.

The whole thing is from 1967. It took Unix until 1986 to get the first shared file system (NFS), and only in the last 20 years (since VMware demonstrated that virtualizing the x86 is possible) it is moving towards that direction.
 
You guys seem to experience problems that are alien to me.
I run no DE - I just run a WM - pretty much like Maturin mentioned.

My only "offenders" are:
  • ~/.mozilla
  • ~/.vim
  • ~/.wine
which I am okay with as per the reason mentioned by cracauer@.
 
Congratulations. You just invented IBM VM. The machine boots into a very simple virtual machine manager, and every user gets an OS of their own (called cp/cms). Every user gets virtual disks, virtual tape drivers, virtual printers, virtual card readers, and a virtual console. The user's normal "home disk" is typically called the A disk, by convention.

The problem is that every user now needs to install all the software. Which is clearly insane, because now you need 100s of copies of that software. So you instead put shared software (system software, what we in BSD would call ports, and site-local software) into a shared file system (cleverly called SFS), which is typically made available as the X or T disk, and every user can mount it. Yes, it is a cluster file system, because there are multiple (usually hundreds of) mounts.

Yeah that has giving an employee a Chromebook and single-usering it sounding like an easier solution to user separation :p

I like the idea of separation to an extension (every game in Wine gets installed to its own individual prefix), but don't necessarily like core or base system apps having it away from the OS.


I figure the home folder to be fair-game for any user-side apps. As long as I (the single user) have a slight mess contained only to /home, fine :p
 
You just invented IBM VM
I did use VM/CMS for a couple of years in my first job but it "felt" very different from Unix (+ I didn't delve into it -- I worked on a Pascal compiler).

The problem is that every user now needs to install all the software.
This is where the idea of plan9's namespaces can really help. You basically construct a namespace for each user out of standard filesystems and devices (each resource presented as a namespace). And overlay with a writable layer if you want some subtree to be writable. In effect you have 100 *views*, not 100 *copies* for 100 users. But IMHO plan9 style FS & namespaces need a more work for such an application.

The other thing I want (which AFAIK VM/CMS didn't have) is a unified view across all your devices, where physical machines are merely computing resources, screens are output devices, etc., all components of a virtual machine (as opposed the way currently we do jails/VM, which divide up resources of a single machine and its cores, and sharing/clustering is rather clumsy). Of course, all this complexity would have to be exposed securely to a scheduling component.
 
It's not always the DE or WM creating those items, it's often the applications you run. As @jbo points out, you run firefox once and you get a .mozilla directory. Claws-mails? .claws-mail. Audacity? Yep you guessed it, .audacity-data. GnuCash? $HOME/.gnucash
$HOME/.config seems to be configuration of applications, while the $HOME seems to be more data. gnucash is an example that.

Perhaps it's more "undocumented" is the problem.
 
just a couple of settings GUI clicks and those xdg dirs can be deleted,
That already was too much effort for me. 😂

GUI clicky-clicky may come extra, but since for most config you would get way too many checkboxes and other too complex GUI junk, config primarily has to be done in non-XML textfiles to be edited individually with the texteditor.
Where individually means: everybody saves her own personal settings := (somewhere) in the own /home/

I also don't like predefined garbage like my home already contains subdirectories like "My Music", "My Pictures", "My shared..." crap. I hate that!
I like to define my own structure. But those things also belong to the concept of a software, especially a desktop environment (DE). That's (and for other reasons, too) why I (and many others) don't use a DE at all, but a window manager (WM), "only". Those just deliver the technics for to use a GUI, but at the same time let the user alone with predefined concepts, like which software is installed by default, a predefined logic about structure, organization, what is where, how has it be used etc.
But that's personal taste.
Many like to have a predefined DE, don't want to care much about setting up and configure their place a lot, and are pretty fine with the concepts they bring.
Others prefer most individual settings, even being exasperated by unchangeable, predefined concepts prechosen by other's logic, so chose a more or less unfussy, simple, plain, pure WM.
Downside of a WM is: You have to bring all concept by yourself, starting by editing the WM's config to give it an acceptable look, edit the menus, decide which software you like, and install it by yourself etc.
But there is a choice.

KDE's original idea was to create a DE being very like MS Windows. There are many who don't want to change their learned concept when switching systems, have no problem with Windows' concept at all, or actually may really like it. However, as long as I am not forced to use it (e.g. comes as a default for FreeBSD :rude: - which will not happen) I am absolutely fine with it. Because I can pick from dozens of choices of other DE/WM. Downside: I have to look for them, test them, decide for one, and configure it all by myself.
The result:
I don't have to bother with predefined concepts but have my own individual tailored personal one.
As it was said above:
You don't have to bother with what you complained about - just chose something else.

And for myself since I switched completely to FreeBSD I disarm my GUI more and more - switched to more simple DEs, finally to a WM, deinstalled the GUI version of vim (shell only), deinstalled the last file manager years ago...
I don't need it. I don't use it. I don't want it.
I do more and more work directly in the shell - unix-style.
So to me all the GUI is for providing some capability for graphics: browser, pictures, movies, and yes, of course, the one or the other prog is better be used with a GUI: CAD, Gimp, Audacity, games... but my audio player for example again is CLI, only, runs in the shell, only. To me graphics are useless when I just listen. Also I have no desktop calculator installed anymore. I use bc or wcalc. If I wanna need to know what three times four is, I just need to know it's twelve, I don't need no fancy LCD look like graphics toy for that.
And of course I find it way more comfortable to use the shell in windows the GUI provides than using the TTYs. And of course, that's personal style.
But to me that's all a WM ("GUI") needs to provide, 'cause I'm computering (more and more) unix-style.

Which brings us to:
A web browser might need a whole tree for storage, so it might be located in $HOME/.local alltogether per Unix convention, or in $HOME/.config per arbitrary convention.

Ideally (in my opinion) the dotdirs should move to .local or .config, whatever suits the case better.
Many progs use more than one subdirectory, not webbrowsers only. Depending on the certain prog/software there are many reasons why and for what more than just a simple config-file is needed - templates, skins, personal user settings, history... etc. et al. That's how more complex software with more features looks like even within ~.
That's how it is.
And that's completely okay. It's for sure better than one monolithic block containing everything.
As long as everything is within a single directory with a comprehendable name, so I know which belongs to what.

Those are placed either directly in ~ as one dot-file or one dot-directory, or as non-dot in ~/.config, plus some additional things also are under ~/.local - but that's it.
Within the thirty years I work with unix[like] systems I very barely seen exceptions from that.
And I absolutely agree with you 100% it's no good style to do it otherwise non-standard - to me this can be killer criteria to not use a certain software, because I don't want my place become a mess like under MS Windows.

Over time a personal ~ will fill up with all the stuff you install, and use.
~2/3 of all files in my personal ~ start with .
To me that's a lesser problem.
Because there is a reason why they start with a dot. Those are "hidden files" - not to be shown by default when you list the directory's content. The option -a for ls ain't meant to be used as the default. To get a separation from what's your production, and what's seldom needed to be seen, and only specifically edited - config.
Also I don't install a lot of software "just by default, just because it's what one needs to have", which would fill up my place incomprehendably. If I need/want a certain software I always install one, or two packages at the time.
Then test it, if it's what I want. If it's not I deinstall it directly again - which includes I also remove all files (its directory) it may have produced in my ~ or ~/.config (tip: the option -t for ls can be very valuable for such tasks.)
This way I don't mess up my place, even with a lots of files in my ~ I don't lose overview - my home grows with my experience - I'm pretty sure all what's in my ~ is of any use, no garbage, I barely stumble over a file I wonder where this belongs to. 🤓😎

But of course to me that was a learning process, too. I had messed up several of my ~, completely removed at a certain point because I lost overview completely, so lost confidence in it, and started all over 😂

But once you get used to the concept of ~/.files and ~/.config/files you will see there is no mess (bare exeptions excluded), in contrary there is a clear and logical order - you simply get just a lot of stuff over time.
Which of course is the main reason to avoid $HOME pollution, and keep things in order.

Last tip:
Since my ~ is regulary backupped, many things I don't like to have in it:
- the whole wine-rubbish
- the whole VirtualBox-rubbish
- everything large, and seldom changed: music, videos, pictures, books, (iso)images,....
That's all externalized to other pools, partitions, drives, or my NAS (nfs)
I don't fill up my ~ with hundreds of GB. Currently my ~ has ~16GB, and I'm feeling the urge to externalize even more.
Only what's "current production" (most is also under version control), besides some few small, other things, only all config I keep in my ~, only.
Of course I like to have access to all the other stuff directly from my ~, and certain things like wine or VB needs to live here. For that I use links ln(1) - it's exactly like it was at home, but actually it lives on a different storage. 🤓
 
  • Like
Reactions: mer
DE vs WM. For me the only "advantage" a DE has over a pure WM is ease of setting consistency/theming.
Things like default fonts, font sizes, colors, transparency etc.
All things that can be done for a regular WM but a bit more work for the user they need to understand Xresources.

Another problem I have with DEs is they all seem to reinvent the wheel in their own image. What's wrong with old fashioned xterm, rxvt that we need kterm,gnome terminal, roxterm,sterm, xfce4-terminal.....?
How many different gui based filesystem browsers are needed (but for me why are they needed at all?)
I think a lot of the old timers that started on VT100s at the CLI wind up with just a window manager or a simple DE like CDE. Folk coming from Windows, I think tend towards a DE of some sort because it's familiar.
 
Careful, mer,
you may start flame wars with such remarks 😂

Many people just like to have many features - the more the better.
Some people really have an actual use for those. Depending on personal work styles some can really improve work efficiency with such, while others just bloat the place, or even lower efficiency.
And of course not everbody is capable to see, what's really useful, and what's just useless toys - especially if one came from Windows. 😁
 
  • Like
Reactions: mer
I don't come from Windows and I very much prefer DEs. Don't generalize, just accept that people may have different needs and preferences.
 
Some people really have an actual use for those. Depending on personal work styles some can really improve work efficiency with such, while others just bloat the place, or even lower efficiency.
I don't disagree that personal work styles have different needs, but I've never understood how minimizing an application is improved by having the app window spin around, shrink, spin some more, change colors to end up as an icon or entry on a taskbar. Is it "cool"? Sure in some sense. Window transparency? Maybe if one has overlapping windows that you want to see output on the background one, but then does that compete with the window in the foreground?
From what I've seen a lot of the special effects in most DEs can be visually attractive, showcase some good hardware capabilities, but as stated, for me based on my needs and preferences which may be completely different from everyone elses, they don't add which is why I typically turn them all off.

I don't come from Windows and I very much prefer DEs. Don't generalize, just accept that people may have different needs and preferences.
I wasn't generalizing, I stated "I think..." hence stating an opinion. I never said there was anything wrong with prefering a DE over a WM. Everything in my post at #18 is an opinion based on my preferences, never said "your needs and preferences must be the same as mine". Don't read intent into my words.
 
Don't generalize, just accept that people may have different needs and preferences.
No one generalized. I just made a simple not be really taken that serious joke on Windows - not DE users.
And I thought I was pretty clear in my posts that I respect different peoples needs, and preferences.
 
but I've never understood how minimizing an application is improved by having the app window spin around, shrink, spin some more, change colors to end up as an icon or entry on a taskbar.
That's not features, actually.
That's what I also meant with "toys." Actually it's garbage. (In my eyes. [my personal opnion, not to be taken as a dogma everbody has to rule under.])
There is no improvement in that. Only more need (waste) for resources. That's useless frills. It's marketing. It's for selling, only. Since most people - doesn't matter if they are kids or see themselves as mature adults - are thrilled by pure optical colorful blinky-blinky humbug.
Additionally sadly we're living in a time where how things look is the most important, often the only criteria.
So you wanna sell something don't waste your effort on good engineering. Most people cannot judge, will not even recognize if some crap actually works. By far we do not even remotely talk efficiency. (With 'most' I neither said nor mean 'everbody', especially not fmc000 😁.) Just get some good designers, polish the crap optically, and it's sold.
Window transparency?
That's another good example I can tell from my own experience.
You have to admit, it really looks very cool. So, I made the effort to realize transparency on my WM, too.
After a couple of days I deinstalled that nonsense again, because for the exact same reason you tell:
It brings no improvement whatsoever. At least I don't see none. It may have a benefit when you're using a small single monitor, maybe. But on my multihead desktop where there is enough space to distribute the windows, it only looks, but actually it lowers work efficiency, because you reduce the speed to percieve, because of the underlying, gleaming background the picture becomes more unclear.

But besides that's personal taste everybody can decide for herself (recognized this one, fmc000?) that wasn't really what I meant with my understanding many may have a real use for some features.
I was talking like terminals coming with things like to quickly change font, size, color,...in pull down menus, doing more complex things on history, or completion, and many other things I currently cannot think of, because personally I neither need nor use them myself. I tried several other terminals, and always came back to xterm, because it provides all I need, while the others to me simply feel bloated. But I can imagine, and comprehend others may have an actual use for it.
So, that's exactly one of the core benefits of not using a DE, but a WM: I install one, and only one - my favorite - terminal emulator, no need to deal with things others like. (That again was no generalization, fmc000. 😁)

But we are off topic.
The topic was not to mess up ~
 
What I want is that default configs live in system-wide place like /usr/local/etc/ or /usr/local/share/ and not copied into each user's home directory automatically on first run, but when any manual config is done by the specific user via the software's config functionality.

For softwares which doesn't have config functionality, each user who want to use it with own customizations should copy defaults from system-wide place and edit it.

This would minimize pollutions unless specific user want customized configs.
 
What I want is that default configs live in system-wide place like /usr/local/etc/ or /usr/local/share/ and not copied into each user's home directory automatically on first run, but when any manual config is done by the specific user via the software's config functionality.

For softwares which doesn't have config functionality, each user who want to use it with own customizations should copy defaults from system-wide place and edit it.

This would minimize pollutions unless specific user want customized configs.
That makes sense to me, especially since I did few years ago:
sudo rm -rf /usr/ports/*⍽.* WHILE IN eFing ~/ !!!!!!
I had snapshot of the system, but not of the ~/! That SSD got immediately physically disconnected to preserve TXG, and I'm still very careful to not connect it back until I'm 100% certain that I can recover all of my beautiful ricing of vt and X and KDE stored in ~/.* files and dirs.

Moral of the story: Kids, do snapshots of your $HOME!
 
Back
Top