
Ich verwende Ubuntu seit mehreren Jahren und habe großen Spaß daran. Meinen Lebensunterhalt verdiene ich mit der Entwicklung von Software in PHP und Javascript.
Das einzige kleine Ärgernis, das mich stört, ist, dass ich möchte, dass der PC wieder auf Englisch als Haupttastatursprache zurückschaltet, da ich die Sprache auf Hebräisch manchmal vergesse. Wenn ich dann zurückkehre, um einen Shell-Befehl einzugeben oder ihn einfach zu entsperren, merke ich, dass er in der anderen Sprache ist, nachdem ich die Eingabetaste drücke.
Sie mögen dies als echten Sonderfall abtun, aber ich bin neugierig, ob es ein Skript gibt, mit dem ich einen Timer einstellen kann, der nach einer bestimmten Zeit der Inaktivität der Tastatur (ich lese möglicherweise gerade ein E-Book und verwende die Maus) zu meiner Standardsprache zurückkehrt, die in den Tastatureinstellungen Englisch ist.
Ein Bonus wäre, wenn ich Pfeiltasten, Bild-ab-Tasten und ähnliche Tasten aus dem Skript ausschließen und den Timer weiterlaufen lassen könnte, wenn diese Tasten gedrückt werden.
Antwort1
Dies ist mithilfe eines Hintergrundskripts mit durchaus möglich xprintidle
, welches die aktuelle Leerlaufzeit zurückgibt.
Sie müssen es zuerst installieren:
sudo apt-get install xprintidle
Das folgende Skript liest die Ausgabe des Befehls xprintidle
und stellt Ihre Tastatur ein, wenn die eingestellte Zeit verstrichen ist.
So lässt sich die Tastatur einstellen (Index)
Um den richtigen Befehl zu erstellen, muss das Skript den Index der Zieltastatur kennen. Führen Sie dazu den folgenden Befehl aus:
gsettings get org.gnome.desktop.input-sources sources
Die Ausgabe sieht ungefähr so aus:
[('xkb', 'us+intl'), ('xkb', 'us'), ('xkb', 'nl')]
Wenn Sie nun das letzte Element nach x Mal festlegen möchten, ist sein Index 2, da das erste Element in einer Liste immer 0 ist.
So verwenden Sie das Skript
- Wie erwähnt, installieren Sie zuerst
xprintidle
- Kopieren Sie das untenstehende Skript in eine leere Datei
- Legen Sie im Kopfabschnitt des Skripts Folgendes fest:
- der Index der Zieltastatursprache, wie oben erläutert
- die Leerlaufzeit, nach der Sie die Tastatursprache ändern (in Sekunden)
- Speichern Sie das Skript unter
change_kb.py
Testen Sie es von einem Terminal mit dem folgenden Befehl:
python3 /path/to/change_kb.py
Wenn alles wie erwartet funktioniert, fügen Sie es zu Ihren Startanwendungen hinzu: Dash > Startanwendungen > Hinzufügen
Das Drehbuch
#!/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