gnu: Adjust formatting as recommended by 'guix lint'.
[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
SB
3;;; Copyright © 2015 Siniša Biđin <sinisa@bidin.eu>
4;;; Copyright © 2015 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>
bda2ded6
ED
7;;;
8;;; This file is part of GNU Guix.
9;;;
10;;; GNU Guix is free software; you can redistribute it and/or modify it
11;;; under the terms of the GNU General Public License as published by
12;;; the Free Software Foundation; either version 3 of the License, or (at
13;;; your option) any later version.
14;;;
15;;; GNU Guix is distributed in the hope that it will be useful, but
16;;; WITHOUT ANY WARRANTY; without even the implied warranty of
17;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18;;; GNU General Public License for more details.
19;;;
20;;; You should have received a copy of the GNU General Public License
21;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
22
23(define-module (gnu packages wm)
24 #:use-module (guix licenses)
25 #:use-module (guix packages)
c595cd47 26 #:use-module (gnu packages)
bda2ded6
ED
27 #:use-module (gnu packages linux)
28 #:use-module (guix build-system gnu)
6e38c4be
SB
29 #:use-module (guix build-system haskell)
30 #:use-module (gnu packages haskell)
bda2ded6
ED
31 #:use-module (gnu packages base)
32 #:use-module (gnu packages pkg-config)
33 #:use-module (gnu packages perl)
34 #:use-module (gnu packages xorg)
35 #:use-module (gnu packages xdisorg)
36 #:use-module (gnu packages qt)
37 #:use-module (gnu packages asciidoc)
38 #:use-module (gnu packages xml)
39 #:use-module (gnu packages m4)
40 #:use-module (gnu packages docbook)
41 #:use-module (gnu packages pcre)
42 #:use-module (gnu packages gtk)
43 #:use-module (gnu packages libevent)
44 #:use-module (gnu packages maths)
45 #:use-module (gnu packages web)
46 #:use-module (guix download)
47 #:use-module (guix git-download))
48
5c37126f
ED
49(define-public libconfuse
50 (package
51 (name "libconfuse")
52 (version "2.7")
53 (source (origin
54 (method url-fetch)
55 (uri (string-append "http://savannah.nongnu.org/download/confuse/"
56 "confuse-" version ".tar.gz"))
57 (sha256
58 (base32
59 "0y47r2ashz44wvnxdb18ivpmj8nxhw3y9bf7v9w0g5byhgyp89g3"))))
60 (build-system gnu-build-system)
61 (home-page "http://www.nongnu.org/confuse/")
62 (synopsis "Configuration file parser library")
63 (description "libconfuse is a configuration file parser library. It
64supports sections and (lists of) values (strings, integers, floats, booleans
65or other sections), as well as some other features (such as
66single/double-quoted strings, environment variable expansion, functions and
67nested include statements).")
68 (license isc)))
69
1268e52d 70(define-public bspwm
71 (package
72 (name "bspwm")
73 (version "0.9")
74 (source
75 (origin
76 (file-name (string-append name "-" version ".tar.gz"))
77 (method url-fetch)
78 (uri (string-append
79 "https://github.com/baskerville/bspwm/archive/"
80 version ".tar.gz"))
81 (sha256
82 (base32
83 "1pig0h2jk8wipyz90j69c4bk37bfyq60asnn0v0bqld2p2vjvyqy"))))
84 (build-system gnu-build-system)
85 (inputs
86 `(("libxcb" ,libxcb)
87 ("libxinerama" ,libxinerama)
88 ("sxhkd" ,sxhkd)
89 ("xcb-util" ,xcb-util)
90 ("xcb-util-keysyms" ,xcb-util-keysyms)
91 ("xcb-util-wm" ,xcb-util-wm)))
92 (arguments
93 '(#:phases (alist-delete 'configure %standard-phases)
94 #:tests? #f ; no check target
95 #:make-flags (list "CC=gcc"
96 (string-append "PREFIX=" %output))))
97 (home-page "https://github.com/baskerville/bspwm")
98 (synopsis "Tiling window manager based on binary space partitioning")
99 (description "bspwm is a tiling window manager that represents windows as
100the leaves of a full binary tree.")
101 (license bsd-2)))
102
63b1bdbc
ED
103(define-public i3status
104 (package
105 (name "i3status")
106 (version "2.9")
107 (source (origin
108 (method url-fetch)
109 (uri (string-append "http://i3wm.org/i3status/i3status-"
110 version ".tar.bz2"))
111 (sha256
112 (base32
113 "1qwxbrga2fi5wf742hh9ajwa8b2kpzkjjnhjlz4wlpv21i80kss2"))))
114 (build-system gnu-build-system)
115 (arguments
116 `(#:make-flags (list "CC=gcc" (string-append "PREFIX=" %output))
117 #:phases
118 (modify-phases %standard-phases
119 (delete 'configure))
120 #:tests? #f)) ; no test suite
121 (inputs
122 `(("openlibm" ,openlibm)
123 ("libconfuse" ,libconfuse)
124 ("libyajl" ,libyajl)
125 ("alsa-lib" ,alsa-lib)
126 ("wireless-tools" ,wireless-tools)
127 ("libcap" ,libcap)
128 ("asciidoc" ,asciidoc)))
129 (home-page "http://i3wm.org/i3status/")
130 (synopsis "Status bar for i3bar, dzen2, xmobar or similar programs")
131 (description "i3status is a small program for generating a status bar for
132i3bar, dzen2, xmobar or similar programs. It is designed to be very efficient
133by issuing a very small number of system calls, as one generally wants to
134update such a status line every second. This ensures that even under high
135load, your status bar is updated correctly. Also, it saves a bit of energy by
136not hogging your CPU as much as spawning the corresponding amount of shell
137commands would.")
138 (license bsd-3)))
139
bda2ded6
ED
140(define-public i3-wm
141 (package
142 (name "i3-wm")
143 (version "4.10.3")
144 (source (origin
145 (method url-fetch)
146 (uri (string-append "http://i3wm.org/downloads/i3-"
147 version ".tar.bz2"))
148 (sha256
149 (base32
150 "1lq7h4w7m0hi31iva8g7yf1sc11ispnknxjdaj9agld4smxqb44j"))))
151 (build-system gnu-build-system)
152 (arguments
153 `(#:make-flags (list "CC=gcc" (string-append "PREFIX=" %output))
154 #:phases
155 (modify-phases %standard-phases
156 (delete 'configure))
157 #:tests? #f)) ; no test suite
158 (inputs
159 `(("libxcb" ,libxcb)
160 ("xcb-util" ,xcb-util)
161 ("xcb-util-cursor" ,xcb-util-cursor)
162 ("xcb-util-keysyms" ,xcb-util-keysyms)
163 ("xcb-util-wm" ,xcb-util-wm)
164 ("libxkbcommon" ,libxkbcommon)
165 ("libev" ,libev)
166 ("libyajl" ,libyajl)
167 ("asciidoc" ,asciidoc)
168 ("xmlto" ,xmlto)
169 ("perl-pod-simple" ,perl-pod-simple)
170 ("docbook-xml" ,docbook-xml)
171 ("libx11" ,libx11)
172 ("pcre" ,pcre)
173 ("startup-notification" ,startup-notification)
174 ("pango" ,pango)
175 ("cairo" ,cairo)))
176 (native-inputs
177 `(("which" ,which)
178 ("perl" ,perl)
179 ("pkg-config" ,pkg-config)))
180 (home-page "http://i3wm.org/")
181 (synopsis "Improved tiling window manager")
a124bbd2 182 (description "A tiling window manager, completely written
bda2ded6
ED
183from scratch. i3 is primarily targeted at advanced users and
184developers.")
185 (license bsd-3)))
6e38c4be
SB
186
187(define-public xmonad
188 (package
189 (name "xmonad")
190 (version "0.11.1")
191 (synopsis "Tiling window manager")
192 (source (origin
193 (method url-fetch)
194 (uri (string-append "http://hackage.haskell.org/package/xmonad/"
ca80b8ba 195 name "-" version ".tar.gz"))
6e38c4be
SB
196 (sha256
197 (base32
ca80b8ba
PW
198 "1pfjssamiwpwjp1qqkm9m9p9s35pv381m0cwg6jxg0ppglibzq1r"))
199 (modules '((guix build utils)))
200 (snippet
201 ;; Here we update the constraints on the utf8-string package in
202 ;; the Cabal file. We allow a newer version which is compatible
203 ;; with GHC 7.10.2. The same change is applied on Hackage. See
204 ;; <https://hackage.haskell.org/package/xmonad-0.11.1/revisions/>.
205 '(substitute* "xmonad.cabal"
206 (("utf8-string >= 0.3 && < 0.4")
207 "utf8-string >= 0.3 && < 1.1")))))
6e38c4be
SB
208 (build-system haskell-build-system)
209 (inputs
210 `(("ghc-mtl" ,ghc-mtl)
211 ("ghc-utf8-string" ,ghc-utf8-string)
212 ("ghc-extensible-exceptions" ,ghc-extensible-exceptions)
213 ("ghc-x11" ,ghc-x11)))
214 (arguments
215 `(#:phases
216 (modify-phases %standard-phases
217 (add-after
218 'install 'install-xsession
219 (lambda _
220 (let* ((xsessions (string-append %output "/share/xsessions")))
221 (mkdir-p xsessions)
222 (call-with-output-file
223 (string-append xsessions "/xmonad.desktop")
224 (lambda (port)
225 (format port "~
226 [Desktop Entry]~@
227 Name=~a~@
228 Comment=~a~@
229 Exec=~a/bin/xmonad~@
230 Type=Application~%" ,name ,synopsis %output)))))))))
231 (home-page "http://xmonad.org")
232 (description
233 "Xmonad is a tiling window manager for X. Windows are arranged
234automatically to tile the screen without gaps or overlap, maximising screen
235use. All features of the window manager are accessible from the keyboard: a
236mouse is strictly optional. Xmonad is written and extensible in Haskell.
237Custom layout algorithms, and other extensions, may be written by the user in
238config files. Layouts are applied dynamically, and different layouts may be
239used on each workspace. Xinerama is fully supported, allowing windows to be
240tiled on several screens.")
241 (license bsd-3)))
78edf44c
SB
242
243(define-public ghc-xmonad-contrib
244 (package
245 (name "ghc-xmonad-contrib")
2687f7db 246 (version "0.11.4")
78edf44c
SB
247 (source
248 (origin
249 (method url-fetch)
250 (uri (string-append "http://hackage.haskell.org/package/xmonad-contrib/"
251 "xmonad-contrib-" version ".tar.gz"))
252 (sha256
253 (base32
2687f7db 254 "1g5cw9vvnfbiyi599fngk02zlmdhrf82x0bndhypkn6kybab6yd3"))))
78edf44c
SB
255 (build-system haskell-build-system)
256 (propagated-inputs
257 `(("ghc-mtl" ,ghc-mtl)
2687f7db 258 ("ghc-old-time" ,ghc-old-time)
78edf44c
SB
259 ("ghc-random" ,ghc-random)
260 ("ghc-utf8-string" ,ghc-utf8-string)
261 ("ghc-extensible-exceptions" ,ghc-extensible-exceptions)
262 ("ghc-x11" ,ghc-x11)
263 ("ghc-x11-xft" ,ghc-x11-xft)
264 ("xmonad" ,xmonad)))
265 (home-page "http://xmonad.org")
266 (synopsis "Third party extensions for xmonad")
267 (description
268 "Third party tiling algorithms, configurations, and scripts to Xmonad, a
269tiling window manager for X.")
270 (license bsd-3)))
45e10968
EB
271
272(define-public evilwm
273 (package
274 (name "evilwm")
275 (version "1.1.1")
276 (source
277 (origin
278 (method url-fetch)
279 (uri (string-append "http://www.6809.org.uk/evilwm/evilwm-"
280 version ".tar.gz"))
281 (sha256
282 (base32
c595cd47
EB
283 "0ak0yajzk3v4dg5wmaghv6acf7v02a4iw8qxmq5yw5ard8lrqn3r"))
284 (patches (map search-patch '("evilwm-lost-focus-bug.patch")))))
45e10968
EB
285 (build-system gnu-build-system)
286 (inputs
287 `(("libx11" ,libx11)
288 ("libxext" ,libxext)
289 ("libxrandr" ,libxrandr)))
290 (arguments
291 `(#:modules ((srfi srfi-26)
292 (guix build utils)
293 (guix build gnu-build-system))
294 #:make-flags (let ((inputs (map (cut assoc-ref %build-inputs <>)
295 '("libx11" "libxext" "libxrandr")))
296 (join (lambda (proc strs)
297 (string-join (map proc strs) " ")))
298 (dash-I (cut string-append "-I" <> "/include"))
299 (dash-L (cut string-append "-L" <> "/lib")))
300 `("desktopfilesdir=$(prefix)/share/xsessions"
301 ,(string-append "prefix=" (assoc-ref %outputs "out"))
302 ,(string-append "CPPFLAGS=" (join dash-I inputs))
303 ,(string-append "LDFLAGS=" (join dash-L inputs))))
304 #:tests? #f ;no tests
305 #:phases (modify-phases %standard-phases
306 (delete 'configure)))) ;no configure script
307 (home-page "http://www.6809.org.uk/evilwm/")
308 (synopsis "Minimalist window manager for the X Window System")
309 (description
310 "evilwm is a minimalist window manager based on aewm, extended to feature
311many keyboard controls with repositioning and maximize toggles, solid window
312drags, snap-to-border support, and virtual desktops.")
313 (license (x11-style "file:///README"))))