We are committed to provide service 24 X 7

Deals, Shopping, Training, Tools

Learn how to – How To Install Polybar Status bar on Fedora

Learn how to – How To Install Polybar Status bar on Fedora.

Polybar is a tool created to help users build beautiful and highly customizable status bars, most users running window managers should know this tool. Polybar can be configured to replace your traditional desktop environment without a mastery of shell scripting.

This guide will walk you through the steps to Install and configure Polybar status bar for use with i3wm on a Fedora workstation. The configurations will vary for other Desktop environments but should be similar to example shown here.

Features of Polybar

By installing/building Polybar, you will set the following services on the status bar.

  • Systray icons
  • Window title
  • Playback controls and status display for MPD using libmpdclient
  • ALSA volume controls
  • Workspace and desktop panel for bspwm and i3
  • Workspace module for EWMH compliant window managers
  • Keyboard layout and indicator status
  • CPU and memory load indicator
  • Battery display
  • Network connection details
  • Backlight level
  • Date and time label
  • Time-based shell script execution
  • Command output tailing
  • User-defined menu tree
  • Inter-process messaging
  • And more…

The easiest way of installing Polybar Status bar on Fedora is from YUM repository. This is simple is done by just running the command:

sudo dnf install polybar

If you prefer installation from source then the next steps are all yours!.

Step 1: Install Development Tools

For Fedora systems, the polybar package is not available on the repositories. We will build it from source, so development tools are required.

sudo dnf install -y @development-tools cmake gcc-c++ autoconf automake

Install build dependencies for i3, Volume controls, mpd, network, Github e.t.c.

sudo dnf install python3-sphinx xcb-util-xrm-devel xcb-proto xcb-util-devel xcb-util-wm-devel xcb-util-cursor-devel xcb-util-image-devel alsa-lib-devel pulseaudio-libs-devel i3-devel jsoncpp-devel libmpdclient-devel libcurl-devel wireless-tools-devel libnl3-devel cairo-devel libuv-devel rofi

Step 2: Download the latest Polybar source

After dependencies are installed, download the latest release of Polybar by cloning the Github repository.

cd /tmp
git clone --recursive https://github.com/polybar/polybar

To compile and install polybar, run the following commands:

cd polybar
sudo ./build.sh

You should get an output similar to this:

** Fetching submodules

** A build dir already exists (pass -f to replace)

** Setting build options

** Use GCC even if Clang is installed ----------------------------- [y/N]: y
** Include support for "internal/i3" (requires i3) ---------------- [y/N]: y

** Include support for "internal/alsa" (requires alsalib) --------- [y/N]: y
** Include support for "internal/pulseaudio" (requires libpulse) -- [y/N]: y
** Include support for "internal/network" (requires libnl/libiw) -- [y/N]: y
** Include support for "internal/mpd" (requires libmpdclient) ----- [y/N]: y
** Include support for "internal/github" (requires libcurl) ------- [y/N]: y
** Build "polybar-msg" used to send ipc messages ------------------ [y/N]: y
** Executing cmake command

-- Trying to enable ccache
-- Couldn't locate ccache, disabling ccache...
-- The CXX compiler identification is GNU 9.1.1
-- Check for working CXX compiler: /usr/bin/g++
-- Check for working CXX compiler: /usr/bin/g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
y-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- No build type specified; using Release
-- Using supported compiler GNU-9.1.1
-- Found PkgConfig: /usr/bin/pkg-config (found version "1.6.1") 
-- Looking for C++ include pthread.h
-- Looking for C++ include pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Check if compiler accepts -pthread
-- Check if compiler accepts -pthread - yes
-- Found Threads: TRUE  
-- Checking for module 'cairo-fc'
--   Found cairo-fc, version 1.16.0
-- Checking for module 'alsa'
--   Found alsa, version 1.1.9
-- Checking for module 'libcurl'
--   Found libcurl, version 7.64.0
-- Checking for module 'libmpdclient'
--   Found libmpdclient, version 2.14
-- Checking for module 'libnl-genl-3.0'
--   Found libnl-genl-3.0, version 3.4.0
-- Checking for module 'libpulse'
--   Found libpulse, version 12.2-rebootstrapped
-- Checking for module 'xcb-composite'
--   Found xcb-composite, version 1.13.1
-- Checking for module 'xcb-xkb'
--   Found xcb-xkb, version 1.13.1
-- Checking for module 'xcb-randr'
--   Found xcb-randr, version 1.13.1
-- Checking for module 'xcb-randr>=1.12'
--   Found xcb-randr, version 1.13.1
-- Checking for module 'xcb-xrm'
--   Found xcb-xrm, version 1.3
-- Checking for module 'xcb-cursor'
--   Found xcb-cursor, version 0.1.3
--  Build:
--    Version: 3.3.0-98-gc650513
--    Type: Release
--    CXX: /usr/bin/g++  -Wall -Wextra -Wpedantic -O2 -DNDEBUG
--    LD: /usr/bin/ld  
--  Targets:
-- [X]   polybar-msg
-- [ ]   testsuite
-- [ ]   documentation
--  Module support:
-- [X]   alsa (1.1.9)
-- [X]   curl (7.64.0)
-- [ ]   i3
-- [X]   mpd (2.14)
-- [X]   network (libnl) (3.4.0)
-- [X]   pulseaudio (12.2-rebootstrapped)
-- [X]   xkeyboard (1.13.1)
--  X extensions:
-- [X]   xcb-randr (1.13.1)
-- [X]   xcb-randr (monitor support) (1.13.1)
-- [X]   xcb-composite (1.13.1)
-- [X]   xcb-xkb (1.13.1)
-- [X]   xcb-xrm (1.3)
-- [X]   xcb-cursor (0.1.3)
--  Log options:
-- [X]   Trace logging
-- The C compiler identification is GNU 9.1.1
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Checking for module 'xcb-proto'
--   Found xcb-proto, version 1.13
-- Found PythonInterp: /usr/bin/python2.7 (found suitable version "2.7.16", minimum required is "2.7") 
-- XCB[XCB]: Found component XCB
-- Found XCB_XCB: /usr/lib64/libxcb.so  
-- XCB[ICCCM]: Found component ICCCM
-- Found XCB_ICCCM: /usr/lib64/libxcb-icccm.so  
-- XCB[EWMH]: Found component EWMH
-- Found XCB_EWMH: /usr/lib64/libxcb-ewmh.so  
-- XCB[UTIL]: Found component UTIL
-- Found XCB_UTIL: /usr/lib64/libxcb-util.so  
-- XCB[IMAGE]: Found component IMAGE
-- Found XCB_IMAGE: /usr/lib64/libxcb-image.so  
-- Found XCB: /usr/lib64/libxcb.so;/usr/lib64/libxcb-icccm.so;/usr/lib64/libxcb-ewmh.so;/usr/lib64/libxcb-util.so;/usr/lib64/libxcb-image.so  
-- Searching for xcbgen with python2
-- Searching for xcbgen with python2.7
-- Searching for xcbgen with python3
-- Found xcbgen in /usr/lib/python3.7/site-packages
-- XCB[RANDR]: Found component RANDR
-- Found XCB_RANDR: /usr/lib64/libxcb-randr.so  
-- Found XCB: /usr/lib64/libxcb.so;/usr/lib64/libxcb-icccm.so;/usr/lib64/libxcb-ewmh.so;/usr/lib64/libxcb-util.so;/usr/lib64/libxcb-image.so;/usr/lib64/libxcb-randr.so  
-- XCB[COMPOSITE]: Found component COMPOSITE
-- Found XCB_COMPOSITE: /usr/lib64/libxcb-composite.so  
-- Found XCB: /usr/lib64/libxcb.so;/usr/lib64/libxcb-icccm.so;/usr/lib64/libxcb-ewmh.so;/usr/lib64/libxcb-util.so;/usr/lib64/libxcb-image.so;/usr/lib64/libxcb-randr.so;/usr/lib64/libxcb-composite.so  
-- XCB[XKB]: Found component XKB
-- Found XCB_XKB: /usr/lib64/libxcb-xkb.so  
-- Found XCB: /usr/lib64/libxcb.so;/usr/lib64/libxcb-icccm.so;/usr/lib64/libxcb-ewmh.so;/usr/lib64/libxcb-util.so;/usr/lib64/libxcb-image.so;/usr/lib64/libxcb-randr.so;/usr/lib64/libxcb-composite.so;/usr/lib64/libxcb-xkb.so  
-- xpp: including xcb proto composite.xml
-- xpp: including xcb proto randr.xml
-- xpp: including xcb proto xkb.xml
-- xpp: including xcb proto xproto.xml
-- Font not found: fixed_pixelsize=10
-- Font not found: unifont_fontformat=truetype
-- Font not found: siji_pixelsize=10
-- Configuring done
-- Generating done
-- Build files have been written to: /home/jmutai/Downloads/polybar/build
** Building project

[  1%] Generating ../../../lib/xpp/include/xpp/proto/x.hpp
[  2%] Generating ../../../lib/xpp/include/xpp/proto/composite.hpp
[  3%] Generating ../../../lib/xpp/include/xpp/proto/randr.hpp
list: size, ['red', 'green', 'blue']
list: size, ['red', 'green', 'blue']
[  4%] Generating ../../../lib/xpp/include/xpp/proto/xkb.hpp
Scanning dependencies of target xpp
[  5%] Linking CXX static library libxpp.a
[  5%] Built target xpp
Scanning dependencies of target poly
[  6%] Building CXX object bin/CMakeFiles/poly.dir/adapters/alsa/control.cpp.o
[  7%] Building CXX object bin/CMakeFiles/poly.dir/adapters/alsa/mixer.cpp.o
[  8%] Building CXX object bin/CMakeFiles/poly.dir/adapters/mpd.cpp.o
[  9%] Building CXX object bin/CMakeFiles/poly.dir/adapters/net.cpp.o
[ 10%] Building CXX object bin/CMakeFiles/poly.dir/adapters/net_nl.cpp.o
[ 12%] Building CXX object bin/CMakeFiles/poly.dir/adapters/pulseaudio.cpp.o
[ 13%] Building CXX object bin/CMakeFiles/poly.dir/cairo/utils.cpp.o
[ 14%] Building CXX object bin/CMakeFiles/poly.dir/components/bar.cpp.o
[ 15%] Building CXX object bin/CMakeFiles/poly.dir/components/builder.cpp.o
[ 16%] Building CXX object bin/CMakeFiles/poly.dir/components/command_line.cpp.o
[ 17%] Building CXX object bin/CMakeFiles/poly.dir/components/config.cpp.o
[ 18%] Building CXX object bin/CMakeFiles/poly.dir/components/controller.cpp.o
[ 19%] Building CXX object bin/CMakeFiles/poly.dir/components/ipc.cpp.o
[ 20%] Building CXX object bin/CMakeFiles/poly.dir/components/logger.cpp.o
[ 21%] Building CXX object bin/CMakeFiles/poly.dir/components/parser.cpp.o
[ 23%] Building CXX object bin/CMakeFiles/poly.dir/components/renderer.cpp.o
[ 24%] Building CXX object bin/CMakeFiles/poly.dir/components/screen.cpp.o
[ 25%] Building CXX object bin/CMakeFiles/poly.dir/components/taskqueue.cpp.o
[ 26%] Building CXX object bin/CMakeFiles/poly.dir/drawtypes/animation.cpp.o
[ 27%] Building CXX object bin/CMakeFiles/poly.dir/drawtypes/iconset.cpp.o
[ 28%] Building CXX object bin/CMakeFiles/poly.dir/drawtypes/label.cpp.o
[ 29%] Building CXX object bin/CMakeFiles/poly.dir/drawtypes/progressbar.cpp.o
[ 30%] Building CXX object bin/CMakeFiles/poly.dir/drawtypes/ramp.cpp.o
[ 31%] Building CXX object bin/CMakeFiles/poly.dir/events/signal_emitter.cpp.o
[ 32%] Building CXX object bin/CMakeFiles/poly.dir/events/signal_receiver.cpp.o
[ 34%] Building CXX object bin/CMakeFiles/poly.dir/modules/alsa.cpp.o
[ 35%] Building CXX object bin/CMakeFiles/poly.dir/modules/backlight.cpp.o
[ 36%] Building CXX object bin/CMakeFiles/poly.dir/modules/battery.cpp.o
[ 37%] Building CXX object bin/CMakeFiles/poly.dir/modules/bspwm.cpp.o
[ 38%] Building CXX object bin/CMakeFiles/poly.dir/modules/counter.cpp.o
[ 39%] Building CXX object bin/CMakeFiles/poly.dir/modules/cpu.cpp.o
[ 40%] Building CXX object bin/CMakeFiles/poly.dir/modules/date.cpp.o
[ 41%] Building CXX object bin/CMakeFiles/poly.dir/modules/fs.cpp.o
[ 42%] Building CXX object bin/CMakeFiles/poly.dir/modules/github.cpp.o
[ 43%] Building CXX object bin/CMakeFiles/poly.dir/modules/ipc.cpp.o
[ 45%] Building CXX object bin/CMakeFiles/poly.dir/modules/memory.cpp.o
[ 46%] Building CXX object bin/CMakeFiles/poly.dir/modules/menu.cpp.o
[ 47%] Building CXX object bin/CMakeFiles/poly.dir/modules/meta/base.cpp.o
[ 48%] Building CXX object bin/CMakeFiles/poly.dir/modules/mpd.cpp.o
[ 49%] Building CXX object bin/CMakeFiles/poly.dir/modules/network.cpp.o
[ 50%] Building CXX object bin/CMakeFiles/poly.dir/modules/pulseaudio.cpp.o
[ 51%] Building CXX object bin/CMakeFiles/poly.dir/modules/script.cpp.o
[ 52%] Building CXX object bin/CMakeFiles/poly.dir/modules/systray.cpp.o
[ 53%] Building CXX object bin/CMakeFiles/poly.dir/modules/temperature.cpp.o
[ 54%] Building CXX object bin/CMakeFiles/poly.dir/modules/text.cpp.o
[ 56%] Building CXX object bin/CMakeFiles/poly.dir/modules/xbacklight.cpp.o
[ 57%] Building CXX object bin/CMakeFiles/poly.dir/modules/xkeyboard.cpp.o
[ 58%] Building CXX object bin/CMakeFiles/poly.dir/modules/xwindow.cpp.o
[ 59%] Building CXX object bin/CMakeFiles/poly.dir/modules/xworkspaces.cpp.o
[ 60%] Building CXX object bin/CMakeFiles/poly.dir/utils/bspwm.cpp.o
[ 61%] Building CXX object bin/CMakeFiles/poly.dir/utils/command.cpp.o
[ 62%] Building CXX object bin/CMakeFiles/poly.dir/utils/concurrency.cpp.o
[ 63%] Building CXX object bin/CMakeFiles/poly.dir/utils/env.cpp.o
[ 64%] Building CXX object bin/CMakeFiles/poly.dir/utils/factory.cpp.o
[ 65%] Building CXX object bin/CMakeFiles/poly.dir/utils/file.cpp.o
[ 67%] Building CXX object bin/CMakeFiles/poly.dir/utils/http.cpp.o
[ 68%] Building CXX object bin/CMakeFiles/poly.dir/utils/inotify.cpp.o
[ 69%] Building CXX object bin/CMakeFiles/poly.dir/utils/io.cpp.o
[ 70%] Building CXX object bin/CMakeFiles/poly.dir/utils/process.cpp.o
[ 71%] Building CXX object bin/CMakeFiles/poly.dir/utils/socket.cpp.o
[ 72%] Building CXX object bin/CMakeFiles/poly.dir/utils/string.cpp.o
[ 73%] Building CXX object bin/CMakeFiles/poly.dir/utils/throttle.cpp.o
[ 74%] Building CXX object bin/CMakeFiles/poly.dir/x11/atoms.cpp.o
[ 75%] Building CXX object bin/CMakeFiles/poly.dir/x11/background_manager.cpp.o
[ 76%] Building CXX object bin/CMakeFiles/poly.dir/x11/connection.cpp.o
[ 78%] Building CXX object bin/CMakeFiles/poly.dir/x11/cursor.cpp.o
[ 79%] Building CXX object bin/CMakeFiles/poly.dir/x11/ewmh.cpp.o
[ 80%] Building CXX object bin/CMakeFiles/poly.dir/x11/extensions/composite.cpp.o
[ 81%] Building CXX object bin/CMakeFiles/poly.dir/x11/extensions/randr.cpp.o
[ 82%] Building CXX object bin/CMakeFiles/poly.dir/x11/extensions/xkb.cpp.o
[ 83%] Building CXX object bin/CMakeFiles/poly.dir/x11/icccm.cpp.o
[ 84%] Building CXX object bin/CMakeFiles/poly.dir/x11/registry.cpp.o
[ 85%] Building CXX object bin/CMakeFiles/poly.dir/x11/tray_client.cpp.o
[ 86%] Building CXX object bin/CMakeFiles/poly.dir/x11/tray_manager.cpp.o
[ 87%] Building CXX object bin/CMakeFiles/poly.dir/x11/window.cpp.o
[ 89%] Building CXX object bin/CMakeFiles/poly.dir/x11/winspec.cpp.o
[ 90%] Building CXX object bin/CMakeFiles/poly.dir/x11/xembed.cpp.o
[ 91%] Building CXX object bin/CMakeFiles/poly.dir/x11/xresources.cpp.o
[ 92%] Linking CXX static library libpoly.a
[ 92%] Built target poly
Scanning dependencies of target polybar
[ 93%] Building CXX object bin/CMakeFiles/polybar.dir/main.cpp.o
[ 94%] Linking CXX executable polybar
[ 94%] Built target polybar
Scanning dependencies of target polybar-msg
[ 95%] Building CXX object bin/CMakeFiles/polybar-msg.dir/ipc.cpp.o
[ 96%] Building CXX object bin/CMakeFiles/polybar-msg.dir/utils/env.cpp.o
[ 97%] Building CXX object bin/CMakeFiles/polybar-msg.dir/utils/file.cpp.o
[ 98%] Building CXX object bin/CMakeFiles/polybar-msg.dir/utils/string.cpp.o
[100%] Linking CXX executable polybar-msg
[100%] Built target polybar-msg
** Execute 'sudo make install'? [Y/n] 
** Install example configuration? [y/N]: y
[  5%] Built target xpp
[ 92%] Built target poly
[ 94%] Built target polybar
[100%] Built target polybar-msg
Install the project...
-- Install configuration: "Release"
-- Installing: /usr/local/share/doc/polybar/config
-- Installing: /usr/local/share/bash-completion/completions/polybar
-- Installing: /usr/local/share/zsh/site-functions/_polybar
-- Installing: /usr/local/share/zsh/site-functions/_polybar_msg
-- Installing: /usr/local/bin/polybar
-- Installing: /usr/local/bin/polybar-msg
[  5%] Built target xpp
[ 97%] Built target poly
[100%] Built target polybar
Scanning dependencies of target userconfig
-- Installing: /root/.config/polybar/config
[100%] Built target userconfig
** Build complete!

Step 3: Confirm Polybar installation

Confirm polybar installation and features available.

$ which polybar  
/usr/local/bin/polybar

$ polybar --version
olybar 3.5.7-214-g9e3b5378

Features: -alsa -curl -i3 -mpd -network(libnl) -pulseaudio +xkeyboard

Step 4: Install fonts and themes

Install fonts on Fedora using:

# Powerline fonts / Fontawesome
sudo dnf install powerline-fonts fontawesome-fonts

# FiraCode font
sudo dnf copr enable evana/fira-code-fonts
sudo dnf install fira-code-fonts

Aditya Shakya has on his Github a repository with a huge collection of polybar themes with different styles, colors and variants.

Configuring Polybar on Fedora Linux

I recommend you visit Polybar documentation page to learn about its configuration for different environments.

Below is the polybar configuration for my i3wm – Path: ~/.config/polybar/config

https://github.com/jmutai/dotfiles/blob/master/.config/polybar/config

With below launch script.

$ cat  ~/.config/polybar/launch.sh
#!/usr/bin/env sh

# Terminate already running bar instances
killall -q polybar

# Wait until the processes have been shut down
while pgrep -x polybar >/dev/null; do sleep 1; done

# Launch bar1 and bar2
polybar main &

#polybar mybar &

echo "Bars launched..."

On i3 side, there is a definition for launching polybar.

exec_always --no-startup-id $HOME/.config/polybar/launch.sh

Uninstalling Polybar

To uninstall Polybar installed manually through compilation process go into the build folder where you originally ran build script.

cd polybar/build

There you can run the following command to remove all installed files from your system.

sudo make uninstall

Similar:

Cart

Your Cart is Empty

Back To Shop