i3pystatus/README.tpl.md
2013-07-31 00:19:00 +02:00

179 lines
5.2 KiB
Markdown

<!--
Always edit README.tpl.md and create README.md by running
python -m i3pystatus.mkdocs
You can also let the maintainer do the latter :)
-->
# 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`.