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.
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 DEFAULT_ MODE=auto DEFAULT_ MODE=none
IM_CONFIG_
to
IM_CONFIG_
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: desktop/ input-sources/ current
$ dconf watch /
when ibus is not running, I see this:
/org/gnome/
uint32 1
and the indicator gets updated properly,
...but when ibus is running, I see this: ibus/general/ engines- orger
/desktop/
['xkb:gr::gre', 'xkb:us::eng']
...and the indicator is not updated with the newly switched layout.