fix formatting, add links
[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 [[!hackage HTTP]] and [[!hackage zlib]] are dependencies of cabal-install.
23
24 1. `sudo aptitude install libghc6-http-dev libghc6-zlib-dev` # pulls in [[!debpkg libghc6-network-dev]] and [[!debpkg libghc6-parsec-dev]]
25
26 Debian squeeze currently doesn't have the required version of [[!debpkg libghc6-http-dev]], so following <http://projects.haskell.org/http/> (or what used to be there):
27
28 1. `git clone git://code.galois.com/HTTPbis.git`
29 1. `runghc Setup configure --user && runghc Setup build && runghc Setup install`
30
31 ### cabal-install
32 1. `darcs get --partial http://darcs.haskell.org/cabal-install/`
33 1. `cd cabal-install`
34 1. `runghc Setup configure --user && runghc Setup build && runghc Setup install`
35 1. `cd ..`
36
37 cabal binary is now installed as `~/.cabal/bin/cabal`. I've added `~/.cabal/bin` to my `PATH`.
38
39 ### X11-xft
40 1. `cabal update`
41 1. `cabal install X11-xft`
42
43 ### xmobar
44 1. `darcs get --partial http://code.haskell.org/xmobar/`
45 1. `cd xmobar`
46 1. `runhaskell Setup configure --user --flags="with_xft" && runhaskell Setup build && runhaskell Setup install`
47
48 Now the xmobar binary is installed as `~/.cabal/bin/xmobar`.
49
50 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`.
51
52 ### Notes
53 * [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.
54 * runhaskell is a symlink to runghc. I suppose runhaskell is more generic, so that compilers other than ghc can be run.
55 * [Haskell Package Version Tracker](http://people.debian.org/~nomeata/hackagevsdebian.html) - Debian versus Hackage
56 * 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.
57
58 ----------
59
60 ## Old Ubuntu instructions
61
62 (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.
63
64 ### Dependencies with Ubuntu packages
65 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.
66
67 ### Building cabal-install dependencies
68 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.
69
70 I think those are all of the dependencies.
71
72 ### Building cabal-install
73 Now cabal-install should install into your home directory with the standard Haskell configure, build, and install commands:
74
75     runghc Setup configure --user && runghc Setup build && runghc Setup install
76
77 ### Installing X11-xft
78 With cabal installed, a simple `cabal install X11-xft` should work.
79
80 ### Building xmobar
81 Finally, I was able to build xmobar. I'm using the version pulled directly from the [[!haskellwiki darcs]] repository.
82
83 ### xmobar.config
84 Here is my `~/.xmonad/xmobar.config`:
85
86     Config { font = "-*-fixed-medium-r-normal-*-13-*-*-*-*-*-*-*"
87            , bgColor = "black"
88            , fgColor = "grey"
89            , position = TopW L 90
90            , commands = [ Run Weather "KNKX" ["-t","<station>: <tempC>C","-L","18","-H","25","--normal","green","--high","red","--low","lightblue"] 36000
91                         , Run Network "eth0" ["-L","0","-H","32","--normal","green","--high","red"] 10
92                         , Run Cpu ["-L","3","-H","50","--normal","green","--high","red"] 10
93                         , Run Memory ["-t","Mem: <usedratio>%"] 10
94                         , Run Swap [] 10
95                         , Run Com "uname" ["-s","-r"] "" 36000
96                         , Run Date "%a %b %_d %Y %H:%M:%S" "date" 10
97                         , Run StdinReader
98                         ]
99            , sepChar = "%"
100            , alignSep = "}{"
101            , template = "%StdinReader% }{ %cpu% | %memory% * %swap% | %eth0% <fc=#ee9a00>%date%</fc>| %KNKX% | %uname%"
102            }
103
104 ### External links
105 * This blog post was helpful: <http://gimbo.org.uk/blog/2007/04/27/haskell-packages-gotcha-global-vs-per-user-package-databases/>
106 * Help make Ubuntu packages for Haskell stuff: <https://wiki.ubuntu.com/MOTU/Teams/UncommonProgrammingLanguages/Haskell>
107 * This thread helped figure out why zlib wasn't building: <http://www.nabble.com/zlib,-missing-zlib.h-td17547823.html>
108
109 [[!tag Ubuntu Debian]]