Go to file
Stephen Seo fb49271a7e Refactored handling of Option wrapping primitives
Option wrapping primities implement Copy, so they can be used directly
in the closure, and is more efficient to use copies of f64/u16 than with
references to them.
2022-10-18 21:47:11 +09:00
pictures Add picture of swaybar using swaybar_info 2022-08-10 14:29:58 +09:00
src Refactored handling of Option wrapping primitives 2022-10-18 21:47:11 +09:00
.gitignore Init skeleton project 2022-07-09 15:44:04 +09:00
Cargo.lock Impl 0.1.5 of swaybar_info 2022-10-18 21:04:28 +09:00
Cargo.toml Impl 0.1.5 of swaybar_info 2022-10-18 21:04:28 +09:00
Changelog.md Refactored handling of Option wrapping primitives 2022-10-18 21:47:11 +09:00
LICENSE Add MIT LICENSE 2022-07-09 19:01:23 +09:00
README.md Impl 0.1.5 of swaybar_info 2022-10-18 21:04:28 +09:00

swaybar_info

swaybar\_info crates.io version badge swaybar\_info license badge

swaybar\_info preview image

About

swaybar_info is a program to be utilized by swaybar that is used by the Sway tiling Wayland compositor.

Changes in What Version

See the Changelog.md for details.

Help Text

Usage:
  -h | --help                                       Prints help
  --netdev=<device_name>                            Check network traffic on specified device
  --netdev_width=<width>                            Sets the min-width of the netdev output (default 10)
  --netgraph_max_bytes=<bytes>                      Enable "graph" output when polling network traffic
  --interval-sec=<seconds>                          Output at intervals of <seconds> (default 5)
  --acpi-builtin                                    Use "acpi -b" built-in fetching (battery info, with color)
  --regex-cmd=<cmd>[SPLIT]<args...>[SPLIT]<regex>   Use an output of a command as a metric
  --time-format=<date format string>                Set the format string for the date

Usage

# build the "release" build of the program
cargo build --release
# put the "release" build somewhere to be used by swaybar
cp ./target/release/swaybar_info ~/.config/sway/

# Alternatively, get it from crates.io/
cargo install swaybar_info
# The `swaybar_info` binary should be placed in $HOME/.cargo/bin/

Put the following in your ~/.config/sway/config (assuming the binary is at $HOME/.config/sway/swaybar_info):

bar {
    position top
    # Set --netdev=<device> such that <device> is the network device you
    # want to monitor. You can omit --netdev=<device>, but that will also
    # cause the program to omit network traffic stats.
    status_command $HOME/.config/sway/swaybar_info --netdev=enp7s0

    # A "built-in" for "acpi -b" is available, and can be activated with the
    # --acpi-builtin flag:

    #status_command $HOME/.config/sway/swaybar_info --acpi-builtin

    # One can use the "--regex-cmd=<cmd>[SPLIT]<args...>[SPLIT]<regex>" option like so:

    #status_command $HOME/.config/sway/swaybar_info --regex-cmd="acpi[SPLIT]-b[SPLIT][0-9]+%.*"

    # This example gets battery info into the bar.
    # Multiple args should be separated with "[SPLIT]".
    # Note that the <args...> portion is optional.


    # The following uses 24 hour time
    #status_command $HOME/.config/sway/swaybar_info --time-format="%Y-%m-%d %R:%S"
}

Advanced Usage of --regex-cmd

If the regex provided to swaybar_info has two captures, the first capture will be used as the text to be displayed, and the second capture will be expected to be the color string (such as FFFFFF for white, or 44FF44 for a lighter green).

For example, if the script invoked with --regex-cmd has output like the following:

MPD Title | MPD Album | playingCOLORSPLIT44FF44

That sometimes becomes:

MPD is not running

Then this text can be parsed with a regex like:

status_command $HOME/.config/sway/swaybar_info \
'--regex-cmd=$HOME/scripts/mpc/mpcCommand.sh[SPLIT]simple[SPLIT]^\(.\*?\)\(?:COLORSPLIT\([A-F0-9]{6}\)\)?$'

Note that some characters like * or ( had to be escaped because they are being passed verbatim to a shell.

If only one capture is used in the regex string, then that capture will be used for the output text, and the color will be left unspecified (usually defaulting to white).

For a reference of what kind of regex is supported, see this page.

Dependencies

Uses serde_json, serde, chrono, and regex.