From 894c47c5183b120ad20a1ad7af70b2b5beab25d8 Mon Sep 17 00:00:00 2001 From: Wesley Kerfoot Date: Sat, 18 Jan 2020 20:42:26 -0500 Subject: [PATCH] initial commit --- nimwin | Bin 0 -> 107688 bytes nimwin.nimble | 15 ++++++++++ src/nimwin.nim | 73 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 88 insertions(+) create mode 100755 nimwin create mode 100644 nimwin.nimble create mode 100644 src/nimwin.nim diff --git a/nimwin b/nimwin new file mode 100755 index 0000000000000000000000000000000000000000..92e72b30611ba8e7f821ae44d32430de5b3907a8 GIT binary patch literal 107688 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 1.0.9" +requires "x11" diff --git a/src/nimwin.nim b/src/nimwin.nim new file mode 100644 index 0000000..0f06d67 --- /dev/null +++ b/src/nimwin.nim @@ -0,0 +1,73 @@ +import x11/xlib, x11/xutil, x11/x, x11/keysym + +proc getDisplay : PDisplay = + result = XOpenDisplay(nil) + if result == nil: + quit("Failed to open display") + +proc grabMouse(display : PDisplay, button : int) = + discard XGrabButton(display, + button.cuint, + Mod1Mask.cuint, + DefaultRootWindow(display), + 1.cint, + ButtonPressMask or ButtonReleaseMask or PointerMotionMask, + GrabModeAsync, + GrabModeAsync, + None, + None) + +proc grabKeys(display : PDisplay) = + let keyModifier = "F1" + discard XGrabKey(display, + XKeySymToKeyCode(display, + XStringToKeySym(keyModifier.cstring)).cint, + Mod1Mask.cuint, + DefaultRootWindow(display), + 1.cint, + GrabModeAsync.cint, + GrabModeAsync.cint) + +when isMainModule: + var start : TXButtonEvent + var ev : TXEvent + var attr : TXWindowAttributes + + let display = getDisplay() + + display.grabKeys + display.grabMouse(1) + display.grabMouse(3) + + start.subWindow = None + + while true: + # TODO refactor using XPending ? + discard XNextEvent(display, ev.addr) + + # subwindow is because we grabbed the root window + # and we want events in its children + + if (ev.theType == KeyPress) and (ev.xKey.subWindow != None): + discard XRaiseWindow(display, ev.xKey.subWindow) + + elif (ev.theType == ButtonPress) and (ev.xButton.subWindow != None): + discard XGetWindowAttributes(display, ev.xButton.subWindow, attr.addr) + start = ev.xButton + + elif (ev.theType == MotionNotify) and (start.subWindow != None): + var xDiff : int = ev.xButton.xRoot - start.xRoot + var yDiff : int = ev.xButton.yRoot - start.yRoot + + discard XMoveResizeWindow(display, + start.subWindow, + attr.x + (if start.button == 1: xDiff else: 0).cint, + attr.y + (if start.button == 1: yDiff else: 0).cint, + max(1, attr.width + (if start.button == 3: xDiff else: 0)).cuint, + max(1, attr.height + (if start.button == 3: yDiff else: 0)).cuint) + + elif ev.theType == ButtonRelease: + start.subWindow = None + + else: + continue