I’m glad to announce the release of py3status v1.0 !
This version features a lot of stuff that I wanted to add to py3status for a long time and which I had in a small todo floating around. After the recent i3wm 4.6 release, I found it the perfect time to implement them while benefiting from the new click event support from i3bar.
The idea of allowing py3status users to have their modules respond to clicks got my head fuzzing and I started slowly to implement my whole todo while adding some great new features thanks to the enhanced i3bar protocol.
I ended up rewriting (again) completely (and slowly) py3status 🙂 But it’s for its own good, and yours hopefully. I strongly encourage you to have a look at the empty_class.py and pomodoro.py examples as they showcase the new on_click system.
You can already benefit from this bump without modifying your modules thanks to the default middle click event which forces a refresh of the module’s method you click on (handy isn’t it?).
- support for i3bar click_events, they’re dispatched to user-written py3status classes based on their name/instance
- add support for on_click methods in user-written modules to handle i3bar click_events (see the pomodoro example)
- default is to clear the method’s cache (force a refresh) if you middle click (button 2) on a method’s output and the module does not support click_events
- rewrite pomodoro example to showcase the on_click usage
- use i3-nagbar to display warnings/errors to the user and also log them to syslog
- new user-written module output ordering mechanism is more intuitive as it uses strictly numeric then alphabetical sorting
- use select/poll() to implement a non-blocking I/O reading mechanism on threads
- new Events thread is responsible for reading i3bar JSONs and dispatching them to the correct user module (click_events)
- each user-written module is started and executed in its own thread
- remove the pointless -d option
- add a –debug option to be verbose in syslog (useful for debugging your modules)
- add a real CHANGELOG
- add a proper LICENSE file
- make sure all examples are PEP8 compatible
- update the empty_class example to explain on_click and kill usage
Note for Gentoo users : starting with this release, py3status is now available in portage so you don’t need my overlay anymore.