1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
#+title: Compiling xmobar
* Getting the source
If you don't have =cabal-install= installed, you can get xmobar's source
code in a variety of ways:
- From [[http://hackage.haskell.org/package/xmobar/][Hackage]]. Just download the latest release from xmobar's hackage
page.
- From [[http://codeberg.org/xmobar/xmobar/][Codeberg]]. There are also tarballs available for every tagged
release on [[https://codeberg.org/xmobar/xmobar/releases][Codeberg's releases page]]
- From the bleeding edge repo. If you prefer to live dangerously, just
get the latest and greatest (and buggiest, I guess) using git:
#+begin_src shell
git clone git://codeberg.org/xmobar/xmobar
#+end_src
* C library dependencies
:PROPERTIES:
:CUSTOM_ID: c-libraries
:END:
To build xmobar you will need the Xorg and Pango/Cairo C-libraries and
headers installed in your system. In Debian and derivatives that's easily
accomplished via
#+begin_src shell
apt-get install -y xorg-dev libxrandr-dev libpango1.0-dev
#+end_src
and, optionally, in order to be able to build all available extensions and
plugins:
#+begin_src shell
apt-get install -y libasound2-dev libxpm-dev libmpd-dev
#+end_src
* Compilation using cabal
If you have cabal installed, you can now use it from within xmobar's source
tree:
#+begin_src shell
cabal install --flags="all_extensions"
#+end_src
* Compilation using stack
There is also a =stack.yaml= file that will allow you to install the
xmobar executable with
#+begin_src shell
stack install
#+end_src
See the =stack.yaml= file for the enabled extensions. You can also pass
them to =stack= directly:
#+begin_src shell
stack install --flag xmobar:all_extensions
#+end_src
* Compilation flags
:PROPERTIES:
:CUSTOM_ID: optional-features
:END:
You can configure xmobar to include some optional plugins and features,
which are not compiled by default. To that end, you need to add one or more
flags to either the cabal install command or the configure setup step.
Extensions need additional Haskell packages (listed below) that will be
automatically downloaded and installed if you're using cabal install.
Otherwise, you'll need to install them yourself.
** Optional features
- =with_dbus= Enables support for DBUS by making xmobar to publish a
service on the session bus. Requires the [[http://hackage.haskell.org/package/dbus][dbus]] package.
- =with_threaded= Uses GHC's threaded runtime. Use this option if xmobar
enters a high-CPU regime right after starting.
- =with_xrender= Enables the main bar background alpha parameter. Requires
the [[http://hackage.haskell.org/package/X11-xft/][X11-xft]] package.
- =with_xpm= Support for xpm image file format. This will allow loading
.xpm files in =<icon>=. Requires the [[http://cgit.freedesktop.org/xorg/lib/libXpm][libXpm]] C library.
** Optional plugins
The following plugins and monitors are optional. You can enable them all
at once using the flag ~all_extensions~, or one by one with the following
flags:
- =with_mpd= Enables support for the [[http://mpd.wikia.com/][MPD]] daemon. Requires the [[http://hackage.haskell.org/package/libmpd/][libmpd]]
package.
- =with_mpris= Enables support for MPRIS v1/v2 protocol used by the plugins
of the same name. Requires the [[http://hackage.haskell.org/package/dbus][dbus]] and [[http://hackage.haskell.org/package/text][text]] packages.
- =with_inotify= Support for inotify in modern Linux kernels. This option is
needed for the ~MBox~ and ~Mail~ plugins to work. Requires the [[http://hackage.haskell.org/package/hinotify/][hinotify]]
package.
- =with_nl80211= Support for wireless cards on Linux via nl80211 (all
upstream drivers). Enables the ~Wireless~ plugin. Requires [[http://hackage.haskell.org/package/netlink][netlink]] and
[[http://hackage.haskell.org/package/cereal/][cereal]] packages.
- =with_alsa= Support for ALSA sound cards. Enables the Volume plugin.
Requires the [[http://hackage.haskell.org/package/alsa-mixer][alsa-mixer]] package. To install the latter, you'll need
the [[http://packages.debian.org/stable/libasound2-dev][libasound]] C library and headers in your system (e.g., install
=libasound2-dev= in Debian-based systems).
- =with_datezone= Support for other timezones. Enables the DateZone
plugin. Requires [[http://hackage.haskell.org/package/timezone-olson][timezone-olson]] and [[http://hackage.haskell.org/package/timezone-series][timezone-series]] package.
- =with_weather= Support to display weather information. Enables Weather
plugin.
Finally, the following flags enable plugins not included by ~all_extensions~:
- =with_uvmeter= Enables the ~UVMeter~ plugin. The plugin shows UV data for
Australia.
- =with_kraken= Enables the ~Kraken~ plugin.
- =with_iwlib= Support for wireless cards via Wext ioctls (deprecated).
Enables the ~Wireless~ plugin. You will need the [[http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html][iwlib]] C library and
headers in your system (e.g., install =libiw-dev= in Debian-based systems
or =wireless_tools= on Arch Linux). Conflicts with =with_nl80211=.
|