From fa9a32e54d453933920ac7cd7e90fe9f9f5857e5 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Sun, 22 Mar 2015 19:14:55 +0100 Subject: [PATCH] add the i3status v2.9 release --- _docs/i3status.man | 182 +++++++++++++++++++--- i3status/i3status-2.9.tar.bz2 | Bin 0 -> 46615 bytes i3status/i3status-2.9.tar.bz2.asc | 17 ++ i3status/index.html | 3 + i3status/manpage.html | 248 +++++++++++++++++++++++++----- 5 files changed, 392 insertions(+), 58 deletions(-) create mode 100644 i3status/i3status-2.9.tar.bz2 create mode 100644 i3status/i3status-2.9.tar.bz2.asc diff --git a/_docs/i3status.man b/_docs/i3status.man index 00fdcbc..64ac7f0 100644 --- a/_docs/i3status.man +++ b/_docs/i3status.man @@ -1,11 +1,11 @@ i3status(1) =========== Michael Stapelberg -v2.6, October 2012 +v2.9, March 2015 == NAME -i3status - Generates a status line for dzen2 or xmobar +i3status - Generates a status line for i3bar, dzen2 or xmobar == SYNOPSIS @@ -50,7 +50,8 @@ general { order += "ipv6" order += "disk /" order += "run_watch DHCP" -order += "run_watch VPN" +order += "run_watch VPNC" +order += "path_exists VPN" order += "wireless wlan0" order += "ethernet eth0" order += "battery 0" @@ -72,6 +73,10 @@ ethernet eth0 { battery 0 { format = "%status %percentage %remaining %emptytime" + format_down = "No battery" + status_chr = "⚇ CHR"" + status_bat = "⚡ BAT" + status_full = "☻ FULL" path = "/sys/class/power_supply/BAT%d/uevent" low_threshold = 10 } @@ -80,10 +85,16 @@ run_watch DHCP { pidfile = "/var/run/dhclient*.pid" } -run_watch VPN { +run_watch VPNC { + # file containing the PID of a vpnc process pidfile = "/var/run/vpnc/pid" } +path_exists VPN { + # path exists when a VPN tunnel launched by nmcli/nm-applet is active + path = "/proc/sys/net/ipv4/conf/tun0" +} + tztime local { format = "%Y-%m-%d %H:%M:%S" } @@ -124,7 +135,8 @@ color_good = "#00FF00" Likewise, you can use the +color_separator+ directive to specify the color that will be used to paint the separator bar. The separator is always output in -color, even when colors are disabled by the +colors+ directive. +color, even when colors are disabled by the +colors+ directive. This option has +no effect when +output_format+ is set to +i3bar+ or +none+. The +interval+ directive specifies the time in seconds for which i3status will sleep before printing the next status line. @@ -145,15 +157,48 @@ managers like dwm, wmii and xmonad though it will work with any windowmanger xmobar:: xmobar is a minimalistic, text based, status bar. It was designed to work with the xmonad Window Manager. +term:: +Use ANSI Escape sequences to produce a terminal-output as close as possible to +the graphical outputs. This makes debugging your config file a little bit +easier because the terminal-output of i3status becomes much more readable, but +should only used for such quick glances, because it will only support very +basic output-features (for example you only get 3 bits of color depth). none:: -Does not use any color codes. Separates values by the pipe symbol. This should -be used with i3bar and can be used for custom scripts. +Does not use any color codes. Separates values by the pipe symbol by default. +This should be used with i3bar and can be used for custom scripts. It's also possible to use the color_good, color_degraded, color_bad directives to define specific colors per module. If one of these directives is defined in a module section its value will override the value defined in the general section just for this module. +If you don't fancy the vertical separators between modules i3status/i3bar +uses by default, you can employ the +separator+ directive to configure how +modules are separated. You can either disable the default separator altogether +setting it to the empty string. You might then define separation as part of a +module's format string. This is your only option when using the i3bar output +format as the separator is drawn by i3bar directly otherwise. For the other +output formats, the provided non-empty string will be automatically enclosed +with the necessary coloring bits if color support is enabled. + +*Example configuration*: +------------------------------------------------------------- +general { + output_format = "xmobar" + separator = " " +} + +order += "load" +order += "disk /" + +load { + format = "[ load: %1min, %5min, %15min ]" +} +disk "/" { + format = "%avail" +} +------------------------------------------------------------- + === IPv6 This module gets the IPv6 address used for outgoing connections (that is, the @@ -161,7 +206,7 @@ best available public IPv6 address on your computer). *Example format_up*: +%ip+ -*Example format_down* +no IPv6+ +*Example format_down*: +no IPv6+ === Disk @@ -170,12 +215,45 @@ Gets used, free, available and total amount of bytes on the given mounted filesy These values can also be expressed in percentages with the percentage_used, percentage_free, percentage_avail and percentage_used_of_avail formats. +Byte sizes are presented in a human readable format using a set of prefixes +whose type can be specified via the "prefix_type" option. Three sets of +prefixes are available: + +binary:: +IEC prefixes (Ki, Mi, Gi, Ti) represent multiples of powers of 1024. +This is the default. +decimal:: +SI prefixes (k, M, G, T) represent multiples of powers of 1000. +custom:: +The custom prefixes (K, M, G, T) represent multiples of powers of 1024. + +It is possible to define a low_threshold that causes the disk text to be +displayed using color_bad. The low_threshold type can be of threshold_type +"bytes_free", "bytes_avail", "percentage_free", or "percentage_avail", where +the former two can be prepended by a generic prefix (k, m, g, t) having +prefix_type. So, if you configure low_threshold to 2, threshold_type to +"gbytes_avail", and prefix_type to "binary", and the remaining available disk +space is below 2 GiB, it will be colored bad. If not specified, threshold_type +is assumed to be "percentage_avail" and low_threshold to be set to 0, which +implies no coloring at all. + +You can define a different format with the option "format_not_mounted" +which is used if the path is not a mount point. So you can just empty +the output for the given path with adding »format_not_mounted=""« +to the config section. + *Example order*: +disk /mnt/usbstick+ *Example format*: +%free (%avail)/ %total+ *Example format*: +%percentage_used used, %percentage_free free, %percentage_avail avail+ +*Example prefix_type*: +custom+ + +*Example low_threshold*: +5+ + +*Example threshold_type*: +percentage_free+ + === Run-watch Expands the given path to a pidfile and checks if the process ID found inside @@ -186,15 +264,27 @@ a specific application, such as a VPN client or your DHCP client is running. *Example format*: +%title: %status+ +=== Path-exists + +Checks if the given path exists in the filesystem. You can use this to check if +something is active, like for example a VPN tunnel managed by NetworkManager. + +*Example order*: +path_exists VPN+ + +*Example format*: +%title: %status+ + === Wireless -Gets the link quality and ESSID of the given wireless network interface. You -can specify different format strings for the network being connected or not -connected. +Gets the link quality, frequency and ESSID of the given wireless network +interface. You can specify different format strings for the network being +connected or not connected. + +The special interface name `_first_` will be replaced by the first wireless +network interface found on the system (excluding devices starting with "lo"). *Example order*: +wireless wlan0+ -*Example format*: +W: (%quality at %essid, %bitrate) %ip+ +*Example format*: +W: (%quality at %essid, %bitrate / %frequency) %ip+ === Ethernet @@ -202,6 +292,9 @@ Gets the IP address and (if possible) the link speed of the given ethernet interface. Getting the link speed requires the cap_net_admin capability. Set it using +setcap cap_net_admin=ep $(which i3status)+. +The special interface name `_first_` will be replaced by the first non-wireless +network interface found on the system (excluding devices starting with "lo"). + *Example order*: +ethernet eth0+ *Example format*: +E: %ip (%speed)+ @@ -214,28 +307,47 @@ estimated to be empty. If you want to use the last full capacity instead of the design capacity (when using the design capacity, it may happen that your battery is at 23% when fully charged because it’s old. In general, I want to see it this way, because it tells me how worn off my battery is.), just specify -+last_full_capacity = true+. ++last_full_capacity = true+. You can hide seconds in the remaining time and +empty time estimations by setting +hide_seconds = true+. If you want the battery percentage to be shown without decimals, add +integer_battery_capacity = true+. If your battery is represented in a non-standard path in /sys, be sure to -modify the "path" property accordingly. The first occurence of %d gets replaced -with the battery number, but you can just hard-code a path as well. +modify the "path" property accordingly, i.e. pointing to the uevent file on +your system. The first occurence of %d gets replaced with the battery number, +but you can just hard-code a path as well. It is possible to define a low_threshold that causes the battery text to be colored red. The low_threshold type can be of threshold_type "time" or "percentage". So, if you configure low_threshold to 10 and threshold_type to "time", and your battery lasts another 9 minutes, it will be colored red. +Optionally custom strings including any UTF-8 symbols can be used for different +battery states. This makes it possible to display individual symbols +for each state (charging, discharging, full) +Of course it will also work with special iconic fonts, such as FontAwesome. +If any of this special status strings is omitted, the default (CHR, BAT, FULL) +is used. + *Example order*: +battery 0+ *Example format*: +%status %remaining (%emptytime %consumption)+ +*Example format_down*: +No battery+ + +*Example status_chr*: +⚇ CHR+ + +*Example status_bat*: +⚡ BAT+ + +*Example status_full*: +☻ FULL+ + *Example low_threshold*: +30+ *Example threshold_type*: +time+ +*Example path*: +/sys/class/power_supply/CMB1/uevent+ + === CPU-Temperature Gets the temperature of the given thermal zone. It is possible to @@ -248,6 +360,8 @@ specified thermal zone is getting too hot. Defaults to 75 degrees C. *Example max_threshold*: +42+ +*Example path*: +/sys/devices/platform/coretemp.0/temp1_input+ + === CPU Usage Gets the percentual CPU usage from +/proc/stat+ (Linux) or +sysctl(3)+ (FreeBSD/OpenBSD). @@ -267,7 +381,7 @@ getting higher than the configured threshold. Defaults to 5. *Example format*: +%1min %5min %15min+ -*Example max_threshold*: 5 +*Example max_threshold*: +"0,1"+ === Time @@ -311,24 +425,56 @@ details on the format string. Outputs the volume of the specified mixer on the specified device. Works only on Linux because it uses ALSA. A simplified configuration can be used on FreeBSD and OpenBSD due to -the lack of ALSA, the +device+, +mixer+ and +mixder_idx+ options can be +the lack of ALSA, the +device+ and +mixer+ options can be ignored on these systems. On these systems the OSS API is used instead to -query +/dev/mixer+ directly. +query +/dev/mixer+ directly if +mixer_dix+ is -1, otherwise ++/dev/mixer++mixer_idx+. *Example order*: +volume master+ *Example format*: +♪: %volume+ +*Example format_muted*: +♪: 0%%+ *Example configuration*: ------------------------------------------------------------- volume master { format = "♪: %volume" + format_muted = "♪: muted (%volume)" device = "default" mixer = "Master" mixer_idx = 0 } ------------------------------------------------------------- +== Universal module options + +When using the i3bar output format, there are a few additional options that +can be used with all modules to customize their appearance: + +align:: + The alignment policy to use when the minimum width (see below) is not + reached. Either +center+ (default), +right+ or +left+. +min_width:: + The minimum width (in pixels) the module should occupy. If the module takes + less space than the specified size, the block will be padded to the left + and/or the right side, according to the defined alignment policy. This is + useful when you want to prevent the whole status line from shifting when + values take more or less space between each iteration. + The option can also be a string. In this case, the width of the given text + determines the minimum width of the block. This is useful when you want to + set a sensible minimum width regardless of which font you are using, and at + what particular size. Please note that a number enclosed with quotes will + still be treated as a number. + +*Example configuration*: +------------------------------------------------------------- +disk "/" { + format = "%avail" + align = "left" + min_width = 100 +} +------------------------------------------------------------- + == Using i3status with dzen2 After installing dzen2, you can directly use it with i3status. Just ensure that diff --git a/i3status/i3status-2.9.tar.bz2 b/i3status/i3status-2.9.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..0647ea44f0a2bf56c65c166068faa1d1689831d1 GIT binary patch literal 46615 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 literal 0 HcmV?d00001 diff --git a/i3status/i3status-2.9.tar.bz2.asc b/i3status/i3status-2.9.tar.bz2.asc new file mode 100644 index 0000000..b159ceb --- /dev/null +++ b/i3status/i3status-2.9.tar.bz2.asc @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1 + +iQIcBAABCgAGBQJVDv3vAAoJEE5xYO1KyO4dNrQP/RQkuYiwKSgr3ixDhC3KcMZ/ +ZIJ+MfLCu4W4buqF+CbGI1U274l6cRiXqB+HHTxu0T4ieiK3hKEbGWi3sUR+zFN5 +iF3xEjv852YSeEcfVsThy4XJz7R40D4YTWddk53nKlsYHMbGKqI15XdkrGjFnZK0 +mm0E6cxMQ2DvLApO+RBBh3GvEf3jxUJYLT0b7iBwECzmlBHVzfD/13Xcc4CmlLaU +2qhqhbodtWA9TXpiGJyZMIluQRnZLAE4Cy5TQa/W8dU3AhNbemCWn8Yq5+Np1ey0 +2DHkHqIE4tshZgt6zNEXvJ66NYu7kEBveA6VV7N6GhmbdGr58sIDXbQ7QMrhO1qB +jKxeipeymKPzlYrL8I5gEXXFdJlQyc2jZoeeBfRxiM2IncISOgRCuaWEzlmthXF8 +Bmi9WhUg3QmBLHzwpDFqmcrpTMwk9TW1Pd/79GdpAtMR1ZJPcC4LnzVdM43QsS7P +D62++cskZ2xIYHsVPyfg5FWyb0/VLira/vB6TWneQnLP6W+afJznOifUCuO3Huf1 +xvgIWSL5FD7G8+YeMscbJnb9RozBzhwJM/p7w+vNi2hZhYVScQEOqY/5HWVNnT/u +/JfgKOR3HmXnC1ThXOTQEhjeVO0feY8eRg/RBygGbR/MMZcCgz0byHrAfJUJP3OT +5n7AnQ1nvGqNv0zxHJy8 +=44vl +-----END PGP SIGNATURE----- diff --git a/i3status/index.html b/i3status/index.html index fecd9e5..d78de19 100644 --- a/i3status/index.html +++ b/i3status/index.html @@ -19,6 +19,9 @@ title: i3status

Releases

    +
  • i3status-2.9.tar.bz2 + (GPG signature, 2015-03-22)
  • +
  • i3status-2.8.tar.bz2 (GPG signature, 2014-01-05)
  • diff --git a/i3status/manpage.html b/i3status/manpage.html index 05805af..3df9131 100644 --- a/i3status/manpage.html +++ b/i3status/manpage.html @@ -2,15 +2,15 @@ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> - + - + i3: i3status(1) @@ -31,8 +31,8 @@ window.onload = function(){asciidoc.footnotes(); asciidoc.toc(2);}

    i3status(1)

    Michael Stapelberg
    <michael@i3wm.org>
    -version 2.6, -October 2012 +version 2.9, +March 2015
    Table of Contents
    @@ -41,7 +41,7 @@ window.onload = function(){asciidoc.footnotes(); asciidoc.toc(2);}

    1. NAME

    -

    i3status - Generates a status line for dzen2 or xmobar

    +

    i3status - Generates a status line for i3bar, dzen2 or xmobar

    @@ -119,7 +119,8 @@ for a complete reference.

    order += "ipv6" order += "disk /" order += "run_watch DHCP" -order += "run_watch VPN" +order += "run_watch VPNC" +order += "path_exists VPN" order += "wireless wlan0" order += "ethernet eth0" order += "battery 0" @@ -141,6 +142,10 @@ ethernet eth0 { battery 0 { format = "%status %percentage %remaining %emptytime" + format_down = "No battery" + status_chr = "⚇ CHR"" + status_bat = "⚡ BAT" + status_full = "☻ FULL" path = "/sys/class/power_supply/BAT%d/uevent" low_threshold = 10 } @@ -149,10 +154,16 @@ run_watch DHCP { pidfile = "/var/run/dhclient*.pid" } -run_watch VPN { +run_watch VPNC { + # file containing the PID of a vpnc process pidfile = "/var/run/vpnc/pid" } +path_exists VPN { + # path exists when a VPN tunnel launched by nmcli/nm-applet is active + path = "/proc/sys/net/ipv4/conf/tun0" +} + tztime local { format = "%Y-%m-%d %H:%M:%S" } @@ -191,7 +202,8 @@ character ("#").

    Likewise, you can use the color_separator directive to specify the color that will be used to paint the separator bar. The separator is always output in -color, even when colors are disabled by the colors directive.

    +color, even when colors are disabled by the colors directive. This option has +no effect when output_format is set to i3bar or none.

    The interval directive specifies the time in seconds for which i3status will sleep before printing the next status line.

    Using output_format you can chose which format strings i3status should @@ -229,12 +241,24 @@ with the xmonad Window Manager.

    +term +
    +
    +

    +Use ANSI Escape sequences to produce a terminal-output as close as possible to +the graphical outputs. This makes debugging your config file a little bit +easier because the terminal-output of i3status becomes much more readable, but +should only used for such quick glances, because it will only support very +basic output-features (for example you only get 3 bits of color depth). +

    +
    +
    none

    -Does not use any color codes. Separates values by the pipe symbol. This should -be used with i3bar and can be used for custom scripts. +Does not use any color codes. Separates values by the pipe symbol by default. +This should be used with i3bar and can be used for custom scripts.

    @@ -242,22 +266,94 @@ be used with i3bar and can be used for custom scripts. to define specific colors per module. If one of these directives is defined in a module section its value will override the value defined in the general section just for this module.

    +

    If you don’t fancy the vertical separators between modules i3status/i3bar +uses by default, you can employ the separator directive to configure how +modules are separated. You can either disable the default separator altogether +setting it to the empty string. You might then define separation as part of a +module’s format string. This is your only option when using the i3bar output +format as the separator is drawn by i3bar directly otherwise. For the other +output formats, the provided non-empty string will be automatically enclosed +with the necessary coloring bits if color support is enabled.

    +

    Example configuration:

    +
    +
    +
    general {
    +    output_format = "xmobar"
    +    separator = "  "
    +}
    +
    +order += "load"
    +order += "disk /"
    +
    +load {
    +    format = "[ load: %1min, %5min, %15min ]"
    +}
    +disk "/" {
    +    format = "%avail"
    +}
    +

    5.2. IPv6

    This module gets the IPv6 address used for outgoing connections (that is, the best available public IPv6 address on your computer).

    Example format_up: %ip

    -

    Example format_down no IPv6

    +

    Example format_down: no IPv6

    5.3. Disk

    Gets used, free, available and total amount of bytes on the given mounted filesystem.

    These values can also be expressed in percentages with the percentage_used, percentage_free, percentage_avail and percentage_used_of_avail formats.

    +

    Byte sizes are presented in a human readable format using a set of prefixes +whose type can be specified via the "prefix_type" option. Three sets of +prefixes are available:

    +
    +
    +binary +
    +
    +

    +IEC prefixes (Ki, Mi, Gi, Ti) represent multiples of powers of 1024. +This is the default. +

    +
    +
    +decimal +
    +
    +

    +SI prefixes (k, M, G, T) represent multiples of powers of 1000. +

    +
    +
    +custom +
    +
    +

    +The custom prefixes (K, M, G, T) represent multiples of powers of 1024. +

    +
    +
    +

    It is possible to define a low_threshold that causes the disk text to be +displayed using color_bad. The low_threshold type can be of threshold_type +"bytes_free", "bytes_avail", "percentage_free", or "percentage_avail", where +the former two can be prepended by a generic prefix (k, m, g, t) having +prefix_type. So, if you configure low_threshold to 2, threshold_type to +"gbytes_avail", and prefix_type to "binary", and the remaining available disk +space is below 2 GiB, it will be colored bad. If not specified, threshold_type +is assumed to be "percentage_avail" and low_threshold to be set to 0, which +implies no coloring at all.

    +

    You can define a different format with the option "format_not_mounted" +which is used if the path is not a mount point. So you can just empty +the output for the given path with adding »format_not_mounted=""« +to the config section.

    Example order: disk /mnt/usbstick

    Example format: %free (%avail)/ %total

    Example format: %percentage_used used, %percentage_free free, %percentage_avail avail

    +

    Example prefix_type: custom

    +

    Example low_threshold: 5

    +

    Example threshold_type: percentage_free

    5.4. Run-watch

    @@ -268,71 +364,96 @@ a specific application, such as a VPN client or your DHCP client is running.

    Example format: %title: %status

    -

    5.5. Wireless

    -

    Gets the link quality and ESSID of the given wireless network interface. You -can specify different format strings for the network being connected or not -connected.

    +

    5.5. Path-exists

    +

    Checks if the given path exists in the filesystem. You can use this to check if +something is active, like for example a VPN tunnel managed by NetworkManager.

    +

    Example order: path_exists VPN

    +

    Example format: %title: %status

    +
    +
    +

    5.6. Wireless

    +

    Gets the link quality, frequency and ESSID of the given wireless network +interface. You can specify different format strings for the network being +connected or not connected.

    +

    The special interface name _first_ will be replaced by the first wireless +network interface found on the system (excluding devices starting with "lo").

    Example order: wireless wlan0

    -

    Example format: W: (%quality at %essid, %bitrate) %ip

    +

    Example format: W: (%quality at %essid, %bitrate / %frequency) %ip

    -

    5.6. Ethernet

    +

    5.7. Ethernet

    Gets the IP address and (if possible) the link speed of the given ethernet interface. Getting the link speed requires the cap_net_admin capability. Set it using setcap cap_net_admin=ep $(which i3status).

    +

    The special interface name _first_ will be replaced by the first non-wireless +network interface found on the system (excluding devices starting with "lo").

    Example order: ethernet eth0

    Example format: E: %ip (%speed)

    -

    5.7. Battery

    +

    5.8. Battery

    Gets the status (charging, discharging, running), percentage, remaining time and power consumption (in Watts) of the given battery and when it’s estimated to be empty. If you want to use the last full capacity instead of the design capacity (when using the design capacity, it may happen that your battery is at 23% when fully charged because it’s old. In general, I want to see it this way, because it tells me how worn off my battery is.), just specify -last_full_capacity = true.

    +last_full_capacity = true. You can hide seconds in the remaining time and +empty time estimations by setting hide_seconds = true.

    If you want the battery percentage to be shown without decimals, add integer_battery_capacity = true.

    If your battery is represented in a non-standard path in /sys, be sure to -modify the "path" property accordingly. The first occurence of %d gets replaced -with the battery number, but you can just hard-code a path as well.

    +modify the "path" property accordingly, i.e. pointing to the uevent file on +your system. The first occurence of %d gets replaced with the battery number, +but you can just hard-code a path as well.

    It is possible to define a low_threshold that causes the battery text to be colored red. The low_threshold type can be of threshold_type "time" or "percentage". So, if you configure low_threshold to 10 and threshold_type to "time", and your battery lasts another 9 minutes, it will be colored red.

    +

    Optionally custom strings including any UTF-8 symbols can be used for different +battery states. This makes it possible to display individual symbols +for each state (charging, discharging, full) +Of course it will also work with special iconic fonts, such as FontAwesome. +If any of this special status strings is omitted, the default (CHR, BAT, FULL) +is used.

    Example order: battery 0

    Example format: %status %remaining (%emptytime %consumption)

    +

    Example format_down: No battery

    +

    Example status_chr: ⚇ CHR

    +

    Example status_bat: ⚡ BAT

    +

    Example status_full: ☻ FULL

    Example low_threshold: 30

    Example threshold_type: time

    +

    Example path: /sys/class/power_supply/CMB1/uevent

    -

    5.8. CPU-Temperature

    +

    5.9. CPU-Temperature

    Gets the temperature of the given thermal zone. It is possible to define a max_threshold that will color the temperature red in case the specified thermal zone is getting too hot. Defaults to 75 degrees C.

    Example order: cpu_temperature 0

    Example format: T: %degrees °C

    Example max_threshold: 42

    +

    Example path: /sys/devices/platform/coretemp.0/temp1_input

    -

    5.9. CPU Usage

    +

    5.10. CPU Usage

    Gets the percentual CPU usage from /proc/stat (Linux) or sysctl(3) (FreeBSD/OpenBSD).

    Example order: cpu_usage

    Example format: %usage

    -

    5.10. Load

    +

    5.11. Load

    Gets the system load (number of processes waiting for CPU time in the last 1, 5 and 15 minutes). It is possible to define a max_threshold that will color the load value red in case the load average of the last minute is getting higher than the configured threshold. Defaults to 5.

    Example order: load

    Example format: %1min %5min %15min

    -

    Example max_threshold: 5

    +

    Example max_threshold: "0,1"

    -

    5.11. Time

    +

    5.12. Time

    Outputs the current time in the local timezone. To use a different timezone, you can set the TZ environment variable, or use the tztime module. @@ -341,7 +462,7 @@ See strftime(3) for details on the format string.

    Example format: %Y-%m-%d %H:%M:%S

    -

    5.12. TzTime

    +

    5.13. TzTime

    Outputs the current time in the given timezone. If no timezone is given, local time will be used. See strftime(3) for details on the format string. @@ -354,7 +475,7 @@ in the tztime module.

    Example timezone: Europe/Berlin

    -

    5.13. DDate

    +

    5.14. DDate

    Outputs the current discordian date in user-specified format. See ddate(1) for details on the format string. Note: Neither %. nor %X are implemented yet.

    @@ -362,20 +483,23 @@ details on the format string.

    Example format: %{%a, %b %d%}, %Y%N - %H

    -

    5.14. Volume

    +

    5.15. Volume

    Outputs the volume of the specified mixer on the specified device. Works only on Linux because it uses ALSA. A simplified configuration can be used on FreeBSD and OpenBSD due to -the lack of ALSA, the device, mixer and mixder_idx options can be +the lack of ALSA, the device and mixer options can be ignored on these systems. On these systems the OSS API is used instead to -query /dev/mixer directly.

    +query /dev/mixer directly if mixer_dix is -1, otherwise +/dev/mixer+mixer_idx+.

    Example order: volume master

    -

    Example format: ♪: %volume

    +

    Example format: ♪: %volume +Example format_muted: ♪: 0%%

    Example configuration:

    volume master {
             format = "♪: %volume"
    +        format_muted = "♪: muted (%volume)"
             device = "default"
             mixer = "Master"
             mixer_idx = 0
    @@ -385,7 +509,51 @@ query /dev/mixer directly.

    -

    6. Using i3status with dzen2

    +

    6. Universal module options

    +
    +

    When using the i3bar output format, there are a few additional options that +can be used with all modules to customize their appearance:

    +
    +
    +align +
    +
    +

    + The alignment policy to use when the minimum width (see below) is not + reached. Either center (default), right or left. +

    +
    +
    +min_width +
    +
    +

    + The minimum width (in pixels) the module should occupy. If the module takes + less space than the specified size, the block will be padded to the left + and/or the right side, according to the defined alignment policy. This is + useful when you want to prevent the whole status line from shifting when + values take more or less space between each iteration. + The option can also be a string. In this case, the width of the given text + determines the minimum width of the block. This is useful when you want to + set a sensible minimum width regardless of which font you are using, and at + what particular size. Please note that a number enclosed with quotes will + still be treated as a number. +

    +
    +
    +

    Example configuration:

    +
    +
    +
    disk "/" {
    +    format = "%avail"
    +    align = "left"
    +    min_width = 100
    +}
    +
    +
    +
    +
    +

    7. Using i3status with dzen2

    After installing dzen2, you can directly use it with i3status. Just ensure that output_format is set to dzen2.

    @@ -398,7 +566,7 @@ query /dev/mixer directly.

    -

    7. Using i3status with xmobar

    +

    8. Using i3status with xmobar

    To get xmobar to start, you might need to copy the default configuration file to ~/.xmobarrc. Also, ensure that the output_format option for i3status @@ -411,7 +579,7 @@ is set to xmobar.

    -

    8. What about memory usage or CPU frequency?

    +

    9. What about memory usage or CPU frequency?

    While talking about two specific things, please understand this section as a general explanation why your favorite information is not included in i3status.

    @@ -444,7 +612,7 @@ with additional boring tasks like repeatedly checking a number.