Gnome 2.32: Guake & Other Popup Terminals

by Darrel Johnston (djohnston)

There are a few dropdown quake-like terminals available for Linux users. Yakuake is the one associated with the KDE desktop, and has quite a few Qt4 dependencies. Tilda can be used with most any desktop, and basically has only libconfuse as a dependency. Tilda's last package was released on June 29th, 2006, and is no longer in the PCLinuxOS repositories.

Terminator creates a window in which you can arrange multiple terminals in a grid. Version 0.95 is in the repositories. Version 0.96 has dropdown capabilities, but is still only available as testing packages and source code.

stjerm-terminal is another quake-like dropdown terminal. The source is available from Google code. vterminal is described as "a dock and DE independent terminal applet for the masses." The source is available from SourceForge.

YeahConsole turns an xterm into a gamelike console. This means it will slide down from top of your screen if you hit a shortcut key. It is associated with the YeahWM project and is available as source code.

In addition, there are web tutorials on how to configure gnome-terminal, konsole, xfce4-terminal and urxvt into dropdown terminals. We will be looking at the Guake terminal, which is commonly associated with the Gnome desktop, and is available in the PCLinuxOS repositories. It has few dependencies, mostly python packages, and works well on almost any desktop.

My Guake terminal is shown below. It usually has two tabs open with a folding@home client running in each tab. It also has some translucency, as well as text in the color I chose. The icon showing on the far left of the bottom window frame is simply a decorator. The buttons to the right of it are tab selectors. Each time a new tab is opened, an associated tab button is generated. The button to the far right is for adding a new terminal tab to the window.

The Guake terminal has a few options. The first time the application is launched, the Guake properties window will be launched. The window has 5 tabs, each tab having a different set of configuration options. After configuring Guake and closing the window, the terminal will be running. Further configuration can be done by either selecting More Applications > Terminals > Guake Preferences from the main desktop menu, or by right-clicking on the running Guake terminal and selecting Preferences.

Copy, paste, close tab and quit are other options selectable by right-clicking on the running Guake window.

Beginning with the General tab, we first have the shell options. Default interpreter has a dropdown list of all installed user shells, with user shell being the default option. On PCLinuxOS, the user shell is generally /bin/bash unless the user changes it. Run command as a login shell is an option to do just that, login as a different user via a terminal emulator. Open new tab in current directory will begin the Guake session with two tabs open, the second one being in the user’s desktop directory. I imagine this is for those users who download executables to their desktop and wish to run the executables from a terminal.

In the general options section, the first is an option to show a Guake icon in the system tray or not. Enable popup notifications on startup will show startup messages on the desktop when Guake is started. The next option is whether or not to prompt the user when the application is closed.

In the Main Window section, the stay on top option determines whether the window is above or below other windows on the desktop. Hide on lose focus determines whether the window will disappear when the desktop or another window is clicked. If unchecked, the same keybinding that drops the window down will also hide it. Show tab bar is whether or not to show the bottom window decoration panel.

The Main Window height is set by using a slider bar.

Selecting the Scrolling tab, we have two main sections. In the General section, the show scrollbar option determines whether we have a method to scroll backwards through the screen. The number of scrollback lines can be selected.

In the Scroll section, I’m not sure what scrolling on output option does. The text scrolls down the window normally without this option selected. Scrolling on keystroke determines whether or not the mouse can be used to scroll backwards through the screen’s output.

Selecting the Appearance tab, we have two main sections. In the Fonts section, selecting use system defaults determines whether or not to use the system’s default terminal fonts or custom ones. If the option is unchecked, the style button can be used to select both the font type and size. Selecting the color button gives us a color chart to choose from.

In the Background section, the color button gives us the same color chart to choose the background color from. The window’s transparency level is selected using a slider bar. Selecting the image button gives us a file requester window from which to select a custom image for the window’s background.

The Keyboard shortcuts tab gives us the keybindings window. All the actions shown are the only ones available for Guake. Double-clicking one of the keyboard choices allows us to input the key binding to be used from the keyboard.

The Compatibility tab has only two item choices. Both the backspace key and delete key buttons have the same three options: ASCII delete, escape sequence or Control-H. ASCII delete removes the character ahead of the cursor’s position. The escape sequence can be useful when connected to a remote system which does not recognize the delete key as input. For example the VT220 terminal uses the key sequence ESC [3 ~ to send a destructive backspace character. The destructive backspace removes the character behind the cursor’s position. A Control-H keyboard sequence is used by some systems as either a delete key or a destructive backspace. An ASCII 8 is a backspace character and an ASCII 127 is a delete character.

As you can see, Guake can be customized to your personal preferences and to the situation the terminal is meant to deal with. Being able to reassign key bindings means that you can select ones that don’t conflict with the keybindings of other a pplications.