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