gnu: emacs-svg-icon: Fix grammar.
[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>
a8360892 8;;; Copyright © 2016, 2019, 2020 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>
9593caff 12;;; Copyright © 2016, 2017, 2018, 2020 Nikita <nikita@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>
f5fb52f1 16;;; Copyright © 2017, 2019, 2020 Marius Bakke <marius@gnu.org>
69b91b80 17;;; Copyright © 2017, 2020, 2021 Oleg Pykhalov <go.wigust@gmail.com>
9ec11a56 18;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
70024cfa 19;;; Copyright © 2018 Pierre-Antoine Rouby <contact@parouby.fr>
e23b6a68 20;;; Copyright © 2018, 2019 Meiyo Peng <meiyo@riseup.net>
eea969cf 21;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
4ec42524 22;;; Copyright © 2019 Timothy Sample <samplet@ngyro.com>
7a1d6a77 23;;; Copyright © 2019 Gábor Boskovits <boskovits@gmail.com>
1d25447e 24;;; Copyright © 2019 Kyle Andrews <kyle.c.andrews@gmail.com>
8c765a3b 25;;; Copyright © 2019 Ingo Ruhnke <grumbel@gmail.com>
d5329de9 26;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
b066ad89 27;;; Copyright © 2019 John Soo <jsoo1@asu.edu>
88f06fd0
PN
28;;; Copyright © 2018, 2019 Pierre Langlois <pierre.langlois@gmx.com>
29;;; Copyright © 2016, 2017 Andy Patterson <ajpatter@uwaterloo.ca>
59198ba1 30;;; Copyright © 2019 Evan Straw <evan.straw99@gmail.com>
4b3ff362 31;;; Copyright © 2019 Brett Gilio <brettg@gnu.org>
d4145638 32;;; Copyright © 2019 Noodles! <nnoodle@chiru.no>
d4842a7c 33;;; Copyright © 2019, 2020 Alexandru-Sergiu Marton <brown121407@member.fsf.org>
5e753287 34;;; Copyright © 2020, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
47560aa2 35;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
138896e1 36;;; Copyright © 2020 Boris A. Dekshteyn <harlequin78@gmail.com>
fd65311c 37;;; Copyright © 2020 Marcin Karpezo <sirmacik@wioo.waw.pl>
9c814c33 38;;; Copyright © 2020 EuAndreh <eu@euandre.org>
48b00a4c 39;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
dfb85d1e 40;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net>
8e2aad26 41;;; Copyright © 2020 B. Wilson <elaexuotee@wilsonb.com>
77ee8af5 42;;; Copyright © 2020 Niklas Eklund <niklas.eklund@posteo.net>
f49746c3 43;;; Copyright © 2020 Robert Smith <robertsmith@posteo.net>
c5f5b356 44;;; Copyright © 2021 Zheng Junjie <873216071@qq.com>
77ee8af5 45;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com>
966e61fb 46;;; Copyright © 2021 qblade <qblade@protonmail.com>
96026bdb 47;;; Copyright © 2021 lasnesne <lasnesne@lagunposprasihopre.org>
bda2ded6
ED
48;;;
49;;; This file is part of GNU Guix.
50;;;
51;;; GNU Guix is free software; you can redistribute it and/or modify it
52;;; under the terms of the GNU General Public License as published by
53;;; the Free Software Foundation; either version 3 of the License, or (at
54;;; your option) any later version.
55;;;
56;;; GNU Guix is distributed in the hope that it will be useful, but
57;;; WITHOUT ANY WARRANTY; without even the implied warranty of
58;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
59;;; GNU General Public License for more details.
60;;;
61;;; You should have received a copy of the GNU General Public License
62;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
63
64(define-module (gnu packages wm)
0ede252b 65 #:use-module ((guix licenses) #:prefix license:)
bda2ded6 66 #:use-module (guix packages)
40cad6b9
EF
67 #:use-module (guix download)
68 #:use-module (guix git-download)
88f06fd0 69 #:use-module (guix build-system asdf)
3d1240aa 70 #:use-module (guix build-system cmake)
bda2ded6 71 #:use-module (guix build-system gnu)
6e38c4be 72 #:use-module (guix build-system haskell)
eea969cf 73 #:use-module (guix build-system meson)
3e7cb70a 74 #:use-module (guix build-system perl)
c165591d 75 #:use-module (guix build-system python)
9a12243c 76 #:use-module (guix build-system trivial)
88f06fd0 77 #:use-module (guix utils)
40cad6b9 78 #:use-module (gnu packages)
9a12243c 79 #:use-module (gnu packages bash)
4b563b34 80 #:use-module (gnu packages autotools)
bda2ded6 81 #:use-module (gnu packages base)
40cad6b9 82 #:use-module (gnu packages bison)
f5fb52f1 83 #:use-module (gnu packages build-tools) ;for meson-0.55
5e78a87b 84 #:use-module (gnu packages calendar)
bda2ded6 85 #:use-module (gnu packages docbook)
40cad6b9 86 #:use-module (gnu packages documentation)
0ede252b 87 #:use-module (gnu packages fontutils)
3d1240aa 88 #:use-module (gnu packages freedesktop)
40cad6b9
EF
89 #:use-module (gnu packages fribidi)
90 #:use-module (gnu packages gawk)
80817888 91 #:use-module (gnu packages gcc)
40cad6b9 92 #:use-module (gnu packages gl)
3d1240aa
CZ
93 #:use-module (gnu packages glib)
94 #:use-module (gnu packages gperf)
40cad6b9
EF
95 #:use-module (gnu packages gtk)
96 #:use-module (gnu packages haskell-check)
97 #:use-module (gnu packages haskell-web)
98 #:use-module (gnu packages haskell-xyz)
99 #:use-module (gnu packages image)
3d1240aa 100 #:use-module (gnu packages imagemagick)
40cad6b9 101 #:use-module (gnu packages libevent)
4b563b34 102 #:use-module (gnu packages linux)
88f06fd0 103 #:use-module (gnu packages lisp-xyz)
40cad6b9
EF
104 #:use-module (gnu packages logging)
105 #:use-module (gnu packages lua)
106 #:use-module (gnu packages m4)
2ff844f0 107 #:use-module (gnu packages man)
40cad6b9
EF
108 #:use-module (gnu packages maths)
109 #:use-module (gnu packages mpd)
110 #:use-module (gnu packages pcre)
111 #:use-module (gnu packages perl)
112 #:use-module (gnu packages pkg-config)
7a1d6a77 113 #:use-module (gnu packages pretty-print)
40cad6b9
EF
114 #:use-module (gnu packages pulseaudio)
115 #:use-module (gnu packages python)
9a12243c 116 #:use-module (gnu packages readline)
7a1d6a77 117 #:use-module (gnu packages serialization)
47560aa2 118 #:use-module (gnu packages sphinx)
40cad6b9 119 #:use-module (gnu packages suckless)
88f06fd0 120 #:use-module (gnu packages texinfo)
40cad6b9 121 #:use-module (gnu packages textutils)
40cad6b9
EF
122 #:use-module (gnu packages video)
123 #:use-module (gnu packages web)
124 #:use-module (gnu packages xdisorg)
125 #:use-module (gnu packages xml)
126 #:use-module (gnu packages xorg))
bda2ded6 127
1268e52d 128(define-public bspwm
129 (package
130 (name "bspwm")
336b6d3c 131 (version "0.9.10")
1268e52d 132 (source
133 (origin
782b1224
TGR
134 (method git-fetch)
135 (uri (git-reference
b0e7b699 136 (url "https://github.com/baskerville/bspwm")
782b1224
TGR
137 (commit version)))
138 (file-name (git-file-name name version))
1268e52d 139 (sha256
336b6d3c 140 (base32 "0qlv7b4c2mmjfd65y100d11x8iqyg5f6lfiws3cgmpjidhdygnxc"))))
1268e52d 141 (build-system gnu-build-system)
142 (inputs
143 `(("libxcb" ,libxcb)
144 ("libxinerama" ,libxinerama)
145 ("sxhkd" ,sxhkd)
146 ("xcb-util" ,xcb-util)
147 ("xcb-util-keysyms" ,xcb-util-keysyms)
148 ("xcb-util-wm" ,xcb-util-wm)))
149 (arguments
aa0551c2
TGR
150 '(#:phases
151 (modify-phases %standard-phases
152 (delete 'configure)) ; no configure script
153 #:tests? #f ; no check target
154 #:make-flags
155 (list "CC=gcc"
156 (string-append "PREFIX=" %output))))
1268e52d 157 (home-page "https://github.com/baskerville/bspwm")
158 (synopsis "Tiling window manager based on binary space partitioning")
159 (description "bspwm is a tiling window manager that represents windows as
160the leaves of a full binary tree.")
0ede252b 161 (license license:bsd-2)))
1268e52d 162
1d25447e
KA
163(define-public herbstluftwm
164 (package
165 (name "herbstluftwm")
e687bbf4 166 (version "0.9.2")
1d25447e
KA
167 (source
168 (origin
169 (method url-fetch)
170 (uri (string-append "https://herbstluftwm.org/tarballs/herbstluftwm-"
171 version ".tar.gz"))
172 (sha256
e687bbf4 173 (base32 "0avfhr68f6fjnafjdcyxcx7dkg38f2nadmhpj971qyqzfq2f6i38"))
1d25447e 174 (file-name (string-append "herbstluftwm-" version ".tar.gz"))))
138896e1 175 (build-system cmake-build-system)
1d25447e
KA
176 (inputs
177 `(("dzen" ,dzen)
178 ("dmenu" ,dmenu)
179 ("glib" ,glib)
180 ("glibmm" ,glibmm)
181 ("xterm" ,xterm)
182 ("xsetroot" ,xsetroot)
183 ("libx11" ,libx11)
184 ("libxext" ,libxext)
138896e1 185 ("libxinerama" ,libxinerama)
e687bbf4
BD
186 ("libxrandr" ,libxrandr)
187 ("libxft" ,libxft)))
1d25447e 188 (native-inputs
138896e1 189 `(("asciidoc" ,asciidoc)
e687bbf4
BD
190 ("pkg-config" ,pkg-config)
191 ("python" ,python)))
1d25447e 192 (arguments
138896e1
BD
193 '(#:tests? #f
194 #:configure-flags
195 (let ((out (assoc-ref %outputs "out")))
196 (list "-DCC=gcc"
197 (string-append "-DCMAKE_INSTALL_SYSCONF_PREFIX=" out "/etc")
198 (string-append "-DBASHCOMPLETIONDIR=" out "/etc/bash_completion.d")))
199 #:phases
1d25447e 200 (modify-phases %standard-phases
1d25447e
KA
201 (add-after 'install 'install-xsession
202 (lambda* (#:key outputs #:allow-other-keys)
203 (let* ((out (assoc-ref outputs "out"))
204 (xsessions (string-append out "/share/xsessions")))
205 (mkdir-p xsessions)
206 (call-with-output-file
207 (string-append xsessions "/herbstluftwm.desktop")
208 (lambda (port)
209 (format port "~
210 [Desktop Entry]~@
211 Name=herbstluftwm~@
212 Comment=Manual tiling window manager~@
213 Exec=~a/bin/herbstluftwm~@
214 Type=XSession~%" out)))
138896e1 215 #t))))))
1d25447e
KA
216 (synopsis "Tiling window manager for X11")
217 (description "herbstluftwm is a manual tiling window manager for X11 using
218Xlib and GLib. Its main features are:
219
220@itemize
221@item
222The layout is based on splitting frames into subframes which can be split
223again or can be filled with windows (similar to i3 or musca).
224
225@item
226Tags (or workspaces or virtual desktops or …) can be added/removed at runtime.
227Each tag contains an own layout.
228
229@item
230Exactly one tag is viewed on each monitor. The tags are monitor independent
231(similar to Xmonad).
232
233@item
234It is configured at runtime via IPC calls from @command{herbstclient}. So the
235configuration file is just a script which is run on startup (similar to wmii
236or musca).
237
238@end itemize")
239 (home-page "https://herbstluftwm.org")
240 (license license:bsd-2)))
241
63b1bdbc
ED
242(define-public i3status
243 (package
244 (name "i3status")
cb96d239 245 (version "2.13")
63b1bdbc
ED
246 (source (origin
247 (method url-fetch)
fdad1f3c 248 (uri (string-append "https://i3wm.org/i3status/i3status-"
63b1bdbc
ED
249 version ".tar.bz2"))
250 (sha256
251 (base32
cb96d239 252 "0rhlzb96mw64z2jnhwz9nibc7pxg549626lz5642xxk5hpzwk2ff"))))
63b1bdbc
ED
253 (build-system gnu-build-system)
254 (arguments
cb96d239
MB
255 `(;; XXX: Do an "out of source" build to work around
256 ;; <https://github.com/i3/i3status/issues/339>.
257 #:out-of-source? #t
63b1bdbc
ED
258 #:tests? #f)) ; no test suite
259 (inputs
260 `(("openlibm" ,openlibm)
261 ("libconfuse" ,libconfuse)
262 ("libyajl" ,libyajl)
263 ("alsa-lib" ,alsa-lib)
766a22fb
AM
264 ("pulseaudio" ,pulseaudio)
265 ("libnl" ,libnl)
63b1bdbc
ED
266 ("libcap" ,libcap)
267 ("asciidoc" ,asciidoc)))
766a22fb 268 (native-inputs
cb96d239
MB
269 `(("pkg-config" ,pkg-config)
270 ("docbook-xsl" ,docbook-xsl)
271 ("libxml2" ,libxml2) ;for XML_CATALOG_FILES
272 ("xmlto" ,xmlto)))
fdad1f3c 273 (home-page "https://i3wm.org/i3status/")
63b1bdbc
ED
274 (synopsis "Status bar for i3bar, dzen2, xmobar or similar programs")
275 (description "i3status is a small program for generating a status bar for
276i3bar, dzen2, xmobar or similar programs. It is designed to be very efficient
277by issuing a very small number of system calls, as one generally wants to
278update such a status line every second. This ensures that even under high
279load, your status bar is updated correctly. Also, it saves a bit of energy by
280not hogging your CPU as much as spawning the corresponding amount of shell
281commands would.")
0ede252b 282 (license license:bsd-3)))
63b1bdbc 283
bda2ded6
ED
284(define-public i3-wm
285 (package
286 (name "i3-wm")
1434f2b0 287 (version "4.18.3")
bda2ded6
ED
288 (source (origin
289 (method url-fetch)
8658d403 290 (uri (string-append "https://i3wm.org/downloads/i3-"
bda2ded6
ED
291 version ".tar.bz2"))
292 (sha256
293 (base32
1434f2b0 294 "03dijnwv2n8ak9jq59fhq0rc80m5wjc9d54fslqaivnnz81pkbjk"))))
bda2ded6
ED
295 (build-system gnu-build-system)
296 (arguments
ebd2ae18 297 `(#:configure-flags
4bd391f5
LF
298 ;; The build system tries to build in a separate directory, but that
299 ;; seems to be unnecessary.
ebd2ae18
TGR
300 (list "--disable-builddir")
301
302 ;; The test suite requires the unpackaged Xephyr X server.
aa7cdc57
TS
303 #:tests? #f
304 #:phases
305 (modify-phases %standard-phases
306 (add-after 'install 'patch-session-file
307 (lambda* (#:key outputs #:allow-other-keys)
308 (let* ((out (assoc-ref outputs "out"))
309 (i3 (string-append out "/bin/i3"))
310 (i3-with-shmlog (string-append out "/bin/i3-with-shmlog")))
311 (substitute* (string-append out "/share/xsessions/i3.desktop")
312 (("Exec=i3") (string-append "Exec=" i3)))
313 (substitute* (string-append out "/share/xsessions/i3-with-shmlog.desktop")
314 (("Exec=i3-with-shmlog") (string-append "Exec=" i3-with-shmlog)))
315 #t))))))
bda2ded6
ED
316 (inputs
317 `(("libxcb" ,libxcb)
318 ("xcb-util" ,xcb-util)
319 ("xcb-util-cursor" ,xcb-util-cursor)
320 ("xcb-util-keysyms" ,xcb-util-keysyms)
321 ("xcb-util-wm" ,xcb-util-wm)
4bd391f5 322 ("xcb-util-xrm" ,xcb-util-xrm)
bda2ded6
ED
323 ("libxkbcommon" ,libxkbcommon)
324 ("libev" ,libev)
325 ("libyajl" ,libyajl)
bda2ded6
ED
326 ("xmlto" ,xmlto)
327 ("perl-pod-simple" ,perl-pod-simple)
bda2ded6
ED
328 ("libx11" ,libx11)
329 ("pcre" ,pcre)
330 ("startup-notification" ,startup-notification)
331 ("pango" ,pango)
332 ("cairo" ,cairo)))
333 (native-inputs
334 `(("which" ,which)
335 ("perl" ,perl)
4bd391f5 336 ("pkg-config" ,pkg-config)
d5ac66a2 337 ("asciidoc-py3" ,asciidoc-py3)
4bd391f5 338 ;; For building the documentation.
4b0e6367 339 ("libxml2" ,libxml2)
4bd391f5 340 ("docbook-xsl" ,docbook-xsl)))
8658d403 341 (home-page "https://i3wm.org/")
71a5da8e
TGR
342 (synopsis "Tiling window manager")
343 (description "i3 is a tiling X11 window manager that dynamically manages
344tiled, stacked, and tabbed window layouts.
345
346i3 primarily targets advanced users. Windows are managed manually and organised
347inside containers, which can be split vertically or horizontally, and optionally
348resized.
349
350i3 uses a plain-text configuration file, and can be extended and controlled from
351many programming languages.")
0ede252b 352 (license license:bsd-3)))
6e38c4be 353
88c94080
ASM
354(define-public i3-gaps
355 (package (inherit i3-wm)
356 (name "i3-gaps")
831365c6 357 (version "4.18.3")
88c94080
ASM
358 (source (origin
359 (method url-fetch)
360 (uri (string-append
361 "https://github.com/Airblader/i3/releases/download/"
362 version "/i3-" version ".tar.bz2"))
363 (sha256
364 (base32
831365c6 365 "1hcakwyz78lgp8mhqv7pw86jlb3m415pfql1q19rkijnhm3fn3ci"))))
88c94080
ASM
366 (home-page "https://github.com/Airblader/i3")
367 (synopsis "Tiling window manager with gaps")
368 (description "i3-gaps is a fork of i3wm, a tiling window manager
369for X11. It is kept up to date with upstream, adding a few additional
370features such as gaps between windows.
371
372i3 is a tiling X11 window manager that dynamically manages tiled, stacked,
373and tabbed window layouts.
374
375i3 primarily targets advanced users. Windows are managed manually and
376organised inside containers, which can be split vertically or horizontally,
377and optionally resized.
378
379i3 uses a plain-text configuration file, and can be extended and controlled
380from many programming languages.")
381 (license license:bsd-3)))
382
b6afc350
MB
383(define-public i3lock
384 (package
385 (name "i3lock")
386 (version "2.11.1")
387 (source (origin
388 (method url-fetch)
389 (uri (string-append "https://i3wm.org/i3lock/i3lock-"
390 version ".tar.bz2"))
391 (sha256
392 (base32
393 "015dn534m7cxjvqdncpvaq9p8b2r4w5hp1yanbdy2abmhbcc7a7j"))))
394 (build-system gnu-build-system)
395 (native-inputs
396 `(("pkg-config" ,pkg-config)))
397 (inputs
398 `(("cairo" ,cairo)
399 ("libev" ,libev)
400 ("linux-pam" ,linux-pam)
401 ("libxcb" ,libxcb)
402 ("libxkbcommon" ,libxkbcommon)
403 ("xcb-util" ,xcb-util)
404 ("xcb-util-image" ,xcb-util-image)
405 ("xcb-util-xrm" ,xcb-util-xrm)))
406 (home-page "https://i3wm.org/i3lock/")
407 (synopsis "Lightweight screen locker")
408 (description
409 "i3lock is a simple X11 screen locker developed alongside the i3 project.
410Despite the name it should work with any X11 window manager.")
411 (license license:bsd-3)))
412
bc83b2e2 413(define-public i3blocks
97e036ca
TGR
414 (package
415 (name "i3blocks")
416 (version "1.5")
417 (source (origin
418 (method git-fetch)
419 (uri (git-reference
b0e7b699 420 (url "https://github.com/vivien/i3blocks")
97e036ca
TGR
421 (commit version)))
422 (sha256
423 (base32
424 "0v8mwnm8qzpv6xnqvrk43s4b9iyld4naqzbaxk4ldq1qkhai0wsv"))
425 (file-name (git-file-name name version))))
426 (build-system gnu-build-system)
427 (native-inputs
428 `(("autoconf" ,autoconf)
429 ("automake" ,automake)
430 ("pkg-config" ,pkg-config)))
431 (home-page "https://github.com/vivien/i3blocks")
432 (synopsis "Minimalist scheduler for status bar scripts")
433 (description "i3blocks executes your command lines and generates a
bc83b2e2
MP
434status line from their output. The generated line is meant to be displayed by
435the i3 window manager through its i3bar component, as an alternative to
436i3status.")
97e036ca 437 (license license:gpl3+)))
bc83b2e2 438
3e7cb70a
MB
439(define-public perl-anyevent-i3
440 (package
441 (name "perl-anyevent-i3")
ec5c986e 442 (version "0.17")
3e7cb70a
MB
443 (source (origin
444 (method url-fetch)
445 (uri (string-append "mirror://cpan/authors/id/M/MS/MSTPLBG/"
446 "AnyEvent-I3-" version ".tar.gz"))
447 (sha256
448 (base32
ec5c986e 449 "0qvd9bq16jyy7v3ma82qcnvz9j503bw0mh7h55gkjf7ir62ck0jk"))))
3e7cb70a
MB
450 (build-system perl-build-system)
451 (propagated-inputs
452 `(("perl-anyevent" ,perl-anyevent)
453 ("perl-json-xs" ,perl-json-xs)))
9aba9b12 454 (home-page "https://metacpan.org/release/AnyEvent-I3")
3e7cb70a
MB
455 (synopsis
456 "Communicate with the i3 window manager through perl")
457 (description
458 "This module connects to the i3 window manager using the UNIX socket
459based IPC interface it provides (if enabled in the configuration file).
460You can then subscribe to events or send messages and receive their replies.")
461 ;; Can be used with either license.
2f3108ad 462 (license (list license:gpl3+ license:perl-license))))
3e7cb70a 463
c165591d
IVB
464(define-public python-i3-py
465 (package
466 (name "python-i3-py")
467 (version "0.6.5")
468 (source
469 (origin
470 ;; The latest release is not tagged in Git nor has an entry in PyPi,
471 ;; but there is still a clear commit for it, and it's been the last one
472 ;; for years.
473 (method git-fetch)
474 (uri (git-reference
b0e7b699 475 (url "https://github.com/ziberna/i3-py")
c165591d
IVB
476 (commit "27f88a616e9ecc340e7d041d3d00782f8a1964c1")))
477 (sha256
478 (base32
479 "1nm719dc2xqlll7vj4c4m7mpjb27lpn3bg3c66gajvnrz2x1nmxs"))
480 (file-name (string-append name "-" version "-checkout"))))
481 (build-system python-build-system)
482 (arguments
483 `(#:tests? #f ; no tests yet
484 #:phases (modify-phases %standard-phases
485 (add-after 'install 'install-doc
486 ;; Copy readme file to documentation directory.
487 (lambda* (#:key outputs #:allow-other-keys)
488 (let ((doc (string-append (assoc-ref outputs "out")
489 "/share/doc/" ,name)))
490 (install-file "README.md" doc)
491 ;; Avoid unspecified return value.
492 #t))))))
493 (propagated-inputs
494 `(("i3-wm" ,i3-wm)))
495 (home-page "https://github.com/ziberna/i3-py")
496 (synopsis "Python interface to the i3 window manager")
497 (description "This package allows you to interact from a Python program
498with the i3 window manager via its IPC socket. It can send commands and other
499kinds of messages to i3, select the affected containers, filter results and
500subscribe to events.")
501 (license license:gpl3+)))
502
503(define-public python2-i3-py
504 (package-with-python2 python-i3-py))
505
37356e0b
IVB
506(define-public quickswitch-i3
507 (let ((commit "ed692b1e8f43b95bd907ced26238ce8ccb2ed28f")
508 (revision "1")) ; Guix package revision
509 (package
510 (name "quickswitch-i3")
511 (version (string-append "2.2-" revision "."
512 (string-take commit 7)))
513 (source
514 (origin
515 ;; The latest commit is a few years old and just a couple commits
516 ;; after the last tagged release, so we use that latest commit
517 ;; instead of the release.
518 (method git-fetch)
519 (uri (git-reference
b0e7b699 520 (url "https://github.com/proxypoke/quickswitch-for-i3")
37356e0b
IVB
521 (commit commit)))
522 (sha256
523 (base32
524 "0447077sama80jcdg5p64zjsvafmz5rbdrirhm1adcdjhkh6iqc5"))
525 (patches (search-patches "quickswitch-fix-dmenu-check.patch"))
526 (file-name (string-append name "-" version "-checkout"))))
527 (build-system python-build-system)
528 (arguments
529 `(#:tests? #f ; no tests yet
530 #:phases (modify-phases %standard-phases
531 (add-after 'install 'install-doc
532 ;; Copy readme file to documentation directory.
533 (lambda* (#:key outputs #:allow-other-keys)
534 (let ((doc (string-append (assoc-ref outputs "out")
535 "/share/doc/" ,name)))
536 (install-file "README.rst" doc)
537 ;; Avoid unspecified return value.
538 #t))))))
539 (inputs
540 `(("python-i3-py" ,python-i3-py)
541 ("dmenu" ,dmenu)))
542 (home-page "https://github.com/proxypoke/quickswitch-for-i3")
543 (synopsis "Quickly change to and locate windows in the i3 window manager")
544 (description
545 "This utility for the i3 window manager allows you to quickly switch to
546and locate windows on all your workspaces, using an interactive dmenu
547prompt.")
5d6bab9e 548 (license license:wtfpl2))))
37356e0b 549
4b563b34 550(define-public i3lock-color
551 (package
552 (name "i3lock-color")
7969751f 553 (version "2.12.c")
4b563b34 554 (source
555 (origin
f45cc966
TGR
556 (method git-fetch)
557 (uri (git-reference
b0e7b699 558 (url "https://github.com/PandorasFox/i3lock-color")
f45cc966
TGR
559 (commit version)))
560 (file-name (git-file-name name version))
4b563b34 561 (sha256
7969751f 562 (base32 "08fhnchf187b73h52xgzb86g6byzxz085zs9galsvl687g5zxk34"))))
4b563b34 563 (build-system gnu-build-system)
564 (arguments
f45cc966 565 `(#:tests? #f)) ; no tests included
4b563b34 566 (inputs
fa2886b7
TGR
567 `(("cairo" ,cairo)
568 ("libev" ,libev)
3dc77d40 569 ("libjpeg" ,libjpeg-turbo)
4b563b34 570 ("libxcb" ,libxcb)
4b563b34 571 ("libxkbcommon" ,libxkbcommon)
fa2886b7
TGR
572 ("linux-pam" ,linux-pam)
573 ("xcb-util" ,xcb-util)
7969751f
TGR
574 ("xcb-util-image" ,xcb-util-image)
575 ("xcb-util-xrm" ,xcb-util-xrm)))
4b563b34 576 (native-inputs
fa2886b7
TGR
577 `(("autoconf" ,autoconf)
578 ("automake" ,automake)
579 ("pkg-config" ,pkg-config)))
4b563b34 580 (home-page "https://github.com/PandorasFox/i3lock-color")
581 (synopsis "Screen locker with color configuration support")
582 (description
583 "i3lock-color is a simpler X11 screen locker derived from i3lock.
584Features include:
585
586@enumerate
587@item forking process, the locked screen is preserved when you suspend to RAM;
588@item specify background color or image to be displayed in the lock screen;
589@item many additional color options.
590@end enumerate")
591 (license license:bsd-3)))
592
b0a2dc72 593(define-public i3lock-fancy
594 (package
595 (name "i3lock-fancy")
596 (version "0.2")
597 (source
598 (origin
a48db08a
TGR
599 (method git-fetch)
600 (uri (git-reference
b0e7b699 601 (url "https://github.com/meskarune/i3lock-fancy")
a48db08a
TGR
602 (commit version)))
603 (file-name (git-file-name name version))
b0a2dc72 604 (sha256
a48db08a 605 (base32 "11g2kkim33ra38d1m897sq1ifajw17iyw9mr7sg1q8i2ibl4lfsi"))))
b0a2dc72 606 (build-system gnu-build-system)
607 (arguments
a48db08a 608 `(#:tests? #f ; no tests included
b0a2dc72 609 #:phases
610 (modify-phases %standard-phases
611 (replace 'configure
612 (lambda* (#:key inputs outputs #:allow-other-keys)
613 (let* ((out (assoc-ref outputs "out"))
614 (icons (string-append out "/share/i3lock-fancy/icons/"))
615 (wmctrl (string-append (assoc-ref inputs "wmctrl")
616 "/bin/wmctrl"))
617 (mconvert (string-append (assoc-ref inputs "imagemagick")
618 "/bin/convert"))
619 (mimport (string-append (assoc-ref inputs "imagemagick")
620 "/bin/import"))
621 (awk (string-append (assoc-ref inputs "gawk")
622 "/bin/gawk")))
623
624 (substitute* "lock"
184598a4 625 (("\\$\\(command -V wmctrl\\)") wmctrl)
b0a2dc72 626 (("convert") mconvert)
627 (("shot=\\(import") (string-append "shot=\(" mimport))
628 (("awk -F") (string-append awk " -F"))
629 ((" awk") awk)
630 (("\\$scriptpath/icons/") icons))
631 #t)))
632 (delete 'build)
633 (replace 'install
634 (lambda* (#:key inputs outputs #:allow-other-keys)
635 (let* ((out (assoc-ref outputs "out"))
636 (bin (string-append out "/bin"))
637 (icons (string-append out "/share/i3lock-fancy/icons/")))
638
639 (install-file "lock" bin)
640 (rename-file (string-append bin "/lock")
641 (string-append bin "/i3lock-fancy"))
642 (copy-recursively "icons" icons)
643 #t))))))
1aa765fd 644 (inputs
b0a2dc72 645 `(("imagemagick" ,imagemagick)
646 ("wmctrl" ,wmctrl)
647 ("gawk" ,gawk)))
648 (home-page "https://github.com/meskarune/i3lock-fancy")
649 (synopsis "Screen locker with screenshot function")
650 (description
651 "@code{i3lock-fancy} is a Bash script that takes a screenshot of
652the desktop, blurs the background and adds a lock icon and text.
653It requires @code{i3lock-color} or @code{i3lock} and can optionally
654be passed any screenshot util like @code{scrot}.
655This screen locker can be used with any window manager or
656desktop environment.")
657 (license license:expat)))
658
6e38c4be
SB
659(define-public xmonad
660 (package
661 (name "xmonad")
de98b915 662 (version "0.15")
6e38c4be
SB
663 (synopsis "Tiling window manager")
664 (source (origin
665 (method url-fetch)
966a543b 666 (uri (string-append "mirror://hackage/package/xmonad/"
ec9299d0 667 "xmonad-" version ".tar.gz"))
6e38c4be
SB
668 (sha256
669 (base32
57983029
TS
670 "0a7rh21k9y6g8fwkggxdxjns2grvvsd5hi2ls4klmqz5xvk4hyaa"))
671 (patches (search-patches "xmonad-dynamic-linking.patch"))))
6e38c4be
SB
672 (build-system haskell-build-system)
673 (inputs
174b091f 674 `(("ghc-extensible-exceptions" ,ghc-extensible-exceptions)
174b091f 675 ("ghc-quickcheck" ,ghc-quickcheck)
dd821380 676 ("ghc-semigroups" ,ghc-semigroups)
174b091f
MM
677 ("ghc-setlocale" ,ghc-setlocale)
678 ("ghc-utf8-string" ,ghc-utf8-string)
679 ("ghc-x11" ,ghc-x11)))
6e38c4be
SB
680 (arguments
681 `(#:phases
682 (modify-phases %standard-phases
683 (add-after
684 'install 'install-xsession
685 (lambda _
686 (let* ((xsessions (string-append %output "/share/xsessions")))
687 (mkdir-p xsessions)
688 (call-with-output-file
689 (string-append xsessions "/xmonad.desktop")
690 (lambda (port)
691 (format port "~
692 [Desktop Entry]~@
693 Name=~a~@
694 Comment=~a~@
695 Exec=~a/bin/xmonad~@
696 Type=Application~%" ,name ,synopsis %output)))))))))
8c0be00a 697 (home-page "https://xmonad.org")
6e38c4be
SB
698 (description
699 "Xmonad is a tiling window manager for X. Windows are arranged
700automatically to tile the screen without gaps or overlap, maximising screen
701use. All features of the window manager are accessible from the keyboard: a
702mouse is strictly optional. Xmonad is written and extensible in Haskell.
703Custom layout algorithms, and other extensions, may be written by the user in
704config files. Layouts are applied dynamically, and different layouts may be
705used on each workspace. Xinerama is fully supported, allowing windows to be
706tiled on several screens.")
0ede252b 707 (license license:bsd-3)))
78edf44c 708
6e864d00
OP
709(define-public xmobar
710 (package
711 (name "xmobar")
ccc960bb 712 (version "0.34")
6e864d00
OP
713 (source (origin
714 (method url-fetch)
715 (uri (string-append "mirror://hackage/package/xmobar/"
079db056 716 "xmobar-" version ".tar.gz"))
6e864d00
OP
717 (sha256
718 (base32
ccc960bb 719 "0x09xbz7y9ay0046j1xpr9jjk5jqivqi06vm3q6mhcrgc4y922rx"))))
6e864d00 720 (build-system haskell-build-system)
800e4fd8
TGR
721 (native-inputs
722 `(("ghc-hspec" ,ghc-hspec)
723 ("hspec-discover" ,hspec-discover)))
6e864d00 724 (inputs
b066ad89
JS
725 `(("ghc-alsa-core" ,ghc-alsa-core)
726 ("ghc-alsa-mixer" ,ghc-alsa-mixer)
727 ("ghc-dbus" ,ghc-dbus)
728 ("ghc-hinotify" ,ghc-hinotify)
d2ea8064 729 ("ghc-http" ,ghc-http)
b066ad89
JS
730 ("ghc-http-conduit" ,ghc-http-conduit)
731 ("ghc-http-types" ,ghc-http-types)
d2ea8064 732 ("ghc-iwlib" ,ghc-iwlib)
b066ad89
JS
733 ("ghc-libmpd" ,ghc-libmpd)
734 ("ghc-old-locale" ,ghc-old-locale)
d877e0d8 735 ("ghc-parsec-numbers" ,ghc-parsec-numbers)
6e864d00 736 ("ghc-regex-compat" ,ghc-regex-compat)
b066ad89
JS
737 ("ghc-temporary" ,ghc-temporary)
738 ("ghc-timezone-olson" ,ghc-timezone-olson)
739 ("ghc-x11" ,ghc-x11)
6e864d00 740 ("ghc-x11-xft" ,ghc-x11-xft)
d2ea8064 741 ("libxpm" ,libxpm)))
6e864d00 742 (arguments
b066ad89
JS
743 `(#:configure-flags (list "--flags=all_extensions")
744 #:phases
745 (modify-phases %standard-phases
746 (add-before 'build 'patch-test-shebang
747 (lambda* (#:key inputs #:allow-other-keys)
748 (substitute* "test/Xmobar/Plugins/Monitors/AlsaSpec.hs"
749 (("/bin/bash") (which "bash")))
750 #t)))))
680e803d 751 (home-page "https://xmobar.org")
6e864d00
OP
752 (synopsis "Minimalistic text based status bar")
753 (description
754 "@code{xmobar} is a lightweight, text-based, status bar written in
755Haskell. It was originally designed to be used together with Xmonad, but it
756is also usable with any other window manager. While xmobar is written in
757Haskell, no knowledge of the language is required to install and use it.")
758 (license license:bsd-3)))
759
9c814c33
EG
760(define-public yeganesh
761 (package
762 (name "yeganesh")
763 (version "2.4")
764 (source
765 (origin
766
767 (method url-fetch)
768 (uri (string-append "http://dmwit.com/yeganesh/yeganesh-" version ".tar.gz"))
769 (sha256
770 (base32 "04djfyjab3c5y9z9x8zd0xcx0jyy35zq7cl9ddr4ppf6k5ky6iky"))))
771 (build-system haskell-build-system)
772 (inputs
773 `(("ghc-strict" ,ghc-strict)
774 ("ghc-xdg-basedir" ,ghc-xdg-basedir)))
775 (home-page "http://dmwit.com/yeganesh/")
776 (synopsis "Small wrapper around dmenu")
777 (description "@code{yeganesh} is a small wrapper around demnu. Like
778dmenu, it accepts input on stdin and writes the chosen result on stdout.
779Unlike dmenu, it mangles the input before it presents its choices. In
780particular, it displays commonly-chosen options before uncommon ones.")
781 (license license:bsd-3)))
782
78edf44c
SB
783(define-public ghc-xmonad-contrib
784 (package
785 (name "ghc-xmonad-contrib")
3cbf3f74 786 (version "0.16")
78edf44c
SB
787 (source
788 (origin
789 (method url-fetch)
966a543b 790 (uri (string-append "mirror://hackage/package/xmonad-contrib/"
78edf44c
SB
791 "xmonad-contrib-" version ".tar.gz"))
792 (sha256
3cbf3f74 793 (base32 "1pddgkvnbww28wykncc7j0yb0lv15bk7xnnhdcbrwkxzw66w6wmd"))))
78edf44c
SB
794 (build-system haskell-build-system)
795 (propagated-inputs
f54f0475 796 `(("ghc-old-time" ,ghc-old-time)
78edf44c
SB
797 ("ghc-random" ,ghc-random)
798 ("ghc-utf8-string" ,ghc-utf8-string)
799 ("ghc-extensible-exceptions" ,ghc-extensible-exceptions)
b42b5afd 800 ("ghc-semigroups" ,ghc-semigroups)
78edf44c
SB
801 ("ghc-x11" ,ghc-x11)
802 ("ghc-x11-xft" ,ghc-x11-xft)
803 ("xmonad" ,xmonad)))
8c0be00a 804 (home-page "https://xmonad.org")
78edf44c
SB
805 (synopsis "Third party extensions for xmonad")
806 (description
807 "Third party tiling algorithms, configurations, and scripts to Xmonad, a
808tiling window manager for X.")
0ede252b 809 (license license:bsd-3)))
45e10968
EB
810
811(define-public evilwm
812 (package
813 (name "evilwm")
814 (version "1.1.1")
815 (source
816 (origin
817 (method url-fetch)
818 (uri (string-append "http://www.6809.org.uk/evilwm/evilwm-"
819 version ".tar.gz"))
820 (sha256
821 (base32
c595cd47 822 "0ak0yajzk3v4dg5wmaghv6acf7v02a4iw8qxmq5yw5ard8lrqn3r"))
fc1adab1 823 (patches (search-patches "evilwm-lost-focus-bug.patch"))))
45e10968
EB
824 (build-system gnu-build-system)
825 (inputs
826 `(("libx11" ,libx11)
827 ("libxext" ,libxext)
828 ("libxrandr" ,libxrandr)))
829 (arguments
830 `(#:modules ((srfi srfi-26)
831 (guix build utils)
832 (guix build gnu-build-system))
833 #:make-flags (let ((inputs (map (cut assoc-ref %build-inputs <>)
834 '("libx11" "libxext" "libxrandr")))
835 (join (lambda (proc strs)
836 (string-join (map proc strs) " ")))
837 (dash-I (cut string-append "-I" <> "/include"))
838 (dash-L (cut string-append "-L" <> "/lib")))
839 `("desktopfilesdir=$(prefix)/share/xsessions"
840 ,(string-append "prefix=" (assoc-ref %outputs "out"))
841 ,(string-append "CPPFLAGS=" (join dash-I inputs))
842 ,(string-append "LDFLAGS=" (join dash-L inputs))))
843 #:tests? #f ;no tests
844 #:phases (modify-phases %standard-phases
845 (delete 'configure)))) ;no configure script
846 (home-page "http://www.6809.org.uk/evilwm/")
847 (synopsis "Minimalist window manager for the X Window System")
848 (description
849 "evilwm is a minimalist window manager based on aewm, extended to feature
850many keyboard controls with repositioning and maximize toggles, solid window
851drags, snap-to-border support, and virtual desktops.")
0ede252b
DM
852 (license (license:x11-style "file:///README"))))
853
854(define-public fluxbox
855 (package
856 (name "fluxbox")
857 (version "1.3.7")
858 (synopsis "Small and fast window manager")
859 (source (origin
860 (method url-fetch)
de67e922 861 (uri (string-append "mirror://sourceforge/fluxbox/fluxbox/"
0ede252b
DM
862 version "/fluxbox-" version ".tar.xz"))
863 (sha256
864 (base32
865 "1h1f70y40qd225dqx937vzb4k2cz219agm1zvnjxakn5jkz7b37w"))))
866 (build-system gnu-build-system)
867 (arguments
868 `(#:make-flags '("CPPFLAGS=-U__TIME__") ;ugly, but for reproducibility
869 #:phases
870 (modify-phases %standard-phases
37f7853e
EF
871 (add-after 'install 'install-vim-files
872 (lambda* (#:key outputs #:allow-other-keys)
873 (let* ((out (assoc-ref outputs "out"))
874 (syntax (string-append out "/share/vim/vimfiles/syntax")))
875 (copy-recursively "3rd/vim/vim/syntax" syntax)
876 #t)))
4ee3b309
EF
877 (add-after 'install 'install-xsession
878 (lambda* (#:key outputs #:allow-other-keys)
879 (let* ((out (assoc-ref outputs "out"))
880 (xsessions (string-append out "/share/xsessions")))
881 (mkdir-p xsessions)
882 (call-with-output-file
883 (string-append xsessions "/fluxbox.desktop")
884 (lambda (port)
885 (format port "~
886 [Desktop Entry]~@
887 Name=~a~@
888 Comment=~a~@
889 Exec=~a/bin/startfluxbox~@
890 Type=Application~%" ,name ,synopsis out)))
891 #t))))))
0ede252b
DM
892 (native-inputs
893 `(("pkg-config" ,pkg-config)))
894 (inputs
895 `(("freetype" ,freetype)
896 ("fribidi" ,fribidi)
897 ("imlib2" ,imlib2)
898 ("libx11" ,libx11)
899 ("libxext" ,libxext)
900 ("libxft" ,libxft)
901 ("libxinerama" ,libxinerama)
902 ("libxpm" ,libxpm)
903 ("libxrandr" ,libxrandr)
904 ("libxrender" ,libxrender)))
905 (description "Fluxbox is a window manager. It is light on resources
906and easy to handle yet full of features to make an easy and fast desktop
907experience.")
908 (home-page "http://fluxbox.org/")
909 (license license:expat)))
3d1240aa
CZ
910
911(define-public awesome
912 (package
913 (name "awesome")
c0c1811f 914 (version "4.3")
3d1240aa 915 (source
c0c1811f
NG
916 (origin
917 (method url-fetch)
918 (uri (string-append
919 "https://github.com/awesomeWM/awesome-releases/raw/master/"
920 "awesome-" version ".tar.xz"))
921 (sha256
922 (base32 "0lqpw401mkkmp9wgbvrmm45bqq2j9357l4irwdqv6l1305pls9kq"))
923 (modules '((guix build utils)
924 (srfi srfi-19)))
925 (snippet
926 '(begin
927 ;; Remove non-reproducible timestamp and use the date of
928 ;; the source file instead.
929 (substitute* "common/version.c"
930 (("__DATE__ \" \" __TIME__")
931 (date->string
932 (time-utc->date
933 (make-time time-utc 0 (stat:mtime (stat "awesome.c"))))
934 "\"~c\"")))
935 #t))
936 (patches
937 (search-patches "awesome-reproducible-png.patch"))))
3d1240aa 938 (build-system cmake-build-system)
c0c1811f
NG
939 (native-inputs
940 `(("asciidoc" ,asciidoc)
941 ("docbook-xsl" ,docbook-xsl)
942 ("doxygen" ,doxygen)
943 ("gperf" ,gperf)
944 ("imagemagick" ,imagemagick)
945 ("libxml2" ,libxml2) ;for XML_CATALOG_FILES
946 ("lua-ldoc" ,lua-ldoc)
947 ("pkg-config" ,pkg-config)
948 ("xmlto" ,xmlto)))
949 (inputs
950 `(("cairo" ,cairo)
951 ("dbus" ,dbus)
952 ("gdk-pixbuf" ,gdk-pixbuf)
953 ("glib" ,glib)
954 ("gobject-introspection" ,gobject-introspection)
955 ("imlib2" ,imlib2)
956 ("libev" ,libev)
957 ("libxcb" ,libxcb)
958 ("libxcursor" ,libxcursor)
959 ("libxdg-basedir" ,libxdg-basedir)
960 ("libxkbcommon" ,libxkbcommon)
961 ("lua" ,lua)
962 ("lua-lgi" ,lua-lgi)
963 ("pango" ,pango)
964 ("startup-notification" ,startup-notification)
965 ("xcb-util" ,xcb-util)
966 ("xcb-util-cursor" ,xcb-util-cursor)
967 ("xcb-util-image" ,xcb-util-image)
968 ("xcb-util-keysyms" ,xcb-util-keysyms)
969 ("xcb-util-renderutil" ,xcb-util-renderutil)
970 ("xcb-util-xrm" ,xcb-util-xrm)
971 ("xcb-util-wm" ,xcb-util-wm)))
3d1240aa 972 (arguments
c0c1811f
NG
973 `(#:modules ((guix build cmake-build-system)
974 (guix build utils)
975 (ice-9 match))
976 ;; Let compression happen in our 'compress-documentation' phase
977 ;; so that '--no-name' is used, which removes timestamps from
978 ;; gzip output.
979 #:configure-flags
980 '("-DCOMPRESS_MANPAGES=off")
981 ;; Building awesome in its source directory is no longer
982 ;; supported.
db0164b2 983 #:out-of-source? #t
22037a32 984 #:phases
985 (modify-phases %standard-phases
c0c1811f 986 (add-before 'configure 'set-paths
22037a32 987 (lambda* (#:key inputs #:allow-other-keys)
1af5e57d
IK
988 (substitute* "lib/awful/completion.lua"
989 (("/usr/bin/env")
990 ""))
c0c1811f
NG
991 ;; The build process needs to load Cairo dynamically.
992 (let* ((cairo (string-append (assoc-ref inputs "cairo") "/lib"))
993 (lua-version ,(version-major+minor (package-version lua)))
994 (lua-dependencies
995 (filter (match-lambda
996 ((label . _) (string-prefix? "lua-" label)))
997 inputs))
998 (lua-path
999 (string-join
1000 (map (match-lambda
1001 ((_ . dir)
1002 (string-append
1003 dir "/share/lua/" lua-version "/?.lua;"
1004 dir "/share/lua/" lua-version "/?/?.lua")))
1005 lua-dependencies)
1006 ";"))
1007 (lua-cpath
1008 (string-join
1009 (map (match-lambda
1010 ((_ . dir)
1011 (string-append
1012 dir "/lib/lua/" lua-version "/?.so;"
1013 dir "/lib/lua/" lua-version "/?/?.so")))
1014 lua-dependencies)
1015 ";")))
1016 (setenv "LD_LIBRARY_PATH" cairo)
1017 (setenv "LUA_PATH" (string-append "?.lua;" lua-path))
1018 (setenv "LUA_CPATH" lua-cpath)
22037a32 1019 #t)))
1020 (replace 'check
1021 (lambda _
1022 ;; There aren't any tests, so just make sure the binary
1023 ;; gets built and can be run successfully.
b5e70d92 1024 (invoke "../build/awesome" "-v")))
4ec42524
TS
1025 (add-after 'install 'patch-session-file
1026 (lambda* (#:key outputs #:allow-other-keys)
1027 (let* ((out (assoc-ref outputs "out"))
1028 (awesome (string-append out "/bin/awesome")))
1029 (substitute* (string-append out "/share/xsessions/awesome.desktop")
1030 (("Exec=awesome") (string-append "Exec=" awesome)))
1031 #t)))
22037a32 1032 (add-after 'install 'wrap
1033 (lambda* (#:key inputs outputs #:allow-other-keys)
1034 (let* ((awesome (assoc-ref outputs "out"))
c0c1811f
NG
1035 (cairo (string-append (assoc-ref inputs "cairo") "/lib"))
1036 (lua-version ,(version-major+minor (package-version lua)))
1037 (lua-lgi (assoc-ref inputs "lua-lgi")))
22037a32 1038 (wrap-program (string-append awesome "/bin/awesome")
1af5e57d 1039 `("LUA_PATH" ";" suffix
c0c1811f 1040 (,(format #f "~a/share/lua/~a/?.lua" lua-lgi lua-version)))
1af5e57d 1041 `("LUA_CPATH" ";" suffix
c0c1811f 1042 (,(format #f "~a/lib/lua/~a/?.so" lua-lgi lua-version)))
22037a32 1043 `("GI_TYPELIB_PATH" ":" prefix (,(getenv "GI_TYPELIB_PATH")))
c0c1811f
NG
1044 `("LD_LIBRARY_PATH" suffix (,cairo)))
1045 #t))))))
1046 (home-page "https://awesomewm.org/")
3d1240aa
CZ
1047 (synopsis "Highly configurable window manager")
1048 (description
c4dd0def 1049 "Awesome has been designed as a framework window manager. It is fast, small,
1050dynamic and extensible using the Lua programming language.")
c0c1811f 1051 (license license:gpl2+)))
395751c0 1052
1053(define-public menumaker
1054 (package
1055 (name "menumaker")
1c217fc3 1056 (version "0.99.12")
395751c0 1057 (source
1058 (origin
1059 (method url-fetch)
1060 (uri (string-append "mirror://sourceforge/menumaker/"
1061 "menumaker-" version ".tar.gz"))
1062 (sha256
1c217fc3 1063 (base32 "034v5204bsgkzzk6zfa5ia63q95gln47f7hwf96yvad5hrhmd8z3"))))
395751c0 1064 (build-system gnu-build-system)
1065 (inputs
1066 `(("python" ,python)))
1067 (synopsis "Heuristics-driven menu generator")
1068 (description
1069 "MenuMaker is a menu generation utility for a number of X window
1070managers and desktop environments. It is capable of finding lots of
1071installed programs and generating a root menu consistent across all
1072supported window managers, so one will get (almost) the same menu in
1073all of them. Currently supported window managers include:
1074
1075@enumerate
1076@item BlackBox
1077@item Deskmenu
1078@item FluxBox
1079@item IceWM
1080@item OpenBox
1081@item PekWM
1082@item WindowMaker
1083@item XFCE
1084@end enumerate\n")
1085 (home-page "http://menumaker.sourceforge.net/")
1086 (license license:bsd-2)))
dbf544f9 1087
1088(define-public keybinder
1089 (package
1090 (name "keybinder")
1091 (version "0.3.1")
1092 (source
1093 (origin
1094 (method url-fetch)
6d688b6e
TGR
1095 (uri (string-append "https://github.com/kupferlauncher/keybinder"
1096 "/releases/download/v" version "/keybinder-"
dbf544f9 1097 version ".tar.gz"))
1098 (file-name (string-append name "-" version ".tar.gz"))
1099 (sha256
1100 (base32
1101 "0h52hj3ay8mfhwvmfxbxlfyq74hifdk8wxgxp7fr4iy6189hg7w7"))))
1102 (build-system gnu-build-system)
1103 (inputs
1104 `(("python-2" ,python-2)
1105 ("gtk+-2" ,gtk+-2)))
1106 (native-inputs
1107 `(("python2-pygtk" ,python2-pygtk)
1108 ("gtk-doc" ,gtk-doc)
1109 ("pkg-config" ,pkg-config)))
1110 (synopsis "Library for registering global keyboard shortcuts")
1111 (description
1112 "Keybinder is a library for registering global keyboard shortcuts.
1113Keybinder works with GTK-based applications using the X Window System.")
6d688b6e 1114 (home-page "https://github.com/kupferlauncher/keybinder")
dbf544f9 1115 (license license:gpl2+)))
78dfc9e2 1116
8c765a3b
IR
1117(define-public keybinder-3.0
1118 (package
1119 (name "keybinder-3.0")
1120 (version "0.3.2")
1121 (source
1122 (origin
1123 (method url-fetch)
1124 (uri (string-append "https://github.com/kupferlauncher/keybinder"
1125 "/releases/download/" name "-v" version "/" name "-"
1126 version ".tar.gz"))
1127 (file-name (string-append name "-" version ".tar.gz"))
1128 (sha256
1129 (base32
1130 "0830ihwnalw59pp1xzrp37dn58n8vwb8zasnm4a1h81v3x7dxqz6"))))
1131 (build-system gnu-build-system)
1132 (inputs
1133 `(("gtk+" ,gtk+)
1134 ("gobject-introspection" ,gobject-introspection)))
1135 (native-inputs
1136 `(("gtk-doc" ,gtk-doc)
1137 ("pkg-config" ,pkg-config)))
1138 (synopsis "Library for registering global keyboard shortcuts, Gtk3 version")
1139 (description
1140 "Keybinder is a library for registering global keyboard shortcuts.
1141Keybinder works with GTK-based applications using the X Window System.")
1142 (home-page "https://github.com/kupferlauncher/keybinder")
1143 (license license:x11)))
1144
78dfc9e2 1145(define-public spectrwm
1146 (package
1147 (name "spectrwm")
f6c8a97a 1148 (version "3.2.0")
78dfc9e2 1149 (source
1150 (origin
b82bd90c
TGR
1151 (method git-fetch)
1152 (uri (git-reference
b0e7b699 1153 (url "https://github.com/conformal/spectrwm")
b82bd90c
TGR
1154 (commit
1155 (string-append "SPECTRWM_"
1156 (string-join (string-split version #\.) "_")))))
1157 (file-name (git-file-name name version))
78dfc9e2 1158 (sha256
b82bd90c 1159 (base32 "1dfqy5f0s1nv6rqkz9lj006vypmp4rwxd5vczfk3ndzqgnh19kw6"))))
78dfc9e2 1160 (build-system gnu-build-system)
1161 (arguments
1162 `(#:make-flags (let ((pkg-config (lambda (flag)
1163 (string-append
1164 "$(shell pkg-config " flag " "
1165 "xft fontconfig x11 libpng)"))))
1166 (list
1167 "CC=gcc"
1168 (string-append "PREFIX=" %output)
1169 (string-append "INCS=-I. " (pkg-config "--cflags"))
1170 (string-append "LIBS=" (pkg-config "--libs") " -lm")))
f6c8a97a 1171 #:tests? #f ;no test suite
78dfc9e2 1172 #:phases
1173 (modify-phases %standard-phases
1174 (add-before 'build 'change-dir
1175 (lambda _
1176 (chdir "linux") #t))
1177 (add-after 'change-dir 'patch-makefile
1178 (lambda _
1179 (substitute* "Makefile"
1180 (("-g") ""))))
f6c8a97a 1181 (delete 'configure)))) ;no 'configure' exists
78dfc9e2 1182 (inputs
1183 `(("freetype" ,freetype)
1184 ("fontconfig" ,fontconfig)
1185 ("libx11" ,libx11)
1186 ("libxcursor" ,libxcursor)
1187 ("libxrandr" ,libxrandr)
1188 ("libxtst" ,libxtst)
1189 ("libxft" ,libxft)
1190 ("xcb-util" ,xcb-util)
1191 ("xcb-util-wm" ,xcb-util-wm)
1192 ("xcb-util-keysyms" ,xcb-util-keysyms)))
1193 (native-inputs
1194 `(("libxt" ,libxt)
1195 ("pkg-config" ,pkg-config)))
1196 (synopsis "Minimalistic automatic tiling window manager")
1197 (description
1198 "Spectrwm is a small dynamic tiling and reparenting window manager for X11.
1199It is inspired by Xmonad and dwm. Its major features include:
1200
1201@itemize
1202@item Navigation anywhere on all screens with either the keyboard or mouse
1203@item Customizable status bar
1204@item Restartable without losing state
1205@item Quick launch menu
1206@item Many screen layouts possible with a few simple key strokes
1207@item Move/resize floating windows
32008a75
TGR
1208@item Extended Window Manager Hints (@dfn{EWMH}) support
1209@item Configurable tiling
78dfc9e2 1210@item Adjustable tile gap allows for a true one pixel border
1211@item Customizable colors and border width
1212@end itemize\n")
1213 (home-page "https://github.com/conformal/spectrwm")
1214 (license license:isc)))
b4cb9308 1215
1216(define-public cwm
1217 (package
1218 (name "cwm")
16634798 1219 (version "6.7")
b4cb9308 1220 (source
1221 (origin
1222 (method url-fetch)
9593caff 1223 (uri (string-append "https://leahneukirchen.org/releases/cwm-"
b4cb9308 1224 version ".tar.gz"))
1225 (sha256
16634798 1226 (base32 "022zld29qawd8gl700g4m24qa89il3aks397zkhh66wvzssdblzx"))))
b4cb9308 1227 (build-system gnu-build-system)
1228 (arguments
fa50a8bc 1229 `(#:make-flags (list (string-append "CC=" ,(cc-for-target))
b4cb9308 1230 (string-append "PREFIX=" %output))
1231 #:tests? #f
1232 #:phases
1233 (modify-phases %standard-phases
1234 (delete 'configure)
1235 (add-after 'build 'install-xsession
1236 (lambda* (#:key outputs #:allow-other-keys)
1237 ;; Add a .desktop file to xsessions.
1238 (let* ((output (assoc-ref outputs "out"))
1239 (xsessions (string-append output "/share/xsessions")))
1240 (mkdir-p xsessions)
1241 (with-output-to-file
1242 (string-append xsessions "/cwm.desktop")
1243 (lambda _
1244 (format #t
1245 "[Desktop Entry]~@
1246 Name=cwm~@
1247 Comment=OpenBSD Calm Window Manager fork~@
1248 Exec=~a/bin/cwm~@
1249 TryExec=~@*~a/bin/cwm~@
1250 Icon=~@
1251 Type=Application~%"
1252 output)))
1253 #t))))))
1254 (inputs
1255 `(("libxft" ,libxft)
1256 ("libxrandr" ,libxrandr)
1257 ("libxinerama" ,libxinerama)))
1258 (native-inputs
1259 `(("pkg-config" ,pkg-config)
1260 ("bison" ,bison)))
9593caff 1261 (home-page "https://github.com/leahneukirchen/cwm")
b4cb9308 1262 (synopsis "OpenBSD fork of the calmwm window manager")
1263 (description "Cwm is a stacking window manager for X11. It is an OpenBSD
1264project derived from the original Calm Window Manager.")
1265 (license license:isc)))
70024cfa 1266
c5f5b356
ZJ
1267(define-public dwl
1268 (package
1269 (name "dwl")
0eb64c2c 1270 (version "0.2")
c5f5b356
ZJ
1271 (source (origin
1272 (method git-fetch)
1273 (uri (git-reference
1274 (url "https://github.com/djpohly/dwl")
1275 (commit (string-append "v" version))))
1276 (file-name (git-file-name name version))
1277 (sha256
1278 (base32
0eb64c2c 1279 "0r5hsxpckkrq1y7bjfq58rlc5xy45z499rg628q3nh289978ail1"))))
c5f5b356
ZJ
1280 (build-system gnu-build-system)
1281 (arguments
1282 `(#:tests? #f ; no tests
1283 #:make-flags
1284 (list
1285 (string-append "CC=" ,(cc-for-target))
1286 (string-append "PREFIX=" (assoc-ref %outputs "out")))
1287 #:phases
1288 (modify-phases %standard-phases
0eb64c2c 1289 (delete 'configure)))) ; no configure
c5f5b356
ZJ
1290 (native-inputs
1291 `(("pkg-config" ,pkg-config)))
1292 (inputs
1293 `(("wlroots" ,wlroots)))
1294 (home-page "https://github.com/djpohly/dwl")
1295 (synopsis "Dynamic window manager for Wayland")
1296 (description
4e96ce42 1297 "@command{dwl} is a compact, hackable compositor for Wayland based on
c5f5b356
ZJ
1298wlroots. It is intended to fill the same space in the Wayland world that dwm
1299does in X11, primarily in terms of philosophy, and secondarily in terms of
1300functionality. Like dwm, dwl is easy to understand and hack on, due to a
1301limited size and a few external dependencies. It is configurable via
1302@file{config.h}.")
1303 ;; LICENSE LICENSE.dwm LICENSE.tinywl
1304 (license (list license:gpl3+ license:expat license:cc0))))
1305
70024cfa
PAR
1306(define-public nitrogen
1307 (package
1308 (name "nitrogen")
1309 (version "1.6.1")
1310 (source (origin
1311 (method url-fetch)
1312 (uri (string-append "http://github.com/l3ib/nitrogen/"
1313 "releases/download/" version "/"
1314 name "-" version ".tar.gz"))
1315 (sha256
1316 (base32
1317 "0zc3fl1mbhq0iyndy4ysmy8vv5c7xwf54rbgamzfhfvsgdq160pl"))))
1318 (build-system gnu-build-system)
1319 (inputs
1320 `(("gtk+" ,gtk+-2)
1321 ("gtkmm" ,gtkmm-2)
1322 ("glib" ,glib)
1323 ("glibmm" ,glibmm)))
1324 (native-inputs
de99ba7e 1325 `(("pkg-config" ,pkg-config)))
70024cfa
PAR
1326 (home-page "http://projects.l3ib.org/nitrogen/")
1327 (synopsis "Background browser and setter for X windows")
1328 (description
1329 "This package is a background browser and setter for X windows. It's
1330features are:
1331
1332@itemize
1333@item Multihead and Xinerama aware
1334@item Recall mode to used via startup script
1335@item Uses freedesktop.org standard for thumbnails
1336@item Can set GNOME background
1337@item Command lie set modes for script use
1338@item Inotify monitoring of browse directory
1339@item Lazy loading of thumbnails - conserves memory
1340@item \"Automatic\" set mode - determines best mode to set an image based on
1341its size
1342@item Display preview images in a tiled icon layout
1343@end itemize")
1344 (license license:gpl2+)))
d8dcbcc9
MP
1345
1346(define-public polybar
1347 (package
1348 (name "polybar")
7a4dcb4c 1349 (version "3.5.5")
d8dcbcc9
MP
1350 (source
1351 (origin
1352 (method url-fetch)
44b73520 1353 (uri (string-append "https://github.com/polybar/polybar/releases/"
05c37c53 1354 "download/" version "/polybar-" version ".tar.gz"))
d8dcbcc9 1355 (sha256
7a4dcb4c 1356 (base32 "1c8br9972x1qw7l2shj9aqzv0gsx58fdh3r0f1z5i1bqdwxmsqky"))))
d8dcbcc9
MP
1357 (build-system cmake-build-system)
1358 (arguments
1359 ;; Test is disabled because it requires downloading googletest from the
1360 ;; Internet.
1361 '(#:tests? #f))
1362 (inputs
1363 `(("alsa-lib" ,alsa-lib)
1364 ("cairo" ,cairo)
1365 ("i3-wm" ,i3-wm)
005c2ccf 1366 ("jsoncpp" ,jsoncpp)
d8dcbcc9
MP
1367 ("libmpdclient" ,libmpdclient)
1368 ("libnl" ,libnl)
1369 ("libxcb" ,libxcb)
1370 ("pulseaudio" ,pulseaudio)
1371 ("xcb-proto" ,xcb-proto)
1372 ("xcb-util" ,xcb-util)
1373 ("xcb-util-cursor" ,xcb-util-cursor)
1374 ("xcb-util-image" ,xcb-util-image)
1375 ("xcb-util-wm" ,xcb-util-wm)
1376 ("xcb-util-xrm" ,xcb-util-xrm)))
1377 (native-inputs
1378 `(("pkg-config" ,pkg-config)
47560aa2 1379 ("python-sphinx" ,python-sphinx) ; for the manual
e2684594
NG
1380 ;; XXX: "python" input must be located after "python-2", or the package
1381 ;; fails to build with "missing required python module: xcbgen".
d8dcbcc9
MP
1382 ("python-2" ,python-2) ; lib/xpp depends on python 2
1383 ("python" ,python))) ; xcb-proto depends on python 3
1384 (home-page "https://polybar.github.io/")
1385 (synopsis "Fast and easy-to-use status bar")
1386 (description "Polybar aims to help users build beautiful and highly
1387customizable status bars for their desktop environment. It has built-in
1388functionality to display information about the most commonly used services.")
1389 (license license:expat)))
eea969cf
RH
1390
1391(define-public wlroots
1392 (package
1393 (name "wlroots")
f5fb52f1 1394 (version "0.12.0")
eea969cf
RH
1395 (source
1396 (origin
1397 (method git-fetch)
1398 (uri (git-reference
b0e7b699 1399 (url "https://github.com/swaywm/wlroots")
eea969cf
RH
1400 (commit version)))
1401 (file-name (git-file-name name version))
1402 (sha256
f5fb52f1 1403 (base32 "01j38lmgs2c6fq68v8b75pkilia2wsgzgp46ivfbi9hhx47kgcfn"))))
eea969cf
RH
1404 (build-system meson-build-system)
1405 (arguments
1406 `(#:configure-flags '("-Dlogind-provider=elogind")
f5fb52f1 1407 #:meson ,meson-0.55
eea969cf
RH
1408 #:phases
1409 (modify-phases %standard-phases
1410 (add-before 'configure 'hardcode-paths
1411 (lambda* (#:key inputs #:allow-other-keys)
f5fb52f1 1412 (substitute* "xwayland/server.c"
eea969cf
RH
1413 (("Xwayland") (string-append (assoc-ref inputs
1414 "xorg-server-xwayland")
1415 "/bin/Xwayland")))
1416 #t)))))
f5fb52f1
MB
1417 (propagated-inputs
1418 `(;; As required by wlroots.pc.
1419 ("elogind" ,elogind)
1420 ("eudev" ,eudev)
1421 ("libinput" ,libinput)
1422 ("libxkbcommon" ,libxkbcommon)
1423 ("mesa" ,mesa)
1424 ("pixman" ,pixman)
1425 ("wayland" ,wayland)
5babdbdd 1426 ("wayland-protocols" ,wayland-protocols)
f5fb52f1
MB
1427 ("xcb-util-errors" ,xcb-util-errors)
1428 ("xcb-util-wm" ,xcb-util-wm)
1429 ("xorg-server-xwayland" ,xorg-server-xwayland)))
1430 (native-inputs
5babdbdd 1431 `(("pkg-config" ,pkg-config)))
eea969cf
RH
1432 (home-page "https://github.com/swaywm/wlroots")
1433 (synopsis "Pluggable, composable, unopinionated modules for building a
1434Wayland compositor")
1435 (description "wlroots is a set of pluggable, composable, unopinionated
1436modules for building a Wayland compositor.")
1437 (license license:expat))) ; MIT license
2ff844f0
RH
1438
1439(define-public sway
1440 (package
1441 (name "sway")
7fc378aa 1442 (version "1.5.1")
2ff844f0
RH
1443 (source
1444 (origin
1445 (method git-fetch)
1446 (uri (git-reference
b0e7b699 1447 (url "https://github.com/swaywm/sway")
2ff844f0
RH
1448 (commit version)))
1449 (file-name (git-file-name name version))
1450 (sha256
7fc378aa 1451 (base32 "1xsa3h8zhf29p0mi90baxpr76jkd9pd1gr97ky8cnjbcs4isj9j0"))))
2ff844f0
RH
1452 (build-system meson-build-system)
1453 (arguments
1454 `(#:phases
1455 (modify-phases %standard-phases
1456 (add-before 'configure 'hardcode-paths
1457 (lambda* (#:key inputs #:allow-other-keys)
e23b6a68
MP
1458 ;; Hardcode path to swaybg.
1459 (substitute* "sway/config.c"
1460 (("strdup..swaybg..")
1461 (string-append "strdup(\"" (assoc-ref inputs "swaybg")
1462 "/bin/swaybg\")")))
1463 ;; Hardcode path to scdoc.
2ff844f0
RH
1464 (substitute* "meson.build"
1465 (("scdoc.get_pkgconfig_variable..scdoc..")
1466 (string-append "'" (assoc-ref inputs "scdoc")
1467 "/bin/scdoc'")))
1468 #t)))))
1469 (inputs `(("cairo" ,cairo)
1470 ("elogind" ,elogind)
1471 ("gdk-pixbuf" ,gdk-pixbuf)
1472 ("json-c" ,json-c)
aa07299f 1473 ("libevdev" ,libevdev)
2ff844f0
RH
1474 ("libinput" ,libinput)
1475 ("libxkbcommon" ,libxkbcommon)
1476 ("pango" ,pango)
e23b6a68 1477 ("swaybg" ,swaybg)
2ff844f0
RH
1478 ("wayland" ,wayland)
1479 ("wlroots" ,wlroots)))
7fc378aa
MB
1480 (native-inputs
1481 `(("linux-pam" ,linux-pam)
1482 ("mesa" ,mesa)
1483 ("pkg-config" ,pkg-config)
1484 ("scdoc" ,scdoc)
1485 ("wayland-protocols" ,wayland-protocols)))
2ff844f0
RH
1486 (home-page "https://github.com/swaywm/sway")
1487 (synopsis "Wayland compositor compatible with i3")
1488 (description "Sway is a i3-compatible Wayland compositor.")
7fc378aa 1489 (license license:expat)))
06ae5efc
RH
1490
1491(define-public swayidle
1492 (package
1493 (name "swayidle")
53d8e2c6 1494 (version "1.6")
06ae5efc
RH
1495 (source
1496 (origin
1497 (method git-fetch)
1498 (uri (git-reference
b0e7b699 1499 (url "https://github.com/swaywm/swayidle")
06ae5efc
RH
1500 (commit version)))
1501 (file-name (git-file-name name version))
1502 (sha256
53d8e2c6 1503 (base32 "1nd3v8r9549lykdwh4krldfl59lzaspmmai5k1icy7dvi6kkr18r"))))
06ae5efc 1504 (build-system meson-build-system)
ddd401d2
MP
1505 (arguments
1506 `(#:configure-flags '("-Dlogind-provider=elogind")))
1507 (inputs `(("elogind" ,elogind)
1508 ("wayland" ,wayland)))
06ae5efc
RH
1509 (native-inputs `(("pkg-config" ,pkg-config)
1510 ("scdoc" ,scdoc)
1511 ("wayland-protocols" ,wayland-protocols)))
1512 (home-page "https://github.com/swaywm/sway")
1513 (synopsis "Idle management daemon for Wayland compositors")
1514 (description "Swayidle is a idle management daemon for Wayland compositors.")
1515 (license license:expat))) ; MIT license
b0805973
RH
1516
1517(define-public swaylock
1518 (package
1519 (name "swaylock")
75d31a4c 1520 (version "1.5")
b0805973
RH
1521 (source
1522 (origin
1523 (method git-fetch)
1524 (uri (git-reference
b0e7b699 1525 (url "https://github.com/swaywm/swaylock")
b0805973
RH
1526 (commit version)))
1527 (file-name (git-file-name name version))
1528 (sha256
75d31a4c 1529 (base32 "0r95p4w11dwm5ra614vddz83r8j7z6gd120z2vcchy7m9b0f15kf"))))
b0805973
RH
1530 (build-system meson-build-system)
1531 (inputs `(("cairo" ,cairo)
1532 ("gdk-pixbuf" ,gdk-pixbuf)
1533 ("libxkbcommon" ,libxkbcommon)
1534 ;("linux-pam" ,linux-pam) ; FIXME: Doesn't work.
1535 ("wayland" ,wayland)))
bc552a0c 1536 (native-inputs `(("pango" ,pango)
b0805973
RH
1537 ("pkg-config" ,pkg-config)
1538 ("scdoc" ,scdoc)
1539 ("wayland-protocols" ,wayland-protocols)))
1540 (home-page "https://github.com/swaywm/sway")
1541 (synopsis "Screen locking utility for Wayland compositors")
1542 (description "Swaylock is a screen locking utility for Wayland compositors.")
1543 (license license:expat))) ; MIT license
bedb3457
SS
1544
1545(define-public swaybg
1546 (package
1547 (name "swaybg")
1548 (version "1.0")
1549 (source
1550 (origin
1551 (method git-fetch)
1552 (uri (git-reference
b0e7b699 1553 (url "https://github.com/swaywm/swaybg")
bedb3457
SS
1554 (commit version)))
1555 (file-name (git-file-name name version))
1556 (sha256
1557 (base32 "1lmqz5bmig90gq2m7lwf02d2g7z4hzf8fhqz78c8vk92c6p4xwbc"))))
1558 (build-system meson-build-system)
1559 (inputs `(("cairo" ,cairo)
1560 ("gdk-pixbuf" ,gdk-pixbuf)
1561 ("wayland" ,wayland)))
3e295e8d 1562 (native-inputs `(("pkg-config" ,pkg-config)
bedb3457
SS
1563 ("scdoc" ,scdoc)
1564 ("wayland-protocols" ,wayland-protocols)))
1565 (home-page "https://github.com/swaywm/sway")
1566 (synopsis "Screen wallpaper utility for Wayland compositors")
1567 (description "Swaybg is a wallpaper utility for Wayland compositors.")
1568 (license license:expat))) ; MIT license
7a1d6a77
GB
1569
1570(define-public waybar
1571 (package
1572 (name "waybar")
7e0e98ae 1573 (version "0.9.5")
7a1d6a77
GB
1574 (source
1575 (origin
1576 (method git-fetch)
1577 (uri (git-reference
b0e7b699 1578 (url "https://github.com/Alexays/Waybar")
7a1d6a77
GB
1579 (commit version)))
1580 (file-name (git-file-name name version))
1581 (sha256
7e0e98ae 1582 (base32 "1kzrgqaclfk6gcwhknxn28xl74gm5swipgn8kk8avacb4nsw1l9q"))))
7a1d6a77 1583 (build-system meson-build-system)
5e78a87b 1584 (inputs `(("date" ,date)
7e0e98ae 1585 ("fmt" ,fmt)
5e78a87b 1586 ("gtk-layer-shell" ,gtk-layer-shell)
7a1d6a77
GB
1587 ("gtkmm" ,gtkmm)
1588 ("jsoncpp" ,jsoncpp)
de2d14f2 1589 ("libdbusmenu" ,libdbusmenu)
7a1d6a77 1590 ("libinput" ,libinput)
de2d14f2
GB
1591 ("libmpdclent" ,libmpdclient)
1592 ("libnl" ,libnl)
1593 ("pulseaudio" ,pulseaudio)
7e0e98ae 1594 ("spdlog" ,spdlog)
7a1d6a77 1595 ("wayland" ,wayland)))
80817888
TGR
1596 (native-inputs
1597 `(("gcc" ,gcc-8) ; for #include <filesystem>
1598 ("glib:bin" ,glib "bin")
1599 ("pkg-config" ,pkg-config)
56c39a07 1600 ("scdoc" ,scdoc)
80817888 1601 ("wayland-protocols" ,wayland-protocols)))
7a1d6a77 1602 (home-page "https://github.com/Alexays/Waybar")
5e78a87b 1603 (synopsis "Wayland bar for Sway and Wlroots based compositors")
7a1d6a77
GB
1604 (description "Waybar is a highly customisable Wayland bar for Sway and
1605Wlroots based compositors.")
1606 (license license:expat))) ; MIT license
f49746c3
RS
1607
1608(define-public wlr-randr
1609 (package
1610 (name "wlr-randr")
1611 (version "0.1.0")
1612 (source
1613 (origin
1614 (method git-fetch)
1615 (uri (git-reference
1616 (url "https://github.com/emersion/wlr-randr")
1617 (commit (string-append "v" version))))
1618 (file-name (git-file-name name version))
1619 (sha256
1620 (base32 "10c8zzp78s5bw34vvjhilipa28bsdx3jbyhnxgp8f8kawh3cvgsc"))))
1621 (build-system meson-build-system)
1622 (inputs `(("wayland" ,wayland)))
1623 (native-inputs `(("pkg-config" ,pkg-config)))
1624 (home-page "https://github.com/emersion/wlr-randr")
1625 (synopsis "Utility to manage Wayland compositor outputs")
1626 (description "wlr-randr is a utility to manage outputs of a Wayland compositor.")
1627 (license license:expat))) ; MIT license
46dc940c
GB
1628
1629(define-public mako
1630 (package
1631 (name "mako")
9ca38df7 1632 (version "1.4.1")
46dc940c
GB
1633 (source
1634 (origin
1635 (method git-fetch)
1636 (uri (git-reference
b0e7b699 1637 (url "https://github.com/emersion/mako")
46dc940c
GB
1638 (commit (string-append "v" version))))
1639 (file-name (git-file-name name version))
1640 (sha256
9ca38df7 1641 (base32 "0hwvibpnrximb628w9dsfjpi30b5jy7nfkm4d94z5vhp78p43vxh"))))
46dc940c
GB
1642 (build-system meson-build-system)
1643 (inputs `(("cairo" ,cairo)
1644 ("elogind" ,elogind)
1645 ("gdk-pixbuf" ,gdk-pixbuf)
1646 ("pango" ,pango)
1647 ("wayland" ,wayland)))
1648 (native-inputs `(("pkg-config" ,pkg-config)
1649 ("scdoc" ,scdoc)
1650 ("wayland-protocols" ,wayland-protocols)))
1651 (home-page "https://wayland.emersion.fr/mako")
1652 (synopsis "Lightweight Wayland notification daemon")
1653 (description "Mako is a lightweight notification daemon for Wayland
1654compositors that support the layer-shell protocol.")
33859202
RS
1655 (license license:expat))) ; MIT license
1656
1657(define-public kanshi
1658 (package
1659 (name "kanshi")
1660 (version "1.1.0")
1661 (source
1662 (origin
1663 (method git-fetch)
1664 (uri (git-reference
1665 (url "https://github.com/emersion/kanshi")
1666 (commit (string-append "v" version))))
1667 (file-name (git-file-name name version))
1668 (sha256
1669 (base32 "0nbpgm8qnn7ljsg9vgs35kl8l4rrk542vdcbx8wrn9r909ld3x92"))))
1670 (build-system meson-build-system)
1671 (inputs `(("wayland" ,wayland)))
1672 (native-inputs `(("pkg-config" ,pkg-config)
1673 ("scdoc" ,scdoc)))
1674 (home-page "https://wayland.emersion.fr/kanshi")
1675 (synopsis "Hotswappable output profiles for Wayland")
1676 (description "Kanshi allows you to define output profiles that are
1677automatically enabled and disabled on hotplug. Kanshi can be used with
1678Wayland compositors supporting the wlr-output-management protocol.")
46dc940c 1679 (license license:expat))) ; MIT license
88f06fd0
PN
1680
1681(define-public stumpwm
1682 (package
1683 (name "stumpwm")
dfb85d1e 1684 (version "20.11")
88f06fd0
PN
1685 (source
1686 (origin
1687 (method git-fetch)
1688 (uri (git-reference
b0e7b699 1689 (url "https://github.com/stumpwm/stumpwm")
88f06fd0
PN
1690 (commit version)))
1691 (file-name (git-file-name "stumpwm" version))
1692 (sha256
dfb85d1e 1693 (base32 "1ghs6ihvmb3bz4q4ys1d3h6rdi96xyiw7l2ip7jh54c25049aymf"))))
88f06fd0
PN
1694 (build-system asdf-build-system/sbcl)
1695 (native-inputs `(("fiasco" ,sbcl-fiasco)
afed1b94
TGR
1696 ("texinfo" ,texinfo)
1697
1698 ;; To build the manual.
1699 ("autoconf" ,autoconf)
1700 ("automake" ,automake)))
88f06fd0
PN
1701 (inputs `(("cl-ppcre" ,sbcl-cl-ppcre)
1702 ("clx" ,sbcl-clx)
1703 ("alexandria" ,sbcl-alexandria)))
1704 (outputs '("out" "lib"))
1705 (arguments
2ff8b5ba 1706 '(#:asd-systems '("stumpwm")
88f06fd0
PN
1707 #:phases
1708 (modify-phases %standard-phases
2ff8b5ba 1709 (add-after 'create-asdf-configuration 'build-program
88f06fd0
PN
1710 (lambda* (#:key outputs #:allow-other-keys)
1711 (build-program
1712 (string-append (assoc-ref outputs "out") "/bin/stumpwm")
1713 outputs
1714 #:entry-program '((stumpwm:stumpwm) 0))))
1715 (add-after 'build-program 'create-desktop-file
1716 (lambda* (#:key outputs #:allow-other-keys)
1717 (let* ((out (assoc-ref outputs "out"))
1718 (xsessions (string-append out "/share/xsessions")))
1719 (mkdir-p xsessions)
1720 (call-with-output-file
1721 (string-append xsessions "/stumpwm.desktop")
1722 (lambda (file)
1723 (format file
1724 "[Desktop Entry]~@
1725 Name=stumpwm~@
1726 Comment=The Stump Window Manager~@
1727 Exec=~a/bin/stumpwm~@
1728 TryExec=~@*~a/bin/stumpwm~@
1729 Icon=~@
1730 Type=Application~%"
1731 out)))
1732 #t)))
1733 (add-after 'install 'install-manual
afed1b94 1734 (lambda* (#:key (make-flags '()) outputs #:allow-other-keys)
88f06fd0
PN
1735 (let* ((out (assoc-ref outputs "out"))
1736 (info (string-append out "/share/info")))
afed1b94
TGR
1737 (invoke "./autogen.sh")
1738 (invoke "sh" "./configure" "SHELL=sh")
1739 (apply invoke "make" "stumpwm.info" make-flags)
88f06fd0
PN
1740 (install-file "stumpwm.info" info)
1741 #t))))))
1742 (synopsis "Window manager written in Common Lisp")
1743 (description "Stumpwm is a window manager written entirely in Common Lisp.
1744It attempts to be highly customizable while relying entirely on the keyboard
1745for input. These design decisions reflect the growing popularity of
1746productive, customizable lisp based systems.")
1747 (home-page "https://github.com/stumpwm/stumpwm")
1748 (license license:gpl2+)
1749 (properties `((cl-source-variant . ,(delay cl-stumpwm))))))
1750
1751(define-public sbcl-stumpwm
1752 (deprecated-package "sbcl-stumpwm" stumpwm))
1753
1754(define-public cl-stumpwm
1755 (package
1756 (inherit (sbcl-package->cl-source-package stumpwm))
1757 (name "cl-stumpwm")))
1758
1759(define-public stumpwm+slynk
1760 (package
1761 (inherit stumpwm)
1762 (name "stumpwm-with-slynk")
1763 (outputs '("out"))
1764 (inputs
1765 `(("stumpwm" ,stumpwm "lib")
1766 ("slynk" ,sbcl-slynk)))
1767 (arguments
1768 (substitute-keyword-arguments (package-arguments stumpwm)
1769 ((#:phases phases)
1770 `(modify-phases ,phases
1771 (replace 'build-program
1772 (lambda* (#:key inputs outputs #:allow-other-keys)
1773 (let* ((out (assoc-ref outputs "out"))
1774 (program (string-append out "/bin/stumpwm")))
3138e4a7 1775 (setenv "HOME" "/tmp")
88f06fd0
PN
1776 (build-program program outputs
1777 #:entry-program '((stumpwm:stumpwm) 0)
2ff8b5ba 1778 #:dependencies '("stumpwm" "slynk")
88f06fd0
PN
1779 #:dependency-prefixes
1780 (map (lambda (input) (assoc-ref inputs input))
1781 '("stumpwm" "slynk")))
88f06fd0
PN
1782 #t)))
1783 (delete 'copy-source)
1784 (delete 'build)
1785 (delete 'check)
2ff8b5ba 1786 (delete 'cleanup)))))))
88f06fd0 1787
81b045e1 1788(define stumpwm-contrib
77ee8af5
SH
1789 (let ((commit "a7dc1c663d04e6c73a4772c8a6ad56a34381096a")
1790 (revision "3"))
9a12243c 1791 (package
81b045e1 1792 (name "stumpwm-contrib")
9a12243c
OP
1793 (version (git-version "0.0.1" revision commit)) ;no upstream release
1794 (source
1795 (origin
1796 (method git-fetch)
1797 (uri (git-reference
b0e7b699 1798 (url "https://github.com/stumpwm/stumpwm-contrib")
9a12243c 1799 (commit commit)))
b9e1fc2f 1800 (file-name (git-file-name name version))
9a12243c 1801 (sha256
77ee8af5 1802 (base32 "09akdaaya7lga5lzbq1aj1filsyjwvflghkidpmr0nk0jz5xx1g7"))))
81b045e1 1803 (build-system asdf-build-system/sbcl)
9a12243c 1804 (inputs
81b045e1 1805 `(("stumpwm" ,stumpwm "lib")))
9a12243c
OP
1806 (home-page "https://github.com/stumpwm/stumpwm-contrib")
1807 (synopsis "StumpWM interactive shell")
1808 (description "This package provides a StumpWM interactive shell.")
1809 (license (list license:gpl2+ license:gpl3+ license:bsd-2)))))
1810
81b045e1
KCB
1811(define-public stumpish
1812 (package
1813 (inherit stumpwm-contrib)
1814 (name "stumpish")
1815 (inputs
1816 `(("bash" ,bash)
48b00a4c
MR
1817 ("rlwrap" ,rlwrap)
1818 ("xprop" ,xprop)))
81b045e1
KCB
1819 (build-system trivial-build-system)
1820 (arguments
1821 '(#:modules ((guix build utils))
81b045e1
KCB
1822 #:builder
1823 (begin
1824 (use-modules (guix build utils))
1825 (copy-recursively (assoc-ref %build-inputs "source") ".")
1826 (chdir "util/stumpish")
1827 (substitute* "stumpish"
1828 (("rlwrap") (string-append (assoc-ref %build-inputs "rlwrap")
1829 "/bin/rlwrap"))
48b00a4c
MR
1830 (("xprop") (string-append (assoc-ref %build-inputs "xprop")
1831 "/bin/xprop"))
81b045e1
KCB
1832 (("/bin/sh") (string-append (assoc-ref %build-inputs "bash")
1833 "/bin/bash")))
1834 (install-file "stumpish" (string-append %output "/bin")))))
1835 (home-page "https://github.com/stumpwm/stumpwm-contrib")
1836 (synopsis "StumpWM interactive shell")
1837 (description "This package provides a StumpWM interactive shell.")
1838 (license (list license:gpl2+ license:gpl3+ license:bsd-2))))
1839
88f06fd0
PN
1840(define-public sbcl-stumpwm+slynk
1841 (deprecated-package "sbcl-stumpwm-with-slynk" stumpwm+slynk))
d4145638 1842
65051fdc 1843(define-public sbcl-stumpwm-ttf-fonts
81b045e1
KCB
1844 (package
1845 (inherit stumpwm-contrib)
1846 (name "sbcl-stumpwm-ttf-fonts")
1847 (inputs
1848 `(("stumpwm" ,stumpwm "lib")
1849 ("clx-truetype" ,sbcl-clx-truetype)))
1850 (arguments
2ff8b5ba 1851 '(#:asd-systems '("ttf-fonts")
81b045e1
KCB
1852 #:tests? #f
1853 #:phases
1854 (modify-phases %standard-phases
1855 (add-after 'unpack 'chdir
1856 (lambda _ (chdir "util/ttf-fonts") #t)))))
1857 (home-page "https://github.com/stumpwm/stumpwm-contrib")
1858 (synopsis "Implementation of TTF font rendering for Lisp")
1859 (description "This package provides a Lisp implementation of TTF font
65051fdc 1860rendering.")
81b045e1 1861 (license (list license:gpl2+ license:gpl3+ license:bsd-2))))
65051fdc 1862
fd65311c 1863(define-public sbcl-stumpwm-pass
81b045e1
KCB
1864 (package
1865 (inherit stumpwm-contrib)
1866 (name "sbcl-stumpwm-pass")
1867 (arguments
2ff8b5ba 1868 '(#:asd-systems '("pass")
81b045e1
KCB
1869 #:tests? #f
1870 #:phases
1871 (modify-phases %standard-phases
1872 (add-after 'unpack 'chdir
1873 (lambda _ (chdir "util/pass") #t)))))
1874 (home-page "https://github.com/stumpwm/stumpwm-contrib")
4a1e3610 1875 (synopsis "Integrate @code{pass} with StumpWM")
81b045e1 1876 (description "This package provides an interface which integrates
fd65311c 1877password-store into StumpWM.")
81b045e1 1878 (license (list license:gpl2+ license:gpl3+ license:bsd-2))))
fd65311c 1879
396eb9e1 1880(define-public sbcl-stumpwm-globalwindows
81b045e1
KCB
1881 (package
1882 (inherit stumpwm-contrib)
1883 (name "sbcl-stumpwm-globalwindows")
1884 (arguments
2ff8b5ba 1885 '(#:asd-systems '("globalwindows")
81b045e1
KCB
1886 #:tests? #f
1887 #:phases
1888 (modify-phases %standard-phases
1889 (add-after 'unpack 'chdir
1890 (lambda _ (chdir "util/globalwindows") #t)))))
1891 (home-page "https://github.com/stumpwm/stumpwm-contrib")
1892 (synopsis "Manipulate all windows in the current X session")
1893 (description "This package provides a StumpWM module to manipulate all
396eb9e1 1894windows in the current X session.")
81b045e1 1895 (license (list license:gpl2+ license:gpl3+ license:bsd-2))))
396eb9e1 1896
693d0fff 1897(define-public sbcl-stumpwm-swm-gaps
81b045e1
KCB
1898 (package
1899 (inherit stumpwm-contrib)
1900 (name "sbcl-stumpwm-swm-gaps")
1901 (arguments
2ff8b5ba 1902 '(#:asd-systems '("swm-gaps")
81b045e1
KCB
1903 #:tests? #f
1904 #:phases
1905 (modify-phases %standard-phases
1906 (add-after 'unpack 'chdir
1907 (lambda _ (chdir "util/swm-gaps") #t)))))
1908 (home-page "https://github.com/stumpwm/stumpwm-contrib")
1909 (synopsis "Gaps between windows for StumpWM")
1910 (description "This package provides a StumpWM module which adds gaps
693d0fff 1911between windows.")
81b045e1 1912 (license (list license:gpl2+ license:gpl3+ license:bsd-2))))
693d0fff 1913
ea94e4d3
KCB
1914(define-public sbcl-stumpwm-net
1915 (package
1916 (inherit stumpwm-contrib)
1917 (name "sbcl-stumpwm-net")
1918 (arguments
2ff8b5ba 1919 '(#:asd-systems '("net")
ea94e4d3
KCB
1920 #:tests? #f
1921 #:phases
1922 (modify-phases %standard-phases
1923 (add-after 'unpack 'chdir (lambda _ (chdir "modeline/net") #t)))))
1924 (home-page
1925 "https://github.com/stumpwm/stumpwm-contrib/tree/master/modeline/net")
1926 (synopsis "Modeline support for network connectivity")
1927 (description "Modeline support for network connectivity.")
1928 (supported-systems
1929 (filter (lambda (a) (string-contains a "linux")) %supported-systems))
1930 (license license:gpl3+)))
1931
86ee8d15
KCB
1932(define-public sbcl-stumpwm-wifi
1933 (package
1934 (inherit stumpwm-contrib)
1935 (name "sbcl-stumpwm-wifi")
1936 (arguments
2ff8b5ba 1937 '(#:asd-systems '("wifi")
86ee8d15
KCB
1938 #:tests? #f
1939 #:phases
1940 (modify-phases %standard-phases
1941 (add-after 'unpack 'chdir (lambda _ (chdir "modeline/wifi") #t)))))
1942 (home-page
1943 "https://github.com/stumpwm/stumpwm-contrib/tree/master/modeline/wifi")
1944 (synopsis "Modeline support for wifi connectivity")
1945 (description "Modeline support for wifi connectivity.")
1946 (supported-systems
1947 (filter (lambda (a) (string-contains a "linux")) %supported-systems))
1948 (license license:gpl3+)))
1949
1afe58e4
KCB
1950(define-public sbcl-stumpwm-stumptray
1951 (package
1952 (inherit stumpwm-contrib)
1953 (name "sbcl-stumpwm-stumptray")
1954 (arguments
2ff8b5ba 1955 '(#:asd-systems '("stumptray")
1afe58e4
KCB
1956 #:tests? #f
1957 #:phases
1958 (modify-phases %standard-phases
1959 (add-after 'unpack 'chdir (lambda _ (chdir "modeline/stumptray") #t)))))
1960 (inputs
1961 `(("stumpwm" ,stumpwm "lib")
1962 ("xembed" ,sbcl-clx-xembed)
1963 ("alexandria" ,sbcl-alexandria)))
1964 (home-page
1965 "https://github.com/stumpwm/stumpwm-contrib/tree/master/modeline/stumptray")
1966 (synopsis "Modeline support for stumptray connectivity")
1967 (description "Modeline support for stumptray connectivity.")
1968 (supported-systems
1969 (filter (lambda (a) (string-contains a "linux")) %supported-systems))
1970 (license license:gpl3+)))
1971
b70e612b
KCB
1972(define-public sbcl-stumpwm-kbd-layouts
1973 (package
1974 (inherit stumpwm-contrib)
1975 (name "sbcl-stumpwm-kbd-layouts")
1976 (arguments
2ff8b5ba 1977 '(#:asd-systems '("kbd-layouts")
b70e612b
KCB
1978 #:tests? #f
1979 #:phases
1980 (modify-phases %standard-phases
1981 (add-after 'unpack 'chdir (lambda _ (chdir "util/kbd-layouts") #t)))))
1982 (home-page
1983 "https://github.com/stumpwm/stumpwm-contrib/tree/master/util/kbd-layouts")
1984 (synopsis "Keyboard layout switcher for StumpWM")
1985 (description "Keyboard layout switcher for StumpWM")
1986 (license license:gpl3+)))
1987
680102aa
GLV
1988(define-public sbcl-stumpwm-numpad-layouts
1989 (package
1990 (inherit stumpwm-contrib)
1991 (name "sbcl-stumpwm-numpad-layouts")
1992 (arguments
1993 '(#:asd-systems '("numpad-layouts")
1994 #:tests? #f
1995 #:phases
1996 (modify-phases %standard-phases
1997 (add-after 'unpack 'chdir
1998 (lambda _
1999 (chdir "util/numpad-layouts"))))))
2000 (home-page
2001 "https://github.com/stumpwm/stumpwm-contrib/tree/master/util/numpad-layouts")
2002 (synopsis "Keyboard numpad layouts for StumpWM")
2003 (description "This is a module for handling different keyboards numpad
2004layouts in StumpWM.")
2005 (license license:gpl3+)))
2006
fba3e9e2
GLV
2007(define-public sbcl-stumpwm-cpu
2008 (package
2009 (inherit stumpwm-contrib)
2010 (name "sbcl-stumpwm-cpu")
2011 (arguments
2012 '(#:asd-systems '("cpu")
2013 #:tests? #f
2014 #:phases
2015 (modify-phases %standard-phases
2016 (add-after 'unpack 'chdir
2017 (lambda _
2018 (chdir "modeline/cpu"))))))
2019 (home-page
2020 "https://github.com/stumpwm/stumpwm-contrib/tree/master/modeline/cpu")
2021 (synopsis "Modeline support for CPU info")
2022 (description "Modeline support for CPU info.")
2023 (license license:gpl3+)))
2024
2e5ac371
SH
2025(define-public sbcl-stumpwm-disk
2026 (package
2027 (inherit stumpwm-contrib)
2028 (name "sbcl-stumpwm-disk")
2029 (arguments
2030 '(#:asd-systems '("disk")
2031 #:tests? #f
2032 #:phases
2033 (modify-phases %standard-phases
2034 (add-after 'unpack 'chdir
2035 (lambda _ (chdir "modeline/disk") #t)))))
2036 (inputs
2037 `(("stumpwm" ,stumpwm "lib")
2038 ("cl-diskspace" ,sbcl-cl-diskspace)
2039 ("cl-mount-info" ,sbcl-cl-mount-info)))
2040 (home-page "https://github.com/stumpwm/stumpwm-contrib")
2041 (synopsis "StumpWM modeline support to show disk usage")
2042 (description "StumpWM modeline support to show disk usage")
2043 (license (list license:gpl2+ license:gpl3+))))
2044
52828db0
GLV
2045(define-public sbcl-stumpwm-mem
2046 (package
2047 (inherit stumpwm-contrib)
2048 (name "sbcl-stumpwm-mem")
2049 (arguments
2050 '(#:asd-systems '("mem")
2051 #:tests? #f
2052 #:phases
2053 (modify-phases %standard-phases
2054 (add-after 'unpack 'chdir
2055 (lambda _
2056 (chdir "modeline/mem"))))))
2057 (home-page
2058 "https://github.com/stumpwm/stumpwm-contrib/tree/master/modeline/mem")
2059 (synopsis "Modeline support for memory info")
2060 (description "Modeline support for memory info.")
2061 (license license:gpl3+)))
2062
f6c827c1
GLV
2063(define-public sbcl-stumpwm-winner-mode
2064 (package
2065 (inherit stumpwm-contrib)
2066 (name "sbcl-stumpwm-winner-mode")
2067 (arguments
2068 '(#:asd-systems '("winner-mode")
2069 #:tests? #f
2070 #:phases
2071 (modify-phases %standard-phases
2072 (add-after 'unpack 'chdir
2073 (lambda _
2074 (chdir "util/winner-mode"))))))
2075 (home-page
2076 "https://github.com/stumpwm/stumpwm-contrib/tree/master/util/winner-mode")
2077 (synopsis "Emacs' winner-mode for StumpWM")
2078 (description "This module provides a winner-mode for StumpWM similar to the
2079one in Emacs.")
2080 (license license:gpl3+)))
2081
275fcffc
GLV
2082(define-public sbcl-stumpwm-screenshot
2083 (package
2084 (inherit stumpwm-contrib)
2085 (name "sbcl-stumpwm-screenshot")
2086 (inputs
2087 `(("stumpwm" ,stumpwm "lib")
2088 ("zpng" ,sbcl-zpng)))
2089 (arguments
2090 '(#:asd-systems '("screenshot")
2091 #:tests? #f
2092 #:phases
2093 (modify-phases %standard-phases
2094 (add-after 'unpack 'chdir
2095 (lambda _
2096 (chdir "util/screenshot")))
2097 (add-after 'chdir 'fix-build
2098 (lambda _
2099 (substitute* "screenshot.asd"
2100 (("#:zpng")
2101 "#:stumpwm #:zpng")))))))
2102 (home-page
2103 "https://github.com/stumpwm/stumpwm-contrib/tree/master/util/screenshot")
2104 (synopsis "Screenshots for StumpWM")
2105 (description "This StumpWM module can take screenshots and store them as
2106PNG files.")
2107 (license license:gpl3+)))
2108
d4145638
N
2109(define-public lemonbar
2110 (let ((commit "35183ab81d2128dbb7b6d8e119cc57846bcefdb4")
2111 (revision "1"))
2112 (package
2113 (name "lemonbar")
2114 (version (git-version "1.3" revision commit))
2115 (source (origin
2116 (method git-fetch)
2117 (uri (git-reference
2118 (url "https://github.com/LemonBoy/bar")
2119 (commit commit)))
2120 (file-name (git-file-name name version))
2121 (sha256
2122 (base32
2123 "1wwqbph392iwz8skaqxb0xpklb1l6yganqz80g4x1fhrnz7idmlh"))))
2124 (build-system gnu-build-system)
2125 (arguments
6978cb28
TGR
2126 `(#:tests? #f ; no test suite
2127 #:make-flags
2128 (list ,(string-append "CC=" (cc-for-target))
2129 (string-append "PREFIX=" %output))
d4145638
N
2130 #:phases
2131 (modify-phases %standard-phases
2132 (delete 'configure))))
2133 (inputs
2134 `(("libxcb" ,libxcb)))
2135 (native-inputs
2136 `(("perl" ,perl)))
2137 (home-page "https://github.com/LemonBoy/bar")
2138 (synopsis "Featherweight status bar")
2139 (description
2140 "@code{lemonbar} (formerly known as @code{bar}) is a lightweight
2141bar entirely based on XCB. Provides full UTF-8 support, basic
2142formatting, RandR and Xinerama support and EWMH compliance without
2143wasting your precious memory.")
2144 (license license:x11))))
ab751d53 2145
8e2aad26 2146(define-public lemonbar-xft
2147 ;; Upstream v2.0 tag is several years behind HEAD
2148 (let ((commit "481e12363e2a0fe0ddd2176a8e003392be90ed02"))
2149 (package
2150 (inherit lemonbar)
2151 (name "lemonbar-xft")
2152 (version (string-append "2.0." (string-take commit 7)))
2153 (source (origin
2154 (method git-fetch)
2155 (uri (git-reference
2156 (url "https://github.com/drscream/lemonbar-xft")
2157 (commit commit)))
2158 (file-name (git-file-name name version))
2159 (sha256
2160 (base32
2161 "0588g37h18lv50h7w8vfbwhvc3iajh7sdr53848spaif99nh3mh4"))))
2162 (inputs
2163 `(("freetype" ,freetype)
2164 ("libxft" ,libxft)
2165 ("libx11" ,libx11)
2166 ,@(package-inputs lemonbar)))
2167 (arguments
2168 (substitute-keyword-arguments (package-arguments lemonbar)
2169 ((#:make-flags make-flags)
2170 `(append
2171 ,make-flags
2172 (list (string-append
2173 "CFLAGS="
2174 (string-join
2175 (list (string-append
2176 "-I" (assoc-ref %build-inputs "freetype")
2177 "/include/freetype2")
2178 (string-append
2179 "-D" "VERSION="
2180 (format #f "'~s'" ,version))))))))))
2181 (home-page "https://github.com/drscream/lemonbar-xft")
2182 (synopsis
2183 (string-append
2184 (package-synopsis lemonbar)
2185 " with fontconfig support"))
2186 (description
2187 (string-append
2188 (package-description lemonbar)
2189 "This is a fork of the @code{lemonbar} package that adds fontconfig
2190support, for easier unicode usage.")))))
2191
ab751d53 2192(define-public xclickroot
8ff16233
OP
2193 (package
2194 (name "xclickroot")
280cfe63 2195 (version "1.3")
8ff16233
OP
2196 (source (origin
2197 (method git-fetch)
2198 (uri (git-reference
2199 (url "https://github.com/phillbush/xclickroot")
2200 (commit (string-append "v" version))))
2201 (file-name (git-file-name name version))
2202 (sha256
2203 (base32
280cfe63 2204 "0wnsfxvh4v02r2jjyh2n6jfkbj2dna2hlm6anl4b36lwji749k2k"))))
8ff16233
OP
2205 (build-system gnu-build-system)
2206 (inputs
2207 `(("libx11" ,libx11)))
2208 (arguments
2209 `(#:tests? #f ;no test suite
2210 #:make-flags
2211 (list ,(string-append "CC=" (cc-for-target))
2212 (string-append "PREFIX=" %output))
2213 #:phases
2214 (modify-phases %standard-phases
2215 (delete 'configure))))
2216 (home-page "https://github.com/phillbush/xclickroot")
2217 (synopsis "Run a command when a mouse button is pressed on the root window")
2218 (description "@code{xclickroot} runs a command every time a given mouse
ab751d53 2219button is pressed on the root window.")
8ff16233 2220 (license license:public-domain)))
6bd6b123
OP
2221
2222(define-public xmenu
2223 (package
2224 (name "xmenu")
bf822521 2225 (version "4.4.1")
6bd6b123
OP
2226 (source (origin
2227 (method git-fetch)
2228 (uri (git-reference
2229 (url "https://github.com/phillbush/xmenu")
2230 (commit (string-append "v" version))))
2231 (file-name (git-file-name name version))
2232 (sha256
2233 (base32
bf822521 2234 "1s70zvsaqnsjqs298vw3py0vcvia68xlks1wcz37pb88bwligz1x"))))
6bd6b123
OP
2235 (build-system gnu-build-system)
2236 (inputs
2237 `(("libx11" ,libx11)
bf822521 2238 ("libxinerama" ,libxinerama)
6bd6b123
OP
2239 ("libxft" ,libxft)
2240 ("freetype" ,freetype)
2241 ("imlib2" ,imlib2)))
2242 (arguments
2243 `(#:tests? #f ;no test suite
2244 #:make-flags
2245 (list (string-append "CC=" ,(cc-for-target))
2246 (string-append "PREFIX=" %output)
2247 (string-append "CFLAGS="
2248 "-I" (assoc-ref %build-inputs "freetype")
2249 "/include/freetype2"))
2250 #:phases
2251 (modify-phases %standard-phases
2252 (delete 'configure))))
2253 (home-page "https://github.com/phillbush/xmenu")
2254 (synopsis "Menu utility for X")
2255 (description "@code{xmenu} receives a menu specification in stdin, shows
2256a menu for the user to select one of the options, and outputs the option
2257selected to stdout. It can be controlled both via mouse and via keyboard.")
2258 (license license:public-domain)))
1db15d00
OP
2259
2260(define-public idesk
2261 (package
2262 (name "idesk")
2263 (version "0.7.5")
2264 (source
2265 (origin
2266 (method url-fetch)
2267 (uri (string-append
2268 "mirror://sourceforge/idesk/idesk/idesk-" version
2269 "/idesk-" version ".tar.bz2"))
2270 (sha256
2271 (base32
2272 "1lxk2yvgysxwl514zc82lwr1dwc8cd62slgr5lzdhjbdrxfymdyl"))
2273 (modules '((guix build utils)
2274 (ice-9 format)))
2275 (snippet
2276 '(let* ((file "src/DesktopConfig.cpp")
2277 (template (string-append file ".XXXXXX"))
2278 (out (mkstemp! template))
2279 (st (stat file))
2280 (mode (stat:mode st)))
2281 (call-with-ascii-input-file file
2282 (lambda (p)
2283 (format out "~{~a~%~}" '("#include <unistd.h>"
2284 "#include <sys/stat.h>"
2285 "#include <sys/types.h>"))
2286 (dump-port p out)
2287 (close out)
2288 (chmod template mode)
2289 (rename-file template file)
2290 #t))))))
2291 (build-system gnu-build-system)
2292 (inputs
2293 `(("libx11" ,libx11)
2294 ("libxft" ,libxft)
2295 ("libxpm" ,libxpm)
2296 ("libpng" ,libpng)
2297 ("freetype" ,freetype)
2298 ("imlib2" ,imlib2)
2299 ("sed" ,sed)))
2300 (native-inputs
2301 `(("pkg-config" ,pkg-config)))
2302 (arguments
2303 `(#:tests? #f)) ;no test suite
2304 (home-page "https://sourceforge.net/projects/idesk/")
2305 (synopsis "Add icons on X desktop and set background image for wallpaper")
2306 (description "Idesk is program that draws desktop icons. Each icon will
2307execute a shell command on a configurable action. The icons can be moved on
2308the desktop by dragging them, and the icons will remember their positions on
2309start-up.")
2310 (license license:bsd-3)))
2aa39332
OP
2311
2312(define-public xnotify
2313 (package
2314 (name "xnotify")
69b91b80 2315 (version "0.8.1")
2aa39332
OP
2316 (source (origin
2317 (method git-fetch)
2318 (uri (git-reference
2319 (url "https://github.com/phillbush/xnotify")
69b91b80 2320 (commit (string-append "v" version))))
2aa39332
OP
2321 (file-name (git-file-name name version))
2322 (sha256
2323 (base32
69b91b80 2324 "1jxms4md2mwfjgm2pgg3vakpp33800jbn9hnl0j4jyfc9f1ckbsv"))))
2aa39332
OP
2325 (build-system gnu-build-system)
2326 (inputs
2327 `(("libx11" ,libx11)
2328 ("libxft" ,libxft)
2329 ("libxinerama" ,libxinerama)
2330 ("imlib2" ,imlib2)))
2331 (arguments
2332 `(#:make-flags
2333 (list (string-append "CC=" ,(cc-for-target))
2334 (string-append "PREFIX=" %output)
2335 (string-append "CFLAGS="
2336 "-I" (assoc-ref %build-inputs "freetype")
2337 "/include/freetype2"))
2338 #:tests? #f ;no test suite
2339 #:phases
2340 (modify-phases %standard-phases
2341 (delete 'configure))))
2342 (home-page "https://github.com/phillbush/xnotify")
2343 (synopsis "Displays a notification on the screen")
2344 (description "XNotify receives a notification specification in stdin and
2345shows a notification for the user on the screen.")
2346 (license license:expat)))
106c663d
SB
2347
2348(define-public cagebreak
2349 (package
2350 (name "cagebreak")
5e753287 2351 (version "1.6.0")
106c663d
SB
2352 (source (origin
2353 (method git-fetch)
2354 (uri (git-reference
2355 (url "https://github.com/project-repo/cagebreak")
2356 (commit version)))
2357 (file-name (git-file-name name version))
2358 (sha256
2359 (base32
5e753287 2360 "02gxmypfj75amdd8lwdkkk7imw7lwmghpyk8h9asljy9aq6ymdqp"))))
106c663d
SB
2361 (build-system meson-build-system)
2362 (arguments '(#:configure-flags '("-Dxwayland=true")))
2363 (native-inputs
2364 `(("pandoc" ,pandoc)
2365 ("pkg-config" ,pkg-config)))
2366 (inputs
2367 `(("pango" ,pango)
2368 ("wlroots" ,wlroots)))
2369 (home-page "https://github.com/project-repo/cagebreak")
2370 (synopsis "Tiling wayland compositor inspired by ratpoison")
2371 (description
2372 "@command{cagebreak} is a slim, keyboard-controlled, tiling compositor
2373for wayland conceptually based on the X11 window manager
2374@command{ratpoison}.")
2375 (license license:expat)))
966e61fb 2376
2377(define-public libucl
2378 (package
2379 (name "libucl")
2380 (version "0.8.1")
2381 (source
2382 (origin
2383 (method git-fetch)
2384 (uri (git-reference
2385 (url "https://github.com/vstakhov/libucl/")
2386 (commit version)))
2387 (file-name (git-file-name name version))
2388 (sha256
2389 (base32
2390 "1h52ldxankyhbbm1qbqz1f2q0j03c1b4mig7343bs3mc6fpm18gf"))))
2391 (native-inputs
2392 `(("autoconf" ,autoconf)
2393 ("automake" ,automake)
2394 ("pkg-config" ,pkg-config)
2395 ("libtool" ,libtool)))
2396 (build-system gnu-build-system)
2397 (arguments
2398 `(#:tests? #f)) ;; no tests
2399 (home-page "https://github.com/vstakhov/libucl")
2400 (synopsis "Universal configuration language (UCL) parser")
2401 (description "libucl implements a configuration language that is easy to
2402read and write, and compatible with JSON.")
2403 (license license:bsd-2)))
2e9cdb6a 2404
2405(define-public hikari
2406 (package
2407 (name "hikari")
5cf90c43 2408 (version "2.2.3")
2e9cdb6a 2409 (source
2410 (origin
2411 (method url-fetch)
636caba1
NG
2412 (uri (string-append "https://hikari.acmelabs.space/releases/"
2413 "hikari-" version ".tar.gz"))
2e9cdb6a 2414 (sha256
5cf90c43 2415 (base32 "1d023cphzi15k434n60l1rp5awxmdijvsxfrm59fmsvd5rjxh9q7"))))
2e9cdb6a 2416 (build-system gnu-build-system)
2417 (native-inputs
2418 `(("bmake" ,bmake)
2419 ("pkg-config" ,pkg-config)
2420 ("wayland-protocols" ,wayland-protocols)))
2421 (inputs
636caba1 2422 `(("cairo" ,cairo)
2e9cdb6a 2423 ("libinput" ,libinput)
2e9cdb6a 2424 ("libucl" ,libucl)
636caba1
NG
2425 ("libxkbcommon" ,libxkbcommon)
2426 ("pam" ,linux-pam)
2427 ("pango" ,pango)
2428 ("wayland" ,wayland)
2429 ("wlroots" ,wlroots)))
2e9cdb6a 2430 (arguments
636caba1 2431 `(#:tests? #f ; no tests
2e9cdb6a 2432 #:make-flags
2433 (list
2434 (string-append "PREFIX=" (assoc-ref %outputs "out"))
2435 (string-append "CC=" ,(cc-for-target))
2436 "WITH_XWAYLAND=YES"
2437 "WITH_SCREENCOPY=YES"
2438 "WITH_LAYERSHELL=YES"
2439 "WITH_VIRTUAL_INPUT=YES")
2440 #:phases
2441 (modify-phases %standard-phases
2442 (delete 'configure)
2443 (replace 'build
2444 (lambda* (#:key inputs outputs make-flags #:allow-other-keys)
2445 (apply invoke "bmake" make-flags)))
2446 (replace 'install
2447 (lambda* (#:key inputs outputs make-flags #:allow-other-keys)
2448 (apply invoke "bmake" "install" make-flags))))))
2449 (home-page "https://hikari.acmelabs.space/")
636caba1
NG
2450 (synopsis "Stacking Wayland compositor with tiling capabilities")
2451 (description
2452 "Hikari is a stacking Wayland compositor with additional tiling
2453capabilities. It is heavily inspired by the Calm Window manager(cwm).")
2e9cdb6a 2454 (license license:bsd-2)))
96026bdb 2455
2456(define-public wlogout
2457 (package
2458 (name "wlogout")
2459 (version "1.1.1")
2460 (source (origin
2461 (method git-fetch)
2462 (uri (git-reference
2463 (url "https://github.com/ArtsyMacaw/wlogout")
2464 (commit version)))
2465 (file-name (git-file-name name version))
2466 (sha256
2467 (base32
2468 "1swhzkqkzli59c89pvrakfvicd00x7ga860c3x2pbb4y3xziqfvi"))))
2469 (build-system meson-build-system)
2470 (native-inputs
2471 `(("pkg-config" ,pkg-config)
2472 ("scdoc" ,scdoc)))
2473 (inputs
2474 `(("gtk-layer-shell" ,gtk-layer-shell)
2475 ("gtk+" ,gtk+)))
2476 (arguments
2477 '(#:tests? #f
2478 #:phases
2479 (modify-phases %standard-phases
2480 (add-after 'unpack 'patch-source-paths
2481 (lambda* (#:key outputs #:allow-other-keys)
2482 (let ((out (assoc-ref outputs "out")))
2483 (substitute* "main.c"
2484 (("/usr/share") (string-append out "/share"))
2485 (("/etc") (string-append out "/etc"))))
2486 #t)))))
2487 (home-page "https://github.com/ArtsyMacaw/wlogout")
2488 (synopsis "Logout menu for Wayland")
2489 (description "wlogout is a logout menu for Wayland environments.")
2490 (license license:expat)))