Go to file
Otto Modinos 7d2c7ab438 Allow having clickable areas inside another
Previously, if you started several areas, one inside another, only the
inermost one would get registered and eventually triggered. This patch
fixes that, allowing you to use multiple areas around text to respond to
several different buttons, for example, both scroll-up and scroll-down.

If you define two areas that respond to the same button, only the
innermost one would get triggered. I think this makes sense.
2015-02-11 14:51:10 +02:00
.gitignore add .gitignore file - ignore tmp, object and executable files 2012-07-17 14:56:52 +03:00
.travis.yml Travis integration 2014-07-22 22:55:30 +02:00
bar.c Allow having clickable areas inside another 2015-02-11 14:51:10 +02:00
LICENSE Format LICENSE correctly 2012-07-24 12:08:12 +02:00
Makefile Fixed two memory leaks. Don't treat unicode sequences over two bytes long as latin1 codepoints (fixes #99). 2015-01-25 21:14:06 +01:00
palette.pl Fix issue #22 2013-09-30 16:03:36 +00:00
README.pod Allow explicitly specifying the font with %{Tindex} 2015-01-21 20:43:22 +02:00

=head1 NAME

bar - bar ain't recursive

=for HTML <a href="https://travis-ci.org/LemonBoy/bar"><img src="https://travis-ci.org/LemonBoy/bar.svg?branch=master"></a>

=head1 SYNOPSIS

I<bar> [-h | -g I<width>B<x>I<height>B<+>I<x>B<+>I<y> | -b | -d | -f I<font> | -p | -u I<pixel> | -B I<color> | -F I<color>]

=head1 DESCRIPTION

B<bar> is a lightweight bar entirely based on XCB. Provides full UTF-8 support, basic formatting, RandR and Xinerama support and EWMH compliance without wasting your precious memory.

=head1 OPTIONS

=over

=item B<-h>

Display the help and exit.

=item B<-g> I<width>B<x>I<height>B<+>I<x>B<+>I<y>

Set the window geometry. If a parameter is omitted it's filled with the default value. If the I<y> parameter is specified along with the B<-b> switch then the position is relative to the bottom of the screen.

=item B<-b>

Dock the bar at the bottom of the screen.

=item B<-d>

Force docking without asking the window manager. This is needed if the window manager isn't EWMH compliant.

=item B<-f> I<font>

Comma separated list of fonts, bar supports a maximum of five fonts (the limit can be tweaked by changing the MAX_FONT_COUNT parameter in the source).

=item B<-p>

Make bar permanent, don't exit after the standard input is closed.

=item B<-u> I<pixel>

Sets the underline width in pixels. The default is 1.

=item B<-B> I<color>

Set the background color of the bar. I<color> might be either in hex format (#aarrggbb) or in the symbolic name format (eg. white, indianred, darkgray). If no compositor such as compton or xcompmgr is running the alpha channel is silently ignored.

=item B<-F> I<color>

Set the foreground color of the bar. Accepts the same color formats as B<-B>.

=back

=head1 FORMATTING

bar provides a screenrc-inspired formatting syntax to allow full customization at runtime. Every formatting block is opened with B<%{> and closed by B<}> and accepts the following commands, the parser tries it's best to handle malformed input.

=over

=item B<R>

Swap the current background and foreground colors.

=item B<l>

Aligns the following text to the left side of the screen.

=item B<c>

Aligns the following text to the center of the screen.

=item B<r>

Aligns the following text to the right side of the screen.

=item B<B>I<color>

Set the text background color. The parameter I<color> can be I<-> or a color in one of the formats mentioned before. The special value I<-> resets the color to the default one.

=item B<F>I<color>

Set the text foreground color. The parameter I<color> can be I<-> or a color in one of the formats mentioned before. The special value I<-> resets the color to the default one.

=item B<T>I<index>

Set the font used to draw the following text. The parameter I<index> is a 1-based index of the font list supplied to bar. Any other value (for example I<->) resets bar to normal behaviour (matching the first font that can be used for that character). If the selected font can't be used to draw a character, bar will fall back to normal behaviour for that character.

=item B<U>I<color>

Set the text underline color. The parameter I<color> can be I<-> or a color in one of the formats mentioned before. The special value I<-> resets the color to the default one.

=item B<A>I<button>:I<command>:

Create a clickable area starting from the current position, when the area is clicked I<command> is executed. The area is closed when a B<A> token, not followed by : is encountered.

Eg. I<%{A:reboot:} Click here to reboot %{A}>

The I<button> field is optional, it defaults to the left button, and it's a number ranging from 1 to 5 which maps to the left, middle, right, scroll down and scroll up movements. Your mileage may vary.

=item B<S>I<dir>

Change the monitor bar is rendering to. I<dir> can be either

=over

=item B<+>/B<->

Next/previous monitor.

=item B<f>/B<l>

First/last monitor.

=item I<0-9>

Nth monitor.

=back

=back

B<Attribute modifiers>

=over

=item B<+>I<attribute>

Set the attribute I<attribute> for the following text.

=item B<->I<attribute>

Unset the attribute I<attribute> for the following text.

=item B<!>I<attribute>

Toggle the attribute I<attribute> for the following text.

=back

Where I<attribute> is one of the following

=over

=item B<o>

Draw a line over the text.

=item B<u>

Draw a line under the text.

=back

=head1 OUTPUT

Clicking on an area makes bar output the command to stdout, followed by a newline, allowing the user to pipe it into a script, execute it or simply ignore it. Simple and powerful, that's it.

=head1 WWW

L<git repository|https://github.com/LemonBoy/bar>

=head1 AUTHOR

2012-2014 (C) The Lemon Man

Xinerama support was kindly contributed by Stebalien

RandR support was kindly contributed by jvvv

Clickable areas support was heavily based off u-ra contribution