With the advent of systemd --user sessions, it's become very interesting to 
spawn X as a user unit, as well as accompanying processes that may have 
previously been in a .xinitrc/.xsession, or even just to replace a collection 
of XDG/GDM/KDM/etc session files with independent systemd --user units. The 
simplest case here would be to login on a tty, with the traditional 
/usr/sbin/login "login manager".

However, systemd --user (spawned by [email protected]) is at the top level of the 
slice for the user, and does not inherit any environment variables from the 
login process. Given the number of common applications which rely on SHELL 
being set in the environment, it seems like the cleanest way to provide this 
variable is to set it to %s in the [email protected].

Ideally in the long-term, applications which rely on SHELL being set should be 
fixed to just grab it from getpwnam() or similar, but until that becomes more 
common, I propose this simple change to make user sessions a little bit nicer 
out of the box.

---
 units/[email protected] | 1 +
 1 file changed, 1 insertion(+)

diff --git a/units/[email protected] b/units/[email protected]
index 3f8b59d..3718a57 100644
--- a/units/[email protected]
+++ b/units/[email protected]
@@ -13,6 +13,7 @@ After=systemd-user-sessions.service
 User=%I
 PAMName=systemd-user
 Type=notify
+Environment=SHELL=%s
 ExecStart=-@rootlibexecdir@/systemd --user
 
Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%I/dbus/user_bus_socket
 Slice=user-%i.slice
-- 
1.8.3.1


Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
systemd-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to