No description
Find a file
2023-04-08 09:55:03 -05:00
data updated example config accordingly 2023-04-03 16:04:35 -05:00
dist fixed directory name, made installable 2023-04-02 16:06:37 -05:00
easyconf_lemonbar multiple modules can be refreshed with the same signal 2023-04-08 09:51:54 -05:00
.gitignore removed pycache 2023-04-03 12:12:39 -05:00
install.sh fixed directory name, made installable 2023-04-02 16:06:37 -05:00
LICENSE wrapped LICENSE at 80 chars 2023-02-10 16:06:11 -06:00
poetry.toml class groundwork laid 2023-03-11 19:19:26 -06:00
pyproject.toml class groundwork laid 2023-03-11 19:19:26 -06:00
README.md added new signal info to readme 2023-04-08 09:55:03 -05:00
run.sh fixed directory name, made installable 2023-04-02 16:06:37 -05:00
uninstall.sh fixed directory name, made installable 2023-04-02 16:06:37 -05:00

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

To uninstall from your system:

sudo sh uninstall.sh

This will leave your config file in place, should you ever reinstall eclb.

To update: uninstall, then follow the installation instructions again.

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.
      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. Also note: multiple modules may listen for the same signal. They will all be refreshed when the signal is recieved.

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).