ich bin neu hier bzw habe angefangen Python für mich zu entdecken. Ich weiß nicht wer den WindowManager TinyWM von euch kennt, aber ich habe ein paar Probleme ihn ans laufen zu bekommen. Ich hoffe hier jemanden zu finden der weiß was umgeschrieben werden muss, bzw vllt den jemand der den Quelltext ganz schnell für python3 umschreiben kann. Die nächste Frage wäre ob ich das Programm dann mit "python ... .py" oder mit "startx ... .py" ausführen kann? Hier erst einmal der Quellcode:
Code: Alles auswählen
from Xlib.display import Display
from Xlib import X, XK
dpy = Display()
root = dpy.screen().root
root.grab_key(XK.string_to_keysym("F1"), X.Mod1Mask, 1,
X.GrabModeAsync, X.GrabModeAsync)
root.grab_button(1, X.Mod1Mask, 1, X.ButtonPressMask,
X.GrabModeAsync, X.GrabModeAsync, X.NONE, X.NONE)
root.grab_button(3, X.Mod1Mask, 1, X.ButtonPressMask,
X.GrabModeAsync, X.GrabModeAsync, X.NONE, X.NONE)
while 1:
ev = root.display.next_event()
if ev.type == X.KeyPress and ev.child != X.NONE:
ev.window.circulate(X.RaiseLowest)
elif ev.type == X.ButtonPress and ev.child != X.NONE:
ev.child.grab_pointer(1, X.PointerMotionMask|X.ButtonReleaseMask,
X.GrabModeAsync, X.GrabModeAsync, X.NONE, X.NONE, X.CurrentTime)
attr = ev.child.get_geometry()
start = ev
elif ev.type == X.MotionNotify:
#while(XCheckTypedEvent(dpy, MotionNotify, &ev));
xdiff = ev.root_x - start.root_x
ydiff = ev.root_y - start.root_y
ev.window.configure(
x = attr.x + (start.detail == 1 and xdiff or 0),
y = attr.y + (start.detail == 1 and ydiff or 0),
width = max(1, attr.width + (start.detail == 3 and xdiff or 0)),
height = max(1, attr.height + (start.detail == 3 and ydiff or 0)))
elif ev.type == X.ButtonRelease:
dpy.ungrab_pointer(X.CurrentTime)
Leider erzeugt das bei mir folgende Fehlermeldung, wenn ich versuche das Programm zu starten:
Code: Alles auswählen
Traceback (most recent call last):
File "tinywm.py", line 13, in <module>
X.GrabModeAsync, X.GrabModeAsync)
File "/home/hacking/.local/lib/python2.7/site-packages/Xlib/xobject/drawable.py", line 551, in grab_key
keyboard_mode = keyboard_mode)
File "/home/hacking/.local/lib/python2.7/site-packages/Xlib/protocol/rq.py", line 1459, in __init__
self._binary = self._request.to_binary(*args, **keys)
File "/home/hacking/.local/lib/python2.7/site-packages/Xlib/protocol/rq.py", line 1141, in to_binary
return self.to_binary(*varargs, **keys)
File "<string>", line 2, in to_binary
struct.error: ubyte format requires 0 <= number <= 255
Über eure Hilfe würde ich mich sehr freuen und schon einmal vielen lieben Dank.