In a nutshell, the localectl command allows you to control the system locale and keyboard layout settings. One of the main advantages of this command is that it is present in Linux distributions that use systemd. So, you can use it on almost any modern distribution.
The operation of the command is simple and may be used to query and change the system locale and keyboard layout settings.
Now, what can we do with localectl because the system locale controls the language settings of system services and of the UI before the user logs in, such as the display manager, as well as the default for users after login.
It is probably not as well known as other commands, but again, in remote support situations or configurations, it can be a great relief to have this command.
Using the localectl command on Linux
As I mentioned earlier, the localectl
command is present in distributions that use systemd. Therefore, you can find it by default in distributions such as Debian, Ubuntu and its derivatives, RHEL and its derivatives, and others such as Arch Linux and openSUSE.
If you run the command without any arguments, then you will get an output screen showing information about the system language, formats, and keyboard layout.
localectl
Sample output
System Locale: LANG=en_GB.UTF-8
LC_NUMERIC=en_GB.UTF-8
LC_MONETARY=en_GB.UTF-8
LC_PAPER=en_GB.UTF-8
LC_NAME=en_GB.UTF-8
LC_ADDRESS=en_GB.UTF-8
LC_TELEPHONE=en_GB.UTF-8
LC_MEASUREMENT=en_GB.UTF-8
LC_IDENTIFICATION=en_GB.UTF-8
VC Keymap: n/a
X11 Layout: en
X11 Model: pc105
This same output can be obtained if you add the status
subcommand
localectl status
In either case, as you can see, it is pretty useful to get information from it.
Another thing you can do is to display the command help via the terminal to give you a general idea of how it works. To achieve this, run.
localectl --help
You will get this output
With localectl
we can do two essential things. The first one is to change the locale of the system.
First, it shows the available options
localectl list-locales
Sample Output:
C.UTF-8
en_AG.UTF-8
en_AU.UTF-8
en_BW.UTF-8
en_CA.UTF-8
en_DK.UTF-8
en_GB.UTF-8
en_HK.UTF-8
en_IE.UTF-8
en_IL.UTF-8
en_IN.UTF-8
en_NG.UTF-8
en_NZ.UTF-8
en_PH.UTF-8
en_SG.UTF-8
en_US.UTF-8
en_ZA.UTF-8
en_ZM.UTF-8
en_ZW.UTF-8
You will get a sample output per screen to help you find your own. Remember that the size of the sample output will depend on the languages that have been downloaded to the system.
And to set a new one, just run the following command
localectl set-locale [locale]
For example,
localectl set-locale en_GB.UTF-8
You will probably have to exit the SSH session or restart the computer to apply the changes.
The second important thing you can do with the localectl
command is to change the keyboard layout.
It is convenient to, first, display the list of available layouts with the command
localectl list-keymaps
If you are using X11, then you can use the option to modify the keyboard with this argument.
Or display the different models
localectl list-x11-keymap-models
You can also show the available x11 layouts and variants
localectl list-x11-keymap-layouts
localectl list-x11-keymap-variants
And to apply the changes you can run
localectl set-x11-keymap [keymap].
But you can also extend this command to add the model and layout
localectl set-x11-keymap LAYOUT [MODEL] [VARIANT]
This way, it is effortless to use the localectl
command to manage the system locale and the keyboard layout.
Conclusion
The localectl
command is a systemd tool to manage the keyboard layout, but also to change the system locale. This is essential to get the system right for the job.
I hope you liked this post, and you can share it with all your friends on social networks.