X11
keyboard layout indicator and switcher
gxkb
is a tiny indicator applet which allows to quickly switch between different keyboard layouts in X
.
A flag corresponding to the country of the active layout is shown in the indicator area.
The applet is written in C
and uses GTK+
library and therefore does not depend on any GNOME
components.
GTK3
libwnck-3
libxklavier16
libayatana-appindicator3
sudo apt-get install gxkb
sudo dnf install gxkb
-
Install dependencies
-
Debian
sudo apt install libwnck-3-dev libxklavier-dev libgtk-3-dev dh-autoreconf dh-make devscripts fakeroot
For AppIndicator support:
sudo apt install libayatana-appindicator3-dev
-
-
Build
wget https://github.com/zen-tools/gxkb/archive/master.tar.gz -O gxkb.tar.gz tar xzf gxkb.tar.gz cd gxkb-master ./autogen.sh ./configure
For AppIndicator support:
./configure --enable-appindicator=yes
Then:
make && sudo make install
-
Show version and features
gxkb -v
-
Run from a terminal
gxkb &
-
AppIndicator support
To switch that off use the following command during building phase:
./configure --enable-appindicator=no
-
Custom flags support
Put your flag images in
.local/share/gxkb/flags
in PNG format with the names like<country code>.png
, e.g.ua.png
,pl.png
,lt.png
and the sizes of 24x24 pixels each -
Scrolling support
Switch layouts by scrolling while hovering over the flag
-
Using Scroll Lock led to indicate alternate layouts
Can be changed in
.config/gxkb/gxkb.cfg
Configuration is done via config file: .config/gxkb/gxkb.cfg
The most interesting options are:
layouts=ua,pl,lt
toggle_option=grp:alt_shift_toggle,grp_led:scroll,terminate:ctrl_alt_bksp
Instead of grp:alt_shift_toggle
you can use whatever the following command gives you:
grep grp:.*toggle /usr/share/X11/xkb/rules/base.lst
-
Missing flags:
Q:gxkb
shows a white flag with "?" character instead of the flag of my country.
A: That meansgxkb
fails to find an image under/usr/share/gxkb/flags/
directory. If the flag does not belong to the terrorist state, you can create a merge request or issue with proposition to add the flag into distributive. Also, you can override missing/system flags with your own images. -
Custom flags:
Q: How can I override the system flags with my own?
A: You can place your own flags under$XDG_DATA_HOME/gxkb/flags
directory. If theXDG_DATA_HOME
environment variable is not defined, use$HOME/.local/share/gxkb/flags
instead. -
In Gnome2/Gnome3, Unity, E17, possibly in KDE3/KDE4:
Q: The layout does not get changed properly while switching between windows.
A: In your DE settings find keyboard layout control settings, disable the inheriting of the layouts from parent window and disable splitting layouts between windows. -
In Gnome3/Unity:
Q: The layout icon is not displayed in system tray area.
A: Due to different versions of Gnome3 there is no easy answer, Google might help to find the right one. But in factgxkb
works under the hood, so you can use the Gnome3/Unity system indicators for icon displaying, just don't forget to disable the splitting layouts between different windows. -
In XFCE 4.12:
Q: The layout icon is not displayed in system tray area.
A: In "sessions and startup" settings try to find and disableindicator‑application‑service
. More details here. -
In Unity + AppIndicator:
Q: The layout switching does not work.
A: It can happen when the system layout switcherindicator‑keyboard
uses the same key combination. One possible solution to this may be to assign an unused key combination forindicator‑keyboard
. Another solution may be to remove the packageindicator‑keyboard
, but that will also remove the Unity control center, which will be replaced by a Gnome control center.