im Grunde möchte ich ein Python script schreiben, dass ein Kommando ausführt, sobald der Mauszeiger den linken oder rechten Rand des Bildschirms berührt. Ich möchte dazu benutzen, den Workspace (unter fluxbox) zu wechseln, wenn ich die Maus an den Bildschirmrand schiebe.
Das script ist im Grunde fertig und funktioniert auch einwandfrei, jedoch verbraucht es zu viel CPU power (ca. 5%, Core2duo, 1 GHz). Ich frage nämlich alle viertel Sekunde die Mausposition ab. Das muss doch irgendwie besser gehen?
Hier das script:
Code: Alles auswählen
#! /usr/bin/env python
from Xlib import display
from Xlib.ext.xtest import fake_input
from Xlib import X
import time
import os
def mousemove(x, y):
my_screen = display.Display()
fake_input(my_screen, X.MotionNotify, x=x, y=y)
my_screen.sync()
def mousepos():
data = display.Display().screen().root.query_pointer()._data
return data["root_x"], data["root_y"]
check_intervall = 0.25
left_trigger = 0
right_trigger = display.Display().screen().width_in_pixels-1
while True:
time.sleep(check_intervall)
pos = mousepos()
if pos[0] == left_trigger:
mousemove(right_trigger-1, pos[1])
os.system('fluxbox-remote PrevWorkspace')
elif pos[0] == right_trigger:
mousemove(left_trigger+1, pos[1])
os.system('fluxbox-remote NextWorkspace')