gnu: Add lua-ldoc.
[jackhill/guix/guix.git] / gnu / packages / wm.scm
CommitLineData
bda2ded6
ED
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr>
6e38c4be 3;;; Copyright © 2015 Siniša Biđin <sinisa@bidin.eu>
0ede252b 4;;; Copyright © 2015, 2016 Eric Bavier <bavier@member.fsf.org>
1268e52d 5;;; Copyright © 2015 xd1le <elisp.vim@gmail.com>
ca80b8ba 6;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
0ede252b 7;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
37f7853e 8;;; Copyright © 2016, 2019 Efraim Flashner <efraim@flashner.co.il>
766a22fb 9;;; Copyright © 2016 Al McElrath <hello@yrns.org>
3d1240aa 10;;; Copyright © 2016 Carlo Zancanaro <carlo@zancanaro.id.au>
a0158c26 11;;; Copyright © 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
47956fa0 12;;; Copyright © 2016, 2017, 2018 ng0 <ng0@n0.is>
22037a32 13;;; Copyright © 2016 doncatnip <gnopap@gmail.com>
37356e0b 14;;; Copyright © 2016 Ivan Vilata i Balaguer <ivan@selidor.net>
174b091f 15;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
b6afc350 16;;; Copyright © 2017, 2019 Marius Bakke <mbakke@fastmail.com>
6e864d00 17;;; Copyright © 2017 Oleg Pykhalov <go.wigust@gmail.com>
553199c5 18;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
70024cfa 19;;; Copyright © 2018 Pierre-Antoine Rouby <contact@parouby.fr>
e23b6a68 20;;; Copyright © 2018, 2019 Meiyo Peng <meiyo@riseup.net>
eea969cf 21;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
4ec42524 22;;; Copyright © 2019 Timothy Sample <samplet@ngyro.com>
7a1d6a77 23;;; Copyright © 2019 Gábor Boskovits <boskovits@gmail.com>
1d25447e 24;;; Copyright © 2019 Kyle Andrews <kyle.c.andrews@gmail.com>
8c765a3b 25;;; Copyright © 2019 Ingo Ruhnke <grumbel@gmail.com>
d5329de9 26;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
b066ad89 27;;; Copyright © 2019 John Soo <jsoo1@asu.edu>
88f06fd0
PN
28;;; Copyright © 2018, 2019 Pierre Langlois <pierre.langlois@gmx.com>
29;;; Copyright © 2016, 2017 Andy Patterson <ajpatter@uwaterloo.ca>
59198ba1 30;;; Copyright © 2019 Evan Straw <evan.straw99@gmail.com>
4b3ff362 31;;; Copyright © 2019 Brett Gilio <brettg@gnu.org>
d4145638 32;;; Copyright © 2019 Noodles! <nnoodle@chiru.no>
88c94080 33;;; Copyright © 2019 Alexandru-Sergiu Marton <brown121407@member.fsf.org>
bda2ded6
ED
34;;;
35;;; This file is part of GNU Guix.
36;;;
37;;; GNU Guix is free software; you can redistribute it and/or modify it
38;;; under the terms of the GNU General Public License as published by
39;;; the Free Software Foundation; either version 3 of the License, or (at
40;;; your option) any later version.
41;;;
42;;; GNU Guix is distributed in the hope that it will be useful, but
43;;; WITHOUT ANY WARRANTY; without even the implied warranty of
44;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
45;;; GNU General Public License for more details.
46;;;
47;;; You should have received a copy of the GNU General Public License
48;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
49
50(define-module (gnu packages wm)
0ede252b 51 #:use-module ((guix licenses) #:prefix license:)
bda2ded6 52 #:use-module (guix packages)
40cad6b9
EF
53 #:use-module (guix download)
54 #:use-module (guix git-download)
88f06fd0 55 #:use-module (guix build-system asdf)
3d1240aa 56 #:use-module (guix build-system cmake)
bda2ded6 57 #:use-module (guix build-system gnu)
6e38c4be 58 #:use-module (guix build-system haskell)
eea969cf 59 #:use-module (guix build-system meson)
3e7cb70a 60 #:use-module (guix build-system perl)
c165591d 61 #:use-module (guix build-system python)
88f06fd0 62 #:use-module (guix utils)
40cad6b9 63 #:use-module (gnu packages)
4b563b34 64 #:use-module (gnu packages autotools)
bda2ded6 65 #:use-module (gnu packages base)
40cad6b9 66 #:use-module (gnu packages bison)
bda2ded6 67 #:use-module (gnu packages docbook)
40cad6b9 68 #:use-module (gnu packages documentation)
0ede252b 69 #:use-module (gnu packages fontutils)
3d1240aa 70 #:use-module (gnu packages freedesktop)
40cad6b9
EF
71 #:use-module (gnu packages fribidi)
72 #:use-module (gnu packages gawk)
73 #:use-module (gnu packages gl)
3d1240aa
CZ
74 #:use-module (gnu packages glib)
75 #:use-module (gnu packages gperf)
40cad6b9
EF
76 #:use-module (gnu packages gtk)
77 #:use-module (gnu packages haskell-check)
78 #:use-module (gnu packages haskell-web)
79 #:use-module (gnu packages haskell-xyz)
80 #:use-module (gnu packages image)
3d1240aa 81 #:use-module (gnu packages imagemagick)
40cad6b9 82 #:use-module (gnu packages libevent)
4b563b34 83 #:use-module (gnu packages linux)
88f06fd0 84 #:use-module (gnu packages lisp-xyz)
40cad6b9
EF
85 #:use-module (gnu packages logging)
86 #:use-module (gnu packages lua)
87 #:use-module (gnu packages m4)
2ff844f0 88 #:use-module (gnu packages man)
40cad6b9
EF
89 #:use-module (gnu packages maths)
90 #:use-module (gnu packages mpd)
91 #:use-module (gnu packages pcre)
92 #:use-module (gnu packages perl)
93 #:use-module (gnu packages pkg-config)
7a1d6a77 94 #:use-module (gnu packages pretty-print)
40cad6b9
EF
95 #:use-module (gnu packages pulseaudio)
96 #:use-module (gnu packages python)
7a1d6a77 97 #:use-module (gnu packages serialization)
40cad6b9 98 #:use-module (gnu packages suckless)
88f06fd0 99 #:use-module (gnu packages texinfo)
40cad6b9
EF
100 #:use-module (gnu packages textutils)
101 #:use-module (gnu packages version-control)
102 #:use-module (gnu packages video)
103 #:use-module (gnu packages web)
104 #:use-module (gnu packages xdisorg)
105 #:use-module (gnu packages xml)
106 #:use-module (gnu packages xorg))
bda2ded6 107
1268e52d 108(define-public bspwm
109 (package
110 (name "bspwm")
9610a422 111 (version "0.9.9")
1268e52d 112 (source
113 (origin
782b1224
TGR
114 (method git-fetch)
115 (uri (git-reference
116 (url "https://github.com/baskerville/bspwm.git")
117 (commit version)))
118 (file-name (git-file-name name version))
1268e52d 119 (sha256
9610a422 120 (base32 "1i7crmljk1vra1r6alxvj6lqqailjjcv0llyg7a0gm23rbv4a42g"))))
1268e52d 121 (build-system gnu-build-system)
122 (inputs
123 `(("libxcb" ,libxcb)
124 ("libxinerama" ,libxinerama)
125 ("sxhkd" ,sxhkd)
126 ("xcb-util" ,xcb-util)
127 ("xcb-util-keysyms" ,xcb-util-keysyms)
128 ("xcb-util-wm" ,xcb-util-wm)))
129 (arguments
aa0551c2
TGR
130 '(#:phases
131 (modify-phases %standard-phases
132 (delete 'configure)) ; no configure script
133 #:tests? #f ; no check target
134 #:make-flags
135 (list "CC=gcc"
136 (string-append "PREFIX=" %output))))
1268e52d 137 (home-page "https://github.com/baskerville/bspwm")
138 (synopsis "Tiling window manager based on binary space partitioning")
139 (description "bspwm is a tiling window manager that represents windows as
140the leaves of a full binary tree.")
0ede252b 141 (license license:bsd-2)))
1268e52d 142
1d25447e
KA
143(define-public herbstluftwm
144 (package
145 (name "herbstluftwm")
146 (version "0.7.2")
147 (source
148 (origin
149 (method url-fetch)
150 (uri (string-append "https://herbstluftwm.org/tarballs/herbstluftwm-"
151 version ".tar.gz"))
152 (sha256
153 (base32
154 "1kc18aj9j3nfz6fj4qxg9s3gg4jvn6kzi3ii24hfm0vqdpy17xnz"))
155 (file-name (string-append "herbstluftwm-" version ".tar.gz"))))
156 (build-system gnu-build-system)
157 (inputs
158 `(("dzen" ,dzen)
159 ("dmenu" ,dmenu)
160 ("glib" ,glib)
161 ("glibmm" ,glibmm)
162 ("xterm" ,xterm)
163 ("xsetroot" ,xsetroot)
164 ("libx11" ,libx11)
165 ("libxext" ,libxext)
166 ("libxinerama" ,libxinerama)))
167 (native-inputs
168 `(("pkg-config" ,pkg-config)))
169 (arguments
170 '(#:phases
171 (modify-phases %standard-phases
172 (delete 'configure)
173 (delete 'check)
174 (add-after 'install 'install-xsession
175 (lambda* (#:key outputs #:allow-other-keys)
176 (let* ((out (assoc-ref outputs "out"))
177 (xsessions (string-append out "/share/xsessions")))
178 (mkdir-p xsessions)
179 (call-with-output-file
180 (string-append xsessions "/herbstluftwm.desktop")
181 (lambda (port)
182 (format port "~
183 [Desktop Entry]~@
184 Name=herbstluftwm~@
185 Comment=Manual tiling window manager~@
186 Exec=~a/bin/herbstluftwm~@
187 Type=XSession~%" out)))
188 #t))))
189 #:tests? #f
190 #:make-flags
191 (let ((out (assoc-ref %outputs "out")))
192 (list "CC=gcc"
193 (string-append "PREFIX=''")
194 (string-append "DESTDIR=" out)
195 (string-append "BASHCOMPLETIONDIR=" out
196 "/etc/bash_completion.d")))))
197 (synopsis "Tiling window manager for X11")
198 (description "herbstluftwm is a manual tiling window manager for X11 using
199Xlib and GLib. Its main features are:
200
201@itemize
202@item
203The layout is based on splitting frames into subframes which can be split
204again or can be filled with windows (similar to i3 or musca).
205
206@item
207Tags (or workspaces or virtual desktops or …) can be added/removed at runtime.
208Each tag contains an own layout.
209
210@item
211Exactly one tag is viewed on each monitor. The tags are monitor independent
212(similar to Xmonad).
213
214@item
215It is configured at runtime via IPC calls from @command{herbstclient}. So the
216configuration file is just a script which is run on startup (similar to wmii
217or musca).
218
219@end itemize")
220 (home-page "https://herbstluftwm.org")
221 (license license:bsd-2)))
222
63b1bdbc
ED
223(define-public i3status
224 (package
225 (name "i3status")
cb96d239 226 (version "2.13")
63b1bdbc
ED
227 (source (origin
228 (method url-fetch)
fdad1f3c 229 (uri (string-append "https://i3wm.org/i3status/i3status-"
63b1bdbc
ED
230 version ".tar.bz2"))
231 (sha256
232 (base32
cb96d239 233 "0rhlzb96mw64z2jnhwz9nibc7pxg549626lz5642xxk5hpzwk2ff"))))
63b1bdbc
ED
234 (build-system gnu-build-system)
235 (arguments
cb96d239
MB
236 `(;; XXX: Do an "out of source" build to work around
237 ;; <https://github.com/i3/i3status/issues/339>.
238 #:out-of-source? #t
63b1bdbc
ED
239 #:tests? #f)) ; no test suite
240 (inputs
241 `(("openlibm" ,openlibm)
242 ("libconfuse" ,libconfuse)
243 ("libyajl" ,libyajl)
244 ("alsa-lib" ,alsa-lib)
766a22fb
AM
245 ("pulseaudio" ,pulseaudio)
246 ("libnl" ,libnl)
63b1bdbc
ED
247 ("libcap" ,libcap)
248 ("asciidoc" ,asciidoc)))
766a22fb 249 (native-inputs
cb96d239
MB
250 `(("pkg-config" ,pkg-config)
251 ("docbook-xsl" ,docbook-xsl)
252 ("libxml2" ,libxml2) ;for XML_CATALOG_FILES
253 ("xmlto" ,xmlto)))
fdad1f3c 254 (home-page "https://i3wm.org/i3status/")
63b1bdbc
ED
255 (synopsis "Status bar for i3bar, dzen2, xmobar or similar programs")
256 (description "i3status is a small program for generating a status bar for
257i3bar, dzen2, xmobar or similar programs. It is designed to be very efficient
258by issuing a very small number of system calls, as one generally wants to
259update such a status line every second. This ensures that even under high
260load, your status bar is updated correctly. Also, it saves a bit of energy by
261not hogging your CPU as much as spawning the corresponding amount of shell
262commands would.")
0ede252b 263 (license license:bsd-3)))
63b1bdbc 264
bda2ded6
ED
265(define-public i3-wm
266 (package
267 (name "i3-wm")
5706fd79 268 (version "4.17.1")
bda2ded6
ED
269 (source (origin
270 (method url-fetch)
8658d403 271 (uri (string-append "https://i3wm.org/downloads/i3-"
bda2ded6
ED
272 version ".tar.bz2"))
273 (sha256
274 (base32
5706fd79 275 "0iazv2i2rgmakzh95pgj6iapyzn7bdpcbcd35a79mhlml4ry33qy"))))
bda2ded6
ED
276 (build-system gnu-build-system)
277 (arguments
ebd2ae18 278 `(#:configure-flags
4bd391f5
LF
279 ;; The build system tries to build in a separate directory, but that
280 ;; seems to be unnecessary.
ebd2ae18
TGR
281 (list "--disable-builddir")
282
283 ;; The test suite requires the unpackaged Xephyr X server.
aa7cdc57
TS
284 #:tests? #f
285 #:phases
286 (modify-phases %standard-phases
287 (add-after 'install 'patch-session-file
288 (lambda* (#:key outputs #:allow-other-keys)
289 (let* ((out (assoc-ref outputs "out"))
290 (i3 (string-append out "/bin/i3"))
291 (i3-with-shmlog (string-append out "/bin/i3-with-shmlog")))
292 (substitute* (string-append out "/share/xsessions/i3.desktop")
293 (("Exec=i3") (string-append "Exec=" i3)))
294 (substitute* (string-append out "/share/xsessions/i3-with-shmlog.desktop")
295 (("Exec=i3-with-shmlog") (string-append "Exec=" i3-with-shmlog)))
296 #t))))))
bda2ded6
ED
297 (inputs
298 `(("libxcb" ,libxcb)
299 ("xcb-util" ,xcb-util)
300 ("xcb-util-cursor" ,xcb-util-cursor)
301 ("xcb-util-keysyms" ,xcb-util-keysyms)
302 ("xcb-util-wm" ,xcb-util-wm)
4bd391f5 303 ("xcb-util-xrm" ,xcb-util-xrm)
bda2ded6
ED
304 ("libxkbcommon" ,libxkbcommon)
305 ("libev" ,libev)
306 ("libyajl" ,libyajl)
307 ("asciidoc" ,asciidoc)
308 ("xmlto" ,xmlto)
309 ("perl-pod-simple" ,perl-pod-simple)
bda2ded6
ED
310 ("libx11" ,libx11)
311 ("pcre" ,pcre)
312 ("startup-notification" ,startup-notification)
313 ("pango" ,pango)
314 ("cairo" ,cairo)))
315 (native-inputs
316 `(("which" ,which)
317 ("perl" ,perl)
4bd391f5
LF
318 ("pkg-config" ,pkg-config)
319 ;; For building the documentation.
4b0e6367 320 ("libxml2" ,libxml2)
4bd391f5 321 ("docbook-xsl" ,docbook-xsl)))
8658d403 322 (home-page "https://i3wm.org/")
71a5da8e
TGR
323 (synopsis "Tiling window manager")
324 (description "i3 is a tiling X11 window manager that dynamically manages
325tiled, stacked, and tabbed window layouts.
326
327i3 primarily targets advanced users. Windows are managed manually and organised
328inside containers, which can be split vertically or horizontally, and optionally
329resized.
330
331i3 uses a plain-text configuration file, and can be extended and controlled from
332many programming languages.")
0ede252b 333 (license license:bsd-3)))
6e38c4be 334
88c94080
ASM
335(define-public i3-gaps
336 (package (inherit i3-wm)
337 (name "i3-gaps")
338 (version "4.17.1")
339 (source (origin
340 (method url-fetch)
341 (uri (string-append
342 "https://github.com/Airblader/i3/releases/download/"
343 version "/i3-" version ".tar.bz2"))
344 (sha256
345 (base32
3ebaa635 346 "0gqcr6s53dk3f2y9h6cna00rnwnh4yymk96li7lbym3d84cxjzrs"))))
88c94080
ASM
347 (home-page "https://github.com/Airblader/i3")
348 (synopsis "Tiling window manager with gaps")
349 (description "i3-gaps is a fork of i3wm, a tiling window manager
350for X11. It is kept up to date with upstream, adding a few additional
351features such as gaps between windows.
352
353i3 is a tiling X11 window manager that dynamically manages tiled, stacked,
354and tabbed window layouts.
355
356i3 primarily targets advanced users. Windows are managed manually and
357organised inside containers, which can be split vertically or horizontally,
358and optionally resized.
359
360i3 uses a plain-text configuration file, and can be extended and controlled
361from many programming languages.")
362 (license license:bsd-3)))
363
b6afc350
MB
364(define-public i3lock
365 (package
366 (name "i3lock")
367 (version "2.11.1")
368 (source (origin
369 (method url-fetch)
370 (uri (string-append "https://i3wm.org/i3lock/i3lock-"
371 version ".tar.bz2"))
372 (sha256
373 (base32
374 "015dn534m7cxjvqdncpvaq9p8b2r4w5hp1yanbdy2abmhbcc7a7j"))))
375 (build-system gnu-build-system)
376 (native-inputs
377 `(("pkg-config" ,pkg-config)))
378 (inputs
379 `(("cairo" ,cairo)
380 ("libev" ,libev)
381 ("linux-pam" ,linux-pam)
382 ("libxcb" ,libxcb)
383 ("libxkbcommon" ,libxkbcommon)
384 ("xcb-util" ,xcb-util)
385 ("xcb-util-image" ,xcb-util-image)
386 ("xcb-util-xrm" ,xcb-util-xrm)))
387 (home-page "https://i3wm.org/i3lock/")
388 (synopsis "Lightweight screen locker")
389 (description
390 "i3lock is a simple X11 screen locker developed alongside the i3 project.
391Despite the name it should work with any X11 window manager.")
392 (license license:bsd-3)))
393
bc83b2e2 394(define-public i3blocks
97e036ca
TGR
395 (package
396 (name "i3blocks")
397 (version "1.5")
398 (source (origin
399 (method git-fetch)
400 (uri (git-reference
401 (url "https://github.com/vivien/i3blocks.git")
402 (commit version)))
403 (sha256
404 (base32
405 "0v8mwnm8qzpv6xnqvrk43s4b9iyld4naqzbaxk4ldq1qkhai0wsv"))
406 (file-name (git-file-name name version))))
407 (build-system gnu-build-system)
408 (native-inputs
409 `(("autoconf" ,autoconf)
410 ("automake" ,automake)
411 ("pkg-config" ,pkg-config)))
412 (home-page "https://github.com/vivien/i3blocks")
413 (synopsis "Minimalist scheduler for status bar scripts")
414 (description "i3blocks executes your command lines and generates a
bc83b2e2
MP
415status line from their output. The generated line is meant to be displayed by
416the i3 window manager through its i3bar component, as an alternative to
417i3status.")
97e036ca 418 (license license:gpl3+)))
bc83b2e2 419
3e7cb70a
MB
420(define-public perl-anyevent-i3
421 (package
422 (name "perl-anyevent-i3")
ec5c986e 423 (version "0.17")
3e7cb70a
MB
424 (source (origin
425 (method url-fetch)
426 (uri (string-append "mirror://cpan/authors/id/M/MS/MSTPLBG/"
427 "AnyEvent-I3-" version ".tar.gz"))
428 (sha256
429 (base32
ec5c986e 430 "0qvd9bq16jyy7v3ma82qcnvz9j503bw0mh7h55gkjf7ir62ck0jk"))))
3e7cb70a
MB
431 (build-system perl-build-system)
432 (propagated-inputs
433 `(("perl-anyevent" ,perl-anyevent)
434 ("perl-json-xs" ,perl-json-xs)))
9aba9b12 435 (home-page "https://metacpan.org/release/AnyEvent-I3")
3e7cb70a
MB
436 (synopsis
437 "Communicate with the i3 window manager through perl")
438 (description
439 "This module connects to the i3 window manager using the UNIX socket
440based IPC interface it provides (if enabled in the configuration file).
441You can then subscribe to events or send messages and receive their replies.")
442 ;; Can be used with either license.
2f3108ad 443 (license (list license:gpl3+ license:perl-license))))
3e7cb70a 444
c165591d
IVB
445(define-public python-i3-py
446 (package
447 (name "python-i3-py")
448 (version "0.6.5")
449 (source
450 (origin
451 ;; The latest release is not tagged in Git nor has an entry in PyPi,
452 ;; but there is still a clear commit for it, and it's been the last one
453 ;; for years.
454 (method git-fetch)
455 (uri (git-reference
456 (url "https://github.com/ziberna/i3-py.git")
457 (commit "27f88a616e9ecc340e7d041d3d00782f8a1964c1")))
458 (sha256
459 (base32
460 "1nm719dc2xqlll7vj4c4m7mpjb27lpn3bg3c66gajvnrz2x1nmxs"))
461 (file-name (string-append name "-" version "-checkout"))))
462 (build-system python-build-system)
463 (arguments
464 `(#:tests? #f ; no tests yet
465 #:phases (modify-phases %standard-phases
466 (add-after 'install 'install-doc
467 ;; Copy readme file to documentation directory.
468 (lambda* (#:key outputs #:allow-other-keys)
469 (let ((doc (string-append (assoc-ref outputs "out")
470 "/share/doc/" ,name)))
471 (install-file "README.md" doc)
472 ;; Avoid unspecified return value.
473 #t))))))
474 (propagated-inputs
475 `(("i3-wm" ,i3-wm)))
476 (home-page "https://github.com/ziberna/i3-py")
477 (synopsis "Python interface to the i3 window manager")
478 (description "This package allows you to interact from a Python program
479with the i3 window manager via its IPC socket. It can send commands and other
480kinds of messages to i3, select the affected containers, filter results and
481subscribe to events.")
482 (license license:gpl3+)))
483
484(define-public python2-i3-py
485 (package-with-python2 python-i3-py))
486
37356e0b
IVB
487(define-public quickswitch-i3
488 (let ((commit "ed692b1e8f43b95bd907ced26238ce8ccb2ed28f")
489 (revision "1")) ; Guix package revision
490 (package
491 (name "quickswitch-i3")
492 (version (string-append "2.2-" revision "."
493 (string-take commit 7)))
494 (source
495 (origin
496 ;; The latest commit is a few years old and just a couple commits
497 ;; after the last tagged release, so we use that latest commit
498 ;; instead of the release.
499 (method git-fetch)
500 (uri (git-reference
501 (url "https://github.com/proxypoke/quickswitch-for-i3.git")
502 (commit commit)))
503 (sha256
504 (base32
505 "0447077sama80jcdg5p64zjsvafmz5rbdrirhm1adcdjhkh6iqc5"))
506 (patches (search-patches "quickswitch-fix-dmenu-check.patch"))
507 (file-name (string-append name "-" version "-checkout"))))
508 (build-system python-build-system)
509 (arguments
510 `(#:tests? #f ; no tests yet
511 #:phases (modify-phases %standard-phases
512 (add-after 'install 'install-doc
513 ;; Copy readme file to documentation directory.
514 (lambda* (#:key outputs #:allow-other-keys)
515 (let ((doc (string-append (assoc-ref outputs "out")
516 "/share/doc/" ,name)))
517 (install-file "README.rst" doc)
518 ;; Avoid unspecified return value.
519 #t))))))
520 (inputs
521 `(("python-i3-py" ,python-i3-py)
522 ("dmenu" ,dmenu)))
523 (home-page "https://github.com/proxypoke/quickswitch-for-i3")
524 (synopsis "Quickly change to and locate windows in the i3 window manager")
525 (description
526 "This utility for the i3 window manager allows you to quickly switch to
527and locate windows on all your workspaces, using an interactive dmenu
528prompt.")
5d6bab9e 529 (license license:wtfpl2))))
37356e0b 530
4b563b34 531(define-public i3lock-color
532 (package
533 (name "i3lock-color")
7969751f 534 (version "2.12.c")
4b563b34 535 (source
536 (origin
f45cc966
TGR
537 (method git-fetch)
538 (uri (git-reference
539 (url "https://github.com/PandorasFox/i3lock-color.git")
540 (commit version)))
541 (file-name (git-file-name name version))
4b563b34 542 (sha256
7969751f 543 (base32 "08fhnchf187b73h52xgzb86g6byzxz085zs9galsvl687g5zxk34"))))
4b563b34 544 (build-system gnu-build-system)
545 (arguments
f45cc966 546 `(#:tests? #f)) ; no tests included
4b563b34 547 (inputs
fa2886b7
TGR
548 `(("cairo" ,cairo)
549 ("libev" ,libev)
3dc77d40 550 ("libjpeg" ,libjpeg-turbo)
4b563b34 551 ("libxcb" ,libxcb)
4b563b34 552 ("libxkbcommon" ,libxkbcommon)
fa2886b7
TGR
553 ("linux-pam" ,linux-pam)
554 ("xcb-util" ,xcb-util)
7969751f
TGR
555 ("xcb-util-image" ,xcb-util-image)
556 ("xcb-util-xrm" ,xcb-util-xrm)))
4b563b34 557 (native-inputs
fa2886b7
TGR
558 `(("autoconf" ,autoconf)
559 ("automake" ,automake)
560 ("pkg-config" ,pkg-config)))
4b563b34 561 (home-page "https://github.com/PandorasFox/i3lock-color")
562 (synopsis "Screen locker with color configuration support")
563 (description
564 "i3lock-color is a simpler X11 screen locker derived from i3lock.
565Features include:
566
567@enumerate
568@item forking process, the locked screen is preserved when you suspend to RAM;
569@item specify background color or image to be displayed in the lock screen;
570@item many additional color options.
571@end enumerate")
572 (license license:bsd-3)))
573
b0a2dc72 574(define-public i3lock-fancy
575 (package
576 (name "i3lock-fancy")
577 (version "0.2")
578 (source
579 (origin
a48db08a
TGR
580 (method git-fetch)
581 (uri (git-reference
582 (url "https://github.com/meskarune/i3lock-fancy.git")
583 (commit version)))
584 (file-name (git-file-name name version))
b0a2dc72 585 (sha256
a48db08a 586 (base32 "11g2kkim33ra38d1m897sq1ifajw17iyw9mr7sg1q8i2ibl4lfsi"))))
b0a2dc72 587 (build-system gnu-build-system)
588 (arguments
a48db08a 589 `(#:tests? #f ; no tests included
b0a2dc72 590 #:phases
591 (modify-phases %standard-phases
592 (replace 'configure
593 (lambda* (#:key inputs outputs #:allow-other-keys)
594 (let* ((out (assoc-ref outputs "out"))
595 (icons (string-append out "/share/i3lock-fancy/icons/"))
596 (wmctrl (string-append (assoc-ref inputs "wmctrl")
597 "/bin/wmctrl"))
598 (mconvert (string-append (assoc-ref inputs "imagemagick")
599 "/bin/convert"))
600 (mimport (string-append (assoc-ref inputs "imagemagick")
601 "/bin/import"))
602 (awk (string-append (assoc-ref inputs "gawk")
603 "/bin/gawk")))
604
605 (substitute* "lock"
606 (("$(which wmctrl)") wmctrl)
607 (("convert") mconvert)
608 (("shot=\\(import") (string-append "shot=\(" mimport))
609 (("awk -F") (string-append awk " -F"))
610 ((" awk") awk)
611 (("\\$scriptpath/icons/") icons))
612 #t)))
613 (delete 'build)
614 (replace 'install
615 (lambda* (#:key inputs outputs #:allow-other-keys)
616 (let* ((out (assoc-ref outputs "out"))
617 (bin (string-append out "/bin"))
618 (icons (string-append out "/share/i3lock-fancy/icons/")))
619
620 (install-file "lock" bin)
621 (rename-file (string-append bin "/lock")
622 (string-append bin "/i3lock-fancy"))
623 (copy-recursively "icons" icons)
624 #t))))))
625 (native-inputs
626 `(("imagemagick" ,imagemagick)
627 ("wmctrl" ,wmctrl)
628 ("gawk" ,gawk)))
629 (home-page "https://github.com/meskarune/i3lock-fancy")
630 (synopsis "Screen locker with screenshot function")
631 (description
632 "@code{i3lock-fancy} is a Bash script that takes a screenshot of
633the desktop, blurs the background and adds a lock icon and text.
634It requires @code{i3lock-color} or @code{i3lock} and can optionally
635be passed any screenshot util like @code{scrot}.
636This screen locker can be used with any window manager or
637desktop environment.")
638 (license license:expat)))
639
6e38c4be
SB
640(define-public xmonad
641 (package
642 (name "xmonad")
de98b915 643 (version "0.15")
6e38c4be
SB
644 (synopsis "Tiling window manager")
645 (source (origin
646 (method url-fetch)
966a543b 647 (uri (string-append "mirror://hackage/package/xmonad/"
ec9299d0 648 "xmonad-" version ".tar.gz"))
6e38c4be
SB
649 (sha256
650 (base32
de98b915 651 "0a7rh21k9y6g8fwkggxdxjns2grvvsd5hi2ls4klmqz5xvk4hyaa"))))
6e38c4be
SB
652 (build-system haskell-build-system)
653 (inputs
174b091f 654 `(("ghc-extensible-exceptions" ,ghc-extensible-exceptions)
174b091f 655 ("ghc-quickcheck" ,ghc-quickcheck)
dd821380 656 ("ghc-semigroups" ,ghc-semigroups)
174b091f
MM
657 ("ghc-setlocale" ,ghc-setlocale)
658 ("ghc-utf8-string" ,ghc-utf8-string)
659 ("ghc-x11" ,ghc-x11)))
6e38c4be
SB
660 (arguments
661 `(#:phases
662 (modify-phases %standard-phases
663 (add-after
664 'install 'install-xsession
665 (lambda _
666 (let* ((xsessions (string-append %output "/share/xsessions")))
667 (mkdir-p xsessions)
668 (call-with-output-file
669 (string-append xsessions "/xmonad.desktop")
670 (lambda (port)
671 (format port "~
672 [Desktop Entry]~@
673 Name=~a~@
674 Comment=~a~@
675 Exec=~a/bin/xmonad~@
676 Type=Application~%" ,name ,synopsis %output)))))))))
8c0be00a 677 (home-page "https://xmonad.org")
6e38c4be
SB
678 (description
679 "Xmonad is a tiling window manager for X. Windows are arranged
680automatically to tile the screen without gaps or overlap, maximising screen
681use. All features of the window manager are accessible from the keyboard: a
682mouse is strictly optional. Xmonad is written and extensible in Haskell.
683Custom layout algorithms, and other extensions, may be written by the user in
684config files. Layouts are applied dynamically, and different layouts may be
685used on each workspace. Xinerama is fully supported, allowing windows to be
686tiled on several screens.")
0ede252b 687 (license license:bsd-3)))
78edf44c 688
6e864d00
OP
689(define-public xmobar
690 (package
691 (name "xmobar")
f77cecc1 692 (version "0.32")
6e864d00
OP
693 (source (origin
694 (method url-fetch)
695 (uri (string-append "mirror://hackage/package/xmobar/"
079db056 696 "xmobar-" version ".tar.gz"))
6e864d00
OP
697 (sha256
698 (base32
f77cecc1 699 "0x2ki3v0pmhl4bva3qi1xx21axayc4sx1nkzhmk2ap4l0cj52jrd"))))
6e864d00 700 (build-system haskell-build-system)
800e4fd8
TGR
701 (native-inputs
702 `(("ghc-hspec" ,ghc-hspec)
703 ("hspec-discover" ,hspec-discover)))
6e864d00 704 (inputs
b066ad89
JS
705 `(("ghc-alsa-core" ,ghc-alsa-core)
706 ("ghc-alsa-mixer" ,ghc-alsa-mixer)
707 ("ghc-dbus" ,ghc-dbus)
708 ("ghc-hinotify" ,ghc-hinotify)
d2ea8064 709 ("ghc-http" ,ghc-http)
b066ad89
JS
710 ("ghc-http-conduit" ,ghc-http-conduit)
711 ("ghc-http-types" ,ghc-http-types)
d2ea8064 712 ("ghc-iwlib" ,ghc-iwlib)
b066ad89
JS
713 ("ghc-libmpd" ,ghc-libmpd)
714 ("ghc-old-locale" ,ghc-old-locale)
d877e0d8 715 ("ghc-parsec-numbers" ,ghc-parsec-numbers)
6e864d00 716 ("ghc-regex-compat" ,ghc-regex-compat)
b066ad89
JS
717 ("ghc-temporary" ,ghc-temporary)
718 ("ghc-timezone-olson" ,ghc-timezone-olson)
719 ("ghc-x11" ,ghc-x11)
6e864d00 720 ("ghc-x11-xft" ,ghc-x11-xft)
d2ea8064 721 ("libxpm" ,libxpm)))
6e864d00 722 (arguments
b066ad89
JS
723 `(#:configure-flags (list "--flags=all_extensions")
724 #:phases
725 (modify-phases %standard-phases
726 (add-before 'build 'patch-test-shebang
727 (lambda* (#:key inputs #:allow-other-keys)
728 (substitute* "test/Xmobar/Plugins/Monitors/AlsaSpec.hs"
729 (("/bin/bash") (which "bash")))
730 #t)))))
6e864d00
OP
731 (home-page "http://xmobar.org")
732 (synopsis "Minimalistic text based status bar")
733 (description
734 "@code{xmobar} is a lightweight, text-based, status bar written in
735Haskell. It was originally designed to be used together with Xmonad, but it
736is also usable with any other window manager. While xmobar is written in
737Haskell, no knowledge of the language is required to install and use it.")
738 (license license:bsd-3)))
739
78edf44c
SB
740(define-public ghc-xmonad-contrib
741 (package
742 (name "ghc-xmonad-contrib")
3cbf3f74 743 (version "0.16")
78edf44c
SB
744 (source
745 (origin
746 (method url-fetch)
966a543b 747 (uri (string-append "mirror://hackage/package/xmonad-contrib/"
78edf44c
SB
748 "xmonad-contrib-" version ".tar.gz"))
749 (sha256
3cbf3f74 750 (base32 "1pddgkvnbww28wykncc7j0yb0lv15bk7xnnhdcbrwkxzw66w6wmd"))))
78edf44c
SB
751 (build-system haskell-build-system)
752 (propagated-inputs
f54f0475 753 `(("ghc-old-time" ,ghc-old-time)
78edf44c
SB
754 ("ghc-random" ,ghc-random)
755 ("ghc-utf8-string" ,ghc-utf8-string)
756 ("ghc-extensible-exceptions" ,ghc-extensible-exceptions)
b42b5afd 757 ("ghc-semigroups" ,ghc-semigroups)
78edf44c
SB
758 ("ghc-x11" ,ghc-x11)
759 ("ghc-x11-xft" ,ghc-x11-xft)
760 ("xmonad" ,xmonad)))
8c0be00a 761 (home-page "https://xmonad.org")
78edf44c
SB
762 (synopsis "Third party extensions for xmonad")
763 (description
764 "Third party tiling algorithms, configurations, and scripts to Xmonad, a
765tiling window manager for X.")
0ede252b 766 (license license:bsd-3)))
45e10968
EB
767
768(define-public evilwm
769 (package
770 (name "evilwm")
771 (version "1.1.1")
772 (source
773 (origin
774 (method url-fetch)
775 (uri (string-append "http://www.6809.org.uk/evilwm/evilwm-"
776 version ".tar.gz"))
777 (sha256
778 (base32
c595cd47 779 "0ak0yajzk3v4dg5wmaghv6acf7v02a4iw8qxmq5yw5ard8lrqn3r"))
fc1adab1 780 (patches (search-patches "evilwm-lost-focus-bug.patch"))))
45e10968
EB
781 (build-system gnu-build-system)
782 (inputs
783 `(("libx11" ,libx11)
784 ("libxext" ,libxext)
785 ("libxrandr" ,libxrandr)))
786 (arguments
787 `(#:modules ((srfi srfi-26)
788 (guix build utils)
789 (guix build gnu-build-system))
790 #:make-flags (let ((inputs (map (cut assoc-ref %build-inputs <>)
791 '("libx11" "libxext" "libxrandr")))
792 (join (lambda (proc strs)
793 (string-join (map proc strs) " ")))
794 (dash-I (cut string-append "-I" <> "/include"))
795 (dash-L (cut string-append "-L" <> "/lib")))
796 `("desktopfilesdir=$(prefix)/share/xsessions"
797 ,(string-append "prefix=" (assoc-ref %outputs "out"))
798 ,(string-append "CPPFLAGS=" (join dash-I inputs))
799 ,(string-append "LDFLAGS=" (join dash-L inputs))))
800 #:tests? #f ;no tests
801 #:phases (modify-phases %standard-phases
802 (delete 'configure)))) ;no configure script
803 (home-page "http://www.6809.org.uk/evilwm/")
804 (synopsis "Minimalist window manager for the X Window System")
805 (description
806 "evilwm is a minimalist window manager based on aewm, extended to feature
807many keyboard controls with repositioning and maximize toggles, solid window
808drags, snap-to-border support, and virtual desktops.")
0ede252b
DM
809 (license (license:x11-style "file:///README"))))
810
811(define-public fluxbox
812 (package
813 (name "fluxbox")
814 (version "1.3.7")
815 (synopsis "Small and fast window manager")
816 (source (origin
817 (method url-fetch)
de67e922 818 (uri (string-append "mirror://sourceforge/fluxbox/fluxbox/"
0ede252b
DM
819 version "/fluxbox-" version ".tar.xz"))
820 (sha256
821 (base32
822 "1h1f70y40qd225dqx937vzb4k2cz219agm1zvnjxakn5jkz7b37w"))))
823 (build-system gnu-build-system)
824 (arguments
825 `(#:make-flags '("CPPFLAGS=-U__TIME__") ;ugly, but for reproducibility
826 #:phases
827 (modify-phases %standard-phases
37f7853e
EF
828 (add-after 'install 'install-vim-files
829 (lambda* (#:key outputs #:allow-other-keys)
830 (let* ((out (assoc-ref outputs "out"))
831 (syntax (string-append out "/share/vim/vimfiles/syntax")))
832 (copy-recursively "3rd/vim/vim/syntax" syntax)
833 #t)))
4ee3b309
EF
834 (add-after 'install 'install-xsession
835 (lambda* (#:key outputs #:allow-other-keys)
836 (let* ((out (assoc-ref outputs "out"))
837 (xsessions (string-append out "/share/xsessions")))
838 (mkdir-p xsessions)
839 (call-with-output-file
840 (string-append xsessions "/fluxbox.desktop")
841 (lambda (port)
842 (format port "~
843 [Desktop Entry]~@
844 Name=~a~@
845 Comment=~a~@
846 Exec=~a/bin/startfluxbox~@
847 Type=Application~%" ,name ,synopsis out)))
848 #t))))))
0ede252b
DM
849 (native-inputs
850 `(("pkg-config" ,pkg-config)))
851 (inputs
852 `(("freetype" ,freetype)
853 ("fribidi" ,fribidi)
854 ("imlib2" ,imlib2)
855 ("libx11" ,libx11)
856 ("libxext" ,libxext)
857 ("libxft" ,libxft)
858 ("libxinerama" ,libxinerama)
859 ("libxpm" ,libxpm)
860 ("libxrandr" ,libxrandr)
861 ("libxrender" ,libxrender)))
862 (description "Fluxbox is a window manager. It is light on resources
863and easy to handle yet full of features to make an easy and fast desktop
864experience.")
865 (home-page "http://fluxbox.org/")
866 (license license:expat)))
3d1240aa
CZ
867
868(define-public awesome
869 (package
870 (name "awesome")
db0164b2 871 (version "4.2")
3d1240aa
CZ
872 (source
873 (origin (method url-fetch)
874 (uri (string-append
91426243 875 "https://github.com/awesomeWM/awesome-releases/raw/"
876 "master/awesome-" version ".tar.xz"))
3d1240aa
CZ
877 (sha256
878 (base32
db0164b2 879 "0kwpbls9h1alxcmvxh5g9qb995fds5b2ngcr44w0ibazkyls2pdc"))
3d1240aa
CZ
880 (modules '((guix build utils)
881 (srfi srfi-19)))
6cbee49d
MW
882 (snippet '(begin
883 ;; Remove non-reproducible timestamp and use the date
884 ;; of the source file instead.
885 (substitute* "common/version.c"
886 (("__DATE__ \" \" __TIME__")
887 (date->string
888 (time-utc->date
889 (make-time time-utc 0
890 (stat:mtime (stat "awesome.c"))))
891 "\"~c\"")))
892 #t))
3d1240aa
CZ
893 (patches (search-patches "awesome-reproducible-png.patch"))))
894 (build-system cmake-build-system)
895 (native-inputs `(("asciidoc" ,asciidoc)
896 ("docbook-xsl" ,docbook-xsl)
897 ("doxygen" ,doxygen)
898 ("gperf" ,gperf)
899 ("imagemagick" ,imagemagick)
900 ("libxml2" ,libxml2) ;for XML_CATALOG_FILES
901 ("pkg-config" ,pkg-config)
902 ("xmlto" ,xmlto)))
903 (inputs `(("cairo" ,cairo)
904 ("dbus" ,dbus)
905 ("gdk-pixbuf" ,gdk-pixbuf)
906 ("glib" ,glib)
22037a32 907 ("gobject-introspection" ,gobject-introspection)
3d1240aa
CZ
908 ("imlib2" ,imlib2)
909 ("libev" ,libev)
910 ("libxcb" ,libxcb)
911 ("libxcursor" ,libxcursor)
912 ("libxdg-basedir" ,libxdg-basedir)
91426243 913 ("libxkbcommon" ,libxkbcommon)
22037a32 914 ("lua" ,lua)
c695fb76 915 ("lua-lgi" ,lua-lgi)
3d1240aa
CZ
916 ("pango" ,pango)
917 ("startup-notification" ,startup-notification)
918 ("xcb-util" ,xcb-util)
919 ("xcb-util-cursor" ,xcb-util-cursor)
920 ("xcb-util-image" ,xcb-util-image)
921 ("xcb-util-keysyms" ,xcb-util-keysyms)
922 ("xcb-util-renderutil" ,xcb-util-renderutil)
91426243 923 ("xcb-util-xrm" ,xcb-util-xrm)
3d1240aa
CZ
924 ("xcb-util-wm" ,xcb-util-wm)))
925 (arguments
926 `(;; Let compression happen in our 'compress-documentation' phase so that
927 ;; '--no-name' is used, which removes timestamps from gzip output.
928 #:configure-flags '("-DCOMPRESS_MANPAGES=off")
929
db0164b2 930 ;; Building awesome in its source dir is no longer supported.
931 #:out-of-source? #t
932
22037a32 933 #:phases
934 (modify-phases %standard-phases
935 (add-before 'build 'xmlto-skip-validation
936 (lambda _
937 ;; We can't download the necessary schema, so so skip
938 ;; validation and assume they're valid.
939 (substitute* "../build/CMakeFiles/man.dir/build.make"
940 (("/xmlto")
941 (string-append "/xmlto --skip-validation")))
942 #t))
943 (add-before 'configure 'set-lua-paths
944 (lambda* (#:key inputs #:allow-other-keys)
945 ;; The build process needs to load cairo dynamically.
946 (let* ((cairo (string-append
947 (assoc-ref inputs "cairo") "/lib" ))
948 (lua-lgi (assoc-ref inputs "lua-lgi") ))
949 (setenv "LD_LIBRARY_PATH" cairo )
950 (setenv "LUA_PATH" (string-append lua-lgi
1c58aa6f 951 "/share/lua/5.3/?.lua"))
22037a32 952 (setenv "LUA_CPATH" (string-append lua-lgi
1c58aa6f 953 "/lib/lua/5.3/?.so"))
22037a32 954 #t)))
955 (replace 'check
956 (lambda _
957 ;; There aren't any tests, so just make sure the binary
958 ;; gets built and can be run successfully.
b5e70d92 959 (invoke "../build/awesome" "-v")))
4ec42524
TS
960 (add-after 'install 'patch-session-file
961 (lambda* (#:key outputs #:allow-other-keys)
962 (let* ((out (assoc-ref outputs "out"))
963 (awesome (string-append out "/bin/awesome")))
964 (substitute* (string-append out "/share/xsessions/awesome.desktop")
965 (("Exec=awesome") (string-append "Exec=" awesome)))
966 #t)))
22037a32 967 (add-after 'install 'wrap
968 (lambda* (#:key inputs outputs #:allow-other-keys)
969 (let* ((awesome (assoc-ref outputs "out"))
970 (cairo (string-append
971 (assoc-ref inputs "cairo") "/lib" ))
972 (lua-lgi (assoc-ref inputs "lua-lgi") ))
973 (wrap-program (string-append awesome "/bin/awesome")
974 `("GI_TYPELIB_PATH" ":" prefix (,(getenv "GI_TYPELIB_PATH")))
975 `("LD_LIBRARY_PATH" suffix (, cairo))
976 `("LUA_PATH" suffix (,(string-append lua-lgi
1c58aa6f 977 "/share/lua/5.3/?.lua")))
22037a32 978 `("LUA_CPATH" suffix (,(string-append
1c58aa6f 979 lua-lgi "/lib/lua/5.3/?.so"))))))))))
3d1240aa
CZ
980 (synopsis "Highly configurable window manager")
981 (description
c4dd0def 982 "Awesome has been designed as a framework window manager. It is fast, small,
983dynamic and extensible using the Lua programming language.")
3d1240aa 984 (license license:gpl2+)
a0158c26 985 (home-page "https://awesomewm.org/")))
395751c0 986
987(define-public menumaker
988 (package
989 (name "menumaker")
ea4c1e0b 990 (version "0.99.11")
395751c0 991 (source
992 (origin
993 (method url-fetch)
994 (uri (string-append "mirror://sourceforge/menumaker/"
995 "menumaker-" version ".tar.gz"))
996 (sha256
ea4c1e0b 997 (base32 "0dprndnhwm7b803zkp4pisiq06ic9iv8vr42in5is47jmvdim0wx"))))
395751c0 998 (build-system gnu-build-system)
999 (inputs
1000 `(("python" ,python)))
1001 (synopsis "Heuristics-driven menu generator")
1002 (description
1003 "MenuMaker is a menu generation utility for a number of X window
1004managers and desktop environments. It is capable of finding lots of
1005installed programs and generating a root menu consistent across all
1006supported window managers, so one will get (almost) the same menu in
1007all of them. Currently supported window managers include:
1008
1009@enumerate
1010@item BlackBox
1011@item Deskmenu
1012@item FluxBox
1013@item IceWM
1014@item OpenBox
1015@item PekWM
1016@item WindowMaker
1017@item XFCE
1018@end enumerate\n")
1019 (home-page "http://menumaker.sourceforge.net/")
1020 (license license:bsd-2)))
dbf544f9 1021
1022(define-public keybinder
1023 (package
1024 (name "keybinder")
1025 (version "0.3.1")
1026 (source
1027 (origin
1028 (method url-fetch)
6d688b6e
TGR
1029 (uri (string-append "https://github.com/kupferlauncher/keybinder"
1030 "/releases/download/v" version "/keybinder-"
dbf544f9 1031 version ".tar.gz"))
1032 (file-name (string-append name "-" version ".tar.gz"))
1033 (sha256
1034 (base32
1035 "0h52hj3ay8mfhwvmfxbxlfyq74hifdk8wxgxp7fr4iy6189hg7w7"))))
1036 (build-system gnu-build-system)
1037 (inputs
1038 `(("python-2" ,python-2)
1039 ("gtk+-2" ,gtk+-2)))
1040 (native-inputs
1041 `(("python2-pygtk" ,python2-pygtk)
1042 ("gtk-doc" ,gtk-doc)
1043 ("pkg-config" ,pkg-config)))
1044 (synopsis "Library for registering global keyboard shortcuts")
1045 (description
1046 "Keybinder is a library for registering global keyboard shortcuts.
1047Keybinder works with GTK-based applications using the X Window System.")
6d688b6e 1048 (home-page "https://github.com/kupferlauncher/keybinder")
dbf544f9 1049 (license license:gpl2+)))
78dfc9e2 1050
8c765a3b
IR
1051(define-public keybinder-3.0
1052 (package
1053 (name "keybinder-3.0")
1054 (version "0.3.2")
1055 (source
1056 (origin
1057 (method url-fetch)
1058 (uri (string-append "https://github.com/kupferlauncher/keybinder"
1059 "/releases/download/" name "-v" version "/" name "-"
1060 version ".tar.gz"))
1061 (file-name (string-append name "-" version ".tar.gz"))
1062 (sha256
1063 (base32
1064 "0830ihwnalw59pp1xzrp37dn58n8vwb8zasnm4a1h81v3x7dxqz6"))))
1065 (build-system gnu-build-system)
1066 (inputs
1067 `(("gtk+" ,gtk+)
1068 ("gobject-introspection" ,gobject-introspection)))
1069 (native-inputs
1070 `(("gtk-doc" ,gtk-doc)
1071 ("pkg-config" ,pkg-config)))
1072 (synopsis "Library for registering global keyboard shortcuts, Gtk3 version")
1073 (description
1074 "Keybinder is a library for registering global keyboard shortcuts.
1075Keybinder works with GTK-based applications using the X Window System.")
1076 (home-page "https://github.com/kupferlauncher/keybinder")
1077 (license license:x11)))
1078
78dfc9e2 1079(define-public spectrwm
1080 (package
1081 (name "spectrwm")
f6c8a97a 1082 (version "3.2.0")
78dfc9e2 1083 (source
1084 (origin
b82bd90c
TGR
1085 (method git-fetch)
1086 (uri (git-reference
1087 (url "https://github.com/conformal/spectrwm.git")
1088 (commit
1089 (string-append "SPECTRWM_"
1090 (string-join (string-split version #\.) "_")))))
1091 (file-name (git-file-name name version))
78dfc9e2 1092 (sha256
b82bd90c 1093 (base32 "1dfqy5f0s1nv6rqkz9lj006vypmp4rwxd5vczfk3ndzqgnh19kw6"))))
78dfc9e2 1094 (build-system gnu-build-system)
1095 (arguments
1096 `(#:make-flags (let ((pkg-config (lambda (flag)
1097 (string-append
1098 "$(shell pkg-config " flag " "
1099 "xft fontconfig x11 libpng)"))))
1100 (list
1101 "CC=gcc"
1102 (string-append "PREFIX=" %output)
1103 (string-append "INCS=-I. " (pkg-config "--cflags"))
1104 (string-append "LIBS=" (pkg-config "--libs") " -lm")))
f6c8a97a 1105 #:tests? #f ;no test suite
78dfc9e2 1106 #:phases
1107 (modify-phases %standard-phases
1108 (add-before 'build 'change-dir
1109 (lambda _
1110 (chdir "linux") #t))
1111 (add-after 'change-dir 'patch-makefile
1112 (lambda _
1113 (substitute* "Makefile"
1114 (("-g") ""))))
f6c8a97a 1115 (delete 'configure)))) ;no 'configure' exists
78dfc9e2 1116 (inputs
1117 `(("freetype" ,freetype)
1118 ("fontconfig" ,fontconfig)
1119 ("libx11" ,libx11)
1120 ("libxcursor" ,libxcursor)
1121 ("libxrandr" ,libxrandr)
1122 ("libxtst" ,libxtst)
1123 ("libxft" ,libxft)
1124 ("xcb-util" ,xcb-util)
1125 ("xcb-util-wm" ,xcb-util-wm)
1126 ("xcb-util-keysyms" ,xcb-util-keysyms)))
1127 (native-inputs
1128 `(("libxt" ,libxt)
1129 ("pkg-config" ,pkg-config)))
1130 (synopsis "Minimalistic automatic tiling window manager")
1131 (description
1132 "Spectrwm is a small dynamic tiling and reparenting window manager for X11.
1133It is inspired by Xmonad and dwm. Its major features include:
1134
1135@itemize
1136@item Navigation anywhere on all screens with either the keyboard or mouse
1137@item Customizable status bar
1138@item Restartable without losing state
1139@item Quick launch menu
1140@item Many screen layouts possible with a few simple key strokes
1141@item Move/resize floating windows
32008a75
TGR
1142@item Extended Window Manager Hints (@dfn{EWMH}) support
1143@item Configurable tiling
78dfc9e2 1144@item Adjustable tile gap allows for a true one pixel border
1145@item Customizable colors and border width
1146@end itemize\n")
1147 (home-page "https://github.com/conformal/spectrwm")
1148 (license license:isc)))
b4cb9308 1149
1150(define-public cwm
1151 (package
1152 (name "cwm")
e352a153 1153 (version "6.3")
b4cb9308 1154 (source
1155 (origin
1156 (method url-fetch)
1157 (uri (string-append "http://chneukirchen.org/releases/cwm-"
1158 version ".tar.gz"))
1159 (sha256
1160 (base32
e352a153 1161 "17pdp9cfgh2n3n3905l4rl9qk7b722i8psnarhlc2h98qzx7zmac"))))
b4cb9308 1162 (build-system gnu-build-system)
1163 (arguments
1164 `(#:make-flags (list "CC=gcc"
1165 (string-append "PREFIX=" %output))
1166 #:tests? #f
1167 #:phases
1168 (modify-phases %standard-phases
1169 (delete 'configure)
1170 (add-after 'build 'install-xsession
1171 (lambda* (#:key outputs #:allow-other-keys)
1172 ;; Add a .desktop file to xsessions.
1173 (let* ((output (assoc-ref outputs "out"))
1174 (xsessions (string-append output "/share/xsessions")))
1175 (mkdir-p xsessions)
1176 (with-output-to-file
1177 (string-append xsessions "/cwm.desktop")
1178 (lambda _
1179 (format #t
1180 "[Desktop Entry]~@
1181 Name=cwm~@
1182 Comment=OpenBSD Calm Window Manager fork~@
1183 Exec=~a/bin/cwm~@
1184 TryExec=~@*~a/bin/cwm~@
1185 Icon=~@
1186 Type=Application~%"
1187 output)))
1188 #t))))))
1189 (inputs
1190 `(("libxft" ,libxft)
1191 ("libxrandr" ,libxrandr)
1192 ("libxinerama" ,libxinerama)))
1193 (native-inputs
1194 `(("pkg-config" ,pkg-config)
1195 ("bison" ,bison)))
1196 (home-page "https://github.com/chneukirchen/cwm")
1197 (synopsis "OpenBSD fork of the calmwm window manager")
1198 (description "Cwm is a stacking window manager for X11. It is an OpenBSD
1199project derived from the original Calm Window Manager.")
1200 (license license:isc)))
70024cfa
PAR
1201
1202(define-public nitrogen
1203 (package
1204 (name "nitrogen")
1205 (version "1.6.1")
1206 (source (origin
1207 (method url-fetch)
1208 (uri (string-append "http://github.com/l3ib/nitrogen/"
1209 "releases/download/" version "/"
1210 name "-" version ".tar.gz"))
1211 (sha256
1212 (base32
1213 "0zc3fl1mbhq0iyndy4ysmy8vv5c7xwf54rbgamzfhfvsgdq160pl"))))
1214 (build-system gnu-build-system)
1215 (inputs
1216 `(("gtk+" ,gtk+-2)
1217 ("gtkmm" ,gtkmm-2)
1218 ("glib" ,glib)
1219 ("glibmm" ,glibmm)))
1220 (native-inputs
de99ba7e 1221 `(("pkg-config" ,pkg-config)))
70024cfa
PAR
1222 (home-page "http://projects.l3ib.org/nitrogen/")
1223 (synopsis "Background browser and setter for X windows")
1224 (description
1225 "This package is a background browser and setter for X windows. It's
1226features are:
1227
1228@itemize
1229@item Multihead and Xinerama aware
1230@item Recall mode to used via startup script
1231@item Uses freedesktop.org standard for thumbnails
1232@item Can set GNOME background
1233@item Command lie set modes for script use
1234@item Inotify monitoring of browse directory
1235@item Lazy loading of thumbnails - conserves memory
1236@item \"Automatic\" set mode - determines best mode to set an image based on
1237its size
1238@item Display preview images in a tiled icon layout
1239@end itemize")
1240 (license license:gpl2+)))
d8dcbcc9
MP
1241
1242(define-public polybar
1243 (package
1244 (name "polybar")
553199c5 1245 (version "3.4.2")
d8dcbcc9
MP
1246 (source
1247 (origin
1248 (method url-fetch)
44b73520 1249 (uri (string-append "https://github.com/polybar/polybar/releases/"
4b9e4ac7 1250 "download/" version "/polybar-" version ".tar"))
d8dcbcc9 1251 (sha256
553199c5 1252 (base32 "0fmnviz4b01aw50nkv4yibm8ykc5ff860ynw3xb1ymlsjrvwj8jd"))))
d8dcbcc9
MP
1253 (build-system cmake-build-system)
1254 (arguments
1255 ;; Test is disabled because it requires downloading googletest from the
1256 ;; Internet.
1257 '(#:tests? #f))
1258 (inputs
1259 `(("alsa-lib" ,alsa-lib)
1260 ("cairo" ,cairo)
1261 ("i3-wm" ,i3-wm)
005c2ccf 1262 ("jsoncpp" ,jsoncpp)
d8dcbcc9
MP
1263 ("libmpdclient" ,libmpdclient)
1264 ("libnl" ,libnl)
1265 ("libxcb" ,libxcb)
1266 ("pulseaudio" ,pulseaudio)
1267 ("xcb-proto" ,xcb-proto)
1268 ("xcb-util" ,xcb-util)
1269 ("xcb-util-cursor" ,xcb-util-cursor)
1270 ("xcb-util-image" ,xcb-util-image)
1271 ("xcb-util-wm" ,xcb-util-wm)
1272 ("xcb-util-xrm" ,xcb-util-xrm)))
1273 (native-inputs
1274 `(("pkg-config" ,pkg-config)
1275 ("python-2" ,python-2) ; lib/xpp depends on python 2
1276 ("python" ,python))) ; xcb-proto depends on python 3
1277 (home-page "https://polybar.github.io/")
1278 (synopsis "Fast and easy-to-use status bar")
1279 (description "Polybar aims to help users build beautiful and highly
1280customizable status bars for their desktop environment. It has built-in
1281functionality to display information about the most commonly used services.")
1282 (license license:expat)))
eea969cf
RH
1283
1284(define-public wlroots
1285 (package
1286 (name "wlroots")
06947252 1287 (version "0.7.0")
eea969cf
RH
1288 (source
1289 (origin
1290 (method git-fetch)
1291 (uri (git-reference
1292 (url "https://github.com/swaywm/wlroots.git")
1293 (commit version)))
1294 (file-name (git-file-name name version))
1295 (sha256
06947252 1296 (base32 "0jzxa6psbc7ddxli7rbfqxmv1svxnis51l1vch4hb9fdixqm284a"))))
eea969cf
RH
1297 (build-system meson-build-system)
1298 (arguments
1299 `(#:configure-flags '("-Dlogind-provider=elogind")
1300 #:phases
1301 (modify-phases %standard-phases
1302 (add-before 'configure 'hardcode-paths
1303 (lambda* (#:key inputs #:allow-other-keys)
1304 (substitute* "xwayland/xwayland.c"
1305 (("Xwayland") (string-append (assoc-ref inputs
1306 "xorg-server-xwayland")
1307 "/bin/Xwayland")))
1308 #t)))))
1309 (inputs `(("elogind" ,elogind)
1310 ("eudev" ,eudev)
1311 ("libinput" ,libinput)
1312 ("libxkbcommon" ,libxkbcommon)
1313 ("mesa" ,mesa)
1314 ("pixman" ,pixman)
1315 ("wayland" ,wayland)
1316 ("xorg-server-xwayland" ,xorg-server-xwayland)))
1317 (native-inputs `(("ffmpeg" ,ffmpeg)
1318 ("libcap" ,libcap)
1319 ("libpng" ,libpng)
1320 ("pkg-config" ,pkg-config)
1321 ("wayland-protocols" ,wayland-protocols)))
1322 (home-page "https://github.com/swaywm/wlroots")
1323 (synopsis "Pluggable, composable, unopinionated modules for building a
1324Wayland compositor")
1325 (description "wlroots is a set of pluggable, composable, unopinionated
1326modules for building a Wayland compositor.")
1327 (license license:expat))) ; MIT license
2ff844f0
RH
1328
1329(define-public sway
1330 (package
1331 (name "sway")
498448eb 1332 (version "1.2")
2ff844f0
RH
1333 (source
1334 (origin
1335 (method git-fetch)
1336 (uri (git-reference
1337 (url "https://github.com/swaywm/sway.git")
1338 (commit version)))
1339 (file-name (git-file-name name version))
1340 (sha256
498448eb 1341 (base32 "0vch2zm5afc76ia78p3vg71zr2fyda67l9hd2h0x1jq3mnvfbxnd"))))
2ff844f0
RH
1342 (build-system meson-build-system)
1343 (arguments
1344 `(#:phases
1345 (modify-phases %standard-phases
1346 (add-before 'configure 'hardcode-paths
1347 (lambda* (#:key inputs #:allow-other-keys)
e23b6a68
MP
1348 ;; Hardcode path to swaybg.
1349 (substitute* "sway/config.c"
1350 (("strdup..swaybg..")
1351 (string-append "strdup(\"" (assoc-ref inputs "swaybg")
1352 "/bin/swaybg\")")))
1353 ;; Hardcode path to scdoc.
2ff844f0
RH
1354 (substitute* "meson.build"
1355 (("scdoc.get_pkgconfig_variable..scdoc..")
1356 (string-append "'" (assoc-ref inputs "scdoc")
1357 "/bin/scdoc'")))
1358 #t)))))
1359 (inputs `(("cairo" ,cairo)
1360 ("elogind" ,elogind)
1361 ("gdk-pixbuf" ,gdk-pixbuf)
1362 ("json-c" ,json-c)
aa07299f 1363 ("libevdev" ,libevdev)
2ff844f0
RH
1364 ("libinput" ,libinput)
1365 ("libxkbcommon" ,libxkbcommon)
1366 ("pango" ,pango)
e23b6a68 1367 ("swaybg" ,swaybg)
2ff844f0
RH
1368 ("wayland" ,wayland)
1369 ("wlroots" ,wlroots)))
1370 (native-inputs `(("git" ,git)
1371 ("libcap" ,libcap)
1372 ("linux-pam" ,linux-pam)
1373 ("mesa" ,mesa)
1374 ("pkg-config" ,pkg-config)
1375 ("scdoc" ,scdoc)
1376 ("wayland-protocols" ,wayland-protocols)))
1377 (home-page "https://github.com/swaywm/sway")
1378 (synopsis "Wayland compositor compatible with i3")
1379 (description "Sway is a i3-compatible Wayland compositor.")
1380 (license license:expat))) ; MIT license
06ae5efc
RH
1381
1382(define-public swayidle
1383 (package
1384 (name "swayidle")
e6bd575a 1385 (version "1.5")
06ae5efc
RH
1386 (source
1387 (origin
1388 (method git-fetch)
1389 (uri (git-reference
1390 (url "https://github.com/swaywm/swayidle.git")
1391 (commit version)))
1392 (file-name (git-file-name name version))
1393 (sha256
e6bd575a 1394 (base32 "05qi96j58xqxjiighay1d39rfanxcpn6vlynj23mb5dymxvlaq9n"))))
06ae5efc 1395 (build-system meson-build-system)
ddd401d2
MP
1396 (arguments
1397 `(#:configure-flags '("-Dlogind-provider=elogind")))
1398 (inputs `(("elogind" ,elogind)
1399 ("wayland" ,wayland)))
06ae5efc
RH
1400 (native-inputs `(("pkg-config" ,pkg-config)
1401 ("scdoc" ,scdoc)
1402 ("wayland-protocols" ,wayland-protocols)))
1403 (home-page "https://github.com/swaywm/sway")
1404 (synopsis "Idle management daemon for Wayland compositors")
1405 (description "Swayidle is a idle management daemon for Wayland compositors.")
1406 (license license:expat))) ; MIT license
b0805973
RH
1407
1408(define-public swaylock
1409 (package
1410 (name "swaylock")
11bca533 1411 (version "1.4")
b0805973
RH
1412 (source
1413 (origin
1414 (method git-fetch)
1415 (uri (git-reference
1416 (url "https://github.com/swaywm/swaylock.git")
1417 (commit version)))
1418 (file-name (git-file-name name version))
1419 (sha256
11bca533 1420 (base32 "1ii9ql1mxkk2z69dv6bg1x22nl3a46iww764wqjiv78x08xpk982"))))
b0805973
RH
1421 (build-system meson-build-system)
1422 (inputs `(("cairo" ,cairo)
1423 ("gdk-pixbuf" ,gdk-pixbuf)
1424 ("libxkbcommon" ,libxkbcommon)
1425 ;("linux-pam" ,linux-pam) ; FIXME: Doesn't work.
1426 ("wayland" ,wayland)))
7959ccac 1427 (native-inputs `(("git" ,git)
b0805973
RH
1428 ("pango" ,pango)
1429 ("pkg-config" ,pkg-config)
1430 ("scdoc" ,scdoc)
1431 ("wayland-protocols" ,wayland-protocols)))
1432 (home-page "https://github.com/swaywm/sway")
1433 (synopsis "Screen locking utility for Wayland compositors")
1434 (description "Swaylock is a screen locking utility for Wayland compositors.")
1435 (license license:expat))) ; MIT license
bedb3457
SS
1436
1437(define-public swaybg
1438 (package
1439 (name "swaybg")
1440 (version "1.0")
1441 (source
1442 (origin
1443 (method git-fetch)
1444 (uri (git-reference
1445 (url "https://github.com/swaywm/swaybg.git")
1446 (commit version)))
1447 (file-name (git-file-name name version))
1448 (sha256
1449 (base32 "1lmqz5bmig90gq2m7lwf02d2g7z4hzf8fhqz78c8vk92c6p4xwbc"))))
1450 (build-system meson-build-system)
1451 (inputs `(("cairo" ,cairo)
1452 ("gdk-pixbuf" ,gdk-pixbuf)
1453 ("wayland" ,wayland)))
1454 (native-inputs `(("git" ,git)
1455 ("pkg-config" ,pkg-config)
1456 ("scdoc" ,scdoc)
1457 ("wayland-protocols" ,wayland-protocols)))
1458 (home-page "https://github.com/swaywm/sway")
1459 (synopsis "Screen wallpaper utility for Wayland compositors")
1460 (description "Swaybg is a wallpaper utility for Wayland compositors.")
1461 (license license:expat))) ; MIT license
7a1d6a77
GB
1462
1463(define-public waybar
1464 (package
1465 (name "waybar")
6792908d 1466 (version "0.8.0")
7a1d6a77
GB
1467 (source
1468 (origin
1469 (method git-fetch)
1470 (uri (git-reference
1471 (url "https://github.com/Alexays/Waybar.git")
1472 (commit version)))
1473 (file-name (git-file-name name version))
1474 (sha256
6792908d 1475 (base32 "0s8ck7qxka0l91ayma6amp9sc8cidi43byqgzcavi3a6id983r1z"))))
7a1d6a77
GB
1476 (build-system meson-build-system)
1477 (arguments
1478 `(#:configure-flags
b80dd5e3 1479 (list (string-append "-Dout=" (assoc-ref %outputs "out")))))
7a1d6a77
GB
1480 (inputs `(("fmt" ,fmt)
1481 ("gtkmm" ,gtkmm)
1482 ("jsoncpp" ,jsoncpp)
de2d14f2 1483 ("libdbusmenu" ,libdbusmenu)
7a1d6a77 1484 ("libinput" ,libinput)
de2d14f2
GB
1485 ("libmpdclent" ,libmpdclient)
1486 ("libnl" ,libnl)
1487 ("pulseaudio" ,pulseaudio)
7a1d6a77
GB
1488 ("spdlog" ,spdlog)
1489 ("wayland" ,wayland)))
b80dd5e3 1490 (native-inputs `(("glib:bin" ,glib "bin")
7a1d6a77
GB
1491 ("pkg-config" ,pkg-config)
1492 ("wayland-protocols" ,wayland-protocols)))
1493 (home-page "https://github.com/Alexays/Waybar")
1494 (synopsis "Wayland bar for Sway and Wlroots based compositors.")
1495 (description "Waybar is a highly customisable Wayland bar for Sway and
1496Wlroots based compositors.")
1497 (license license:expat))) ; MIT license
46dc940c
GB
1498
1499(define-public mako
1500 (package
1501 (name "mako")
b60ffcee 1502 (version "1.4")
46dc940c
GB
1503 (source
1504 (origin
1505 (method git-fetch)
1506 (uri (git-reference
1507 (url "https://github.com/emersion/mako.git")
1508 (commit (string-append "v" version))))
1509 (file-name (git-file-name name version))
1510 (sha256
b60ffcee 1511 (base32 "11ymiq6cr2ma0iva1mqybn3j6k73bsc6lv6pcbdq7hkhd4f9b7j9"))))
46dc940c
GB
1512 (build-system meson-build-system)
1513 (inputs `(("cairo" ,cairo)
1514 ("elogind" ,elogind)
1515 ("gdk-pixbuf" ,gdk-pixbuf)
1516 ("pango" ,pango)
1517 ("wayland" ,wayland)))
1518 (native-inputs `(("pkg-config" ,pkg-config)
1519 ("scdoc" ,scdoc)
1520 ("wayland-protocols" ,wayland-protocols)))
1521 (home-page "https://wayland.emersion.fr/mako")
1522 (synopsis "Lightweight Wayland notification daemon")
1523 (description "Mako is a lightweight notification daemon for Wayland
1524compositors that support the layer-shell protocol.")
1525 (license license:expat))) ; MIT license
88f06fd0
PN
1526
1527(define-public stumpwm
1528 (package
1529 (name "stumpwm")
59198ba1 1530 (version "19.11")
88f06fd0
PN
1531 (source
1532 (origin
1533 (method git-fetch)
1534 (uri (git-reference
1535 (url "https://github.com/stumpwm/stumpwm.git")
1536 (commit version)))
1537 (file-name (git-file-name "stumpwm" version))
1538 (sha256
59198ba1 1539 (base32 "1ha8803ll7472kqxsy2xz0v5d4sv8apmc9z631d67m31q0z1m9rz"))))
88f06fd0
PN
1540 (build-system asdf-build-system/sbcl)
1541 (native-inputs `(("fiasco" ,sbcl-fiasco)
1542 ("texinfo" ,texinfo)))
1543 (inputs `(("cl-ppcre" ,sbcl-cl-ppcre)
1544 ("clx" ,sbcl-clx)
1545 ("alexandria" ,sbcl-alexandria)))
1546 (outputs '("out" "lib"))
1547 (arguments
1548 '(#:asd-system-name "stumpwm"
1549 #:phases
1550 (modify-phases %standard-phases
1551 (add-after 'create-symlinks 'build-program
1552 (lambda* (#:key outputs #:allow-other-keys)
1553 (build-program
1554 (string-append (assoc-ref outputs "out") "/bin/stumpwm")
1555 outputs
1556 #:entry-program '((stumpwm:stumpwm) 0))))
1557 (add-after 'build-program 'create-desktop-file
1558 (lambda* (#:key outputs #:allow-other-keys)
1559 (let* ((out (assoc-ref outputs "out"))
1560 (xsessions (string-append out "/share/xsessions")))
1561 (mkdir-p xsessions)
1562 (call-with-output-file
1563 (string-append xsessions "/stumpwm.desktop")
1564 (lambda (file)
1565 (format file
1566 "[Desktop Entry]~@
1567 Name=stumpwm~@
1568 Comment=The Stump Window Manager~@
1569 Exec=~a/bin/stumpwm~@
1570 TryExec=~@*~a/bin/stumpwm~@
1571 Icon=~@
1572 Type=Application~%"
1573 out)))
1574 #t)))
1575 (add-after 'install 'install-manual
1576 (lambda* (#:key outputs #:allow-other-keys)
1577 ;; The proper way to the manual is bootstrapping a full autotools
1578 ;; build system and running ‘./configure && make stumpwm.info’ to
1579 ;; do some macro substitution. We can get away with much less.
1580 (let* ((out (assoc-ref outputs "out"))
1581 (info (string-append out "/share/info")))
1582 (invoke "makeinfo" "stumpwm.texi.in")
1583 (install-file "stumpwm.info" info)
1584 #t))))))
1585 (synopsis "Window manager written in Common Lisp")
1586 (description "Stumpwm is a window manager written entirely in Common Lisp.
1587It attempts to be highly customizable while relying entirely on the keyboard
1588for input. These design decisions reflect the growing popularity of
1589productive, customizable lisp based systems.")
1590 (home-page "https://github.com/stumpwm/stumpwm")
1591 (license license:gpl2+)
1592 (properties `((cl-source-variant . ,(delay cl-stumpwm))))))
1593
1594(define-public sbcl-stumpwm
1595 (deprecated-package "sbcl-stumpwm" stumpwm))
1596
1597(define-public cl-stumpwm
1598 (package
1599 (inherit (sbcl-package->cl-source-package stumpwm))
1600 (name "cl-stumpwm")))
1601
1602(define-public stumpwm+slynk
1603 (package
1604 (inherit stumpwm)
1605 (name "stumpwm-with-slynk")
1606 (outputs '("out"))
1607 (inputs
1608 `(("stumpwm" ,stumpwm "lib")
1609 ("slynk" ,sbcl-slynk)))
1610 (arguments
1611 (substitute-keyword-arguments (package-arguments stumpwm)
1612 ((#:phases phases)
1613 `(modify-phases ,phases
1614 (replace 'build-program
1615 (lambda* (#:key inputs outputs #:allow-other-keys)
1616 (let* ((out (assoc-ref outputs "out"))
1617 (program (string-append out "/bin/stumpwm")))
1618 (build-program program outputs
1619 #:entry-program '((stumpwm:stumpwm) 0)
1620 #:dependencies '("stumpwm"
1621 ,@(@@ (gnu packages lisp-xyz) slynk-systems))
1622 #:dependency-prefixes
1623 (map (lambda (input) (assoc-ref inputs input))
1624 '("stumpwm" "slynk")))
1625 ;; Remove unneeded file.
1626 (delete-file (string-append out "/bin/stumpwm-exec.fasl"))
1627 #t)))
1628 (delete 'copy-source)
1629 (delete 'build)
1630 (delete 'check)
1631 (delete 'create-asd-file)
1632 (delete 'cleanup)
1633 (delete 'create-symlinks)))))))
1634
1635(define-public sbcl-stumpwm+slynk
1636 (deprecated-package "sbcl-stumpwm-with-slynk" stumpwm+slynk))
d4145638
N
1637
1638(define-public lemonbar
1639 (let ((commit "35183ab81d2128dbb7b6d8e119cc57846bcefdb4")
1640 (revision "1"))
1641 (package
1642 (name "lemonbar")
1643 (version (git-version "1.3" revision commit))
1644 (source (origin
1645 (method git-fetch)
1646 (uri (git-reference
1647 (url "https://github.com/LemonBoy/bar")
1648 (commit commit)))
1649 (file-name (git-file-name name version))
1650 (sha256
1651 (base32
1652 "1wwqbph392iwz8skaqxb0xpklb1l6yganqz80g4x1fhrnz7idmlh"))))
1653 (build-system gnu-build-system)
1654 (arguments
1655 '(#:tests? #f ; no test suite
1656 #:make-flags (list "CC=gcc"
1657 (string-append "PREFIX=" %output))
1658 #:phases
1659 (modify-phases %standard-phases
1660 (delete 'configure))))
1661 (inputs
1662 `(("libxcb" ,libxcb)))
1663 (native-inputs
1664 `(("perl" ,perl)))
1665 (home-page "https://github.com/LemonBoy/bar")
1666 (synopsis "Featherweight status bar")
1667 (description
1668 "@code{lemonbar} (formerly known as @code{bar}) is a lightweight
1669bar entirely based on XCB. Provides full UTF-8 support, basic
1670formatting, RandR and Xinerama support and EWMH compliance without
1671wasting your precious memory.")
1672 (license license:x11))))