Package: i3-dstatus
The ultimate DIY statusline generator fori3wm.Abouti3-dstatus is a statusline generator for i3 that you can use to display
system information you may be interested in. i3 comes withi3statuswhich has many limitations. It has no plugin interface. It has no
support for events and relies on polling for all its information, which
makes it surprisingly heavy on resources. It has a weird config file
format that makes it difficult to configure.Other projects have come along to make up for these weaknesses and many
of them do a great job. i3-dstatus is for users who want a more flexible
statusline that can be achieved from editing options in a configuration
file but without having to learn a complicated plugin api to create
custom statusline entries.This is accomplished by allowing users to update the statusline through
interprocess communication usingDBUS. i3-dstatus
exposes a DBUS service that you can use to update the statusline simply
in pretty much any programming language and from any process (maybe even
in a cron!).No configuration file is requiredUpdate the statusline from multiple processesUpdate the statusline from any language (even from the command line!)No complicated plugin api to learnInstallingi3-dstatus is onPyPI.pip install i3-dstatusUsageUse i3-dstatus as your status command in your bar block like so:bar {
    status_command i3-dstatus clock
}Pass the path of statusline generator scripts you want to run as
arguments to i3-dstatus. Passing a relative path will start the script
from the generators included with i3-dstatus from the generator path.
Using an absolute path or a ~/ home relative path will call the
appropriate path. The blocks will appear on i3bar in the order the
generators were given on the command line.ConfigurationGenerator scripts will look for~/.i3-dstatus.conffor configuration
options. Seei3-dstatus.confin the repo for an example. The
configuration file should be a single YAML object. (More documentation
to come).Updating the StatuslineThe dbus service exposes the methodshow_blockto update the
statusline. This method takes a dict of variants. Pass an object that
conforms to thei3bar input
protocolto show a block.You can clear a block by omitting the “full_text” member or setting it
to the empty string.You can update the statusline from a python script. Just use a script
like this:fromdbus_next.aioimportMessageBusfromdbus_nextimportVariantbus=awaitMessageBus().connect()introspection=awaitbus.introspect('com.dubstepdish.i3dstatus','/com/dubstepdish/i3dstatus')obj=bus.get_proxy_object('com.dubstepdish.i3dstatus','/com/dubstepdish/i3dstatus')i3dstatus=obj.get_interface('com.dubstepdish.i3dstatus')awaiti3dstatus.call_show_block({'name':Variant('s','test'),'full_text':Variant('s','hello world')})You can update the statusline from any language with dbus bindings
(which is pretty much all of them). You can even update the statusline
from the command line!dbus-send --session \
    --dest=com.dubstepdish.i3dstatus \
    --type=method_call \
    /com/dubstepdish/i3dstatus \
    com.dubstepdish.i3dstatus.show_block \
    dict:string:string:name,test,full_text,'hello world'ContributingPlease report bugs, request feature, write documentation, and add
generators to thei3dstatus/generatorsdirectory. i3-dstatus is a community
project so feedback is welcome!LicenseThis work is available under a FreeBSD License (see LICENSE).Copyright © 2014, Tony CrisciAll rights reserved.