<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">Please don't say XLib does not, when in
      fact it does, and I have used it for that purpose. You can use it
      provides hints to the Window Manager (hence the WM). Don't just
      say shit like "does NOT" if you don't know for sure man. You could
      say "I'm not sure" or "XLib as far as I know", etc. I *have* used
      it for _NET_WM commands. Quite common actually, INCLUDING
      _NET_WM_STATE.<br>
      <br>
      - Dennis<br>
      <br>
      On 2015-10-28 07:02 PM, Anthony Walter wrote:<br>
    </div>
    <blockquote
cite="mid:CAHmPLWU4SNRmv9C9fjwnt4jh5Wx4tETj=M-=afBziwxzM9MpJA@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_extra">Actually XLib does NOT provide
            control over layering windows, input focus, z-order, virtual
            desktops. It's the window manager (KWin, Compiz, Metacity,
            IceWM, and so on) which handles this. </div>
          <div class="gmail_extra"><br>
          </div>
          <div class="gmail_extra">As such, with some tookits and window
            manager combinations it's not possible to do certain things
            without special code to work around specific combinations of
            both. For example, when writing a Gtk2 application with
            Compiz it's not possible to alter the z-order of your
            application, ie bringing it to the foreground and/or
            activating it. XLib won't help you with this.</div>
          <div class="gmail_extra"><br>
          </div>
          <div class="gmail_extra">But the good news is that most all
            window managers expose window management functionality
            through a common protocol: NetWM </div>
          <div class="gmail_extra"><br>
          </div>
          <div class="gmail_extra">For example the _NET_WM_STATE message
            can be used to reorder the stack of application windows
            above or below one another (bringing your application to the
            top). It can be used to make your window sticky (to appear
            in the same place in all workspaces).</div>
          <div class="gmail_extra"><br>
          </div>
          <div class="gmail_extra">The _NET_ACTIVE_WINDOW can be used to
            find application window with input focus. It can also be
            used to give input focus to another application window.</div>
          <div class="gmail_extra"><br>
          </div>
          <div class="gmail_extra">These are all thing which XLib
            doesn't cover, and areas where Lazarus and some
            toolkits/window managers struggle with parity. That is,
            without a common protocol like NetWM.</div>
          <div class="gmail_extra"><br>
          </div>
          <div class="gmail_extra">Anyhow, if anyone is still
            interested, I've written a Free Pascal unit to interface
            with the NetWM protocol. So far I've tested it with Gtk2 on
            Compix with the following functionality:</div>
          <div class="gmail_extra"><br>
          </div>
          <div class="gmail_extra">Show/hide desktop [x] works</div>
          <div class="gmail_extra">Switch workspace [x] works</div>
          <div class="gmail_extra">Sticky/unsticky a window [x] works</div>
          <div class="gmail_extra">Move window to a different workspace
            [x] works</div>
          <div class="gmail_extra">Cycle various application z-orders
            [x] works</div>
          <div class="gmail_extra"><br>
          </div>
          <div class="gmail_extra">I will implement a few more functions
            and then post the unit to github. I'd like to get
            application activation, bypassing window animations, and a
            few other features working. When posted if people with
            different window managers (KDE's KWin) want to test it, that
            would be great.</div>
        </div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">--
_______________________________________________
Lazarus mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Lazarus@lists.lazarus.freepascal.org">Lazarus@lists.lazarus.freepascal.org</a>
<a class="moz-txt-link-freetext" href="http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus">http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>