如何设置 ubuntu 在几分钟不活动后切换回英语?

如何设置 ubuntu 在几分钟不活动后切换回英语?

我使用 Ubuntu 已有好几年了,非常喜欢它。我以开发 PHP 和 Javascript 软件为生。

我唯一的小烦恼是,我希望 PC 能为我切换回英语作为主键盘语言,因为我有时会忘记希伯来语,然后当我返回输入一些 shell 命令或只是解锁它时,我注意到按下 Enter 后它是另一种语言。

您可能会认为这是一个非常极端的情况,但我很好奇我是否可以编写一个脚本来设置一个计时器,当键盘处于一定程度的不活动状态后(我可能正在阅读一些电子书并使用鼠标),它会切换回我的默认语言,即键盘设置上的英语。

如果我可以从脚本中排除箭头键、向下翻页键和类似的键,并让计时器在按下这些键时继续滴答作响,那将是一个额外的好处。

答案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

相关内容