Hi,
I'm coming back to "how to fix gdm". What we have now is a hack, that allows
setting the keyboard layout for gdm at compile time, but prevents being able
to set it and other properties of gdm in gnome-control-center (no "login
screen" button).
Gnome-shell, gnome-control-center, and gnome-setting-daemons insist on having
the localed daemon to do the job, so it might be a better idea to install it.
localed is a small daemon, and there is not much to add (to port from the
systemd source, exactly) to elogind to have this daemon on our system. DJ has
produced a first version of the patch, which compiles, but unfortunately is
not functional. I've found one reason for that, discussed on -support, but
that I will put below for completeness. And I think I've found another place
where the code might be wrong (but I do not know how to fix it yet): in
localed, there is this code snippet:
-------
r = sd_bus_message_new_method_call(bus, &m,
"org.freedesktop.systemd1",
"/org/freedesktop/systemd1",
"org.freedesktop.systemd1.Manager",
"UnsetAndSetEnvironment");
if (r < 0)
return bus_log_create_error(r);
-------
and this one:
-------
r = sd_bus_call_method(bus,
"org.freedesktop.systemd1",
"/org/freedesktop/systemd1",
"org.freedesktop.systemd1.Manager",
"RestartUnit",
&error,
NULL,
"ss", "systemd-vconsole-setup.service", "replace");
-------
those cannot work because there is no systemd daemon... There may be similar
code in logind, and the first thing to do is to see how the elogind folks have
ported it. Otherwise, I think we should mimic what those function do without
using systemd1...
The other issue already reported to -support (with a partial fix) is:
the /usr/share/dbus-1/system-services/org.freedesktop.locale1.service file
contains:
---------
[D-BUS Service]
Name=org.freedesktop.locale1
Exec=/bin/false
User=root
SystemdService=dbus-org.freedesktop.locale1.service
--------
But this is wrong, since there is no systemd to launch the service. So it has
to be changed to:
--------
[D-BUS Service]
Name=org.freedesktop.locale1
Exec=/lib/elogind/systemd-localed
User=root
--------
Note that the clean approach should be to have a ...service.in file containing:
--------
[D-BUS Service]
Name=org.freedesktop.locale1
Exec=@rootlibexecdir@/systemd-localed
User=root
--------
and to modify the meson.build file accordingly (as it has been done for
org.freedesktop.login1.service)...
Pierre
--
http://lists.linuxfromscratch.org/listinfo/blfs-dev
FAQ: http://www.linuxfromscratch.org/blfs/faq.html
Unsubscribe: See the above information page