easyconf-lemonbar/README.md

2.4 KiB

easyconf-lemonbar (eclb)

A small python script to easily configure lemonbar. Uses a simple yaml file to declaratively define your custom bar, and includes useful features such as asynchronous refreshing and signal handling. Concept inspired by UtkarshVerma/dwmblocks-async.

Installation

Prerequisites

  • python3: a fairly recent version
  • lemonbar: your fork of choice
  • poetry: python package manager

This project uses poetry as the package manager. This will take care of the necessary python libraries and stuff. It should be available in your distro's package repos. Just make sure it is installed and the script will do the rest for you.

Instructions

To install the latest release:

git clone --depth 1 --branch latest https://git.noahsw.xyz/noah/easyconf-lemonbar.git
cd easyconf-lemonbar
sudo sh install.sh

Configuration and Usage

Config File

After installing, you will need to copy the example config file to your XDG_CONFIG_HOME.

cp /usr/local/share/doc/easyconf-lemonbar/example_config.yml ${HOME}/.config/easyconf-lemonbar.yml

This example file is very heavily commented. Almost all the info you will need is contained in the file.

Running

Make sure /usr/local/bin is in your path (it should be by default) and run:

easyconf-lemonbar &

Signals

You may update individual modules by sending a real-time signal to the easyconf-lemonbar process. First, in the module configuration, specify which signal to listen for, e.g.

# Display a random number, and only update when we recieve the RTMIN+1 signal.
- name: "random"
  command: "python -c 'from random import randrange; print(randrange(1000))'"
  refresh: 0
  signal: 1
  format:
    align: left

In the example above, the refresh is 0. This means that the module will never refresh on its own; it will wait for the RTMIN+1 signal. You may also configure your module to both refresh on a time interval AND listen for a signal.

Unfortunately, to send the signal, you cant just pkill easyconf-lemonbar. You have to read the PID from eclb's pidfile. I would recommend creating an alias in your shell as shown below.

alias eclb_kill="cat /run/user/${UID}/easyconf-lemonbar.pid | xargs kill"
eclb_kill -RTMIN+1

This will refresh the module that is listening for signal 1. To kill eclb completely, just run eclb_kill (after setting the above alias).