Как настроить Ubuntu так, чтобы он переключался обратно на английский язык после нескольких минут бездействия?

Как настроить Ubuntu так, чтобы он переключался обратно на английский язык после нескольких минут бездействия?

Я пользуюсь 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.

Как использовать скрипт

  1. Как уже упоминалось, сначала установитеxprintidle
  2. Скопируйте скрипт ниже в пустой файл.
  3. В заголовке скрипта установите:
    • индекс целевого языка клавиатуры, как описано выше
    • время простоя, после которого вы измените язык клавиатуры (в секундах)
  4. Сохранить скрипт какchange_kb.py
  5. Проверьте запуск из терминала командой:

    python3 /path/to/change_kb.py
    
  6. Если все работает как надо, добавьте его в автозагрузку приложений: 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

Связанный контент