Pull to refresh

Отдельный хоткей для каждой из раскладок в GNOME 3.8

Если у Вас больше двух раскладок клавиатуры, обычные (кольцевые) методы переключения вроде Alt+Shift покажутся не очень удобными. Гораздо лучше в такой ситуации назначить отдельный хоткей для каждой раскладки. Например: Ctrl+2 для английской, Ctrl+3 для русской и Ctrl+4 для немецкой. В KDE (как и в Windows) возможность сделать такое через GUI давно есть. А вот в GNOME 3.8, который мне нравится не меньше — до сих пор нет. Но мы не сдаёмся. Вот что у меня получилось после некоторой возни:
В этой статье я расскажу вам, как добится такого результата, используя DConf — низкоуровневую систему конфигурации GNOME, похожую на реестр Windows.

Находим ключ в DConf

После долгих поисков я обнаружил в ключ current в секции org.gnome.desktop.input-sources. Не знаю, почему я не заметил его раньше, ведь я неоднократно заглядывал в эту секцию. Этот ключ хранит номер текущей используемой раскладки, начиная с нуля.
Теперь, чтобы включить вторую раскладку, достаточно набрать в консоли:
gsettings set org.gnome.desktop.input-sources current 1

Используем метод D-Bus

Кроме DConf можно использовать D-Bus, систему межпроцессного взаимодействия, легко доступную из рызличных языков программирования. Доступ к D-Bus из консоли осущёствляется с помощью утилиты qdbus:
qdbus org.gnome.SettingsDaemon.Keyboard /org/gnome/SettingsDaemon/Keyboard org.gnome.SettingsDaemon.Keyboard.SetInputSource 1

Создаём хоткеи

Теперь повесим любую из двух команд на горячие клавиши:

Пожелание разработчикам GNOME 3

Ребята, сделайте, пожалуйста, так, чтобы таким методом переключения раскладок мог пользоваться любой, кто пожелает. В конце концов, не у всех есть время и возможность разбираться с DConf и D-Bus. Вот как это сделано в KDE:


На этом всё. Надеюсь, что моя статья кому-нибудь поможет.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.