diff --git a/sources/tech/20180521 Starting user software in X.md b/sources/tech/20180521 Starting user software in X.md new file mode 100644 index 0000000000..cf4ae850f6 --- /dev/null +++ b/sources/tech/20180521 Starting user software in X.md @@ -0,0 +1,80 @@ +Starting user software in X +====== + +There are currently many ways of starting software when a user session starts. + +This is an attempt to collect a list of pointers to piece the big picture together. It's partial and some parts might be imprecise or incorrect, but it's a start, and I'm happy to keep it updated if I receive corrections. + +### x11-common + +`man xsession` + + * Started by the display manager for example, `/usr/share/lightdm/lightdm.conf.d/01_debian.conf` or `/etc/gdm3/Xsession` + * Debian specific + * Runs scripts in `/etc/X11/Xsession.d/` + * `/etc/X11/Xsession.d/40x11-common_xsessionrc` sources `~/.xsessionrc` which can do little more than set env vars, because it is run at the beginning of X session startup + * At the end, it starts the session manager (`gnome-session`, `xfce4-session`, and so on) + + + +### systemd --user + + * + * Started by `pam_systemd`, so it might not have a DISPLAY variable set in the environment yet + * Manages units in: + * `/usr/lib/systemd/user/` where units provided by installed packages belong. + * `~/.local/share/systemd/user/` where units of packages that have been installed in the home directory belong. + * `/etc/systemd/user/` where system-wide user units are placed by the system administrator. + * `~/.config/systemd/user/` where the users put their own units. + * A trick to start a systemd user unit when the X session has been set up and the DISPLAY variable is available, is to call `systemctl start` from a `.desktop` autostart file. + + + +### dbus activation + + * + * A user process making a dbus request can trigger starting a server program + * For systems debugging, is there a way of monitoring what services are getting dbus activated? + + + +### X session manager + + * + * Run by `x11-common`'s `Xsession.d` + * Runs freedesktop autostart .desktop files + * Runs Desktop Environment specific software + + + +### xdg autostart + + * + * Run by the session manager + * If `/etc/xdg/autostart/foo.desktop` and `~/.config/autostart/foo.desktop` exist then only the file `~/.config/autostart/foo.desktop` will be used because `~/.config/autostart/` is more important than `/etc/xdg/autostart/` + * Is there an ordering or is it all in parallel? + + + +### Other startup notes + +#### ~/.Xauthority + +To connect to an X server, a client needs to send a token from `~/.Xauthority`, which proves that they can read the user's provate data. + +`~/.Xauthority` contains a token generated by display manager and communicated to X at startup. + +To view its contents, use `xauth -i -f ~/.Xauthority list` + +-------------------------------------------------------------------------------- + +via: http://www.enricozini.org/blog/2018/debian/starting-user-software/ + +作者:[Enrico Zini][a] +选题:[lujun9972](https://github.com/lujun9972) +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]:http://www.enricozini.org/