gnu: vim-airline: Update to 0.10.
[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>
560c0795 8;;; Copyright © 2016 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>
189be331 11;;; Copyright © 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
4a78fd46 12;;; Copyright © 2016, 2017, 2018 Nils Gillmann <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>
3e7cb70a 16;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
6e864d00 17;;; Copyright © 2017 Oleg Pykhalov <go.wigust@gmail.com>
d2ea8064 18;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
70024cfa 19;;; Copyright © 2018 Pierre-Antoine Rouby <contact@parouby.fr>
bc83b2e2 20;;; Copyright © 2018 Meiyo Peng <meiyo.peng@gmail.com>
bda2ded6
ED
21;;;
22;;; This file is part of GNU Guix.
23;;;
24;;; GNU Guix is free software; you can redistribute it and/or modify it
25;;; under the terms of the GNU General Public License as published by
26;;; the Free Software Foundation; either version 3 of the License, or (at
27;;; your option) any later version.
28;;;
29;;; GNU Guix is distributed in the hope that it will be useful, but
30;;; WITHOUT ANY WARRANTY; without even the implied warranty of
31;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
32;;; GNU General Public License for more details.
33;;;
34;;; You should have received a copy of the GNU General Public License
35;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
36
37(define-module (gnu packages wm)
0ede252b 38 #:use-module ((guix licenses) #:prefix license:)
bda2ded6 39 #:use-module (guix packages)
c595cd47 40 #:use-module (gnu packages)
bda2ded6 41 #:use-module (gnu packages linux)
3d1240aa 42 #:use-module (guix build-system cmake)
bda2ded6 43 #:use-module (guix build-system gnu)
6e38c4be 44 #:use-module (guix build-system haskell)
3e7cb70a 45 #:use-module (guix build-system perl)
c165591d 46 #:use-module (guix build-system python)
6e38c4be 47 #:use-module (gnu packages haskell)
a06b9b50 48 #:use-module (gnu packages haskell-check)
44b7374a 49 #:use-module (gnu packages haskell-web)
4b563b34 50 #:use-module (gnu packages autotools)
b4cb9308 51 #:use-module (gnu packages bison)
b0a2dc72 52 #:use-module (gnu packages gawk)
bda2ded6
ED
53 #:use-module (gnu packages base)
54 #:use-module (gnu packages pkg-config)
55 #:use-module (gnu packages perl)
766a22fb 56 #:use-module (gnu packages pulseaudio)
bda2ded6
ED
57 #:use-module (gnu packages xorg)
58 #:use-module (gnu packages xdisorg)
99828fa7 59 #:use-module (gnu packages documentation)
bda2ded6
ED
60 #:use-module (gnu packages xml)
61 #:use-module (gnu packages m4)
62 #:use-module (gnu packages docbook)
0ede252b 63 #:use-module (gnu packages image)
bda2ded6 64 #:use-module (gnu packages pcre)
395751c0 65 #:use-module (gnu packages python)
bda2ded6
ED
66 #:use-module (gnu packages gtk)
67 #:use-module (gnu packages libevent)
0ede252b 68 #:use-module (gnu packages fribidi)
bda2ded6
ED
69 #:use-module (gnu packages maths)
70 #:use-module (gnu packages web)
0ede252b 71 #:use-module (gnu packages fontutils)
3d1240aa
CZ
72 #:use-module (gnu packages freedesktop)
73 #:use-module (gnu packages glib)
74 #:use-module (gnu packages gperf)
75 #:use-module (gnu packages imagemagick)
76 #:use-module (gnu packages lua)
4b563b34 77 #:use-module (gnu packages linux)
37356e0b 78 #:use-module (gnu packages suckless)
d8dcbcc9 79 #:use-module (gnu packages mpd)
bda2ded6
ED
80 #:use-module (guix download)
81 #:use-module (guix git-download))
82
5c37126f
ED
83(define-public libconfuse
84 (package
85 (name "libconfuse")
146c3b21 86 (version "3.2.2")
5c37126f
ED
87 (source (origin
88 (method url-fetch)
631ced1b
TGR
89 (uri (string-append "https://github.com/martinh/libconfuse/"
90 "releases/download/v" version
91 "/confuse-" version ".tar.xz"))
5c37126f
ED
92 (sha256
93 (base32
146c3b21 94 "02r1mmzik2m0iigbc2da3y754vj24i18r3ml5p2wzs027mjhn959"))))
5c37126f 95 (build-system gnu-build-system)
631ced1b 96 (home-page "https://github.com/martinh/libconfuse")
5c37126f
ED
97 (synopsis "Configuration file parser library")
98 (description "libconfuse is a configuration file parser library. It
99supports sections and (lists of) values (strings, integers, floats, booleans
100or other sections), as well as some other features (such as
101single/double-quoted strings, environment variable expansion, functions and
102nested include statements).")
0ede252b 103 (license license:isc)))
5c37126f 104
1268e52d 105(define-public bspwm
106 (package
107 (name "bspwm")
aa0551c2 108 (version "0.9.5")
1268e52d 109 (source
110 (origin
782b1224
TGR
111 (method git-fetch)
112 (uri (git-reference
113 (url "https://github.com/baskerville/bspwm.git")
114 (commit version)))
115 (file-name (git-file-name name version))
1268e52d 116 (sha256
782b1224 117 (base32 "09h3g1rxxjyw861mk32lj774nmwkx8cwxq4wfgmf4dpbizymvhhr"))))
1268e52d 118 (build-system gnu-build-system)
119 (inputs
120 `(("libxcb" ,libxcb)
121 ("libxinerama" ,libxinerama)
122 ("sxhkd" ,sxhkd)
123 ("xcb-util" ,xcb-util)
124 ("xcb-util-keysyms" ,xcb-util-keysyms)
125 ("xcb-util-wm" ,xcb-util-wm)))
126 (arguments
aa0551c2
TGR
127 '(#:phases
128 (modify-phases %standard-phases
129 (delete 'configure)) ; no configure script
130 #:tests? #f ; no check target
131 #:make-flags
132 (list "CC=gcc"
133 (string-append "PREFIX=" %output))))
1268e52d 134 (home-page "https://github.com/baskerville/bspwm")
135 (synopsis "Tiling window manager based on binary space partitioning")
136 (description "bspwm is a tiling window manager that represents windows as
137the leaves of a full binary tree.")
0ede252b 138 (license license:bsd-2)))
1268e52d 139
63b1bdbc
ED
140(define-public i3status
141 (package
142 (name "i3status")
8c2ab742 143 (version "2.12")
63b1bdbc
ED
144 (source (origin
145 (method url-fetch)
fdad1f3c 146 (uri (string-append "https://i3wm.org/i3status/i3status-"
63b1bdbc
ED
147 version ".tar.bz2"))
148 (sha256
149 (base32
8c2ab742 150 "06krpbijv4yi33nypg6qcn4hilcrdyarsdpd9fmr2cq46qaqiikg"))))
63b1bdbc
ED
151 (build-system gnu-build-system)
152 (arguments
153 `(#:make-flags (list "CC=gcc" (string-append "PREFIX=" %output))
154 #:phases
155 (modify-phases %standard-phases
156 (delete 'configure))
157 #:tests? #f)) ; no test suite
158 (inputs
159 `(("openlibm" ,openlibm)
160 ("libconfuse" ,libconfuse)
161 ("libyajl" ,libyajl)
162 ("alsa-lib" ,alsa-lib)
766a22fb
AM
163 ("pulseaudio" ,pulseaudio)
164 ("libnl" ,libnl)
63b1bdbc
ED
165 ("libcap" ,libcap)
166 ("asciidoc" ,asciidoc)))
766a22fb
AM
167 (native-inputs
168 `(("pkg-config" ,pkg-config)))
fdad1f3c 169 (home-page "https://i3wm.org/i3status/")
63b1bdbc
ED
170 (synopsis "Status bar for i3bar, dzen2, xmobar or similar programs")
171 (description "i3status is a small program for generating a status bar for
172i3bar, dzen2, xmobar or similar programs. It is designed to be very efficient
173by issuing a very small number of system calls, as one generally wants to
174update such a status line every second. This ensures that even under high
175load, your status bar is updated correctly. Also, it saves a bit of energy by
176not hogging your CPU as much as spawning the corresponding amount of shell
177commands would.")
0ede252b 178 (license license:bsd-3)))
63b1bdbc 179
bda2ded6
ED
180(define-public i3-wm
181 (package
182 (name "i3-wm")
7c56237b 183 (version "4.16.1")
bda2ded6
ED
184 (source (origin
185 (method url-fetch)
8658d403 186 (uri (string-append "https://i3wm.org/downloads/i3-"
bda2ded6
ED
187 version ".tar.bz2"))
188 (sha256
189 (base32
7c56237b 190 "0xl56y196vxv001gvx35xwfr25zah8m3xwizp9ycdgdc0rfc4rdb"))))
bda2ded6
ED
191 (build-system gnu-build-system)
192 (arguments
4bd391f5 193 `(#:make-flags
4b0e6367
KK
194 (list "CC=gcc"
195 (string-append "PREFIX=" %output)
196 ;; This works around the following error:
197 ;; 'error: ‘for’ loop initial declarations are only allowed in C99
198 ;; or C11 mode'
199 "CFLAGS=-std=c11")
4bd391f5
LF
200 ;; The build system tries to build in a separate directory, but that
201 ;; seems to be unnecessary.
202 #:configure-flags '("--disable-builddir")
203 ;; The test suite appears to require the unpackaged Perl module AnyEvent.
204 #:tests? #f))
bda2ded6
ED
205 (inputs
206 `(("libxcb" ,libxcb)
207 ("xcb-util" ,xcb-util)
208 ("xcb-util-cursor" ,xcb-util-cursor)
209 ("xcb-util-keysyms" ,xcb-util-keysyms)
210 ("xcb-util-wm" ,xcb-util-wm)
4bd391f5 211 ("xcb-util-xrm" ,xcb-util-xrm)
bda2ded6
ED
212 ("libxkbcommon" ,libxkbcommon)
213 ("libev" ,libev)
214 ("libyajl" ,libyajl)
215 ("asciidoc" ,asciidoc)
216 ("xmlto" ,xmlto)
217 ("perl-pod-simple" ,perl-pod-simple)
bda2ded6
ED
218 ("libx11" ,libx11)
219 ("pcre" ,pcre)
220 ("startup-notification" ,startup-notification)
221 ("pango" ,pango)
222 ("cairo" ,cairo)))
223 (native-inputs
224 `(("which" ,which)
225 ("perl" ,perl)
4bd391f5
LF
226 ("pkg-config" ,pkg-config)
227 ;; For building the documentation.
4b0e6367 228 ("libxml2" ,libxml2)
4bd391f5 229 ("docbook-xsl" ,docbook-xsl)))
8658d403 230 (home-page "https://i3wm.org/")
bda2ded6 231 (synopsis "Improved tiling window manager")
a124bbd2 232 (description "A tiling window manager, completely written
bda2ded6
ED
233from scratch. i3 is primarily targeted at advanced users and
234developers.")
0ede252b 235 (license license:bsd-3)))
6e38c4be 236
bc83b2e2
MP
237(define-public i3blocks
238 (let ((commit "37f23805ff886639163fbef8aedba71c8071eff8")
239 (revision "1"))
240 (package
241 (name "i3blocks")
242 (version (string-append "1.4-" revision "."
243 (string-take commit 7)))
244 (source (origin
245 (method git-fetch)
246 (uri (git-reference
247 (url "https://github.com/vivien/i3blocks.git")
248 (commit commit)))
249 (sha256
250 (base32
251 "15rnrcajzyrmhlz1a21qqsjlj3dkib70806dlb386fliylc2kisb"))
d64e5147 252 (file-name (git-file-name name version))))
bc83b2e2
MP
253 (build-system gnu-build-system)
254 (arguments
255 `(#:make-flags (list "CC=gcc" (string-append "PREFIX=" %output))
256 #:phases (modify-phases %standard-phases
257 (add-after 'unpack 'autogen
258 (lambda _ (invoke "sh" "autogen.sh")))
259 (add-after 'install 'install-doc
260 (lambda* (#:key outputs #:allow-other-keys)
261 (let* ((out (assoc-ref outputs "out"))
262 (man1 (string-append out "/share/man/man1")))
263 (install-file "docs/i3blocks.1" man1)
264 #t))))))
265 (native-inputs
266 `(("autoconf" ,autoconf)
267 ("automake" ,automake)
268 ("pkg-config" ,pkg-config)))
269 (home-page "https://github.com/vivien/i3blocks")
270 (synopsis "Minimalist scheduler for status bar scripts")
271 (description "i3blocks executes your command lines and generates a
272status line from their output. The generated line is meant to be displayed by
273the i3 window manager through its i3bar component, as an alternative to
274i3status.")
275 (license license:gpl3+))))
276
3e7cb70a
MB
277(define-public perl-anyevent-i3
278 (package
279 (name "perl-anyevent-i3")
ec5c986e 280 (version "0.17")
3e7cb70a
MB
281 (source (origin
282 (method url-fetch)
283 (uri (string-append "mirror://cpan/authors/id/M/MS/MSTPLBG/"
284 "AnyEvent-I3-" version ".tar.gz"))
285 (sha256
286 (base32
ec5c986e 287 "0qvd9bq16jyy7v3ma82qcnvz9j503bw0mh7h55gkjf7ir62ck0jk"))))
3e7cb70a
MB
288 (build-system perl-build-system)
289 (propagated-inputs
290 `(("perl-anyevent" ,perl-anyevent)
291 ("perl-json-xs" ,perl-json-xs)))
9aba9b12 292 (home-page "https://metacpan.org/release/AnyEvent-I3")
3e7cb70a
MB
293 (synopsis
294 "Communicate with the i3 window manager through perl")
295 (description
296 "This module connects to the i3 window manager using the UNIX socket
297based IPC interface it provides (if enabled in the configuration file).
298You can then subscribe to events or send messages and receive their replies.")
299 ;; Can be used with either license.
2f3108ad 300 (license (list license:gpl3+ license:perl-license))))
3e7cb70a 301
c165591d
IVB
302(define-public python-i3-py
303 (package
304 (name "python-i3-py")
305 (version "0.6.5")
306 (source
307 (origin
308 ;; The latest release is not tagged in Git nor has an entry in PyPi,
309 ;; but there is still a clear commit for it, and it's been the last one
310 ;; for years.
311 (method git-fetch)
312 (uri (git-reference
313 (url "https://github.com/ziberna/i3-py.git")
314 (commit "27f88a616e9ecc340e7d041d3d00782f8a1964c1")))
315 (sha256
316 (base32
317 "1nm719dc2xqlll7vj4c4m7mpjb27lpn3bg3c66gajvnrz2x1nmxs"))
318 (file-name (string-append name "-" version "-checkout"))))
319 (build-system python-build-system)
320 (arguments
321 `(#:tests? #f ; no tests yet
322 #:phases (modify-phases %standard-phases
323 (add-after 'install 'install-doc
324 ;; Copy readme file to documentation directory.
325 (lambda* (#:key outputs #:allow-other-keys)
326 (let ((doc (string-append (assoc-ref outputs "out")
327 "/share/doc/" ,name)))
328 (install-file "README.md" doc)
329 ;; Avoid unspecified return value.
330 #t))))))
331 (propagated-inputs
332 `(("i3-wm" ,i3-wm)))
333 (home-page "https://github.com/ziberna/i3-py")
334 (synopsis "Python interface to the i3 window manager")
335 (description "This package allows you to interact from a Python program
336with the i3 window manager via its IPC socket. It can send commands and other
337kinds of messages to i3, select the affected containers, filter results and
338subscribe to events.")
339 (license license:gpl3+)))
340
341(define-public python2-i3-py
342 (package-with-python2 python-i3-py))
343
37356e0b
IVB
344(define-public quickswitch-i3
345 (let ((commit "ed692b1e8f43b95bd907ced26238ce8ccb2ed28f")
346 (revision "1")) ; Guix package revision
347 (package
348 (name "quickswitch-i3")
349 (version (string-append "2.2-" revision "."
350 (string-take commit 7)))
351 (source
352 (origin
353 ;; The latest commit is a few years old and just a couple commits
354 ;; after the last tagged release, so we use that latest commit
355 ;; instead of the release.
356 (method git-fetch)
357 (uri (git-reference
358 (url "https://github.com/proxypoke/quickswitch-for-i3.git")
359 (commit commit)))
360 (sha256
361 (base32
362 "0447077sama80jcdg5p64zjsvafmz5rbdrirhm1adcdjhkh6iqc5"))
363 (patches (search-patches "quickswitch-fix-dmenu-check.patch"))
364 (file-name (string-append name "-" version "-checkout"))))
365 (build-system python-build-system)
366 (arguments
367 `(#:tests? #f ; no tests yet
368 #:phases (modify-phases %standard-phases
369 (add-after 'install 'install-doc
370 ;; Copy readme file to documentation directory.
371 (lambda* (#:key outputs #:allow-other-keys)
372 (let ((doc (string-append (assoc-ref outputs "out")
373 "/share/doc/" ,name)))
374 (install-file "README.rst" doc)
375 ;; Avoid unspecified return value.
376 #t))))))
377 (inputs
378 `(("python-i3-py" ,python-i3-py)
379 ("dmenu" ,dmenu)))
380 (home-page "https://github.com/proxypoke/quickswitch-for-i3")
381 (synopsis "Quickly change to and locate windows in the i3 window manager")
382 (description
383 "This utility for the i3 window manager allows you to quickly switch to
384and locate windows on all your workspaces, using an interactive dmenu
385prompt.")
386 (license (license:non-copyleft "http://www.wtfpl.net/txt/copying/")))))
387
4b563b34 388(define-public i3lock-color
389 (package
390 (name "i3lock-color")
3dc77d40 391 (version "2.11-c")
4b563b34 392 (source
393 (origin
394 (method url-fetch)
395 (uri (string-append "https://github.com/PandorasFox/i3lock-color/"
396 "archive/" version ".tar.gz"))
397 (file-name (string-append name "-" version ".tar.gz"))
398 (sha256
399 (base32
3dc77d40 400 "0zh7il2y6dmzym3w6r9xii5dma8pjjjlq4dm5iby7m3gvplj4q9p"))))
4b563b34 401 (build-system gnu-build-system)
402 (arguments
189be331 403 `(#:tests? #f)) ;no tests included
4b563b34 404 (inputs
fa2886b7
TGR
405 `(("cairo" ,cairo)
406 ("libev" ,libev)
3dc77d40 407 ("libjpeg" ,libjpeg-turbo)
4b563b34 408 ("libxcb" ,libxcb)
4b563b34 409 ("libxkbcommon" ,libxkbcommon)
fa2886b7
TGR
410 ("linux-pam" ,linux-pam)
411 ("xcb-util" ,xcb-util)
412 ("xcb-util-image" ,xcb-util-image)))
4b563b34 413 (native-inputs
fa2886b7
TGR
414 `(("autoconf" ,autoconf)
415 ("automake" ,automake)
416 ("pkg-config" ,pkg-config)))
4b563b34 417 (home-page "https://github.com/PandorasFox/i3lock-color")
418 (synopsis "Screen locker with color configuration support")
419 (description
420 "i3lock-color is a simpler X11 screen locker derived from i3lock.
421Features include:
422
423@enumerate
424@item forking process, the locked screen is preserved when you suspend to RAM;
425@item specify background color or image to be displayed in the lock screen;
426@item many additional color options.
427@end enumerate")
428 (license license:bsd-3)))
429
b0a2dc72 430(define-public i3lock-fancy
431 (package
432 (name "i3lock-fancy")
433 (version "0.2")
434 (source
435 (origin
436 (method url-fetch)
437 (uri (string-append "https://github.com/meskarune/i3lock-fancy/archive/"
438 version ".tar.gz"))
439 (file-name (string-append name "-" version ".tar.gz"))
440 (sha256
441 (base32
442 "020m7mnfq5cvir7p9v3hkb7cvb4cai33wppxl2zdwscwwjnchc5y"))))
443 (build-system gnu-build-system)
444 (arguments
445 `(#:tests? #f ;No tests included
446 #:phases
447 (modify-phases %standard-phases
448 (replace 'configure
449 (lambda* (#:key inputs outputs #:allow-other-keys)
450 (let* ((out (assoc-ref outputs "out"))
451 (icons (string-append out "/share/i3lock-fancy/icons/"))
452 (wmctrl (string-append (assoc-ref inputs "wmctrl")
453 "/bin/wmctrl"))
454 (mconvert (string-append (assoc-ref inputs "imagemagick")
455 "/bin/convert"))
456 (mimport (string-append (assoc-ref inputs "imagemagick")
457 "/bin/import"))
458 (awk (string-append (assoc-ref inputs "gawk")
459 "/bin/gawk")))
460
461 (substitute* "lock"
462 (("$(which wmctrl)") wmctrl)
463 (("convert") mconvert)
464 (("shot=\\(import") (string-append "shot=\(" mimport))
465 (("awk -F") (string-append awk " -F"))
466 ((" awk") awk)
467 (("\\$scriptpath/icons/") icons))
468 #t)))
469 (delete 'build)
470 (replace 'install
471 (lambda* (#:key inputs outputs #:allow-other-keys)
472 (let* ((out (assoc-ref outputs "out"))
473 (bin (string-append out "/bin"))
474 (icons (string-append out "/share/i3lock-fancy/icons/")))
475
476 (install-file "lock" bin)
477 (rename-file (string-append bin "/lock")
478 (string-append bin "/i3lock-fancy"))
479 (copy-recursively "icons" icons)
480 #t))))))
481 (native-inputs
482 `(("imagemagick" ,imagemagick)
483 ("wmctrl" ,wmctrl)
484 ("gawk" ,gawk)))
485 (home-page "https://github.com/meskarune/i3lock-fancy")
486 (synopsis "Screen locker with screenshot function")
487 (description
488 "@code{i3lock-fancy} is a Bash script that takes a screenshot of
489the desktop, blurs the background and adds a lock icon and text.
490It requires @code{i3lock-color} or @code{i3lock} and can optionally
491be passed any screenshot util like @code{scrot}.
492This screen locker can be used with any window manager or
493desktop environment.")
494 (license license:expat)))
495
6e38c4be
SB
496(define-public xmonad
497 (package
498 (name "xmonad")
c64e832f 499 (version "0.14.2")
6e38c4be
SB
500 (synopsis "Tiling window manager")
501 (source (origin
502 (method url-fetch)
966a543b 503 (uri (string-append "mirror://hackage/package/xmonad/"
ca80b8ba 504 name "-" version ".tar.gz"))
6e38c4be
SB
505 (sha256
506 (base32
c64e832f 507 "0gqyivpw8z1x73p1l1fpyq1wc013a1c07r6xn1a82liijs91b949"))))
6e38c4be
SB
508 (build-system haskell-build-system)
509 (inputs
174b091f 510 `(("ghc-extensible-exceptions" ,ghc-extensible-exceptions)
174b091f 511 ("ghc-quickcheck" ,ghc-quickcheck)
dd821380 512 ("ghc-semigroups" ,ghc-semigroups)
174b091f
MM
513 ("ghc-setlocale" ,ghc-setlocale)
514 ("ghc-utf8-string" ,ghc-utf8-string)
515 ("ghc-x11" ,ghc-x11)))
6e38c4be
SB
516 (arguments
517 `(#:phases
518 (modify-phases %standard-phases
519 (add-after
520 'install 'install-xsession
521 (lambda _
522 (let* ((xsessions (string-append %output "/share/xsessions")))
523 (mkdir-p xsessions)
524 (call-with-output-file
525 (string-append xsessions "/xmonad.desktop")
526 (lambda (port)
527 (format port "~
528 [Desktop Entry]~@
529 Name=~a~@
530 Comment=~a~@
531 Exec=~a/bin/xmonad~@
532 Type=Application~%" ,name ,synopsis %output)))))))))
8c0be00a 533 (home-page "https://xmonad.org")
6e38c4be
SB
534 (description
535 "Xmonad is a tiling window manager for X. Windows are arranged
536automatically to tile the screen without gaps or overlap, maximising screen
537use. All features of the window manager are accessible from the keyboard: a
538mouse is strictly optional. Xmonad is written and extensible in Haskell.
539Custom layout algorithms, and other extensions, may be written by the user in
540config files. Layouts are applied dynamically, and different layouts may be
541used on each workspace. Xinerama is fully supported, allowing windows to be
542tiled on several screens.")
0ede252b 543 (license license:bsd-3)))
78edf44c 544
6e864d00
OP
545(define-public xmobar
546 (package
547 (name "xmobar")
ccd4fd3f 548 (version "0.28")
6e864d00
OP
549 (source (origin
550 (method url-fetch)
551 (uri (string-append "mirror://hackage/package/xmobar/"
552 name "-" version ".tar.gz"))
553 (sha256
554 (base32
ccd4fd3f 555 "1xh87asg8y35srvp7d3gyyy4bkxsw122liihxgzgm8pqv2z3h4zd"))))
6e864d00 556 (build-system haskell-build-system)
800e4fd8
TGR
557 (native-inputs
558 `(("ghc-hspec" ,ghc-hspec)
559 ("hspec-discover" ,hspec-discover)))
6e864d00 560 (inputs
d2ea8064
TGR
561 `(("ghc-hinotify" ,ghc-hinotify)
562 ("ghc-http" ,ghc-http)
563 ("ghc-iwlib" ,ghc-iwlib)
6e864d00 564 ("ghc-parsec" ,ghc-parsec)
d877e0d8 565 ("ghc-parsec-numbers" ,ghc-parsec-numbers)
6e864d00
OP
566 ("ghc-regex-compat" ,ghc-regex-compat)
567 ("ghc-stm" ,ghc-stm)
568 ("ghc-x11-xft" ,ghc-x11-xft)
d2ea8064 569 ("libxpm" ,libxpm)))
6e864d00
OP
570 (arguments
571 `(#:configure-flags
d2ea8064
TGR
572 (list (string-append "--flags="
573 (string-join (list "with_inotify"
574 "with_iwlib"
575 "with_utf8"
576 "with_weather"
577 "with_xft"
578 "with_xpm")
579 " ")))))
6e864d00
OP
580 (home-page "http://xmobar.org")
581 (synopsis "Minimalistic text based status bar")
582 (description
583 "@code{xmobar} is a lightweight, text-based, status bar written in
584Haskell. It was originally designed to be used together with Xmonad, but it
585is also usable with any other window manager. While xmobar is written in
586Haskell, no knowledge of the language is required to install and use it.")
587 (license license:bsd-3)))
588
78edf44c
SB
589(define-public ghc-xmonad-contrib
590 (package
591 (name "ghc-xmonad-contrib")
f780572d 592 (version "0.14")
78edf44c
SB
593 (source
594 (origin
595 (method url-fetch)
966a543b 596 (uri (string-append "mirror://hackage/package/xmonad-contrib/"
78edf44c
SB
597 "xmonad-contrib-" version ".tar.gz"))
598 (sha256
599 (base32
f780572d 600 "1660w3xhbfrlq8b8s1rviq2mcn1vyqpypli4023gqxwry52brk6y"))))
78edf44c
SB
601 (build-system haskell-build-system)
602 (propagated-inputs
f54f0475 603 `(("ghc-old-time" ,ghc-old-time)
78edf44c
SB
604 ("ghc-random" ,ghc-random)
605 ("ghc-utf8-string" ,ghc-utf8-string)
606 ("ghc-extensible-exceptions" ,ghc-extensible-exceptions)
b42b5afd 607 ("ghc-semigroups" ,ghc-semigroups)
78edf44c
SB
608 ("ghc-x11" ,ghc-x11)
609 ("ghc-x11-xft" ,ghc-x11-xft)
610 ("xmonad" ,xmonad)))
8c0be00a 611 (home-page "https://xmonad.org")
78edf44c
SB
612 (synopsis "Third party extensions for xmonad")
613 (description
614 "Third party tiling algorithms, configurations, and scripts to Xmonad, a
615tiling window manager for X.")
0ede252b 616 (license license:bsd-3)))
45e10968
EB
617
618(define-public evilwm
619 (package
620 (name "evilwm")
621 (version "1.1.1")
622 (source
623 (origin
624 (method url-fetch)
625 (uri (string-append "http://www.6809.org.uk/evilwm/evilwm-"
626 version ".tar.gz"))
627 (sha256
628 (base32
c595cd47 629 "0ak0yajzk3v4dg5wmaghv6acf7v02a4iw8qxmq5yw5ard8lrqn3r"))
fc1adab1 630 (patches (search-patches "evilwm-lost-focus-bug.patch"))))
45e10968
EB
631 (build-system gnu-build-system)
632 (inputs
633 `(("libx11" ,libx11)
634 ("libxext" ,libxext)
635 ("libxrandr" ,libxrandr)))
636 (arguments
637 `(#:modules ((srfi srfi-26)
638 (guix build utils)
639 (guix build gnu-build-system))
640 #:make-flags (let ((inputs (map (cut assoc-ref %build-inputs <>)
641 '("libx11" "libxext" "libxrandr")))
642 (join (lambda (proc strs)
643 (string-join (map proc strs) " ")))
644 (dash-I (cut string-append "-I" <> "/include"))
645 (dash-L (cut string-append "-L" <> "/lib")))
646 `("desktopfilesdir=$(prefix)/share/xsessions"
647 ,(string-append "prefix=" (assoc-ref %outputs "out"))
648 ,(string-append "CPPFLAGS=" (join dash-I inputs))
649 ,(string-append "LDFLAGS=" (join dash-L inputs))))
650 #:tests? #f ;no tests
651 #:phases (modify-phases %standard-phases
652 (delete 'configure)))) ;no configure script
653 (home-page "http://www.6809.org.uk/evilwm/")
654 (synopsis "Minimalist window manager for the X Window System")
655 (description
656 "evilwm is a minimalist window manager based on aewm, extended to feature
657many keyboard controls with repositioning and maximize toggles, solid window
658drags, snap-to-border support, and virtual desktops.")
0ede252b
DM
659 (license (license:x11-style "file:///README"))))
660
661(define-public fluxbox
662 (package
663 (name "fluxbox")
664 (version "1.3.7")
665 (synopsis "Small and fast window manager")
666 (source (origin
667 (method url-fetch)
de67e922 668 (uri (string-append "mirror://sourceforge/fluxbox/fluxbox/"
0ede252b
DM
669 version "/fluxbox-" version ".tar.xz"))
670 (sha256
671 (base32
672 "1h1f70y40qd225dqx937vzb4k2cz219agm1zvnjxakn5jkz7b37w"))))
673 (build-system gnu-build-system)
674 (arguments
675 `(#:make-flags '("CPPFLAGS=-U__TIME__") ;ugly, but for reproducibility
676 #:phases
677 (modify-phases %standard-phases
678 (add-after
679 'install 'install-xsession
680 (lambda _
681 (let ((xsessions (string-append %output "/share/xsessions")))
682 (mkdir-p xsessions)
683 (call-with-output-file
684 (string-append xsessions "/fluxbox.desktop")
685 (lambda (port)
686 (format port "~
687 [Desktop Entry]~@
688 Name=~a~@
689 Comment=~a~@
690 Exec=~a/bin/startfluxbox~@
691 Type=Application~%" ,name ,synopsis %output)))))))))
692 (native-inputs
693 `(("pkg-config" ,pkg-config)))
694 (inputs
695 `(("freetype" ,freetype)
696 ("fribidi" ,fribidi)
697 ("imlib2" ,imlib2)
698 ("libx11" ,libx11)
699 ("libxext" ,libxext)
700 ("libxft" ,libxft)
701 ("libxinerama" ,libxinerama)
702 ("libxpm" ,libxpm)
703 ("libxrandr" ,libxrandr)
704 ("libxrender" ,libxrender)))
705 (description "Fluxbox is a window manager. It is light on resources
706and easy to handle yet full of features to make an easy and fast desktop
707experience.")
708 (home-page "http://fluxbox.org/")
709 (license license:expat)))
3d1240aa
CZ
710
711(define-public awesome
712 (package
713 (name "awesome")
db0164b2 714 (version "4.2")
3d1240aa
CZ
715 (source
716 (origin (method url-fetch)
717 (uri (string-append
91426243 718 "https://github.com/awesomeWM/awesome-releases/raw/"
719 "master/awesome-" version ".tar.xz"))
3d1240aa
CZ
720 (sha256
721 (base32
db0164b2 722 "0kwpbls9h1alxcmvxh5g9qb995fds5b2ngcr44w0ibazkyls2pdc"))
3d1240aa
CZ
723 (modules '((guix build utils)
724 (srfi srfi-19)))
6cbee49d
MW
725 (snippet '(begin
726 ;; Remove non-reproducible timestamp and use the date
727 ;; of the source file instead.
728 (substitute* "common/version.c"
729 (("__DATE__ \" \" __TIME__")
730 (date->string
731 (time-utc->date
732 (make-time time-utc 0
733 (stat:mtime (stat "awesome.c"))))
734 "\"~c\"")))
735 #t))
3d1240aa
CZ
736 (patches (search-patches "awesome-reproducible-png.patch"))))
737 (build-system cmake-build-system)
738 (native-inputs `(("asciidoc" ,asciidoc)
739 ("docbook-xsl" ,docbook-xsl)
740 ("doxygen" ,doxygen)
741 ("gperf" ,gperf)
742 ("imagemagick" ,imagemagick)
743 ("libxml2" ,libxml2) ;for XML_CATALOG_FILES
744 ("pkg-config" ,pkg-config)
745 ("xmlto" ,xmlto)))
746 (inputs `(("cairo" ,cairo)
747 ("dbus" ,dbus)
748 ("gdk-pixbuf" ,gdk-pixbuf)
749 ("glib" ,glib)
22037a32 750 ("gobject-introspection" ,gobject-introspection)
3d1240aa
CZ
751 ("imlib2" ,imlib2)
752 ("libev" ,libev)
753 ("libxcb" ,libxcb)
754 ("libxcursor" ,libxcursor)
755 ("libxdg-basedir" ,libxdg-basedir)
91426243 756 ("libxkbcommon" ,libxkbcommon)
22037a32 757 ("lua" ,lua)
c695fb76 758 ("lua-lgi" ,lua-lgi)
3d1240aa
CZ
759 ("pango" ,pango)
760 ("startup-notification" ,startup-notification)
761 ("xcb-util" ,xcb-util)
762 ("xcb-util-cursor" ,xcb-util-cursor)
763 ("xcb-util-image" ,xcb-util-image)
764 ("xcb-util-keysyms" ,xcb-util-keysyms)
765 ("xcb-util-renderutil" ,xcb-util-renderutil)
91426243 766 ("xcb-util-xrm" ,xcb-util-xrm)
3d1240aa
CZ
767 ("xcb-util-wm" ,xcb-util-wm)))
768 (arguments
769 `(;; Let compression happen in our 'compress-documentation' phase so that
770 ;; '--no-name' is used, which removes timestamps from gzip output.
771 #:configure-flags '("-DCOMPRESS_MANPAGES=off")
772
db0164b2 773 ;; Building awesome in its source dir is no longer supported.
774 #:out-of-source? #t
775
22037a32 776 #:phases
777 (modify-phases %standard-phases
778 (add-before 'build 'xmlto-skip-validation
779 (lambda _
780 ;; We can't download the necessary schema, so so skip
781 ;; validation and assume they're valid.
782 (substitute* "../build/CMakeFiles/man.dir/build.make"
783 (("/xmlto")
784 (string-append "/xmlto --skip-validation")))
785 #t))
786 (add-before 'configure 'set-lua-paths
787 (lambda* (#:key inputs #:allow-other-keys)
788 ;; The build process needs to load cairo dynamically.
789 (let* ((cairo (string-append
790 (assoc-ref inputs "cairo") "/lib" ))
791 (lua-lgi (assoc-ref inputs "lua-lgi") ))
792 (setenv "LD_LIBRARY_PATH" cairo )
793 (setenv "LUA_PATH" (string-append lua-lgi
794 "/share/lua/5.2/?.lua"))
795 (setenv "LUA_CPATH" (string-append lua-lgi
796 "/lib/lua/5.2/?.so"))
797 #t)))
798 (replace 'check
799 (lambda _
800 ;; There aren't any tests, so just make sure the binary
801 ;; gets built and can be run successfully.
b5e70d92 802 (invoke "../build/awesome" "-v")))
22037a32 803 (add-after 'install 'wrap
804 (lambda* (#:key inputs outputs #:allow-other-keys)
805 (let* ((awesome (assoc-ref outputs "out"))
806 (cairo (string-append
807 (assoc-ref inputs "cairo") "/lib" ))
808 (lua-lgi (assoc-ref inputs "lua-lgi") ))
809 (wrap-program (string-append awesome "/bin/awesome")
810 `("GI_TYPELIB_PATH" ":" prefix (,(getenv "GI_TYPELIB_PATH")))
811 `("LD_LIBRARY_PATH" suffix (, cairo))
812 `("LUA_PATH" suffix (,(string-append lua-lgi
813 "/share/lua/5.2/?.lua")))
814 `("LUA_CPATH" suffix (,(string-append
815 lua-lgi "/lib/lua/5.2/?.so"))))))))))
3d1240aa
CZ
816 (synopsis "Highly configurable window manager")
817 (description
c4dd0def 818 "Awesome has been designed as a framework window manager. It is fast, small,
819dynamic and extensible using the Lua programming language.")
3d1240aa
CZ
820 (license license:gpl2+)
821 (home-page "https://awesome.naquadah.org/")))
395751c0 822
823(define-public menumaker
824 (package
825 (name "menumaker")
826 (version "0.99.10")
827 (source
828 (origin
829 (method url-fetch)
830 (uri (string-append "mirror://sourceforge/menumaker/"
831 "menumaker-" version ".tar.gz"))
832 (sha256
833 (base32
834 "1mm4cvg3kphkkd8nwrhcg6d9nm5ar7mgc0wf6fxk6zck1l7xn8ky"))))
835 (build-system gnu-build-system)
836 (inputs
837 `(("python" ,python)))
838 (synopsis "Heuristics-driven menu generator")
839 (description
840 "MenuMaker is a menu generation utility for a number of X window
841managers and desktop environments. It is capable of finding lots of
842installed programs and generating a root menu consistent across all
843supported window managers, so one will get (almost) the same menu in
844all of them. Currently supported window managers include:
845
846@enumerate
847@item BlackBox
848@item Deskmenu
849@item FluxBox
850@item IceWM
851@item OpenBox
852@item PekWM
853@item WindowMaker
854@item XFCE
855@end enumerate\n")
856 (home-page "http://menumaker.sourceforge.net/")
857 (license license:bsd-2)))
dbf544f9 858
859(define-public keybinder
860 (package
861 (name "keybinder")
862 (version "0.3.1")
863 (source
864 (origin
865 (method url-fetch)
6d688b6e
TGR
866 (uri (string-append "https://github.com/kupferlauncher/keybinder"
867 "/releases/download/v" version "/keybinder-"
dbf544f9 868 version ".tar.gz"))
869 (file-name (string-append name "-" version ".tar.gz"))
870 (sha256
871 (base32
872 "0h52hj3ay8mfhwvmfxbxlfyq74hifdk8wxgxp7fr4iy6189hg7w7"))))
873 (build-system gnu-build-system)
874 (inputs
875 `(("python-2" ,python-2)
876 ("gtk+-2" ,gtk+-2)))
877 (native-inputs
878 `(("python2-pygtk" ,python2-pygtk)
879 ("gtk-doc" ,gtk-doc)
880 ("pkg-config" ,pkg-config)))
881 (synopsis "Library for registering global keyboard shortcuts")
882 (description
883 "Keybinder is a library for registering global keyboard shortcuts.
884Keybinder works with GTK-based applications using the X Window System.")
6d688b6e 885 (home-page "https://github.com/kupferlauncher/keybinder")
dbf544f9 886 (license license:gpl2+)))
78dfc9e2 887
888(define-public spectrwm
889 (package
890 (name "spectrwm")
f6c8a97a 891 (version "3.2.0")
78dfc9e2 892 (source
893 (origin
894 (method url-fetch)
895 (uri (let ((version-with-underscores
896 (string-join (string-split version #\.) "_")))
897 (string-append "https://github.com/conformal/spectrwm/archive/"
898 "SPECTRWM_" version-with-underscores ".tar.gz")))
899 (file-name (string-append name "-" version ".tar.gz"))
900 (sha256
901 (base32
f6c8a97a 902 "0z7gjmp1x6y8q3dnw6swvbv8x2wd4ykzjvi3ibk2sxhgc910907v"))))
78dfc9e2 903 (build-system gnu-build-system)
904 (arguments
905 `(#:make-flags (let ((pkg-config (lambda (flag)
906 (string-append
907 "$(shell pkg-config " flag " "
908 "xft fontconfig x11 libpng)"))))
909 (list
910 "CC=gcc"
911 (string-append "PREFIX=" %output)
912 (string-append "INCS=-I. " (pkg-config "--cflags"))
913 (string-append "LIBS=" (pkg-config "--libs") " -lm")))
f6c8a97a 914 #:tests? #f ;no test suite
78dfc9e2 915 #:phases
916 (modify-phases %standard-phases
917 (add-before 'build 'change-dir
918 (lambda _
919 (chdir "linux") #t))
920 (add-after 'change-dir 'patch-makefile
921 (lambda _
922 (substitute* "Makefile"
923 (("-g") ""))))
f6c8a97a 924 (delete 'configure)))) ;no 'configure' exists
78dfc9e2 925 (inputs
926 `(("freetype" ,freetype)
927 ("fontconfig" ,fontconfig)
928 ("libx11" ,libx11)
929 ("libxcursor" ,libxcursor)
930 ("libxrandr" ,libxrandr)
931 ("libxtst" ,libxtst)
932 ("libxft" ,libxft)
933 ("xcb-util" ,xcb-util)
934 ("xcb-util-wm" ,xcb-util-wm)
935 ("xcb-util-keysyms" ,xcb-util-keysyms)))
936 (native-inputs
937 `(("libxt" ,libxt)
938 ("pkg-config" ,pkg-config)))
939 (synopsis "Minimalistic automatic tiling window manager")
940 (description
941 "Spectrwm is a small dynamic tiling and reparenting window manager for X11.
942It is inspired by Xmonad and dwm. Its major features include:
943
944@itemize
945@item Navigation anywhere on all screens with either the keyboard or mouse
946@item Customizable status bar
947@item Restartable without losing state
948@item Quick launch menu
949@item Many screen layouts possible with a few simple key strokes
950@item Move/resize floating windows
32008a75
TGR
951@item Extended Window Manager Hints (@dfn{EWMH}) support
952@item Configurable tiling
78dfc9e2 953@item Adjustable tile gap allows for a true one pixel border
954@item Customizable colors and border width
955@end itemize\n")
956 (home-page "https://github.com/conformal/spectrwm")
957 (license license:isc)))
b4cb9308 958
959(define-public cwm
960 (package
961 (name "cwm")
e352a153 962 (version "6.3")
b4cb9308 963 (source
964 (origin
965 (method url-fetch)
966 (uri (string-append "http://chneukirchen.org/releases/cwm-"
967 version ".tar.gz"))
968 (sha256
969 (base32
e352a153 970 "17pdp9cfgh2n3n3905l4rl9qk7b722i8psnarhlc2h98qzx7zmac"))))
b4cb9308 971 (build-system gnu-build-system)
972 (arguments
973 `(#:make-flags (list "CC=gcc"
974 (string-append "PREFIX=" %output))
975 #:tests? #f
976 #:phases
977 (modify-phases %standard-phases
978 (delete 'configure)
979 (add-after 'build 'install-xsession
980 (lambda* (#:key outputs #:allow-other-keys)
981 ;; Add a .desktop file to xsessions.
982 (let* ((output (assoc-ref outputs "out"))
983 (xsessions (string-append output "/share/xsessions")))
984 (mkdir-p xsessions)
985 (with-output-to-file
986 (string-append xsessions "/cwm.desktop")
987 (lambda _
988 (format #t
989 "[Desktop Entry]~@
990 Name=cwm~@
991 Comment=OpenBSD Calm Window Manager fork~@
992 Exec=~a/bin/cwm~@
993 TryExec=~@*~a/bin/cwm~@
994 Icon=~@
995 Type=Application~%"
996 output)))
997 #t))))))
998 (inputs
999 `(("libxft" ,libxft)
1000 ("libxrandr" ,libxrandr)
1001 ("libxinerama" ,libxinerama)))
1002 (native-inputs
1003 `(("pkg-config" ,pkg-config)
1004 ("bison" ,bison)))
1005 (home-page "https://github.com/chneukirchen/cwm")
1006 (synopsis "OpenBSD fork of the calmwm window manager")
1007 (description "Cwm is a stacking window manager for X11. It is an OpenBSD
1008project derived from the original Calm Window Manager.")
1009 (license license:isc)))
70024cfa
PAR
1010
1011(define-public nitrogen
1012 (package
1013 (name "nitrogen")
1014 (version "1.6.1")
1015 (source (origin
1016 (method url-fetch)
1017 (uri (string-append "http://github.com/l3ib/nitrogen/"
1018 "releases/download/" version "/"
1019 name "-" version ".tar.gz"))
1020 (sha256
1021 (base32
1022 "0zc3fl1mbhq0iyndy4ysmy8vv5c7xwf54rbgamzfhfvsgdq160pl"))))
1023 (build-system gnu-build-system)
1024 (inputs
1025 `(("gtk+" ,gtk+-2)
1026 ("gtkmm" ,gtkmm-2)
1027 ("glib" ,glib)
1028 ("glibmm" ,glibmm)))
1029 (native-inputs
de99ba7e 1030 `(("pkg-config" ,pkg-config)))
70024cfa
PAR
1031 (arguments
1032 `(#:configure-flags (list
1033 (string-append "--prefix=" %output)
1034 "CXXFLAGS=-std=c++11")))
1035 (home-page "http://projects.l3ib.org/nitrogen/")
1036 (synopsis "Background browser and setter for X windows")
1037 (description
1038 "This package is a background browser and setter for X windows. It's
1039features are:
1040
1041@itemize
1042@item Multihead and Xinerama aware
1043@item Recall mode to used via startup script
1044@item Uses freedesktop.org standard for thumbnails
1045@item Can set GNOME background
1046@item Command lie set modes for script use
1047@item Inotify monitoring of browse directory
1048@item Lazy loading of thumbnails - conserves memory
1049@item \"Automatic\" set mode - determines best mode to set an image based on
1050its size
1051@item Display preview images in a tiled icon layout
1052@end itemize")
1053 (license license:gpl2+)))
d8dcbcc9
MP
1054
1055(define-public polybar
1056 (package
1057 (name "polybar")
1058 (version "3.3.0")
1059 (source
1060 (origin
1061 (method url-fetch)
1062 (uri (string-append "https://github.com/jaagr/polybar/releases/"
1063 "download/" version "/polybar.tar"))
1064 (sha256
1065 (base32 "0sjh3xmf11g09spi88zj7xsc3a3vv78kixab6n5i7436py7xwzb4"))
1066 (file-name (string-append name "-" version ".tar"))))
1067 (build-system cmake-build-system)
1068 (arguments
1069 ;; Test is disabled because it requires downloading googletest from the
1070 ;; Internet.
1071 '(#:tests? #f))
1072 (inputs
1073 `(("alsa-lib" ,alsa-lib)
1074 ("cairo" ,cairo)
1075 ("i3-wm" ,i3-wm)
1076 ("libmpdclient" ,libmpdclient)
1077 ("libnl" ,libnl)
1078 ("libxcb" ,libxcb)
1079 ("pulseaudio" ,pulseaudio)
1080 ("xcb-proto" ,xcb-proto)
1081 ("xcb-util" ,xcb-util)
1082 ("xcb-util-cursor" ,xcb-util-cursor)
1083 ("xcb-util-image" ,xcb-util-image)
1084 ("xcb-util-wm" ,xcb-util-wm)
1085 ("xcb-util-xrm" ,xcb-util-xrm)))
1086 (native-inputs
1087 `(("pkg-config" ,pkg-config)
1088 ("python-2" ,python-2) ; lib/xpp depends on python 2
1089 ("python" ,python))) ; xcb-proto depends on python 3
1090 (home-page "https://polybar.github.io/")
1091 (synopsis "Fast and easy-to-use status bar")
1092 (description "Polybar aims to help users build beautiful and highly
1093customizable status bars for their desktop environment. It has built-in
1094functionality to display information about the most commonly used services.")
1095 (license license:expat)))