I thought: Well, isn't it a bit redundant if I go ahead and say in my
config "import this-n-that and temp and load and alsa" while later
just giving register() the modules.
So register() (/ClassFinder as the backend) now support just naming a
module as the first parameter. That module is then imported and
searched for a class as usual.
Just for reference the synopsis of Status.register():
register(mod.SomeChecker())
register(mod, setting1=..., setting2=...)
register(mod, {"setting1:":, "setting2":...})
register("mod", setting=1..., setting2=...)
register("mod", {"setting1:":, "setting2":...})
Fun fact: Actually register() doesn't care for it's arguments.
They're passed straight into ClassFinder.instanciate_class_from_module
(something I should definitely rename), which checks if it's first
parameter is one of:
-Python module
=> It calls ClassFinder.get_class with the same parameters
=> get_class will search the module using ClassFinder.search_module
and return a matching class if and only if there is a single matching
class in the module
-string
=> It calls ClassFinder.get_module to import the module and calls itself
on the result
-something else
=> It returns that something
The actual variation in passing the settings (keyword arguments vs. dict)
is handled in SettingsBase.
|
||
|---|---|---|
| i3pystatus | ||
| .gitignore | ||
| MIT-LICENSE | ||
| mkdocs.sh | ||
| README.md | ||
| README.tpl.md | ||
i3pystatus
i3pystatus is a (hopefully growing) collection of python scripts for status output compatible to i3status / i3bar of the i3 window manager.
the ver3 branch is undergoing heavy development at the time
Installation
To install it, follow these steps:
cd ~/.config/i3status/
git clone git@github.com:janoliver/i3pystatus contrib
cd contrib/i3pystatus
cp __main__.py.dist __main__.py
Add the following to ~/.config/i3status/config:
general {
output_format = "i3bar"
colors = true
interval = 5
}
Change your i3wm config to the following:
# i3bar
bar {
status_command cd ~/.config/i3status/contrib ; i3status | python -m i3pystatus
position top
workspace_buttons yes
}
And finally adjust the settings in ~/.config/i3status/contrib/i3pystatus/__main__.py
as you like.
Modules
Many modules let you modify the output via a format string.
alsa
Shows volume of ALSA mixer. You can also use this for inputs, btw.
Requires pyalsaaudio
format— {volume} is the current volume, {muted} is one ofmutedorunmuted. {card} is the sound card used; {mixer} the mixer. (default:♪: {volume})mixer— ALSA mixer (default:Master)mixer_id— ALSA mixer id (default:0)card— ALSA sound card (default:0)muted— (default:M)unmuted— (default: ``)color_muted— (default:#AAAAAA)color— (default:#FFFFFF)channel— (default:0)
backlight
Screen backlight info
Available formatters:
-
brightness
-
max_brightness
-
percentage
-
format— format string (default:{brightness}/{max_brightness}) -
backlight— backlight, see/sys/class/backlight/(default:acpi_video0) -
color— (default:#FFFFFF)
battery
This class uses the /sys/class/power_supply/…/uevent interface to check for the battery status
battery_ident— (default:BAT0)format— (default:{status} {remaining})
clock
This class shows a clock
format— stftime format string (default:None)
file
Rip information from text files
components is a dict of pairs of the form:
name => (callable, file)
- Where
nameis a valid identifier, which is used in the format string to access the value of that component. callableis some callable to convert the contents offile. A common choice is float or int.filenames a file, relative tobase_path.
transforms is a optional dict of callables taking a single argument (a dictionary containing the values of all components). The return value is bound to the key.
format— (required)components— (required)transforms— (default:{})base_path— (default:/)color— (default:#FFFFFF)interval— (default:5)
load
Shows system load
format— format string used for output. {avg1}, {avg5} and {avg15} are the load average of the last one, five and fifteen minutes, respectively. {tasks} is the number of tasks (i.e. 1/285, which indiciates that one out of 285 total tasks is runnable). (default:{avg1} {avg5})
Generic mail checker
The backends setting determines the backends to use. Currently available are:
-
backends— List of backends (instances of i3pystatus.mail.xxx) -
color— (default:#ffffff) -
color_unread— (default:#ff0000) -
format— (default:{unread} new email) -
format_plural— (default:{unread} new emails) -
hide_if_null— Don't output anything if there are no new mails (default:True)Currently available backends are:
imap
Checks for mail on a IMAP server
host— (required)port— (default:143)username— (required)password— (required)ssl— (default:False)notmuchmail
This class uses the notmuch python bindings to check for the number of messages in the notmuch database with the tags "inbox" and "unread"
db_path— (required)thunderbird
This class listens for dbus signals emitted by the dbus-sender extension for thunderbird.
Requires
- python-dbus
- python-gobject2
modsde
This class returns i3status parsable output of the number of unread posts in any bookmark in the mods.de forums.
format— Use {unread} as the formatter for number of unread posts (default:{unread} new posts in bookmarks)offset— subtract number of posts before output (default:0)color— (default:#7181fe)username— (required)password— (required)
regex
Simple regex file watcher
format— format string used for output (default:{0})regex— (required)file— file to search for regex matchesflags— Python.re flags (default:0)
runwatch
Expands the given path using glob to a pidfile and checks if the process ID found inside is valid (that is, if the process is running). You can use this to check if a specific application, such as a VPN client or your DHCP client is running.
Available formatters are {pid} and {name}.
format_up— (default:{name})format_down— (default:{name})color_up— (default:#00FF00)color_down— (default:#FF0000)path— (required)name— (required)
temp
Shows CPU temperature of Intel processors
AMD is currently not supported as they can only report a relative temperature, which is pretty useless
format— format string used for output. {temp} is the temperature in degrees celsius, {critical} and {high} are the trip point temps. (default:{temp} °C)color— (default:#FFFFFF)color_critical— (default:#FF0000)high_factor— (default:0.7)
Contribute
To contribute a module, make sure it uses one of the Module classes. Most modules use IntervalModule, which just calls a function repeatedly in a specified interval.
The output attribute should be set to a dictionary which represents your modules output, the protocol is documented here.
Please add an example for how to configure it to __main__.py.dist. It should be
a python class that can be registered with the I3statusHandler class. Also don't
forget to add yourself to the LICENSE file.
Patches and pull requests are very welcome :-)