I have a multiple user linux system. Well actually a couple of them. They are running different distros which are arch-based, debian-based and fedora-based.
I want to globally use non-executable components not available via my system's package manager. Such as themes, icons, cursors, wallpapers and sounds.
Some of them are my own original work that I manage in git repos. Others are downloaded as packages/collections. If there is a git repo available I prefer to clone because it can theoretically be updated by pulling. And sometimes I make my own forks or branches of other people's work. So it's really a mix.
I want to keep these in a totally separate area where no package manager will go. So that it is portable and can be backed up / copied between systems without confusion. Which is why I don't want to use /usr/local
.
I also want to be able to add/edit in this area without su
to root
. So that I can easily modify or add items which then can be accessed by all users. Also a reason to avoid /usr/local
I tried making a directory like /home/shared/themes
then symlinking ~/.themes
in different users to that. It sometimes worked OK but I ran into permissions issues. Git really didn't seem to like sharing repos between users. I can live with only using a single user to edit the repos but it didn't like having permissions recursively changed to even allow access.
Is there a way to tell linux to look in a custom location for these resources for every user on the system? I also still want it to look in the normal places so I can use the package managers when possible.
fonts - once solved
On one install, I found a way to add a system-wide custom font directory though I am not able to recall how that was done. I believe it had to do with xorg or x11 config files. I can't seem to find in my shell histories how it was done but I will look some more. I do recall the method was highly specific to fonts and didn't appear to be transferable to other resources.
no package manager should put stuff into /usr/local, thats why its /usr/local. package manager should only put stuff into /usr/... not /usr/local. In the past some mainframes mounted these directory via nfs to do some kind of software management. It contains global stuff that is not managed by the package manager. install some software via "tarball and make" and it most likely puts everything into /usr/local/...
It's the best location for your needs. /home/shared is a bad idea. /home is reserved for home directories not some shared stuff.
/usr/local is specifically what you are asking for. i would put themes to /usr/local/share/themes for example. chances are gtk will already look there. You can manage permissions inside /usr/local as you like. since the package manager doesn't care for that directory there is no problem. giving write permissions only to root still is a good idea. it suggest to learn to use sudo when you are working on your system.