Allow user choose between static input sources list and MRU input sources list to improve experience for multilingual users
Hi, if you have time, please read GNOME/gnome-shell#5687 for more detail.
Description and Reason
Currently, GNOME Shell sorts input sources in MRU (most recently used) ordering. While this might be useful for some people, it also makes people who have more than 2 sources hard to switch, because each time the sources list is different, and only after the popup shown you can know what the next source is, some people may want to quickly switch without moving their eye focus, and a fixed (or static) sequence of input sources could achieve this.
Another reason for adding static input sources list is because we allow user to tweak input sources sequence in Settings, which confuses people that they set sequences but it is not used while using Super + Space, leads into a inconsistent in design here (that's why the GNOME Shell issue is first opened to Settings, user thinks the sequence setting is invalid).
Example: I have EN/CN/JP input sources, if I am using CN, and I want to go to EN, I could quickly press Super + Space twice with fixed sequence, but with MRU, the current sequence may be CN/EN/JP or CN/JP/EN, so I am not sure how much steps I need before switching.
Implementation on Other OS
As far as I know, MS Windows uses fixed sequence, on the other side, Apple allows user to choose between MRU list and fixed list (I think they call it "similar to window" or something). So user could really needs this.
Implementation for GNOME
I already implemented fixed input sources list support in GNOME Shell in this MR: GNOME/gnome-shell!2719, and @fmuellner told me that this needs approve from design team, so I opened this issue here.
This is how it looks like on my system (I cannot take screenshots for popup so I take a photo), the difference is now switcher popup does not always select the first item before shown, but accept a selected item (because it is not MRU):
And I have a MR for adding an option for this in Settings, like what we have for per-window/global input source: GNOME/gnome-control-center!1736.
This is how it looks like on my system:
Of course this also requires a gsettings schema: GNOME/gsettings-desktop-schemas!64.