adding keyboard layouts no longer seems to update xkb correctly

Bug #1225514 reported by Marc Deslauriers
40
This bug affects 7 people
Affects Status Importance Assigned to Milestone
gnome-screensaver (Ubuntu)
Fix Released
High
William Hua
Saucy
Fix Released
High
Unassigned

Bug Description

gnome-screensaver
-----------------

* Impact: layouts are missing from the unlock screen which might makes difficult to unlock

* Test case:

Through gnome-control-center, add a few different XKB input sources (e.g., US, French, German, Russian), then lock the screen.

Expected results:

The lock screen dialog keyboard switching indicator should cycle through all of the XKB (non-IBus) input sources.

Actual results:

It only allows cycling through at most two XKB layouts, the currently active one, and the US layout.

* Regression potential:

The changes affect the list from which gnome-screensaver allows cycling, and may affect which layouts are available for unlocking the session.

=================

I'm not sure if this is caused by gnome-control-center, or ibus 1.5, but in saucy, adding or modifying the keyboard layouts doesn't seem to properly update xkb any longer.

For example, I can have both French (Canada) and English (US) configured, but xkl_config_rec_get_from_server() will only return 'ca' and xkl_engine_get_num_groups() will return 1, instead of 2.

I believe this is also causing the keyboard layouts to not appear on the login screen.

ProblemType: Bug
DistroRelease: Ubuntu 13.10
Package: gnome-control-center 1:3.6.3-0ubuntu36
ProcVersionSignature: Ubuntu 3.11.0-7.13-generic 3.11.0
Uname: Linux 3.11.0-7-generic x86_64
ApportVersion: 2.12.1-0ubuntu3
Architecture: amd64
Date: Sat Sep 14 16:35:50 2013
InstallationDate: Installed on 2012-11-13 (304 days ago)
InstallationMedia: Ubuntu 12.10 "Quantal Quetzal" - Release amd64 (20121017.5)
MarkForUpload: True
SourcePackage: gnome-control-center
UpgradeStatus: Upgraded to saucy on 2013-08-19 (26 days ago)
usr_lib_gnome-control-center:
 activity-log-manager 0.9.7-0ubuntu4
 deja-dup 27.3.1-0ubuntu1
 gnome-control-center-datetime 13.10.0+13.10.20130903-0ubuntu1
 gnome-control-center-signon 0.1.7~+13.10.20130724.1-0ubuntu1
 gnome-control-center-unity 1.3daily13.06.19~13.04-0ubuntu1

Related branches

Revision history for this message
Marc Deslauriers (mdeslaur) wrote :
Revision history for this message
Marc Deslauriers (mdeslaur) wrote :

This is also causing gnome-screensaver to inconsistently show the keyboard language beside the password dialog.

tags: added: rls-s-incoming
Revision history for this message
Sebastien Bacher (seb128) wrote :

Thanks Marc, how much of that is still an issue?

The configuration backend changed since we use indicator-keyboard, the greeter should be fixed with the recent updates:
https://launchpad.net/ubuntu/+source/unity-greeter/13.10.3-0ubuntu1

Is there still an issue with gnome-screensaver's locking? How do you change layout there?

Changed in gnome-control-center (Ubuntu):
importance: Undecided → High
Revision history for this message
Marc Deslauriers (mdeslaur) wrote :

Things are definitely still pretty weird.

In a fresh installed saucy image, the system keyboard is set to "ca" in /etc/default/keyboard.
If I boot into the user:

- there is no input source icon displayed in the indicators, as is expected,
- xkl_config_rec_get_from_server() only returns 'ca' as expected,
- xkl_engine_get_num_groups() returns '1', as expected,
- and gnome-screensaver doesn't display the language selector, as expected.

If I simply add "French (Canada)" to the list of input sources using the "Text Entry" applet and reboot, I now:

- have an input source icon displayed in the indicators, even though there is only one input source configured
- xkl_config_rec_get_from_server() returns 'ca' and 'us' which is incorrect...not sure where it's getting 'us' from
- xkl_engine_get_num_groups() returns '2', even though it shouldn't
- gnome-screensaver displays the language selector and allows selecting between "en" and "fr".

I'm not sure where it's getting "en" (us) from.

If I then click on the language indicator, and click on "French (Canada)" (the only one listed):

- there is no input source icon displayed in the indicators, as is expected,
- xkl_config_rec_get_from_server() only returns 'ca' as expected,
- xkl_engine_get_num_groups() returns '1', as expected,
- and gnome-screensaver doesn't display the language selector, as expected.

Revision history for this message
Marc Deslauriers (mdeslaur) wrote :

Here is the test app I'm using to dump xkb info

Revision history for this message
Marc Deslauriers (mdeslaur) wrote :

With both "English (US)" and "French (Canada)" added to the list of input sources, after a reboot I get:

- have an input source icon displayed in the indicators, as expected
- xkl_config_rec_get_from_server() returns 'ca' and 'us' as expected
- xkl_engine_get_num_groups() returns '2', as expected
- gnome-screensaver displays the language selector and allows selecting between "en" and "fr".

As soon as I click on the language indicator, it reconfigures xkb and removes one of the languages. For example, clicking on "English (US)", I now get:

- have an input source icon displayed in the indicators, as expected
- xkl_config_rec_get_from_server() only returns 'us', even though it should return 'us' and 'ca'
- xkl_engine_get_num_groups() returns '1', even though it should return 2
- gnome-screensaver doesn't display the language selector, preventing the user from knowing which layout is selected and switching to the other one.

Revision history for this message
Sebastien Bacher (seb128) wrote :

not sure about the specific, but adding "us" is something gnome-settings-daemon is doing to solve the issue of "standard keybinding should work across keymaps"

the way GTK does it, is that looks through other configured keymaps if the key combinaison exists (e.g if you use u.s and chinese layouts and activate chinese, you want ctrl-C to keep working, for that to work we need "us" to be actively configured as well)

see https://git.gnome.org/browse/gnome-settings-daemon/tree/plugins/keyboard/gsd-keyboard-manager.c#n750

Revision history for this message
Marc Deslauriers (mdeslaur) wrote :

So basically gnome-settings-daemon is now only applying the current input source to xkb.

For gnome-screensaver to properly support detecting and switching the number of layouts, it either needs:

1- gnome-settings-daemon to properly set all the input sources, with the current one first
or
2- gnome-screensaver needs to be ported to use gsettings to enumerate and switch input sources (or whatever the new official way of doing it is)

Revision history for this message
Marc Deslauriers (mdeslaur) wrote :

Here is the impact of this issue:

If a user has two keyboard layouts configured, for example French (Canada) and English (US), and switches to English (US) and the screensaver comes up, they can no longer switch the keyboard layout on the screensaver screen to be able to log back in.

Changed in gnome-control-center (Ubuntu):
assignee: nobody → William Hua (attente)
Revision history for this message
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in gnome-control-center (Ubuntu):
status: New → Confirmed
affects: gnome-control-center (Ubuntu) → gnome-screensaver (Ubuntu)
Changed in gnome-screensaver (Ubuntu):
status: Confirmed → In Progress
William Hua (attente)
description: updated
Revision history for this message
Sebastien Bacher (seb128) wrote :

The fix has been uploaded to saucy-proposed, waiting for the SRU team review

description: updated
Changed in gnome-screensaver (Ubuntu):
status: In Progress → Fix Committed
Changed in gnome-screensaver (Ubuntu Saucy):
importance: Undecided → High
status: New → In Progress
Revision history for this message
Brian Murray (brian-murray) wrote : Please test proposed package

Hello Marc, or anyone else affected,

Accepted gnome-screensaver into saucy-proposed. The package will build now and be available at http://launchpad.net/ubuntu/+source/gnome-screensaver/3.6.1-0ubuntu7 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed. In either case, details of your testing will help us make a better decision.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Changed in gnome-screensaver (Ubuntu Saucy):
status: In Progress → Fix Committed
tags: added: verification-needed
Revision history for this message
Sebastien Bacher (seb128) wrote :

the update works fine for me, could anybody else confirm that they think it's an improvement? the lock screen is a important component and I would like another +1 before tagging that one as verification-done

Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package gnome-screensaver - 3.6.1-0ubuntu7

---------------
gnome-screensaver (3.6.1-0ubuntu7) saucy; urgency=low

  * debian/patches/32_input_sources_switcher.patch:
    - Use input sources instead of XKB layouts. (lp: #1225514)
 -- William Hua <email address hidden> Tue, 29 Oct 2013 11:21:38 -0700

Changed in gnome-screensaver (Ubuntu):
status: Fix Committed → Fix Released
Revision history for this message
Miklos Juhasz (mjuhasz) wrote :

The proposed package is definitely an improvement. Now I can cycle through my usual layouts instead of only En and En2 which was the case before. As per comment #14, tagging as verification-done.

tags: added: verification-done
removed: verification-needed
Revision history for this message
Stéphane Graber (stgraber) wrote : Update Released

The verification of this Stable Release Update has completed successfully and the package has now been released to -updates. Subsequently, the Ubuntu Stable Release Updates Team is being unsubscribed and will not receive messages about this bug report. In the event that you encounter a regression using the package from -updates please report a new bug using ubuntu-bug and tag the bug report regression-update so we can easily find any regresssions.

Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package gnome-screensaver - 3.6.1-0ubuntu7

---------------
gnome-screensaver (3.6.1-0ubuntu7) saucy; urgency=low

  * debian/patches/32_input_sources_switcher.patch:
    - Use input sources instead of XKB layouts. (lp: #1225514)
 -- William Hua <email address hidden> Tue, 29 Oct 2013 11:21:38 -0700

Changed in gnome-screensaver (Ubuntu Saucy):
status: Fix Committed → Fix Released
Revision history for this message
Ashraf Amayreh (r-ashraf) wrote :

I'm using archlinux with budgie desktop and gnome-screensaver version 3.6.1

This problem still persists. I can't switch languages in the unlock screen. I have to power down my machine because I'm unable to enter my password. Any help would be appreciated, feel free to ask for whatever steps I need to provide to help with debugging this very annoying issue.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.