From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Kost Subject: Re: [PATCH] gnu: Add wmctrl. Date: Tue, 09 Dec 2014 23:53:01 +0300 Message-ID: <87iohkk0k2.fsf@gmail.com> References: <87oaridzoj.fsf@gmail.com> <87y4qk27at.fsf@gnu.org> <878uiko99a.fsf@gmail.com> <87sigstns3.fsf@gnu.org> <87lhmk0yg6.fsf@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:59091) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XyRmP-0000kL-4N for guix-devel@gnu.org; Tue, 09 Dec 2014 15:53:12 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XyRmL-0006SL-AA for guix-devel@gnu.org; Tue, 09 Dec 2014 15:53:09 -0500 In-Reply-To: <87lhmk0yg6.fsf@gmail.com> (Alex Kost's message of "Sun, 07 Dec 2014 09:24:25 +0300") List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: Ludovic =?utf-8?Q?Court=C3=A8s?= Cc: guix-devel@gnu.org --=-=-= Content-Type: text/plain Just in case I'm attaching all 3 patches for adding wmctrl, scrot and unclutter to xdisorg.scm. OK to push? --=-=-= Content-Type: text/x-diff; charset=utf-8 Content-Disposition: attachment; filename=0001-gnu-Add-wmctrl.patch Content-Transfer-Encoding: quoted-printable >From e8b2d17e9fb236afad6fd11201f2784fa6b3abf7 Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Fri, 5 Dec 2014 00:22:04 +0300 Subject: [PATCH 1/3] gnu: Add wmctrl. * gnu/packages/xdisorg.scm (wmctrl): New variable. * gnu/packages/patches/wmctrl-64-fix.patch: New file. * gnu-system.am (dist_patch_DATA): Add it. --- gnu-system.am | 1 + gnu/packages/patches/wmctrl-64-fix.patch | 32 ++++++++++++++++++++++++++++ gnu/packages/xdisorg.scm | 36 ++++++++++++++++++++++++++++= ++++ 3 files changed, 69 insertions(+) create mode 100644 gnu/packages/patches/wmctrl-64-fix.patch diff --git a/gnu-system.am b/gnu-system.am index ab62510..d493245 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -446,6 +446,7 @@ dist_patch_DATA =3D \ gnu/packages/patches/util-linux-perl.patch \ gnu/packages/patches/vpnc-script.patch \ gnu/packages/patches/w3m-fix-compile.patch \ + gnu/packages/patches/wmctrl-64-fix.patch \ gnu/packages/patches/xf86-input-synaptics-glibc-2.20.patch \ gnu/packages/patches/xf86-video-openchrome-includes.patch \ gnu/packages/patches/xmodmap-asprintf.patch diff --git a/gnu/packages/patches/wmctrl-64-fix.patch b/gnu/packages/patche= s/wmctrl-64-fix.patch new file mode 100644 index 0000000..3ec1c91 --- /dev/null +++ b/gnu/packages/patches/wmctrl-64-fix.patch @@ -0,0 +1,32 @@ +Description: Correct 64 Architecture implementation of 32 bit data +Author: Chris Donoghue +Bug-Debian: http://bugs.debian.org/362068 + +--- wmctrl-1.07.orig/main.c ++++ wmctrl-1.07/main.c +@@ -1425,6 +1425,16 @@ static gchar *get_property (Display *dis + * + * long_length =3D Specifies the length in 32-bit multiples of the + * data to be retrieved. ++ * ++ * NOTE: see=20 ++ * http://mail.gnome.org/archives/wm-spec-list/2003-March/msg00067.ht= ml ++ * 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,=20=20=20=20=20 +@@ -1441,6 +1451,8 @@ static gchar *get_property (Display *dis +=20 + /* null terminate the result to make string handling easier */ + tmp_size =3D (ret_format / 8) * ret_nitems; ++ /* Correct 64 Architecture implementation of 32 bit data */ ++ if(ret_format=3D=3D32) tmp_size *=3D sizeof(long)/4; + ret =3D g_malloc(tmp_size + 1); + memcpy(ret, ret_prop, tmp_size); + ret[tmp_size] =3D '\0'; diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm index a118fd7..a46b8f8 100644 --- a/gnu/packages/xdisorg.scm +++ b/gnu/packages/xdisorg.scm @@ -2,6 +2,7 @@ ;;; Copyright =C2=A9 2013, 2014 Andreas Enge ;;; Copyright =C2=A9 2014 Mark H Weaver ;;; Copyright =C2=A9 2014 Eric Bavier +;;; Copyright =C2=A9 2014 Alex Kost ;;; ;;; This file is part of GNU Guix. ;;; @@ -27,6 +28,7 @@ #:use-module (gnu packages compression) #:use-module (gnu packages image) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages glib) #:use-module (gnu packages xorg)) =20 ;; packages outside the x.org system proper @@ -215,3 +217,37 @@ notification protocol. The reference implementation i= s mostly under an X Window System style license, and has no special dependencies.") ;; Most of the code is provided under x11 license. (license license:lgpl2.0+))) + +(define-public wmctrl + (package + (name "wmctrl") + (version "1.07") + (source (origin + (method url-fetch) + (uri (string-append + "http://tomas.styblo.name/wmctrl/dist/wmctrl-" + version ".tar.gz")) + (sha256 + (base32 + "1afclc57b9017a73mfs9w7lbdvdipmf9q0xdk116f61gnvyix2np")) + (patches (list (search-patch "wmctrl-64-fix.patch"))))) + (build-system gnu-build-system) + (arguments + '(#:configure-flags + (list (string-append "--mandir=3D" + (assoc-ref %outputs "out") + "/share/man")))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("libx11" ,libx11) + ("libxmu" ,libxmu) + ("glib" ,glib))) + (home-page "http://tomas.styblo.name/wmctrl/") + (synopsis "Command-line tool to control X window managers") + (description + "Wmctrl allows to interact with an X window manager that is compatible +with the EWMH/NetWM specification. It can query the window manager for +information, and request for certain window management actions (resize and +move windows, switch between desktops, etc.)") + (license license:gpl2+))) --=20 2.1.3 --=-=-= Content-Type: text/x-diff; charset=utf-8 Content-Disposition: attachment; filename=0002-gnu-Move-scrot-to-gnu-packages-xdisorg.patch Content-Transfer-Encoding: quoted-printable >From 70bdda7711131de3f52500ac16967c96baab42bf Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Tue, 9 Dec 2014 21:23:46 +0300 Subject: [PATCH 2/3] gnu: Move scrot to (gnu packages xdisorg). * gnu/packages/scrot.scm: Remove. (scrot) Move to... * gnu/packages/xdisorg.scm (scrot): ... here. New variable. * gnu-system.am (GNU_SYSTEM_MODULES): Remove scrot file name. --- gnu-system.am | 1 - gnu/packages/scrot.scm | 68 --------------------------------------------= ---- gnu/packages/xdisorg.scm | 43 ++++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 69 deletions(-) delete mode 100644 gnu/packages/scrot.scm diff --git a/gnu-system.am b/gnu-system.am index d493245..880e311 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -231,7 +231,6 @@ GNU_SYSTEM_MODULES =3D \ gnu/packages/scanner.scm \ gnu/packages/scheme.scm \ gnu/packages/screen.scm \ - gnu/packages/scrot.scm \ gnu/packages/sdl.scm \ gnu/packages/search.scm \ gnu/packages/serveez.scm \ diff --git a/gnu/packages/scrot.scm b/gnu/packages/scrot.scm deleted file mode 100644 index b842c2d..0000000 --- a/gnu/packages/scrot.scm +++ /dev/null @@ -1,68 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright =C2=A9 2014 Alex Kost -;;; -;;; This file is part of GNU Guix. -;;; -;;; GNU Guix is free software; you can redistribute it and/or modify it -;;; under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 3 of the License, or (at -;;; your option) any later version. -;;; -;;; GNU Guix is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Guix. If not, see . - -(define-module (gnu packages scrot) - #:use-module (guix packages) - #:use-module (guix download) - #:use-module (guix build-system gnu) - #:use-module (guix licenses) - #:use-module (gnu packages xorg) - #:use-module (gnu packages image)) - -(define-public scrot - (package - (name "scrot") - (version "0.8") - (source (origin - (method url-fetch) - (uri (string-append - "http://linuxbrit.co.uk/downloads/scrot-" - version ".tar.gz")) - (sha256 - (base32 - "1wll744rhb49lvr2zs6m93rdmiq59zm344jzqvijrdn24ksiqgb1")))) - (build-system gnu-build-system) - (arguments - ;; By default, man and doc are put in PREFIX/{man,doc} instead of - ;; PREFIX/share/{man,doc}. - '(#:configure-flags - (list (string-append "--mandir=3D" - (assoc-ref %outputs "out") - "/share/man")) - #:phases (alist-replace - 'install - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (doc (string-append out "/share/doc/scrot"))) - (mkdir-p doc) - (zero? - (system* "make" "install" - (string-append "docsdir=3D" doc))))) - %standard-phases))) - (inputs - `(("libx11" ,libx11) - ("giblib" ,giblib))) - (home-page "http://linuxbrit.co.uk/software/") - (synopsis "Command-line screen capture utility for X Window System") - (description - "Scrot allows to save a screenshot of a full screen, a window or a pa= rt -of the screen selected by mouse.") - ;; This license removes a clause about X Consortium from the original - ;; X11 license. - (license (x11-style "file://COPYING" - "See 'COPYING' in the distribution.")))) diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm index a46b8f8..fccdeb5 100644 --- a/gnu/packages/xdisorg.scm +++ b/gnu/packages/xdisorg.scm @@ -251,3 +251,46 @@ with the EWMH/NetWM specification. It can query the w= indow manager for information, and request for certain window management actions (resize and move windows, switch between desktops, etc.)") (license license:gpl2+))) + +(define-public scrot + (package + (name "scrot") + (version "0.8") + (source (origin + (method url-fetch) + (uri (string-append + "http://linuxbrit.co.uk/downloads/scrot-" + version ".tar.gz")) + (sha256 + (base32 + "1wll744rhb49lvr2zs6m93rdmiq59zm344jzqvijrdn24ksiqgb1")))) + (build-system gnu-build-system) + (arguments + ;; By default, man and doc are put in PREFIX/{man,doc} instead of + ;; PREFIX/share/{man,doc}. + '(#:configure-flags + (list (string-append "--mandir=3D" + (assoc-ref %outputs "out") + "/share/man")) + #:phases (alist-replace + 'install + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (doc (string-append out "/share/doc/scrot"))) + (mkdir-p doc) + (zero? + (system* "make" "install" + (string-append "docsdir=3D" doc))))) + %standard-phases))) + (inputs + `(("libx11" ,libx11) + ("giblib" ,giblib))) + (home-page "http://linuxbrit.co.uk/software/") + (synopsis "Command-line screen capture utility for X Window System") + (description + "Scrot allows to save a screenshot of a full screen, a window or a pa= rt +of the screen selected by mouse.") + ;; This license removes a clause about X Consortium from the original + ;; X11 license. + (license (license:x11-style "file://COPYING" + "See 'COPYING' in the distribution.")))) --=20 2.1.3 --=-=-= Content-Type: text/x-diff; charset=utf-8 Content-Disposition: attachment; filename=0003-gnu-Move-unclutter-to-gnu-packages-xdisorg.patch Content-Transfer-Encoding: quoted-printable >From 99d6d0c4600cd80df269d080df79c0d62690e798 Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Tue, 9 Dec 2014 21:42:56 +0300 Subject: [PATCH 3/3] gnu: Move unclutter to (gnu packages xdisorg). * gnu/packages/unclutter.scm: Remove. (unclutter) Move to... * gnu/packages/xdisorg.scm (unclutter): ... here. New variable. * gnu-system.am (GNU_SYSTEM_MODULES): Remove unclutter file name. --- gnu-system.am | 1 - gnu/packages/unclutter.scm | 69 ------------------------------------------= ---- gnu/packages/xdisorg.scm | 45 ++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+), 70 deletions(-) delete mode 100644 gnu/packages/unclutter.scm diff --git a/gnu-system.am b/gnu-system.am index 880e311..bfe25b3 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -252,7 +252,6 @@ GNU_SYSTEM_MODULES =3D \ gnu/packages/tmux.scm \ gnu/packages/tor.scm \ gnu/packages/tre.scm \ - gnu/packages/unclutter.scm \ gnu/packages/unrtf.scm \ gnu/packages/upnp.scm \ gnu/packages/uucp.scm \ diff --git a/gnu/packages/unclutter.scm b/gnu/packages/unclutter.scm deleted file mode 100644 index ca1f7ed..0000000 --- a/gnu/packages/unclutter.scm +++ /dev/null @@ -1,69 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright =C2=A9 2014 Alex Kost -;;; -;;; This file is part of GNU Guix. -;;; -;;; GNU Guix is free software; you can redistribute it and/or modify it -;;; under the terms of the GNU General Public License as published by -;;; the Free Software Foundation; either version 3 of the License, or (at -;;; your option) any later version. -;;; -;;; GNU Guix is distributed in the hope that it will be useful, but -;;; WITHOUT ANY WARRANTY; without even the implied warranty of -;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;;; GNU General Public License for more details. -;;; -;;; You should have received a copy of the GNU General Public License -;;; along with GNU Guix. If not, see . - -(define-module (gnu packages unclutter) - #:use-module (guix packages) - #:use-module (guix download) - #:use-module (guix build-system gnu) - #:use-module (guix licenses) - #:use-module (gnu packages xorg)) - -(define-public unclutter - (package - (name "unclutter") - (version "8") - (source (origin - (method url-fetch) - (uri (string-append - "http://ftp.x.org/contrib/utilities/unclutter-" - version ".tar.Z")) - (sha256 - (base32 - "0ahrr5z6wxqqfyihm112hnq0859zlxisrb3y5232zav58j6sfmdq")))) - (build-system gnu-build-system) - (arguments - '(#:tests? #f ; no check target - #:phases (alist-delete - 'configure - (alist-replace - 'install - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin")) - (man1 (string-append out "/share/man/man1"))) - (mkdir-p bin) - (mkdir-p man1) - (zero? - (system* "make" "install" "install.man" - (string-append "BINDIR=3D" bin) - (string-append "MANDIR=3D" man1))))) - %standard-phases)))) - (inputs `(("libx11" ,libx11))) - (home-page "http://ftp.x.org/contrib/utilities/") - (synopsis "Hide idle mouse cursor") - (description - "Unclutter is a program which runs permanently in the background of an -X11 session. It checks on the X11 pointer (cursor) position every few -seconds, and when it finds it has not moved (and no buttons are pressed -on the mouse, and the cursor is not in the root window) it creates a -small sub-window as a child of the window the cursor is in. The new -window installs a cursor of size 1x1 but a mask of all 0, i.e. an -invisible cursor. This allows you to see all the text in an xterm or -xedit, for example. The human factors crowd would agree it should make -things less distracting.") - (license public-domain))) diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm index fccdeb5..6820d01 100644 --- a/gnu/packages/xdisorg.scm +++ b/gnu/packages/xdisorg.scm @@ -294,3 +294,48 @@ of the screen selected by mouse.") ;; X11 license. (license (license:x11-style "file://COPYING" "See 'COPYING' in the distribution.")))) + +(define-public unclutter + (package + (name "unclutter") + (version "8") + (source (origin + (method url-fetch) + (uri (string-append + "http://ftp.x.org/contrib/utilities/unclutter-" + version ".tar.Z")) + (sha256 + (base32 + "0ahrr5z6wxqqfyihm112hnq0859zlxisrb3y5232zav58j6sfmdq")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f ; no check target + #:phases (alist-delete + 'configure + (alist-replace + 'install + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (man1 (string-append out "/share/man/man1"))) + (mkdir-p bin) + (mkdir-p man1) + (zero? + (system* "make" "install" "install.man" + (string-append "BINDIR=3D" bin) + (string-append "MANDIR=3D" man1))))) + %standard-phases)))) + (inputs `(("libx11" ,libx11))) + (home-page "http://ftp.x.org/contrib/utilities/") + (synopsis "Hide idle mouse cursor") + (description + "Unclutter is a program which runs permanently in the background of an +X11 session. It checks on the X11 pointer (cursor) position every few +seconds, and when it finds it has not moved (and no buttons are pressed +on the mouse, and the cursor is not in the root window) it creates a +small sub-window as a child of the window the cursor is in. The new +window installs a cursor of size 1x1 but a mask of all 0, i.e. an +invisible cursor. This allows you to see all the text in an xterm or +xedit, for example. The human factors crowd would agree it should make +things less distracting.") + (license license:public-domain))) --=20 2.1.3 --=-=-=--