Keyboard shortcut for layout switching works in Unity but not in Gnome-Flashback

Bug #1481025 reported by Alkis Georgopoulos
20
This bug affects 3 people
Affects Status Importance Assigned to Milestone
im-config (Ubuntu)
Fix Released
High
Gunnar Hjalmarsson
language-selector (Ubuntu)
Fix Released
High
Gunnar Hjalmarsson

Bug Description

My keyboard layout is "us,gr", and the new Gnome way to switch between them is by pressing "Super+Space".
This works fine in:
 * Gnome-Flashback (Metacity) 14.04
 * Unity 14.04
 * Unity 15.10

It doesn't work in:
 * Gnome-Flashback (Metacity) 15.10

I've tested with the 15.10 default (Unity) installation, selecting Greek language in ubiquity, and adding gnome-flashback after the installation.

Just for reference, here are my related gsettings:
$ gsettings list-recursively org.gnome.desktop.input-sources
org.gnome.desktop.input-sources show-all-sources false
org.gnome.desktop.input-sources per-window false
org.gnome.desktop.input-sources current uint32 1
org.gnome.desktop.input-sources sources [('xkb', 'us'), ('xkb', 'gr')]
org.gnome.desktop.input-sources xkb-options ['grp:alt_shift_toggle', 'grp_led:scroll']

Tags: patch
Revision history for this message
Alkis Georgopoulos (alkisg) wrote :

If I change the layout switching combination
from the default ['<Super>space']
to something else like e.g. ['<Super>1'],
then it does work fine.

Maybe Super+Space is intercepted somewhere else?

I think I saw a commit a few months ago about intercepting some modifiers in the WM, maybe that's what broke it...

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

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

Changed in gnome-flashback (Ubuntu):
status: New → Confirmed
Changed in unity-settings-daemon (Ubuntu):
status: New → Confirmed
Revision history for this message
Alkis Georgopoulos (alkisg) wrote :

The problem seems to be some incompatibility between ibus and gnome-flashback.
ibus doesn't cause problems in Unity but it does cause this problem in flashback.

A workaround for gnome-flashback would be to conflict with ibus until this is solved.

A workaround for users: in/etc/default/im-config, change
IM_CONFIG_DEFAULT_MODE=auto
to
IM_CONFIG_DEFAULT_MODE=none

This tells im-config not to load ibus.
If one reboots after that, keyboard switching again works (as good as it does in Unity, which still has issues, but they're not specific to flashback).

A debugging note. When I'm switching the keyboard layout, if I run:
$ dconf watch /
when ibus is not running, I see this:
/org/gnome/desktop/input-sources/current
  uint32 1
and the indicator gets updated properly,

...but when ibus is running, I see this:
/desktop/ibus/general/engines-orger
 ['xkb:gr::gre', 'xkb:us::eng']
...and the indicator is not updated with the newly switched layout.

Revision history for this message
Gunnar Hjalmarsson (gunnarhj) wrote :

Even if there is a workaround which involves im-config, this is not an im-config bug.

Changed in im-config (Ubuntu):
status: New → Invalid
Revision history for this message
Alkis Georgopoulos (alkisg) wrote :

Gunnar, one of the 3 problems here is that im-config starts ibus while it shouldn't.
We Greeks have no need for ibus, and
  IM_CONFIG_DEFAULT_MODE=auto
should understand that and act accordingly like im-switch did in the past.

In the past I've exchanged some emails with Osamu, the im-config Debian maintainer, and he told me to file a bug report for it.

Do you have some different information to mark this bug as invalid in that package?
If so, could you please explain why?
Thank you.

Changed in im-config (Ubuntu):
status: Invalid → Confirmed
Revision history for this message
Gunnar Hjalmarsson (gunnarhj) wrote :

How can you tell that im-config shouldn't start IBus? So you are Greek, and I'm Swedish, but AFAICT there is no way for im-config to know whether you or I want to be able to type Japanese or Hebrew. It's reasonable to expect that alternative desktop environments, which claim to work on Ubuntu, are compatible with IM frameworks such as IBus, fcitx, etc.

Did im-switch work differently in this respect? To be honest, I don't remember. I suspect that it was not the change from im-switch to im-config which caused this problem, but rather the integration of keyboard layouts and more complex input methods.

Revision history for this message
Alkis Georgopoulos (alkisg) wrote :

> How can you tell that im-config shouldn't start IBus?

Isn't that why system settings vs user settings exist?

For example, my /etc/default/keyboard reads:
XKBLAYOUT="us,gr"
XKBOPTIONS="grp:alt_shift_toggle,grp_led:scroll"

Then for example Gnome puts those as the default layouts for my session. That's what 99% of the local users want.
It doesn't automatically include Swedish, Hebrew and all other possible layouts that I might need.
But if some person wants to type in Swedish, he can easily select that on a per-user basis from a menu or a configuration file.

Same for im-config, ibus, fcitx, there can be system defaults, and per user settings (and AFAIK there already are, the problem is that IM_CONFIG_DEFAULT_MODE=auto doesn't process them).
There's no point in millions of users worldwide running ibus without needing it just to avoid reading user settings.

> Did im-switch work differently in this respect? To be honest, I don't remember.

I'm certain that ibus was installed but not started for the Greek locale in previous Ubuntu versions. I haven't looked into im-switch more than that though.

After Wily is out (when hopefully I'll have some more free time), I'll install Debian in a VM and report it there as well, and link the bug # here.

I was just hoping to have a quicker fix, in any of the above packages, in time for Wily.
Thank you.

Revision history for this message
Gunnar Hjalmarsson (gunnarhj) wrote :

Hi again Alkis,

It just struck me that we had a patch in Ubuntu 13.10, which only used "auto" in case of Unity, and the "cjkv" mode for other desktops.

http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/saucy/im-config/saucy/view/head:/debian/patches/01_modify_system_default.patch

That patch was dropped in 14.04. It sounds to me as if you would like to see something similar be applied again.

Revision history for this message
Alkis Georgopoulos (alkisg) wrote :

Hi Gunnar,

that patch works lovely for me, I tried it in Wily beta 2 + updates in:
gnome-flashback-metacity (running ibus)
mate-desktop (running fcitx)
lubuntu (running fcitx)
...and it prohibited ibus and fcitx from running, solving the keyboard layout switching problems that they were causing (fcitx is causing a different problem, LP #1501832).

Is it possible to have Wily shipped with that patch included? Many many users will be grateful for that! :)

Thank you very much!

Revision history for this message
Gunnar Hjalmarsson (gunnarhj) wrote :

@Aron: What's your view on this?

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

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

Changed in ibus (Ubuntu):
status: New → Confirmed
Revision history for this message
Martin Wimpress  (flexiondotorg) wrote :

I confirm that the patch referenced in #9 works on Ubuntu MATE 15.10 and resolves #1501832.

fcitx-bin has been added to the Ubuntu MATE to satisfy complex input requirements of CJKV users. Sadly, the inclusion of fcitx-bin make fcitx default and that breaks the input requirements for other users. The patch referenced in #9 seems like a good trade off to me.

Revision history for this message
Aron Xu (happyaron) wrote :

I believe it's the right thing to do for wily, please go ahead, :)

Revision history for this message
Gunnar Hjalmarsson (gunnarhj) wrote :

Ok, I wrote a patch. Please feel free to sponsor it, Aron. ;)

Given the new locale dependent configuration for the CJKV languages, I chose to use "xim" instead of "cjkv" in the patch. This way the variables don't end up empty.

I have also committed the corresponding changes to language-selector.

tags: added: patch
no longer affects: gnome-flashback (Ubuntu)
no longer affects: ibus (Ubuntu)
no longer affects: unity-settings-daemon (Ubuntu)
Changed in im-config (Ubuntu):
assignee: nobody → Gunnar Hjalmarsson (gunnarhj)
importance: Undecided → Medium
status: Confirmed → In Progress
Changed in language-selector (Ubuntu):
assignee: nobody → Gunnar Hjalmarsson (gunnarhj)
importance: Undecided → Medium
status: New → Fix Committed
Revision history for this message
Alkis Georgopoulos (alkisg) wrote :

1) It works fine for me with no regressions at all, thank you very much.

2) I just noticed that contrary to what I wrote in the bug title, ibus also breaks Unity, but only a little, so I hadn't noticed before.
It eats up the accent but only the first time that the user tries it. I.e.
";" + "a" = "ά"
...does work in Unity, but not the first time after the layout switch, where a play "α" is output.

3) About the "no longer affects: ibus, gnome-flashback" etc, I think that those were still valid, that the 1% of the Greeks or other locale users that need ibus or fcitx to type in hebrew etc, shouldn't have their local language broken.
But it's OK for me if we want to keep this one specific to im-config. Someone in that 1% can open another bug report.

Thanks again.

Aron Xu (happyaron)
Changed in im-config (Ubuntu):
status: In Progress → Fix Committed
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package im-config - 0.29-1ubuntu5

---------------
im-config (0.29-1ubuntu5) wily; urgency=medium

  * Re-introduce 01_modify_system_default.patch fro wily (LP: #1481025)

 -- Aron Xu <email address hidden> Fri, 09 Oct 2015 19:17:34 +0800

Changed in im-config (Ubuntu):
status: Fix Committed → Fix Released
Revision history for this message
Gunnar Hjalmarsson (gunnarhj) wrote :

@Aron: Since you uploaded the old patch instead of the modified patch I prepared, there is now a discrepancy between im-config and language-support-gnome: The former sets "cjkv", while the latter sets "xim". One of them needs to be changed, and due to the reason mentioned in comment #15, I think we should change im-config to set "xim".

I tested with "cjkv" on my Unity system. All the variables are empty if not a CJKV locale, and it lead to a problem with Unity. Now this isn't intended for Unity, but "xim" appears to be a safer alternative to use when IBus is not set.

Comments?

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

This bug was fixed in the package language-selector - 0.148

---------------
language-selector (0.148) wily; urgency=medium

  * LanguageSelector/ImConfig.py:
    Make "xim" (displayed as "none") the system default for non-CJKV
    locales on non-Unity desktops (LP: #1481025).
  * debian/control:
    Bump version of the im-config dependency.

 -- Gunnar Hjalmarsson <email address hidden> Thu, 08 Oct 2015 23:35:00 +0200

Changed in language-selector (Ubuntu):
status: Fix Committed → Fix Released
Aron Xu (happyaron)
Changed in im-config (Ubuntu):
status: Fix Released → In Progress
Aron Xu (happyaron)
Changed in im-config (Ubuntu):
status: In Progress → Fix Committed
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package im-config - 0.29-1ubuntu6

---------------
im-config (0.29-1ubuntu6) wily; urgency=medium

  * debian/patches/02-ubuntu-system-default.patch:
    Make "xim" the system default for non-CJKV locales on non-Unity
    desktops (LP: #1481025)

 -- Gunnar Hjalmarsson <email address hidden> Mon, 12 Oct 2015 12:42:39 +0100

Changed in im-config (Ubuntu):
status: Fix Committed → Fix Released
Revision history for this message
Ikuya Awashiro (ikuya-fruitsbasket) wrote :

According to this fix, every flavors must be "IM_CONFIG_DEFAULT_MODE=xim".
Is it intentional?

Revision history for this message
Gunnar Hjalmarsson (gunnarhj) wrote :

On 2015-10-14 15:49, Ikuya Awashiro wrote:
> According to this fix, every flavors must be
> "IM_CONFIG_DEFAULT_MODE=xim". Is it intentional?

Yes. But please note that that variable is overridden by IM_CONFIG_PREFERRED_RULE, so fcitx will be the default mode for the CJKV languages.

Revision history for this message
Ikuya Awashiro (ikuya-fruitsbasket) wrote :

My Xubuntu 15.10 with latest updated does not start fcitx automatically.
But reverting to im-config 0.29-1ubuntu5, fcitx works great.
Maybe something is wrong.

Revision history for this message
Gunnar Hjalmarsson (gunnarhj) wrote :

Hi Ikuya,

Well, yes - I'm the one who is wrong. :( I jumped to conclusions as regards the meaning of the IM_CONFIG_PREFERRED_RULE variable.

I have re-opened this bug, and attached a new patch for im-config, which replaces "xim" with "cjkv". Also language-selector needs to be changed. New versions of im-config and language-selector are available in a PPA:

https://launchpad.net/~gunnarhj/+archive/ubuntu/cjkv

Please feel free to test, but note that we are in a hurry; it needs to be fixed today.

Changed in im-config (Ubuntu):
importance: Medium → High
status: Fix Released → In Progress
Changed in language-selector (Ubuntu):
importance: Medium → High
status: Fix Released → In Progress
Changed in im-config (Ubuntu):
milestone: none → ubuntu-15.10
Changed in language-selector (Ubuntu):
milestone: none → ubuntu-15.10
Changed in language-selector (Ubuntu):
status: In Progress → Fix Committed
Aron Xu (happyaron)
Changed in im-config (Ubuntu):
status: In Progress → Fix Committed
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package im-config - 0.29-1ubuntu7

---------------
im-config (0.29-1ubuntu7) wily; urgency=medium

  * debian/patches/02-ubuntu-system-default.patch:
    Use "cjkv" instead of "xim" on non-Unity desktops (LP: #1481025).

 -- Gunnar Hjalmarsson <email address hidden> Thu, 15 Oct 2015 04:08:00 +0200

Changed in im-config (Ubuntu):
status: Fix Committed → Fix Released
Revision history for this message
Ikuya Awashiro (ikuya-fruitsbasket) wrote :

Hi Gunnar,
Packages which is in PPA work again for me.
Thanks!

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

This bug was fixed in the package language-selector - 0.149

---------------
language-selector (0.149) wily; urgency=medium

  * LanguageSelector/ImConfig.py:
    Use "cjkv" instead of "xim" on non-Unity desktops (LP: #1481025).
  * debian/control:
    Bump version of the im-config dependency.

 -- Gunnar Hjalmarsson <email address hidden> Thu, 15 Oct 2015 05:53:00 +0200

Changed in language-selector (Ubuntu):
status: Fix Committed → Fix Released
Revision history for this message
Gunnar Hjalmarsson (gunnarhj) wrote :

Thanks for confirming that, Ikuya. And now they are in the Ubuntu archive too. :)

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

Other bug subscribers

Remote bug watches

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