Se você estiver usando o Unity, e usar o teclado do indicador para alterar a entrada do teclado, então no 14.04, pelo menos, podemos explorar o fato de que isso altera a chave GSettings org.gnome.desktop.input-sources.current
. Aqui está um script Python que ouve as alterações nessa chave e, em seguida, chama uma função que imprime algumas informações e executa um subprocesso.
from __future__ import print_function
from gi.repository import Gio, GObject
import subprocess
def on_changed(settings, key):
print("Key changed", key, "to", settings.get_uint(key))
subprocess.call(["touch", "/tmp/last-input-change"])
def main():
settings = Gio.Settings("org.gnome.desktop.input-sources")
settings.connect("changed::current", on_changed)
loop = GObject.MainLoop()
loop.run()
if __name__ == "__main__":
main()