Polybar - ArchWiki

Jump to content

# Polybar

6 languages

- Suomi
- 日本語
- Polski
- Português
- Русский
- 中文（简体）

From ArchWiki

polybar is a fast and easy-to-use tool for creating status bars. It aims to be easily customizable, utilising many modules which enable a wide range of (editable) functionality, such as displaying workspaces, the date, or system volume. Polybar is especially useful for window managers that have a limited or non-existent status bar, such as awesome or i3. Polybar can also be used with desktop environments like Plasma.

## Installation

Install the polybar package. The development version is polybar-gitAUR.

## Configuration

Copy the configuration example from `/etc/polybar/config.ini` to `$XDG_CONFIG_HOME/polybar/config.ini`. By default, polybar will load the config file from `~/.config/polybar/config.ini`, `/etc/xdg/polybar/config.ini`, or `/etc/polybar/config.ini` depending on which it finds first.

### Running Polybar

See `polybar --help` for a list of options to run it manually. However, you will probably want to run Polybar with your window manager's bootstrap routine. See #Running with a window manager.

### Sample configuration

A very basic polybar configuration may look like this:

    config.ini

    [bar/mybar]
    modules-right = date

    [module/date]
    type = internal/date
    date = %Y-%m-%d%

It defines a bar named `mybar` with a module called `date`.

Polybar will also install the default configuration with many preconfigured modules in `/etc/polybar/config.ini`.

### Running with a window manager

Create an executable file containing the startup logic, for example `$HOME/.config/polybar/launch.sh`:

    #!/bin/bash

    # Terminate already running bar instances
    killall -q polybar
    # If all your bars have ipc enabled, you can also use
    # polybar-msg cmd quit

    # Launch Polybar, using default config location ~/.config/polybar/config.ini
    polybar mybar 2>&1 | tee -a /tmp/polybar.log & disown

    echo "Polybar launched..."

This script will mean that restarting your window manager will also restart Polybar.

To execute this script by your window manager on startup, see Autostarting#On window manager startup.

### Multiple monitors

If you wish to have your bar duplicated across multiple monitors, you need to launch multiple bars.

Add something like this to your startup script:

    if type "xrandr"; then
      for m in $(xrandr --query | grep " connected" | cut -d" " -f1); do
        MONITOR=$m polybar --reload example &
      done
    else
      polybar --reload example &
    fi

Then configure Polybar to read the monitor from the environment:

    config.ini

    [bar/example]
    monitor = ${env:MONITOR:}
    [..]

## Troubleshooting

### ThinkPad battery display

On Lenovo ThinkPad X200 and related models, the battery level display frequently stops after having resumed from system suspension (such as re-opening the lid), due to a weird firmware on the models.[1] Restarting polybar allows it to pick up on the battery again. This can be automated by a systemd unit that runs `polybar-msg cmd restart` when resuming from suspension.

Ensure polybar is configured to use `polybar-msg`:

    config.ini

    [bar/example]
    enable-ipc = true

Note: With additional configuration a similar unit can be installed in `.config/systemd/`, which makes it possible to manage with other dotfiles

    /etc/systemd/system/polybar-resume@.service

    [Unit]
    Description=Restart polybar after suspend
    After=suspend.target hibernate.target

    [Service]
    Type=exec
    ExecStart=/usr/bin/systemd-run --machine=%i@ --user polybar-msg cmd restart

    [Install]
    WantedBy=suspend.target hibernate.target

Enable the `polybar-resume@user.service` unit.

## See also

- Polybar Github Wiki

Category:

- Eye candy