gnu: rust-core-foundation-sys-0.6: Don't hide package.
[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
951 "/share/lua/5.2/?.lua"))
952 (setenv "LUA_CPATH" (string-append lua-lgi
953 "/lib/lua/5.2/?.so"))
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
977 "/share/lua/5.2/?.lua")))
978 `("LUA_CPATH" suffix (,(string-append
979 lua-lgi "/lib/lua/5.2/?.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")
990 (version "0.99.10")
991 (source
992 (origin
993 (method url-fetch)
994 (uri (string-append "mirror://sourceforge/menumaker/"
995 "menumaker-" version ".tar.gz"))
996 (sha256
997 (base32
998 "1mm4cvg3kphkkd8nwrhcg6d9nm5ar7mgc0wf6fxk6zck1l7xn8ky"))))
999 (build-system gnu-build-system)
1000 (inputs
1001 `(("python" ,python)))
1002 (synopsis "Heuristics-driven menu generator")
1003 (description
1004 "MenuMaker is a menu generation utility for a number of X window
1005managers and desktop environments. It is capable of finding lots of
1006installed programs and generating a root menu consistent across all
1007supported window managers, so one will get (almost) the same menu in
1008all of them. Currently supported window managers include:
1009
1010@enumerate
1011@item BlackBox
1012@item Deskmenu
1013@item FluxBox
1014@item IceWM
1015@item OpenBox
1016@item PekWM
1017@item WindowMaker
1018@item XFCE
1019@end enumerate\n")
1020 (home-page "http://menumaker.sourceforge.net/")
1021 (license license:bsd-2)))
dbf544f9 1022
1023(define-public keybinder
1024 (package
1025 (name "keybinder")
1026 (version "0.3.1")
1027 (source
1028 (origin
1029 (method url-fetch)
6d688b6e
TGR
1030 (uri (string-append "https://github.com/kupferlauncher/keybinder"
1031 "/releases/download/v" version "/keybinder-"
dbf544f9 1032 version ".tar.gz"))
1033 (file-name (string-append name "-" version ".tar.gz"))
1034 (sha256
1035 (base32
1036 "0h52hj3ay8mfhwvmfxbxlfyq74hifdk8wxgxp7fr4iy6189hg7w7"))))
1037 (build-system gnu-build-system)
1038 (inputs
1039 `(("python-2" ,python-2)
1040 ("gtk+-2" ,gtk+-2)))
1041 (native-inputs
1042 `(("python2-pygtk" ,python2-pygtk)
1043 ("gtk-doc" ,gtk-doc)
1044 ("pkg-config" ,pkg-config)))
1045 (synopsis "Library for registering global keyboard shortcuts")
1046 (description
1047 "Keybinder is a library for registering global keyboard shortcuts.
1048Keybinder works with GTK-based applications using the X Window System.")
6d688b6e 1049 (home-page "https://github.com/kupferlauncher/keybinder")
dbf544f9 1050 (license license:gpl2+)))
78dfc9e2 1051
8c765a3b
IR
1052(define-public keybinder-3.0
1053 (package
1054 (name "keybinder-3.0")
1055 (version "0.3.2")
1056 (source
1057 (origin
1058 (method url-fetch)
1059 (uri (string-append "https://github.com/kupferlauncher/keybinder"
1060 "/releases/download/" name "-v" version "/" name "-"
1061 version ".tar.gz"))
1062 (file-name (string-append name "-" version ".tar.gz"))
1063 (sha256
1064 (base32
1065 "0830ihwnalw59pp1xzrp37dn58n8vwb8zasnm4a1h81v3x7dxqz6"))))
1066 (build-system gnu-build-system)
1067 (inputs
1068 `(("gtk+" ,gtk+)
1069 ("gobject-introspection" ,gobject-introspection)))
1070 (native-inputs
1071 `(("gtk-doc" ,gtk-doc)
1072 ("pkg-config" ,pkg-config)))
1073 (synopsis "Library for registering global keyboard shortcuts, Gtk3 version")
1074 (description
1075 "Keybinder is a library for registering global keyboard shortcuts.
1076Keybinder works with GTK-based applications using the X Window System.")
1077 (home-page "https://github.com/kupferlauncher/keybinder")
1078 (license license:x11)))
1079
78dfc9e2 1080(define-public spectrwm
1081 (package
1082 (name "spectrwm")
f6c8a97a 1083 (version "3.2.0")
78dfc9e2 1084 (source
1085 (origin
b82bd90c
TGR
1086 (method git-fetch)
1087 (uri (git-reference
1088 (url "https://github.com/conformal/spectrwm.git")
1089 (commit
1090 (string-append "SPECTRWM_"
1091 (string-join (string-split version #\.) "_")))))
1092 (file-name (git-file-name name version))
78dfc9e2 1093 (sha256
b82bd90c 1094 (base32 "1dfqy5f0s1nv6rqkz9lj006vypmp4rwxd5vczfk3ndzqgnh19kw6"))))
78dfc9e2 1095 (build-system gnu-build-system)
1096 (arguments
1097 `(#:make-flags (let ((pkg-config (lambda (flag)
1098 (string-append
1099 "$(shell pkg-config " flag " "
1100 "xft fontconfig x11 libpng)"))))
1101 (list
1102 "CC=gcc"
1103 (string-append "PREFIX=" %output)
1104 (string-append "INCS=-I. " (pkg-config "--cflags"))
1105 (string-append "LIBS=" (pkg-config "--libs") " -lm")))
f6c8a97a 1106 #:tests? #f ;no test suite
78dfc9e2 1107 #:phases
1108 (modify-phases %standard-phases
1109 (add-before 'build 'change-dir
1110 (lambda _
1111 (chdir "linux") #t))
1112 (add-after 'change-dir 'patch-makefile
1113 (lambda _
1114 (substitute* "Makefile"
1115 (("-g") ""))))
f6c8a97a 1116 (delete 'configure)))) ;no 'configure' exists
78dfc9e2 1117 (inputs
1118 `(("freetype" ,freetype)
1119 ("fontconfig" ,fontconfig)
1120 ("libx11" ,libx11)
1121 ("libxcursor" ,libxcursor)
1122 ("libxrandr" ,libxrandr)
1123 ("libxtst" ,libxtst)
1124 ("libxft" ,libxft)
1125 ("xcb-util" ,xcb-util)
1126 ("xcb-util-wm" ,xcb-util-wm)
1127 ("xcb-util-keysyms" ,xcb-util-keysyms)))
1128 (native-inputs
1129 `(("libxt" ,libxt)
1130 ("pkg-config" ,pkg-config)))
1131 (synopsis "Minimalistic automatic tiling window manager")
1132 (description
1133 "Spectrwm is a small dynamic tiling and reparenting window manager for X11.
1134It is inspired by Xmonad and dwm. Its major features include:
1135
1136@itemize
1137@item Navigation anywhere on all screens with either the keyboard or mouse
1138@item Customizable status bar
1139@item Restartable without losing state
1140@item Quick launch menu
1141@item Many screen layouts possible with a few simple key strokes
1142@item Move/resize floating windows
32008a75
TGR
1143@item Extended Window Manager Hints (@dfn{EWMH}) support
1144@item Configurable tiling
78dfc9e2 1145@item Adjustable tile gap allows for a true one pixel border
1146@item Customizable colors and border width
1147@end itemize\n")
1148 (home-page "https://github.com/conformal/spectrwm")
1149 (license license:isc)))
b4cb9308 1150
1151(define-public cwm
1152 (package
1153 (name "cwm")
e352a153 1154 (version "6.3")
b4cb9308 1155 (source
1156 (origin
1157 (method url-fetch)
1158 (uri (string-append "http://chneukirchen.org/releases/cwm-"
1159 version ".tar.gz"))
1160 (sha256
1161 (base32
e352a153 1162 "17pdp9cfgh2n3n3905l4rl9qk7b722i8psnarhlc2h98qzx7zmac"))))
b4cb9308 1163 (build-system gnu-build-system)
1164 (arguments
1165 `(#:make-flags (list "CC=gcc"
1166 (string-append "PREFIX=" %output))
1167 #:tests? #f
1168 #:phases
1169 (modify-phases %standard-phases
1170 (delete 'configure)
1171 (add-after 'build 'install-xsession
1172 (lambda* (#:key outputs #:allow-other-keys)
1173 ;; Add a .desktop file to xsessions.
1174 (let* ((output (assoc-ref outputs "out"))
1175 (xsessions (string-append output "/share/xsessions")))
1176 (mkdir-p xsessions)
1177 (with-output-to-file
1178 (string-append xsessions "/cwm.desktop")
1179 (lambda _
1180 (format #t
1181 "[Desktop Entry]~@
1182 Name=cwm~@
1183 Comment=OpenBSD Calm Window Manager fork~@
1184 Exec=~a/bin/cwm~@
1185 TryExec=~@*~a/bin/cwm~@
1186 Icon=~@
1187 Type=Application~%"
1188 output)))
1189 #t))))))
1190 (inputs
1191 `(("libxft" ,libxft)
1192 ("libxrandr" ,libxrandr)
1193 ("libxinerama" ,libxinerama)))
1194 (native-inputs
1195 `(("pkg-config" ,pkg-config)
1196 ("bison" ,bison)))
1197 (home-page "https://github.com/chneukirchen/cwm")
1198 (synopsis "OpenBSD fork of the calmwm window manager")
1199 (description "Cwm is a stacking window manager for X11. It is an OpenBSD
1200project derived from the original Calm Window Manager.")
1201 (license license:isc)))
70024cfa
PAR
1202
1203(define-public nitrogen
1204 (package
1205 (name "nitrogen")
1206 (version "1.6.1")
1207 (source (origin
1208 (method url-fetch)
1209 (uri (string-append "http://github.com/l3ib/nitrogen/"
1210 "releases/download/" version "/"
1211 name "-" version ".tar.gz"))
1212 (sha256
1213 (base32
1214 "0zc3fl1mbhq0iyndy4ysmy8vv5c7xwf54rbgamzfhfvsgdq160pl"))))
1215 (build-system gnu-build-system)
1216 (inputs
1217 `(("gtk+" ,gtk+-2)
1218 ("gtkmm" ,gtkmm-2)
1219 ("glib" ,glib)
1220 ("glibmm" ,glibmm)))
1221 (native-inputs
de99ba7e 1222 `(("pkg-config" ,pkg-config)))
70024cfa
PAR
1223 (home-page "http://projects.l3ib.org/nitrogen/")
1224 (synopsis "Background browser and setter for X windows")
1225 (description
1226 "This package is a background browser and setter for X windows. It's
1227features are:
1228
1229@itemize
1230@item Multihead and Xinerama aware
1231@item Recall mode to used via startup script
1232@item Uses freedesktop.org standard for thumbnails
1233@item Can set GNOME background
1234@item Command lie set modes for script use
1235@item Inotify monitoring of browse directory
1236@item Lazy loading of thumbnails - conserves memory
1237@item \"Automatic\" set mode - determines best mode to set an image based on
1238its size
1239@item Display preview images in a tiled icon layout
1240@end itemize")
1241 (license license:gpl2+)))
d8dcbcc9
MP
1242
1243(define-public polybar
1244 (package
1245 (name "polybar")
553199c5 1246 (version "3.4.2")
d8dcbcc9
MP
1247 (source
1248 (origin
1249 (method url-fetch)
44b73520 1250 (uri (string-append "https://github.com/polybar/polybar/releases/"
4b9e4ac7 1251 "download/" version "/polybar-" version ".tar"))
d8dcbcc9 1252 (sha256
553199c5 1253 (base32 "0fmnviz4b01aw50nkv4yibm8ykc5ff860ynw3xb1ymlsjrvwj8jd"))))
d8dcbcc9
MP
1254 (build-system cmake-build-system)
1255 (arguments
1256 ;; Test is disabled because it requires downloading googletest from the
1257 ;; Internet.
1258 '(#:tests? #f))
1259 (inputs
1260 `(("alsa-lib" ,alsa-lib)
1261 ("cairo" ,cairo)
1262 ("i3-wm" ,i3-wm)
005c2ccf 1263 ("jsoncpp" ,jsoncpp)
d8dcbcc9
MP
1264 ("libmpdclient" ,libmpdclient)
1265 ("libnl" ,libnl)
1266 ("libxcb" ,libxcb)
1267 ("pulseaudio" ,pulseaudio)
1268 ("xcb-proto" ,xcb-proto)
1269 ("xcb-util" ,xcb-util)
1270 ("xcb-util-cursor" ,xcb-util-cursor)
1271 ("xcb-util-image" ,xcb-util-image)
1272 ("xcb-util-wm" ,xcb-util-wm)
1273 ("xcb-util-xrm" ,xcb-util-xrm)))
1274 (native-inputs
1275 `(("pkg-config" ,pkg-config)
1276 ("python-2" ,python-2) ; lib/xpp depends on python 2
1277 ("python" ,python))) ; xcb-proto depends on python 3
1278 (home-page "https://polybar.github.io/")
1279 (synopsis "Fast and easy-to-use status bar")
1280 (description "Polybar aims to help users build beautiful and highly
1281customizable status bars for their desktop environment. It has built-in
1282functionality to display information about the most commonly used services.")
1283 (license license:expat)))
eea969cf
RH
1284
1285(define-public wlroots
1286 (package
1287 (name "wlroots")
06947252 1288 (version "0.7.0")
eea969cf
RH
1289 (source
1290 (origin
1291 (method git-fetch)
1292 (uri (git-reference
1293 (url "https://github.com/swaywm/wlroots.git")
1294 (commit version)))
1295 (file-name (git-file-name name version))
1296 (sha256
06947252 1297 (base32 "0jzxa6psbc7ddxli7rbfqxmv1svxnis51l1vch4hb9fdixqm284a"))))
eea969cf
RH
1298 (build-system meson-build-system)
1299 (arguments
1300 `(#:configure-flags '("-Dlogind-provider=elogind")
1301 #:phases
1302 (modify-phases %standard-phases
1303 (add-before 'configure 'hardcode-paths
1304 (lambda* (#:key inputs #:allow-other-keys)
1305 (substitute* "xwayland/xwayland.c"
1306 (("Xwayland") (string-append (assoc-ref inputs
1307 "xorg-server-xwayland")
1308 "/bin/Xwayland")))
1309 #t)))))
1310 (inputs `(("elogind" ,elogind)
1311 ("eudev" ,eudev)
1312 ("libinput" ,libinput)
1313 ("libxkbcommon" ,libxkbcommon)
1314 ("mesa" ,mesa)
1315 ("pixman" ,pixman)
1316 ("wayland" ,wayland)
1317 ("xorg-server-xwayland" ,xorg-server-xwayland)))
1318 (native-inputs `(("ffmpeg" ,ffmpeg)
1319 ("libcap" ,libcap)
1320 ("libpng" ,libpng)
1321 ("pkg-config" ,pkg-config)
1322 ("wayland-protocols" ,wayland-protocols)))
1323 (home-page "https://github.com/swaywm/wlroots")
1324 (synopsis "Pluggable, composable, unopinionated modules for building a
1325Wayland compositor")
1326 (description "wlroots is a set of pluggable, composable, unopinionated
1327modules for building a Wayland compositor.")
1328 (license license:expat))) ; MIT license
2ff844f0
RH
1329
1330(define-public sway
1331 (package
1332 (name "sway")
498448eb 1333 (version "1.2")
2ff844f0
RH
1334 (source
1335 (origin
1336 (method git-fetch)
1337 (uri (git-reference
1338 (url "https://github.com/swaywm/sway.git")
1339 (commit version)))
1340 (file-name (git-file-name name version))
1341 (sha256
498448eb 1342 (base32 "0vch2zm5afc76ia78p3vg71zr2fyda67l9hd2h0x1jq3mnvfbxnd"))))
2ff844f0
RH
1343 (build-system meson-build-system)
1344 (arguments
1345 `(#:phases
1346 (modify-phases %standard-phases
1347 (add-before 'configure 'hardcode-paths
1348 (lambda* (#:key inputs #:allow-other-keys)
e23b6a68
MP
1349 ;; Hardcode path to swaybg.
1350 (substitute* "sway/config.c"
1351 (("strdup..swaybg..")
1352 (string-append "strdup(\"" (assoc-ref inputs "swaybg")
1353 "/bin/swaybg\")")))
1354 ;; Hardcode path to scdoc.
2ff844f0
RH
1355 (substitute* "meson.build"
1356 (("scdoc.get_pkgconfig_variable..scdoc..")
1357 (string-append "'" (assoc-ref inputs "scdoc")
1358 "/bin/scdoc'")))
1359 #t)))))
1360 (inputs `(("cairo" ,cairo)
1361 ("elogind" ,elogind)
1362 ("gdk-pixbuf" ,gdk-pixbuf)
1363 ("json-c" ,json-c)
aa07299f 1364 ("libevdev" ,libevdev)
2ff844f0
RH
1365 ("libinput" ,libinput)
1366 ("libxkbcommon" ,libxkbcommon)
1367 ("pango" ,pango)
e23b6a68 1368 ("swaybg" ,swaybg)
2ff844f0
RH
1369 ("wayland" ,wayland)
1370 ("wlroots" ,wlroots)))
1371 (native-inputs `(("git" ,git)
1372 ("libcap" ,libcap)
1373 ("linux-pam" ,linux-pam)
1374 ("mesa" ,mesa)
1375 ("pkg-config" ,pkg-config)
1376 ("scdoc" ,scdoc)
1377 ("wayland-protocols" ,wayland-protocols)))
1378 (home-page "https://github.com/swaywm/sway")
1379 (synopsis "Wayland compositor compatible with i3")
1380 (description "Sway is a i3-compatible Wayland compositor.")
1381 (license license:expat))) ; MIT license
06ae5efc
RH
1382
1383(define-public swayidle
1384 (package
1385 (name "swayidle")
e6bd575a 1386 (version "1.5")
06ae5efc
RH
1387 (source
1388 (origin
1389 (method git-fetch)
1390 (uri (git-reference
1391 (url "https://github.com/swaywm/swayidle.git")
1392 (commit version)))
1393 (file-name (git-file-name name version))
1394 (sha256
e6bd575a 1395 (base32 "05qi96j58xqxjiighay1d39rfanxcpn6vlynj23mb5dymxvlaq9n"))))
06ae5efc 1396 (build-system meson-build-system)
ddd401d2
MP
1397 (arguments
1398 `(#:configure-flags '("-Dlogind-provider=elogind")))
1399 (inputs `(("elogind" ,elogind)
1400 ("wayland" ,wayland)))
06ae5efc
RH
1401 (native-inputs `(("pkg-config" ,pkg-config)
1402 ("scdoc" ,scdoc)
1403 ("wayland-protocols" ,wayland-protocols)))
1404 (home-page "https://github.com/swaywm/sway")
1405 (synopsis "Idle management daemon for Wayland compositors")
1406 (description "Swayidle is a idle management daemon for Wayland compositors.")
1407 (license license:expat))) ; MIT license
b0805973
RH
1408
1409(define-public swaylock
1410 (package
1411 (name "swaylock")
11bca533 1412 (version "1.4")
b0805973
RH
1413 (source
1414 (origin
1415 (method git-fetch)
1416 (uri (git-reference
1417 (url "https://github.com/swaywm/swaylock.git")
1418 (commit version)))
1419 (file-name (git-file-name name version))
1420 (sha256
11bca533 1421 (base32 "1ii9ql1mxkk2z69dv6bg1x22nl3a46iww764wqjiv78x08xpk982"))))
b0805973
RH
1422 (build-system meson-build-system)
1423 (inputs `(("cairo" ,cairo)
1424 ("gdk-pixbuf" ,gdk-pixbuf)
1425 ("libxkbcommon" ,libxkbcommon)
1426 ;("linux-pam" ,linux-pam) ; FIXME: Doesn't work.
1427 ("wayland" ,wayland)))
7959ccac 1428 (native-inputs `(("git" ,git)
b0805973
RH
1429 ("pango" ,pango)
1430 ("pkg-config" ,pkg-config)
1431 ("scdoc" ,scdoc)
1432 ("wayland-protocols" ,wayland-protocols)))
1433 (home-page "https://github.com/swaywm/sway")
1434 (synopsis "Screen locking utility for Wayland compositors")
1435 (description "Swaylock is a screen locking utility for Wayland compositors.")
1436 (license license:expat))) ; MIT license
bedb3457
SS
1437
1438(define-public swaybg
1439 (package
1440 (name "swaybg")
1441 (version "1.0")
1442 (source
1443 (origin
1444 (method git-fetch)
1445 (uri (git-reference
1446 (url "https://github.com/swaywm/swaybg.git")
1447 (commit version)))
1448 (file-name (git-file-name name version))
1449 (sha256
1450 (base32 "1lmqz5bmig90gq2m7lwf02d2g7z4hzf8fhqz78c8vk92c6p4xwbc"))))
1451 (build-system meson-build-system)
1452 (inputs `(("cairo" ,cairo)
1453 ("gdk-pixbuf" ,gdk-pixbuf)
1454 ("wayland" ,wayland)))
1455 (native-inputs `(("git" ,git)
1456 ("pkg-config" ,pkg-config)
1457 ("scdoc" ,scdoc)
1458 ("wayland-protocols" ,wayland-protocols)))
1459 (home-page "https://github.com/swaywm/sway")
1460 (synopsis "Screen wallpaper utility for Wayland compositors")
1461 (description "Swaybg is a wallpaper utility for Wayland compositors.")
1462 (license license:expat))) ; MIT license
7a1d6a77
GB
1463
1464(define-public waybar
1465 (package
1466 (name "waybar")
6792908d 1467 (version "0.8.0")
7a1d6a77
GB
1468 (source
1469 (origin
1470 (method git-fetch)
1471 (uri (git-reference
1472 (url "https://github.com/Alexays/Waybar.git")
1473 (commit version)))
1474 (file-name (git-file-name name version))
1475 (sha256
6792908d 1476 (base32 "0s8ck7qxka0l91ayma6amp9sc8cidi43byqgzcavi3a6id983r1z"))))
7a1d6a77
GB
1477 (build-system meson-build-system)
1478 (arguments
1479 `(#:configure-flags
b80dd5e3 1480 (list (string-append "-Dout=" (assoc-ref %outputs "out")))))
7a1d6a77
GB
1481 (inputs `(("fmt" ,fmt)
1482 ("gtkmm" ,gtkmm)
1483 ("jsoncpp" ,jsoncpp)
de2d14f2 1484 ("libdbusmenu" ,libdbusmenu)
7a1d6a77 1485 ("libinput" ,libinput)
de2d14f2
GB
1486 ("libmpdclent" ,libmpdclient)
1487 ("libnl" ,libnl)
1488 ("pulseaudio" ,pulseaudio)
7a1d6a77
GB
1489 ("spdlog" ,spdlog)
1490 ("wayland" ,wayland)))
b80dd5e3 1491 (native-inputs `(("glib:bin" ,glib "bin")
7a1d6a77
GB
1492 ("pkg-config" ,pkg-config)
1493 ("wayland-protocols" ,wayland-protocols)))
1494 (home-page "https://github.com/Alexays/Waybar")
1495 (synopsis "Wayland bar for Sway and Wlroots based compositors.")
1496 (description "Waybar is a highly customisable Wayland bar for Sway and
1497Wlroots based compositors.")
1498 (license license:expat))) ; MIT license
46dc940c
GB
1499
1500(define-public mako
1501 (package
1502 (name "mako")
b60ffcee 1503 (version "1.4")
46dc940c
GB
1504 (source
1505 (origin
1506 (method git-fetch)
1507 (uri (git-reference
1508 (url "https://github.com/emersion/mako.git")
1509 (commit (string-append "v" version))))
1510 (file-name (git-file-name name version))
1511 (sha256
b60ffcee 1512 (base32 "11ymiq6cr2ma0iva1mqybn3j6k73bsc6lv6pcbdq7hkhd4f9b7j9"))))
46dc940c
GB
1513 (build-system meson-build-system)
1514 (inputs `(("cairo" ,cairo)
1515 ("elogind" ,elogind)
1516 ("gdk-pixbuf" ,gdk-pixbuf)
1517 ("pango" ,pango)
1518 ("wayland" ,wayland)))
1519 (native-inputs `(("pkg-config" ,pkg-config)
1520 ("scdoc" ,scdoc)
1521 ("wayland-protocols" ,wayland-protocols)))
1522 (home-page "https://wayland.emersion.fr/mako")
1523 (synopsis "Lightweight Wayland notification daemon")
1524 (description "Mako is a lightweight notification daemon for Wayland
1525compositors that support the layer-shell protocol.")
1526 (license license:expat))) ; MIT license
88f06fd0
PN
1527
1528(define-public stumpwm
1529 (package
1530 (name "stumpwm")
59198ba1 1531 (version "19.11")
88f06fd0
PN
1532 (source
1533 (origin
1534 (method git-fetch)
1535 (uri (git-reference
1536 (url "https://github.com/stumpwm/stumpwm.git")
1537 (commit version)))
1538 (file-name (git-file-name "stumpwm" version))
1539 (sha256
59198ba1 1540 (base32 "1ha8803ll7472kqxsy2xz0v5d4sv8apmc9z631d67m31q0z1m9rz"))))
88f06fd0
PN
1541 (build-system asdf-build-system/sbcl)
1542 (native-inputs `(("fiasco" ,sbcl-fiasco)
1543 ("texinfo" ,texinfo)))
1544 (inputs `(("cl-ppcre" ,sbcl-cl-ppcre)
1545 ("clx" ,sbcl-clx)
1546 ("alexandria" ,sbcl-alexandria)))
1547 (outputs '("out" "lib"))
1548 (arguments
1549 '(#:asd-system-name "stumpwm"
1550 #:phases
1551 (modify-phases %standard-phases
1552 (add-after 'create-symlinks 'build-program
1553 (lambda* (#:key outputs #:allow-other-keys)
1554 (build-program
1555 (string-append (assoc-ref outputs "out") "/bin/stumpwm")
1556 outputs
1557 #:entry-program '((stumpwm:stumpwm) 0))))
1558 (add-after 'build-program 'create-desktop-file
1559 (lambda* (#:key outputs #:allow-other-keys)
1560 (let* ((out (assoc-ref outputs "out"))
1561 (xsessions (string-append out "/share/xsessions")))
1562 (mkdir-p xsessions)
1563 (call-with-output-file
1564 (string-append xsessions "/stumpwm.desktop")
1565 (lambda (file)
1566 (format file
1567 "[Desktop Entry]~@
1568 Name=stumpwm~@
1569 Comment=The Stump Window Manager~@
1570 Exec=~a/bin/stumpwm~@
1571 TryExec=~@*~a/bin/stumpwm~@
1572 Icon=~@
1573 Type=Application~%"
1574 out)))
1575 #t)))
1576 (add-after 'install 'install-manual
1577 (lambda* (#:key outputs #:allow-other-keys)
1578 ;; The proper way to the manual is bootstrapping a full autotools
1579 ;; build system and running ‘./configure && make stumpwm.info’ to
1580 ;; do some macro substitution. We can get away with much less.
1581 (let* ((out (assoc-ref outputs "out"))
1582 (info (string-append out "/share/info")))
1583 (invoke "makeinfo" "stumpwm.texi.in")
1584 (install-file "stumpwm.info" info)
1585 #t))))))
1586 (synopsis "Window manager written in Common Lisp")
1587 (description "Stumpwm is a window manager written entirely in Common Lisp.
1588It attempts to be highly customizable while relying entirely on the keyboard
1589for input. These design decisions reflect the growing popularity of
1590productive, customizable lisp based systems.")
1591 (home-page "https://github.com/stumpwm/stumpwm")
1592 (license license:gpl2+)
1593 (properties `((cl-source-variant . ,(delay cl-stumpwm))))))
1594
1595(define-public sbcl-stumpwm
1596 (deprecated-package "sbcl-stumpwm" stumpwm))
1597
1598(define-public cl-stumpwm
1599 (package
1600 (inherit (sbcl-package->cl-source-package stumpwm))
1601 (name "cl-stumpwm")))
1602
1603(define-public stumpwm+slynk
1604 (package
1605 (inherit stumpwm)
1606 (name "stumpwm-with-slynk")
1607 (outputs '("out"))
1608 (inputs
1609 `(("stumpwm" ,stumpwm "lib")
1610 ("slynk" ,sbcl-slynk)))
1611 (arguments
1612 (substitute-keyword-arguments (package-arguments stumpwm)
1613 ((#:phases phases)
1614 `(modify-phases ,phases
1615 (replace 'build-program
1616 (lambda* (#:key inputs outputs #:allow-other-keys)
1617 (let* ((out (assoc-ref outputs "out"))
1618 (program (string-append out "/bin/stumpwm")))
1619 (build-program program outputs
1620 #:entry-program '((stumpwm:stumpwm) 0)
1621 #:dependencies '("stumpwm"
1622 ,@(@@ (gnu packages lisp-xyz) slynk-systems))
1623 #:dependency-prefixes
1624 (map (lambda (input) (assoc-ref inputs input))
1625 '("stumpwm" "slynk")))
1626 ;; Remove unneeded file.
1627 (delete-file (string-append out "/bin/stumpwm-exec.fasl"))
1628 #t)))
1629 (delete 'copy-source)
1630 (delete 'build)
1631 (delete 'check)
1632 (delete 'create-asd-file)
1633 (delete 'cleanup)
1634 (delete 'create-symlinks)))))))
1635
1636(define-public sbcl-stumpwm+slynk
1637 (deprecated-package "sbcl-stumpwm-with-slynk" stumpwm+slynk))
d4145638
N
1638
1639(define-public lemonbar
1640 (let ((commit "35183ab81d2128dbb7b6d8e119cc57846bcefdb4")
1641 (revision "1"))
1642 (package
1643 (name "lemonbar")
1644 (version (git-version "1.3" revision commit))
1645 (source (origin
1646 (method git-fetch)
1647 (uri (git-reference
1648 (url "https://github.com/LemonBoy/bar")
1649 (commit commit)))
1650 (file-name (git-file-name name version))
1651 (sha256
1652 (base32
1653 "1wwqbph392iwz8skaqxb0xpklb1l6yganqz80g4x1fhrnz7idmlh"))))
1654 (build-system gnu-build-system)
1655 (arguments
1656 '(#:tests? #f ; no test suite
1657 #:make-flags (list "CC=gcc"
1658 (string-append "PREFIX=" %output))
1659 #:phases
1660 (modify-phases %standard-phases
1661 (delete 'configure))))
1662 (inputs
1663 `(("libxcb" ,libxcb)))
1664 (native-inputs
1665 `(("perl" ,perl)))
1666 (home-page "https://github.com/LemonBoy/bar")
1667 (synopsis "Featherweight status bar")
1668 (description
1669 "@code{lemonbar} (formerly known as @code{bar}) is a lightweight
1670bar entirely based on XCB. Provides full UTF-8 support, basic
1671formatting, RandR and Xinerama support and EWMH compliance without
1672wasting your precious memory.")
1673 (license license:x11))))