Statusbar information script with configurable update intervals for each item for statusbars such as 'bar', 'some_sorta_bar' and dzen
This repository has been archived on 2026-04-16. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
Find a file
2021-03-11 17:33:03 -08:00
bin Switched to MIT license 2016-03-19 16:58:50 -07:00
lib Switched to MIT license 2016-03-19 16:58:50 -07:00
plugins Switched to MIT license 2016-03-19 16:58:50 -07:00
.gitignore Added mopidy status 2013-07-29 18:14:38 -07:00
LICENSE Switched to MIT license 2016-03-19 16:58:50 -07:00
README.rst Archive Project 2021-03-11 17:33:03 -08:00
setup.py Switched to MIT license 2016-03-19 16:58:50 -07:00
status.cfg Added Watson time tracking notifier 2016-03-19 16:52:06 -07:00

PROJECT ARCHIVED AND NO LONGER MAINTAINED

py_multistatus
==============

Statusbar information script with configurable update intervals for each block of information. Designed for window managers using a separate bar such as LemonBoy's `bar <https://github.com/LemonBoy/bar>`_, Moetune's `some_sorta_bar <https://github.com/moetunes/Some_sorta_bar>`_ (TODO), or `dzen <https://github.com/robm/dzen>`_ (TODO). Information is generated and piped to the bar input. A configuration file is included, and plugins can easily be added if desired. Plugins (so far) include:

* Monsterwm desktop status display
* Date/time
* Load average
* New mail notifier for maildir(s) + weather display
* Disk usage warnings
* Battery status display
* Network up/down state and upload/download speed + OpenVPN status
* Music player status: MPD/Mopidy and Pianobar
* Current `Watson <http://tailordev.github.io/Watson/>`_ project

Idea and code based heavily on `py3status <https://github.com/kaszak/py3status>`_. Much thanks to kaskak, as I studied his code intensely before I started. I had no prior experience with threading/queue/fifo before starting this project!

Scott Hansen <firecat4153@gmail.com>

Features:
---------

* Python 3.x
* Use less CPU cycles for infrequently needed information updates
* Configurable for different statusbars (bar, some_sorta_bar, etc.)
* Easily add new plugins (see plugin_skel.py in the plugins directory).
* Includes a python monsterstart.py script to start monsterwm and pipe its desktop output to a FIFO for reading by py-multistatus.

Requires: 
---------

* Python 3+
* psutil
* An installed statusbar (bar, some_sorta_bar, etc.)

Installation:
-------------

* `Archlinux AUR <link here>`_ (TODO)
* ``# python setup.py install``  OR
* ``$ python setup.py install --user`` OR
* ``pip install py_multistatus`` (TODO)

License:
--------

* MIT

Usage:
------

* Copy configuration file status.cfg from /usr/share/py-multistatus to ~/.config/py-multistatus and edit. Make sure the bar executable and all the formatting symbols are correct for the bar you are using.
* Ensure mail accounts and directories are correct. If you want the weather displayed while there are no mail notifications, create a text file ~/.weather with the weather add there however you like. The *top line* of the file will be displayed.
* Add ``multistatus &`` to ~/.xinitrc before the ``exec <windowmanager`` line (or before ``/path/to/monsterstart.py``)
* The bar is automatically started by ``multistatus``
* If using monsterstart.py, copy it someplace into your $PATH. It starts ``multistatus`` so use it in .xinitrc instead.

ISSUES:
-------

* Some stlarch font icons (higher numbers) cause problems with the display with 'bar'
* Network speed indicator occasionally crashes when switching networks.
* If the statusbar is killed and restarted manually, the monsterwm desktop info doesn't always immediately appear.

TODO:
-----

1. Test/add support for other bars beside LemonBoy's bar.
2. Add logging/error detection for threads. Possibly auto-restart crashed threads
3. Add option to periodically update the weather? (clickable bars only)
4. Volume indication. Maybe volume controls? (clickable bars only)
5. Possible inotify support for file-based information?
6. Investigate using concurrent.futures in place of threads/queues.