Hi, and thanks to both of you — #1130322 and #1143945 turned out to be the same bug, so I
have merged them.

The cause is that Cinnamon only ever learns the system keyboard layout from
`org.freedesktop.locale1`, which does not exist without systemd. When
`org.cinnamon.desktop.input-sources sources` is empty, `loadSystemLayouts()` writes `[('xkb', 'us')]` as a placeholder and then tries to correct it from locale1; with no locale1 the correction never happens and the placeholder stays, saved in gsettings. With a single source there is no layout indicator and nothing for the switch shortcut to alternate, which is exactly what Eyal sees, and it is also why Franz gets 'us' instead of
the layout from /etc/default/keyboard.

It does not need a systemd-less system to show: masking localed is enough. Cinnamon then stores 'us' while `setxkbmap -query` still reports the right layout — X knows it, Cinnamon
just never asks.

I reported it upstream as https://github.com/linuxmint/cinnamon/issues/13997, suggesting a fallback to /etc/default/keyboard or to the X server's XKB rules. Note that Mint runs on systemd, so I cannot promise how quickly this will move; with systemd the chain works
fine, since localed reads /etc/default/keyboard itself on Debian.

In the meantime, setting the layouts once in the Cinnamon keyboard settings writes them to gsettings and should survive, since that code only fills in a default when the list is empty. Eyal, you wrote that it comes back after a reboot — could you check what `gsettings get org.cinnamon.desktop.input-sources sources` returns right before logging out and right after logging back in? If the list really is emptied, that is a second
problem and I would like to see it.

Thanks,
Fabio

Attachment: OpenPGP_signature.asc
Description: OpenPGP digital signature

Reply via email to