linuxmint / slick-greeter

A slick-looking LightDM greeter
GNU General Public License v3.0
356 stars 58 forks source link

Setting "onscreen-keyboard=true" doesn't get applied #219

Open Jakko3 opened 1 year ago

Jakko3 commented 1 year ago
 * slick-greeter version 1.6.1
 * Distribution: postmarketOS (based on Alpine Linux)
 * Graphics hardware *and* driver used:
   * device a) Intel UHD graphics 600 and driver "virtio_gpu" (virtual machine)
   * device b) Adreno 305 and driver "msm" (DRM/KMS driver for MSM/snapdragon)
 * 32 or 64 bit
   * device a) 64 bit
   * device b) 32 bit arm

Issue

When setting onscreen-keyboard=true in /etc/lightdm/slick-greeter.conf and reboot, the onscreen keyboard isn't enabled.

Steps to reproduce

Create or edit the file /etc/lightdm/slick-greeter.conf with at least the following content:

[Greeter]
onscreen-keyboard=true

Reboot. In my set up, the onscreen keyboard doesn't show up by default.

Expected behaviour

In the readme of the slick-greeter GitHub page the option is described as onscreen-keyboard=Whether to enable the onscreen keyboard (true or false). Setting this to true, I would expect to see the onscreen keyboard when the slick-greeter shows up after boot.

Other information

I can enable/disable the onscreen keyboard in the accessibility menu in the top bar. If enable it that way, log in, log out, the keyboard is enabled. However, when rebooting it's not enabled anymore.

Looking into the file "settings.vala", I noticed that the setting KEY_ONSCREEN_KEYBOARD [1] isn't listed in the bool_keys for the apply_conf_settings [2]. That would explain why it is not considered when it is added in the config file /etc/lightdm/slick-greeter.conf. However, simply adding it there might conflict with the current mechanism, whatever the current mechanism is (not clear to me). But there is some mechanism because the keyboard stays enabled when logging out and logging in again.

Even more interesting: When creating a file "/usr/share/glib-2.0/schemas/10_slick-greeter.gschema.override" with...

[x.dm.slick-greeter]
onscreen-keyboard=true

... then uninstall & re-install package slick-greeter and reboot, the onscreen keyboard is enabled by default. In that case the problem is the other way around: There seems no way to have the onscreen keyboard disabled after a reboot. Except removing that override file, uninstall & re-install package slick-greeter again and reboot, that way the onscreen keyboard is disabled after a reboot.

Changing the state via command gsettings set x.dm.slick-greeter onscreen-keyboard true or false doesn't show any effect.

I'm on distribution postmarketOS, which is based on Alpine Linux. Desktop environment is Xfce 4.18. I wouldn't exclude that the issue is distribution-specific. Maybe someone else can test. However, more likely it's a general issue.

mtwebster commented 4 months ago

Changing the state via command gsettings set x.dm.slick-greeter onscreen-keyboard true or false doesn't show any effect.

This is because you are running the command as your user - at runtime, slick-greeter runs as a different user, and has its own settings 'instance' (this is the reason behind the whole reading from a keyfile at startup - because we can actually access the keyfile to modify it).

Jakko3 commented 3 months ago

Ok, I see it's user "lightdm" that sets that gsettings. Thanks for the hint.

The gsettings of user "lightdm" is not persistent over reboots in distribution postmarketOS (based on Alpine Linux). Probably it's a permission issue, preventing user "lightdm" to write that settings. I couldn't solve it yet. I might need to set up an issue report at Alpine Linux about this.

However, the issue report here is about slick-greeter setting "onscreen-keyboard" not working. Depending on the outcome of the discussion in https://github.com/linuxmint/slick-greeter/pull/229, if this setting is not needed or wanted, in that case it should be removed from slick-greeter.

Jakko3 commented 3 months ago

(I now found the reason why the gsetting is not persistent in postmarketOS/AlpineLinux. The home directory of user "lightdm" is assigned to /var/run/lightdm, which gets flushed at shutdown. In Debian/Ubuntu the home directory is at /var/lib/lightdm, where the gsettings persistently get stored in /var/lib/lightdm/.config/dconf/user. I'll set up a pull request in Alpine Linux to fix that.)

leigh123linux commented 3 months ago

This needs to be addressed by the downstream packager.

Jakko3 commented 3 months ago

The initially reported issue is not solved. Please re-open. The slick-greeter option "onscreen-keyboard" in /etc/lightdm/slick-greeter.conf takes no effect. It either needs to be fixed by https://github.com/linuxmint/slick-greeter/pull/229. Or else that option needs to be removed from readme, manpage, gschema, etc.

My last comment was off-topic. That's why I put the comment in brackets. The gsettings for the accessibility options were not stored persistently in distribution postmarketOS (based on Alpine Linux). I have set up a pull request in Alpine Linux to fix that. However, this is only a side topic that came up here and caused some confusion.

leigh123linux commented 3 months ago

The settings getting flushed isn't a slick issue, lightdm sets that path.

https://github.com/search?q=repo%3Acanonical%2Flightdm+%2Fvar%2Frun&type=code

Jakko3 commented 3 months ago

Thanks for re-opening.

gsettings being flushed turned out to be a side topic. I found the cause and have put up a PR to fix it in Alpine Linux (https://gitlab.alpinelinux.org/alpine/aports/-/merge_requests/68087).

The topic of this issue is that the readme and mangage say that there is a configuration option "onscreen-keyboard" for file /etc/lightdm/slick-greeter.conf...

... but when slick-greeter reads the config file /etc/lightdm/slick-greeter.conf it simply doesn't read KEY_ONSCREEN_KEYBOARD. Therefore the configuration option "onscreen-keyboard" in fact isn't available.