Для реализации переключения раскладок клавиатуры в X Window System с использованием горячих клавиш "Super + Space" и "Super + Space + Space", вам потребуется немного изменить свой текущий скрипт и использовать инструмент `xbindkeys` для отслеживания нажатий клавиш.
### Установка необходимых пакетов
1. Убедитесь, что у вас установлены `xbindkeys`, `xkb-switch` (или `setxkbmap`), а также `notify-send`.
```bash
sudo apt install xbindkeys xdotool x11-utils
```
### Конфигурация `xbindkeys`
2. Создайте файл конфигурации для `xbindkeys`, если он еще не создан:
```bash
xbindkeys --defaults > ~/.xbindkeysrc
```
### Написание скрипта для переключения раскладок
3. Создайте новый скрипт, например, `switch_layout.sh`, и вставьте следующий код:
```bash
#! /bin/bash
# Получаем текущую раскладку
CURRENT_LAYOUT=$(setxkbmap -query | awk -F : 'NR==3{print $2}' | sed 's/ //g')
# Определяем массив раскладок
LAYOUTS=("us" "ru") # Добавьте дополнительные раскладки, если необходимо
LAYOUT_COUNT=${#LAYOUTS[@]}
if [ "$1" == "next" ]; then
# Переключение на следующую раскладку
for i in "${!LAYOUTS[@]}"; do
if [ "${LAYOUTS[$i]}" == "$CURRENT_LAYOUT" ]; then
next_layout=${LAYOUTS[$(( (i + 1) % LAYOUT_COUNT ))]}
break
fi
done
elif [ "$1" == "prev" ]; then
# Переключение на предыдущую раскладку
for i in "${!LAYOUTS[@]}"; do
if [ "${LAYOUTS[$i]}" == "$CURRENT_LAYOUT" ]; then
next_layout=${LAYOUTS[(( (i - 1 + LAYOUT_COUNT) % LAYOUT_COUNT ))]}
break
fi
done
fi
# Применяем новую раскладку
if [ ! -z "$next_layout" ]; then
setxkbmap "$next_layout"
notify-send "Lang: $next_layout" -t 700
fi
```
Не забудьте сделать его исполняемым:
```bash
chmod +x ~/switch_layout.sh
```
### Настройка горячих клавиш в `~/.xbindkeysrc`
4. Добавьте следующие строки в файл `~/.xbindkeysrc` для реагирования на комбинации клавиш:
```bash
# Переключение на последнюю использованную раскладку (Super + Space)
"bash ~/switch_layout.sh next"
Super + space
# Переключение на следующую раскладку (Super + Space + Space)
"bash ~/switch_layout.sh prev"
Super + space + space
```
### Запуск `xbindkeys`
5. Запустите `xbindkeys`:
```bash
xbindkeys
```
Можно добавить `xbindkeys` в автозагрузку вашего менеджера окон или рабочего окружения, чтобы он запускался автоматически при входе в систему.
### Проверка работы
Теперь после нажатия "Super + Space" у вас будет происходить переключение на последнюю использованную раскладку, а нажатие "Super + Space + Space" будет переключать раскладку на предыдущую по частоте использования.
### Дополнительные настройки
Вы можете расширить массив `LAYOUTS` для добавления новых раскладок, а также настроить логические условия для их переключения, если потребуется.