Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Bashish is a theme engine for the console
Branch: master

escaping rm as \rm to fix issue #1: annoying user prompts to delete f…

…ile "/home/arno"/.bashish/tmp/*/sync when rm is aliased
latest commit a60b320302
@arnognulf authored
Failed to load latest commit information.
bin moved sync to prompt-mode
data escaping rm as \rm to fix issue #1: annoying user prompts to delete f…
deb-stuff version bump
doc renamed EICON to ICONFILE
man manual wupdates
.gitignore w00t
BUGS woo
COPYING Initial commit of 2.0.7
CREDITS added credits to Pedro Pais Lopes for finding a bug in the _bashish_p…
ChangeLog new name
HACKING tried to fix a nasty bug on OSX Snow Leopard, some csh stuff
INSTALL bunch of new retro-themes some automated replacements
PROMPT_TIPS bluesteel updates for the linux console
TODO global var LIB made local, TODO about adding delay to the theme changer
WHAXIN more parsing (still not done), and save syntax warnings lintian clean package *phew* some automated replacements
config.guess more search and replaces
config.sub more search and replaces version bump
install-sh Initial commit of 2.0.7
mkdeb 2.2.5 woo
mkdist almost there...
mkpdf imported stuff
mkrelease escaping rm as \rm to fix issue #1: annoying user prompts to delete f…
mkrpm some mac os x fixes and general cleanups
mkslack added slackware package building
mmmkayfile some automated replacements
slack-desc added slackware package building


1  About Bashish
3  Getting started
4  Changing theme
6  Application themeing
7  Shell Support
8  Terminal Support
8.1 Mac OS X
9  ASCII-art Prompts
10 Uninstalling Bashish
11 Solaris specific notes

About Bashish
Bashish is a theme enviroment for text terminals. It can change colors, font,
transparency and background image on a per-application basis. Additionally
Bashish supports prompt changing on common shells such as bash, zsh and tcsh.

Getting started
First, run the 'bashish' command with no arguments:

 $ bashish

it will ask you to confirm modifying some
user configuration files.
Press ENTER and go forth.

Second, restart Bashish.

After the shell has been restarted, the standard theme of bashish is
installed. The colors will default to a black background with grey text and 
ANSI colors with low saturation, your prompt will remain unchanged.

You can now select a theme for each applications and if wanted, one for the

Changing theme
Show installed themes by running the 'bashish list' command:

 $ bashish list

Specify a theme, eg conda:

 $ bashish conda

and with some colors:

 $ bashish conda blue

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:
* It does not use the standard input/output/error, thereby the user can
  expect normal functionality when using pipes and redirecting input and
* It handles multiple files and filenames with spaces correctly.
* It returns the same exit code as the launched command.
* It works even if not connected to a tty (eg. when executed from a GUI)
* It can be suspended and restarted.
* It will never launch itself.

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.

Modifying defaults and overriding theme parameters
The files $HOME/.bashish/bt/defaults/theme and
$HOME/.bashish/bt/overrides/theme are well commented and
are the main customization files for Bashish, the former for
fallback values if the theme does not set them, the latter is for 
overriding theme values.

Only set title and prompt
If you prefer Bashish to stay off colors, fonts and additional settings, and
only would like Bashish to change title and prompt on a per-application basis, start
Bashish with the '-t' option (eg. in .bashrc: bashish -t)

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:

bourne shell compatible: ash bash dash ksh93 pdksh posh zsh
c-shell compatible: csh tcsh
Friendly Interactive SHell: fish
dos compatible: lsh
Old Enhanced Thompson shell: osh
Plan/9 shell for UNIX: rc

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:

the bourne shell: sh
sash shell: sash

notes about osh:
osh does not support prompt changing.

notes about rc:
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'.

Terminal support
Bashish can change theme properties such as colors font and title on the
following terminals:

Linux console
SGI xwsh

Other Terminals, which Bashish can only set title and color attribute for:

Terminal (XFCE) (GNUStep)
BeOS Terminal

Terminals that currently only sets title and color attribute but might get
better support in the future:

KDE Konsole
CDE dtterm

Terminals which Bashish can not theme at all:

Most hardware terminals such as DEC vt102
QNX phterm

Mac OS X
Mac OS X (tested on Tiger), interprets line drawing characters
as chinese/japanse glyphs, thus, in order for the themes "box" and
"bluesteel" and other themes using line-drawing characters to look good, 
you need to uncheck the "Terminal"->"Window settings"->"Display"
and uncheck "Wide glyphs for Japanese/Chinese/etc."
You will still be able to display Japanese and Chinese glyphs.

ASCII-art prompts
To make Bashish display ASCII-art prompts correctly if the locale is not 
UTF-8, additional fonts with DOS codepage (aka "VGA fonts") must be installed:

Eterm, aterm, XTerm:

 - artwiz-aleczepka font pack (en)

Gnome-terminal, Konsole and other terminals capable of using .TTF fonts:

 - ASCII.ttf (named "New")

Furthermore, some terminals needs configuring:


 - PuTTY can be set to DOS codepage mode, in the "PuTTY Configuration", go
   to "Window" -> "Translation".
   In "Recieved data assumed to be in which character set:"-drop-down menu,
   select "CP437" and 
   "Handling of how PuTTY handles line drawing characters"
   to "Use font in OEM mode only"

   Next, select "Window" -> "Apperance", and select either the bitmap font 
   "Terminal" which should have the "OEM/DOS" encoding, or the scalable "ASCII"
   font (below) which should have encoding "Symbol"

Linux console

 - Works out of the Box, however some characters, eg. TAB is not handled
   correctly, eg. gets typed out as a ring. I am not aware of a solution 
   to this, other than: switch to UTF-8, switch theme, or use ls -al and
   live with the behaviour.

If the terminal can not be configured to work in CP437 mode, and/or
the user uses localized characters. Bashish supports two even more
compatible - but not as visually pleasing - modes:

Modify the shell-rc (typicly ~/.bashrc):
and change the value BASHISH_CP=437 to:


which uses the DEC line drawing character set to emulate some of
the CP437 characters.
If "dec" charset puts garbage on the screen, one can make bashish output
regular 7-bit ASCII, by changing the value to:


Removing Bashish
Remove user configuration and autoloading of Bashish by running 
'bashish --uninstall'.
To entirely remove Bashish from your system, consult your package manager
manual, or if you installed from source: the INSTALL document in the source package.

Solaris 10 specific notes
You need to add /usr/openwin/bin and /usr/local/bin to your shell specific 
rc-file (~/.bashrc for bash).

Something went wrong with that request. Please try again.