Btw. nothing has changed for the config files. You can pass into
__init__ a dict as before, or you can use keyword arguments.
Either way, a module defines the settings that can be specified
and those which are required. __init__ basically checks that all
required options are set and that no invalid options are used.
Specify standalone=True to the I3statushandler constructor
to run i3pystatus without i3status in the background.
i3pystatus won't read input from stdin or any other
file object specified with input_stream.
The keyword argument interval specifies how often output should
be generated. The default is 1 (second).
Sorry guys for changing the way i3pystatus "way of operation"
is set so often. If you're want the "self-contained" mode
(you execute i3pystatus, i3pystatus automatically starts
i3status), don't set the file attribute, but pass the file
descriptor of the pipe as input_stream like this:
process = subprocess.Popen(["i3status", "-c", "~/.i3/status"], stdout=subprocess.PIPE, universal_newlines=True)
status = i3pystatus(input_stream=process.stdout)
On a side note:
The main class name has been changed to i3pystatus, but I3statusHandler
is still available as an alias. Use whichever you prefer :-)
(Linux is about choice after all)
Notmuch checker does not work in this state
NotmuchMailChecker does not work because of a conflict between the notmuch Python API and the file for NotmuchMailChecker which is also named notmuch.
I suggest to rename i3pystatus/notmuch.py to i3pystatus/notmuchchecker.py and modify main.py.dist appropriately.
Reported by mjepronk
Also removed some superfluous whitespace
If one wants to run i3status as a subprocess of
i3pystatus, do it like this:
import subprocess
import io
...
process = subprocess.Popen(["i3status", "-c", "~/.i3/status"], stdout=subprocess.PIPE)
stdin = io.TextIOWrapper(process.stdout)
status = I3statusHandler(stdin)
exploited_language_features += 2;
(I also exploit the mutability of the list-object here,
yield j binds the list to the context,
when the context is leaved execution continues and the
modified j is written back)
Allows to run i3status directly from your __main__, like this:
status.register(...) # and so on
process = subprocess.Popen("i3status", stdout=subprocess.PIPE)
status.fd = process.stdout
# start the handler
status.run()
Introduced asynchronous plugins that gather their data on different
intervals than the mainloop. Here it is used for the modsde plugin.
The statushandler has a new class Module, which acts as documentation
for the API
These changes let the output evenly flow, even if an async plugin hangs
due to network problems or similiar issues.