/etc/skel is a Linux mechanism to populate new /home directories. If you put something into the /etc/skel of the template it will be in the /home/user directory of any newly created qube that is based on that template.
The copy takes place at the time the qube is created. If you change it in the template after the qube was created it has no effect.
This works perfectly. I use it with all my templates to put GTK config files and custom scripts in place.
Strictly speaking, the copy from /etc/skel on the ‘root’ volume to e.g. /home/user on the ‘private’ volume happens when the qube is booted up for the first time, as part of the systemd qubes-mount-dirs.service started inside the qube.
I can confirm this. If you do things in the following sequence, it works. (And I apologize if this is too much detail for @AWhite, but it might benefit others.)
Copy files to /etc/skel in the template.
Then, create a new appvm (and it can be either a “regular” appvm or a dvm template) based on the template.
The /home/user directory of the appvm will have your files set up analogously to where they were in /etc/skel. In other words if you put file “foo” in /etc/skel/bin (i.e., the path is /etc/skel/bin/foo) then it will end up in /home/user/bin/foo.
But the key thing is the appvm must be created (not just run, but created) after you put your files in /etc/skel. So if you already have an appvm with a bunch of data in that directory, you’ll have to back it up somewhere, delete and recreate the appvm, and copy your data back to the new appvm. [Edit to add: This is true even if the appvm is a disposable template. Just running a new disposable off the dvm template is not sufficient; the dvm template itself must be re-created.]
One advantage to using disposables is that you never really have any hassle with recreating the disposable templates, because there’s no data accumulating in the AppVM (the one that is the disposable template) that you have to worry about saving. Very rarely do you need to set things up in the disposable template, since almost all setup is done in the “real” template itself.
I am not sure what your objection is, so I’ll list some facts in the hopes that one of them is relevant.
When you clone a template, you make an exact copy of it (but with a new name, obviously). From that point forward, they’re independent of each other. If you make a change in the original template, it will not appear in the copy. If you make a change in the copy, it will not appear in the original.
When you create an AppVM (including disposable templates), /etc/skel on the template is copied into /home/user on the AppVM. It will not be done again; if you change /etc/skel on the template you must either manually do the copying on your AppVM, or delete it and recreate the AppVM. (This is true if the AppVM is a disposable template, too.) [It is also possible if you were to create a new user account on the AppVM, it would copy, but I’ve never tried to do that and am not even sure it would work well in a Qubes context.]
One other thing to note: /home/user on the template doesn’t appear on the AppVM, they’re different things. Or to put it another way, if you put a file in /home/user on the template, it will NOT appear in /home/user on the appvm, not even if you delete and recreate the AppVM.