On 19/09/2021 17:53, Mantas Mikulėnas wrote:
On Sun, Sep 19, 2021 at 4:05 AM Ed Greshko <ed.gres...@greshko.com> wrote:
Not a everyday systemd service writer....
I've written a user service file to start an app on login. It works well
for Xorg with Environment=DISPLAY=:0.
But I've found that under Wayland the DISPLAY=:1 after a logout of Xorg and
login to a
Wayland session.
What would be the proper way to get the DISPLAY environment varible use it
as opposed
to "hard" coding it?
The proper way is to have *the desktop environment* upload DISPLAY (and
whatever else is relevant, such as XAUTHORITY or WAYLAND_DISPLAY or
XDG_SESSION_TYPE) into systemd --user, so that it would be automatically
available to your service *without *doing anything special.
For example, gnome-session does this for GNOME (it calls systemd's
UnsetAndSetEnvironment in gsm-util.c), and
/etc/X11/xinit/xinitrc.d/50-systemd-user.sh handles the bare minimum for other
Xorg-based desktops (when startx is used).
If KDE integrates with systemd --user in any way (i.e. if it actually has a
"plasma-core.target" that you mention), I'd really expect it to do the same
before it tries to start its own targets, otherwise they would be kind of useless.
OK......
I think I see the problem now. I don't need Environment=. But the issue is that, I
assumed, "plasma-core.target" would be
reached only after a user logged in to plasma.
I was wrong and the user's service is run earlier when the login screen appears.
I need to find a way such that the service only runs when a user logs on to the
plasma GUI.