As a user of a Linux system, you should have a runtime directory available for
applications. Such a thing is even defined in the XDG Base Directory
$XDG_RUNTIME_DIR -- and it is quite likely that you do have one set up.
You may have a session manager or some other component of your system handling
this directory for you, in which case the following likely won't be of much
interest to you.
If you do not have a
$XDG_RUNTIME_DIR however, let me introduce a little PAM
module to take care of it.
I'm running Arch Linux, as under Arch one would usually use
session manager, which takes care of
$XDG_RUNTIME_DIR for you. I do not run
systemd however, and as such I was left without anything to handle it for me.
So after looking for a solution, as that's a nice thing to have, and failing to find one, I wrote myself a little PAM module to do just that: pam_rundir
It's a small PAM module that can be used to provide user runtime directory, as
per the previously mentioned specs. It will create the directory (with correct
ownership/permissions) on login, and remove it on log out (unless there's
another session active, of course). And it'll set the environment variable
$XDG_RUNTIME_DIR to its full path, as you'd expect.
That's it, but when you don't have something handling it, that's all you need. As usual all the links (download, source code, etc) can be found on the pam_rundir page.