Bashish theme HOWTO

The Bashish theme HOWTO describes the creation of a theme in a straight forward way.


Shell support
Terminal support
Application themeing
Theme format
Prompt format
Variable reference
Title and icontext
ASCII logos
Meta information

Terminal support

UTF-8 prompt, colors, font changing:

no UTF-8, colors, font changing:

Title only:

Unsupported terminals:

The following terminals can not be themed by Bashish in any way:

Shell support

Bashish runs independently of the interactive shell in use, thus obscure shells as 'lsh' and 'osh' can perfectly be used with application themeing.
As creating prompts for all supported shells would be a daunting task, prompts in general are only avaliable for bash, zsh and tcsh.
Following are the shells which can automaticly start Bashish upon startup:
To start Bashish on an unlisted shell, start 'bashish' and insert
$HOME/.bashish/launcher as the first element in your path.

Shells known not to be able to automaticly start Bashish:

notes about osh:

osh does not support prompt changing.

notes about rc and es:

In order to load Bashish automaticly, rc needs to be started as a login
shell (eg. by using the '-l' switch).

notes about lsh:

Lsh needs to be restarted in order to make it aware of prompt changes.
In order to make theming in pipes work, one must explicity set the TTY
variable to the output of 'tty'.

Application theming

Application theming works by placing a launcher with the name of the themed command in the search path.
The launcher first themes the terminal, then runs the command with the same options as given to itself. And finally, when the command has ended its execution (or suspended), the launcher will restore the terminal to the prompt theme.

To the user, this launcher should be totally transparent:
To temporary disable theming for one application, set the BASHISH_DISABLED
variable, eg:
to disable theming for all applications in the current tty:
in csh run:
to re-enable theming run:
The launcher itself will also disable theming for any of the application
child processes by setting the BASHISH_DISABLED variable.

Getting started

Bashish uses the autoconf build system, so if you previously have compiled and installed a package on Linux this should be familar:
1. Download the bashish-2.x.y.tar.bz2 package
2. Decompress Bashish by running
bzip2 -cd bashish-2.x.y.tar.bz2 | tar xf -
3. Enter directory
cd ./bashish-2.x.y
4. Run
./configure && make
5. As root run 
make install
6. As user, launch bashish:
You will now be prompted about installing user configuration files.

7. Restart your shell by running
exec bash
Replace 'bash' with your shell.
Now Bashish is installed and configured to launch upon starting a shell.
To configure the Bashish theme engine, run


Scalable fonts

Fonts are important for estetics and readability. Unfortually, there exists few good and free monospace fonts.
note, the following fonts are non-free and thus not hosted on SourceForge:
To install any of the above, simply copy the font to $HOME/.fonts and run
fc-cache -fv $HOME/.fonts
you must restart all (gnome and kde) terminals for changes to take effect.

To see a comparision between different monospaced fonts, go to http://www.lowing.org/fonts/

Bitmap fonts

Rxvt-unicode can use both bitmap fonts and scalable fonts.

To install, create the ~/.fonts directory:
mkdir $HOME/.fonts
tar -xvzf sgi-fonts.tar.gz -C $HOME/.fonts
mkfontdir $HOME/.fonts
xset +fp $HOME/.fonts

The last line must be added to either .xinitrc or .xsession depending
on if you log in via a display manager or start X manually with eg.

Console fonts

In the Linux console, Bashish can change fonts.
The default font-pack is avaliable in /usr/share/consolefonts.

Additional fonts are avaliable from:

GNU CHCP Fonts  Nice font pack with many different fonts.
Terminus fonts High quality readable fonts
C64 font - Commodore C64 font, retro!
Amiga font - Retro Amiga font.

Install the fonts in $HOME/.fonts

Hosted by Sourceforge.net