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