diff options
Diffstat (limited to 'doc')
-rw-r--r-- | doc/compiling.org | 162 |
1 files changed, 88 insertions, 74 deletions
diff --git a/doc/compiling.org b/doc/compiling.org index 6c707e5..4e0125e 100644 --- a/doc/compiling.org +++ b/doc/compiling.org @@ -1,104 +1,114 @@ -#+title: Compiling xmobar from source +#+title: Compiling xmobar -If you don't have =cabal-install= installed, you can get xmobar's source -code in a variety of ways: +* Getting the source -- From [[http://hackage.haskell.org/package/xmobar/][Hackage]]. Just download the latest release from xmobar's hackage - page. + If you don't have =cabal-install= installed, you can get xmobar's source + code in a variety of ways: -- 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 [[http://hackage.haskell.org/package/xmobar/][Hackage]]. Just download the latest release from xmobar's hackage + page. -- From the bleeding edge repo. If you prefer to live dangerously, just - get the latest and greatest (and buggiest, I guess) using git: + - 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 - git clone git://codeberg.org/xmobar/xmobar + apt-get install -y xorg-dev libxrandr-dev libpango1.0-dev #+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 + and, optionally, in order to be able to build all available extensions and + plugins: -There is also a =stack.yaml= file that will allow you to install the -xmobar executable with + #+begin_src shell + apt-get install -y libasound2-dev libxpm-dev libmpd-dev + #+end_src -#+begin_src shell - stack install -#+end_src +* Compilation using cabal -See the =stack.yaml= file for the enabled extensions. You can also pass -them to =stack= directly: + If you have cabal installed, you can now use it from within xmobar's source + tree: -#+begin_src shell - stack install --flag xmobar:all_extensions -#+end_src + #+begin_src shell + cabal install --flags="all_extensions" + #+end_src -** Optional features - :PROPERTIES: - :CUSTOM_ID: optional-features - :END: +* Compilation using stack - 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. + There is also a =stack.yaml= file that will allow you to install the + xmobar executable with - 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. + #+begin_src shell + stack install + #+end_src - - =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. + See the =stack.yaml= file for the enabled extensions. You can also pass + them to =stack= directly: - - =with_threaded= Uses GHC's threaded runtime. Use this option if xmobar - enters a high-CPU regime right after starting. + #+begin_src shell + stack install --flag xmobar:all_extensions + #+end_src - - =with_cairo= Antialiased fonts via Cairo/Pango. For fonts, you can use - their fontconfig name, e.g +* Compilation flags + :PROPERTIES: + :CUSTOM_ID: optional-features + :END: - #+begin_src haskell - font = "Iosevka Medium 10" - font = "DejaVu Sans Mono italic 9" - #+end_src + 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. - Or to have fallback fonts, just separate them by commas: + 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. - #+begin_src haskell - font = "Open Sans,WenQuanYi Zen Hei 9" - #+end_src +** Optional features - For backwards compatibility, font names with `xft:` are also supported. + - =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. - #+begin_src haskell - font = "xft:DejaVu Sans Mono-10" - #+end_src + - =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. Requires the - [[http://hackage.haskell.org/package/dbus][dbus]] and [[http://hackage.haskell.org/package/text][text]] packages. + - =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_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=. + 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 @@ -108,13 +118,17 @@ them to =stack= directly: - =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_weather= Support to display weather information. Enables Weather + plugin. - - =with_uvmeter= Enables UVMeter plugin. The plugin shows UV data for + 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_weather= Support to display weather information. Enables Weather - plugin. + - =with_kraken= Enables the ~Kraken~ plugin. - - =all_extensions= Enables all the extensions above. + - =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=. |