Provided by: yabar_0.4.0-1.1_amd64 bug

NAME

       Yabar - a modern and lightweight status bar for X window managers.

SYNOPSIS

       yabar [-c CONFIG_FILE] [-v] [-h]

DESCRIPTION

       Yabar  is  a  modern  and  lightweight status bar that is intended to be used along with minimal X window
       managers like bspwm and i3. Yabar has the following features:

       • Extremely configurable with easy configuration system using a single config file.

       • A growing set of ready-to-use internal blocks developed in plain c.

       • Pango font rendering with support of pango markup language.

       • Support for transparency.

       • Multi-monitor support using RandR.

       • Entirely clickable.

       • Support for several environment variables to help button commands.

       • Multiple bars within the same session.

TERMINOLOGY

       A Yabar session should contain one or more bars within the same session. Each bar should contain  one  or
       more  blocks.  Each  block  should  display  some  useful info to the user (free memory, CPU temperature,
       etc...).

CONFIGURATION

       Yabar currently by default accepts configuration from the config file ~/.config/yabar/yabar.conf or using
       yabar -c [CONFIG_FILE]. The config file should like something like this:

              bar-list: ["bar1", "bar2", ...];

              bar1: {
                  //bar-specific options//
                  block-list: ["block1", "block2", ...];
                  block1: {
                      //block-specific options//
                  }
                  block2: {
                      //block-specific options//
                  }
              }

       A  bar or a block can be named to whatever name (preferably a short and meaningful name). Only names that
       are included in the "bar-list" and "block-list" entries will be drawn on the screen.

   BAR-SPECIFIC OPTIONS
       Each bar can have its  font,  position  (currently  only  top  and  bottom),  background  color,  height,
       horizontal and vertical gaps, and other options.

       • Font:  Yabar  currently  accepts  a  string  that  contains  a font or a list of fonts (similar to i3).
         Example:

              font: "Droid Sans, FontAwesome Bold 9";

       • Position: Yabar currently accepts top and bottom. Example:

              position: "top";

       • Gaps: You can define the size of horizontal and vertical gaps in pixels. Default is zero. Examples:

              gap-horizontal: 20;
              gap-vertical: 5;

       • Height: Default is 20 pixels. Example:

              height: 25;

       • Width: The default bar width is screen size - 2 * horizontal gap. However, if this option is used,  the
         bar starts at horizontal gap and ends at horizontal gap + width. Example:

              width: 800;

       • Monitor:  This  option is used to specify the monitor using randr extension for the bar to be drawn on.
         You can find the name of your monitors using xrandr -q command. The default value is the  first  active
         monitor. Example:

              monitor: "LVDS1";
              monitor: "VGA1";

       • Underline and overline sizes: This option defines the thickness of underlines and overlines. Default is
         0. Example:

              underline-size: 2;
              overline-size: 2;

       • Slack: You can define the size of the slack (i.e. the unused  space  between  blocks).  Default  is  0.
         Example:

              slack-size: 2;

       • Borders:  You  can optionally define a size and a color for a border surrounding the bar. Default is no
         borders. Example:

              border-size: 2;
              border-color-rgb: 0xffffff;

       • Inheritance: As the config file gets larger because you want to add several bars, you may find yourself
         adding  many  identical  option  values  for  every added bar. This optional entry is added in order to
         inherit the options from a precedent bar into your next  bar.  You  can  also  override  the  inherited
         options with new values.

              inherit: "bar1";

       You  can  also  inherit  a bar with not only its bar-specific options, but also with its blocks and their
       block-specific options as well using the inherit-all bar-specific option. Example:

              inherit-all: "bar1";

       • Button commands: Yabar already supports mouse button commands for each block. Moreover, yabar seeks  to
         make  the  entire  bar  clickable  even  if  the  pressed  area  does  not  belong  to any block or the
         corresponding button command for that block is not defined. Example:

              command-button4: "xbacklight -inc 1";
              command-button5: "xbacklight -dec 1";

   BLOCK-SPECIFIC OPTIONS
       Each block can have its command/script,  background,  foreground  (i.e.  font),  underline  and  overline
       colors, alignment and other options.

       • Execution:  The  path  to  the  command/script  to  be  executed.  Yabar  consumes  the  output  of the
         command/script's stdout and shows it on the bar. Example:

              exec: "date";

       • Alignment: Yabar accepts left, center or right alignments. consecutive blocks will  be  placed  to  the
         right of each other. Example:

              align: "right";

       • Justify:  By  default yabar centers the text inside the block size. However, you can optionally justify
         the text to the left or the right.

              justify: "left";

       • Type: The block type can be periodic where the command/script is executed within a  fixed  interval  of
         time,  persistent  where  the  command/script  runs  in  a persistent way like xtitle or once where the
         command/script is executed only once where  the  intended  info  should  not  change  like  in  whoami.
         Examples:

              type: "periodic";
              type: "persist";
              type: "once";

       • Interval: In seconds. This is only useful when the  block type is periodic. Example:

              interval: 3;

       • Fixed  size:  You  should define the fixed width size of the block. Yabar currently only supports fixed
         widths (this will be improved soon). You can deduce the appropriate width using trial  and  error.  The
         current default value is 80 but you are encouraged to override it to a more appropriate value. Example:

              fixed-size: 90;

       • Pango markup: Yabar accepts either true or false without quotes. Default is false. Example:

              pango-markup: true;

       • Colors: A block has 4 kinds of colors. Background, foreground which is the font color when pango markup
         is not used, underline and overline. Colors are accepted in hex RRGGBB  and  AARRGGBB  representations.
         Examples:

              foreground-color-rgb    : 0xeeeeee;
              background-color-argb   : 0x1dc93582;
              underline-color-rgb     : 0x1d1d1d;
              overline-color-argb     : 0xf0642356;

       Note that the values are integers and not double-quoted strings.

       • Button  commands:  This option is used to invoke a command/script upon a mouse button press. You have 5
         buttons that usually represent left click, right  click,  middle  click,  scroll  up  and  scroll  down
         respectively but this may not be the case for everyone. Examples:

              command-button1: "pavucontrol";
              command-button4: "pactl set-sink-volume 0 +10%";
              command-button5: "pactl set-sink-volume 0 -10%";

       • Inheritance:  As  the  config  gets  larger  because you want to add many blocks, you may find yourself
         adding many identical option values for every added block. This optional entry is  added  in  order  to
         inherit  the  options  from  a precedent block into your new block. You can also override the inherited
         options with new values.

              inherit: "bar1.block1";

   DYNAMIC COLORS FOR BLOCKS
       You can change block colors(background, foreground, underline and overline) within  runtime.  Along  with
       pango markup format, you can fully control how a block looks throughout yabar's session.

       If  you wish to change one or more of the 4 color types, you must begin your string-to-be-drawn (i.e. the
       output string to stdout by your shell script) with !Y FORMAT Y!. the FORMAT statement should contain  the
       color  type  (BG  or  bg  for  background,  FG  or fg for foreground, U or u for underline and O or o for
       overline). The color must be in hex AARRGGBB (So if you want to add an rgb color just make it  FFxxxxxx).
       Examples:

                  "!Y BG 0xFFFF0000 fg0xFF00ff00 U0xFFFAC739 Y!"
                  "!Ybg0xff00ff00Y!"

       The  spaces  are  just  skipped  automatically.  Keep in mind that You can always dynamically change your
       foreground color using pango markup too.

   ENVIRONMENT VARIABLES
       Yabar sets a handful of environment variables before executing your commands/scripts that are defined  in
       the  command-button{1-5}  entry.  Such  env  variables  can  be  useful  when  drawing your window on the
       corresponding button press. Current env variables are:

                  ${YABAR_BLOCK_X} #The beginning x axis for the block
                  ${YABAR_BLOCK_Y} #It returns just the bottom y value of the block in case of topbar or just the top y value of the block in case of bottombar
                  ${YABAR_BLOCK_WIDTH} #Block width

INTERNAL BLOCKS

       Yabar has several internal blocks developed in plain c. This feature is  optional  and  can  be  disabled
       before  building  the  code using the compilation conditional flag -DYA_INTERNAL in Makefile. Yabar scans
       the string value in the exec entry to check  whether  it  is  a  reserved  internal  block  or  a  normal
       command/script.  Internal blocks have 5 additional block-specific options:

                  internal-prefix  # Inject a string (usually a font icon) before the output string
                  internal-suffix  # Inject a string (usually a font icon) after the output string
                  internal-option1 # block-specific
                  internal-option2 # block-specific
                  internal-option3 # block-specific

       Yabar has a growing set of useful blocks. The current blocks are:

       • Date  and  time: Maybe the most essential block. You can control the output format using the standard c
         library format in time.h. Example:

              exec: "YABAR_DATE";
              internal-option1: "%a %d %b, %I:%M"; #Format
              internal-prefix: " ";
              interval: 2;

       • Current window title: It uses EWMH to show the current window title. Example:

              exec: "YABAR_TITLE";
              fixed-size: 300;

       • Current workspace: It uses EWMH to show the current workspace/desktop. Example:

              exec: "YABAR_WORKSPACE";
              internal-option1: "        "; #Type all your workspace names (usually font icons) separated by a space between one another.

       • Uptime: shows the system uptime. Currently it shows using a hours:minutes format.

              exec: "YABAR_UPTIME";
              interval: 5;

       • Thermal: It checks out the thermal value in the file /sys/class/NAME/temp. Example:

              exec: "YABAR_THERMAL";
              internal-option1: "thermal_zone0"; #i.e. Replace `NAME` with your corresponding name
              interval: 1;

       • Brightness: It checks out  the  brightness  value  in  the  file  /sys/class/backlight/NAME/brightness.
         Example:

              exec: "YABAR_BRIGHTNESS";
              internal-option1: "intel_backlight"; #i.e. Replace `NAME` with your corresponding name
              interval: 1;

       • Network   bandwidth:   It   checks   out  the  total  transmitted  and  received  bytes  in  the  files
         /sys/class/net/NAME/statistics/tx_bytes and /sys/class/net/NAME/statistics/rx_bytes and convert them to
         rates. Example:

              exec: "YABAR_BANDWIDTH";
              internal-option1: "enp2s0"; #i.e. Replace NAME with your corresponding name
              internal-option2: " "; #Two Strings (usually 2 font icons) to be injected before down/up values
              interval: 2;

       • Used RAM: It checks out the file /proc/meminfo and then computes the total used memory. Example:

              exec: "YABAR_MEMORY";
              interval: 1;

       • CPU total load: It checks out the file /proc/stat and then computes the total load percentage: Example:

              exec: "YABAR_CPU";
              interval: 2;
              internal-prefix: " ";
              internal-suffix: "%";

       • Disk  IO  activity:  It  checks  out the file /sys/class/block/NAME/stat and then computes the read and
         write rates. Example:

              exec: "YABAR_DISKIO";
              internal-option1: "sda"; #i.e. Replace NAME with your corresponding name
              internal-option2: " "; #Two Strings (usually 2 font icons) to be injected before down/up values
              interval: 1;

LICENSE

       Yabar is licensed under the MIT license. For more info check out the file LICENSE.

AUTHOR

       George Badawi <geommer at gmail.com>

                                                                                                         Yabar()