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