
나는 몇 년 동안 우분투를 사용하고 있으며 그것을 엄청나게 즐기고 있습니다. 나는 생계를 위해 PHP와 Javascript로 소프트웨어를 개발하고 있습니다.
내가 가진 유일한 사소한 성가심은 히브리어를 잊어버리고 다시 쉘 명령을 입력하거나 잠금을 해제할 때 기본 키보드 언어로 PC가 영어로 다시 전환하기를 원한다는 것입니다. 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번 이후에 마지막 항목을 설정하려는 경우 목록의 첫 번째 항목은 항상 0이므로 해당 인덱스는 2입니다.
스크립트를 사용하는 방법
- 언급한 대로 먼저 설치하세요.
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