summaryrefslogtreecommitdiffhomepage
path: root/doc/compiling.org
blob: dabcec667b6cf67e26cf5d7bec75389ca1ecb37c (plain)
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
#+title: Compiling xmobar from 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

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

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

** Optional features
   :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, as shown in the examples above.

   Extensions need additional libraries (listed below) that will be
   automatically downloaded and installed if you're using cabal
   install.  Otherwise, you'll need to install them yourself.

   - =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_xft= Antialiased font support.  Deprecated: use =with_cairo= instead.

   - =with_cairo= Antialiased fonts via Cairo/Pango. Requires the [[http://hackage.haskell.org/package/X11-xft/][X11-xft]]
     package. This option automatically enables UTF-8. To use XFT fonts you
     can use their fontconfig name, e.g

     #+begin_src haskell
       font = "Iosevka Medium 10"
       font = "DejaVu Sans Mono italic 9"
     #+end_src

     Or to have fallback fonts, just separate them by commas:

     #+begin_src haskell
       font = "Open Sans,WenQuanYi Zen Hei 9"
     #+end_src

     For backwards compatibility, font names with `xft:` are also supported.

     #+begin_src haskell
       font = "xft:DejaVu Sans Mono-10"
     #+end_src

   - =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. 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 [netlink] and
     [cereal] packages.

   - =with_iwlib= Support for wireless cards via Wext ioctls (deprecated).
     Enables the Wireless plugin. No Haskell library is required, but 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=.

   - =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_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.

   - =with_uvmeter= Enables UVMeter plugin. The plugin shows UV data for
     Australia.

   - =with_weather= Support to display weather information. Enables Weather
     plugin.

   - =all_extensions= Enables all the extensions above.