Oh - no! :) Compilation is OK - but Manager not work. It is only overwrite od TinyWM:

import std.c.linux.X11.Xlib;
import std.c.linux.X11.X;

/* gdc ./main.d /usr/include/d2/4.6/std/c/linux/X11/Xlib.d -o refuja -lX11 */

int main()
{
        Display *dpy;
        XWindowAttributes attr;
        XButtonEvent start;
        XEvent ev;

        dpy = XOpenDisplay(cast(char*)0);

        if(!dpy)
                return 1;

XGrabKey(dpy, XKeysymToKeycode(dpy, XStringToKeysym(cast(char*)"F1")), KeyMask.Mod1Mask, DefaultRootWindow(dpy), cast(Bool)true, GrabMode.GrabModeAsync, GrabMode.GrabModeAsync); XGrabButton(dpy, 1, KeyMask.Mod1Mask, DefaultRootWindow(dpy), cast(Bool)true, EventMask.ButtonPressMask|EventMask.ButtonReleaseMask|EventMask.PointerMotionMask, GrabMode.GrabModeAsync, GrabMode.GrabModeAsync, None, None); XGrabButton(dpy, 3, KeyMask.Mod1Mask, DefaultRootWindow(dpy), cast(Bool)true, EventMask.ButtonPressMask|EventMask.ButtonReleaseMask|EventMask.PointerMotionMask, GrabMode.GrabModeAsync, GrabMode.GrabModeAsync, None, None);

        start.subwindow = None;
        
        while(true)
        {
                XNextEvent(dpy, &ev);
                
                if(ev.type == EventType.KeyPress && ev.xkey.subwindow != None)
                        XRaiseWindow(dpy, ev.xkey.subwindow);
else if(ev.type == EventType.ButtonPress && ev.xbutton.subwindow != None)
                {
                        XGetWindowAttributes(dpy, ev.xbutton.subwindow, &attr);
                        start = ev.xbutton;
                }
else if(ev.type == EventType.MotionNotify && start.subwindow != None)
                {
                        int xdiff = ev.xbutton.x_root - start.x_root,
                        ydiff = ev.xbutton.y_root - start.y_root;
                        
                        XMoveResizeWindow(dpy, start.subwindow,
                                attr.x + (start.button==1 ? xdiff : 0),
                                attr.y + (start.button==1 ? ydiff : 0),
                                Max(1, attr.width + (start.button==3 ? xdiff : 
0)),
                                Max(1, attr.height + (start.button==3 ? ydiff : 
0)));
                }
                else if(ev.type == EventType.ButtonRelease)
                        start.subwindow = None;
        }
}

int Max(int a, int b)
{
        return (a > b ? a : b);
}

What is the problem?
Thank you.

Reply via email to