[prev in list] [next in list] [prev in thread] [next in thread] 

List:       freenx-knx
Subject:    [FreeNX-kNX] Compiz dimming windows workaround
From:       Jarrod Johnson <jarrod.b.johnson+dhcwg () gmail ! com>
Date:       2009-11-10 1:47:18
Message-ID: fab4e42a0911091747j6a93decco9ed27aa3db9fa0f3 () mail ! gmail ! com
[Download RAW message or body]

So trying to use NX rootless results in Compiz graying out windows by
default as compiz believes them to be unresponsive.  So far the very
few complaints I've seen were met with 'just disable the feature'.
Well, I did a little digging and have a workaround patch to nxagent to
avoid the condition occurring.  Technically speaking, though the most
annoying manifestation of the limitation, it can manifest under the
likes of metacity or any window manager that checks responsiveness of
a window after the 'close' button is pressed.

The problem is that when an application advertises _NET_WM_PING and a
remote window manager actually tries to use the feature, it won't
work.  The proper fix is probably harder than I know how to do (have X
events directed to root window in rootless nxagent be sent to any
attached root windows instead of dropping it regardless of connected
remote systems).  However, the path I took was simply to have rootless
NX mask the _NET_WM_PING property.  This way, the responsiveness check
will never be attempted.  It will prevent Compiz and friends from ever
detecting a hung window, but in this case that is preferable to
*always* thinking the windows are hung.

I have attached the patch.  I know it is to nx core, but I was unsure
of how to submit patches to them, so I'm posting it here in case
someone like me needs it or someone knows how to call this to the
attention of Nomachine.

On a related note, I would look into why remote NX sessions can't get
into my notification area/aka tray, but I may be distracted, so if
anyone knows how that works and what aspects of NX inhibit that, would
love to hear.

["nxagent-ping.patch" (text/x-diff)]

--- ./programs/Xserver/hw/nxagent/Rootless.c.orig	2009-11-09 10:20:57.022468700 -0500
+++ ./programs/Xserver/hw/nxagent/Rootless.c	2009-11-09 10:24:01.014907601 -0500
@@ -633,7 +633,13 @@
 
     for (i = 0; i < nUnits; i++)
     {
-       atoms[i] = nxagentLocalToRemoteAtom(input[i]);
+       if (strcmp("_NET_WM_PING",NameForAtom(input[i])) == 0) {
+         atoms[i] = None; /* nxagent rootless corrupts function of _NET_WM_PING
+	                     protocol.  Mask the feature to prevent local 
+			     window manager misbehavior */
+       } else {
+	 atoms[i] = nxagentLocalToRemoteAtom(input[i]);
+       }
 
        if (atoms[i] == None)
        {


________________________________________________________________
     Were you helped on this list with your FreeNX problem?
    Then please write up the solution in the FreeNX Wiki/FAQ:

http://openfacts2.berlios.de/wikien/index.php/BerliosProject:FreeNX_-_FAQ
  
         Don't forget to check the NX Knowledge Base:
                 http://www.nomachine.com/kb/ 

________________________________________________________________
       FreeNX-kNX mailing list --- FreeNX-kNX@kde.org
      https://mail.kde.org/mailman/listinfo/freenx-knx
________________________________________________________________

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic