File rdesktop-add-icon.patch of Package rdesktop
diff -Npur rdesktop-1.6.0.old/Makefile.in rdesktop-1.6.0.new/Makefile.in
--- rdesktop-1.6.0.old/Makefile.in 2010-02-26 14:47:06.000000000 +0800
+++ rdesktop-1.6.0.new/Makefile.in 2010-02-26 15:35:48.000000000 +0800
@@ -13,10 +13,11 @@ datadir = @datadir@
VERSION = @PACKAGE_VERSION@
KEYMAP_PATH = $(datadir)/rdesktop/keymaps/
+PIXMAPS_PATH = $(datadir)/rdesktop/pixmaps/
CC = @CC@
INSTALL = @INSTALL@
-CFLAGS = @CFLAGS@ @X_CFLAGS@ @DEFS@ -DKEYMAP_PATH=\"$(KEYMAP_PATH)\"
+CFLAGS = @CFLAGS@ @X_CFLAGS@ @DEFS@ -DKEYMAP_PATH=\"$(KEYMAP_PATH)\" -DPIXMAPS_PATH=\"$(PIXMAPS_PATH)\"
LDFLAGS = @LDFLAGS@ @LIBS@ @X_LIBS@ @X_EXTRA_LIBS@
STRIP = @STRIP@
@@ -35,7 +36,7 @@ VNCOBJ = vnc/rdp2vnc.o vnc/vnc.o vnc/x
all: $(TARGETS)
rdesktop: $(X11OBJ) $(SOUNDOBJ) $(RDPOBJ) $(SCARDOBJ)
- $(CC) $(CFLAGS) -o rdesktop $(X11OBJ) $(SOUNDOBJ) $(RDPOBJ) $(SCARDOBJ) $(LDFLAGS) -lX11 -lXext
+ $(CC) $(CFLAGS) -o rdesktop $(X11OBJ) $(SOUNDOBJ) $(RDPOBJ) $(SCARDOBJ) $(LDFLAGS) -lX11 -lXext -lXpm
rdp2vnc: $(VNCOBJ) $(SOUNDOBJ) $(RDPOBJ) $(SCARDOBJ)
$(VNCLINK) $(CFLAGS) -o rdp2vnc $(VNCOBJ) $(SOUNDOBJ) $(RDPOBJ) $(SCARDOBJ) $(LDFLAGS) $(LDVNC)
diff -Npur rdesktop-1.6.0.old/xwin.c rdesktop-1.6.0.new/xwin.c
--- rdesktop-1.6.0.old/xwin.c 2010-02-26 14:47:06.000000000 +0800
+++ rdesktop-1.6.0.new/xwin.c 2010-02-26 15:41:48.000000000 +0800
@@ -24,6 +24,7 @@
#include <X11/Xproto.h>
#include <X11/Xatom.h>
#include <X11/extensions/shape.h>
+#include <X11/xpm.h>
#include <unistd.h>
#include <sys/time.h>
#include <time.h>
@@ -2056,6 +2057,9 @@ ui_create_window(void)
int wndx;
int wndy;
Atom protocols[2];
+ XWMHints *win_icon_hints;
+ Pixmap icon_pixmap, icon_mask_pixmap;
+ char rdesktop_icon [256];
wndx = 0;
wndy = 0;
@@ -2102,6 +2106,17 @@ ui_create_window(void)
XStoreName(g_display, g_wnd, g_title);
ewmh_set_wm_name(g_wnd, g_title);
+ snprintf (rdesktop_icon, 256, "%s%s", PIXMAPS_PATH, "rdesktop.xpm");
+ if (!XReadPixmapFile (g_display, g_wnd, rdesktop_icon, &icon_pixmap, &icon_mask_pixmap, NULL))
+ {
+ win_icon_hints = XAllocWMHints();
+ win_icon_hints->flags = IconPixmapHint | IconMaskHint;
+ win_icon_hints->icon_pixmap = icon_pixmap;
+ win_icon_hints->icon_mask = icon_mask_pixmap;
+ XSetWMHints(g_display, g_wnd, win_icon_hints);
+ XFree (win_icon_hints);
+ }
+
if (g_hide_decorations)
mwm_hide_decorations(g_wnd);