Habak - "Ha" Background
=========

Compilation:
	We need a compiler, X server and Imlib2. Just run make, that's all.

Installation:
	Well, place a ready binary where you want.

A short review:


Habak is using layers. The lowest layer is just a black screen.
On this you can place other objects, called habaks. There are
three kinds of habaks: graphic files (images),  fonts and "internal objects"
(internals). Wallaper is created by putting on a black screen
one or more habaks. An order of habaks in command line is an order
of putting them on desktop, so the last habak will be drawed above
previous habaks.

Kinds of habaks:


Files (images) are included by -i option, ie:

./habak -i ~/graphics/wallpaper.jpg

will include to desktop wallpaper.jpg file. If you typed after -i not a file,
but a directory, habak would create a list of files contained within, randomly
select any one of them, and then try to load it. In other words,
if you have a lot of pictures in ~/gfx/nice_wallpapers/ then habak
can choose random image. You only need to run './habak -i ~/gfx/nice_wallpapers/'

Aside from files, you can use fonts (TrueType). Option -f will be useful in this
case. By means of -f option you have to point a file with TrueType font, ie.

./habak -f ~/.fonts/nice_font.ttf

You can set a size of font, by typing it following slash after font name, ie
'./habak -f ~/.fonts/nice_font.ttf/50'

Third (and last) type of habaks are internal habaks. You can enable them
by the -I option. They are not adopting any external data, but
themself generate some patterns. At this moment only two patterns
are available, "int" and "INT", which do an interlacing. For example:

./habak -I int

Internal habak "int" do an interlacing, by turning out even lines
of image. Very nice effect, especially if wallpaper is gaudy.
"INT" habak works identical as "int", but turns out odd lines
(by putting together "int" and "INT" you can turn out all lines of screen).

By default lines aren't turned out in fact, but darked (in my opinion
it generates a better effect), but you can control it by
-c color modifier (i will tell about it later).


USAGE PHILOSOPHY
You can (and you should to) put habaks together, ie.

./habak -i ~/gfx/cool.jpg -I int -i ~/gfx/small_logo.png -f ~/.fonts/deltafont.ttf -f ~/.fonts/deltafont.ttf/10

that syntax means, that habak will firstly draw coll.jpg file,
then put on internal habak "interlace", and then will draw small_logo.png
image, then deltafont.ttf font, and eventually one more time deltafont.ttf
file, but this time with size of 10 pixels. Simple.

MODIFIERS
Obviously, alone habaks wouldn't be so elastic, so there are available a lot
of modifiers that affect on them look. Some modifiers are even
necessary. Modifiers are options, that are given following
a definition of any habak - they affect only just followed habak.

Modifier -C
-C is a centering modifier. Habak that is followed by this modifier will be 
centered on the screen.

Modifier -S
-S is a scaling modifier. Habak treated by this modifier will be scaled
to fill whole screen (but with proportions saved). Using it have a sense
only for file habaks (images).

Modifier -p
-p is a position modifier. It precisely determines position of habak
on desktop. This modifier requires also additional parameter, in the
form of 'x,y', ie.

./habak -i ~/gfx/meggy.jpg -p 10,50

will render meggy.jpg file with upper-left corner in point 10,50 on desktop.
Coortinates can be negative, so position will be calculated from the
opposite side of screen, ie.

./habak -i ~/gfx/meggy.jpg -p -10,50

will calculate "the beggining" position of habak to a ten pixels from
right and 50 pixels from upper side of screen. To place habak for example
in upper-right corner, you should use '-p -0,0'

Modifier -c
-c is a color modifier. Some habaks supports choosing a color
(at this time only font habaks and internal habaks). -C option
require parameter, that describe color in form of R,G,B,A, ie.

./habak -I int -c 50,60,70,190

means using "int" habak with color:
- red component set to 50
- green component set to 60
- blue component set to 70
- alpha channel set to 190

All numbers accepts numbers from 0 (minimal saturation) to 255
(maximal saturation).

For example '-c 0,0,0,255' means black, fully not transparent color,
'-c 255,255,255,0' means white, fully transparent color (so just
not visible), and '-c 200,0,0,128' is a strong red and transparent
in 50% color.

Modifier -t
This modifier is a text modifier, works only with font habak.
As parameter accepts only one line of text, that is rendered
by the font habak. Any text is accepted, you can write kernel
version, date, your name, name of favourite distribution or
image of cat that have a lie-in on your printer. Select something,
i like a date, text will be nicely antialiased, if you want to use
not ASCII characters, you have to use utf-8 encoding.

For example.

./habak -f ~/.fonts/deltafont.ttf/15 -t "User $USER on day `date +%Y-%m-%d`" -p 0,-0 -c 240,240,240,200

will render on a black screen for example text "User gregory on day
2003-12-21", using deltafont.ttf font in size of 15 pixels. Text
will be placed in lower-left corner of screen, gray color and will
be transparent a little.

Obviously it is a so simple example, you can complicate it:

./habak -i /usr/local/share/backgrounds/lens -C -f ~/.fonts/deltafont.ttf/15 -t "User $USER on day `date +%Y-%m-%d`" -p 0,-0 -c 240,240,240,200

Now on the background firstly will be placed centered image
from /usr/local/share/backgrounds/lens directory, and that
text will be rendered on it. You can complicate it yet:

./habak -i /usr/local/share/backgrounds/lens -C -f ~/.fonts/deltafont.ttf/15 -t "User $USER on day `date +%Y-%m-%d`" -p 5,-0 -c 240,240,240,100 -f ~/.fonts/deltafont.ttf/15 -t "User $USER on day `date +%Y-%m-%d`" -p 0,-5 -c 240,240,240,255

This situation is simpilar, but i complicated text a little -
i generats *two* font habaks with the same content, but
one of it is displacemented a little, and have smaller
transparency. It gives so nice effect of shadow under text. By
putting together *several* such shadows differenced in size of font
and intensivity of transparency you can achieve fantastic effects.

Finally, fire up:

./habak -i /usr/local/share/backgrounds/lens -C -I int -f ~/.fonts/deltafont.ttf/15 -t "User $USER on day `date +%Y-%m-%d`" -p 5,-0 -c 240,240,240,100 -f ~/.fonts/deltafont.ttf/15 -t "User $USER on day `date +%Y-%m-%d`" -p 0,-5 -c 240,240,240,255

Here i added an internal habak "interlace", between picture
from /usr/local/share/backgrounds/lens and font habaks, so
image is faced by small grid of interlacing, but text is not
(because it is placed above interlacing).

