gnu: Add sxhkd.
[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>
bda2ded6
ED
5;;;
6;;; This file is part of GNU Guix.
7;;;
8;;; GNU Guix is free software; you can redistribute it and/or modify it
9;;; under the terms of the GNU General Public License as published by
10;;; the Free Software Foundation; either version 3 of the License, or (at
11;;; your option) any later version.
12;;;
13;;; GNU Guix is distributed in the hope that it will be useful, but
14;;; WITHOUT ANY WARRANTY; without even the implied warranty of
15;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16;;; GNU General Public License for more details.
17;;;
18;;; You should have received a copy of the GNU General Public License
19;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
20
21(define-module (gnu packages wm)
22 #:use-module (guix licenses)
23 #:use-module (guix packages)
24 #:use-module (gnu packages linux)
25 #:use-module (guix build-system gnu)
6e38c4be
SB
26 #:use-module (guix build-system haskell)
27 #:use-module (gnu packages haskell)
bda2ded6
ED
28 #:use-module (gnu packages base)
29 #:use-module (gnu packages pkg-config)
30 #:use-module (gnu packages perl)
31 #:use-module (gnu packages xorg)
32 #:use-module (gnu packages xdisorg)
33 #:use-module (gnu packages qt)
34 #:use-module (gnu packages asciidoc)
35 #:use-module (gnu packages xml)
36 #:use-module (gnu packages m4)
37 #:use-module (gnu packages docbook)
38 #:use-module (gnu packages pcre)
39 #:use-module (gnu packages gtk)
40 #:use-module (gnu packages libevent)
41 #:use-module (gnu packages maths)
42 #:use-module (gnu packages web)
43 #:use-module (guix download)
44 #:use-module (guix git-download))
45
5c37126f
ED
46(define-public libconfuse
47 (package
48 (name "libconfuse")
49 (version "2.7")
50 (source (origin
51 (method url-fetch)
52 (uri (string-append "http://savannah.nongnu.org/download/confuse/"
53 "confuse-" version ".tar.gz"))
54 (sha256
55 (base32
56 "0y47r2ashz44wvnxdb18ivpmj8nxhw3y9bf7v9w0g5byhgyp89g3"))))
57 (build-system gnu-build-system)
58 (home-page "http://www.nongnu.org/confuse/")
59 (synopsis "Configuration file parser library")
60 (description "libconfuse is a configuration file parser library. It
61supports sections and (lists of) values (strings, integers, floats, booleans
62or other sections), as well as some other features (such as
63single/double-quoted strings, environment variable expansion, functions and
64nested include statements).")
65 (license isc)))
66
63b1bdbc
ED
67(define-public i3status
68 (package
69 (name "i3status")
70 (version "2.9")
71 (source (origin
72 (method url-fetch)
73 (uri (string-append "http://i3wm.org/i3status/i3status-"
74 version ".tar.bz2"))
75 (sha256
76 (base32
77 "1qwxbrga2fi5wf742hh9ajwa8b2kpzkjjnhjlz4wlpv21i80kss2"))))
78 (build-system gnu-build-system)
79 (arguments
80 `(#:make-flags (list "CC=gcc" (string-append "PREFIX=" %output))
81 #:phases
82 (modify-phases %standard-phases
83 (delete 'configure))
84 #:tests? #f)) ; no test suite
85 (inputs
86 `(("openlibm" ,openlibm)
87 ("libconfuse" ,libconfuse)
88 ("libyajl" ,libyajl)
89 ("alsa-lib" ,alsa-lib)
90 ("wireless-tools" ,wireless-tools)
91 ("libcap" ,libcap)
92 ("asciidoc" ,asciidoc)))
93 (home-page "http://i3wm.org/i3status/")
94 (synopsis "Status bar for i3bar, dzen2, xmobar or similar programs")
95 (description "i3status is a small program for generating a status bar for
96i3bar, dzen2, xmobar or similar programs. It is designed to be very efficient
97by issuing a very small number of system calls, as one generally wants to
98update such a status line every second. This ensures that even under high
99load, your status bar is updated correctly. Also, it saves a bit of energy by
100not hogging your CPU as much as spawning the corresponding amount of shell
101commands would.")
102 (license bsd-3)))
103
bda2ded6
ED
104(define-public i3-wm
105 (package
106 (name "i3-wm")
107 (version "4.10.3")
108 (source (origin
109 (method url-fetch)
110 (uri (string-append "http://i3wm.org/downloads/i3-"
111 version ".tar.bz2"))
112 (sha256
113 (base32
114 "1lq7h4w7m0hi31iva8g7yf1sc11ispnknxjdaj9agld4smxqb44j"))))
115 (build-system gnu-build-system)
116 (arguments
117 `(#:make-flags (list "CC=gcc" (string-append "PREFIX=" %output))
118 #:phases
119 (modify-phases %standard-phases
120 (delete 'configure))
121 #:tests? #f)) ; no test suite
122 (inputs
123 `(("libxcb" ,libxcb)
124 ("xcb-util" ,xcb-util)
125 ("xcb-util-cursor" ,xcb-util-cursor)
126 ("xcb-util-keysyms" ,xcb-util-keysyms)
127 ("xcb-util-wm" ,xcb-util-wm)
128 ("libxkbcommon" ,libxkbcommon)
129 ("libev" ,libev)
130 ("libyajl" ,libyajl)
131 ("asciidoc" ,asciidoc)
132 ("xmlto" ,xmlto)
133 ("perl-pod-simple" ,perl-pod-simple)
134 ("docbook-xml" ,docbook-xml)
135 ("libx11" ,libx11)
136 ("pcre" ,pcre)
137 ("startup-notification" ,startup-notification)
138 ("pango" ,pango)
139 ("cairo" ,cairo)))
140 (native-inputs
141 `(("which" ,which)
142 ("perl" ,perl)
143 ("pkg-config" ,pkg-config)))
144 (home-page "http://i3wm.org/")
145 (synopsis "Improved tiling window manager")
146 (description "i3 is a tiling window manager, completely written
147from scratch. i3 is primarily targeted at advanced users and
148developers.")
149 (license bsd-3)))
6e38c4be
SB
150
151(define-public xmonad
152 (package
153 (name "xmonad")
154 (version "0.11.1")
155 (synopsis "Tiling window manager")
156 (source (origin
157 (method url-fetch)
158 (uri (string-append "http://hackage.haskell.org/package/xmonad/"
159 "xmonad-" version ".tar.gz"))
160 (sha256
161 (base32
162 "1pfjssamiwpwjp1qqkm9m9p9s35pv381m0cwg6jxg0ppglibzq1r"))))
163 (build-system haskell-build-system)
164 (inputs
165 `(("ghc-mtl" ,ghc-mtl)
166 ("ghc-utf8-string" ,ghc-utf8-string)
167 ("ghc-extensible-exceptions" ,ghc-extensible-exceptions)
168 ("ghc-x11" ,ghc-x11)))
169 (arguments
170 `(#:phases
171 (modify-phases %standard-phases
172 (add-after
173 'install 'install-xsession
174 (lambda _
175 (let* ((xsessions (string-append %output "/share/xsessions")))
176 (mkdir-p xsessions)
177 (call-with-output-file
178 (string-append xsessions "/xmonad.desktop")
179 (lambda (port)
180 (format port "~
181 [Desktop Entry]~@
182 Name=~a~@
183 Comment=~a~@
184 Exec=~a/bin/xmonad~@
185 Type=Application~%" ,name ,synopsis %output)))))))))
186 (home-page "http://xmonad.org")
187 (description
188 "Xmonad is a tiling window manager for X. Windows are arranged
189automatically to tile the screen without gaps or overlap, maximising screen
190use. All features of the window manager are accessible from the keyboard: a
191mouse is strictly optional. Xmonad is written and extensible in Haskell.
192Custom layout algorithms, and other extensions, may be written by the user in
193config files. Layouts are applied dynamically, and different layouts may be
194used on each workspace. Xinerama is fully supported, allowing windows to be
195tiled on several screens.")
196 (license bsd-3)))
78edf44c
SB
197
198(define-public ghc-xmonad-contrib
199 (package
200 (name "ghc-xmonad-contrib")
201 (version "0.11.3")
202 (source
203 (origin
204 (method url-fetch)
205 (uri (string-append "http://hackage.haskell.org/package/xmonad-contrib/"
206 "xmonad-contrib-" version ".tar.gz"))
207 (sha256
208 (base32
209 "14h9vr33yljymswj50wbimav263y9abdcgi07mvfis0zd08rxqxa"))))
210 (build-system haskell-build-system)
211 (propagated-inputs
212 `(("ghc-mtl" ,ghc-mtl)
213 ("ghc-random" ,ghc-random)
214 ("ghc-utf8-string" ,ghc-utf8-string)
215 ("ghc-extensible-exceptions" ,ghc-extensible-exceptions)
216 ("ghc-x11" ,ghc-x11)
217 ("ghc-x11-xft" ,ghc-x11-xft)
218 ("xmonad" ,xmonad)))
219 (home-page "http://xmonad.org")
220 (synopsis "Third party extensions for xmonad")
221 (description
222 "Third party tiling algorithms, configurations, and scripts to Xmonad, a
223tiling window manager for X.")
224 (license bsd-3)))