Скачиваем репозиторий с github, кладем в исходники в каталог где будет искать расширения Gnome Shell:
cd ~/.local/share/gnome-shell/extensions/
git clone <repo url> layout_switcher@pelid80.gmail.com # destination folder name is matter
Перезапускаем оболочку, чтобы Gnome Shell заметил новое расширение: Alt+F2, вводим команду r
и нажимаем Enter.
Активируем новое JS расширение. Для этого запускаем gnome-tweak-tool, активируем расширение на вкладке Extensions.
Осталось донастроить поведение клавиши CapsLock. Меняем стандартное поведение, отключаем переключение регистра букв по нажатию на CapsLock. Сделать это можно через вкладку Typing в gnome-tweak-tool: выбрать пункт "Caps Lock is also Ctrl".
Индикатор gnome shell keyboard (виджет в правом верхнем углу) неверно отображает статус из-за внутреннего кеша. Пробовал дергать за разные методы и классы gnome-shell/js/ui/status/keyboard.js чтобы заставить его сбросить кэш, но нащупать подходящий вариант не удалось. На изменения в gsettings виджет также не реагирует.
Заново скомпилировать gsettings схему:
glib-compile-schemas schemas
Документация по glib-compile-schemas
Посмотреть ошибки при установке расширения (в момент перезапуска Gnome Shell):
journalctl /usr/bin/gnome-shell -f -o cat
Полезные мануалы: