blog dds

2017.08.10

Display Git's and Current Directory on Terminal Bar

I typically have more than ten windows open on my desktop and rely on their names to select them. Being a command-line aficionado, most of them are terminals. I have them configured to display the current directory by setting the bash PROMPT_COMMAND environment variable to 'printf "\033]0;%s:%s\007" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'. The problem is that the directory I'm often in has a generic name, such as src or doc, so the terminal's name isn't very useful.

I solved this with a script that displays the name of the directory holding the Git repository of the directory I'm in. I do most of my work in projects I maintain under Git, so now, as you can see in the screen dump, my terminals typically get a far more descriptive title. Example of the terminal-title script in action

Here is the script I'm using.

#!/bin/bash
#
# Set the terminal title to the name of the Git directory (if availabe)
# and the current directory.
#
# Diomidis Spinellis, August 2018
#

# Set the terminal title to the specified argument
set_title()
{
  printf "\033]0;%s\007" "$1"
}

# Current directory is a Git directory
if [ -d .git ] ; then
  set_title "${PWD##*/}"
  exit 0
fi

# Loop to top until a Git directory is found
CURRENT_DIR=${PWD##*/}
while : ; do
  cd ..
  if [ -d .git ] ; then
    set_title "${PWD##*/}...$CURRENT_DIR"
    exit 0
  fi
  # Root directory?
  if [ . -ef .. ] ; then
    set_title "$CURRENT_DIR"
    break
  fi
done

All you need to do in order to use it is to save the script in an executable file named terminal-title and to set in your .bashrc file PROMPT_COMMAND=terminal-title.

Read and post comments, or share through   


Creative Commons License Last modified: Thursday, August 10, 2017 7:51 pm
Unless otherwise expressly stated, all original material on this page created by Diomidis Spinellis is licensed under a Creative Commons Attribution-Share Alike 3.0 Greece License.