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