
Я пользуюсь Ubuntu уже несколько лет и получаю от этого огромное удовольствие. Я зарабатываю на жизнь разработкой ПО на PHP и Javascript.
Единственное небольшое неудобство, которое у меня возникло, это то, что я хотел бы, чтобы ПК переключился обратно на английский язык в качестве основного языка клавиатуры, так как я иногда забываю его на иврите, а затем, когда я возвращаюсь, чтобы ввести какую-нибудь команду оболочки или просто разблокировать ее, я замечаю, что она на другом языке после нажатия Enter.
Вы можете отмахнуться от этого как от крайнего случая, но мне интересно, есть ли скрипт, который я могу написать, чтобы установить таймер, который после определенного периода бездействия клавиатуры (например, я читаю электронную книгу и использую мышь) переключается обратно на мой язык по умолчанию, которым в настройках клавиатуры является английский.
Бонусом было бы, если бы я мог исключить клавиши со стрелками, клавишу PageDown и подобные клавиши из скрипта и позволить таймеру продолжать тикать, если эти клавиши нажаты.
решение1
Это вполне возможно с помощью фонового скрипта, использующего xprintidle
, который возвращает текущее время простоя.
Сначала вам нужно будет установить его:
sudo apt-get install xprintidle
Приведенный ниже скрипт считывает вывод команды xprintidle
и устанавливает клавиатуру по истечении заданного времени.
Как настроить клавиатуру (индекс)
Для создания правильной команды скрипту необходимо знать индекс целевой клавиатуры. Чтобы получить его, выполните команду:
gsettings get org.gnome.desktop.input-sources sources
Вывод будет примерно таким:
[('xkb', 'us+intl'), ('xkb', 'us'), ('xkb', 'nl')]
Теперь, если вы хотите установить последний элемент после x времени, его индекс будет равен 2, поскольку первый элемент в списке всегда равен 0.
Как использовать скрипт
- Как уже упоминалось, сначала установите
xprintidle
- Скопируйте скрипт ниже в пустой файл.
- В заголовке скрипта установите:
- индекс целевого языка клавиатуры, как описано выше
- время простоя, после которого вы измените язык клавиатуры (в секундах)
- Сохранить скрипт как
change_kb.py
Проверьте запуск из терминала командой:
python3 /path/to/change_kb.py
Если все работает как надо, добавьте его в автозагрузку приложений: Dash > Автозагрузка приложений > Добавить
Сценарий
#!/usr/bin/env python3
import subprocess
import time
#---
kb_id = 2 # set the targeted keyboard index (first = 0)
set_time = 300 # idle tim in seconds
#---
get_t = lambda cmd: subprocess.check_output(cmd).decode("utf-8").strip()
t1 = int(get_t(["xprintidle"]))
idle_t = set_time*1000
while True:
time.sleep(1)
t2 = int(get_t(["xprintidle"]))
if all([t1<idle_t, t2>idle_t]):
cmd = "gsettings set org.gnome.desktop.input-sources current "+str(kb_id)
subprocess.Popen(["/bin/bash", "-c", cmd])
else:
pass
t1 = t2