From 405bc8f259f230947e5fe8341f0bab8f0f88c678 Mon Sep 17 00:00:00 2001 From: Mike Gabriel Date: Wed, 11 Jan 2012 16:17:51 +0100 Subject: 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 --- ...9_nxagent_unbrand-nxagent-brand-x2goagent.patch | 329 +++++++++++++++++++++ 1 file changed, 329 insertions(+) create mode 100644 debian/patches/999_nxagent_unbrand-nxagent-brand-x2goagent.patch (limited to 'debian/patches/999_nxagent_unbrand-nxagent-brand-x2goagent.patch') 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 000000000..e68d51b44 --- /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 +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) + { -- cgit v1.2.3