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