--- wmctrl-1.07.orig/wmctrl.1 +++ wmctrl-1.07/wmctrl.1 @@ -185,7 +185,10 @@ .BI \-t " " Move a window that has been specified with the .B \-r -action to the desktop \fI\fR. +action to the desktop \fI\fR. Specifying \fI\fR as '-1' +sends the window to the current desktop; '-2' sends the window to +all desktops if that is supported. + .TP .BI \-T " name" --- wmctrl-1.07.orig/debian/rules +++ wmctrl-1.07/debian/rules @@ -0,0 +1,91 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + + +# These are used for cross-compiling and for saving the configure script +# from having to guess our platform (since we know it already) +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) + + +CFLAGS = -Wall -g + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 +else + CFLAGS += -O2 +endif + +config.status: configure + dh_testdir + # Add here commands to configure the package. + CFLAGS="$(CFLAGS)" ./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info + + +build: build-stamp + +build-stamp: config.status + dh_testdir + + # Add here commands to compile the package. + $(MAKE) + + touch build-stamp + +clean: + dh_testdir + dh_testroot + rm -f build-stamp + + # Add here commands to clean up after the build process. + -$(MAKE) distclean + + dh_clean + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + # Add here commands to install the package into debian/wmctrl. + $(MAKE) install DESTDIR=$(CURDIR)/debian/wmctrl + + +# Build architecture-independent files here. +binary-indep: build install +# We have nothing to do by default. + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_installchangelogs ChangeLog + dh_installdocs + dh_installexamples +# dh_install +# dh_installmenu +# dh_installlogrotate +# dh_installinit +# dh_installinfo + dh_link + dh_strip + dh_compress + dh_fixperms +# dh_makeshlibs + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install --- wmctrl-1.07.orig/debian/patches/10-send-to-all-desktops.patch +++ wmctrl-1.07/debian/patches/10-send-to-all-desktops.patch @@ -0,0 +1,27 @@ +--- wmctrl-1.07/main.c 2008-10-07 11:21:53.000000000 +0200 ++++ wmctrl-1.07/main.c 2008-10-07 11:25:34.000000000 +0200 +@@ -694,6 +694,10 @@ + } + desktop = *cur_desktop; + } ++ /* make -2 a shortcut for sending the window to all desktops */ ++ else if (desktop == -2) { ++ desktop = -1; ++ } + g_free(cur_desktop); + + return client_msg(disp, win, "_NET_WM_DESKTOP", (unsigned long)desktop, +--- wmctrl-1.07/wmctrl.1 2005-01-03 20:42:52.000000000 +0200 ++++ wmctrl-1.07/wmctrl.1 2008-10-07 11:32:22.000000000 +0200 +@@ -185,7 +185,10 @@ + .BI \-t " " + Move a window that has been specified with the + .B \-r +-action to the desktop \fI\fR. ++action to the desktop \fI\fR. Specifying \fI\fR as '-1' ++sends the window to the current desktop; '-2' sends the window to ++all desktops if that is supported. ++ + + .TP + .BI \-T " name" --- wmctrl-1.07.orig/debian/copyright +++ wmctrl-1.07/debian/copyright @@ -0,0 +1,15 @@ +This package was debianized by Shyamal Prasad on +Thu, 12 Dec 2004 18:59:40 -0800. + +It was downloaded from http://sweb.cz/tripie/utils/wmctrl/ + +Upstream Author: Tomas Styblo + +Copyright (C) 2003, Tomas Styblo + +You are free to distribute this software under the terms of the GNU +General Public License. + +On Debian systems, the complete text of the GNU General Public License +can be found in the file `/usr/share/common-licenses/GPL'. + --- wmctrl-1.07.orig/debian/control +++ wmctrl-1.07/debian/control @@ -0,0 +1,20 @@ +Source: wmctrl +Section: x11 +Priority: optional +Maintainer: Decklin Foster +Build-Depends: debhelper (>= 4.0.0), x11proto-core-dev, libx11-dev, libxmu-dev, libglib2.0-dev (>= 2.4.0) +Standards-Version: 3.6.2 + +Package: wmctrl +Architecture: any +Depends: ${shlibs:Depends} +Description: control an EWMH/NetWM compatible X Window Manager + Wmctrl is a command line tool to interact with an + EWMH/NetWM compatible X Window Manager (examples include + Enlightenment, icewm, kwin, metacity, and sawfish). + . + Wmctrl provides command line access to almost all the features + defined in the EWMH specification. For example it can maximize + windows, make them sticky, set them to be always on top. It can + switch and resize desktops and perform many other useful + operations. --- wmctrl-1.07.orig/debian/wmctrl.docs +++ wmctrl-1.07/debian/wmctrl.docs @@ -0,0 +1 @@ +README --- wmctrl-1.07.orig/debian/changelog +++ wmctrl-1.07/debian/changelog @@ -0,0 +1,81 @@ +wmctrl (1.07-6ppa2) hardy; urgency=low + + * Documented support for sending a window to all desktops + + -- David Fraser Tue, 7 Oct 2008 11:30:00 +0200 + +wmctrl (1.07-6ppa1) hardy; urgency=low + + * Added support for sending a window to all desktops + + -- David Fraser Tue, 7 Oct 2008 11:22:00 +0200 + +wmctrl (1.07-6) unstable; urgency=low + + * Reverted CARD32 patch, which was broken on amd64; use fix from Chris + Donoghue instead. (Closes: #362068) + * Change x-dev -> x11proto-core-dev build-dep. + + -- Decklin Foster Tue, 18 Apr 2006 10:20:00 -0400 + +wmctrl (1.07-5) unstable; urgency=low + + * Not all the new build-deps from -2 were actually added to debian/control. + (Closes: #345816) + + -- Decklin Foster Tue, 3 Jan 2006 14:26:57 -0500 + +wmctrl (1.07-4) unstable; urgency=low + + * Get rid of huge mess in .diff.gz caused by vim's braindead folding. + + -- Decklin Foster Mon, 2 Jan 2006 23:27:14 -0500 + +wmctrl (1.07-3) unstable; urgency=low + + * Fix typo in description (Closes: #345576) + + -- Decklin Foster Mon, 2 Jan 2006 22:53:30 -0500 + +wmctrl (1.07-2) unstable; urgency=low + + * Patch main.c to use CARD32 for all EWMH properties instead of unsigned + long, which may be 64 bits on 64-bit archs. (Closes: #344080) + * Replace xlibs-dev build-dep with libx11-dev, x-dev, libxmu-dev. + * Update Standards-Version to 3.6.2. + + -- Decklin Foster Mon, 2 Jan 2006 22:34:27 -0500 + +wmctrl (1.07-1) unstable; urgency=low + + * New upstream release + + -- Decklin Foster Sat, 29 Jan 2005 09:45:14 -0500 + +wmctrl (1.06-1) unstable; urgency=low + + * New upstream release + - debian/wmctrl.1: merged upstream. + * debian/watch: added trailing / to directory (Thanks, Shyamal). + * debian/control: lowercase first letter of description. + + -- Decklin Foster Sat, 22 Jan 2005 14:04:09 -0500 + +wmctrl (1.05-2) unstable; urgency=low + + * Adopting package created by Debian user Shyamal Prasad + . + * Removed debian/{pre,post}{inst,rm}.ex and config.{sub,guess}, and do not + generate config.{sub,guess} in clean. + * Removed example cruft in copyright and watch. + * Install ChangeLog as the upstream changelog, not a doc. Do not install + NEWS, since it is empty. + + -- Decklin Foster Mon, 13 Dec 2004 10:41:11 -0500 + +wmctrl (1.05-1) unstable; urgency=low + + * Initial Release. Added man page wmctrl.1 (closes: #285397) + + -- Shyamal Prasad Thu, 12 Dec 2004 18:59:40 -0800 + --- wmctrl-1.07.orig/debian/compat +++ wmctrl-1.07/debian/compat @@ -0,0 +1 @@ +4 --- wmctrl-1.07.orig/debian/watch +++ wmctrl-1.07/debian/watch @@ -0,0 +1,2 @@ +version=2 +http://sweb.cz/tripie/utils/wmctrl/dist/ wmctrl-(.*)\.tar\.gz debian uupdate --- wmctrl-1.07.orig/main.c +++ wmctrl-1.07/main.c @@ -694,6 +694,10 @@ } desktop = *cur_desktop; } + /* make -2 a shortcut for sending the window to all desktops */ + else if (desktop == -2) { + desktop = -1; + } g_free(cur_desktop); return client_msg(disp, win, "_NET_WM_DESKTOP", (unsigned long)desktop, @@ -1425,6 +1429,16 @@ * * long_length = Specifies the length in 32-bit multiples of the * data to be retrieved. + * + * NOTE: see + * http://mail.gnome.org/archives/wm-spec-list/2003-March/msg00067.html + * In particular: + * + * When the X window system was ported to 64-bit architectures, a + * rather peculiar design decision was made. 32-bit quantities such + * as Window IDs, atoms, etc, were kept as longs in the client side + * APIs, even when long was changed to 64 bits. + * */ if (XGetWindowProperty(disp, win, xa_prop_name, 0, MAX_PROPERTY_VALUE_LEN / 4, False, xa_prop_type, &xa_ret_type, &ret_format, @@ -1441,6 +1455,8 @@ /* null terminate the result to make string handling easier */ tmp_size = (ret_format / 8) * ret_nitems; + /* Correct 64 Architecture implementation of 32 bit data */ + if(ret_format==32) tmp_size *= sizeof(long)/4; ret = g_malloc(tmp_size + 1); memcpy(ret, ret_prop, tmp_size); ret[tmp_size] = '\0'; --- wmctrl-1.07.orig/BAH +++ wmctrl-1.07/BAH @@ -0,0 +1,172 @@ +--- wmctrl-1.07.orig/main.c ++++ wmctrl-1.07/main.c +@@ -31,6 +31,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -477,8 +478,8 @@ + Window *sup_window = NULL; + gchar *wm_name = NULL; + gchar *wm_class = NULL; +- unsigned long *wm_pid = NULL; +- unsigned long *showing_desktop = NULL; ++ CARD32 *wm_pid = NULL; ++ CARD32 *showing_desktop = NULL; + gboolean name_is_utf8 = TRUE; + gchar *name_out; + gchar *class_out; +@@ -517,13 +518,13 @@ + + + /* WM_PID */ +- if (! (wm_pid = (unsigned long *)get_property(disp, *sup_window, ++ if (! (wm_pid = (CARD32 *)get_property(disp, *sup_window, + XA_CARDINAL, "_NET_WM_PID", NULL))) { + p_verbose("Cannot get pid of the window manager (_NET_WM_PID).\n"); + } + + /* _NET_SHOWING_DESKTOP */ +- if (! (showing_desktop = (unsigned long *)get_property(disp, DefaultRootWindow(disp), ++ if (! (showing_desktop = (CARD32 *)get_property(disp, DefaultRootWindow(disp), + XA_CARDINAL, "_NET_SHOWING_DESKTOP", NULL))) { + p_verbose("Cannot get the _NET_SHOWING_DESKTOP property.\n"); + } +@@ -678,13 +679,13 @@ + }/*}}}*/ + + static int window_to_desktop (Display *disp, Window win, int desktop) {/*{{{*/ +- unsigned long *cur_desktop = NULL; ++ CARD32 *cur_desktop = NULL; + Window root = DefaultRootWindow(disp); + + if (desktop == -1) { +- if (! (cur_desktop = (unsigned long *)get_property(disp, root, ++ if (! (cur_desktop = (CARD32 *)get_property(disp, root, + XA_CARDINAL, "_NET_CURRENT_DESKTOP", NULL))) { +- if (! (cur_desktop = (unsigned long *)get_property(disp, root, ++ if (! (cur_desktop = (CARD32 *)get_property(disp, root, + XA_CARDINAL, "_WIN_WORKSPACE", NULL))) { + fputs("Cannot get current desktop properties. " + "(_NET_CURRENT_DESKTOP or _WIN_WORKSPACE property)" +@@ -702,12 +703,12 @@ + + static int activate_window (Display *disp, Window win, /* {{{ */ + gboolean switch_desktop) { +- unsigned long *desktop; ++ CARD32 *desktop; + + /* desktop ID */ +- if ((desktop = (unsigned long *)get_property(disp, win, ++ if ((desktop = (CARD32 *)get_property(disp, win, + XA_CARDINAL, "_NET_WM_DESKTOP", NULL)) == NULL) { +- if ((desktop = (unsigned long *)get_property(disp, win, ++ if ((desktop = (CARD32 *)get_property(disp, win, + XA_CARDINAL, "_WIN_WORKSPACE", NULL)) == NULL) { + p_verbose("Cannot find desktop ID of the window.\n"); + } +@@ -1016,16 +1017,16 @@ + }/*}}}*/ + + static int list_desktops (Display *disp) {/*{{{*/ +- unsigned long *num_desktops = NULL; +- unsigned long *cur_desktop = NULL; ++ CARD32 *num_desktops = NULL; ++ CARD32 *cur_desktop = NULL; + unsigned long desktop_list_size = 0; +- unsigned long *desktop_geometry = NULL; ++ CARD32 *desktop_geometry = NULL; + unsigned long desktop_geometry_size = 0; + gchar **desktop_geometry_str = NULL; +- unsigned long *desktop_viewport = NULL; ++ CARD32 *desktop_viewport = NULL; + unsigned long desktop_viewport_size = 0; + gchar **desktop_viewport_str = NULL; +- unsigned long *desktop_workarea = NULL; ++ CARD32 *desktop_workarea = NULL; + unsigned long desktop_workarea_size = 0; + gchar **desktop_workarea_str = NULL; + gchar *list = NULL; +@@ -1036,9 +1037,9 @@ + gchar **names = NULL; + gboolean names_are_utf8 = TRUE; + +- if (! (num_desktops = (unsigned long *)get_property(disp, root, ++ if (! (num_desktops = (CARD32 *)get_property(disp, root, + XA_CARDINAL, "_NET_NUMBER_OF_DESKTOPS", NULL))) { +- if (! (num_desktops = (unsigned long *)get_property(disp, root, ++ if (! (num_desktops = (CARD32 *)get_property(disp, root, + XA_CARDINAL, "_WIN_WORKSPACE_COUNT", NULL))) { + fputs("Cannot get number of desktops properties. " + "(_NET_NUMBER_OF_DESKTOPS or _WIN_WORKSPACE_COUNT)" +@@ -1047,9 +1048,9 @@ + } + } + +- if (! (cur_desktop = (unsigned long *)get_property(disp, root, ++ if (! (cur_desktop = (CARD32 *)get_property(disp, root, + XA_CARDINAL, "_NET_CURRENT_DESKTOP", NULL))) { +- if (! (cur_desktop = (unsigned long *)get_property(disp, root, ++ if (! (cur_desktop = (CARD32 *)get_property(disp, root, + XA_CARDINAL, "_WIN_WORKSPACE", NULL))) { + fputs("Cannot get current desktop properties. " + "(_NET_CURRENT_DESKTOP or _WIN_WORKSPACE property)" +@@ -1074,21 +1075,21 @@ + } + + /* common size of all desktops */ +- if (! (desktop_geometry = (unsigned long *)get_property(disp, DefaultRootWindow(disp), ++ if (! (desktop_geometry = (CARD32 *)get_property(disp, DefaultRootWindow(disp), + XA_CARDINAL, "_NET_DESKTOP_GEOMETRY", &desktop_geometry_size))) { + p_verbose("Cannot get common size of all desktops (_NET_DESKTOP_GEOMETRY).\n"); + } + + /* desktop viewport */ +- if (! (desktop_viewport = (unsigned long *)get_property(disp, DefaultRootWindow(disp), ++ if (! (desktop_viewport = (CARD32 *)get_property(disp, DefaultRootWindow(disp), + XA_CARDINAL, "_NET_DESKTOP_VIEWPORT", &desktop_viewport_size))) { + p_verbose("Cannot get common size of all desktops (_NET_DESKTOP_VIEWPORT).\n"); + } + + /* desktop workarea */ +- if (! (desktop_workarea = (unsigned long *)get_property(disp, DefaultRootWindow(disp), ++ if (! (desktop_workarea = (CARD32 *)get_property(disp, DefaultRootWindow(disp), + XA_CARDINAL, "_NET_WORKAREA", &desktop_workarea_size))) { +- if (! (desktop_workarea = (unsigned long *)get_property(disp, DefaultRootWindow(disp), ++ if (! (desktop_workarea = (CARD32 *)get_property(disp, DefaultRootWindow(disp), + XA_CARDINAL, "_WIN_WORKAREA", &desktop_workarea_size))) { + p_verbose("Cannot get _NET_WORKAREA property.\n"); + } +@@ -1301,16 +1302,16 @@ + gchar *title_out = get_output_str(title_utf8, TRUE); + gchar *client_machine; + gchar *class_out = get_window_class(disp, client_list[i]); /* UTF8 */ +- unsigned long *pid; +- unsigned long *desktop; ++ CARD32 *pid; ++ CARD32 *desktop; + int x, y, junkx, junky; + unsigned int wwidth, wheight, bw, depth; + Window junkroot; + + /* desktop ID */ +- if ((desktop = (unsigned long *)get_property(disp, client_list[i], ++ if ((desktop = (CARD32 *)get_property(disp, client_list[i], + XA_CARDINAL, "_NET_WM_DESKTOP", NULL)) == NULL) { +- desktop = (unsigned long *)get_property(disp, client_list[i], ++ desktop = (CARD32 *)get_property(disp, client_list[i], + XA_CARDINAL, "_WIN_WORKSPACE", NULL); + } + +@@ -1319,7 +1320,7 @@ + XA_STRING, "WM_CLIENT_MACHINE", NULL); + + /* pid */ +- pid = (unsigned long *)get_property(disp, client_list[i], ++ pid = (CARD32 *)get_property(disp, client_list[i], + XA_CARDINAL, "_NET_WM_PID", NULL); + + /* geometry */