# i3pystatus i3pystatus is a (hopefully growing) collection of python scripts for status output compatible to i3status / i3bar of the i3 window manager. ## Installation ### From PyPI package [i3pystatus](https://pypi.python.org/pypi/i3pystatus) pip install i3pystatus ### Packages for your OS * [Arch Linux](https://aur.archlinux.org/packages/i3pystatus-git/) ## Configuration You can keep your config file at various places, i3pystatus will look for it in these places: ~/.i3pystatus.py ~/.i3/i3pystatus.py ~/.config/i3pystatus.py $XDG_CONFIG_HOME/i3pystatus.py /etc/i3pystatus.py /etc/xdg/i3pystatus.py $XDG_CONFIG_DIRS/i3pystatus.py The config file is just a normal Python module that is executed if you execute i3pystatus (it is placed inside the i3pystatus package). You can also execute your config file instead of i3pystatus, but you need to use an absolute import (`from i3pystatus import Status`) and cannot name it i3pystatus.py. This is very handy for using different status lines for different outputs. A simple configuration file could look like this (note the additional dependencies from network, wireless and pulseaudio in this example): # -*- coding: utf-8 -*- import subprocess from . import Status status = Status(standalone=True) # Displays clock like this: # Tue 30 Jul 11:59:46 PM KW31 # ^-- calendar week status.register("clock", format="%a %-d %b %X KW%V",) # Shows the average load of the last minute and the last 5 minutes # (the default value for format is used) status.register("load") # Shows your CPU temperature, if you have a Intel CPU status.register("temp", format="{temp:.0f}°C",) # The battery monitor has many formatting options, see README for details # This would look like this, when discharging (or charging) # ↓14.22W 56.15% [77.81%] 2h:41m # And like this if full: # =14.22W 100.0% [91.21%] # # This would also display a desktop notification (via dbus) if the percentage # goes below 5 percent while discharging. The block will also color RED. status.register("battery", format="{status}/{consumption:.2f}W {percentage:.2f}% [{percentage_design:.2f}%] {remaining_hm}", alert=True, alert_percentage=5, status={ "DIS": "↓", "CHR": "↑", "FULL": "=", },) # This would look like this: # Discharging 6h:51m status.register("battery", format="{status} {remaining_hm}", alert=True, alert_percentage=5, status={ "DIS": "Discharging", "CHR": "Charging", "FULL": "Bat full", },) # Displays whether a DHCP client is running status.register("runwatch", name="DHCP", path="/var/run/dhclient*.pid",) # Shows the address and up/down state of eth0. If it is up the address is shown in # green (the default value of color_up) and the CIDR-address is shown # (i.e. 10.10.10.42/24). # If it's down just the interface name (eth0) will be displayed in red # (defaults of format_down and color_down) # # Note: the network module requires PyPI package netifaces-py3 status.register("network", interface="eth0", format_up="{v4cidr}",) # Has all the options of the normal network and adds some wireless specific things # like quality and network names. # # Note: requires both netifaces-py3 and basiciw status.register("wireless", interface="wlan0", format_up="{essid} {quality:03.0f}%",) # Shows disk usage of / # Format: # 42/128G [86G] status.register("disk", path="/", format="{used}/{total}G [{avail}G]",) # Shows pulseaudio default sink volume # # Note: requires libpulseaudio from PyPI status.register("pulseaudio", format="♪{volume}",) # Shows mpd status # Format: # Cloud connected▶Reroute to Remain status.register("mpd", format="{title}{status}{album}", status={ "pause": "▷", "play": "▶", "stop": "◾", },) status.run() Also change your i3wm config to the following: # i3bar bar { status_command i3pystatus position top workspace_buttons yes } ## Modules Many modules let you modify the output via a [format string](http://docs.python.org/3/library/string.html#formatstrings). !!module_doc!! ## 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](http://i3wm.org/docs/i3bar-protocol.html). **Patches and pull requests are very welcome :-)** ### The README The README.md file is generated from the README.tpl.md file; only edit the latter and run `python -m i3pystatus.mkdocs`.