add xmobar on Debian page
[KenyonWiki.git] / xmobar_on_Debian.mdwn
1 * 20090105 update: I'm running Debian on my main desktop machine now. Here's what I did this time. I was running Ubuntu, and the notes I wrote for that still exist below.
2 * 20100315 update: Probably none of these instructions are necessary anymore, since a recent version of [[!debpkg xmobar]] is in the [[Debian]] repositories. Just `sudo aptitude install xmobar` should be sufficient.
3
4 I already had [[!debpkg zlib1g-dev]] and [[!debpkg libxft-dev]] installed. zlib1g-dev would be pulled in by [[!debpkg libghc6-zlib-dev]] anyway. Also already used aptitude to install [[!debpkg xmonad]], so that might have pulled in some dependencies necessary for the following steps.
5
6 [[!toc levels=2]]
7
8 ## Debian instructions
9
10 ### stm
11 1. `sudo aptitude install libghc6-stm-dev` # dependency of xmobar
12
13 ### cabal
14 Since Debian sid doesn't have the Haskell X11-xft package, I want to install it with cabal-install, which Debian also does not have.
15
16 1. `darcs get --partial http://darcs.haskell.org/cabal-branches/cabal-1.6/` # (Per <http://www.haskell.org/cabal/code.html>.) Due to [cabal-install's](http://hackage.haskell.org/trac/hackage/wiki/CabalInstall) dependence on Cabal >=1.6 && <1.7, but Debian sid has Cabal-1.2.3.0 at the moment, which is part of [[!debpkg ghc6]].
17 1. `cd cabal-1.6`
18 1. `ghc --make Setup && ./Setup configure --user && ./Setup build && ./Setup install`
19 1. `cd ..`
20
21 ### HTTP and zlib
22 HTTP and zlib are dependencies of cabal-install.
23
24 1. `sudo aptitude install libghc6-http-dev libghc6-zlib-dev` # pulls in libghc6-network-dev and libghc6-parsec-dev
25
26 Debian squeeze currently doesn't have the required version of libghc6-http-dev, so following <http://projects.haskell.org/http/>:
27 1. `git clone git://code.galois.com/HTTPbis.git`
28 1. `runghc Setup configure --user && runghc Setup build && runghc Setup install`
29
30 ### cabal-install
31 1. `darcs get --partial http://darcs.haskell.org/cabal-install/`
32 1. `cd cabal-install`
33 1. `runghc Setup configure --user && runghc Setup build && runghc Setup install`
34 1. `cd ..`
35
36 cabal binary is now installed as `~/.cabal/bin/cabal`. I've added `~/.cabal/bin` to my `PATH`.
37
38 ### X11-xft
39 1. `cabal update`
40 1. `cabal install X11-xft`
41
42 ### xmobar
43 1. `darcs get --partial http://code.haskell.org/xmobar/`
44 1. `cd xmobar`
45 1. `runhaskell Setup configure --user --flags="with_xft" && runhaskell Setup build && runhaskell Setup install`
46
47 Now the xmobar binary is installed as `~/.cabal/bin/xmobar`.
48
49 At first, `Setup configure` could not find X11-xft, even though ghc-pkg list showed X11-xft as being installed in my home directory. This was because I forgot the "--user" option to `Setup configure`.
50
51 ### Notes
52 * [PROTIP](http://ohinternet.com/PROTIP): After doing any `runghc Setup configure --user && runghc Setup build && runghc Setup install`, that package is registered under ~/.ghc and visible to ghc-pkg. If you rm -rf ~/.cabal without ghc-pkg unregistering the package, then subsequent builds will fail.
53 * runhaskell is a symlink to runghc. I suppose runhaskell is more generic, so that compilers other than ghc can be run.
54 * [Haskell Package Version Tracker](http://people.debian.org/~nomeata/hackagevsdebian.html) - Debian versus Hackage
55 * I had to add `lowerOnStart = True` to my xmobarrc to get it to work this time. Otherwise it's the same as shown at the bottom of this page.
56
57 ----------
58
59 ## Old Ubuntu instructions
60
61 (December 2008) I use [[xmonad]] on [[Ubuntu]]. I use the [xmobar](http://code.haskell.org/~arossato/xmobar/) status bar with it. Ubuntu doesn't have a package for xmobar, nor for many of its dependencies. So to build xmobar I had to build and install a bunch of dependencies. Also, in order to make installing Haskell packages easier, I installed [[!haskellwiki cabal-install]], which had its own dependencies.
62
63 ### Dependencies with Ubuntu packages
64 First some dependencies can be installed using aptitude. These are [[!ubupkg libxft-dev]] (for [[!wikipedia xft]] support in xmobar), and [[!ubupkg zlib1g-dev]] for building cabal-install.
65
66 ### Building cabal-install dependencies
67 Building [[!hackage parsec]], [[!hackage stm]], [[!hackage network]], [[!hackage http]], and [[!hackage zlib]] should now work with the command `runghc Setup configure --user && runghc Setup build && runghc Setup install` for each. Or you could use the bootstrap.sh included with cabal-install.
68
69 I think those are all of the dependencies.
70
71 ### Building cabal-install
72 Now cabal-install should install into your home directory with the standard Haskell configure, build, and install commands:
73
74     runghc Setup configure --user && runghc Setup build && runghc Setup install
75
76 ### Installing X11-xft
77 With cabal installed, a simple `cabal install X11-xft` should work.
78
79 ### Building xmobar
80 Finally, I was able to build xmobar. I'm using the version pulled directly from the [[!haskellwiki darcs]] repository.
81
82 ### xmobar.config
83 Here is my `~/.xmonad/xmobar.config`:
84
85     Config { font = "-*-fixed-medium-r-normal-*-13-*-*-*-*-*-*-*"
86            , bgColor = "black"
87            , fgColor = "grey"
88            , position = TopW L 90
89            , commands = [ Run Weather "KNKX" ["-t","<station>: <tempC>C","-L","18","-H","25","--normal","green","--high","red","--low","lightblue"] 36000
90                         , Run Network "eth0" ["-L","0","-H","32","--normal","green","--high","red"] 10
91                         , Run Cpu ["-L","3","-H","50","--normal","green","--high","red"] 10
92                         , Run Memory ["-t","Mem: <usedratio>%"] 10
93                         , Run Swap [] 10
94                         , Run Com "uname" ["-s","-r"] "" 36000
95                         , Run Date "%a %b %_d %Y %H:%M:%S" "date" 10
96                         , Run StdinReader
97                         ]
98            , sepChar = "%"
99            , alignSep = "}{"
100            , template = "%StdinReader% }{ %cpu% | %memory% * %swap% | %eth0% <fc=#ee9a00>%date%</fc>| %KNKX% | %uname%"
101            }
102
103 ### External links
104 * This blog post was helpful: <http://gimbo.org.uk/blog/2007/04/27/haskell-packages-gotcha-global-vs-per-user-package-databases/>
105 * Help make Ubuntu packages for Haskell stuff: <https://wiki.ubuntu.com/MOTU/Teams/UncommonProgrammingLanguages/Haskell>
106 * This thread helped figure out why zlib wasn't building: <http://www.nabble.com/zlib,-missing-zlib.h-td17547823.html>
107
108 [[!tag Ubuntu Debian]]