gnu: Remove ".git" from "https://github/…/….git".
[jackhill/guix/guix.git] / gnu / packages / xdisorg.scm
CommitLineData
3c156c8a
JD
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
56ac2bf4 3;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
3c156c8a 4;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
9f1d33be 5;;; Copyright © 2014, 2015, 2016 Alex Kost <alezost@gmail.com>
7dc96170 6;;; Copyright © 2013, 2015, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
751f6871 7;;; Copyright © 2015, 2016 Mathieu Lirzin <mthl@gnu.org>
42f2c2b9 8;;; Copyright © 2015 Alexander I.Grafov <grafov@gmail.com>
f1f7049e 9;;; Copyright © 2015 Andy Wingo <wingo@igalia.com>
998b8c07 10;;; Copyright © 2015 xd1le <elisp.vim@gmail.com>
6645753b 11;;; Copyright © 2015 Florian Paul Schmidt <mista.tapas@gmx.net>
6f74aecd 12;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
4cbbb160 13;;; Copyright © 2016, 2018 Ricardo Wurmus <rekado@elephly.net>
acedaec7 14;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
71ca0539 15;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
6cfd1a68 16;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
22070ad1 17;;; Copyright © 2016, 2017, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
01278f16 18;;; Copyright © 2016 Petter <petter@mykolab.ch>
37447422 19;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
3c986a7d 20;;; Copyright © 2017 Nikita <nikita@n0.is>
bde974c5 21;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
f021382b 22;;; Copyright © 2017 Marek Benc <dusxmt@gmx.com>
1d752e43 23;;; Copyright © 2017 Mike Gerwitz <mtg@gnu.org>
af1e3dfe 24;;; Copyright © 2018 Thomas Sigurdsen <tonton@riseup.net>
95bf2fb6 25;;; Copyright © 2018, 2019 Rutger Helling <rhelling@mykolab.com>
d748cb5f 26;;; Copyright © 2018, 2019 Pierre Neidhardt <mail@ambrevar.xyz>
d852cf9e 27;;; Copyright © 2018 Nam Nguyen <namn@berkeley.edu>
9ba1e308 28;;; Copyright © 2019 Wiktor Żelazny <wzelazny@vurv.cz>
af96c417 29;;; Copyright © 2019 Kyle Andrews <kyle.c.andrews@gmail.com>
e552fca9 30;;; Copyright © 2019, 2020 Josh Holland <josh@inv.alid.pw>
d258d9c7 31;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
198af489 32;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net>
261d0e8e 33;;; Copyright © 2020 David Wilson <david@daviwil.com>
2a2da783 34;;; Copyright © 2020 Ivan Vilata i Balaguer <ivan@selidor.net>
cde4cb4d 35;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
51f187be 36;;; Copyright © 2020 Damien Cassou <damien@cassou.me>
79e5d150 37;;; Copyright © 2020 John Soo <jsoo1@asu.edu>
83812f34 38;;; Copyright © 2020 Boris A. Dekshteyn <boris.dekshteyn@gmail.com>
c65e2434 39;;; Copyright © 2020 Alex McGrath <amk@amk.ie>
7bbe4655 40;;; Copyright © 2020 Ivan Kozlov <kanichos@yandex.ru>
3c156c8a
JD
41;;;
42;;; This file is part of GNU Guix.
43;;;
44;;; GNU Guix is free software; you can redistribute it and/or modify it
45;;; under the terms of the GNU General Public License as published by
46;;; the Free Software Foundation; either version 3 of the License, or (at
47;;; your option) any later version.
48;;;
49;;; GNU Guix is distributed in the hope that it will be useful, but
50;;; WITHOUT ANY WARRANTY; without even the implied warranty of
51;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
52;;; GNU General Public License for more details.
53;;;
54;;; You should have received a copy of the GNU General Public License
55;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
56
57(define-module (gnu packages xdisorg)
58 #:use-module ((guix licenses) #:prefix license:)
59 #:use-module (guix packages)
60 #:use-module (guix download)
37447422 61 #:use-module (guix git-download)
970fcb0d 62 #:use-module (guix hg-download)
18ad5bff 63 #:use-module (guix utils)
9f1d33be 64 #:use-module (guix build-system cmake)
3c156c8a 65 #:use-module (guix build-system gnu)
f1f7049e 66 #:use-module (guix build-system glib-or-gtk)
4382cef2 67 #:use-module (guix build-system meson)
ae05b185 68 #:use-module (guix build-system python)
261d0e8e 69 #:use-module (guix build-system scons)
3c156c8a 70 #:use-module (gnu packages)
99828fa7 71 #:use-module (gnu packages documentation)
d852cf9e
NN
72 #:use-module (gnu packages admin)
73 #:use-module (gnu packages base)
b4c400a7 74 #:use-module (gnu packages algebra)
b2193c35 75 #:use-module (gnu packages autotools)
23e12d9d 76 #:use-module (gnu packages check)
3c156c8a
JD
77 #:use-module (gnu packages compression)
78 #:use-module (gnu packages image)
79 #:use-module (gnu packages pkg-config)
23e12d9d 80 #:use-module (gnu packages flex)
95bf2fb6 81 #:use-module (gnu packages freedesktop)
f5e06344 82 #:use-module (gnu packages gawk)
ae05b185 83 #:use-module (gnu packages gettext)
9f1d33be 84 #:use-module (gnu packages gl)
2e88e089 85 #:use-module (gnu packages glib)
751f6871 86 #:use-module (gnu packages gnome)
d2536ed1 87 #:use-module (gnu packages haskell-xyz)
01614de1 88 #:use-module (gnu packages icu4c)
d748cb5f 89 #:use-module (gnu packages man)
937b71df 90 #:use-module (gnu packages maths)
4493a3c2 91 #:use-module (gnu packages m4)
1ef3f91a 92 #:use-module (gnu packages ncurses)
de51bf58 93 #:use-module (gnu packages perl)
ae05b185 94 #:use-module (gnu packages python)
44d10b1f 95 #:use-module (gnu packages python-xyz)
ab69d9ac 96 #:use-module (gnu packages linux)
b4c400a7 97 #:use-module (gnu packages gl)
76212b57 98 #:use-module (gnu packages guile)
f1f7049e
AW
99 #:use-module (gnu packages xml)
100 #:use-module (gnu packages gtk)
18431fe0 101 #:use-module (gnu packages qt)
cf60e76a 102 #:use-module (gnu packages xorg)
af96c417 103 #:use-module (gnu packages fontutils)
1f42989e
EF
104 #:use-module (gnu packages bison)
105 #:use-module (ice-9 match))
3c156c8a 106
3c156c8a
JD
107;; packages outside the x.org system proper
108
ae05b185
ML
109(define-public arandr
110 (package
111 (name "arandr")
218c7858 112 (version "0.1.10")
ae05b185
ML
113 (source (origin
114 (method url-fetch)
4a62a29d 115 (uri (string-append "https://christian.amsuess.com/tools/arandr"
93f6165f 116 "/files/arandr-" version ".tar.gz"))
ae05b185
ML
117 (sha256
118 (base32
218c7858 119 "135q0llvm077jil2fr92ssw3p095m4r8jfj0lc5rr3m71n4srj6v"))
04fa4cdf
LC
120 (modules '((guix build utils)))
121 (snippet
6cbee49d
MW
122 '(begin
123 ;; Do not record a timestamp and file name in gzipped man
124 ;; pages (this is equivalent to 'gzip --no-name'.)
125 (substitute* "setup.py"
126 (("gzip\\.open\\(gzfile, 'w', 9\\)")
127 "gzip.GzipFile('', 'wb', 9, open(gzfile, 'wb'), 0.)"))
128 #t))))
ae05b185 129 (build-system python-build-system)
b951e26f 130 (arguments
06c8e872 131 `(#:phases
28fd275c
AI
132 (modify-phases %standard-phases
133 (add-before 'build 'configure
134 (lambda* (#:key inputs #:allow-other-keys)
135 (substitute* "screenlayout/xrandr.py"
136 (("\"xrandr\"") (string-append "\"" (assoc-ref inputs "xrandr")
137 "/bin/xrandr\"")))
06c8e872
KK
138 #t))
139 (add-after 'install 'wrap-gi-typelib
140 (lambda* (#:key inputs outputs #:allow-other-keys)
141 (let ((out (assoc-ref outputs "out"))
142 (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
143 (wrap-program (string-append out "/bin/arandr")
144 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
28fd275c 145 #t)))
b5244fcb 146 #:tests? #f)) ;no tests
06c8e872
KK
147 (inputs `(("gtk+" ,gtk+)
148 ("pycairo" ,python-pycairo)
149 ("pygobject" ,python-pygobject)
b951e26f 150 ("xrandr" ,xrandr)))
b94a6ca0 151 (native-inputs `(("gettext" ,gettext-minimal)
06c8e872 152 ("python-docutils" ,python-docutils)))
ae05b185
ML
153 (home-page "https://christian.amsuess.com/tools/arandr/")
154 (synopsis "Another RandR graphical user interface")
155 ;; TRANSLATORS: "X11 resize-and-rotate" should not be translated.
156 (description "ARandR is designed to provide a simple visual front end for
157the X11 resize-and-rotate (RandR) extension. Relative monitor positions are
158shown graphically and can be changed in a drag-and-drop way. Configurations
159are saved as executable shell scripts which can be loaded without using this
160program.")
161 (license license:gpl3+)))
162
d748cb5f 163(define-public autorandr
cde4cb4d
BW
164 (package
165 (name "autorandr")
ebfe0e65 166 (version "1.10.1")
cde4cb4d
BW
167 (home-page "https://github.com/phillipberndt/autorandr")
168 (source
169 (origin
170 (method git-fetch)
171 (uri (git-reference
172 (url home-page)
173 (commit version)))
174 (file-name (git-file-name name version))
175 (sha256
ebfe0e65 176 (base32 "0msw9b1hdy3gbq9w5d04mfizhyirz1c648x84mlcbzl8salm7vpg"))))
cde4cb4d 177 (build-system python-build-system)
ebfe0e65
PN
178 (native-inputs
179 `(("pkg-config" ,pkg-config)))
cde4cb4d
BW
180 (inputs
181 `(("xrandr" ,xrandr)
182 ("libxcb" ,libxcb)))
183 (arguments
184 `(#:phases
185 (modify-phases %standard-phases
186 (add-before 'build 'configure
187 (lambda* (#:key inputs outputs #:allow-other-keys)
188 (let ((xrandr (string-append (assoc-ref inputs "xrandr")
189 "/bin/xrandr")))
190 (substitute* "contrib/etc/xdg/autostart/autorandr.desktop"
191 (("/usr") (assoc-ref outputs "out")))
d748cb5f 192 (substitute* "autorandr.py"
cde4cb4d 193 (("popen\\(\"xrandr") (string-append "popen(\"" xrandr))
ebfe0e65
PN
194 (("\\[\"xrandr") (string-append "[\"" xrandr)))
195 (substitute* "contrib/autorandr_launcher/autorandr_launcher.c"
196 (("/usr/bin/autorandr")
197 (string-append (assoc-ref outputs "out") "/bin/autorandr")))
198 (setenv "CC" "gcc"))
cde4cb4d
BW
199 #t))
200 (add-after 'install 'install-contrib
201 (lambda* (#:key outputs #:allow-other-keys)
202 (invoke "make"
203 (string-append "DESTDIR=" (assoc-ref outputs "out"))
204 "PREFIX="
790ada91 205 "BASH_COMPLETIONS_DIR=etc/bash_completion.d"
ebfe0e65
PN
206 "install"
207 "TARGETS=autorandr launcher manpage bash_completion"))))))
cde4cb4d
BW
208 (synopsis "Auto-detect connected displays and load appropriate setup")
209 (description "Autorandr wraps around xrandr to help with X11
d748cb5f
PN
210multi-screen configuration management. It allows the user to create profiles
211for various multi-screen setups. Autorandr automatically detects the profiles
212that can be activated based on the connected hardware. Hook scripts can be
213used to further tweak the behaviour of the different profiles.")
cde4cb4d 214 (license license:gpl3+)))
d748cb5f 215
2f490bf3
JH
216(define-public bemenu
217 (package
218 (name "bemenu")
e552fca9 219 (version "0.4.1")
2f490bf3
JH
220 (source
221 (origin
222 (method git-fetch)
223 (uri (git-reference
b0e7b699 224 (url "https://github.com/Cloudef/bemenu")
2f490bf3
JH
225 (commit version)))
226 (file-name (git-file-name name version))
227 (sha256
e552fca9
JH
228 (base32 "1fjcs9d3533ay3nz79cx3c0lmy2chgragr2lhsy0xl2ckr0iins0"))))
229 (build-system gnu-build-system)
2f490bf3 230 (arguments
e552fca9
JH
231 '(#:tests? #f
232 #:make-flags (list "CC=gcc"
233 "CFLAGS=-O2 -fPIC"
234 (string-append "LDFLAGS=-Wl,-rpath="
235 (assoc-ref %outputs "out") "/lib")
236 (string-append "PREFIX=" (assoc-ref %outputs "out")))
237 #:phases
238 (modify-phases %standard-phases
239 (delete 'configure))))
2f490bf3
JH
240 (inputs
241 `(("cairo" ,cairo)
242 ("libx11" ,libx11)
243 ("libxkbcomon" ,libxkbcommon)
244 ("libxinerama" ,libxinerama)
245 ("ncurses" ,ncurses)
246 ("pango" ,pango)
247 ("wayland" ,wayland)
248 ("wayland-protocols" ,wayland-protocols)))
249 (native-inputs
250 `(("doxygen" ,doxygen)
251 ("pkg-config" ,pkg-config)))
252 (home-page "https://github.com/Cloudef/bemenu")
253 (synopsis "Dynamic menu library and client program inspired by dmenu")
254 (description
255 "bemenu is a dynamic menu which allows the user to flexibly select from a
256list of options (usually programs to launch). It renders the menu graphically
257with X11 or Wayland, or in a text terminal with ncurses.")
e552fca9 258 (license (list license:gpl3+ ; client program[s] and other sources
2f490bf3
JH
259 license:lgpl3+)))) ; library and bindings
260
18431fe0
G
261(define-public copyq
262(package
263 (name "copyq")
264 (version "3.9.3")
265 (source (origin
266 (method git-fetch)
267 (uri (git-reference
b0e7b699 268 (url "https://github.com/hluk/CopyQ")
18431fe0
G
269 (commit (string-append "v" version))))
270 (file-name (git-file-name name version))
271 (sha256
272 (base32
273 "0wlwq9xg8rzsbj0b29z358k4mbrqy04iraa8x0p26pa95yskgcma"))))
274 (build-system cmake-build-system)
275 (arguments
276 `(#:configure-flags '("-DCMAKE_BUILD_TYPE=Release")
277 #:tests? #f)) ; Test suite is a rather manual process.
278 (inputs
279 `(("qtbase" ,qtbase)
280 ("qtscript" ,qtscript)
281 ("qtsvg" ,qtsvg)
282 ("qtx11extras" ,qtx11extras)))
283 (synopsis "Clipboard manager with advanced features")
284 (description "CopyQ is clipboard manager with editing and scripting
285features. CopyQ monitors system clipboard and saves its content in customized
286tabs. Saved clipboard can be later copied and pasted directly into any
287application.")
288 (home-page "https://hluk.github.io/CopyQ/")
289 (license license:gpl3+)))
290
de878f1b
JD
291(define-public xclip
292 (package
293 (name "xclip")
b2193c35 294 (version "0.13")
de878f1b 295 (source
2d8387c3
RW
296 (origin
297 (method git-fetch)
298 (uri (git-reference
b0e7b699 299 (url "https://github.com/astrand/xclip")
2d8387c3
RW
300 (commit version)))
301 (file-name (git-file-name name version))
302 (sha256
303 (base32
304 "0q0hmvcjlv8arhh1pzhja2wglyj6n7z209jnpnzd281kqqv4czcs"))))
de878f1b
JD
305 (build-system gnu-build-system)
306 (arguments
189be331 307 '(#:tests? #f)) ;there is no test suite
b2193c35
MB
308 (native-inputs
309 `(("autoconf" ,autoconf)
310 ("automake" ,automake)))
de878f1b
JD
311 (inputs `(("libxmu" ,libxmu)
312 ("libxt" ,libxt)))
b2193c35 313 (home-page "https://github.com/astrand/xclip")
de878f1b
JD
314 (synopsis "Command line interface to X11 clipboard")
315 (description "Xclip is a command line interface to the X11 clipboard. It
316can also be used for copying files, as an alternative to sftp/scp, thus
317avoiding password prompts when X11 forwarding has already been setup.")
318 (license license:gpl2+)))
319
cf60e76a
DM
320(define-public libxkbcommon
321 (package
322 (name "libxkbcommon")
58d1d46a 323 (version "0.10.0")
cf60e76a
DM
324 (source (origin
325 (method url-fetch)
dcbdd878 326 (uri (string-append "https://xkbcommon.org/download/libxkbcommon-"
cf60e76a
DM
327 version ".tar.xz"))
328 (sha256
329 (base32
58d1d46a 330 "1wmnl0hngn6vrqrya4r8hvimlkr4jag39yjprls4gyrqvh667hsp"))))
3a24bf3a 331 (build-system meson-build-system)
cf60e76a
DM
332 (inputs
333 `(("libx11" ,libx11)
334 ("libxcb" ,libxcb)
3a24bf3a
MB
335 ("wayland" ,wayland)
336 ("wayland-protocols" ,wayland-protocols)
cf60e76a
DM
337 ("xkeyboard-config" ,xkeyboard-config)))
338 (native-inputs
339 `(("bison" ,bison)
3a24bf3a 340 ("doxygen" ,doxygen)
cf60e76a
DM
341 ("pkg-config" ,pkg-config)))
342 (arguments
343 `(#:configure-flags
3a24bf3a 344 (list (string-append "-Dxkb-config-root="
cf60e76a
DM
345 (assoc-ref %build-inputs "xkeyboard-config")
346 "/share/X11/xkb")
3a24bf3a 347 (string-append "-Dx-locale-root="
cf60e76a
DM
348 (assoc-ref %build-inputs "libx11")
349 "/share/X11/locale"))))
fbb4755c 350 (home-page "https://xkbcommon.org/")
cf60e76a
DM
351 (synopsis "Library to handle keyboard descriptions")
352 (description "Xkbcommon is a library to handle keyboard descriptions,
353including loading them from disk, parsing them and handling their
354state. It is mainly meant for client toolkits, window systems, and other
355system applications; currently that includes Wayland, kmscon, GTK+, Qt,
356Clutter, and more. Despite the name, it is not currently used by anything
357X11 (yet).")
358 (license (license:x11-style "file://COPYING"
359 "See 'COPYING' in the distribution."))))
360
e91f9d40 361(define-public libfakekey
362 (package
363 (name "libfakekey")
df71892b 364 (version "0.3")
e91f9d40 365 (source
366 (origin
df71892b
TGR
367 (method git-fetch)
368 (uri (git-reference
369 (url "https://git.yoctoproject.org/git/libfakekey")
370 (commit version)))
371 (file-name (git-file-name name version))
e91f9d40 372 (sha256
df71892b 373 (base32 "1jw1d4wc1ysiijirc7apnz3sryrxbl9akgb92mh06dvfkz2nblj0"))))
e91f9d40 374 (build-system gnu-build-system)
375 (arguments
df71892b
TGR
376 `(#:make-flags (list "AM_LDFLAGS=-lX11")
377 #:phases
378 (modify-phases %standard-phases
379 (replace 'bootstrap
380 ;; ./autogen.sh calls ./configure before shebangs have been patched.
381 (lambda _
382 (invoke "autoreconf" "-vfi"))))))
e91f9d40 383 (native-inputs
df71892b
TGR
384 `(("pkg-config" ,pkg-config)
385
386 ;; For bootstrapping from git.
387 ("autoconf" ,autoconf)
388 ("automake" ,automake)
389 ("libtool" ,libtool)))
e91f9d40 390 (inputs
391 `(("libxtst" ,libxtst)
392 ("libx11" ,libx11)))
393 (home-page "https://www.yoctoproject.org/tools-resources/projects/matchbox")
394 (synopsis "X virtual keyboard library")
395 (description
396 "Libfakekey is a virtual keyboard library for X.")
397 (license license:gpl2)))
398
de51bf58
JD
399(define-public xdotool
400 (package
401 (name "xdotool")
ad430c71 402 (version "3.20160805.1")
de51bf58
JD
403 (source
404 (origin
405 (method url-fetch)
406 (uri (string-append
6f74aecd
CAW
407 "https://github.com/jordansissel/xdotool/releases/download/v"
408 version "/xdotool-" version ".tar.gz"))
de51bf58
JD
409 (sha256
410 (base32
ad430c71 411 "1a6c1zr86zb53352yxv104l76l8x21gfl2bgw6h21iphxpv5zgim"))))
de51bf58
JD
412 (build-system gnu-build-system)
413 (arguments
414 '(#:tests? #f ; Test suite requires a lot of black magic
ca0d2a63 415 #:phases
c237480b
EF
416 (modify-phases %standard-phases
417 (replace 'configure
418 (lambda* (#:key outputs #:allow-other-keys #:rest args)
ad430c71
MB
419 (let ((out (assoc-ref outputs "out")))
420 (mkdir-p (string-append out "/lib"))
421 (setenv "PREFIX" out)
422 (setenv "LDFLAGS" (string-append "-Wl,-rpath=" out "/lib"))
c6bf07d1
MW
423 (setenv "CC" "gcc")
424 #t))))))
de51bf58
JD
425 (native-inputs `(("perl" ,perl))) ; for pod2man
426 (inputs `(("libx11" ,libx11)
427 ("libxext" ,libxext)
428 ("libxi" ,libxi)
429 ("libxinerama" ,libxinerama)
6f74aecd
CAW
430 ("libxtst" ,libxtst)
431 ("libxkbcommon" ,libxkbcommon)))
91fa58c7 432 (home-page "https://www.semicomplete.com/projects/xdotool/")
de51bf58
JD
433 (synopsis "Fake keyboard/mouse input, window management, and more")
434 (description "Xdotool lets you simulate keyboard input and mouse activity,
435move and resize windows, etc. It does this using X11's XTEST extension and
436other Xlib functions. Additionally, you can search for windows and move,
437resize, hide, and modify window properties like the title. If your window
438manager supports it, you can use xdotool to switch desktops, move windows
439between desktops, and change the number of desktops.")
440 (license license:bsd-3)))
441
3c156c8a
JD
442(define-public xeyes
443 (package
444 (name "xeyes")
fa91433d 445 (version "1.1.2")
3c156c8a 446 (source
fa91433d
TGR
447 (origin
448 (method url-fetch)
449 (uri (string-append "https://www.x.org/releases/individual/app/"
450 name "-" version ".tar.bz2"))
451 (sha256
452 (base32 "0lq5j7fryx1wn998jq6h3icz1h6pqrsbs3adskjzjyhn5l6yrg2p"))))
3c156c8a
JD
453 (build-system gnu-build-system)
454 (inputs
455 `(("libxext" ,libxext)
456 ("libxmu" ,libxmu)
fa91433d 457 ("libxrender" ,libxrender)
3c156c8a
JD
458 ("libxt" ,libxt)))
459 (native-inputs
460 `(("pkg-config" ,pkg-config)))
5e996128 461 (home-page "https://www.x.org/") ; no dedicated Xeyes page exists
3c156c8a
JD
462 (synopsis "Follow-the-mouse X demo")
463 (description "Xeyes is a demo program for x.org. It shows eyes
464following the mouse.")
465 (license license:x11)))
466
467
468(define-public pixman
469 (package
470 (name "pixman")
46d258cb 471 (version "0.38.4")
997f86e9
LC
472 (source (origin
473 (method url-fetch)
474 (uri (string-append
c8b69863 475 "https://www.cairographics.org/releases/pixman-"
997f86e9
LC
476 version ".tar.gz"))
477 (sha256
478 (base32
46d258cb 479 "1ryxzdf048x7wsx4dlvrr1p00gzwfs7lybnhgc7ygbj0dvyxcrns"))
35bbe88b 480 (patches (search-patches "pixman-CVE-2016-5296.patch"))))
3c156c8a 481 (build-system gnu-build-system)
92ab0841
MB
482 (arguments
483 '(#:configure-flags '("--disable-static")))
3c156c8a 484 (inputs
997f86e9
LC
485 `(("libpng" ,libpng)
486 ("zlib" ,zlib)))
3c156c8a 487 (native-inputs
997f86e9 488 `(("pkg-config" ,pkg-config)))
3c156c8a
JD
489 (home-page "http://www.pixman.org/")
490 (synopsis "Low-level pixel manipulation library")
491 (description "Pixman is a low-level software library for pixel
492manipulation, providing features such as image compositing and trapezoid
493rasterisation.")
494 (license license:x11)))
495
3c156c8a
JD
496(define-public libdrm
497 (package
498 (name "libdrm")
3f46f041
MB
499 (version "2.4.101")
500 (source (origin
501 (method url-fetch)
502 (uri (string-append
503 "https://dri.freedesktop.org/libdrm/libdrm-"
504 version ".tar.xz"))
505 (sha256
506 (base32
507 "19vqbhqljhln0lrpnv3s7y3lkhsdcp76dl8bhqj3cis9ism1pwyx"))
508 (patches (search-patches "libdrm-realpath-virtio.patch"))))
34b81a9c 509 (build-system meson-build-system)
1f42989e
EF
510 (arguments
511 `(#:configure-flags
512 '(,@(match (%current-system)
c022edf6
EF
513 ((or "armhf-linux" "aarch64-linux")
514 '("-Dexynos=true"
515 "-Domap=true"
516 "-Detnaviv=true"
517 "-Dtegra=true"
34b81a9c 518 "-Dfreedreno-kgsl=true"))
fe7c6f91 519 (_ '())))
7dc96170
LC
520
521 #:phases (modify-phases %standard-phases
522 (replace 'check
523 (lambda _
524 (invoke "meson" "test" "--timeout-multiplier" "5"))))))
3c156c8a 525 (inputs
53e16a5a 526 `(("libpciaccess" ,libpciaccess)))
3c156c8a 527 (native-inputs
53e16a5a
MB
528 `(("pkg-config" ,pkg-config)))
529 (home-page "https://dri.freedesktop.org/wiki/")
3c156c8a
JD
530 (synopsis "Direct rendering userspace library")
531 (description "The Direct Rendering Infrastructure, also known as the DRI,
532is a framework for allowing direct access to graphics hardware under the
533X Window System in a safe and efficient manner. It includes changes to the
534X server, to several client libraries, and to the kernel (DRM, Direct
535Rendering Manager). The most important use for the DRI is to create fast
536OpenGL implementations providing hardware acceleration for Mesa.
537Several 3D accelerated drivers have been written to the DRI specification,
538including drivers for chipsets produced by 3DFX, AMD (formerly ATI), Intel
539and Matrox.")
540 (license license:x11)))
541
542
3c156c8a
JD
543(define-public mtdev
544 (package
545 (name "mtdev")
964a556d 546 (version "1.1.6")
3c156c8a
JD
547 (source
548 (origin
549 (method url-fetch)
550 (uri (string-append
551 "http://bitmath.org/code/mtdev/mtdev-"
552 version ".tar.bz2"))
553 (sha256
1f1e620f 554 (base32
964a556d 555 "1q700h9dqcm3zl6c3gj0qxxjcx6ibw2c51wjijydhwdcm26v5mqm"))))
3c156c8a 556 (build-system gnu-build-system)
34e9aa73 557 (arguments '(#:configure-flags '("--disable-static")))
3c156c8a
JD
558 (home-page "http://bitmath.org/code/mtdev/")
559 (synopsis "Multitouch protocol translation library")
560 (description "Mtdev is a stand-alone library which transforms all
561variants of kernel MT events to the slotted type B protocol. The events
562put into mtdev may be from any MT device, specifically type A without
563contact tracking, type A with contact tracking, or type B with contact
564tracking.")
565 (license license:x11)))
a693bba1
SB
566
567(define-public startup-notification
568 (package
569 (name "startup-notification")
570 (version "0.12")
571 (source
572 (origin
573 (method url-fetch)
5cc3096c 574 (uri (string-append "https://www.freedesktop.org/software/" name
a693bba1
SB
575 "/releases/" name "-" version ".tar.gz"))
576 (sha256
577 (base32
578 "0jmyryrpqb35y9hd5sgxqy2z0r1snw7d3ljw0jak0n0cjdz1yf9w"))))
579 (build-system gnu-build-system)
580 (native-inputs `(("pkg-config" ,pkg-config)))
581 (inputs
582 `(("libx11" ,libx11)
583 ("xcb-util" ,xcb-util)))
57e7d748 584 (home-page "https://www.freedesktop.org/wiki/Software/startup-notification/")
a693bba1
SB
585 (synopsis "Application startup notification and feedback library")
586 (description
587 "Startup-notification contains a reference implementation of the startup
588notification protocol. The reference implementation is mostly under an X Window
589System style license, and has no special dependencies.")
590 ;; Most of the code is provided under x11 license.
591 (license license:lgpl2.0+)))
2e88e089
AK
592
593(define-public wmctrl
594 (package
595 (name "wmctrl")
596 (version "1.07")
597 (source (origin
598 (method url-fetch)
599 (uri (string-append
d6420533 600 "https://sites.google.com/site/tstyblo/wmctrl/wmctrl-"
2e88e089
AK
601 version ".tar.gz"))
602 (sha256
603 (base32
604 "1afclc57b9017a73mfs9w7lbdvdipmf9q0xdk116f61gnvyix2np"))
fc1adab1 605 (patches (search-patches "wmctrl-64-fix.patch"))))
2e88e089
AK
606 (build-system gnu-build-system)
607 (arguments
608 '(#:configure-flags
609 (list (string-append "--mandir="
610 (assoc-ref %outputs "out")
611 "/share/man"))))
612 (native-inputs
613 `(("pkg-config" ,pkg-config)))
614 (inputs
615 `(("libx11" ,libx11)
616 ("libxmu" ,libxmu)
617 ("glib" ,glib)))
618 (home-page "http://tomas.styblo.name/wmctrl/")
619 (synopsis "Command-line tool to control X window managers")
620 (description
0cf069c2 621 "Wmctrl interacts with an X window manager that is compatible
2e88e089
AK
622with the EWMH/NetWM specification. It can query the window manager for
623information, and request for certain window management actions (resize and
e881752c 624move windows, switch between desktops, etc.).")
2e88e089 625 (license license:gpl2+)))
1410f342
AK
626
627(define-public scrot
628 (package
629 (name "scrot")
91ef7e17 630 (version "1.3")
7953675f
TGR
631 (source
632 (origin
633 (method git-fetch)
634 (uri
635 (git-reference
b0e7b699 636 (url "https://github.com/resurrecting-open-source-projects/scrot")
7953675f 637 (commit version)))
c9750434 638 (file-name (git-file-name name version))
7953675f 639 (sha256
91ef7e17 640 (base32 "0x70hd59ik37kqd8xqpwrz46np01jv324iz28x2s0kk36d7sblsj"))))
1410f342 641 (build-system gnu-build-system)
7953675f
TGR
642 (native-inputs
643 `(("autoconf" ,autoconf)
d258d9c7 644 ("autoconf-archive" ,autoconf-archive)
7953675f 645 ("automake" ,automake)))
1410f342 646 (inputs
7953675f 647 `(("giblib" ,giblib)
d258d9c7
TLC
648 ("libx11" ,libx11)
649 ("libXcursor" ,libxcursor)
650 ("libXfixes" ,libxfixes)))
7953675f 651 (home-page "https://github.com/resurrecting-open-source-projects/scrot")
1410f342
AK
652 (synopsis "Command-line screen capture utility for X Window System")
653 (description
0dfe4c3d 654 "Scrot saves a screenshot of a full screen, a window or a part
1410f342
AK
655of the screen selected by mouse.")
656 ;; This license removes a clause about X Consortium from the original
657 ;; X11 license.
658 (license (license:x11-style "file://COPYING"
659 "See 'COPYING' in the distribution."))))
4a01b30b 660
9f1d33be
AK
661(define-public slop
662 (package
663 (name "slop")
d2879269 664 (version "7.5")
9f1d33be 665 (source (origin
25d09f60
RW
666 (method git-fetch)
667 (uri (git-reference
b0e7b699 668 (url "https://github.com/naelstrof/slop")
25d09f60
RW
669 (commit (string-append "v" version))))
670 (file-name (git-file-name name version))
9f1d33be
AK
671 (sha256
672 (base32
d2879269 673 "1k8xxb4rj2fylr4vj16yvsf73cyywliz9cy78pl4ibmi03jhg837"))))
9f1d33be 674 (build-system cmake-build-system)
937b71df 675 (arguments
e1c014d7 676 '(#:tests? #f)) ; no "check" target
9f1d33be 677 (inputs
eb2b5f9d
MB
678 `(("glew" ,glew)
679 ("glm" ,glm)
01614de1 680 ("icu4c" ,icu4c)
9f1d33be 681 ("libxext" ,libxext)
e1c014d7 682 ("libxrender" ,libxrender)
9f1d33be
AK
683 ("mesa" ,mesa)))
684 (home-page "https://github.com/naelstrof/slop")
685 (synopsis "Select a region and print its bounds to stdout")
686 (description
687 "slop (Select Operation) is a tool that queries for a selection from a
688user and prints the region to stdout. It grabs the mouse and turns it into a
689crosshair, lets the user click and drag to make a selection (or click on a
690window) while drawing a pretty box around it, then finally prints the
691selection's dimensions to stdout.")
692 (license license:gpl3+)))
693
5c93de73
AK
694(define-public maim
695 (package
696 (name "maim")
09a79ec2 697 (version "5.6.3")
5c93de73 698 (source (origin
ab3159f8
RW
699 (method git-fetch)
700 (uri (git-reference
b0e7b699 701 (url "https://github.com/naelstrof/maim")
ab3159f8
RW
702 (commit (string-append "v" version))))
703 (file-name (git-file-name name version))
5c93de73
AK
704 (sha256
705 (base32
09a79ec2 706 "181mjjrjb9fs1ficcv9miqbk94v95j1yli7fjp2dj514g7nj9l3x"))))
5c93de73
AK
707 (build-system cmake-build-system)
708 (arguments
2b7d10d2 709 '(#:tests? #f)) ; no "check" target
5c93de73 710 (inputs
2b7d10d2
MB
711 `(("glm" ,glm)
712 ("libjpeg" ,libjpeg-turbo)
713 ("libpng" ,libpng)
714 ("libxcomposite" ,libxcomposite)
5c93de73 715 ("libxfixes" ,libxfixes)
2b7d10d2
MB
716 ("libxrandr" ,libxrandr)
717 ("mesa" ,mesa)
718 ("slop" ,slop)
719 ("zlib" ,zlib)))
5c93de73
AK
720 (home-page "https://github.com/naelstrof/maim")
721 (synopsis "Screenshot utility for X Window System")
722 (description
723 "maim (Make Image) is a tool that takes screenshots of your desktop and
724saves it in any format. Along with a full screen, it allows you to capture a
725predefined region or a particular window. Also, it makes it possible to
726include cursor in the resulting image.")
727 (license license:gpl3+)))
728
4a01b30b
AK
729(define-public unclutter
730 (package
731 (name "unclutter")
732 (version "8")
733 (source (origin
734 (method url-fetch)
735 (uri (string-append
736 "http://ftp.x.org/contrib/utilities/unclutter-"
737 version ".tar.Z"))
738 (sha256
739 (base32
740 "0ahrr5z6wxqqfyihm112hnq0859zlxisrb3y5232zav58j6sfmdq"))))
741 (build-system gnu-build-system)
742 (arguments
743 '(#:tests? #f ; no check target
ea0836cd
EF
744 #:phases
745 (modify-phases %standard-phases
746 (delete 'configure)
747 (replace 'install
748 (lambda* (#:key inputs outputs #:allow-other-keys)
749 (let* ((out (assoc-ref outputs "out"))
750 (bin (string-append out "/bin"))
751 (man1 (string-append out "/share/man/man1")))
752 (mkdir-p bin)
753 (mkdir-p man1)
e61c2991
TGR
754 (invoke "make" "install" "install.man"
755 (string-append "BINDIR=" bin)
756 (string-append "MANDIR=" man1))))))))
4a01b30b
AK
757 (inputs `(("libx11" ,libx11)))
758 (home-page "http://ftp.x.org/contrib/utilities/")
759 (synopsis "Hide idle mouse cursor")
760 (description
761 "Unclutter is a program which runs permanently in the background of an
762X11 session. It checks on the X11 pointer (cursor) position every few
763seconds, and when it finds it has not moved (and no buttons are pressed
764on the mouse, and the cursor is not in the root window) it creates a
765small sub-window as a child of the window the cursor is in. The new
766window installs a cursor of size 1x1 but a mask of all 0, i.e. an
767invisible cursor. This allows you to see all the text in an xterm or
768xedit, for example. The human factors crowd would agree it should make
769things less distracting.")
770 (license license:public-domain)))
ab69d9ac 771
6e79949f 772(define-public xautomation
773 (package
774 (name "xautomation")
775 (version "1.09")
776 (source
777 (origin
778 (method url-fetch)
779 (uri (string-append "https://www.hoopajoo.net/static/projects/"
780 "xautomation-" version ".tar.gz"))
781
782 (sha256
783 (base32
784 "03azv5wpg65h40ip2kk1kdh58vix4vy1r9bihgsq59jx2rhjr3zf"))))
785 (build-system gnu-build-system)
786 (inputs
787 `(("libpng" ,libpng)
788 ("libx11" ,libx11)
789 ("libxi" ,libxi)
790 ("libxtst" ,libxtst)))
791 (native-inputs
82b4d9ec 792 `(("xorgproto" ,xorgproto)))
6e79949f 793 (synopsis "Tools to automate tasks in X such as detecting on screen images")
794 (description
795 "Xautomation can control X from the command line for scripts, and
796do visual scraping to find things on the screen. The control interface
797allows mouse movement, clicking, button up/down, key up/down, etc, and
798uses the XTest extension so you don't have the annoying problems that
799xse has when apps ignore sent events. The visgrep program can find
168d5634 800images inside of images and reports the coordinates, allowing programs
6e79949f 801to find buttons, etc, on the screen to click on.")
802 (home-page "https://www.hoopajoo.net/projects/xautomation.html")
803 (license license:gpl2+)))
804
0ea0452c
MB
805(define-public xbanish
806 (package
807 (name "xbanish")
c59c04d3 808 (version "1.7")
0ea0452c
MB
809 (home-page "https://github.com/jcs/xbanish")
810 (source (origin
811 (method git-fetch)
812 (uri (git-reference (url home-page)
813 (commit (string-append "v" version))))
f1d4d79f 814 (file-name (git-file-name name version))
0ea0452c
MB
815 (sha256
816 (base32
c59c04d3 817 "0ic5f7zgc32p5g1wxas9y5h8dhik0pvsa8wmn6skdry56gw9vg9q"))))
0ea0452c
MB
818 (build-system gnu-build-system)
819 (arguments
c59c04d3 820 `(#:tests? #f ; no tests
0ea0452c
MB
821 #:make-flags (list "CC=gcc"
822 (string-append "PREFIX=" (assoc-ref %outputs "out")))
823 #:phases (modify-phases %standard-phases
c59c04d3 824 (delete 'configure)))) ; no configure script
0ea0452c
MB
825 (inputs
826 `(("libx11" ,libx11)
827 ("libxfixes" ,libxfixes)
828 ("libxi" ,libxi)
829 ("libxt" ,libxt)))
830 (synopsis "Banish the mouse cursor")
831 (description
832 "@command{xbanish} hides the mouse cursor when you start typing, and
833shows it again when the mouse cursor moves or a mouse button is pressed.")
834 (license license:bsd-3)))
835
ab69d9ac
LC
836(define-public xlockmore
837 (package
838 (name "xlockmore")
bf8ee1c5 839 (version "5.62")
ab69d9ac
LC
840 (source (origin
841 (method url-fetch)
2ec42868 842 (uri (list (string-append "http://sillycycle.com/xlock/"
3596b994 843 "xlockmore-" version ".tar.xz")
2ec42868
TGR
844 ;; Previous releases are moved to a subdirectory.
845 (string-append "http://sillycycle.com/xlock/"
846 "recent-releases/"
3596b994 847 "xlockmore-" version ".tar.xz")))
ab69d9ac
LC
848 (sha256
849 (base32
bf8ee1c5 850 "0b05wgj4mpssy4hd7km5c48i454dfg45p11mfmsr7xjd2gnz5gqi"))))
ab69d9ac
LC
851 (build-system gnu-build-system)
852 (arguments
853 '(#:configure-flags (list (string-append "--enable-appdefaultdir="
854 (assoc-ref %outputs "out")
855 "/lib/X11/app-defaults"))
856 #:tests? #f)) ;no such thing as a test suite
857 (inputs
858 `(("libX11" ,libx11)
859 ("libXext" ,libxext)
860 ("libXt" ,libxt)
861 ("linux-pam" ,linux-pam)))
81166ee4 862 (home-page "https://sillycycle.com/xlockmore.html")
ab69d9ac
LC
863 (synopsis "Screen locker for the X Window System")
864 (description
865 "XLockMore is a classic screen locker and screen saver for the
866X Window System.")
166191b3 867 (license (license:non-copyleft #f "See xlock.c.")
e4ddf924 868 ))) ; + GPLv2 in modes/glx/biof.c.
11447a79
AK
869
870(define-public xosd
871 (package
872 (name "xosd")
873 (version "2.2.14")
874 (source (origin
875 (method url-fetch)
876 (uri (string-append
de67e922
LF
877 "mirror://sourceforge/libxosd/libxosd/xosd-" version "/"
878 name "-" version ".tar.gz"))
11447a79
AK
879 (sha256
880 (base32
881 "025m7ha89q29swkc7s38knnbn8ysl24g2h5s7imfxflm91psj7sg"))))
882 (build-system gnu-build-system)
883 (arguments
884 '(#:configure-flags
885 (list (string-append "--mandir=" %output "/share/man"))))
886 (inputs
887 `(("libx11" ,libx11)
888 ("libxt" ,libxt)
889 ("libxext" ,libxext)
890 ("libxinerama" ,libxinerama)))
3b3b60d0 891 (home-page "https://sourceforge.net/projects/libxosd/")
11447a79
AK
892 (synopsis "X On Screen Display")
893 (description
894 "XOSD provides a C library and a simple utility (osd_cat) for displaying
895transparent text on your screen.")
896 (license license:gpl2+)))
76212b57
ML
897
898(define-public xbindkeys
899 (package
900 (name "xbindkeys")
854c39ae 901 (version "1.8.7")
76212b57
ML
902 (source (origin
903 (method url-fetch)
904 ;; Download from the savannah mirror list fails
905 (uri (string-append
906 "http://www.nongnu.org/xbindkeys/xbindkeys-"
907 version
908 ".tar.gz"))
909 (sha256
910 (base32
854c39ae 911 "1wl2vc5alisiwyk8m07y1ryq8w3ll9ym83j27g4apm4ixjl8d6x2"))))
76212b57 912 (build-system gnu-build-system)
854c39ae
TGR
913 (native-inputs
914 `(("pkg-config" ,pkg-config)))
76212b57
ML
915 (inputs
916 `(("libx11" ,libx11)
854c39ae 917 ("guile" ,guile-2.2)))
340978d7 918 (home-page "https://www.nongnu.org/xbindkeys/")
76212b57
ML
919 (synopsis "Associate a combination of keys with a shell command")
920 (description
921 "XBindKeys is a program that allows you to launch shell commands with
922your keyboard or your mouse under the X Window System. It links commands to
923keys or mouse buttons, using a configuration file. It's independent of the
924window manager and can capture all keyboard keys (ex: Power, Wake...). It
925optionally supports a Guile-based configuration file layout, which enables you
926to access all XBindKeys internals, so you can have key combinations, double
927clicks or timed double clicks take actions. Also all functions that work in
928Guile will work for XBindKeys.")
929 (license license:gpl2+)))
42f2c2b9 930
998b8c07 931(define-public sxhkd
932 (package
933 (name "sxhkd")
1c6884ee 934 (version "0.6.1")
998b8c07 935 (source
936 (origin
f8f0b652
TGR
937 (method git-fetch)
938 (uri (git-reference
939 (url "https://github.com/baskerville/sxhkd")
940 (commit version)))
f9447ded 941 (file-name (git-file-name name version))
998b8c07 942 (sha256
1c6884ee 943 (base32 "0j7bl2l06r0arrjzpz7al9j6cwzc730knbsijp7ixzz96pq7xa2h"))))
998b8c07 944 (build-system gnu-build-system)
945 (inputs
946 `(("asciidoc" ,asciidoc)
947 ("libxcb" ,libxcb)
948 ("xcb-util" ,xcb-util)
949 ("xcb-util-keysyms" ,xcb-util-keysyms)
950 ("xcb-util-wm" ,xcb-util-wm)))
951 (arguments
f8f0b652 952 `(#:phases (modify-phases %standard-phases (delete 'configure))
998b8c07 953 #:tests? #f ; no check target
f8f0b652
TGR
954 #:make-flags
955 (list "CC=gcc"
956 (string-append "PREFIX=" %output)
957 ;; Keep the documentation where the build system installs LICENSE.
958 (string-append "DOCPREFIX=" %output
959 "/share/doc/" ,name "-" ,version))))
998b8c07 960 (home-page "https://github.com/baskerville/sxhkd")
961 (synopsis "Simple X hotkey daemon")
962 (description "sxhkd is a simple X hotkey daemon with a powerful and
963compact configuration syntax.")
964 (license license:bsd-2)))
965
42f2c2b9
AG
966(define-public rxvt-unicode
967 (package
968 (name "rxvt-unicode")
71ca0539 969 (version "9.22")
1ef3f91a
ML
970 (source (origin
971 (method url-fetch)
63999415 972 (uri (string-append "http://dist.schmorp.de/rxvt-unicode/Attic/"
1ef3f91a 973 name "-" version ".tar.bz2"))
0fd0bb56 974 (patches (search-patches "rxvt-unicode-escape-sequences.patch"))
1ef3f91a
ML
975 (sha256
976 (base32
71ca0539 977 "1pddjn5ynblwfrdmskylrsxb9vfnk3w4jdnq2l8xn2pspkljhip9"))))
42f2c2b9 978 (build-system gnu-build-system)
1ef3f91a
ML
979 (arguments
980 ;; This sets the destination when installing the necessary terminal
981 ;; capability data, which are not provided by 'ncurses'. See
982 ;; https://lists.gnu.org/archive/html/bug-ncurses/2009-10/msg00031.html
33c93ea3 983 `(#:make-flags (list (string-append "TERMINFO="
1ef3f91a 984 (assoc-ref %outputs "out")
33c93ea3 985 "/share/terminfo"))
986 #:phases
987 (modify-phases %standard-phases
988 (add-after 'install 'install-desktop-urxvt
989 (lambda* (#:key outputs #:allow-other-keys)
990 (let* ((output (assoc-ref outputs "out"))
991 (desktop (string-append output "/share/applications")))
992 (mkdir-p desktop)
993 (with-output-to-file
994 (string-append desktop "/urxvt.desktop")
995 (lambda _
996 (format #t
997 "[Desktop Entry]~@
998 Name=rxvt-unicode~@
999 Comment=~@
1000 Exec=~a/bin/urxvt~@
1001 TryExec=~@*~a/bin/urxvt~@
1002 Icon=~@
1003 Type=Application~%"
1004 output)))
1005 #t)))
1006 (add-after 'install 'install-desktop-urxvtc
1007 (lambda* (#:key outputs #:allow-other-keys)
1008 (let* ((output (assoc-ref outputs "out"))
1009 (desktop (string-append output "/share/applications")))
1010 (mkdir-p desktop)
1011 (with-output-to-file
1012 (string-append desktop "/urxvtc.desktop")
1013 (lambda _
1014 (format #t
1015 "[Desktop Entry]~@
120349bf 1016 Name=rxvt-unicode (client)~@
33c93ea3 1017 Comment=Rxvt clone with XFT and unicode support~@
1018 Exec=~a/bin/urxvtc~@
1019 TryExec=~@*~a/bin/urxvtc~@
1020 Icon=~@
1021 Type=Application~%"
1022 output)))
1023 #t))))))
42f2c2b9
AG
1024 (inputs
1025 `(("libXft" ,libxft)
1026 ("libX11" ,libx11)))
1027 (native-inputs
1ef3f91a
ML
1028 `(("ncurses" ,ncurses) ;trigger the installation of terminfo data
1029 ("perl" ,perl)
42f2c2b9 1030 ("pkg-config" ,pkg-config)))
1ef3f91a
ML
1031 ;; FIXME: This should only be located in 'ncurses'. Nonetheless it is
1032 ;; provided for usability reasons. See <https://bugs.gnu.org/22138>.
1033 (native-search-paths
1034 (list (search-path-specification
1035 (variable "TERMINFO_DIRS")
1036 (files '("share/terminfo")))))
42f2c2b9
AG
1037 (home-page "http://software.schmorp.de/pkg/rxvt-unicode.html")
1038 (synopsis "Rxvt clone with XFT and unicode support")
1039 (description "Rxvt-unicode (urxvt) is a colour vt102 terminal emulator
1040intended as an xterm replacement for users who do not require features such as
1041Tektronix 4014 emulation and toolkit-style configurability. It supports
1042unicode, XFT and may be extended with Perl plugins. It also comes with a
1043client/daemon pair that lets you open any number of terminal windows from
1044within a single process.")
1045 (license license:gpl3+)))
ca0d2a63
AG
1046
1047(define-public xcape
1048 (package
1049 (name "xcape")
82f44a36 1050 (version "1.2")
4bb74ed5
RW
1051 (source (origin
1052 (method git-fetch)
1053 (uri (git-reference
b0e7b699 1054 (url "https://github.com/alols/xcape")
4bb74ed5
RW
1055 (commit (string-append "v" version))))
1056 (file-name (git-file-name name version))
1057 (sha256
1058 (base32
1059 "09a05cxgrip6nqy1qmwblamp2bhknqnqmxn7i2a1rgxa0nba95dm"))))
ca0d2a63
AG
1060 (build-system gnu-build-system)
1061 (arguments
1062 `(#:tests? #f ; no check target
dc1d3cde
KK
1063 ;; no configure script
1064 #:phases (modify-phases %standard-phases (delete 'configure))
ca0d2a63
AG
1065 #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
1066 "MANDIR=/share/man/man1"
1067 "CC=gcc")))
1068 (inputs
1069 `(("libxtst" ,libxtst)
1070 ("libx11" ,libx11)))
1071 (native-inputs
1072 `(("pkg-config" ,pkg-config)))
7bf837fd 1073 (home-page "https://github.com/alols/xcape")
ca0d2a63
AG
1074 (synopsis "Use a modifier key in X.org as another key")
1075 (description
839f0229 1076 "This utility for X.org uses a modifier key as another key when
ca0d2a63
AG
1077pressed and released on its own. The default behaviour is to generate the
1078Escape key when Left Control is pressed and released on its own.")
1079 (license license:gpl3+)))
f1f7049e
AW
1080
1081(define-public libwacom
1082 (package
1083 (name "libwacom")
8998965a 1084 (version "1.4")
f1f7049e
AW
1085 (source (origin
1086 (method url-fetch)
0ac68e72
TGR
1087 (uri (string-append
1088 "https://github.com/linuxwacom/libwacom/releases/download/"
cffdcbef 1089 "libwacom-" version "/libwacom-" version ".tar.bz2"))
f1f7049e
AW
1090 (sha256
1091 (base32
8998965a 1092 "1rk661cymmahak9rw0wcssnfszbngq74vp7zc2cwyg6yrjbif1lh"))))
f1f7049e 1093 (build-system glib-or-gtk-build-system)
4ad2c9db
MB
1094 (arguments
1095 `(#:configure-flags '("--disable-static")))
f1f7049e
AW
1096 (native-inputs
1097 `(("pkg-config" ,pkg-config)))
1098 (inputs
34efce4f 1099 `(("gtk+" ,gtk+)
b9cbe316 1100 ("libgudev" ,libgudev)
f1f7049e
AW
1101 ("eudev" ,eudev)
1102 ("libxml2" ,libxml2)))
34efce4f
AW
1103 (propagated-inputs
1104 ;; libwacom includes header files that include GLib, and libinput uses
1105 ;; those header files.
1106 `(("glib" ,glib)))
81dc1d12 1107 (home-page "https://linuxwacom.github.io/")
f1f7049e
AW
1108 (synopsis "Helper library for Wacom tablet settings")
1109 (description
34efce4f
AW
1110 "Libwacom is a library to help implement Wacom tablet settings. It is
1111intended to be used by client-programs that need model identification. It is
1112already being used by the gnome-settings-daemon and the GNOME Control Center
1113Wacom tablet applet.")
f1f7049e 1114 (license license:x11)))
ab42a2a7
AW
1115
1116(define-public xf86-input-wacom
1117 (package
1118 (name "xf86-input-wacom")
f01d8e9c 1119 (version "0.39.0")
fe049752
TGR
1120 (source
1121 (origin
1122 (method url-fetch)
1123 (uri (string-append
1124 "https://github.com/linuxwacom/xf86-input-wacom/releases/download/"
b106dd84
TGR
1125 "xf86-input-wacom-" version "/"
1126 "xf86-input-wacom-" version ".tar.bz2"))
fe049752 1127 (sha256
f01d8e9c 1128 (base32 "11qk58az6qwii774ga45h5yqzipwn56f0d74kdbajqdv45p85gqj"))))
ab42a2a7
AW
1129 (arguments
1130 `(#:configure-flags
1131 (list (string-append "--with-sdkdir="
1132 (assoc-ref %outputs "out")
1133 "/include/xorg")
1134 (string-append "--with-xorg-conf-dir="
1135 (assoc-ref %outputs "out")
1136 "/share/X11/xorg.conf.d"))))
1137 (build-system gnu-build-system)
1138 (native-inputs
1139 `(("pkg-config" ,pkg-config)))
1140 (inputs
1141 `(("xorg-server" ,xorg-server)
1142 ("libxrandr" ,libxrandr)
1143 ("libxinerama" ,libxinerama)
1144 ("libxi" ,libxi)
1145 ("eudev" ,eudev)))
81dc1d12 1146 (home-page "https://linuxwacom.github.io/")
ab42a2a7
AW
1147 (synopsis "Wacom input driver for X")
1148 (description
1149 "The xf86-input-wacom driver is the wacom-specific X11 input driver for
1150the X.Org X Server version 1.7 and later (X11R7.5 or later).")
1151 (license license:x11)))
6645753b
FPS
1152
1153(define-public redshift
1154 (package
1155 (name "redshift")
a5a568d2 1156 (version "1.12")
6645753b
FPS
1157 (source
1158 (origin
1159 (method url-fetch)
1160 (uri
1161 (string-append "https://github.com/jonls/redshift/"
1162 "releases/download/v" version
1163 "/redshift-" version ".tar.xz"))
1164 (sha256
1165 (base32
a5a568d2 1166 "1fi27b73x85qqar526dbd33av7mahca2ykaqwr7siqiw1qqcby6j"))))
6645753b 1167 (build-system gnu-build-system)
22070ad1
MB
1168 (arguments
1169 `(#:imported-modules (,@%gnu-build-system-modules
1170 (guix build python-build-system))
1171 #:phases
1172 (modify-phases %standard-phases
1173 (add-after 'install 'split-outputs
1174 (lambda* (#:key outputs #:allow-other-keys)
1175 (let ((out (assoc-ref outputs "out"))
1176 (gtk (assoc-ref outputs "gtk"))
1177 (desktop-file "/share/applications/redshift-gtk.desktop"))
1178 (mkdir-p (string-append gtk "/bin"))
1179 (link (string-append out "/bin/redshift-gtk")
1180 (string-append gtk "/bin/redshift-gtk"))
1181 (delete-file (string-append out "/bin/redshift-gtk"))
1182 (copy-recursively (string-append out "/lib")
1183 (string-append gtk "/lib"))
1184 (delete-file-recursively (string-append out "/lib"))
1185 (mkdir-p (string-append gtk "/share/applications"))
1186 (link (string-append out desktop-file)
1187 (string-append gtk desktop-file))
1188 (delete-file (string-append out desktop-file))
1189 (with-directory-excursion (string-append out "/share")
1190 (for-each (lambda (dir)
1191 (copy-recursively
1192 (string-append out "/share/" dir)
1193 (string-append gtk "/share/" dir))
1194 (delete-file-recursively dir))
1195 '("appdata" "icons")))
1196 #t)))
1197 (add-after 'split-outputs 'wrap
1198 (lambda* (#:key inputs outputs #:allow-other-keys)
1199 (let* ((gtk (assoc-ref outputs "gtk"))
1200 (python-version
1201 (@ (guix build python-build-system) python-version))
1202 (python (assoc-ref inputs "python"))
1203 (sitedir (string-append gtk "/lib/python"
1204 (python-version python)
1205 "/site-packages")))
1206 (wrap-program (string-append gtk "/bin/redshift-gtk")
1207 `("PYTHONPATH" ":" prefix
1208 (,(string-append sitedir ":" (getenv "PYTHONPATH"))))
1209 `("GI_TYPELIB_PATH" ":" prefix (,(getenv "GI_TYPELIB_PATH"))))
1210 #t))))))
1211 (outputs '("out" "gtk"))
6645753b
FPS
1212 (native-inputs
1213 `(("pkg-config" ,pkg-config)
1214 ("intltool" ,intltool)))
1215 (inputs
1216 `(("libdrm" ,libdrm)
1217 ("libx11" ,libx11)
1218 ("libxcb" ,libxcb)
b3546174 1219 ("libxxf86vm" ,libxxf86vm)
22070ad1
MB
1220 ("glib" ,glib) ;for Geoclue2 support
1221
1222 ;; To build the GTK3 GUI, we need these.
1223 ("gtk+" ,gtk+)
1224 ("python" ,python)
1225 ("python-pygobject" ,python-pygobject)
1226 ("python-pyxdg" ,python-pyxdg)))
6645753b
FPS
1227 (home-page "https://github.com/jonls/redshift")
1228 (synopsis "Adjust the color temperature of your screen")
1229 (description
1230 "Redshift adjusts the color temperature according to the position of the
1231sun. A different color temperature is set during night and daytime. During
1232twilight and early morning, the color temperature transitions smoothly from
1233night to daytime temperature to allow your eyes to slowly adapt. At night the
1234color temperature should be set to match the lamps in your room.")
1235 (license license:gpl3+)))
b4c400a7 1236
264a63d6
JH
1237(define-public redshift-wayland
1238 (let ((commit "7da875d34854a6a34612d5ce4bd8718c32bec804")
1239 (revision "1"))
1240 (package
1241 (name "redshift-wayland")
1242 (version (string-append "1.12-"
1243 revision "." (string-take commit 7)))
1244 (source (origin
1245 (method git-fetch)
1246 (uri (git-reference
b0e7b699 1247 (url "https://github.com/minus7/redshift")
264a63d6
JH
1248 (commit commit)))
1249 (file-name (string-append name "-" version))
1250 (sha256
1251 (base32
1252 "0nbkcw3avmzjg1jr1g9yfpm80kzisy55idl09b6wvzv2sz27n957"))))
1253 (build-system gnu-build-system)
b1affd47
MB
1254 (arguments
1255 '(#:phases (modify-phases %standard-phases
1256 (add-after 'install 'create-desktop-file
1257 (lambda* (#:key outputs #:allow-other-keys)
1258 ;; For the GeoClue provider to work, a .desktop file
1259 ;; needs to be provided. A template is available,
1260 ;; but it only gets installed when the GUI is enabled.
1261 ;; Install it manually for this Wayland variant.
1262 (let* ((out (assoc-ref outputs "out"))
1263 (desktop-file
1264 (string-append
1265 out "/share/applications/redshift.desktop")))
1266 (mkdir-p (dirname desktop-file))
1267 (copy-file "data/applications/redshift.desktop.in"
1268 desktop-file)
1269 (substitute* desktop-file
1270 (("^_") ""))
1271 #t))))))
264a63d6
JH
1272 (native-inputs
1273 `(("autoconf" ,autoconf)
1274 ("automake" ,automake)
1275 ("libtool" ,libtool)
1276 ("pkg-config" ,pkg-config)
1277 ("intltool" ,intltool)))
1278 (inputs
1279 `(("libdrm" ,libdrm)
1280 ("libx11" ,libx11)
1281 ("libxcb" ,libxcb)
1282 ("libxxf86vm" ,libxxf86vm)
1283 ("glib" ,glib) ; for Geoclue2 support
1284 ("wayland" ,wayland)))
1285 (home-page "https://github.com/minus7/redshift")
1286 (synopsis "Adjust the color temperature of your screen (with Wayland support)")
1287 (description
1288 "Redshift adjusts the color temperature according to the position of the
1289sun. A different color temperature is set during night and daytime. During
1290twilight and early morning, the color temperature transitions smoothly from
1291night to daytime temperature to allow your eyes to slowly adapt. At night the
1292color temperature should be set to match the lamps in your room.
1293
1294This is a fork with added support for Wayland using the wlr-gamma-control
1295protocol.")
1296 (license license:gpl3+))))
1297
b4c400a7
CAW
1298(define-public xscreensaver
1299 (package
1300 (name "xscreensaver")
515b0851 1301 (version "5.44")
b4c400a7
CAW
1302 (source
1303 (origin
1304 (method url-fetch)
1305 (uri
1306 (string-append "https://www.jwz.org/xscreensaver/xscreensaver-"
1307 version ".tar.gz"))
1308 (sha256
515b0851 1309 (base32 "15bv05vpfjwsrqbazrjmm382jd7vvw0mp6y9vasn6wvxzjf0in3k"))))
b4c400a7
CAW
1310 (build-system gnu-build-system)
1311 (arguments
4995a404 1312 `(#:tests? #f ; no check target
b4c400a7
CAW
1313 #:phases
1314 (modify-phases %standard-phases
1315 (add-before 'configure 'adjust-gtk-resource-paths
1316 (lambda _
1317 (substitute* '("driver/Makefile.in" "po/Makefile.in.in")
1318 (("@GTK_DATADIR@") "@datadir@")
c6bf07d1
MW
1319 (("@PO_DATADIR@") "@datadir@"))
1320 #t)))
b4c400a7
CAW
1321 #:configure-flags '("--with-pam" "--with-proc-interrupts"
1322 "--without-readdisplay")
4cf57c3c 1323 #:make-flags (list (string-append "AD_DIR="
b4c400a7 1324 (assoc-ref %outputs "out")
faf69055 1325 "/lib/X11/app-defaults"))))
b4c400a7
CAW
1326 (native-inputs
1327 `(("pkg-config" ,pkg-config)
1328 ("intltool" ,intltool)))
1329 (inputs
1330 `(("libx11" ,libx11)
1331 ("libxext" ,libxext)
1332 ("libxi" ,libxi)
1333 ("libxt" ,libxt)
1334 ("libxft" ,libxft)
1335 ("libxmu" ,libxmu)
1336 ("libxpm" ,libxpm)
1337 ("libglade" ,libglade)
1338 ("libxml2" ,libxml2)
1339 ("libsm" ,libsm)
4bd428a7 1340 ("libjpeg" ,libjpeg-turbo)
b4c400a7
CAW
1341 ("linux-pam" ,linux-pam)
1342 ("pango" ,pango)
1343 ("gtk+" ,gtk+)
1344 ("perl" ,perl)
1345 ("cairo" ,cairo)
1346 ("bc" ,bc)
1347 ("libxrandr" ,libxrandr)
1348 ("glu" ,glu)
1349 ("glib" ,glib)))
1350 (home-page "https://www.jwz.org/xscreensaver/")
1351 (synopsis "Classic screen saver suite supporting screen locking")
1352 (description
1353 "xscreensaver is a popular screen saver collection with many entertaining
1354demos. It also acts as a nice screen locker.")
1355 ;; xscreensaver doesn't have a single copyright file and instead relies on
1356 ;; source comment headers, though most files have the same lax
1357 ;; permissions. To reduce complexity, we're pointing at Debian's
1358 ;; breakdown of the copyright information.
1359 (license (license:non-copyleft
1360 (string-append
1361 "http://metadata.ftp-master.debian.org/changelogs/"
706998e7 1362 "/main/x/xscreensaver/xscreensaver_5.36-1_copyright")))))
f40dfcd0 1363
7bbe4655
IK
1364(define-public xssproxy
1365 (package
1366 (name "xssproxy")
1367 (version "1.0.0")
1368 (source (origin
1369 (method git-fetch)
1370 (uri (git-reference
1371 (url "https://github.com/timakro/xssproxy")
1372 (commit (string-append "v" version))))
1373 (file-name (string-append name "-" version "-checkout"))
1374 (sha256
1375 (base32
1376 "0c83wmipnsdnbihc5niyczs7jrkss2s8n6iwwjdia7hkjzbd0hl7"))))
1377 (build-system gnu-build-system)
1378 (arguments `(#:make-flags `("bindir=/bin"
1379 "man1dir=/share/man/man1"
1380 ,(string-append "DESTDIR=" (assoc-ref %outputs "out"))
1381 "CC=gcc")
1382 #:phases (modify-phases %standard-phases
1383 (delete 'configure)
1384 (delete 'check))))
1385 (native-inputs
1386 `(("pkg-config" ,pkg-config)))
1387 (inputs
1388 `(("glib" ,glib)
1389 ("libx11" ,libx11)
1390 ("libxext" ,libxext)
1391 ("libxscrnsaver" ,libxscrnsaver)
1392 ("dbus" ,dbus)))
1393 (synopsis "Forward freedesktop.org Idle Inhibition Service calls to Xss")
1394 (description "xssproxy implements the @code{org.freedesktop.ScreenSaver}
1395D-Bus interface described in the Idle Inhibition Service Draft by the
1396freedesktop.org developers. The inhibition of the screensaver is then
1397controlled using the XScreenSaverSuspend function from the Xss (X11 Screen
1398Saver extension) library.")
1399 (home-page "https://github.com/timakro/xssproxy")
1400 (license license:gpl3+)))
1401
cab1c117
MB
1402(define-public xsel
1403 (package
1404 (name "xsel")
1405 (version "1.2.0")
1406 (source (origin
1407 (method url-fetch)
1408 (uri (string-append "http://www.vergenet.net/~conrad/software"
1409 "/xsel/download/xsel-" version ".tar.gz"))
1410 (sha256
1411 (base32
1412 "070lbcpw77j143jrbkh0y1v10ppn1jwmjf92800w7x42vh4cw9xr"))))
1413 (build-system gnu-build-system)
1414 (inputs
1415 `(("libxt" ,libxt)))
1416 (home-page "http://www.vergenet.net/~conrad/software/xsel/")
1417 (synopsis "Manipulate X selection")
1418 (description
1419 "XSel is a command-line program for getting and setting the contents of
1420the X selection. Normally this is only accessible by manually highlighting
1421information and pasting it with the middle mouse button.
1422
1423XSel reads from standard input and writes to standard output by default,
1424but can also follow a growing file, display contents, delete entries and more.")
1425 (license (license:x11-style "file://COPYING"
1426 "See COPYING in the distribution."))))
1427
6cfd1a68
AK
1428(define-public xdpyprobe
1429 (package
1430 (name "xdpyprobe")
1431 (version "0.1")
1432 (source (origin
1433 (method url-fetch)
1434 (uri (string-append "https://github.com/alezost/" name
1435 "/releases/download/v" version
1436 "/" name "-" version ".tar.gz"))
1437 (sha256
1438 (base32
1439 "1h09wd2qcg08rj5hcakvdh9q01hkrj8vxly94ax3ch2x06lm0zq8"))))
1440 (build-system gnu-build-system)
1441 (inputs
1442 `(("libx11" ,libx11)))
1443 (home-page "https://github.com/alezost/xdpyprobe")
1444 (synopsis "Probe X server for connectivity")
1445 (description
1446 "Xdpyprobe is a tiny C program whose only purpose is to probe a
1447connectivity of the X server running on a particular @code{DISPLAY}.")
1448 (license license:gpl3+)))
1449
f40dfcd0
DM
1450(define-public rofi
1451 (package
1452 (name "rofi")
dc29bea3 1453 (version "1.5.4")
f40dfcd0
DM
1454 (source (origin
1455 (method url-fetch)
1456 (uri (string-append "https://github.com/DaveDavenport/rofi/"
1457 "releases/download/"
1458 version "/rofi-" version ".tar.xz"))
1459 (sha256
1460 (base32
dc29bea3 1461 "1nslmyqyzhfr4hxd4llqkkkb8ap8apkdna32rllvar7r576059ci"))))
f40dfcd0
DM
1462 (build-system gnu-build-system)
1463 (inputs
68c35ba9 1464 `(("pango" ,pango)
f40dfcd0
DM
1465 ("cairo" ,cairo)
1466 ("glib" ,glib)
1467 ("startup-notification" ,startup-notification)
23e12d9d 1468 ("librsvg" ,librsvg)
f40dfcd0
DM
1469 ("libxkbcommon" ,libxkbcommon)
1470 ("libxcb" ,libxcb)
1471 ("xcb-util" ,xcb-util)
68c35ba9 1472 ("xcb-util-xrm" ,xcb-util-xrm)
f40dfcd0
DM
1473 ("xcb-util-wm" ,xcb-util-wm)))
1474 (native-inputs
23e12d9d 1475 `(("bison" ,bison)
dfdf8d74 1476 ("check" ,check)
23e12d9d 1477 ("flex" ,flex)
a3a7eb2f 1478 ("glib:bin" ,glib "bin")
23e12d9d 1479 ("pkg-config" ,pkg-config)))
f40dfcd0 1480 (arguments
8cba7d2a 1481 `(#:parallel-tests? #f ; fails in some circumstances
46d6219d 1482 #:phases
f40dfcd0
DM
1483 (modify-phases %standard-phases
1484 (add-before 'configure 'adjust-tests
1485 (lambda _
1486 (substitute* '("test/helper-expand.c")
1487 (("~root") "/root")
1488 (("~") "")
a3a7eb2f 1489 (("g_get_home_dir \\(\\)") "\"/\""))
576e0ae4 1490 #t)))))
06229f18 1491 (home-page "https://github.com/DaveDavenport/rofi")
89be33f7
TGR
1492 (synopsis "Application launcher")
1493 (description "Rofi is a minimalist application launcher. It memorizes which
1494applications you regularly use and also allows you to search for an application
f40dfcd0
DM
1495by name.")
1496 (license license:expat)))
751f6871
ML
1497
1498(define-public tint2
1499 (package
1500 (name "tint2")
1ffe4171 1501 (version "0.14.6")
751f6871
ML
1502 (source (origin
1503 (method url-fetch)
1504 (uri (string-append "https://gitlab.com/o9000/" name
1505 "/repository/archive.tar.gz?ref=" version))
1506 (file-name (string-append name "-" version ".tar.gz"))
1507 (sha256
1508 (base32
1ffe4171 1509 "1kwzwxy4myagybm3rc7dgynfgp75742n348qibn1p2an9ggyivda"))))
751f6871
ML
1510 (build-system cmake-build-system)
1511 (arguments
1512 '(#:tests? #f ;no test target
1513 #:phases
1514 (modify-phases %standard-phases
1515 (add-after 'unpack 'fix-installation-prefix
1516 (lambda _
1517 (substitute* "CMakeLists.txt"
c6bf07d1
MW
1518 (("/etc") "${CMAKE_INSTALL_PREFIX}/etc"))
1519 #t)))))
751f6871
ML
1520 (inputs
1521 `(("gtk+" ,gtk+-2)
1522 ("imlib2" ,imlib2)
1523 ("librsvg" ,librsvg)
1524 ("libxcomposite" ,libxcomposite)
1525 ("libxdamage" ,libxdamage)
1526 ("libxft" ,libxft)
1527 ("libxinerama" ,libxinerama)
1528 ("libxrandr" ,libxrandr)
1529 ("startup-notification" ,startup-notification)))
1530 (native-inputs
b94a6ca0 1531 `(("gettext" ,gettext-minimal)
751f6871
ML
1532 ("pkg-config" ,pkg-config)))
1533 (home-page "https://gitlab.com/o9000/tint2")
1534 (synopsis "Lightweight task bar")
1535 (description
1536 "Tint2 is a simple task bar made for modern X window managers. It was
1537specifically made for Openbox but it should also work with other window
1538managers (GNOME, KDE, XFCE etc.).
1539
1540The taskbar includes transparency and color settings for the font, icons,
1541border, and background. It also supports multihead setups, customized mouse
1542actions, a built-in clock, a battery monitor and a system tray.")
1543 (license license:gpl2)))
4493a3c2 1544
37447422
MM
1545(define-public dzen
1546 (let ((commit "488ab66019f475e35e067646621827c18a879ba1")
1547 (revision "1"))
1548 (package
1549 (name "dzen")
1550 (version (string-append "0.9.5-" ; Taken from `config.mk`.
1551 revision "." (string-take commit 7)))
1552 (source (origin
1553 (method git-fetch)
1554 (uri (git-reference
b0e7b699 1555 (url "https://github.com/robm/dzen")
37447422
MM
1556 (commit commit)))
1557 (file-name (string-append name "-" version))
1558 (sha256
1559 (base32
1560 "0y47d6ii87vf4a517gi4fh0yl06f8b085sra77immnsasbq9pxnw"))))
1561 (build-system gnu-build-system)
1562 (arguments
1563 `(#:tests? #f ; No test suite.
1564 #:make-flags ; Replacement for `config.mk`.
1565 (list
1566 (string-append "VERSION = " ,version)
1567 (string-append "PREFIX = " %output)
1568 "MANPREFIX = ${PREFIX}/share/man"
1569 "INCS = -I."
1570 "LIBS = -lc -lX11 -lXinerama -lXpm $(shell pkg-config --libs xft)"
1571 "CFLAGS = -Wall -Os ${INCS} -DVERSION=\\\"${VERSION}\\\"\
1572 -DDZEN_XINERAMA -DDZEN_XPM -DDZEN_XFT $(shell pkg-config --cflags xft)"
1573 "LDFLAGS = ${LIBS}"
1574 "CC = gcc"
1575 "LD = ${CC}")
1576 #:phases
1577 (modify-phases %standard-phases
1578 (delete 'configure) ; No configuration script.
1579 ;; Use own make-flags instead of `config.mk`.
1580 (add-before 'build 'dont-include-config-mk
1581 (lambda _
1582 (substitute* "Makefile" (("include config.mk") ""))
1583 #t)))))
1584 (inputs
1585 `(("libx11" ,libx11)
1586 ("libxft" ,libxft)
1587 ("libxpm" ,libxpm)
1588 ("libxinerama" ,libxinerama)))
1589 (native-inputs `(("pkg-config" ,pkg-config)))
1590 (synopsis "General purpose messaging, notification and menuing program for X11")
1591 (description "Dzen is a general purpose messaging, notification and menuing
1592program for X11. It was designed to be fast, tiny and scriptable in any language.")
1593 (home-page "https://github.com/robm/dzen")
1594 (license license:expat))))
1595
af96c417
KA
1596(define-public xftwidth
1597 (package
1598 (name "xftwidth")
1599 (version "20170402")
1600 (source
1601 (origin
1602 (method git-fetch)
1603 (uri (git-reference
1604 (url "http://github.com/vixus0/xftwidth")
1605 (commit "35ff963908d41a8a6a7101c434c88255728025ee")))
1606 (sha256
1607 (base32
1608 "1jwl25785li24kbp0m1wxfwk4dgxkliynn03nsj813cjr34kq16h"))
1609 (file-name (string-append name "-" version "-checkout"))))
1610 (build-system gnu-build-system)
1611 (inputs `(("freetype" ,freetype)
1612 ("libx11" ,libx11)
1613 ("fontconfig" ,fontconfig)
1614 ("libxft" ,libxft)))
1615 (native-inputs
1616 `(("pkg-config" ,pkg-config)))
1617 (arguments
1618 '(#:phases
1619 (modify-phases %standard-phases
1620 (add-after 'unpack 'fix-makefile ; /usr/bin doesn't show up in PATH
1621 (lambda _ (substitute* "Makefile" (("usr/") "")) #t))
1622 (delete 'check) ; no check included in Makefile
1623 (delete 'configure))
1624 #:make-flags
1625 (let ((out (assoc-ref %outputs "out")))
1626 (list (string-append "DESTDIR=" out)))))
91e21700 1627 (home-page "https://github.com/vixus0/xftwidth")
af96c417
KA
1628 (synopsis "Calculator for determining pixel widths of displayed text using Xft fonts")
1629 (description "xftwidth is a small C program for calculating the pixel
1630widths of displayed text using Xft fonts. It is especially useful in scripts
1631for displaying text in graphical panels, menus, popups, and notification
1632windows generated using dzen. These scripts are often used in conjunction with
1633minimalistic tiling window managers such as herbstluftwm and bspwm.")
af96c417
KA
1634 (license license:expat)))
1635
4493a3c2
MB
1636(define-public xcb-util-xrm
1637 (package
1638 (name "xcb-util-xrm")
40fb6b84 1639 (version "1.3")
4493a3c2
MB
1640 (source (origin
1641 (method url-fetch)
1642 (uri (string-append
1643 "https://github.com/Airblader/xcb-util-xrm/releases"
1644 "/download/v" version "/xcb-util-xrm-" version ".tar.bz2"))
1645 (sha256
1646 (base32
40fb6b84 1647 "118cj1ybw86pgw0l5whn9vbg5n5b0ijcpx295mwahzi004vz671h"))
4493a3c2
MB
1648 (modules '((guix build utils)))
1649 (snippet
1650 ;; Drop bundled m4.
6cbee49d
MW
1651 '(begin
1652 (delete-file-recursively "m4")
1653 #t))))
4493a3c2
MB
1654 (build-system gnu-build-system)
1655 (native-inputs
1656 `(("pkg-config" ,pkg-config)
1657 ("m4" ,m4)
1658 ("libx11" ,libx11))) ; for tests
1659 (inputs
1660 `(("libxcb" ,libxcb)
1661 ("xcb-util" ,xcb-util)))
1662 (home-page "https://github.com/Airblader/xcb-util-xrm")
1663 (synopsis "XCB utility functions for the X resource manager")
1664 (description
1665 "The XCB util module provides a number of libraries which sit on
1666top of libxcb, the core X protocol library, and some of the extension
1667libraries. These experimental libraries provide convenience functions
1668and interfaces which make the raw X protocol more usable. Some of the
1669libraries also provide client-side code which is not strictly part of
1670the X protocol but which has traditionally been provided by Xlib.
1671
1672XCB util-xrm module provides the following libraries:
1673
1674- xrm: utility functions for the X resource manager.")
1675 (license license:x11)))
01278f16
P
1676
1677(define-public xcalib
1678 (package
1679 (name "xcalib")
6d727bf4
TGR
1680 (version "0.10")
1681 (home-page "https://github.com/OpenICC/xcalib")
01278f16 1682 (source (origin
6d727bf4
TGR
1683 (method git-fetch)
1684 (uri (git-reference
1685 (url home-page)
1686 (commit version)))
f1d4d79f 1687 (file-name (git-file-name name version))
01278f16
P
1688 (sha256
1689 (base32
6d727bf4
TGR
1690 "05fzdjmhiafgi2jf0k41i3nm0837a78sb6yv59cwc23nla8g0bhr"))
1691 (patches
1692 (list
1693 ;; Add missing documentation for the new --output option.
1694 ;; This upstream patch can be removed on the next update.
1695 (origin
1696 (method url-fetch)
1697 (uri (string-append
1698 home-page "/commit/"
1699 "ae03889b91fe984b18e925ad2b5e6f2f7354e058.patch"))
1700 (file-name "xcalib-update-man-page.patch")
1701 (sha256
1702 (base32
1703 "0f7b4d5484x4b9n1bwhqmar0kcaa029ffff7bp3xpr734n1qgqb6")))))))
1704 (build-system cmake-build-system)
01278f16 1705 (arguments
6d727bf4 1706 '(#:tests? #f)) ; no test suite
c695fb76
TGR
1707 (inputs `(("libx11" ,libx11)
1708 ("libxext" ,libxext)
6d727bf4 1709 ("libxrandr" ,libxrandr)
c695fb76 1710 ("libxxf86vm" ,libxxf86vm)))
01278f16
P
1711 (synopsis "Tiny monitor calibration loader for XFree86 (or X.org)")
1712 (description "xcalib is a tiny tool to load the content of vcgt-Tags in ICC
1713profiles to the video card's gamma ramp. It does work with most video card
1714drivers except the generic VESA driver. Alter brightness, contrast, RGB, and
1715invert colors on a specific display/screen.")
01278f16 1716 (license license:gpl2)))
f021382b
MB
1717
1718(define-public nxbelld
1719 (package
1720 (name "nxbelld")
1721 (version "0.1.2")
1722 (source (origin
1723 (method git-fetch)
1724 (uri (git-reference
b0e7b699 1725 (url "https://github.com/dusxmt/nxbelld")
f021382b
MB
1726 (commit version)))
1727 (sha256
1728 (base32
1729 "04qwhmjs51irinz5mjlxdb3dc6vr79dqmc5fkj80x1ll3ylh5n3z"))
1730 (file-name (git-file-name name version))))
1731 (build-system gnu-build-system)
1732 (arguments '(#:configure-flags `("--enable-sound"
1733 "--enable-wave"
4cbbb160
RW
1734 "--enable-alsa")))
1735 (native-inputs `(("autoconf" ,autoconf)
1736 ("automake" ,automake)
1737 ("pkg-config" ,pkg-config)
1738 ("perl" ,perl)))
f021382b
MB
1739 (inputs `(("libx11" ,libx11)
1740 ("alsa-lib" ,alsa-lib)))
1741 (synopsis "Daemon that performs an action every time the X11 bell is rung")
1742 (description "nxbelld is a tiny utility to aid people who either don't
1743like the default PC speaker beep, or use a sound driver that doesn't have
1744support for the PC speaker. The utility performs a given action every time
1745the X bell is rung. The actions nxbelld can currently perform include running
1746a specified program, emulating the PC speaker beep using the sound card (default),
1747or playing a PCM encoded WAVE file.")
1748 (home-page "https://github.com/dusxmt/nxbelld")
1749 (license license:gpl3+)))
1d752e43
MG
1750
1751(define-public xautolock
1752 (package
1753 (name "xautolock")
1754 (version "2.2")
1755 (source (origin
1756 (method url-fetch)
46128e94
TGR
1757 (uri (string-append "https://www.ibiblio.org/pub/linux/X11/"
1758 "screensavers/xautolock-" version ".tgz"))
1d752e43
MG
1759 (sha256
1760 (base32
1761 "18jd3k3pvlm5x1adyqw63z2b3f4ixh9mfvz9asvnskk3fm8jgw0i"))))
1762 (build-system gnu-build-system)
1763 (native-inputs
1764 `(("imake" ,imake)))
1765 (inputs
1766 `(("libx11" ,libx11)
1767 ("libxext" ,libxext)
1768 ("libxscrnsaver" ,libxscrnsaver)))
1769 (arguments
1770 `(#:tests? #f
1771 #:phases
1772 (modify-phases %standard-phases
1773 (replace 'configure
1774 (lambda* (#:key inputs outputs #:allow-other-keys)
1775 (let ((imake (assoc-ref inputs "imake"))
1776 (out (assoc-ref outputs "out")))
1777 ;; Generate Makefile
1778 (invoke "xmkmf")
1779 (substitute* "Makefile"
1780 ;; These imake variables somehow remain undefined
1781 (("DefaultGcc2[[:graph:]]*Opt") "-O2")
1782 ;; Reset a few variable defaults that are set in imake templates
1783 ((imake) out)
1784 (("(MANPATH = )[[:graph:]]*" _ front)
1785 (string-append front out "/share/man")))
1786 ;; Old BSD-style 'union wait' is unneeded (defining
1787 ;; _USE_BSD did not seem to fix it)
1788 (substitute* "src/engine.c"
1789 (("union wait status") "int status = 0"))
1790 #t)))
1791 (add-after 'install 'install/man
1792 (lambda _
e61c2991 1793 (invoke "make" "install.man"))))))
46128e94 1794 (home-page "https://ibiblio.org/pub/Linux/X11/screensavers/")
1d752e43
MG
1795 (synopsis "Program launcher for idle X sessions")
1796 (description "Xautolock monitors input devices under the X Window
1797System, and launches a program of your choice if there is no activity after
1798a user-configurable period of time.")
1799 (license license:gpl2)))
af1e3dfe
T
1800
1801(define-public screen-message
1802 (package
1803 (name "screen-message")
1804 (version "0.25")
1805 (source (origin
1806 (method url-fetch)
1807 (uri (string-append
1808 "https://www.joachim-breitner.de/archive/screen-message"
1809 "/screen-message-" version ".tar.gz"))
1810 (sha256
1811 (base32
1812 "1lw955qq5pq010lzmaf32ylj2iprgsri9ih4hx672c3f794ilab0"))))
1813 (build-system gnu-build-system)
1814 (inputs `(("gtk3" ,gtk+)
1815 ("gdk" ,gdk-pixbuf)
1816 ("pango" ,pango)))
1817 (native-inputs `(("pkg-config" ,pkg-config)))
1818 (arguments
1819 ;; The default configure puts the 'sm' binary in games/ instead of bin/ -
1820 ;; this fixes it:
1821 `(#:make-flags (list (string-append "execgamesdir=" %output "/bin"))))
1822 (synopsis "Print messages on your screen")
1823 (description "@code{screen-message} is a tool for displaying text on
1824your screen. It will make the text as large as possible and display it
1825with black color on a white background (colors are configurable on the
1826commandline).")
1827 (home-page "https://www.joachim-breitner.de/projects#screen-message")
1828 (license license:gpl2+)))
428adbc2
PN
1829
1830(define-public xss-lock
1831 ;; xss-lock does not seem to be maintained any longer, but the last commits
1832 ;; fix important issues so we package them.
1833 (let ((version "0.3.0")
1834 (revision "1")
1835 (commit "1e158fb20108058dbd62bd51d8e8c003c0a48717"))
1836 (package
1837 (name "xss-lock")
1838 (version (git-version version revision commit))
1839 (source (origin
1840 (method git-fetch)
1841 (uri (git-reference
1842 (url "https://bitbucket.org/raymonad/xss-lock.git")
1843 (commit commit)))
1844 (file-name (git-file-name name version))
1845 (sha256
1846 (base32
1847 "10hx7k7ga8g08akwz8qrsvj8iqr5nd4siiva6sjx789jvf0sak7r"))))
1848 (build-system cmake-build-system)
1849 (inputs `(("glib" ,glib)
1850 ("xcb-util" ,xcb-util)))
1851 (native-inputs
1852 `(("python-docutils" ,python-docutils)
1853 ("pkg-config" ,pkg-config)))
1854 (arguments
1855 `(#:tests? #f))
1856 (synopsis "Use external screen locker on events")
1857 (description "@code{xss-lock} listens to X signals to fire up a
7f7a6e87 1858user-defined screensaver. In effect this automatically locks the
428adbc2
PN
1859screen when closing a laptop lid or after a period of user inactivity (as set
1860with @code{xset s TIMEOUT}). The notifier command, if specified, is executed
1861first. Additionally, xss-lock uses the inhibition logic to lock the screen
1862before the system goes to sleep.")
1863 (home-page "https://bitbucket.org/raymonad/xss-lock")
1864 (license license:expat))))
19110787
EF
1865
1866(define-public python-pyperclip
1867 (package
1868 (name "python-pyperclip")
1869 (version "1.6.4")
1870 (source
1871 (origin
1872 (method url-fetch)
1873 (uri (pypi-uri "pyperclip" version))
1874 (sha256
1875 (base32
1876 "1p505c23ji06r28k1y67siihsbdzdf1brhlqpyv9ams4gk9863pp"))))
1877 (build-system python-build-system)
1878 (arguments
1879 '(#:tests? #f)) ; Not clear how to make tests pass.
1880 (inputs
1881 `(("xclip" ,xclip)
1882 ("xsel" ,xsel)))
1883 (home-page "https://github.com/asweigart/pyperclip")
1884 (synopsis "Python clipboard module")
1885 (description
1886 "Pyperclip is a clipboard module for Python, handling copy/pasting from
1887the X11 clipboard")
1888 (license license:bsd-3)))
90337891
PN
1889
1890(define-public numlockx
1891 (package
1892 (name "numlockx")
1893 (version "1.2")
1894 (source (origin
1895 (method git-fetch)
1896 (uri (git-reference
1897 ;; It seems that upstream is gone.
1898 (url "https://github.com/rg3/numlockx")
1899 (commit version)))
1900 (file-name (git-file-name name version))
1901 (sha256
1902 (base32
1903 "1w49fayhwzn5rx0z1q2lrvm7z8jrd34lgb89p853a024bixc3cf2"))))
1904 (build-system gnu-build-system)
1905 (inputs
1906 `(("xorg-server" ,xorg-server)))
1907 (home-page "https://github.com/rg3/numlockx")
1908 (synopsis "Turns on the numlock key in X11")
1909 (description "@command{numlockx} is a tiny program that lets you turn on
1910the numlock key in X11. It can be called from the user's initialization files
1911to automatically turn it on on login.")
1912 (license license:expat)))
67e0fb8b
RW
1913
1914(define-public xrandr-invert-colors
1915 (package
1916 (name "xrandr-invert-colors")
1917 (version "0.01")
1918 (source (origin
1919 (method git-fetch)
1920 (uri (git-reference
b0e7b699 1921 (url "https://github.com/zoltanp/xrandr-invert-colors")
67e0fb8b
RW
1922 (commit (string-append "v" version))))
1923 (file-name (git-file-name name version))
1924 (sha256
1925 (base32
1926 "1br3x9vr6xm4ika06n8cfxx1b3wdchdqvyzjl4y1chmivrml8x9h"))))
1927 (build-system gnu-build-system)
1928 (arguments
1929 `(#:make-flags (list "CC=gcc")
1930 #:tests? #f ; there are none
1931 #:phases
1932 (modify-phases %standard-phases
1933 (delete 'configure)
1934 (replace 'install
1935 (lambda* (#:key outputs #:allow-other-keys)
1936 (let* ((out (assoc-ref outputs "out"))
1937 (bin (string-append out "/bin")))
1938 (install-file "xrandr-invert-colors.bin" bin)
1939 #t))))))
1940 (inputs
1941 `(("libxrandr" ,libxrandr)))
1942 (home-page "https://github.com/zoltanp/xrandr-invert-colors")
1943 (synopsis "Invert display colors")
1944 (description "This package provides a small utility for inverting the
1945colors on all monitors attached to an XRandR-capable X11 display server.")
1946 (license license:gpl3+)))
d852cf9e
NN
1947
1948(define-public sct
1949 (package
1950 (name "sct")
d9fda980 1951 (version "0.5")
d852cf9e
NN
1952 (source
1953 (origin
1954 (method url-fetch)
1955 (uri
1956 (string-append "https://www.umaxx.net/dl/sct-"
1957 version ".tar.gz"))
1958 (sha256
d9fda980 1959 (base32 "0lrhx771iccbw04wrhj0ygids1pzmjfc4hvklm30m3p3flvhqf0m"))))
d852cf9e
NN
1960 (build-system gnu-build-system)
1961 (arguments
395659d8
TGR
1962 `(#:make-flags
1963 (list ,(string-append "CC=" (cc-for-target)))
1964 #:tests? #f ; no test suite
d852cf9e
NN
1965 #:phases
1966 (modify-phases %standard-phases
1967 (delete 'configure)
1968 (add-after 'unpack 'fix-sctd-paths
1969 (lambda* (#:key outputs inputs #:allow-other-keys)
1970 (let ((out (assoc-ref outputs "out"))
1971 (coreutils (assoc-ref inputs "coreutils"))
1972 (inetutils (assoc-ref inputs "inetutils"))
1973 (sed (assoc-ref inputs "sed")))
1974 (substitute* "sctd.sh"
1975 (("\\$\\(which sct\\)") (string-append out "/bin/sct"))
1976 (("date") (string-append coreutils "/bin/date"))
1977 (("printf") (string-append coreutils "/bin/printf"))
1978 (("sleep") (string-append coreutils "/bin/sleep"))
1979 (("logger") (string-append inetutils "/bin/logger"))
1980 (("sed") (string-append sed "/bin/sed"))))))
1981 (replace 'install
1982 (lambda* (#:key outputs #:allow-other-keys)
1983 (let ((out (assoc-ref outputs "out")))
1984 (install-file "sct" (string-append out "/bin"))
1985 (install-file "sctd.sh" (string-append out "/bin"))
1986 (install-file "sct.1" (string-append out "/man/man1"))
1987 (install-file "sctd.1" (string-append out "/man/man1"))
1988 (rename-file (string-append out "/bin/sctd.sh")
1989 (string-append out "/bin/sctd"))
1990 #t))))))
1991 (inputs
1992 `(("coreutils" ,coreutils) ; sctd uses "date", "printf" and "sleep"
1993 ("inetutils" ,inetutils) ; sctd uses "logger"
1994 ("libxrandr" ,libxrandr)
1995 ("sed" ,sed))) ; sctd uses "sed"
1996 (home-page "https://www.umaxx.net")
1997 (synopsis "Set the color temperature of the screen")
1998 (description "@code{sct} is a lightweight utility to set the color
1999temperature of the screen.")
dbd346ae 2000 (license (license:non-copyleft "file://sct.c")))) ; "OpenBSD" license
95bf2fb6 2001
d2536ed1
JK
2002(define-public xsecurelock
2003 (package
2004 (name "xsecurelock")
2005 (version "1.6.0")
2006 (source (origin
2007 (method url-fetch)
2008 (uri (string-append
2009 "https://github.com/google/xsecurelock/releases"
2010 "/download/v" version "/xsecurelock-" version ".tar.gz"))
2011 (sha256
2012 (base32 "070gknyv0s5hz9hkc6v73m2v7ssyjwgl93b5hd4glayfqxqjbmdp"))))
2013 (build-system gnu-build-system)
2014 (arguments
2015 '(#:configure-flags
2016 '("--with-pam-service-name=login"
2017 "--with-xkb"
2018 "--with-default-authproto-module=/run/setuid-programs/authproto_pam")))
2019 (native-inputs
2020 `(("pandoc" ,ghc-pandoc)
2021 ("pkg-config" ,pkg-config)))
2022 (inputs
2023 `(("fontconfig" ,fontconfig)
2024 ("libX11" ,libx11)
2025 ("libxcomposite" ,libxcomposite)
2026 ("libxext" ,libxext)
2027 ("libxfixes" ,libxfixes)
2028 ("libxft" ,libxft)
2029 ("libxmu" ,libxmu)
2030 ("libxrandr" ,libxrandr)
2031 ("libxscrnsaver" ,libxscrnsaver)
2032 ("linux-pam" ,linux-pam)))
2033 (home-page "https://github.com/google/xsecurelock")
2034 (synopsis "X11 screen lock utility with the primary goal of security")
2035 (description "@code{xsecurelock} is an X11 screen locker which uses
09e74518 2036a modular design to avoid the usual pitfalls of screen locking utility design.
d2536ed1
JK
2037
2038As a consequence of the modular design, the usual screen locker service
2039shouldn't be used with @code{xsecurelock}. Instead, you need to add a helper
2040binary to setuid-binaries:
2041@example
2042(setuid-programs (cons*
2043 (file-append xsecurelock \"/libexec/xsecurelock/authproto_pam\")
2044 %setuid-programs))
2045@end example")
2046 (license license:asl2.0)))
2047
95bf2fb6
RH
2048(define-public wl-clipboard
2049 (package
2050 (name "wl-clipboard")
ab2454ce 2051 (version "2.0.0")
95bf2fb6
RH
2052 (source
2053 (origin
2054 (method git-fetch)
2055 (uri (git-reference
b0e7b699 2056 (url "https://github.com/bugaevc/wl-clipboard")
ab2454ce 2057 (commit (string-append "v" version))))
95bf2fb6
RH
2058 (file-name (git-file-name name version))
2059 (sha256
ab2454ce 2060 (base32 "0c4w87ipsw09aii34szj9p0xfy0m00wyjpll0gb0aqmwa60p0c5d"))))
95bf2fb6
RH
2061 (build-system meson-build-system)
2062 (native-inputs
2063 `(("pkg-config" ,pkg-config)))
2064 (inputs
2065 `(("wayland" ,wayland)
2066 ("wayland-protocols" ,wayland-protocols)))
2067 (home-page "https://github.com/bugaevc/wl-clipboard")
2068 (synopsis "Command-line copy/paste utilities for Wayland")
2069 (description "Wl-clipboard is a set of command-line copy/paste utilities for
2070Wayland.")
2071 (license license:gpl3+)))
9ba1e308
2072
2073(define-public autocutsel
2074 (package
2075 (name "autocutsel")
2076 (version "0.10.0")
2077 (source (origin
2078 (method url-fetch)
2079 (uri (string-append "https://github.com/sigmike/autocutsel"
2080 "/releases/download/" version "/"
2081 "autocutsel-" version ".tar.gz"))
2082 (sha256
2083 (base32
2084 "0gsys2dzh4az51ndcsabhlbbrjn2nm75lnjr45kg6r8sm8q66dx2"))))
2085 (build-system gnu-build-system)
2086 (arguments
2087 '(#:tests? #f)) ; no "check" target
2088 (native-inputs `(("libx11" ,libx11)
2089 ("libxaw" ,libxaw)))
2090 (home-page "https://www.nongnu.org/autocutsel/")
2091 (synopsis "Automated X11 clipboard and cutbuffer synchronization")
2092 (description "@code{autocutsel} tracks changes in the server's cutbuffer
2093and clipboard selection. When the clipboard is changed, it updates the
2094cutbuffer. When the cutbuffer is changed, it owns the clipboard selection.
2095The cutbuffer and clipboard selection are always synchronized.")
2096 (license license:gpl2+)))
198af489
GLV
2097
2098(define-public jgmenu
2099 (package
2100 (name "jgmenu")
69b03ecd 2101 (version "4.1.0")
198af489
GLV
2102 (source
2103 (origin
2104 (method git-fetch)
2105 (uri (git-reference
b0e7b699 2106 (url "https://github.com/johanmalm/jgmenu")
198af489
GLV
2107 (commit (string-append "v" version))))
2108 (file-name (git-file-name name version))
2109 (sha256
2110 (base32
69b03ecd 2111 "1wsh37rapb1bszlq36hvwxqvfds39hbvbl152m8as4zlh93wfvvk"))))
198af489
GLV
2112 (build-system gnu-build-system)
2113 (native-inputs
8c5cde25
GLV
2114 `(("cppcheck" ,cppcheck)
2115 ("perl" ,perl)
198af489
GLV
2116 ("pkg-config" ,pkg-config)))
2117 (inputs
2118 `(("cairo" ,cairo)
8c5cde25 2119 ("glib" ,glib)
198af489
GLV
2120 ("librsvg" ,librsvg)
2121 ("libx11" ,libx11)
2122 ("libxml2" ,libxml2)
2123 ("libxrandr" ,libxrandr)
8c5cde25 2124 ("pango" ,pango)))
198af489 2125 (arguments
8c5cde25
GLV
2126 `(#:phases
2127 (modify-phases %standard-phases
2128 (add-after 'unpack 'fix-tests
2129 (lambda _
2130 (substitute* "scripts/cppcheck-wrapper.sh"
2131 (("--library=/usr/share/cppcheck/cfg/gnu\\.cfg")
2132 ""))
2133 #t))
2134 (replace 'configure
2135 (lambda* (#:key outputs #:allow-other-keys)
2136 (setenv "CC" "gcc")
2137 (invoke "./configure"
2138 (string-append "--prefix=" (assoc-ref outputs "out")))
2139 #t)))))
198af489
GLV
2140 (synopsis "Simple X11 menu")
2141 (description
2142 "This is a simple menu for X11 designed for scripting and tweaking. It
2143can optionally use some appearance settings from XSettings, tint2 and GTK.")
2144 (home-page "https://jgmenu.github.io/")
2145 (license license:gpl2)))
261d0e8e 2146
79e5d150
JS
2147(define-public xwallpaper
2148 (package
2149 (name "xwallpaper")
00466df4 2150 (version "0.6.5")
79e5d150
JS
2151 (source
2152 (origin
2153 (method git-fetch)
2154 (uri (git-reference
2155 (url "https://github.com/stoeckmann/xwallpaper")
2156 (commit (string-append "v" version))))
2157 (file-name (git-file-name name version))
2158 (sha256
00466df4 2159 (base32 "121ai4dc0v65qk12gn9w62ixly8hc8a5qrygkbb82vy8ck4jqxj7"))))
79e5d150
JS
2160 (build-system gnu-build-system)
2161 (native-inputs
2162 `(("autoconf" ,autoconf)
2163 ("automake" ,automake)
2164 ("pkg-config" ,pkg-config)))
2165 (inputs
2166 `(("libjpeg-turbo" ,libjpeg-turbo)
2167 ("libpng" ,libpng)
2168 ("libxpm" ,libxpm)
2169 ("pixman" ,pixman)
2170 ("xcb-util" ,xcb-util)
2171 ("xcb-util-image" ,xcb-util-image)))
2172 (home-page "https://github.com/stoeckmann/xwallpaper")
2173 (synopsis "Wallpaper setting utility for X")
2174 (description
2175 "The xwallpaper utility allows you to set image files as your X
2176wallpaper. JPEG, PNG, and XPM file formats are supported.
2177
2178The wallpaper is also advertised to programs which support semi-transparent
2179backgrounds.")
2180 (license license:isc)))
2181
2a2da783
IVB
2182(define-public xwrits
2183 (package
2184 (name "xwrits")
2185 (version "2.26")
2186 (source
2187 (origin
2188 (method url-fetch)
2189 (uri (string-append "https://www.lcdf.org/~eddietwo/xwrits/"
2190 "xwrits-" version ".tar.gz"))
2191 (sha256
2192 (base32 "1n7y0fqpcvmzznvbsn14hzy5ddaa3lilm8aw6ckscqndnh4lijma"))))
2193 (build-system gnu-build-system)
2194 (arguments
2195 `(#:phases
2196 (modify-phases %standard-phases
2197 (add-after 'install 'install-docs
2198 (lambda* (#:key outputs #:allow-other-keys)
2199 (let* ((out (assoc-ref outputs "out"))
2200 (doc (string-append out "/share/doc/xwrits")))
2201 (install-file "GESTURES" doc)
2202 (install-file "README" doc)
2203 #t))))))
2204 (inputs
2205 `(("libx11" ,libx11)
2206 ("libxinerama" ,libxinerama)))
2207 (home-page "https://www.lcdf.org/~eddietwo/xwrits/")
2208 (synopsis "Reminds you to take wrist breaks")
2209 (description "Xwrits reminds you to take wrist breaks for prevention or
2210management of repetitive stress injuries. When you should take a break, it
2211pops up an X window, the warning window. You click on the warning window,
2212then take a break. The window changes appearance while you take the break.
2213It changes again when your break is over. Then you just resume typing.
2214Xwrits hides itself until you should take another break.")
2215 (license license:gpl2)))
2216
261d0e8e
DW
2217(define-public xsettingsd
2218 (package
2219 (name "xsettingsd")
2220 (version "1.0.0")
2221 (source
2222 (origin
2223 (method git-fetch)
2224 (uri (git-reference
b0e7b699 2225 (url "https://github.com/derat/xsettingsd")
261d0e8e
DW
2226 (commit (string-append "v" version))))
2227 (file-name (git-file-name name version))
2228 (sha256
2229 (base32
2230 "05m4jlw0mgwp24cvyklncpziq1prr2lg0cq9c055sh4n9d93d07v"))))
2231 (build-system scons-build-system)
2232 (inputs
2233 `(("libx11" ,libx11)))
2234 (native-inputs
2235 `(("pkg-config" ,pkg-config)
2236 ("googletest" ,googletest)
2237 ("googletest-source" ,(package-source googletest))))
2238 (arguments
2239 `(#:scons ,scons-python2
2240 #:scons-flags
2241 (list "CC=gcc")
2242 #:phases
2243 (modify-phases %standard-phases
2244 (add-before 'build 'patch-sconstruct
2245 (lambda* (#:key inputs #:allow-other-keys)
2246 (substitute* "SConstruct"
2247 ;; scons doesn't pick up environment variables automatically
2248 ;; so it needs help to find path variables
2249 (("env = Environment\\(")
2250 "env = Environment(
2251 ENV = {
2252 'PATH': os.environ['PATH'],
8f929fdf 2253 'CPATH': os.environ['C_INCLUDE_PATH'],
261d0e8e
DW
2254 'LIBRARY_PATH': os.environ['LIBRARY_PATH'],
2255 'PKG_CONFIG_PATH': os.environ['PKG_CONFIG_PATH']
2256 },")
2257 ;; Update path to gtest source files used in tests
2258 (("/usr/src/gtest") (string-append
2259 (assoc-ref inputs "googletest-source")
2260 "/googletest"))
2261 ;; Exclude one warning that causes a build error
2262 (("-Werror") "-Werror -Wno-error=sign-compare"))
2263 #t))
2264 ;; The SConstruct script doesn't configure installation so
2265 ;; binaries must be copied to the output path directly
2266 (replace 'install
2267 (lambda* (#:key outputs #:allow-other-keys)
2268 (let* ((out (assoc-ref outputs "out"))
2269 (bin (string-append out "/bin")))
2270 (mkdir-p bin)
2271 (install-file "xsettingsd" bin)
2272 (install-file "dump_xsettings" bin)
2273 #t))))))
2274 (home-page "https://github.com/derat/xsettingsd")
2275 (synopsis "Xorg settings daemon")
2276 (description "@command{xsettingsd} is a lightweight daemon that provides settings to
2277Xorg applications via the XSETTINGS specification. It is used for defining
2278font and theme settings when a complete desktop environment (GNOME, KDE) is
2279not running. With a simple @file{.xsettingsd} configuration file one can avoid
2280configuring visual settings in different UI toolkits separately.")
2281 (license license:bsd-3)))
51f187be
DC
2282
2283(define-public clipnotify
2284 (package
2285 (name "clipnotify")
2286 (version "1.0.2")
2287 (source
2288 (origin
2289 (method git-fetch)
2290 (uri (git-reference
b0e7b699 2291 (url "https://github.com/cdown/clipnotify")
51f187be
DC
2292 (commit version)))
2293 (file-name (git-file-name name version))
2294 (sha256
2295 (base32
2296 "1v3ydm5ljy8z1savmdxrjyx7a5bm5013rzw80frp3qbbjaci0wbg"))))
2297 (build-system gnu-build-system)
2298 (arguments
2299 `(#:phases
2300 (modify-phases %standard-phases
2301 (delete 'configure)
2302 (replace 'install
2303 (lambda* (#:key inputs outputs #:allow-other-keys)
2304 (let* ((out (assoc-ref outputs "out"))
2305 (bin (string-append out "/bin"))
2306 (doc (string-append %output "/share/doc/" ,name "-" ,version)))
2307 (install-file "clipnotify" bin)
2308 (install-file "README.md" doc)
2309 #t))))
3a169fe3
TGR
2310 #:make-flags
2311 (list ,(string-append "CC=" (cc-for-target)))
2312 #:tests? #f)) ; no test suite
51f187be
DC
2313 (inputs
2314 `(("libx11" ,libx11)
2315 ("libXfixes" ,libxfixes)))
2316 (home-page "https://github.com/cdown/clipnotify")
2317 (synopsis "Notify on new X clipboard events")
2318 (description "@command{clipnotify} is a simple program that, using the
2319XFIXES extension to X11, waits until a new selection is available and then
2320exits.
2321
2322It was primarily designed for clipmenu, to avoid polling for new selections.
2323
2324@command{clipnotify} doesn't try to print anything about the contents of the
2325selection, it just exits when it changes. This is intentional -- X11's
2326selection API is verging on the insane, and there are plenty of others who
2327have already lost their sanity to bring us xclip/xsel/etc. Use one of those
2328tools to complement clipnotify.")
2329 (license license:public-domain)))
ad2c0f5b
DC
2330
2331(define-public clipmenu
1ace39da 2332 (let ((commit "bcbe7b144598db4a103f14e8408c4b7327d6d5e1")
ad2c0f5b
DC
2333 (revision "1"))
2334 (package
08df188e 2335 (name "clipmenu")
1ace39da 2336 (version (string-append "6.0.1-"
08df188e
DC
2337 revision "." (string-take commit 7)))
2338 (source
2339 (origin
2340 (method git-fetch)
2341 (uri (git-reference
b0e7b699 2342 (url "https://github.com/cdown/clipmenu")
08df188e
DC
2343 (commit commit)))
2344 (file-name (git-file-name name version))
2345 (sha256
2346 (base32
9fb2b7ee 2347 "0053j4i14lz5m2bzc5sch5id5ilr1bl196mp8fp0q8x74w3vavs9"))))
08df188e
DC
2348 (build-system gnu-build-system)
2349 (arguments
2350 `(#:phases
2351 (modify-phases %standard-phases
08df188e
DC
2352 (delete 'configure)
2353 (delete 'build)
2354 (replace 'install
2355 (lambda* (#:key inputs outputs #:allow-other-keys)
2356 (let* ((out (assoc-ref outputs "out"))
2357 (bin (string-append out "/bin"))
2358 (doc (string-append %output "/share/doc/"
2359 ,name "-" ,version)))
2360 (install-file "clipdel" bin)
2361 (install-file "clipmenu" bin)
2362 (install-file "clipmenud" bin)
2363 (install-file "README.md" doc)
f5e06344
DC
2364 #t)))
2365 (add-after 'install 'wrap-script
2366 (lambda* (#:key inputs outputs #:allow-other-keys)
2367 (let* ((out (assoc-ref outputs "out"))
2368 (clipnotify (assoc-ref inputs "clipnotify"))
2369 (coreutils-minimal (assoc-ref inputs "coreutils-minimal"))
2370 (gawk (assoc-ref inputs "gawk"))
2371 (util-linux (assoc-ref inputs "util-linux"))
2372 (xdotool (assoc-ref inputs "xdotool"))
2373 (xsel (assoc-ref inputs "xsel")))
2374 (for-each
2375 (lambda (prog)
2376 (wrap-script (string-append out "/bin/" prog)
2377 `("PATH" ":" prefix
2378 ,(map (lambda (dir)
2379 (string-append dir "/bin"))
2380 (list clipnotify coreutils-minimal
2381 gawk util-linux xdotool xsel)))))
2382 '("clipmenu" "clipmenud" "clipdel")))
2383 #t))
2384 (replace 'check
2385 (lambda* (#:key inputs outputs #:allow-other-keys)
2386 ;; substitute a shebang appearing inside a string (the test
2387 ;; file writes this string to a temporary file):
2388 (substitute* "tests/test-clipmenu"
2389 (("#!/usr/bin/env bash")
2390 (string-append "#!" (which "bash"))))
2391 (invoke "tests/test-clipmenu")
2392 #t)))))
08df188e
DC
2393 (inputs
2394 `(("clipnotify" ,clipnotify)
f5e06344
DC
2395 ("coreutils-minimal" ,coreutils-minimal)
2396 ("gawk" ,gawk)
2397 ("guile" ,guile-3.0) ; for wrap-script
2398 ("util-linux" ,util-linux)
2399 ("xdotool" ,xdotool)
08df188e
DC
2400 ("xsel" ,xsel)))
2401 (home-page "https://github.com/cdown/clipmenu")
2402 (synopsis "Simple clipboard manager using dmenu or rofi and xsel")
2403 (description "Start @command{clipmenud}, then run @command{clipmenu} to
ad2c0f5b
DC
2404select something to put on the clipboard.
2405
2406When @command{clipmenud} detects changes to the clipboard contents, it writes
2407them out to the cache directory. @command{clipmenu} reads the cache directory
2408to find all available clips and launches @command{dmenu} (or @command{rofi},
2409depending on the value of @code{CM_LAUNCHER}) to let the user select a clip.
2410After selection, the clip is put onto the PRIMARY and CLIPBOARD X selections.")
08df188e 2411 (license license:public-domain))))
83812f34
BD
2412
2413(define-public kbdd
2414 (package
2415 (name "kbdd")
2416 (version "0.7.1")
2417 (source
2418 (origin
2419 (method git-fetch)
2420 (uri (git-reference
b0e7b699 2421 (url "https://github.com/qnikst/kbdd")
83812f34
BD
2422 (commit (string-append "v" version))))
2423 (file-name (git-file-name name version))
2424 (sha256
2425 (base32
2426 "0qkq75grbd4wkx4nlvswgavpijk9ad0pzqyj89a0ayjsbsn36pqy"))))
2427 (build-system gnu-build-system)
2428 (native-inputs
2429 `(("autoconf" ,autoconf)
2430 ("automake" ,automake)
2431 ("glib" ,glib "bin")
2432 ("pkg-config" ,pkg-config)))
2433 (inputs
2434 `(("dbus-glib", dbus-glib)
2435 ("glib" ,glib)
2436 ("libx11" ,libx11)))
2437 (home-page "https://github.com/qnikst/kbdd")
2438 (synopsis "Per-window keyboard layout switching daemon for X")
2439 (description "@command{kbdd} is a simple keyboard layout switching
2440program, which is designed to run in an X11 session and remember
2441keyboard layouts on a per-window basis. That can be very handy for a
2442user of a non-US keyboard who does not want to jump through layouts back
2443and forth while typing in terminals (mostly in a latin alphabet) and
2444some kind of chat (in native language).
2445
2446@command{kbdd} also supports D-Bus signals, which makes it possible to
2447create layout indicator widgets.")
2448 (license license:bsd-2)))
c65e2434
AM
2449
2450(define-public j4-dmenu-desktop
2451 (package
2452 (name "j4-dmenu-desktop")
2453 (version "2.17")
2454 (source (origin
2455 (method git-fetch)
2456 (uri (git-reference
b0e7b699 2457 (url "https://github.com/enkore/j4-dmenu-desktop")
c65e2434
AM
2458 (commit (string-append "r" version))))
2459 (file-name (git-file-name name version))
2460 (sha256
2461 (base32
2462 "0v23fimkn83dcm5p53y2ymhklff3kwppxhf75sm8xmswrzkixpgc"))))
2463 (build-system cmake-build-system)
2464 (native-inputs
2465 `(("catch2" ,catch-framework2)))
2466 (arguments
2467 `(#:configure-flags '("-DWITH_GIT_CATCH=off")
2468 #:phases
2469 (modify-phases %standard-phases
2470 (replace 'check
2471 (lambda _
2472 (invoke "./j4-dmenu-tests" "exclude:SearchPath/XDG_DATA_HOME"))))))
2473 (synopsis "Fast desktop menu")
2474 (description
2475 "j4-dmenu-desktop is a replacement for i3-dmenu-desktop. Its purpose
2476is to find @file{.desktop} files and offer you a menu to start an application
2477using @command{dmenu}.")
2478 (home-page "https://github.com/enkore/j4-dmenu-desktop")
2479 (license license:gpl3+)))
970fcb0d
AM
2480
2481(define-public wofi
2482 (package
2483 (name "wofi")
2484 (version "1.1.2")
2485 (source (origin
2486 (method hg-fetch)
2487 (uri (hg-reference
2488 (url "https://hg.sr.ht/~scoopta/wofi")
2489 (changeset (string-append "v" version))))
2490 (file-name (git-file-name name version))
2491 (sha256
2492 (base32
2493 "086j5wshawjbwdmmmldivfagc2rr7g5a2gk11l0snqqslm294xsn"))))
2494 (build-system meson-build-system)
2495 (arguments
2496 `(#:glib-or-gtk? #t))
2497 (native-inputs
2498 `(("pkg-config" ,pkg-config)))
2499 (inputs
2500 `(("gtk3" ,gtk+)
2501 ("wayland" ,wayland)))
2502 (synopsis "Launcher/menu program for wayland")
2503 (description
2504 "Wofi is a launcher/menu program for wlroots based wayland compositors
2505such as sway, similar to @command{rofi}.")
2506 (home-page "https://hg.sr.ht/~scoopta/wofi")
2507 (license license:gpl3+)))