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