[X2Go-Commits] nx-libs.git - build-baikal (branch) updated: redist-server/3.5.0.2-3-g405bc8f

X2Go dev team git-admin at x2go.org
Fri Aug 30 16:24:48 CEST 2013


The branch, build-baikal has been updated
       via  405bc8f259f230947e5fe8341f0bab8f0f88c678 (commit)
      from  19f24873388ce9a2136f8d3fe8145d6ce4576730 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
-----------------------------------------------------------------------

Summary of changes:
 debian/changelog                                   |    5 +
 .../200_nxagent_check-binary-x2go-flavour.patch    |   64 ++++
 ...xagent_set-x2go-icon-if-x2goagent-flavour.patch |  220 +++++++++++++
 debian/patches/300_nxagent_set-wm-class.patch      |   60 ++++
 ...9_nxagent_unbrand-nxagent-brand-x2goagent.patch |  329 ++++++++++++++++++++
 5 files changed, 678 insertions(+)
 create mode 100644 debian/patches/200_nxagent_check-binary-x2go-flavour.patch
 create mode 100644 debian/patches/201_nxagent_set-x2go-icon-if-x2goagent-flavour.patch
 create mode 100644 debian/patches/300_nxagent_set-wm-class.patch
 create mode 100644 debian/patches/999_nxagent_unbrand-nxagent-brand-x2goagent.patch

The diff of changes is:
diff --git a/debian/changelog b/debian/changelog
index 7faaac3..c383036 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -3,6 +3,11 @@ nx-libs (2:3.5.0.2-1) UNRELEASED; urgency=low
   * Rename nxagent-unbrand patch, so that is the last patch to be applied
     (999_<patchname>).
   * Drop NX agent unbrand patch from FreeNX.
+  * Add X2Go agent / NX agent flavouring via patch system:
+    - 200_nxagent_check-binary-x2go-flavour.patch
+    - 201_nxagent_set-x2go-icon-if-x2goagent-flavour.patch
+    - 300_nxagent_set-wm-class.patch
+    - 999_nxagent_unbrand-nxagent-brand-x2goagent.patch
 
  -- Mike Gabriel <mike.gabriel at das-netzwerkteam.de>  Wed, 11 Jan 2012 15:30:36 +0100
 
diff --git a/debian/patches/200_nxagent_check-binary-x2go-flavour.patch b/debian/patches/200_nxagent_check-binary-x2go-flavour.patch
new file mode 100644
index 0000000..089b570
--- /dev/null
+++ b/debian/patches/200_nxagent_check-binary-x2go-flavour.patch
@@ -0,0 +1,64 @@
+Description: Detect nxagent/x2goagent flavour
+ Whether the agent runs in X2Go or NX mode is decide by the
+ name of the binary that executes the code.
+ .
+ Binary name equal to nxagent -> (Free)NX flavour
+ Binary name equal to x2goagent -> X2Go flavour
+Forwarded: not-needed
+Author: Oleksandr Shneyder <oleksandr.shneyder at obviously-nice.de>
+Last-Update: 2012-01-11
+--- a/nx-X11/programs/Xserver/hw/nxagent/Init.c
++++ b/nx-X11/programs/Xserver/hw/nxagent/Init.c
+@@ -178,6 +178,29 @@
+ 
+ int nxagentDoFullGeneration = 1;
+ 
++ /*
++ * 1 if agent running as X2goAgent
++ * 0 if NX Agent
++ */
++int nxagentX2go;
++
++/*
++ * Checking if agent is x2go agent
++ */
++
++void checkX2goAgent()
++{
++  extern const char *__progname;
++  if( strcasecmp(__progname,"x2goagent") == 0)
++  {
++    fprintf(stderr, "\nrunning as X2Go Agent\n");
++    nxagentX2go=1;
++  }
++  else
++    nxagentX2go=0;
++}
++
++
+ /*
+  * Called at X server's initialization.
+  */
+@@ -194,6 +217,11 @@
+   #endif
+ 
+   /*
++   * Check if we running as X2Go Agent
++   */
++  checkX2goAgent();
++
++  /*
+    * Print our pid and version information.
+    */
+ 
+--- a/nx-X11/programs/Xserver/hw/nxagent/Init.h
++++ b/nx-X11/programs/Xserver/hw/nxagent/Init.h
+@@ -37,6 +37,8 @@
+ extern int nxagentBackingStore;
+ extern int nxagentSaveUnder;
+ 
++extern int  nxagentX2go;
++
+ extern ServerGrabInfoRec nxagentGrabServerInfo;
+ 
+ #endif /* __Init_H__ */
diff --git a/debian/patches/201_nxagent_set-x2go-icon-if-x2goagent-flavour.patch b/debian/patches/201_nxagent_set-x2go-icon-if-x2goagent-flavour.patch
new file mode 100644
index 0000000..ff3861d
--- /dev/null
+++ b/debian/patches/201_nxagent_set-x2go-icon-if-x2goagent-flavour.patch
@@ -0,0 +1,220 @@
+Description: X2Go icon when run with x2goagent flavour
+ Depending on the binary name of the agent either nxagent.xpm
+ or x2go.xpm is used as window icon.
+Forwarded: not-needed
+Author: Oleksandr Shneyder <oleksandr.shneyder at obviously-nice.de>
+Last-Update: 2012-01-11
+--- a/nx-X11/programs/Xserver/hw/nxagent/Display.c	2012-01-11 10:09:05.000000000 +0100
++++ b/nx-X11/programs/Xserver/hw/nxagent/Display.c	2012-01-11 12:28:11.000000000 +0100
+@@ -77,6 +77,7 @@ is" without express or implied warranty.
+ #include "NXlib.h"
+ 
+ #include NXAGENT_ICON_NAME
++#include X2GOAGENT_ICON_NAME
+ 
+ /*
+  * Set here the required log level.
+@@ -1918,12 +1919,29 @@ Bool nxagentMakeIcon(Display *display, P
+   Bool success = False;
+   XlibPixmap IconPixmap;
+   XlibPixmap IconShape;
++  char* agent_icon_name;
++  char* agentIconData;
+ 
+-  snprintf(default_path, PATH_MAX-1, "/usr/NX/share/images/%s", NXAGENT_ICON_NAME);
++  /*
++   * selecting x2go icon when running as X2Go agent
++   */
++  if(nxagentX2go)
++  {
++    agent_icon_name=X2GOAGENT_ICON_NAME;
++    agentIconData=x2goagentIconData;
++  }
++  else
++  {
++    agent_icon_name=NXAGENT_ICON_NAME;
++    agentIconData=nxagentIconData;
++  }
++
++
++  snprintf(default_path, PATH_MAX-1, "/usr/NX/share/images/%s", agent_icon_name);
+ 
+   if ((icon_fp = fopen(default_path, "r")) == NULL)
+   {
+-    icon_fp = nxagentLookForIconFile(NXAGENT_ICON_NAME, "r", icon_path);
++    icon_fp = nxagentLookForIconFile(agent_icon_name, "r", icon_path);
+ 
+     if (icon_fp != NULL)
+     {
+@@ -1962,7 +1980,7 @@ Bool nxagentMakeIcon(Display *display, P
+   {
+      status = XpmCreatePixmapFromData(display,
+                                         DefaultRootWindow(display),
+-                                        nxagentIconData,
++                                        agentIconData,
+                                         &IconPixmap,
+                                         &IconShape,
+                                         NULL);
+--- a/nx-X11/programs/Xserver/hw/nxagent/Icons.h	2012-01-11 10:09:05.000000000 +0100
++++ b/nx-X11/programs/Xserver/hw/nxagent/Icons.h	2012-01-11 12:17:21.000000000 +0100
+@@ -24,6 +24,8 @@
+ 
+ #define NXAGENT_ICON_NAME  "nxagent.xpm"
+ 
++#define X2GOAGENT_ICON_NAME  "x2go.xpm"
++
+ #define NXAGENT_PLACEHOLDER_NAME  "nxmissing.xpm"
+ 
+ #endif /* __Icons_H__ */
+--- a/nx-X11/programs/Xserver/hw/nxagent/x2go.xpm	1970-01-01 01:00:00.000000000 +0100
++++ b/nx-X11/programs/Xserver/hw/nxagent/x2go.xpm	2012-01-11 12:26:24.000000000 +0100
+@@ -0,0 +1,148 @@
++/* XPM */
++static char  *x2goagentIconData[]={
++"128 128 17 1",
++". c None",
++"m c #323232",
++"l c #323232",
++"f c #323232",
++"e c #323232",
++"o c #323232",
++"# c #323232",
++"h c #323232",
++"i c #323232",
++"n c #323232",
++"d c #323232",
++"a c #323232",
++"g c #323232",
++"j c #323232",
++"b c #323232",
++"k c #323232",
++"c c #323232",
++".....#abccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbde.....",
++"...fbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccgf...",
++"..#ccccaheeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeijccckf..",
++".ecccgl..................................................................................................................ejcckf.",
++".bccd.....................................................................................................................mdccg.",
++"#cca.......................................................................................................................mjcce",
++"gckm........................................................................................................................eccd",
++"ccn..........................................................................................................................jcb",
++"cce..........................................................................................................................icc",
++"ccm..........................................................................................................................ecc",
++"cc...........................................................................................................................ecc",
++"cc...........................................................................................................................ecc",
++"cc...........................................................................................................................ecc",
++"cc...........................................................................................................................ecc",
++"cc............................................meeee..........................................................................ecc",
++"cc.........eeeeeeeeoiiiiiiiinggggggggjccccccccccccc....#ggggggggggggggggggggggggggggf.............ggggggggggggggggggggggf....ecc",
++"cc....meeeeoiiiiiiiinggggggggjccccccccccccccccccccc....icccccccccccccccccccccccccccce.............cccccccccccccccccccccce....ecc",
++"cc....................................meeeeeeeeoiii....icccccccccccccccccccccccccccce.............cccccccccccccccccccccce....ecc",
++"cc.......................................................menbccccccccccccccccccbhe..................logccccccccccccghe.......ecc",
++"cc...........................................................iccccccccccccccccdm.......................#cccccccccke..........ecc",
++"cc..............................................lee...........#cccccccccccccckm.........................jccccccckm...........ecc",
++"cc........feeeeeeeeoiiiiiiiiiaggggggggjcccccccccccc............icccccccccccccd..........................icccccccf............ecc",
++"cc....meeeeeoiiiiiiiinggggggggjcccccccccccccccccccciiiiii#m.....jcccccccccccci..........................icccccci.............ecc",
++"cc......................................eeeeeeeeeiiiiiiiiigl....eccccccccccccd..........................dcccccj..............ecc",
++"cc...............................................................dcccccccccccj..........................bccccce..............ecc",
++"cc...............................................................lccccccccccccl........................lccccca...............ecc",
++"cc.............................................meeeeeeee#iiiie....dccccccccccch........................icccccl...............ecc",
++"cc.........meeeeeeeeoiiiiiiiinggggggggjccccccccccccccccccccccb....ecccccccccccb........................bccccn................ecc",
++"cc....meeeeiiiiiiiiiaggggggggbcccccccccccccccccccccccccccccccc#....gccccccccccco......................#cccckm................ecc",
++"cc....................................meeeeeeeeeiiiiiiiiiaggggd....#cccccccccccg......................bcccci.................ecc",
++"cc..................................................................bcccccccccccf....................#cccckm.................ecc",
++"cc..................................................................hcccccccccccd...................mkcccci..................ecc",
++"cc............................................meeeeeeeeoiiiiiiiil...mkcccccccccccl..................icccckm..................ecc",
++"cc.........eeeeeeeeoiiiiiiiinggggggggjccccccccccccccccccccccccccn....dccccccccccci.................mkcccci...................ecc",
++"cc....meeeeeiiiiiiiiiaggggggggbccccccccccccccccccccccccccccccccckm...lccccccccccck.................icccckm...................ecc",
++"cc.....................................leeeeeeeeoiiiiiiiiigggggggo....accccccccccc#...............mkcccch....................ecc",
++"cc....................................................................ecccccccccccb...............iccccb.....................ecc",
++"cc.....................................................................jccccccccccce.............mkcccc#.....................ecc",
++"cc.............................................meeeeeeeeehiiiiiiii#....#ccccccccccca.............nccccb......................ecc",
++"cc........feeeeeeee#iiiiiiiiigggggggggkccccccccccccccccccccccccccccl....kcccccccccccl...........lccccc#......................ecc",
++"cc....meeeeeoiiiiiiiiigggggggggkcccccccccccccccccccccccccccccccccccd....icccccccccccd...........dccccb.......................ecc",
++"cc......................................leeeeeeeeoiiiiiiiingggggggga....mccccccccccckm.........lccccc#.......................ecc",
++"cc.......................................................................dccccccccccch.........dccccb........................ecc",
++"cc.......................................................................lcccccccccccb........lccccc#........................ecc",
++"cc.............................................meeeeeeeeoiiiiiiiingggo....gccccccccccc#.......dccccg.........................ecc",
++"cc.........meeeeeeeeoiiiiiiiinggggggggjccccccccccccccccccccccccccccccg....occcccccccccg......lccccce.........................ecc",
++"cc....meeeeiiiiiiiiiaggggggggbcccccccccccccccccccccccccccccccccccccccce....bccccccccccce.....gccccg..........................ecc",
++"cc....................................meeeeeeeeeiiiiiiiiigggggggggkcccd....#cccccccccccd....eccccce..........................ecc",
++"cc.........................................................................mkcccccccccccl...gccccg...........................ecc",
++"cc..........................................................................nccccccccccci..eccccce...........................ecc",
++"cc............................................meeeeeeeeoiiiiiiiingggggggm...lccccccccccckm.gccccg............................ecc",
++"cc.........eeeeeeeeoiiiiiiiinggggggggjcccccccccccccccccccccccccccccccccc#....dccccccccccc#eccccce............................ecc",
++"cc....meeeeeiiiiiiiiiaggggggggkcccccccccccccccccccccccccccccccccccccccccb....ecccccccccccbgccccg.............................ecc",
++"cc.....................................leeeeeeeeoiiiiiiiiigggggggggkccccco....gccccccccccccccccl.............................ecc",
++"cc............................................................................#cccccccccccccccd..............................ecc",
++"cc.............................................................................bccccccccccccccl..............................ecc",
++"cc.............................................leeeeeeeeeiiiiiiiiiagggggggi....icccccccccccccd...............................ecc",
++"cc........feeeeeeee#iiiiiiiingggggggggkccccccccccccccccccccccccccccccccccckm...mkccccccccccccl...............................ecc",
++"cc....meeeeeoiiiiiiiiigggggggggkccccccccccccccccccccccccccccccccccccccccccci....dccccccccccca................................ecc",
++"cc......................................leeeeeeeeoiiiiiiiiigggggggggccccccck....lccccccccccckm...............................ecc",
++"cc...............................................................................accccccccccc#...............................ecc",
++"cc...............................................................................ecccccccccccb...............................ecc",
++"cc............................................leeeeeeeeeiiiiiiiiiaggggggggbcce....bccccccccccce..............................ecc",
++"cc.......feeeeeeee#iiiiiiiiigggggggggkcccccccccccccccccccccccccccccccccccccccd....#cccccccccccg..............................ecc",
++"cc....meeeeeeoiiiiiiiingggggggggccccccccccccccccccccccccccccccccccccccccccccccl....kcccccccccccl.............................ecc",
++"cc.......................................feeeeeeeehiiiiiiiidggggggggbccccccccci....ncccccccccccd.............................ecc",
++"cc...........................................................................mm....bccccccccccccm............................ecc",
++"cc................................................................................#ccccccccccccci............................ecc",
++"cc..........................................leeeeeeee#iiiiiiiidggggggggbcccccl....bccccccccccccck............................ecc",
++"cc......feeeeeeeehiiiiiiiiaggggggggkccccccccccccccccccccccccccccccccccccccccd....#ccccccccccccccc#...........................ecc",
++"cc....meeeeeee#iiiiiiiidggggggggjcccccccccccccccccccccccccccccccccccccccccccl....bcccccccccccccccb...........................ecc",
++"cc.......................................meeeeeeeeeiiiiiiiiigggggggggkcccccd....#cccccbccccccccccce..........................ecc",
++"cc..............................................................................bccccdhcccccccccccg..........................ecc",
++"cc.............................................................................#ccccclmkcccccccccccl.........................ecc",
++"cc..........................................meeeeeeeeeiiiiiiiiiaggggggggbkm....bccccd..ncccccccccccd.........................ecc",
++"cc.....leeeeeeeeoiiiiiiiiigggggggggkccccccccccccccccccccccccccccccccccccci....hcccckl..lccccccccccccm........................ecc",
++"cc....meeeeeeeehiiiiiiiidggggggggbcccccccccccccccccccccccccccccccccccccckm...mkcccci....dccccccccccci........................ecc",
++"cc........................................leeeeeeee#iiiiiiiinggggggggjcci....icccckm....eccccccccccck........................ecc",
++"cc..........................................................................mkcccci......gccccccccccc#.......................ecc",
++"cc..........................................................................icccckm......#cccccccccccb.......................ecc",
++"cc.........................................leeeeeeeeoiiiiiiiiigggggggga....mkcccci........bccccccccccce......................ecc",
++"cc....meeeeeeeeoiiiiiiiiigggggggggkccccccccccccccccccccccccccccccccccci....icccckm........hcccccccccccg......................ecc",
++"cc.....feeeeeeeehiiiiiiiiaggggggggkcccccccccccccccccccccccccccccccccckm...mkcccci.........mkcccccccccccl.....................ecc",
++"cc.........................................feeeeeeeehiiiiiiiiagggggggh....icccckm..........icccccccccccd.....................ecc",
++"cc.......................................................................mkcccci...........lccccccccccccm....................ecc",
++"cc.......................................................................icccckm............dccccccccccci....................ecc",
++"cc...........................................eeeeeeeeehiiiiiiiidggga....mkcccci.............fccccccccccck....................ecc",
++"cc......feeeeeeee#iiiiiiiingggggggggccccccccccccccccccccccccccccccci....iccccb...............gccccccccccc#...................ecc",
++"cc....meeeeeeeoiiiiiiiiigggggggggbcccccccccccccccccccccccccccccccckm...mkcccc#...............occcccccccccb...................ecc",
++"cc........................................meeeeeeeeeiiiiiiiiidgggg#....iccccb.................bccccccccccce..................ecc",
++"cc....................................................................mkcccc#.................#cccccccccccg..................ecc",
++"cc....................................................................iccccb..................mkcccccccccccl.................ecc",
++"cc..........................................eeeeeeeeeiiiiiiiiiaga....mkcccc#...................icccccccccccd.................ecc",
++"cc.....leeeeeeee#iiiiiiiinggggggggjccccccccccccccccccccccccccccci....iccccb....................lccccccccccccm................ecc",
++"cc....meeeeeeee#iiiiiiiiigggggggggkcccccccccccccccccccccccccccckm...mkcccc#.....................dccccccccccci................ecc",
++"cc.........................................leeeeeeeeoiiiiiiiiiah....iccccb......................lccccccccccck................ecc",
++"cc.................................................................mkcccc#.......................gccccccccccc#...............ecc",
++"cc.................................................................dccccj........................ecccccccccccj...............ecc",
++"cc..........................................leeeeeeeeeiiiiiiih....lccccce.........................bccccccccccce..............ecc",
++"cc....meeeeeeeeeiiiiiiiiidgggggggggcccccccccccccccccccccccccci....dccccg..........................#ccccccccccca..............ecc",
++"cc.....feeeeeeeeiiiiiiiinggggggggbcccccccccccccccccccccccccckm...lccccce...........................kcccccccccccl.............ecc",
++"cc........................................leeeeeeeehiiiiiiiih....dccccg............................ncccccccccccd.............ecc",
++"cc..............................................................lccccce............................fccccccccccccf............ecc",
++"cc..............................................................dccccb..............................jcccccccccccg............ecc",
++"cc.........................................meeeeeeeeoiiiiil....lcccccn..............................icccccccccccce...........ecc",
++"cc......feeeeeeeehiiiiiiiigggggggggccccccccccccccccjgggggo.....gccccc#..............................eccccccccccccbm..........ecc",
++"cc....meeeeeeeoiiiiiiiiidgggggggggccccccccccccccccc...........hcccccco...............................cccccccccccccn..........ecc",
++"cc.........................................leeeeeee..........ecccccccn..............................lcccccccccccccc#.........ecc",
++"cc..........................................................#kccccccckf.............................nccccccccccccccc#........ecc",
++"cc........................................................ldcccccccccck#m.........................lncccccccccccccccccdl......ecc",
++"cc.........................................feeeeeee....ogjcccccccccccccccggi..................oggbcccccccccccccccccccccja....ecc",
++"cc.....leeeeeeee#iiiiiiiidggggggggbcccccccccccccccc....icccccccccccccccccccg..................icccccccccccccccccccccccccc....ecc",
++"cc....meeeeeeeehiiiiiiiiaggggggggkccccccccccccccccc....icccccccccccccccccccg..................icccccccccccccccccccccccccc....ecc",
++"cc........................................feeeeeeee..........................................................................ecc",
++"cc...........................................................................................................................ecc",
++"cc...........................................................................................................................ecc",
++"cc...........................................................................................................................ecc",
++"cc...........................................................................................................................ecc",
++"cc...........................................................................................................................ecc",
++"cce..........................................................................................................................hcc",
++"ccn..........................................................................................................................acb",
++"jcb.........................................................................................................................lcca",
++"hcci........................................................................................................................acc#",
++"mkcc#......................................................................................................................dccb.",
++".occci...................................................................................................................macccf.",
++"..#cccbne.............................................................................................................menkccc#..",
++"...okccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccbe...",
++"....mhjccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccg#....."};
+
diff --git a/debian/patches/300_nxagent_set-wm-class.patch b/debian/patches/300_nxagent_set-wm-class.patch
new file mode 100644
index 0000000..765d6bc
--- /dev/null
+++ b/debian/patches/300_nxagent_set-wm-class.patch
@@ -0,0 +1,60 @@
+Description: Set WM_CLASS to X2GoAgent/NXAgent
+ Depending on the binary name of the agent either NXAgent
+ or X2GoAgent is set as WM_Class.
+ .
+ This is needed for some window managers (like the one shipped with
+ Maemo)
+ .
+ The original WM_CLASS patch has been taken from the FreeNX patch
+ series, author unknown.
+ .
+ The nxagent/x2goagent has been done by the X2Go Project, author
+ see below.
+Forwarded: not-needed
+Author: Oleksandr Shneyder <oleksandr.shneyder at obviously-nice.de>
+Last-Update: 2012-01-11
+--- a/nx-X11/programs/Xserver/hw/nxagent/Screen.c
++++ b/nx-X11/programs/Xserver/hw/nxagent/Screen.c
+@@ -1756,6 +1756,42 @@
+                   nxagentDefaultWindows[pScreen->myNum]);
+       #endif
+ 
++      /*
++       * Setting WM_CLASS to "X2GoAgent" when running in X2Go Agent mode
++       * we need it to properly display all window parameters by some WMs
++       * (for example on Maemo)
++       */
++      if(nxagentX2go)
++      {
++        #ifdef TEST
++        fprintf(stderr, "nxagentOpenScreen: Setting WM_CLASS and WM_NAME for window withid [%ld].\n",
++                nxagentDefaultWindows[pScreen->myNum]);
++        #endif
++        XClassHint hint;
++        hint.res_name=malloc(strlen("X2GoAgent")+1);
++        hint.res_class=malloc(strlen("X2GoAgent")+1);
++        strcpy(hint.res_name,"X2GoAgent");
++        strcpy(hint.res_class,"X2GoAgent");
++        XSetClassHint(nxagentDisplay,nxagentDefaultWindows[pScreen->myNum],&hint);
++        free(hint.res_name);
++        free(hint.res_class);
++      } else {
++        #ifdef TEST
++        fprintf(stderr, "nxagentOpenScreen: Setting WM_CLASS and WM_NAME for window withid [%ld].\n",
++                nxagentDefaultWindows[pScreen->myNum]);      
++        #endif
++      
++        XClassHint hint;
++        hint.res_name=malloc(strlen("NXAgent")+1);
++        hint.res_class=malloc(strlen("NXAgent")+1);
++        strcpy(hint.res_name,"NXAgent");
++        strcpy(hint.res_class,"NXAgent");
++        XSetClassHint(nxagentDisplay,nxagentDefaultWindows[pScreen->myNum],&hint);
++        free(hint.res_name);
++        free(hint.res_class);
++      }
++
++
+       if (nxagentOption(Fullscreen))
+       {
+         nxagentFullscreenWindow = nxagentDefaultWindows[pScreen->myNum];
diff --git a/debian/patches/999_nxagent_unbrand-nxagent-brand-x2goagent.patch b/debian/patches/999_nxagent_unbrand-nxagent-brand-x2goagent.patch
new file mode 100644
index 0000000..e68d51b
--- /dev/null
+++ b/debian/patches/999_nxagent_unbrand-nxagent-brand-x2goagent.patch
@@ -0,0 +1,329 @@
+Description: Unbrand NX Agent Startup Screen / Brand X2Go Agent Startup Screen
+ When launched with NX Agent flavour, the startup screen gets unbranded by
+ this patch (the !M logo does not get shown).
+ .
+ When launched with X2Go Agent flavour, the startup screen gets branded
+ with the X2GO logo.
+Forwarded: not-needed
+Author: Oleksandr Shneyder <oleksandr.shneyder at obviously-nice.de>
+Last-Update: 2012-01-11
+--- a/nx-X11/programs/Xserver/hw/nxagent/Display.c2012-01-11 10:09:05.000000000 +0100
++++ b/nx-X11/programs/Xserver/hw/nxagent/Display.c2012-01-11 14:47:51.000000000 +0100
+@@ -1407,6 +1408,7 @@ FIXME: Use of nxagentParentWindow is str
+     nxagentLogoBlack = 0x000000;
+     nxagentLogoRed   = 0xff0000;
+     nxagentLogoWhite = 0xffffff;
++    nxagentLogoGray  = 0x222222;
+   }
+   else
+   {
+@@ -1417,6 +1419,7 @@ FIXME: Use of nxagentParentWindow is str
+     nxagentLogoRed   = nxagentLogoColor(0xff0000);
+     nxagentLogoBlack = nxagentLogoColor(0x000000);
+     nxagentLogoWhite = 0xffffff;
++    nxagentLogoGray  = nxagentLogoColor(0x222222);
+   }
+ 
+   #ifdef WATCH
+@@ -2660,6 +2680,7 @@ Bool nxagentReconnectDisplay(void *p0)
+     nxagentLogoBlack = 0x000000;
+     nxagentLogoRed   = 0xff0000;
+     nxagentLogoWhite = 0xffffff;
++    nxagentLogoGray  = 0x222222;
+   }
+   else
+   {
+@@ -2670,6 +2691,7 @@ Bool nxagentReconnectDisplay(void *p0)
+     nxagentLogoRed   = nxagentLogoColor(0xff0000);
+     nxagentLogoBlack = nxagentLogoColor(0x000000);
+     nxagentLogoWhite = 0xffffff;
++    nxagentLogoGray  = nxagentLogoColor(0x222222);
+   }
+ 
+   useXpmIcon = nxagentMakeIcon(nxagentDisplay, &nxagentIconPixmap, &nxagentIconShape);
+--- a/nx-X11/programs/Xserver/hw/nxagent/Splash.c	2012-01-11 10:09:05.000000000 +0100
++++ b/nx-X11/programs/Xserver/hw/nxagent/Splash.c	2012-01-11 15:03:39.000000000 +0100
+@@ -35,6 +35,7 @@
+ #include "Windows.h"
+ #include "Atoms.h"
+ #include "Trap.h"
++#include "Init.h"
+ 
+ /*
+  * Set here the required log level.
+@@ -53,6 +54,7 @@ int nxagentLogoDepth;
+ int nxagentLogoWhite;
+ int nxagentLogoRed;
+ int nxagentLogoBlack;
++int nxagentLogoGray;
+ 
+ void nxagentPaintLogo(Window win, GC gc, int scale, int width, int height);
+ 
+@@ -166,6 +168,15 @@ void nxagentPaintLogo(Window win, GC gc,
+   XPoint    m[12];
+   int w, h, c, w2, h2;
+ 
++  /*
++   * Show only X2GO Logo when running as X2Go Agent
++   */
++   if(! nxagentX2go)
++   {
++     nxagentPixmapLogo = 0L;
++     return;
++   }
++
+   #ifdef DEBUG
+   fprintf(stderr, "nxagenShowtLogo: Got called.\n");
+   #endif
+@@ -218,75 +229,146 @@ void nxagentPaintLogo(Window win, GC gc,
+   XSetForeground(nxagentDisplay, gc, nxagentLogoRed);
+   XSetBackground(nxagentDisplay, gc, nxagentLogoWhite);
+ 
+-  rect[0].x = w2-10*c;               rect[0].y = h2-8*c;
+-  rect[1].x = w2-10*c;               rect[1].y = h2+8*c;
+-  rect[2].x = w2+10*c;               rect[2].y = h2+8*c;
+-  rect[3].x = w2+10*c;               rect[3].y = h2-8*c;
++  /*
++   * Draw X2GO Logo
++   */
+ 
++  /*
++   * Begin 'X'.
++   */
++
++  XSetForeground(nxagentDisplay, gc, nxagentLogoGray);
++  XSetBackground(nxagentDisplay, gc, nxagentLogoWhite);
++  rect[0].x = w2-7*c;               rect[0].y = h2-5*c;
++  rect[1].x = w2-8*c;               rect[1].y = h2-5*c;
++  rect[2].x = w2-4*c;               rect[2].y = h2+3*c;
++  rect[3].x = w2-3*c;               rect[3].y = h2+3*c;
+   XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin);
+ 
+-  #ifdef NXAGENT_LOGO_DEBUG
+-  fprintf(stderr, "filled red rect\n");
+-  #endif
++  rect[0].x = w2-4*c;               rect[0].y = h2-5*c;
++  rect[1].x = w2-3*c;               rect[1].y = h2-5*c;
++  rect[2].x = w2-7*c;               rect[2].y = h2+3*c;
++  rect[3].x = w2-8*c;               rect[3].y = h2+3*c;
++  XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin);
+ 
+-  rect[0].x = w2-9*c;               rect[0].y = h2-7*c;
+-  rect[1].x = w2-9*c;               rect[1].y = h2+7*c;
+-  rect[2].x = w2+9*c;               rect[2].y = h2+7*c;
+-  rect[3].x = w2+9*c;               rect[3].y = h2-7*c;
++  /*
++   * End 'X'.
++   */
+ 
+-  XSetForeground(nxagentDisplay, gc, nxagentLogoWhite);
+-  XSetBackground(nxagentDisplay, gc, nxagentLogoRed);
++  /*
++   * Start '2'.
++   */
++
++  rect[0].x = w2-2*c;               rect[0].y = h2-5*c;
++  rect[1].x = w2-1*c;               rect[1].y = h2-5*c;
++  rect[2].x = w2-1*c;               rect[2].y = h2-3*c;
++  rect[3].x = w2-2*c;               rect[3].y = h2-3*c;
++  XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin);
++
++  rect[0].x = w2-2*c;               rect[0].y = h2-5*c;
++  rect[1].x = w2+2*c;               rect[1].y = h2-5*c;
++  rect[2].x = w2+2*c;               rect[2].y = h2-4*c;
++  rect[3].x = w2-2*c;               rect[3].y = h2-4*c;
++  XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin);
+ 
++  rect[0].x = w2+1*c;               rect[0].y = h2-5*c;
++  rect[1].x = w2+2*c;               rect[1].y = h2-5*c;
++  rect[2].x = w2+2*c;               rect[2].y = h2-2*c;
++  rect[3].x = w2+1*c;               rect[3].y = h2-2*c;
+   XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin);
+ 
++  rect[0].x = w2+2*c;               rect[0].y = h2-2*c;
++  rect[1].x = w2+1*c;               rect[1].y = h2-2*c;
++  rect[2].x = w2-2*c;               rect[2].y = h2+2*c;
++  rect[3].x = w2-1*c;               rect[3].y = h2+2*c;
++  XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin);
++
++
++  rect[0].x = w2-2*c;               rect[0].y = h2+2*c;
++  rect[1].x = w2+2*c;               rect[1].y = h2+2*c;
++  rect[2].x = w2+2*c;               rect[2].y = h2+3*c;
++  rect[3].x = w2-2*c;               rect[3].y = h2+3*c;
++  XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin);
+   /*
+-   * Begin 'M'.
++   * End '2'.
+    */
+ 
+-  m[0].x = w2-3*c;  m[0].y = h2-5*c;
+-  m[1].x = w2+7*c;  m[1].y = h2-5*c;
+-  m[2].x = w2+7*c;  m[2].y = h2+5*c;
+-  m[3].x = w2+5*c;  m[3].y = h2+5*c;
+-  m[4].x = w2+5*c;  m[4].y = h2-3*c;
+-  m[5].x = w2+3*c;  m[5].y = h2-3*c;
+-  m[6].x = w2+3*c;  m[6].y = h2+5*c;
+-  m[7].x = w2+1*c;  m[7].y = h2+5*c;
+-  m[8].x = w2+1*c;  m[8].y = h2-3*c;
+-  m[9].x = w2-1*c;  m[9].y = h2-3*c;
+-  m[10].x = w2-1*c; m[10].y = h2+5*c;
+-  m[11].x = w2-3*c; m[11].y = h2+5*c;
++  /*
++   * Start 'G'.
++   */
+ 
+-  XSetForeground(nxagentDisplay, gc, nxagentLogoRed);
+-  XSetBackground(nxagentDisplay, gc, nxagentLogoWhite);
++  rect[0].x = w2+3*c;               rect[0].y = h2-5*c;
++  rect[1].x = w2+7*c;               rect[1].y = h2-5*c;
++  rect[2].x = w2+7*c;               rect[2].y = h2-4*c;
++  rect[3].x = w2+3*c;               rect[3].y = h2-4*c;
++  XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin);
+ 
+-  XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, m, 12, Nonconvex, CoordModeOrigin);
++  rect[0].x = w2+3*c;               rect[0].y = h2-5*c;
++  rect[1].x = w2+4*c;               rect[1].y = h2-5*c;
++  rect[2].x = w2+4*c;               rect[2].y = h2+3*c;
++  rect[3].x = w2+3*c;               rect[3].y = h2+3*c;
++  XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin);
+ 
++  rect[0].x = w2+3*c;               rect[0].y = h2+2*c;
++  rect[1].x = w2+7*c;               rect[1].y = h2+2*c;
++  rect[2].x = w2+7*c;               rect[2].y = h2+3*c;
++  rect[3].x = w2+3*c;               rect[3].y = h2+3*c;
++  XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin);
++
++  rect[0].x = w2+6*c;               rect[0].y = h2-5*c;
++  rect[1].x = w2+7*c;               rect[1].y = h2-5*c;
++  rect[2].x = w2+7*c;               rect[2].y = h2-3*c;
++  rect[3].x = w2+6*c;               rect[3].y = h2-3*c;
++  XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin);
++
++  rect[0].x = w2+6*c;               rect[0].y = h2-0*c;
++  rect[1].x = w2+7*c;               rect[1].y = h2-0*c;
++  rect[2].x = w2+7*c;               rect[2].y = h2+3*c;
++  rect[3].x = w2+6*c;               rect[3].y = h2+3*c;
++  XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin);
++
++  rect[0].x = w2+5*c;               rect[0].y = h2-1*c;
++  rect[1].x = w2+7*c;               rect[1].y = h2-1*c;
++  rect[2].x = w2+7*c;               rect[2].y = h2+0*c;
++  rect[3].x = w2+5*c;               rect[3].y = h2+0*c;
++  XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin);
+   /*
+-   * End 'M'.
++   * End 'G'.
+    */
+ 
+   /*
+-   * Begin '!'.
++   * Start 'O'.
+    */
+ 
+-  rect[0].x = w2-7*c;               rect[0].y = h2-5*c;
+-  rect[1].x = w2-5*c;               rect[1].y = h2-5*c;
+-  rect[2].x = w2-5*c;               rect[2].y = h2+2*c;
+-  rect[3].x = w2-7*c;               rect[3].y = h2+2*c;
++  rect[0].x = w2+8*c;               rect[0].y = h2-5*c;
++  rect[1].x = w2+12*c;              rect[1].y = h2-5*c;
++  rect[2].x = w2+12*c;              rect[2].y = h2-4*c;
++  rect[3].x = w2+8*c;               rect[3].y = h2-4*c;
++  XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin);
+ 
++  rect[0].x = w2+8*c;               rect[0].y = h2+3*c;
++  rect[1].x = w2+12*c;              rect[1].y = h2+3*c;
++  rect[2].x = w2+12*c;              rect[2].y = h2+2*c;
++  rect[3].x = w2+8*c;               rect[3].y = h2+2*c;
+   XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin);
+ 
+-  rect[0].x = w2-7*c;               rect[0].y = h2+3*c;
+-  rect[1].x = w2-5*c;               rect[1].y = h2+3*c;
+-  rect[2].x = w2-5*c;               rect[2].y = h2+5*c;
+-  rect[3].x = w2-7*c;               rect[3].y = h2+5*c;
++  rect[0].x = w2+8*c;               rect[0].y = h2-5*c;
++  rect[1].x = w2+9*c;               rect[1].y = h2-5*c;
++  rect[2].x = w2+9*c;               rect[2].y = h2+3*c;
++  rect[3].x = w2+8*c;               rect[3].y = h2+3*c;
++  XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin);
+ 
++  rect[0].x = w2+11*c;               rect[0].y = h2-5*c;
++  rect[1].x = w2+12*c;               rect[1].y = h2-5*c;
++  rect[2].x = w2+12*c;               rect[2].y = h2+3*c;
++  rect[3].x = w2+11*c;               rect[3].y = h2+3*c;
+   XFillPolygon(nxagentDisplay, nxagentPixmapLogo, gc, rect, 4, Convex, CoordModeOrigin);
+ 
+   /*
+-   * End 'M'.
++   * End 'O'.
+    */
+ 
++
+   XSetWindowBackgroundPixmap(nxagentDisplay, win, nxagentPixmapLogo);
+ 
+   #ifdef NXAGENT_LOGO_DEBUG
+--- a/nx-X11/programs/Xserver/hw/nxagent/Splash.h	2012-01-11 10:09:05.000000000 +0100
++++ b/nx-X11/programs/Xserver/hw/nxagent/Splash.h	2012-01-11 14:48:05.000000000 +0100
+@@ -33,6 +33,7 @@ extern int nxagentLogoDepth;
+ extern int nxagentLogoWhite;
+ extern int nxagentLogoRed;
+ extern int nxagentLogoBlack;
++extern int nxagentLogoGray;
+ 
+ extern Window nxagentSplashWindow;
+
+--- a/nx-X11/programs/Xserver/hw/nxagent/Screen.c
++++ b/nx-X11/programs/Xserver/hw/nxagent/Screen.c
+@@ -1754,7 +1754,20 @@
+       #ifdef TEST
+       fprintf(stderr, "nxagentOpenScreen: Created new default window with id [%ld].\n",
+                   nxagentDefaultWindows[pScreen->myNum]);
++      
++      fprintf(stderr, "nxagentOpenScreen: Setting WM_CLASS and WM_NAME for window withid [%ld].\n",
++                  nxagentDefaultWindows[pScreen->myNum]);      
+       #endif
++      
++      XClassHint hint;
++      hint.res_name=malloc(strlen(HINT)+1);
++      hint.res_class=malloc(strlen(HINT)+1);
++      strcpy(hint.res_name,HINT);
++      strcpy(hint.res_class,HINT);
++      XSetClassHint(nxagentDisplay,nxagentDefaultWindows[pScreen->myNum],&hint);
++      free(hint.res_name);
++      free(hint.res_class);
++      
+ 
+       if (nxagentOption(Fullscreen))
+       {
+--- a/nx-X11/programs/Xserver/hw/nxagent/Screen.h
++++ b/nx-X11/programs/Xserver/hw/nxagent/Screen.h
+@@ -36,6 +36,8 @@
+ #define MIN_NXAGENT_HEIGHT 60
+ #define NXAGENT_FRAME_WIDTH 2000
+ 
++#define HINT "NXAgent"
++
+ #define nxagentSetPrintGeometry(screen) \
+     nxagentPrintGeometryFlags = (1 << (screen));
+     
+--- a/nx-X11/programs/Xserver/hw/nxagent/Splash.c
++++ b/nx-X11/programs/Xserver/hw/nxagent/Splash.c
+@@ -204,6 +204,7 @@
+ 
+   nxagentPixmapLogo = XCreatePixmap(nxagentDisplay, win, width, height, nxagentLogoDepth);
+ 
++  return;
+   if (!nxagentPixmapLogo)
+   {
+     return;
+--- a/nx-X11/programs/Xserver/hw/nxagent/Display.c
++++ b/nx-X11/programs/Xserver/hw/nxagent/Display.c
+@@ -1919,7 +1919,7 @@
+   XlibPixmap IconPixmap;
+   XlibPixmap IconShape;
+ 
+-  snprintf(default_path, PATH_MAX-1, "/usr/NX/share/images/%s", NXAGENT_ICON_NAME);
++  snprintf(default_path, PATH_MAX-1, "/usr/share/pixmaps/%s", NXAGENT_ICON_NAME);
+ 
+   if ((icon_fp = fopen(default_path, "r")) == NULL)
+   {


hooks/post-receive
-- 
nx-libs.git (NX (redistributed))

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "nx-libs.git" (NX (redistributed)).




More information about the x2go-commits mailing list