gnu: Add dwl.
[jackhill/guix/guix.git] / gnu / packages / wm.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
3 ;;; Copyright © 2015 Siniša Biđin <sinisa@bidin.eu>
4 ;;; Copyright © 2015, 2016 Eric Bavier <bavier@member.fsf.org>
5 ;;; Copyright © 2015 xd1le <elisp.vim@gmail.com>
6 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
7 ;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
8 ;;; Copyright © 2016, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
9 ;;; Copyright © 2016 Al McElrath <hello@yrns.org>
10 ;;; Copyright © 2016 Carlo Zancanaro <carlo@zancanaro.id.au>
11 ;;; Copyright © 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
12 ;;; Copyright © 2016, 2017, 2018, 2020 Nikita <nikita@n0.is>
13 ;;; Copyright © 2016 doncatnip <gnopap@gmail.com>
14 ;;; Copyright © 2016 Ivan Vilata i Balaguer <ivan@selidor.net>
15 ;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
16 ;;; Copyright © 2017, 2019, 2020 Marius Bakke <marius@gnu.org>
17 ;;; Copyright © 2017, 2020 Oleg Pykhalov <go.wigust@gmail.com>
18 ;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
19 ;;; Copyright © 2018 Pierre-Antoine Rouby <contact@parouby.fr>
20 ;;; Copyright © 2018, 2019 Meiyo Peng <meiyo@riseup.net>
21 ;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
22 ;;; Copyright © 2019 Timothy Sample <samplet@ngyro.com>
23 ;;; Copyright © 2019 Gábor Boskovits <boskovits@gmail.com>
24 ;;; Copyright © 2019 Kyle Andrews <kyle.c.andrews@gmail.com>
25 ;;; Copyright © 2019 Ingo Ruhnke <grumbel@gmail.com>
26 ;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
27 ;;; Copyright © 2019 John Soo <jsoo1@asu.edu>
28 ;;; Copyright © 2018, 2019 Pierre Langlois <pierre.langlois@gmx.com>
29 ;;; Copyright © 2016, 2017 Andy Patterson <ajpatter@uwaterloo.ca>
30 ;;; Copyright © 2019 Evan Straw <evan.straw99@gmail.com>
31 ;;; Copyright © 2019 Brett Gilio <brettg@gnu.org>
32 ;;; Copyright © 2019 Noodles! <nnoodle@chiru.no>
33 ;;; Copyright © 2019, 2020 Alexandru-Sergiu Marton <brown121407@member.fsf.org>
34 ;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
35 ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
36 ;;; Copyright © 2020 Boris A. Dekshteyn <harlequin78@gmail.com>
37 ;;; Copyright © 2020 Marcin Karpezo <sirmacik@wioo.waw.pl>
38 ;;; Copyright © 2020 EuAndreh <eu@euandre.org>
39 ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
40 ;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net>
41 ;;; Copyright © 2020 B. Wilson <elaexuotee@wilsonb.com>
42 ;; Copyright © 2020 Niklas Eklund <niklas.eklund@posteo.net>
43 ;;; Copyright © 2020 Robert Smith <robertsmith@posteo.net>
44 ;;; Copyright © 2021 Zheng Junjie <873216071@qq.com>
45 ;;;
46 ;;; This file is part of GNU Guix.
47 ;;;
48 ;;; GNU Guix is free software; you can redistribute it and/or modify it
49 ;;; under the terms of the GNU General Public License as published by
50 ;;; the Free Software Foundation; either version 3 of the License, or (at
51 ;;; your option) any later version.
52 ;;;
53 ;;; GNU Guix is distributed in the hope that it will be useful, but
54 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
55 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
56 ;;; GNU General Public License for more details.
57 ;;;
58 ;;; You should have received a copy of the GNU General Public License
59 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
60
61 (define-module (gnu packages wm)
62 #:use-module ((guix licenses) #:prefix license:)
63 #:use-module (guix packages)
64 #:use-module (guix download)
65 #:use-module (guix git-download)
66 #:use-module (guix build-system asdf)
67 #:use-module (guix build-system cmake)
68 #:use-module (guix build-system gnu)
69 #:use-module (guix build-system haskell)
70 #:use-module (guix build-system meson)
71 #:use-module (guix build-system perl)
72 #:use-module (guix build-system python)
73 #:use-module (guix build-system trivial)
74 #:use-module (guix utils)
75 #:use-module (gnu packages)
76 #:use-module (gnu packages bash)
77 #:use-module (gnu packages autotools)
78 #:use-module (gnu packages base)
79 #:use-module (gnu packages bison)
80 #:use-module (gnu packages build-tools) ;for meson-0.55
81 #:use-module (gnu packages calendar)
82 #:use-module (gnu packages docbook)
83 #:use-module (gnu packages documentation)
84 #:use-module (gnu packages fontutils)
85 #:use-module (gnu packages freedesktop)
86 #:use-module (gnu packages fribidi)
87 #:use-module (gnu packages gawk)
88 #:use-module (gnu packages gcc)
89 #:use-module (gnu packages gl)
90 #:use-module (gnu packages glib)
91 #:use-module (gnu packages gperf)
92 #:use-module (gnu packages gtk)
93 #:use-module (gnu packages haskell-check)
94 #:use-module (gnu packages haskell-web)
95 #:use-module (gnu packages haskell-xyz)
96 #:use-module (gnu packages image)
97 #:use-module (gnu packages imagemagick)
98 #:use-module (gnu packages libevent)
99 #:use-module (gnu packages linux)
100 #:use-module (gnu packages lisp-xyz)
101 #:use-module (gnu packages logging)
102 #:use-module (gnu packages lua)
103 #:use-module (gnu packages m4)
104 #:use-module (gnu packages man)
105 #:use-module (gnu packages maths)
106 #:use-module (gnu packages mpd)
107 #:use-module (gnu packages pcre)
108 #:use-module (gnu packages perl)
109 #:use-module (gnu packages pkg-config)
110 #:use-module (gnu packages pretty-print)
111 #:use-module (gnu packages pulseaudio)
112 #:use-module (gnu packages python)
113 #:use-module (gnu packages readline)
114 #:use-module (gnu packages serialization)
115 #:use-module (gnu packages sphinx)
116 #:use-module (gnu packages suckless)
117 #:use-module (gnu packages texinfo)
118 #:use-module (gnu packages textutils)
119 #:use-module (gnu packages video)
120 #:use-module (gnu packages web)
121 #:use-module (gnu packages xdisorg)
122 #:use-module (gnu packages xml)
123 #:use-module (gnu packages xorg))
124
125 (define-public bspwm
126 (package
127 (name "bspwm")
128 (version "0.9.10")
129 (source
130 (origin
131 (method git-fetch)
132 (uri (git-reference
133 (url "https://github.com/baskerville/bspwm")
134 (commit version)))
135 (file-name (git-file-name name version))
136 (sha256
137 (base32 "0qlv7b4c2mmjfd65y100d11x8iqyg5f6lfiws3cgmpjidhdygnxc"))))
138 (build-system gnu-build-system)
139 (inputs
140 `(("libxcb" ,libxcb)
141 ("libxinerama" ,libxinerama)
142 ("sxhkd" ,sxhkd)
143 ("xcb-util" ,xcb-util)
144 ("xcb-util-keysyms" ,xcb-util-keysyms)
145 ("xcb-util-wm" ,xcb-util-wm)))
146 (arguments
147 '(#:phases
148 (modify-phases %standard-phases
149 (delete 'configure)) ; no configure script
150 #:tests? #f ; no check target
151 #:make-flags
152 (list "CC=gcc"
153 (string-append "PREFIX=" %output))))
154 (home-page "https://github.com/baskerville/bspwm")
155 (synopsis "Tiling window manager based on binary space partitioning")
156 (description "bspwm is a tiling window manager that represents windows as
157 the leaves of a full binary tree.")
158 (license license:bsd-2)))
159
160 (define-public herbstluftwm
161 (package
162 (name "herbstluftwm")
163 (version "0.8.3")
164 (source
165 (origin
166 (method url-fetch)
167 (uri (string-append "https://herbstluftwm.org/tarballs/herbstluftwm-"
168 version ".tar.gz"))
169 (sha256
170 (base32 "1qmb4pjf2f6g0dvcg11cw9njwmxblhqzd70ai8qnlgqw1iz3nkm1"))
171 (file-name (string-append "herbstluftwm-" version ".tar.gz"))))
172 (build-system cmake-build-system)
173 (inputs
174 `(("dzen" ,dzen)
175 ("dmenu" ,dmenu)
176 ("glib" ,glib)
177 ("glibmm" ,glibmm)
178 ("xterm" ,xterm)
179 ("xsetroot" ,xsetroot)
180 ("libx11" ,libx11)
181 ("libxext" ,libxext)
182 ("libxinerama" ,libxinerama)
183 ("libxrandr" ,libxrandr)))
184 (native-inputs
185 `(("asciidoc" ,asciidoc)
186 ("pkg-config" ,pkg-config)))
187 (arguments
188 '(#:tests? #f
189 #:configure-flags
190 (let ((out (assoc-ref %outputs "out")))
191 (list "-DCC=gcc"
192 (string-append "-DCMAKE_INSTALL_SYSCONF_PREFIX=" out "/etc")
193 (string-append "-DBASHCOMPLETIONDIR=" out "/etc/bash_completion.d")))
194 #:phases
195 (modify-phases %standard-phases
196 (add-after 'install 'install-xsession
197 (lambda* (#:key outputs #:allow-other-keys)
198 (let* ((out (assoc-ref outputs "out"))
199 (xsessions (string-append out "/share/xsessions")))
200 (mkdir-p xsessions)
201 (call-with-output-file
202 (string-append xsessions "/herbstluftwm.desktop")
203 (lambda (port)
204 (format port "~
205 [Desktop Entry]~@
206 Name=herbstluftwm~@
207 Comment=Manual tiling window manager~@
208 Exec=~a/bin/herbstluftwm~@
209 Type=XSession~%" out)))
210 #t))))))
211 (synopsis "Tiling window manager for X11")
212 (description "herbstluftwm is a manual tiling window manager for X11 using
213 Xlib and GLib. Its main features are:
214
215 @itemize
216 @item
217 The layout is based on splitting frames into subframes which can be split
218 again or can be filled with windows (similar to i3 or musca).
219
220 @item
221 Tags (or workspaces or virtual desktops or …) can be added/removed at runtime.
222 Each tag contains an own layout.
223
224 @item
225 Exactly one tag is viewed on each monitor. The tags are monitor independent
226 (similar to Xmonad).
227
228 @item
229 It is configured at runtime via IPC calls from @command{herbstclient}. So the
230 configuration file is just a script which is run on startup (similar to wmii
231 or musca).
232
233 @end itemize")
234 (home-page "https://herbstluftwm.org")
235 (license license:bsd-2)))
236
237 (define-public i3status
238 (package
239 (name "i3status")
240 (version "2.13")
241 (source (origin
242 (method url-fetch)
243 (uri (string-append "https://i3wm.org/i3status/i3status-"
244 version ".tar.bz2"))
245 (sha256
246 (base32
247 "0rhlzb96mw64z2jnhwz9nibc7pxg549626lz5642xxk5hpzwk2ff"))))
248 (build-system gnu-build-system)
249 (arguments
250 `(;; XXX: Do an "out of source" build to work around
251 ;; <https://github.com/i3/i3status/issues/339>.
252 #:out-of-source? #t
253 #:tests? #f)) ; no test suite
254 (inputs
255 `(("openlibm" ,openlibm)
256 ("libconfuse" ,libconfuse)
257 ("libyajl" ,libyajl)
258 ("alsa-lib" ,alsa-lib)
259 ("pulseaudio" ,pulseaudio)
260 ("libnl" ,libnl)
261 ("libcap" ,libcap)
262 ("asciidoc" ,asciidoc)))
263 (native-inputs
264 `(("pkg-config" ,pkg-config)
265 ("docbook-xsl" ,docbook-xsl)
266 ("libxml2" ,libxml2) ;for XML_CATALOG_FILES
267 ("xmlto" ,xmlto)))
268 (home-page "https://i3wm.org/i3status/")
269 (synopsis "Status bar for i3bar, dzen2, xmobar or similar programs")
270 (description "i3status is a small program for generating a status bar for
271 i3bar, dzen2, xmobar or similar programs. It is designed to be very efficient
272 by issuing a very small number of system calls, as one generally wants to
273 update such a status line every second. This ensures that even under high
274 load, your status bar is updated correctly. Also, it saves a bit of energy by
275 not hogging your CPU as much as spawning the corresponding amount of shell
276 commands would.")
277 (license license:bsd-3)))
278
279 (define-public i3-wm
280 (package
281 (name "i3-wm")
282 (version "4.18.3")
283 (source (origin
284 (method url-fetch)
285 (uri (string-append "https://i3wm.org/downloads/i3-"
286 version ".tar.bz2"))
287 (sha256
288 (base32
289 "03dijnwv2n8ak9jq59fhq0rc80m5wjc9d54fslqaivnnz81pkbjk"))))
290 (build-system gnu-build-system)
291 (arguments
292 `(#:configure-flags
293 ;; The build system tries to build in a separate directory, but that
294 ;; seems to be unnecessary.
295 (list "--disable-builddir")
296
297 ;; The test suite requires the unpackaged Xephyr X server.
298 #:tests? #f
299 #:phases
300 (modify-phases %standard-phases
301 (add-after 'install 'patch-session-file
302 (lambda* (#:key outputs #:allow-other-keys)
303 (let* ((out (assoc-ref outputs "out"))
304 (i3 (string-append out "/bin/i3"))
305 (i3-with-shmlog (string-append out "/bin/i3-with-shmlog")))
306 (substitute* (string-append out "/share/xsessions/i3.desktop")
307 (("Exec=i3") (string-append "Exec=" i3)))
308 (substitute* (string-append out "/share/xsessions/i3-with-shmlog.desktop")
309 (("Exec=i3-with-shmlog") (string-append "Exec=" i3-with-shmlog)))
310 #t))))))
311 (inputs
312 `(("libxcb" ,libxcb)
313 ("xcb-util" ,xcb-util)
314 ("xcb-util-cursor" ,xcb-util-cursor)
315 ("xcb-util-keysyms" ,xcb-util-keysyms)
316 ("xcb-util-wm" ,xcb-util-wm)
317 ("xcb-util-xrm" ,xcb-util-xrm)
318 ("libxkbcommon" ,libxkbcommon)
319 ("libev" ,libev)
320 ("libyajl" ,libyajl)
321 ("asciidoc" ,asciidoc)
322 ("xmlto" ,xmlto)
323 ("perl-pod-simple" ,perl-pod-simple)
324 ("libx11" ,libx11)
325 ("pcre" ,pcre)
326 ("startup-notification" ,startup-notification)
327 ("pango" ,pango)
328 ("cairo" ,cairo)))
329 (native-inputs
330 `(("which" ,which)
331 ("perl" ,perl)
332 ("pkg-config" ,pkg-config)
333 ;; For building the documentation.
334 ("libxml2" ,libxml2)
335 ("docbook-xsl" ,docbook-xsl)))
336 (home-page "https://i3wm.org/")
337 (synopsis "Tiling window manager")
338 (description "i3 is a tiling X11 window manager that dynamically manages
339 tiled, stacked, and tabbed window layouts.
340
341 i3 primarily targets advanced users. Windows are managed manually and organised
342 inside containers, which can be split vertically or horizontally, and optionally
343 resized.
344
345 i3 uses a plain-text configuration file, and can be extended and controlled from
346 many programming languages.")
347 (license license:bsd-3)))
348
349 (define-public i3-gaps
350 (package (inherit i3-wm)
351 (name "i3-gaps")
352 (version "4.18.3")
353 (source (origin
354 (method url-fetch)
355 (uri (string-append
356 "https://github.com/Airblader/i3/releases/download/"
357 version "/i3-" version ".tar.bz2"))
358 (sha256
359 (base32
360 "1hcakwyz78lgp8mhqv7pw86jlb3m415pfql1q19rkijnhm3fn3ci"))))
361 (home-page "https://github.com/Airblader/i3")
362 (synopsis "Tiling window manager with gaps")
363 (description "i3-gaps is a fork of i3wm, a tiling window manager
364 for X11. It is kept up to date with upstream, adding a few additional
365 features such as gaps between windows.
366
367 i3 is a tiling X11 window manager that dynamically manages tiled, stacked,
368 and tabbed window layouts.
369
370 i3 primarily targets advanced users. Windows are managed manually and
371 organised inside containers, which can be split vertically or horizontally,
372 and optionally resized.
373
374 i3 uses a plain-text configuration file, and can be extended and controlled
375 from many programming languages.")
376 (license license:bsd-3)))
377
378 (define-public i3lock
379 (package
380 (name "i3lock")
381 (version "2.11.1")
382 (source (origin
383 (method url-fetch)
384 (uri (string-append "https://i3wm.org/i3lock/i3lock-"
385 version ".tar.bz2"))
386 (sha256
387 (base32
388 "015dn534m7cxjvqdncpvaq9p8b2r4w5hp1yanbdy2abmhbcc7a7j"))))
389 (build-system gnu-build-system)
390 (native-inputs
391 `(("pkg-config" ,pkg-config)))
392 (inputs
393 `(("cairo" ,cairo)
394 ("libev" ,libev)
395 ("linux-pam" ,linux-pam)
396 ("libxcb" ,libxcb)
397 ("libxkbcommon" ,libxkbcommon)
398 ("xcb-util" ,xcb-util)
399 ("xcb-util-image" ,xcb-util-image)
400 ("xcb-util-xrm" ,xcb-util-xrm)))
401 (home-page "https://i3wm.org/i3lock/")
402 (synopsis "Lightweight screen locker")
403 (description
404 "i3lock is a simple X11 screen locker developed alongside the i3 project.
405 Despite the name it should work with any X11 window manager.")
406 (license license:bsd-3)))
407
408 (define-public i3blocks
409 (package
410 (name "i3blocks")
411 (version "1.5")
412 (source (origin
413 (method git-fetch)
414 (uri (git-reference
415 (url "https://github.com/vivien/i3blocks")
416 (commit version)))
417 (sha256
418 (base32
419 "0v8mwnm8qzpv6xnqvrk43s4b9iyld4naqzbaxk4ldq1qkhai0wsv"))
420 (file-name (git-file-name name version))))
421 (build-system gnu-build-system)
422 (native-inputs
423 `(("autoconf" ,autoconf)
424 ("automake" ,automake)
425 ("pkg-config" ,pkg-config)))
426 (home-page "https://github.com/vivien/i3blocks")
427 (synopsis "Minimalist scheduler for status bar scripts")
428 (description "i3blocks executes your command lines and generates a
429 status line from their output. The generated line is meant to be displayed by
430 the i3 window manager through its i3bar component, as an alternative to
431 i3status.")
432 (license license:gpl3+)))
433
434 (define-public perl-anyevent-i3
435 (package
436 (name "perl-anyevent-i3")
437 (version "0.17")
438 (source (origin
439 (method url-fetch)
440 (uri (string-append "mirror://cpan/authors/id/M/MS/MSTPLBG/"
441 "AnyEvent-I3-" version ".tar.gz"))
442 (sha256
443 (base32
444 "0qvd9bq16jyy7v3ma82qcnvz9j503bw0mh7h55gkjf7ir62ck0jk"))))
445 (build-system perl-build-system)
446 (propagated-inputs
447 `(("perl-anyevent" ,perl-anyevent)
448 ("perl-json-xs" ,perl-json-xs)))
449 (home-page "https://metacpan.org/release/AnyEvent-I3")
450 (synopsis
451 "Communicate with the i3 window manager through perl")
452 (description
453 "This module connects to the i3 window manager using the UNIX socket
454 based IPC interface it provides (if enabled in the configuration file).
455 You can then subscribe to events or send messages and receive their replies.")
456 ;; Can be used with either license.
457 (license (list license:gpl3+ license:perl-license))))
458
459 (define-public python-i3-py
460 (package
461 (name "python-i3-py")
462 (version "0.6.5")
463 (source
464 (origin
465 ;; The latest release is not tagged in Git nor has an entry in PyPi,
466 ;; but there is still a clear commit for it, and it's been the last one
467 ;; for years.
468 (method git-fetch)
469 (uri (git-reference
470 (url "https://github.com/ziberna/i3-py")
471 (commit "27f88a616e9ecc340e7d041d3d00782f8a1964c1")))
472 (sha256
473 (base32
474 "1nm719dc2xqlll7vj4c4m7mpjb27lpn3bg3c66gajvnrz2x1nmxs"))
475 (file-name (string-append name "-" version "-checkout"))))
476 (build-system python-build-system)
477 (arguments
478 `(#:tests? #f ; no tests yet
479 #:phases (modify-phases %standard-phases
480 (add-after 'install 'install-doc
481 ;; Copy readme file to documentation directory.
482 (lambda* (#:key outputs #:allow-other-keys)
483 (let ((doc (string-append (assoc-ref outputs "out")
484 "/share/doc/" ,name)))
485 (install-file "README.md" doc)
486 ;; Avoid unspecified return value.
487 #t))))))
488 (propagated-inputs
489 `(("i3-wm" ,i3-wm)))
490 (home-page "https://github.com/ziberna/i3-py")
491 (synopsis "Python interface to the i3 window manager")
492 (description "This package allows you to interact from a Python program
493 with the i3 window manager via its IPC socket. It can send commands and other
494 kinds of messages to i3, select the affected containers, filter results and
495 subscribe to events.")
496 (license license:gpl3+)))
497
498 (define-public python2-i3-py
499 (package-with-python2 python-i3-py))
500
501 (define-public quickswitch-i3
502 (let ((commit "ed692b1e8f43b95bd907ced26238ce8ccb2ed28f")
503 (revision "1")) ; Guix package revision
504 (package
505 (name "quickswitch-i3")
506 (version (string-append "2.2-" revision "."
507 (string-take commit 7)))
508 (source
509 (origin
510 ;; The latest commit is a few years old and just a couple commits
511 ;; after the last tagged release, so we use that latest commit
512 ;; instead of the release.
513 (method git-fetch)
514 (uri (git-reference
515 (url "https://github.com/proxypoke/quickswitch-for-i3")
516 (commit commit)))
517 (sha256
518 (base32
519 "0447077sama80jcdg5p64zjsvafmz5rbdrirhm1adcdjhkh6iqc5"))
520 (patches (search-patches "quickswitch-fix-dmenu-check.patch"))
521 (file-name (string-append name "-" version "-checkout"))))
522 (build-system python-build-system)
523 (arguments
524 `(#:tests? #f ; no tests yet
525 #:phases (modify-phases %standard-phases
526 (add-after 'install 'install-doc
527 ;; Copy readme file to documentation directory.
528 (lambda* (#:key outputs #:allow-other-keys)
529 (let ((doc (string-append (assoc-ref outputs "out")
530 "/share/doc/" ,name)))
531 (install-file "README.rst" doc)
532 ;; Avoid unspecified return value.
533 #t))))))
534 (inputs
535 `(("python-i3-py" ,python-i3-py)
536 ("dmenu" ,dmenu)))
537 (home-page "https://github.com/proxypoke/quickswitch-for-i3")
538 (synopsis "Quickly change to and locate windows in the i3 window manager")
539 (description
540 "This utility for the i3 window manager allows you to quickly switch to
541 and locate windows on all your workspaces, using an interactive dmenu
542 prompt.")
543 (license license:wtfpl2))))
544
545 (define-public i3lock-color
546 (package
547 (name "i3lock-color")
548 (version "2.12.c")
549 (source
550 (origin
551 (method git-fetch)
552 (uri (git-reference
553 (url "https://github.com/PandorasFox/i3lock-color")
554 (commit version)))
555 (file-name (git-file-name name version))
556 (sha256
557 (base32 "08fhnchf187b73h52xgzb86g6byzxz085zs9galsvl687g5zxk34"))))
558 (build-system gnu-build-system)
559 (arguments
560 `(#:tests? #f)) ; no tests included
561 (inputs
562 `(("cairo" ,cairo)
563 ("libev" ,libev)
564 ("libjpeg" ,libjpeg-turbo)
565 ("libxcb" ,libxcb)
566 ("libxkbcommon" ,libxkbcommon)
567 ("linux-pam" ,linux-pam)
568 ("xcb-util" ,xcb-util)
569 ("xcb-util-image" ,xcb-util-image)
570 ("xcb-util-xrm" ,xcb-util-xrm)))
571 (native-inputs
572 `(("autoconf" ,autoconf)
573 ("automake" ,automake)
574 ("pkg-config" ,pkg-config)))
575 (home-page "https://github.com/PandorasFox/i3lock-color")
576 (synopsis "Screen locker with color configuration support")
577 (description
578 "i3lock-color is a simpler X11 screen locker derived from i3lock.
579 Features include:
580
581 @enumerate
582 @item forking process, the locked screen is preserved when you suspend to RAM;
583 @item specify background color or image to be displayed in the lock screen;
584 @item many additional color options.
585 @end enumerate")
586 (license license:bsd-3)))
587
588 (define-public i3lock-fancy
589 (package
590 (name "i3lock-fancy")
591 (version "0.2")
592 (source
593 (origin
594 (method git-fetch)
595 (uri (git-reference
596 (url "https://github.com/meskarune/i3lock-fancy")
597 (commit version)))
598 (file-name (git-file-name name version))
599 (sha256
600 (base32 "11g2kkim33ra38d1m897sq1ifajw17iyw9mr7sg1q8i2ibl4lfsi"))))
601 (build-system gnu-build-system)
602 (arguments
603 `(#:tests? #f ; no tests included
604 #:phases
605 (modify-phases %standard-phases
606 (replace 'configure
607 (lambda* (#:key inputs outputs #:allow-other-keys)
608 (let* ((out (assoc-ref outputs "out"))
609 (icons (string-append out "/share/i3lock-fancy/icons/"))
610 (wmctrl (string-append (assoc-ref inputs "wmctrl")
611 "/bin/wmctrl"))
612 (mconvert (string-append (assoc-ref inputs "imagemagick")
613 "/bin/convert"))
614 (mimport (string-append (assoc-ref inputs "imagemagick")
615 "/bin/import"))
616 (awk (string-append (assoc-ref inputs "gawk")
617 "/bin/gawk")))
618
619 (substitute* "lock"
620 (("\\$\\(command -V wmctrl\\)") wmctrl)
621 (("convert") mconvert)
622 (("shot=\\(import") (string-append "shot=\(" mimport))
623 (("awk -F") (string-append awk " -F"))
624 ((" awk") awk)
625 (("\\$scriptpath/icons/") icons))
626 #t)))
627 (delete 'build)
628 (replace 'install
629 (lambda* (#:key inputs outputs #:allow-other-keys)
630 (let* ((out (assoc-ref outputs "out"))
631 (bin (string-append out "/bin"))
632 (icons (string-append out "/share/i3lock-fancy/icons/")))
633
634 (install-file "lock" bin)
635 (rename-file (string-append bin "/lock")
636 (string-append bin "/i3lock-fancy"))
637 (copy-recursively "icons" icons)
638 #t))))))
639 (inputs
640 `(("imagemagick" ,imagemagick)
641 ("wmctrl" ,wmctrl)
642 ("gawk" ,gawk)))
643 (home-page "https://github.com/meskarune/i3lock-fancy")
644 (synopsis "Screen locker with screenshot function")
645 (description
646 "@code{i3lock-fancy} is a Bash script that takes a screenshot of
647 the desktop, blurs the background and adds a lock icon and text.
648 It requires @code{i3lock-color} or @code{i3lock} and can optionally
649 be passed any screenshot util like @code{scrot}.
650 This screen locker can be used with any window manager or
651 desktop environment.")
652 (license license:expat)))
653
654 (define-public xmonad
655 (package
656 (name "xmonad")
657 (version "0.15")
658 (synopsis "Tiling window manager")
659 (source (origin
660 (method url-fetch)
661 (uri (string-append "mirror://hackage/package/xmonad/"
662 "xmonad-" version ".tar.gz"))
663 (sha256
664 (base32
665 "0a7rh21k9y6g8fwkggxdxjns2grvvsd5hi2ls4klmqz5xvk4hyaa"))
666 (patches (search-patches "xmonad-dynamic-linking.patch"))))
667 (build-system haskell-build-system)
668 (inputs
669 `(("ghc-extensible-exceptions" ,ghc-extensible-exceptions)
670 ("ghc-quickcheck" ,ghc-quickcheck)
671 ("ghc-semigroups" ,ghc-semigroups)
672 ("ghc-setlocale" ,ghc-setlocale)
673 ("ghc-utf8-string" ,ghc-utf8-string)
674 ("ghc-x11" ,ghc-x11)))
675 (arguments
676 `(#:phases
677 (modify-phases %standard-phases
678 (add-after
679 'install 'install-xsession
680 (lambda _
681 (let* ((xsessions (string-append %output "/share/xsessions")))
682 (mkdir-p xsessions)
683 (call-with-output-file
684 (string-append xsessions "/xmonad.desktop")
685 (lambda (port)
686 (format port "~
687 [Desktop Entry]~@
688 Name=~a~@
689 Comment=~a~@
690 Exec=~a/bin/xmonad~@
691 Type=Application~%" ,name ,synopsis %output)))))))))
692 (home-page "https://xmonad.org")
693 (description
694 "Xmonad is a tiling window manager for X. Windows are arranged
695 automatically to tile the screen without gaps or overlap, maximising screen
696 use. All features of the window manager are accessible from the keyboard: a
697 mouse is strictly optional. Xmonad is written and extensible in Haskell.
698 Custom layout algorithms, and other extensions, may be written by the user in
699 config files. Layouts are applied dynamically, and different layouts may be
700 used on each workspace. Xinerama is fully supported, allowing windows to be
701 tiled on several screens.")
702 (license license:bsd-3)))
703
704 (define-public xmobar
705 (package
706 (name "xmobar")
707 (version "0.34")
708 (source (origin
709 (method url-fetch)
710 (uri (string-append "mirror://hackage/package/xmobar/"
711 "xmobar-" version ".tar.gz"))
712 (sha256
713 (base32
714 "0x09xbz7y9ay0046j1xpr9jjk5jqivqi06vm3q6mhcrgc4y922rx"))))
715 (build-system haskell-build-system)
716 (native-inputs
717 `(("ghc-hspec" ,ghc-hspec)
718 ("hspec-discover" ,hspec-discover)))
719 (inputs
720 `(("ghc-alsa-core" ,ghc-alsa-core)
721 ("ghc-alsa-mixer" ,ghc-alsa-mixer)
722 ("ghc-dbus" ,ghc-dbus)
723 ("ghc-hinotify" ,ghc-hinotify)
724 ("ghc-http" ,ghc-http)
725 ("ghc-http-conduit" ,ghc-http-conduit)
726 ("ghc-http-types" ,ghc-http-types)
727 ("ghc-iwlib" ,ghc-iwlib)
728 ("ghc-libmpd" ,ghc-libmpd)
729 ("ghc-old-locale" ,ghc-old-locale)
730 ("ghc-parsec-numbers" ,ghc-parsec-numbers)
731 ("ghc-regex-compat" ,ghc-regex-compat)
732 ("ghc-temporary" ,ghc-temporary)
733 ("ghc-timezone-olson" ,ghc-timezone-olson)
734 ("ghc-x11" ,ghc-x11)
735 ("ghc-x11-xft" ,ghc-x11-xft)
736 ("libxpm" ,libxpm)))
737 (arguments
738 `(#:configure-flags (list "--flags=all_extensions")
739 #:phases
740 (modify-phases %standard-phases
741 (add-before 'build 'patch-test-shebang
742 (lambda* (#:key inputs #:allow-other-keys)
743 (substitute* "test/Xmobar/Plugins/Monitors/AlsaSpec.hs"
744 (("/bin/bash") (which "bash")))
745 #t)))))
746 (home-page "https://xmobar.org")
747 (synopsis "Minimalistic text based status bar")
748 (description
749 "@code{xmobar} is a lightweight, text-based, status bar written in
750 Haskell. It was originally designed to be used together with Xmonad, but it
751 is also usable with any other window manager. While xmobar is written in
752 Haskell, no knowledge of the language is required to install and use it.")
753 (license license:bsd-3)))
754
755 (define-public yeganesh
756 (package
757 (name "yeganesh")
758 (version "2.4")
759 (source
760 (origin
761
762 (method url-fetch)
763 (uri (string-append "http://dmwit.com/yeganesh/yeganesh-" version ".tar.gz"))
764 (sha256
765 (base32 "04djfyjab3c5y9z9x8zd0xcx0jyy35zq7cl9ddr4ppf6k5ky6iky"))))
766 (build-system haskell-build-system)
767 (inputs
768 `(("ghc-strict" ,ghc-strict)
769 ("ghc-xdg-basedir" ,ghc-xdg-basedir)))
770 (home-page "http://dmwit.com/yeganesh/")
771 (synopsis "Small wrapper around dmenu")
772 (description "@code{yeganesh} is a small wrapper around demnu. Like
773 dmenu, it accepts input on stdin and writes the chosen result on stdout.
774 Unlike dmenu, it mangles the input before it presents its choices. In
775 particular, it displays commonly-chosen options before uncommon ones.")
776 (license license:bsd-3)))
777
778 (define-public ghc-xmonad-contrib
779 (package
780 (name "ghc-xmonad-contrib")
781 (version "0.16")
782 (source
783 (origin
784 (method url-fetch)
785 (uri (string-append "mirror://hackage/package/xmonad-contrib/"
786 "xmonad-contrib-" version ".tar.gz"))
787 (sha256
788 (base32 "1pddgkvnbww28wykncc7j0yb0lv15bk7xnnhdcbrwkxzw66w6wmd"))))
789 (build-system haskell-build-system)
790 (propagated-inputs
791 `(("ghc-old-time" ,ghc-old-time)
792 ("ghc-random" ,ghc-random)
793 ("ghc-utf8-string" ,ghc-utf8-string)
794 ("ghc-extensible-exceptions" ,ghc-extensible-exceptions)
795 ("ghc-semigroups" ,ghc-semigroups)
796 ("ghc-x11" ,ghc-x11)
797 ("ghc-x11-xft" ,ghc-x11-xft)
798 ("xmonad" ,xmonad)))
799 (home-page "https://xmonad.org")
800 (synopsis "Third party extensions for xmonad")
801 (description
802 "Third party tiling algorithms, configurations, and scripts to Xmonad, a
803 tiling window manager for X.")
804 (license license:bsd-3)))
805
806 (define-public evilwm
807 (package
808 (name "evilwm")
809 (version "1.1.1")
810 (source
811 (origin
812 (method url-fetch)
813 (uri (string-append "http://www.6809.org.uk/evilwm/evilwm-"
814 version ".tar.gz"))
815 (sha256
816 (base32
817 "0ak0yajzk3v4dg5wmaghv6acf7v02a4iw8qxmq5yw5ard8lrqn3r"))
818 (patches (search-patches "evilwm-lost-focus-bug.patch"))))
819 (build-system gnu-build-system)
820 (inputs
821 `(("libx11" ,libx11)
822 ("libxext" ,libxext)
823 ("libxrandr" ,libxrandr)))
824 (arguments
825 `(#:modules ((srfi srfi-26)
826 (guix build utils)
827 (guix build gnu-build-system))
828 #:make-flags (let ((inputs (map (cut assoc-ref %build-inputs <>)
829 '("libx11" "libxext" "libxrandr")))
830 (join (lambda (proc strs)
831 (string-join (map proc strs) " ")))
832 (dash-I (cut string-append "-I" <> "/include"))
833 (dash-L (cut string-append "-L" <> "/lib")))
834 `("desktopfilesdir=$(prefix)/share/xsessions"
835 ,(string-append "prefix=" (assoc-ref %outputs "out"))
836 ,(string-append "CPPFLAGS=" (join dash-I inputs))
837 ,(string-append "LDFLAGS=" (join dash-L inputs))))
838 #:tests? #f ;no tests
839 #:phases (modify-phases %standard-phases
840 (delete 'configure)))) ;no configure script
841 (home-page "http://www.6809.org.uk/evilwm/")
842 (synopsis "Minimalist window manager for the X Window System")
843 (description
844 "evilwm is a minimalist window manager based on aewm, extended to feature
845 many keyboard controls with repositioning and maximize toggles, solid window
846 drags, snap-to-border support, and virtual desktops.")
847 (license (license:x11-style "file:///README"))))
848
849 (define-public fluxbox
850 (package
851 (name "fluxbox")
852 (version "1.3.7")
853 (synopsis "Small and fast window manager")
854 (source (origin
855 (method url-fetch)
856 (uri (string-append "mirror://sourceforge/fluxbox/fluxbox/"
857 version "/fluxbox-" version ".tar.xz"))
858 (sha256
859 (base32
860 "1h1f70y40qd225dqx937vzb4k2cz219agm1zvnjxakn5jkz7b37w"))))
861 (build-system gnu-build-system)
862 (arguments
863 `(#:make-flags '("CPPFLAGS=-U__TIME__") ;ugly, but for reproducibility
864 #:phases
865 (modify-phases %standard-phases
866 (add-after 'install 'install-vim-files
867 (lambda* (#:key outputs #:allow-other-keys)
868 (let* ((out (assoc-ref outputs "out"))
869 (syntax (string-append out "/share/vim/vimfiles/syntax")))
870 (copy-recursively "3rd/vim/vim/syntax" syntax)
871 #t)))
872 (add-after 'install 'install-xsession
873 (lambda* (#:key outputs #:allow-other-keys)
874 (let* ((out (assoc-ref outputs "out"))
875 (xsessions (string-append out "/share/xsessions")))
876 (mkdir-p xsessions)
877 (call-with-output-file
878 (string-append xsessions "/fluxbox.desktop")
879 (lambda (port)
880 (format port "~
881 [Desktop Entry]~@
882 Name=~a~@
883 Comment=~a~@
884 Exec=~a/bin/startfluxbox~@
885 Type=Application~%" ,name ,synopsis out)))
886 #t))))))
887 (native-inputs
888 `(("pkg-config" ,pkg-config)))
889 (inputs
890 `(("freetype" ,freetype)
891 ("fribidi" ,fribidi)
892 ("imlib2" ,imlib2)
893 ("libx11" ,libx11)
894 ("libxext" ,libxext)
895 ("libxft" ,libxft)
896 ("libxinerama" ,libxinerama)
897 ("libxpm" ,libxpm)
898 ("libxrandr" ,libxrandr)
899 ("libxrender" ,libxrender)))
900 (description "Fluxbox is a window manager. It is light on resources
901 and easy to handle yet full of features to make an easy and fast desktop
902 experience.")
903 (home-page "http://fluxbox.org/")
904 (license license:expat)))
905
906 (define-public awesome
907 (package
908 (name "awesome")
909 (version "4.3")
910 (source
911 (origin
912 (method url-fetch)
913 (uri (string-append
914 "https://github.com/awesomeWM/awesome-releases/raw/master/"
915 "awesome-" version ".tar.xz"))
916 (sha256
917 (base32 "0lqpw401mkkmp9wgbvrmm45bqq2j9357l4irwdqv6l1305pls9kq"))
918 (modules '((guix build utils)
919 (srfi srfi-19)))
920 (snippet
921 '(begin
922 ;; Remove non-reproducible timestamp and use the date of
923 ;; the source file instead.
924 (substitute* "common/version.c"
925 (("__DATE__ \" \" __TIME__")
926 (date->string
927 (time-utc->date
928 (make-time time-utc 0 (stat:mtime (stat "awesome.c"))))
929 "\"~c\"")))
930 #t))
931 (patches
932 (search-patches "awesome-reproducible-png.patch"))))
933 (build-system cmake-build-system)
934 (native-inputs
935 `(("asciidoc" ,asciidoc)
936 ("docbook-xsl" ,docbook-xsl)
937 ("doxygen" ,doxygen)
938 ("gperf" ,gperf)
939 ("imagemagick" ,imagemagick)
940 ("libxml2" ,libxml2) ;for XML_CATALOG_FILES
941 ("lua-ldoc" ,lua-ldoc)
942 ("pkg-config" ,pkg-config)
943 ("xmlto" ,xmlto)))
944 (inputs
945 `(("cairo" ,cairo)
946 ("dbus" ,dbus)
947 ("gdk-pixbuf" ,gdk-pixbuf)
948 ("glib" ,glib)
949 ("gobject-introspection" ,gobject-introspection)
950 ("imlib2" ,imlib2)
951 ("libev" ,libev)
952 ("libxcb" ,libxcb)
953 ("libxcursor" ,libxcursor)
954 ("libxdg-basedir" ,libxdg-basedir)
955 ("libxkbcommon" ,libxkbcommon)
956 ("lua" ,lua)
957 ("lua-lgi" ,lua-lgi)
958 ("pango" ,pango)
959 ("startup-notification" ,startup-notification)
960 ("xcb-util" ,xcb-util)
961 ("xcb-util-cursor" ,xcb-util-cursor)
962 ("xcb-util-image" ,xcb-util-image)
963 ("xcb-util-keysyms" ,xcb-util-keysyms)
964 ("xcb-util-renderutil" ,xcb-util-renderutil)
965 ("xcb-util-xrm" ,xcb-util-xrm)
966 ("xcb-util-wm" ,xcb-util-wm)))
967 (arguments
968 `(#:modules ((guix build cmake-build-system)
969 (guix build utils)
970 (ice-9 match))
971 ;; Let compression happen in our 'compress-documentation' phase
972 ;; so that '--no-name' is used, which removes timestamps from
973 ;; gzip output.
974 #:configure-flags
975 '("-DCOMPRESS_MANPAGES=off")
976 ;; Building awesome in its source directory is no longer
977 ;; supported.
978 #:out-of-source? #t
979 #:phases
980 (modify-phases %standard-phases
981 (add-before 'configure 'set-paths
982 (lambda* (#:key inputs #:allow-other-keys)
983 (substitute* "lib/awful/completion.lua"
984 (("/usr/bin/env")
985 ""))
986 ;; The build process needs to load Cairo dynamically.
987 (let* ((cairo (string-append (assoc-ref inputs "cairo") "/lib"))
988 (lua-version ,(version-major+minor (package-version lua)))
989 (lua-dependencies
990 (filter (match-lambda
991 ((label . _) (string-prefix? "lua-" label)))
992 inputs))
993 (lua-path
994 (string-join
995 (map (match-lambda
996 ((_ . dir)
997 (string-append
998 dir "/share/lua/" lua-version "/?.lua;"
999 dir "/share/lua/" lua-version "/?/?.lua")))
1000 lua-dependencies)
1001 ";"))
1002 (lua-cpath
1003 (string-join
1004 (map (match-lambda
1005 ((_ . dir)
1006 (string-append
1007 dir "/lib/lua/" lua-version "/?.so;"
1008 dir "/lib/lua/" lua-version "/?/?.so")))
1009 lua-dependencies)
1010 ";")))
1011 (setenv "LD_LIBRARY_PATH" cairo)
1012 (setenv "LUA_PATH" (string-append "?.lua;" lua-path))
1013 (setenv "LUA_CPATH" lua-cpath)
1014 #t)))
1015 (replace 'check
1016 (lambda _
1017 ;; There aren't any tests, so just make sure the binary
1018 ;; gets built and can be run successfully.
1019 (invoke "../build/awesome" "-v")))
1020 (add-after 'install 'patch-session-file
1021 (lambda* (#:key outputs #:allow-other-keys)
1022 (let* ((out (assoc-ref outputs "out"))
1023 (awesome (string-append out "/bin/awesome")))
1024 (substitute* (string-append out "/share/xsessions/awesome.desktop")
1025 (("Exec=awesome") (string-append "Exec=" awesome)))
1026 #t)))
1027 (add-after 'install 'wrap
1028 (lambda* (#:key inputs outputs #:allow-other-keys)
1029 (let* ((awesome (assoc-ref outputs "out"))
1030 (cairo (string-append (assoc-ref inputs "cairo") "/lib"))
1031 (lua-version ,(version-major+minor (package-version lua)))
1032 (lua-lgi (assoc-ref inputs "lua-lgi")))
1033 (wrap-program (string-append awesome "/bin/awesome")
1034 `("LUA_PATH" ";" suffix
1035 (,(format #f "~a/share/lua/~a/?.lua" lua-lgi lua-version)))
1036 `("LUA_CPATH" ";" suffix
1037 (,(format #f "~a/lib/lua/~a/?.so" lua-lgi lua-version)))
1038 `("GI_TYPELIB_PATH" ":" prefix (,(getenv "GI_TYPELIB_PATH")))
1039 `("LD_LIBRARY_PATH" suffix (,cairo)))
1040 #t))))))
1041 (home-page "https://awesomewm.org/")
1042 (synopsis "Highly configurable window manager")
1043 (description
1044 "Awesome has been designed as a framework window manager. It is fast, small,
1045 dynamic and extensible using the Lua programming language.")
1046 (license license:gpl2+)))
1047
1048 (define-public menumaker
1049 (package
1050 (name "menumaker")
1051 (version "0.99.12")
1052 (source
1053 (origin
1054 (method url-fetch)
1055 (uri (string-append "mirror://sourceforge/menumaker/"
1056 "menumaker-" version ".tar.gz"))
1057 (sha256
1058 (base32 "034v5204bsgkzzk6zfa5ia63q95gln47f7hwf96yvad5hrhmd8z3"))))
1059 (build-system gnu-build-system)
1060 (inputs
1061 `(("python" ,python)))
1062 (synopsis "Heuristics-driven menu generator")
1063 (description
1064 "MenuMaker is a menu generation utility for a number of X window
1065 managers and desktop environments. It is capable of finding lots of
1066 installed programs and generating a root menu consistent across all
1067 supported window managers, so one will get (almost) the same menu in
1068 all of them. Currently supported window managers include:
1069
1070 @enumerate
1071 @item BlackBox
1072 @item Deskmenu
1073 @item FluxBox
1074 @item IceWM
1075 @item OpenBox
1076 @item PekWM
1077 @item WindowMaker
1078 @item XFCE
1079 @end enumerate\n")
1080 (home-page "http://menumaker.sourceforge.net/")
1081 (license license:bsd-2)))
1082
1083 (define-public keybinder
1084 (package
1085 (name "keybinder")
1086 (version "0.3.1")
1087 (source
1088 (origin
1089 (method url-fetch)
1090 (uri (string-append "https://github.com/kupferlauncher/keybinder"
1091 "/releases/download/v" version "/keybinder-"
1092 version ".tar.gz"))
1093 (file-name (string-append name "-" version ".tar.gz"))
1094 (sha256
1095 (base32
1096 "0h52hj3ay8mfhwvmfxbxlfyq74hifdk8wxgxp7fr4iy6189hg7w7"))))
1097 (build-system gnu-build-system)
1098 (inputs
1099 `(("python-2" ,python-2)
1100 ("gtk+-2" ,gtk+-2)))
1101 (native-inputs
1102 `(("python2-pygtk" ,python2-pygtk)
1103 ("gtk-doc" ,gtk-doc)
1104 ("pkg-config" ,pkg-config)))
1105 (synopsis "Library for registering global keyboard shortcuts")
1106 (description
1107 "Keybinder is a library for registering global keyboard shortcuts.
1108 Keybinder works with GTK-based applications using the X Window System.")
1109 (home-page "https://github.com/kupferlauncher/keybinder")
1110 (license license:gpl2+)))
1111
1112 (define-public keybinder-3.0
1113 (package
1114 (name "keybinder-3.0")
1115 (version "0.3.2")
1116 (source
1117 (origin
1118 (method url-fetch)
1119 (uri (string-append "https://github.com/kupferlauncher/keybinder"
1120 "/releases/download/" name "-v" version "/" name "-"
1121 version ".tar.gz"))
1122 (file-name (string-append name "-" version ".tar.gz"))
1123 (sha256
1124 (base32
1125 "0830ihwnalw59pp1xzrp37dn58n8vwb8zasnm4a1h81v3x7dxqz6"))))
1126 (build-system gnu-build-system)
1127 (inputs
1128 `(("gtk+" ,gtk+)
1129 ("gobject-introspection" ,gobject-introspection)))
1130 (native-inputs
1131 `(("gtk-doc" ,gtk-doc)
1132 ("pkg-config" ,pkg-config)))
1133 (synopsis "Library for registering global keyboard shortcuts, Gtk3 version")
1134 (description
1135 "Keybinder is a library for registering global keyboard shortcuts.
1136 Keybinder works with GTK-based applications using the X Window System.")
1137 (home-page "https://github.com/kupferlauncher/keybinder")
1138 (license license:x11)))
1139
1140 (define-public spectrwm
1141 (package
1142 (name "spectrwm")
1143 (version "3.2.0")
1144 (source
1145 (origin
1146 (method git-fetch)
1147 (uri (git-reference
1148 (url "https://github.com/conformal/spectrwm")
1149 (commit
1150 (string-append "SPECTRWM_"
1151 (string-join (string-split version #\.) "_")))))
1152 (file-name (git-file-name name version))
1153 (sha256
1154 (base32 "1dfqy5f0s1nv6rqkz9lj006vypmp4rwxd5vczfk3ndzqgnh19kw6"))))
1155 (build-system gnu-build-system)
1156 (arguments
1157 `(#:make-flags (let ((pkg-config (lambda (flag)
1158 (string-append
1159 "$(shell pkg-config " flag " "
1160 "xft fontconfig x11 libpng)"))))
1161 (list
1162 "CC=gcc"
1163 (string-append "PREFIX=" %output)
1164 (string-append "INCS=-I. " (pkg-config "--cflags"))
1165 (string-append "LIBS=" (pkg-config "--libs") " -lm")))
1166 #:tests? #f ;no test suite
1167 #:phases
1168 (modify-phases %standard-phases
1169 (add-before 'build 'change-dir
1170 (lambda _
1171 (chdir "linux") #t))
1172 (add-after 'change-dir 'patch-makefile
1173 (lambda _
1174 (substitute* "Makefile"
1175 (("-g") ""))))
1176 (delete 'configure)))) ;no 'configure' exists
1177 (inputs
1178 `(("freetype" ,freetype)
1179 ("fontconfig" ,fontconfig)
1180 ("libx11" ,libx11)
1181 ("libxcursor" ,libxcursor)
1182 ("libxrandr" ,libxrandr)
1183 ("libxtst" ,libxtst)
1184 ("libxft" ,libxft)
1185 ("xcb-util" ,xcb-util)
1186 ("xcb-util-wm" ,xcb-util-wm)
1187 ("xcb-util-keysyms" ,xcb-util-keysyms)))
1188 (native-inputs
1189 `(("libxt" ,libxt)
1190 ("pkg-config" ,pkg-config)))
1191 (synopsis "Minimalistic automatic tiling window manager")
1192 (description
1193 "Spectrwm is a small dynamic tiling and reparenting window manager for X11.
1194 It is inspired by Xmonad and dwm. Its major features include:
1195
1196 @itemize
1197 @item Navigation anywhere on all screens with either the keyboard or mouse
1198 @item Customizable status bar
1199 @item Restartable without losing state
1200 @item Quick launch menu
1201 @item Many screen layouts possible with a few simple key strokes
1202 @item Move/resize floating windows
1203 @item Extended Window Manager Hints (@dfn{EWMH}) support
1204 @item Configurable tiling
1205 @item Adjustable tile gap allows for a true one pixel border
1206 @item Customizable colors and border width
1207 @end itemize\n")
1208 (home-page "https://github.com/conformal/spectrwm")
1209 (license license:isc)))
1210
1211 (define-public cwm
1212 (package
1213 (name "cwm")
1214 (version "6.7")
1215 (source
1216 (origin
1217 (method url-fetch)
1218 (uri (string-append "https://leahneukirchen.org/releases/cwm-"
1219 version ".tar.gz"))
1220 (sha256
1221 (base32 "022zld29qawd8gl700g4m24qa89il3aks397zkhh66wvzssdblzx"))))
1222 (build-system gnu-build-system)
1223 (arguments
1224 `(#:make-flags (list (string-append "CC=" ,(cc-for-target))
1225 (string-append "PREFIX=" %output))
1226 #:tests? #f
1227 #:phases
1228 (modify-phases %standard-phases
1229 (delete 'configure)
1230 (add-after 'build 'install-xsession
1231 (lambda* (#:key outputs #:allow-other-keys)
1232 ;; Add a .desktop file to xsessions.
1233 (let* ((output (assoc-ref outputs "out"))
1234 (xsessions (string-append output "/share/xsessions")))
1235 (mkdir-p xsessions)
1236 (with-output-to-file
1237 (string-append xsessions "/cwm.desktop")
1238 (lambda _
1239 (format #t
1240 "[Desktop Entry]~@
1241 Name=cwm~@
1242 Comment=OpenBSD Calm Window Manager fork~@
1243 Exec=~a/bin/cwm~@
1244 TryExec=~@*~a/bin/cwm~@
1245 Icon=~@
1246 Type=Application~%"
1247 output)))
1248 #t))))))
1249 (inputs
1250 `(("libxft" ,libxft)
1251 ("libxrandr" ,libxrandr)
1252 ("libxinerama" ,libxinerama)))
1253 (native-inputs
1254 `(("pkg-config" ,pkg-config)
1255 ("bison" ,bison)))
1256 (home-page "https://github.com/leahneukirchen/cwm")
1257 (synopsis "OpenBSD fork of the calmwm window manager")
1258 (description "Cwm is a stacking window manager for X11. It is an OpenBSD
1259 project derived from the original Calm Window Manager.")
1260 (license license:isc)))
1261
1262 (define-public dwl
1263 (package
1264 (name "dwl")
1265 (version "0.1")
1266 (source (origin
1267 (method git-fetch)
1268 (uri (git-reference
1269 (url "https://github.com/djpohly/dwl")
1270 (commit (string-append "v" version))))
1271 (file-name (git-file-name name version))
1272 (sha256
1273 (base32
1274 "18g2sx8cv54zl5iw5m9lzngrp6ra2pyp7c68qps2ava3brw9m0j2"))))
1275 (build-system gnu-build-system)
1276 (arguments
1277 `(#:tests? #f ; no tests
1278 #:make-flags
1279 (list
1280 (string-append "CC=" ,(cc-for-target))
1281 (string-append "PREFIX=" (assoc-ref %outputs "out")))
1282 #:phases
1283 (modify-phases %standard-phases
1284 (delete 'configure) ; no configure
1285 (replace 'install ; no install target
1286 (lambda* (#:key outputs #:allow-other-keys)
1287 (let* ((out (assoc-ref outputs "out"))
1288 (bin (string-append out "/bin")))
1289 (install-file "dwl" bin)))))))
1290 (native-inputs
1291 `(("pkg-config" ,pkg-config)))
1292 (inputs
1293 `(("wlroots" ,wlroots)))
1294 (home-page "https://github.com/djpohly/dwl")
1295 (synopsis "Dynamic window manager for Wayland")
1296 (description
1297 "@command{dwm} is a compact, hackable compositor for Wayland based on
1298 wlroots. It is intended to fill the same space in the Wayland world that dwm
1299 does in X11, primarily in terms of philosophy, and secondarily in terms of
1300 functionality. Like dwm, dwl is easy to understand and hack on, due to a
1301 limited size and a few external dependencies. It is configurable via
1302 @file{config.h}.")
1303 ;; LICENSE LICENSE.dwm LICENSE.tinywl
1304 (license (list license:gpl3+ license:expat license:cc0))))
1305
1306 (define-public nitrogen
1307 (package
1308 (name "nitrogen")
1309 (version "1.6.1")
1310 (source (origin
1311 (method url-fetch)
1312 (uri (string-append "http://github.com/l3ib/nitrogen/"
1313 "releases/download/" version "/"
1314 name "-" version ".tar.gz"))
1315 (sha256
1316 (base32
1317 "0zc3fl1mbhq0iyndy4ysmy8vv5c7xwf54rbgamzfhfvsgdq160pl"))))
1318 (build-system gnu-build-system)
1319 (inputs
1320 `(("gtk+" ,gtk+-2)
1321 ("gtkmm" ,gtkmm-2)
1322 ("glib" ,glib)
1323 ("glibmm" ,glibmm)))
1324 (native-inputs
1325 `(("pkg-config" ,pkg-config)))
1326 (home-page "http://projects.l3ib.org/nitrogen/")
1327 (synopsis "Background browser and setter for X windows")
1328 (description
1329 "This package is a background browser and setter for X windows. It's
1330 features are:
1331
1332 @itemize
1333 @item Multihead and Xinerama aware
1334 @item Recall mode to used via startup script
1335 @item Uses freedesktop.org standard for thumbnails
1336 @item Can set GNOME background
1337 @item Command lie set modes for script use
1338 @item Inotify monitoring of browse directory
1339 @item Lazy loading of thumbnails - conserves memory
1340 @item \"Automatic\" set mode - determines best mode to set an image based on
1341 its size
1342 @item Display preview images in a tiled icon layout
1343 @end itemize")
1344 (license license:gpl2+)))
1345
1346 (define-public polybar
1347 (package
1348 (name "polybar")
1349 (version "3.5.4")
1350 (source
1351 (origin
1352 (method url-fetch)
1353 (uri (string-append "https://github.com/polybar/polybar/releases/"
1354 "download/" version "/polybar-" version ".tar.gz"))
1355 (sha256
1356 (base32 "0awwjp3l0y9yhmrl914710ipawp2xr43jxrvmnanahlznblg8fhk"))))
1357 (build-system cmake-build-system)
1358 (arguments
1359 ;; Test is disabled because it requires downloading googletest from the
1360 ;; Internet.
1361 '(#:tests? #f))
1362 (inputs
1363 `(("alsa-lib" ,alsa-lib)
1364 ("cairo" ,cairo)
1365 ("i3-wm" ,i3-wm)
1366 ("jsoncpp" ,jsoncpp)
1367 ("libmpdclient" ,libmpdclient)
1368 ("libnl" ,libnl)
1369 ("libxcb" ,libxcb)
1370 ("pulseaudio" ,pulseaudio)
1371 ("xcb-proto" ,xcb-proto)
1372 ("xcb-util" ,xcb-util)
1373 ("xcb-util-cursor" ,xcb-util-cursor)
1374 ("xcb-util-image" ,xcb-util-image)
1375 ("xcb-util-wm" ,xcb-util-wm)
1376 ("xcb-util-xrm" ,xcb-util-xrm)))
1377 (native-inputs
1378 `(("pkg-config" ,pkg-config)
1379 ("python-sphinx" ,python-sphinx) ; for the manual
1380 ;; XXX: "python" input must be located after "python-2", or the package
1381 ;; fails to build with "missing required python module: xcbgen".
1382 ("python-2" ,python-2) ; lib/xpp depends on python 2
1383 ("python" ,python))) ; xcb-proto depends on python 3
1384 (home-page "https://polybar.github.io/")
1385 (synopsis "Fast and easy-to-use status bar")
1386 (description "Polybar aims to help users build beautiful and highly
1387 customizable status bars for their desktop environment. It has built-in
1388 functionality to display information about the most commonly used services.")
1389 (license license:expat)))
1390
1391 (define-public wlroots
1392 (package
1393 (name "wlroots")
1394 (version "0.12.0")
1395 (source
1396 (origin
1397 (method git-fetch)
1398 (uri (git-reference
1399 (url "https://github.com/swaywm/wlroots")
1400 (commit version)))
1401 (file-name (git-file-name name version))
1402 (sha256
1403 (base32 "01j38lmgs2c6fq68v8b75pkilia2wsgzgp46ivfbi9hhx47kgcfn"))))
1404 (build-system meson-build-system)
1405 (arguments
1406 `(#:configure-flags '("-Dlogind-provider=elogind")
1407 #:meson ,meson-0.55
1408 #:phases
1409 (modify-phases %standard-phases
1410 (add-before 'configure 'hardcode-paths
1411 (lambda* (#:key inputs #:allow-other-keys)
1412 (substitute* "xwayland/server.c"
1413 (("Xwayland") (string-append (assoc-ref inputs
1414 "xorg-server-xwayland")
1415 "/bin/Xwayland")))
1416 #t)))))
1417 (propagated-inputs
1418 `(;; As required by wlroots.pc.
1419 ("elogind" ,elogind)
1420 ("eudev" ,eudev)
1421 ("libinput" ,libinput)
1422 ("libxkbcommon" ,libxkbcommon)
1423 ("mesa" ,mesa)
1424 ("pixman" ,pixman)
1425 ("wayland" ,wayland)
1426 ("wayland-protocols" ,wayland-protocols)
1427 ("xcb-util-errors" ,xcb-util-errors)
1428 ("xcb-util-wm" ,xcb-util-wm)
1429 ("xorg-server-xwayland" ,xorg-server-xwayland)))
1430 (native-inputs
1431 `(("pkg-config" ,pkg-config)))
1432 (home-page "https://github.com/swaywm/wlroots")
1433 (synopsis "Pluggable, composable, unopinionated modules for building a
1434 Wayland compositor")
1435 (description "wlroots is a set of pluggable, composable, unopinionated
1436 modules for building a Wayland compositor.")
1437 (license license:expat))) ; MIT license
1438
1439 (define-public sway
1440 (package
1441 (name "sway")
1442 (version "1.5.1")
1443 (source
1444 (origin
1445 (method git-fetch)
1446 (uri (git-reference
1447 (url "https://github.com/swaywm/sway")
1448 (commit version)))
1449 (file-name (git-file-name name version))
1450 (sha256
1451 (base32 "1xsa3h8zhf29p0mi90baxpr76jkd9pd1gr97ky8cnjbcs4isj9j0"))))
1452 (build-system meson-build-system)
1453 (arguments
1454 `(#:phases
1455 (modify-phases %standard-phases
1456 (add-before 'configure 'hardcode-paths
1457 (lambda* (#:key inputs #:allow-other-keys)
1458 ;; Hardcode path to swaybg.
1459 (substitute* "sway/config.c"
1460 (("strdup..swaybg..")
1461 (string-append "strdup(\"" (assoc-ref inputs "swaybg")
1462 "/bin/swaybg\")")))
1463 ;; Hardcode path to scdoc.
1464 (substitute* "meson.build"
1465 (("scdoc.get_pkgconfig_variable..scdoc..")
1466 (string-append "'" (assoc-ref inputs "scdoc")
1467 "/bin/scdoc'")))
1468 #t)))))
1469 (inputs `(("cairo" ,cairo)
1470 ("elogind" ,elogind)
1471 ("gdk-pixbuf" ,gdk-pixbuf)
1472 ("json-c" ,json-c)
1473 ("libevdev" ,libevdev)
1474 ("libinput" ,libinput)
1475 ("libxkbcommon" ,libxkbcommon)
1476 ("pango" ,pango)
1477 ("swaybg" ,swaybg)
1478 ("wayland" ,wayland)
1479 ("wlroots" ,wlroots)))
1480 (native-inputs
1481 `(("linux-pam" ,linux-pam)
1482 ("mesa" ,mesa)
1483 ("pkg-config" ,pkg-config)
1484 ("scdoc" ,scdoc)
1485 ("wayland-protocols" ,wayland-protocols)))
1486 (home-page "https://github.com/swaywm/sway")
1487 (synopsis "Wayland compositor compatible with i3")
1488 (description "Sway is a i3-compatible Wayland compositor.")
1489 (license license:expat)))
1490
1491 (define-public swayidle
1492 (package
1493 (name "swayidle")
1494 (version "1.6")
1495 (source
1496 (origin
1497 (method git-fetch)
1498 (uri (git-reference
1499 (url "https://github.com/swaywm/swayidle")
1500 (commit version)))
1501 (file-name (git-file-name name version))
1502 (sha256
1503 (base32 "1nd3v8r9549lykdwh4krldfl59lzaspmmai5k1icy7dvi6kkr18r"))))
1504 (build-system meson-build-system)
1505 (arguments
1506 `(#:configure-flags '("-Dlogind-provider=elogind")))
1507 (inputs `(("elogind" ,elogind)
1508 ("wayland" ,wayland)))
1509 (native-inputs `(("pkg-config" ,pkg-config)
1510 ("scdoc" ,scdoc)
1511 ("wayland-protocols" ,wayland-protocols)))
1512 (home-page "https://github.com/swaywm/sway")
1513 (synopsis "Idle management daemon for Wayland compositors")
1514 (description "Swayidle is a idle management daemon for Wayland compositors.")
1515 (license license:expat))) ; MIT license
1516
1517 (define-public swaylock
1518 (package
1519 (name "swaylock")
1520 (version "1.5")
1521 (source
1522 (origin
1523 (method git-fetch)
1524 (uri (git-reference
1525 (url "https://github.com/swaywm/swaylock")
1526 (commit version)))
1527 (file-name (git-file-name name version))
1528 (sha256
1529 (base32 "0r95p4w11dwm5ra614vddz83r8j7z6gd120z2vcchy7m9b0f15kf"))))
1530 (build-system meson-build-system)
1531 (inputs `(("cairo" ,cairo)
1532 ("gdk-pixbuf" ,gdk-pixbuf)
1533 ("libxkbcommon" ,libxkbcommon)
1534 ;("linux-pam" ,linux-pam) ; FIXME: Doesn't work.
1535 ("wayland" ,wayland)))
1536 (native-inputs `(("pango" ,pango)
1537 ("pkg-config" ,pkg-config)
1538 ("scdoc" ,scdoc)
1539 ("wayland-protocols" ,wayland-protocols)))
1540 (home-page "https://github.com/swaywm/sway")
1541 (synopsis "Screen locking utility for Wayland compositors")
1542 (description "Swaylock is a screen locking utility for Wayland compositors.")
1543 (license license:expat))) ; MIT license
1544
1545 (define-public swaybg
1546 (package
1547 (name "swaybg")
1548 (version "1.0")
1549 (source
1550 (origin
1551 (method git-fetch)
1552 (uri (git-reference
1553 (url "https://github.com/swaywm/swaybg")
1554 (commit version)))
1555 (file-name (git-file-name name version))
1556 (sha256
1557 (base32 "1lmqz5bmig90gq2m7lwf02d2g7z4hzf8fhqz78c8vk92c6p4xwbc"))))
1558 (build-system meson-build-system)
1559 (inputs `(("cairo" ,cairo)
1560 ("gdk-pixbuf" ,gdk-pixbuf)
1561 ("wayland" ,wayland)))
1562 (native-inputs `(("pkg-config" ,pkg-config)
1563 ("scdoc" ,scdoc)
1564 ("wayland-protocols" ,wayland-protocols)))
1565 (home-page "https://github.com/swaywm/sway")
1566 (synopsis "Screen wallpaper utility for Wayland compositors")
1567 (description "Swaybg is a wallpaper utility for Wayland compositors.")
1568 (license license:expat))) ; MIT license
1569
1570 (define-public waybar
1571 (package
1572 (name "waybar")
1573 (version "0.9.4")
1574 (source
1575 (origin
1576 (method git-fetch)
1577 (uri (git-reference
1578 (url "https://github.com/Alexays/Waybar")
1579 (commit version)))
1580 (file-name (git-file-name name version))
1581 (sha256
1582 (base32 "038vnma7y7z81caywp45yr364bc1aq8d01j5vycyiyfv33nm76fy"))))
1583 (build-system meson-build-system)
1584 (inputs `(("date" ,date)
1585 ("fmt" ,fmt-6)
1586 ("gtk-layer-shell" ,gtk-layer-shell)
1587 ("gtkmm" ,gtkmm)
1588 ("jsoncpp" ,jsoncpp)
1589 ("libdbusmenu" ,libdbusmenu)
1590 ("libinput" ,libinput)
1591 ("libmpdclent" ,libmpdclient)
1592 ("libnl" ,libnl)
1593 ("pulseaudio" ,pulseaudio)
1594 ("spdlog" ,spdlog-1.7)
1595 ("wayland" ,wayland)))
1596 (native-inputs
1597 `(("gcc" ,gcc-8) ; for #include <filesystem>
1598 ("glib:bin" ,glib "bin")
1599 ("pkg-config" ,pkg-config)
1600 ("scdoc" ,scdoc)
1601 ("wayland-protocols" ,wayland-protocols)))
1602 (home-page "https://github.com/Alexays/Waybar")
1603 (synopsis "Wayland bar for Sway and Wlroots based compositors")
1604 (description "Waybar is a highly customisable Wayland bar for Sway and
1605 Wlroots based compositors.")
1606 (license license:expat))) ; MIT license
1607
1608 (define-public wlr-randr
1609 (package
1610 (name "wlr-randr")
1611 (version "0.1.0")
1612 (source
1613 (origin
1614 (method git-fetch)
1615 (uri (git-reference
1616 (url "https://github.com/emersion/wlr-randr")
1617 (commit (string-append "v" version))))
1618 (file-name (git-file-name name version))
1619 (sha256
1620 (base32 "10c8zzp78s5bw34vvjhilipa28bsdx3jbyhnxgp8f8kawh3cvgsc"))))
1621 (build-system meson-build-system)
1622 (inputs `(("wayland" ,wayland)))
1623 (native-inputs `(("pkg-config" ,pkg-config)))
1624 (home-page "https://github.com/emersion/wlr-randr")
1625 (synopsis "Utility to manage Wayland compositor outputs")
1626 (description "wlr-randr is a utility to manage outputs of a Wayland compositor.")
1627 (license license:expat))) ; MIT license
1628
1629 (define-public mako
1630 (package
1631 (name "mako")
1632 (version "1.4.1")
1633 (source
1634 (origin
1635 (method git-fetch)
1636 (uri (git-reference
1637 (url "https://github.com/emersion/mako")
1638 (commit (string-append "v" version))))
1639 (file-name (git-file-name name version))
1640 (sha256
1641 (base32 "0hwvibpnrximb628w9dsfjpi30b5jy7nfkm4d94z5vhp78p43vxh"))))
1642 (build-system meson-build-system)
1643 (inputs `(("cairo" ,cairo)
1644 ("elogind" ,elogind)
1645 ("gdk-pixbuf" ,gdk-pixbuf)
1646 ("pango" ,pango)
1647 ("wayland" ,wayland)))
1648 (native-inputs `(("pkg-config" ,pkg-config)
1649 ("scdoc" ,scdoc)
1650 ("wayland-protocols" ,wayland-protocols)))
1651 (home-page "https://wayland.emersion.fr/mako")
1652 (synopsis "Lightweight Wayland notification daemon")
1653 (description "Mako is a lightweight notification daemon for Wayland
1654 compositors that support the layer-shell protocol.")
1655 (license license:expat))) ; MIT license
1656
1657 (define-public kanshi
1658 (package
1659 (name "kanshi")
1660 (version "1.1.0")
1661 (source
1662 (origin
1663 (method git-fetch)
1664 (uri (git-reference
1665 (url "https://github.com/emersion/kanshi")
1666 (commit (string-append "v" version))))
1667 (file-name (git-file-name name version))
1668 (sha256
1669 (base32 "0nbpgm8qnn7ljsg9vgs35kl8l4rrk542vdcbx8wrn9r909ld3x92"))))
1670 (build-system meson-build-system)
1671 (inputs `(("wayland" ,wayland)))
1672 (native-inputs `(("pkg-config" ,pkg-config)
1673 ("scdoc" ,scdoc)))
1674 (home-page "https://wayland.emersion.fr/kanshi")
1675 (synopsis "Hotswappable output profiles for Wayland")
1676 (description "Kanshi allows you to define output profiles that are
1677 automatically enabled and disabled on hotplug. Kanshi can be used with
1678 Wayland compositors supporting the wlr-output-management protocol.")
1679 (license license:expat))) ; MIT license
1680
1681 (define-public stumpwm
1682 (package
1683 (name "stumpwm")
1684 (version "20.11")
1685 (source
1686 (origin
1687 (method git-fetch)
1688 (uri (git-reference
1689 (url "https://github.com/stumpwm/stumpwm")
1690 (commit version)))
1691 (file-name (git-file-name "stumpwm" version))
1692 (sha256
1693 (base32 "1ghs6ihvmb3bz4q4ys1d3h6rdi96xyiw7l2ip7jh54c25049aymf"))))
1694 (build-system asdf-build-system/sbcl)
1695 (native-inputs `(("fiasco" ,sbcl-fiasco)
1696 ("texinfo" ,texinfo)
1697
1698 ;; To build the manual.
1699 ("autoconf" ,autoconf)
1700 ("automake" ,automake)))
1701 (inputs `(("cl-ppcre" ,sbcl-cl-ppcre)
1702 ("clx" ,sbcl-clx)
1703 ("alexandria" ,sbcl-alexandria)))
1704 (outputs '("out" "lib"))
1705 (arguments
1706 '(#:asd-systems '("stumpwm")
1707 #:phases
1708 (modify-phases %standard-phases
1709 (add-after 'create-asdf-configuration 'build-program
1710 (lambda* (#:key outputs #:allow-other-keys)
1711 (build-program
1712 (string-append (assoc-ref outputs "out") "/bin/stumpwm")
1713 outputs
1714 #:entry-program '((stumpwm:stumpwm) 0))))
1715 (add-after 'build-program 'create-desktop-file
1716 (lambda* (#:key outputs #:allow-other-keys)
1717 (let* ((out (assoc-ref outputs "out"))
1718 (xsessions (string-append out "/share/xsessions")))
1719 (mkdir-p xsessions)
1720 (call-with-output-file
1721 (string-append xsessions "/stumpwm.desktop")
1722 (lambda (file)
1723 (format file
1724 "[Desktop Entry]~@
1725 Name=stumpwm~@
1726 Comment=The Stump Window Manager~@
1727 Exec=~a/bin/stumpwm~@
1728 TryExec=~@*~a/bin/stumpwm~@
1729 Icon=~@
1730 Type=Application~%"
1731 out)))
1732 #t)))
1733 (add-after 'install 'install-manual
1734 (lambda* (#:key (make-flags '()) outputs #:allow-other-keys)
1735 (let* ((out (assoc-ref outputs "out"))
1736 (info (string-append out "/share/info")))
1737 (invoke "./autogen.sh")
1738 (invoke "sh" "./configure" "SHELL=sh")
1739 (apply invoke "make" "stumpwm.info" make-flags)
1740 (install-file "stumpwm.info" info)
1741 #t))))))
1742 (synopsis "Window manager written in Common Lisp")
1743 (description "Stumpwm is a window manager written entirely in Common Lisp.
1744 It attempts to be highly customizable while relying entirely on the keyboard
1745 for input. These design decisions reflect the growing popularity of
1746 productive, customizable lisp based systems.")
1747 (home-page "https://github.com/stumpwm/stumpwm")
1748 (license license:gpl2+)
1749 (properties `((cl-source-variant . ,(delay cl-stumpwm))))))
1750
1751 (define-public sbcl-stumpwm
1752 (deprecated-package "sbcl-stumpwm" stumpwm))
1753
1754 (define-public cl-stumpwm
1755 (package
1756 (inherit (sbcl-package->cl-source-package stumpwm))
1757 (name "cl-stumpwm")))
1758
1759 (define-public stumpwm+slynk
1760 (package
1761 (inherit stumpwm)
1762 (name "stumpwm-with-slynk")
1763 (outputs '("out"))
1764 (inputs
1765 `(("stumpwm" ,stumpwm "lib")
1766 ("slynk" ,sbcl-slynk)))
1767 (arguments
1768 (substitute-keyword-arguments (package-arguments stumpwm)
1769 ((#:phases phases)
1770 `(modify-phases ,phases
1771 (replace 'build-program
1772 (lambda* (#:key inputs outputs #:allow-other-keys)
1773 (let* ((out (assoc-ref outputs "out"))
1774 (program (string-append out "/bin/stumpwm")))
1775 (setenv "HOME" "/tmp")
1776 (build-program program outputs
1777 #:entry-program '((stumpwm:stumpwm) 0)
1778 #:dependencies '("stumpwm" "slynk")
1779 #:dependency-prefixes
1780 (map (lambda (input) (assoc-ref inputs input))
1781 '("stumpwm" "slynk")))
1782 #t)))
1783 (delete 'copy-source)
1784 (delete 'build)
1785 (delete 'check)
1786 (delete 'cleanup)))))))
1787
1788 (define stumpwm-contrib
1789 (let ((commit "920f8fc1488f7953f205e1dda4c2ecbbbda56d63")
1790 (revision "2"))
1791 (package
1792 (name "stumpwm-contrib")
1793 (version (git-version "0.0.1" revision commit)) ;no upstream release
1794 (source
1795 (origin
1796 (method git-fetch)
1797 (uri (git-reference
1798 (url "https://github.com/stumpwm/stumpwm-contrib")
1799 (commit commit)))
1800 (file-name (git-file-name name version))
1801 (sha256
1802 (base32 "0giac390bq95ag41xkxqp8jjrhfx1wpgglz7jg5rkm0wjhcwmyml"))))
1803 (build-system asdf-build-system/sbcl)
1804 (inputs
1805 `(("stumpwm" ,stumpwm "lib")))
1806 (home-page "https://github.com/stumpwm/stumpwm-contrib")
1807 (synopsis "StumpWM interactive shell")
1808 (description "This package provides a StumpWM interactive shell.")
1809 (license (list license:gpl2+ license:gpl3+ license:bsd-2)))))
1810
1811 (define-public stumpish
1812 (package
1813 (inherit stumpwm-contrib)
1814 (name "stumpish")
1815 (inputs
1816 `(("bash" ,bash)
1817 ("rlwrap" ,rlwrap)
1818 ("xprop" ,xprop)))
1819 (build-system trivial-build-system)
1820 (arguments
1821 '(#:modules ((guix build utils))
1822 #:builder
1823 (begin
1824 (use-modules (guix build utils))
1825 (copy-recursively (assoc-ref %build-inputs "source") ".")
1826 (chdir "util/stumpish")
1827 (substitute* "stumpish"
1828 (("rlwrap") (string-append (assoc-ref %build-inputs "rlwrap")
1829 "/bin/rlwrap"))
1830 (("xprop") (string-append (assoc-ref %build-inputs "xprop")
1831 "/bin/xprop"))
1832 (("/bin/sh") (string-append (assoc-ref %build-inputs "bash")
1833 "/bin/bash")))
1834 (install-file "stumpish" (string-append %output "/bin")))))
1835 (home-page "https://github.com/stumpwm/stumpwm-contrib")
1836 (synopsis "StumpWM interactive shell")
1837 (description "This package provides a StumpWM interactive shell.")
1838 (license (list license:gpl2+ license:gpl3+ license:bsd-2))))
1839
1840 (define-public sbcl-stumpwm+slynk
1841 (deprecated-package "sbcl-stumpwm-with-slynk" stumpwm+slynk))
1842
1843 (define-public sbcl-stumpwm-ttf-fonts
1844 (package
1845 (inherit stumpwm-contrib)
1846 (name "sbcl-stumpwm-ttf-fonts")
1847 (inputs
1848 `(("stumpwm" ,stumpwm "lib")
1849 ("clx-truetype" ,sbcl-clx-truetype)))
1850 (arguments
1851 '(#:asd-systems '("ttf-fonts")
1852 #:tests? #f
1853 #:phases
1854 (modify-phases %standard-phases
1855 (add-after 'unpack 'chdir
1856 (lambda _ (chdir "util/ttf-fonts") #t)))))
1857 (home-page "https://github.com/stumpwm/stumpwm-contrib")
1858 (synopsis "Implementation of TTF font rendering for Lisp")
1859 (description "This package provides a Lisp implementation of TTF font
1860 rendering.")
1861 (license (list license:gpl2+ license:gpl3+ license:bsd-2))))
1862
1863 (define-public sbcl-stumpwm-pass
1864 (package
1865 (inherit stumpwm-contrib)
1866 (name "sbcl-stumpwm-pass")
1867 (arguments
1868 '(#:asd-systems '("pass")
1869 #:tests? #f
1870 #:phases
1871 (modify-phases %standard-phases
1872 (add-after 'unpack 'chdir
1873 (lambda _ (chdir "util/pass") #t)))))
1874 (home-page "https://github.com/stumpwm/stumpwm-contrib")
1875 (synopsis "Integrate @code{pass} with StumpWM")
1876 (description "This package provides an interface which integrates
1877 password-store into StumpWM.")
1878 (license (list license:gpl2+ license:gpl3+ license:bsd-2))))
1879
1880 (define-public sbcl-stumpwm-globalwindows
1881 (package
1882 (inherit stumpwm-contrib)
1883 (name "sbcl-stumpwm-globalwindows")
1884 (arguments
1885 '(#:asd-systems '("globalwindows")
1886 #:tests? #f
1887 #:phases
1888 (modify-phases %standard-phases
1889 (add-after 'unpack 'chdir
1890 (lambda _ (chdir "util/globalwindows") #t)))))
1891 (home-page "https://github.com/stumpwm/stumpwm-contrib")
1892 (synopsis "Manipulate all windows in the current X session")
1893 (description "This package provides a StumpWM module to manipulate all
1894 windows in the current X session.")
1895 (license (list license:gpl2+ license:gpl3+ license:bsd-2))))
1896
1897 (define-public sbcl-stumpwm-swm-gaps
1898 (package
1899 (inherit stumpwm-contrib)
1900 (name "sbcl-stumpwm-swm-gaps")
1901 (arguments
1902 '(#:asd-systems '("swm-gaps")
1903 #:tests? #f
1904 #:phases
1905 (modify-phases %standard-phases
1906 (add-after 'unpack 'chdir
1907 (lambda _ (chdir "util/swm-gaps") #t)))))
1908 (home-page "https://github.com/stumpwm/stumpwm-contrib")
1909 (synopsis "Gaps between windows for StumpWM")
1910 (description "This package provides a StumpWM module which adds gaps
1911 between windows.")
1912 (license (list license:gpl2+ license:gpl3+ license:bsd-2))))
1913
1914 (define-public sbcl-stumpwm-net
1915 (package
1916 (inherit stumpwm-contrib)
1917 (name "sbcl-stumpwm-net")
1918 (arguments
1919 '(#:asd-systems '("net")
1920 #:tests? #f
1921 #:phases
1922 (modify-phases %standard-phases
1923 (add-after 'unpack 'chdir (lambda _ (chdir "modeline/net") #t)))))
1924 (home-page
1925 "https://github.com/stumpwm/stumpwm-contrib/tree/master/modeline/net")
1926 (synopsis "Modeline support for network connectivity")
1927 (description "Modeline support for network connectivity.")
1928 (supported-systems
1929 (filter (lambda (a) (string-contains a "linux")) %supported-systems))
1930 (license license:gpl3+)))
1931
1932 (define-public sbcl-stumpwm-wifi
1933 (package
1934 (inherit stumpwm-contrib)
1935 (name "sbcl-stumpwm-wifi")
1936 (arguments
1937 '(#:asd-systems '("wifi")
1938 #:tests? #f
1939 #:phases
1940 (modify-phases %standard-phases
1941 (add-after 'unpack 'chdir (lambda _ (chdir "modeline/wifi") #t)))))
1942 (home-page
1943 "https://github.com/stumpwm/stumpwm-contrib/tree/master/modeline/wifi")
1944 (synopsis "Modeline support for wifi connectivity")
1945 (description "Modeline support for wifi connectivity.")
1946 (supported-systems
1947 (filter (lambda (a) (string-contains a "linux")) %supported-systems))
1948 (license license:gpl3+)))
1949
1950 (define-public sbcl-stumpwm-stumptray
1951 (package
1952 (inherit stumpwm-contrib)
1953 (name "sbcl-stumpwm-stumptray")
1954 (arguments
1955 '(#:asd-systems '("stumptray")
1956 #:tests? #f
1957 #:phases
1958 (modify-phases %standard-phases
1959 (add-after 'unpack 'chdir (lambda _ (chdir "modeline/stumptray") #t)))))
1960 (inputs
1961 `(("stumpwm" ,stumpwm "lib")
1962 ("xembed" ,sbcl-clx-xembed)
1963 ("alexandria" ,sbcl-alexandria)))
1964 (home-page
1965 "https://github.com/stumpwm/stumpwm-contrib/tree/master/modeline/stumptray")
1966 (synopsis "Modeline support for stumptray connectivity")
1967 (description "Modeline support for stumptray connectivity.")
1968 (supported-systems
1969 (filter (lambda (a) (string-contains a "linux")) %supported-systems))
1970 (license license:gpl3+)))
1971
1972 (define-public sbcl-stumpwm-kbd-layouts
1973 (package
1974 (inherit stumpwm-contrib)
1975 (name "sbcl-stumpwm-kbd-layouts")
1976 (arguments
1977 '(#:asd-systems '("kbd-layouts")
1978 #:tests? #f
1979 #:phases
1980 (modify-phases %standard-phases
1981 (add-after 'unpack 'chdir (lambda _ (chdir "util/kbd-layouts") #t)))))
1982 (home-page
1983 "https://github.com/stumpwm/stumpwm-contrib/tree/master/util/kbd-layouts")
1984 (synopsis "Keyboard layout switcher for StumpWM")
1985 (description "Keyboard layout switcher for StumpWM")
1986 (license license:gpl3+)))
1987
1988 (define-public sbcl-stumpwm-numpad-layouts
1989 (package
1990 (inherit stumpwm-contrib)
1991 (name "sbcl-stumpwm-numpad-layouts")
1992 (arguments
1993 '(#:asd-systems '("numpad-layouts")
1994 #:tests? #f
1995 #:phases
1996 (modify-phases %standard-phases
1997 (add-after 'unpack 'chdir
1998 (lambda _
1999 (chdir "util/numpad-layouts"))))))
2000 (home-page
2001 "https://github.com/stumpwm/stumpwm-contrib/tree/master/util/numpad-layouts")
2002 (synopsis "Keyboard numpad layouts for StumpWM")
2003 (description "This is a module for handling different keyboards numpad
2004 layouts in StumpWM.")
2005 (license license:gpl3+)))
2006
2007 (define-public sbcl-stumpwm-cpu
2008 (package
2009 (inherit stumpwm-contrib)
2010 (name "sbcl-stumpwm-cpu")
2011 (arguments
2012 '(#:asd-systems '("cpu")
2013 #:tests? #f
2014 #:phases
2015 (modify-phases %standard-phases
2016 (add-after 'unpack 'chdir
2017 (lambda _
2018 (chdir "modeline/cpu"))))))
2019 (home-page
2020 "https://github.com/stumpwm/stumpwm-contrib/tree/master/modeline/cpu")
2021 (synopsis "Modeline support for CPU info")
2022 (description "Modeline support for CPU info.")
2023 (license license:gpl3+)))
2024
2025 (define-public sbcl-stumpwm-mem
2026 (package
2027 (inherit stumpwm-contrib)
2028 (name "sbcl-stumpwm-mem")
2029 (arguments
2030 '(#:asd-systems '("mem")
2031 #:tests? #f
2032 #:phases
2033 (modify-phases %standard-phases
2034 (add-after 'unpack 'chdir
2035 (lambda _
2036 (chdir "modeline/mem"))))))
2037 (home-page
2038 "https://github.com/stumpwm/stumpwm-contrib/tree/master/modeline/mem")
2039 (synopsis "Modeline support for memory info")
2040 (description "Modeline support for memory info.")
2041 (license license:gpl3+)))
2042
2043 (define-public sbcl-stumpwm-winner-mode
2044 (package
2045 (inherit stumpwm-contrib)
2046 (name "sbcl-stumpwm-winner-mode")
2047 (arguments
2048 '(#:asd-systems '("winner-mode")
2049 #:tests? #f
2050 #:phases
2051 (modify-phases %standard-phases
2052 (add-after 'unpack 'chdir
2053 (lambda _
2054 (chdir "util/winner-mode"))))))
2055 (home-page
2056 "https://github.com/stumpwm/stumpwm-contrib/tree/master/util/winner-mode")
2057 (synopsis "Emacs' winner-mode for StumpWM")
2058 (description "This module provides a winner-mode for StumpWM similar to the
2059 one in Emacs.")
2060 (license license:gpl3+)))
2061
2062 (define-public sbcl-stumpwm-screenshot
2063 (package
2064 (inherit stumpwm-contrib)
2065 (name "sbcl-stumpwm-screenshot")
2066 (inputs
2067 `(("stumpwm" ,stumpwm "lib")
2068 ("zpng" ,sbcl-zpng)))
2069 (arguments
2070 '(#:asd-systems '("screenshot")
2071 #:tests? #f
2072 #:phases
2073 (modify-phases %standard-phases
2074 (add-after 'unpack 'chdir
2075 (lambda _
2076 (chdir "util/screenshot")))
2077 (add-after 'chdir 'fix-build
2078 (lambda _
2079 (substitute* "screenshot.asd"
2080 (("#:zpng")
2081 "#:stumpwm #:zpng")))))))
2082 (home-page
2083 "https://github.com/stumpwm/stumpwm-contrib/tree/master/util/screenshot")
2084 (synopsis "Screenshots for StumpWM")
2085 (description "This StumpWM module can take screenshots and store them as
2086 PNG files.")
2087 (license license:gpl3+)))
2088
2089 (define-public lemonbar
2090 (let ((commit "35183ab81d2128dbb7b6d8e119cc57846bcefdb4")
2091 (revision "1"))
2092 (package
2093 (name "lemonbar")
2094 (version (git-version "1.3" revision commit))
2095 (source (origin
2096 (method git-fetch)
2097 (uri (git-reference
2098 (url "https://github.com/LemonBoy/bar")
2099 (commit commit)))
2100 (file-name (git-file-name name version))
2101 (sha256
2102 (base32
2103 "1wwqbph392iwz8skaqxb0xpklb1l6yganqz80g4x1fhrnz7idmlh"))))
2104 (build-system gnu-build-system)
2105 (arguments
2106 `(#:tests? #f ; no test suite
2107 #:make-flags
2108 (list ,(string-append "CC=" (cc-for-target))
2109 (string-append "PREFIX=" %output))
2110 #:phases
2111 (modify-phases %standard-phases
2112 (delete 'configure))))
2113 (inputs
2114 `(("libxcb" ,libxcb)))
2115 (native-inputs
2116 `(("perl" ,perl)))
2117 (home-page "https://github.com/LemonBoy/bar")
2118 (synopsis "Featherweight status bar")
2119 (description
2120 "@code{lemonbar} (formerly known as @code{bar}) is a lightweight
2121 bar entirely based on XCB. Provides full UTF-8 support, basic
2122 formatting, RandR and Xinerama support and EWMH compliance without
2123 wasting your precious memory.")
2124 (license license:x11))))
2125
2126 (define-public lemonbar-xft
2127 ;; Upstream v2.0 tag is several years behind HEAD
2128 (let ((commit "481e12363e2a0fe0ddd2176a8e003392be90ed02"))
2129 (package
2130 (inherit lemonbar)
2131 (name "lemonbar-xft")
2132 (version (string-append "2.0." (string-take commit 7)))
2133 (source (origin
2134 (method git-fetch)
2135 (uri (git-reference
2136 (url "https://github.com/drscream/lemonbar-xft")
2137 (commit commit)))
2138 (file-name (git-file-name name version))
2139 (sha256
2140 (base32
2141 "0588g37h18lv50h7w8vfbwhvc3iajh7sdr53848spaif99nh3mh4"))))
2142 (inputs
2143 `(("freetype" ,freetype)
2144 ("libxft" ,libxft)
2145 ("libx11" ,libx11)
2146 ,@(package-inputs lemonbar)))
2147 (arguments
2148 (substitute-keyword-arguments (package-arguments lemonbar)
2149 ((#:make-flags make-flags)
2150 `(append
2151 ,make-flags
2152 (list (string-append
2153 "CFLAGS="
2154 (string-join
2155 (list (string-append
2156 "-I" (assoc-ref %build-inputs "freetype")
2157 "/include/freetype2")
2158 (string-append
2159 "-D" "VERSION="
2160 (format #f "'~s'" ,version))))))))))
2161 (home-page "https://github.com/drscream/lemonbar-xft")
2162 (synopsis
2163 (string-append
2164 (package-synopsis lemonbar)
2165 " with fontconfig support"))
2166 (description
2167 (string-append
2168 (package-description lemonbar)
2169 "This is a fork of the @code{lemonbar} package that adds fontconfig
2170 support, for easier unicode usage.")))))
2171
2172 (define-public xclickroot
2173 (package
2174 (name "xclickroot")
2175 (version "1.2")
2176 (source (origin
2177 (method git-fetch)
2178 (uri (git-reference
2179 (url "https://github.com/phillbush/xclickroot")
2180 (commit (string-append "v" version))))
2181 (file-name (git-file-name name version))
2182 (sha256
2183 (base32
2184 "1nd5qz0qz5j7gx2jsbcp234giwaa0xmg42vrcjrcf587q9ivakfl"))))
2185 (build-system gnu-build-system)
2186 (inputs
2187 `(("libx11" ,libx11)))
2188 (arguments
2189 `(#:tests? #f ;no test suite
2190 #:make-flags
2191 (list ,(string-append "CC=" (cc-for-target))
2192 (string-append "PREFIX=" %output))
2193 #:phases
2194 (modify-phases %standard-phases
2195 (delete 'configure))))
2196 (home-page "https://github.com/phillbush/xclickroot")
2197 (synopsis "Run a command when a mouse button is pressed on the root window")
2198 (description "@code{xclickroot} runs a command every time a given mouse
2199 button is pressed on the root window.")
2200 (license license:public-domain)))
2201
2202 (define-public xmenu
2203 (package
2204 (name "xmenu")
2205 (version "4.4.1")
2206 (source (origin
2207 (method git-fetch)
2208 (uri (git-reference
2209 (url "https://github.com/phillbush/xmenu")
2210 (commit (string-append "v" version))))
2211 (file-name (git-file-name name version))
2212 (sha256
2213 (base32
2214 "1s70zvsaqnsjqs298vw3py0vcvia68xlks1wcz37pb88bwligz1x"))))
2215 (build-system gnu-build-system)
2216 (inputs
2217 `(("libx11" ,libx11)
2218 ("libxinerama" ,libxinerama)
2219 ("libxft" ,libxft)
2220 ("freetype" ,freetype)
2221 ("imlib2" ,imlib2)))
2222 (arguments
2223 `(#:tests? #f ;no test suite
2224 #:make-flags
2225 (list (string-append "CC=" ,(cc-for-target))
2226 (string-append "PREFIX=" %output)
2227 (string-append "CFLAGS="
2228 "-I" (assoc-ref %build-inputs "freetype")
2229 "/include/freetype2"))
2230 #:phases
2231 (modify-phases %standard-phases
2232 (delete 'configure))))
2233 (home-page "https://github.com/phillbush/xmenu")
2234 (synopsis "Menu utility for X")
2235 (description "@code{xmenu} receives a menu specification in stdin, shows
2236 a menu for the user to select one of the options, and outputs the option
2237 selected to stdout. It can be controlled both via mouse and via keyboard.")
2238 (license license:public-domain)))
2239
2240 (define-public idesk
2241 (package
2242 (name "idesk")
2243 (version "0.7.5")
2244 (source
2245 (origin
2246 (method url-fetch)
2247 (uri (string-append
2248 "mirror://sourceforge/idesk/idesk/idesk-" version
2249 "/idesk-" version ".tar.bz2"))
2250 (sha256
2251 (base32
2252 "1lxk2yvgysxwl514zc82lwr1dwc8cd62slgr5lzdhjbdrxfymdyl"))
2253 (modules '((guix build utils)
2254 (ice-9 format)))
2255 (snippet
2256 '(let* ((file "src/DesktopConfig.cpp")
2257 (template (string-append file ".XXXXXX"))
2258 (out (mkstemp! template))
2259 (st (stat file))
2260 (mode (stat:mode st)))
2261 (call-with-ascii-input-file file
2262 (lambda (p)
2263 (format out "~{~a~%~}" '("#include <unistd.h>"
2264 "#include <sys/stat.h>"
2265 "#include <sys/types.h>"))
2266 (dump-port p out)
2267 (close out)
2268 (chmod template mode)
2269 (rename-file template file)
2270 #t))))))
2271 (build-system gnu-build-system)
2272 (inputs
2273 `(("libx11" ,libx11)
2274 ("libxft" ,libxft)
2275 ("libxpm" ,libxpm)
2276 ("libpng" ,libpng)
2277 ("freetype" ,freetype)
2278 ("imlib2" ,imlib2)
2279 ("sed" ,sed)))
2280 (native-inputs
2281 `(("pkg-config" ,pkg-config)))
2282 (arguments
2283 `(#:tests? #f)) ;no test suite
2284 (home-page "https://sourceforge.net/projects/idesk/")
2285 (synopsis "Add icons on X desktop and set background image for wallpaper")
2286 (description "Idesk is program that draws desktop icons. Each icon will
2287 execute a shell command on a configurable action. The icons can be moved on
2288 the desktop by dragging them, and the icons will remember their positions on
2289 start-up.")
2290 (license license:bsd-3)))
2291
2292 (define-public xnotify
2293 (package
2294 (name "xnotify")
2295 (version "0.7.3")
2296 (source (origin
2297 (method git-fetch)
2298 (uri (git-reference
2299 (url "https://github.com/phillbush/xnotify")
2300 (commit version)))
2301 (file-name (git-file-name name version))
2302 (sha256
2303 (base32
2304 "09s29m8z4x3mc3wja2587ik3f6zg16b40adr3nllnpyy1mqnprq5"))))
2305 (build-system gnu-build-system)
2306 (inputs
2307 `(("libx11" ,libx11)
2308 ("libxft" ,libxft)
2309 ("libxinerama" ,libxinerama)
2310 ("imlib2" ,imlib2)))
2311 (arguments
2312 `(#:make-flags
2313 (list (string-append "CC=" ,(cc-for-target))
2314 (string-append "PREFIX=" %output)
2315 (string-append "CFLAGS="
2316 "-I" (assoc-ref %build-inputs "freetype")
2317 "/include/freetype2"))
2318 #:tests? #f ;no test suite
2319 #:phases
2320 (modify-phases %standard-phases
2321 (delete 'configure))))
2322 (home-page "https://github.com/phillbush/xnotify")
2323 (synopsis "Displays a notification on the screen")
2324 (description "XNotify receives a notification specification in stdin and
2325 shows a notification for the user on the screen.")
2326 (license license:expat)))
2327
2328 (define-public cagebreak
2329 (package
2330 (name "cagebreak")
2331 (version "1.4.4")
2332 (source (origin
2333 (method git-fetch)
2334 (uri (git-reference
2335 (url "https://github.com/project-repo/cagebreak")
2336 (commit version)))
2337 (file-name (git-file-name name version))
2338 (sha256
2339 (base32
2340 "0mnxs1m7jrqdl0asx39nxfzvkp7d4jqpdchi63w2yd1igpj2frb2"))))
2341 (build-system meson-build-system)
2342 (arguments '(#:configure-flags '("-Dxwayland=true")))
2343 (native-inputs
2344 `(("pandoc" ,pandoc)
2345 ("pkg-config" ,pkg-config)))
2346 (inputs
2347 `(("pango" ,pango)
2348 ("wlroots" ,wlroots)))
2349 (home-page "https://github.com/project-repo/cagebreak")
2350 (synopsis "Tiling wayland compositor inspired by ratpoison")
2351 (description
2352 "@command{cagebreak} is a slim, keyboard-controlled, tiling compositor
2353 for wayland conceptually based on the X11 window manager
2354 @command{ratpoison}.")
2355 (license license:expat)))