Skip to content
Scripts to run commands and set the hard status line (windows title)
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Scripts to run commands and set the hard status line (windows title)

(C) Martin Väth (martin at This project is under the BSD license.


For installation, copy the content of bin/ in your $PATH. To obtain support for zsh completion (also for other programs using title), you can copy the content of zsh/ into a directory of your zsh's $fpath.

For Gentoo, there is an ebuild in the mv overlay (available over layman).


This project contains two simple scripts:

  • runner

    Runs a command, setting the title and ringing the bell if command fails. There are options to repeat the command (a number of times or if it fails). Use runner -h to obtain a description.

  • title

    Sets the hard status line if the terminal supports it. Use title -h to obtain a description.

If you do not give a text to title, nothing is printed (pass an empty text if you want to clear the status line).

You can source title into a POSIX shell with

TitleInit() {
. title "$@"

Then the function TitleInit can be used with the same meaning as title, (but can be used repeatedly without restarting title). Moreover, after TitleInit the function Title can be used (also repeatedly) to set the title according to the options of TitleInit. Also, there are functions TitlePlain and TitleVerbose which act correspondingly to title -p or title -P, respectively. If you only want to define Title, TitlePlain, TitleVerbose, and TitleInit by sourcing, use option -q in the call to TitleInit. The function TitleInit may override variable names of the form titleinit_*_.

The following function Title will define Title, TitlePlain, TitleVerbose, and TitleInit appropriately at its first call (if title is in the $PATH) and then act as Title:

Title() {
Title() {
command -v title >/dev/null 2>&1 || return 0
TitleInit() {
. title "$@"
TitleInit [options to title] -- "$@"

In the file bin/runner you find an example how this can be combined with setting a trap so that a sane title is "restored" at program exit.

If you write a program using Title, I recommend to equip this program with an option with an argument which is passed to TitleInit, and where the option argument - means that the title script is not used. Since version 2.3 you can get a proper zsh completion for such an option for your program by using the provided autoloaded function _title_opt; see zsh/_runner for a sample usage of that function.

You can’t perform that action at this time.