Troubleshooters.Com®, Linux Library Present:

Tilda: A Great Dropdown Terminal

CONTENTS

Introduction

Back in the day I used the Guake pulldown terminal. It was wonderful. But now Guake is part of Gnome, Gnome has become bloated, and barring bigtime hoop-jumping from the distro, can't even be used without systemd. So I checked out the Tilda dropdown terminal, and when properly configured, it's very nice. Just as good as Guake was when Gnome was a reasonable interface.

There's another dropdown terminal called Deepin, which is a component of the Deepin Linux distribution. Deepin's terminal is nice, but I'd prefer to have a more a-la-carte piece of software. Tilda is a fairly simple Gtk application that's not a part of a distro or a desktop environment. I like that.

As is typical in the FOSS world, Tilda is horribly underdocumented. No problem: I did a little research, a little reverse engineering, a little source code perusing, and came up with almost all the configuration variables you could ever want.

I say "almost" because I have no compositor and no transparency on my computer, so I set up Tilda to have no transparency. I'm usually not a fan of transparency: Lacking 20/20 vision, artifacts from images under the terminal really mess with my reading ability. I'll admit one thing though: If there was ever a pro-transparency argument, it's in a pulldown terminal covering the whole screen and showing up on all workspaces. It can be handy to have an idea what's under it.

What's So Great About a Pulldown Terminal?

A pulldown terminal is a terminal that...

A pulldown terminal is one single instance of a full-screen terminal that is available from anywhere via a hotkey. When you're done with it, a hotkey (usually the same one) hides it again. This gives you many benefits, including:

  1. Instant recall of your terminal.
  2. Instant hiding of your terminal.
  3. Use same terminal on different workspaces.
  4. Because the terminal's the size of the screen, you can have lots of lines and columns, big fonts, or both.
  5. Enlarging and shrinking fonts a hotkey away.
  6. A fullscreen terminal is simple and distraction free.

Note:

Technically, a dropdown terminal needn't be full screen: You can make it any dimensions you see fit. I think I speak for most people when I say that it's much more handy when it's full screen or almost full screen.

An exception to this rule is that, when configuring Tilda, you set it to cover no more than 1/4 the height of the screen.

So much for what and why. The rest of this document discusses how...

Hot Tip: Tilda Can Vanish and Still Be Running

There's a difference between Tilda's visibility and its running in memory. Forget this fact at your peril. Tilda's show/noshow hotkey (default F1) toggles its visibility if it's running in the first place. If you Ctrl+D or exit out of the last Tilda tab, Tilda is no longer running. In general, edits to ~/.config/tilda/style.css and ~/.config/tilda/config_0 are best done while Tilda isn't running at all, because if it's running at all, it changes those files on exit.

Running Multiple Copies of Tilda

It's possible to run multiple copies of Tilda. I haven't written about this ability, because I consider it confusing. If you have a reason to run multiple copies, keep in mind that each copy must have its own config file (config_0, config_1, config_2, etc). Each config file must define a different show/noshow key. Because there's only one style.css, I don't know how you can materially change their look so you know which copy you're running. I'm sure there are ways to efficiently use multiple copies, but I don't know them.

Installing Tilda

Tilda's an established piece of software, so on most distros you install it from a package just like any other software. In the very unlikely case that your distro doesn't have a package for Tilda, you'll need to compile it from source. I doubt that will be necessary on any mainstream or second tier distro.

Configuration Tips

This section contains tips to help ease the tricky parts of Tilda configuration.

During Config, Make Tilda No More Than 1/4 the Screen Height

The last section states that Tilda should consume most or all of the screen, yet here I'm advising you to make it only 1/4 of the screen height or less. You do this during configuration in order to avoid the Tilda Catch 22.

Never Run tilda -C to Configure Tilda

It's possible to configure Tilda with the following command:

tilda -C

Don't do that, because the usual result is the Tilda Catch 22. Instead, run Tilda, right click the Tilda terminal, and choose "Preferences" from the menu. Doing it this way usually puts the config window on a layer above the terminal's "always on top" layer. When you click the "Close" button on the config window, the config window disappears, leaving the Tilda terminal on top.

The Tilda Catch 22

The Tilda Catch 22 occurs when Tilda, which is layered "Always on top", covers the Tilda config window. You can't make adjustments on the config window: You can't even click the config window's "Close" button to dismiss it. Meanwhile, because the Tilda config window is running, you cannot dismiss the Tilde terminal with the normal hotkey, nor can you end the Tilde executable by pressing Ctrl+d at Tilde's command prompt. If only you could click the config window's "Close" button, you could close the terminal. And if only you could close the terminal, you could access the config window's "Close" button.

To add insult to injury, the Tilda terminal covers every workspace, so you can't reach other terminals to perform a kill command. It might look hopeless, but there are actually many ways to get easily out of the Tilda Catch 22:

Running Tilda For the First Time

Run the following command:

tilda

If Tilda's never been run on your computer before, there will be no Tilda config files. Tilda senses this lack of config files, and offers you a configuration screen to adjust. After you do your adjustments and click the Close button, your config choices become apparent in Tilda. If some of them do not, exit Tilda using Ctrl+d on every tab, then run Tilda again.

WARNING!

NEVER Alt+Tab out of the config screen. Doing so puts you in the Tilda Catch 22. Always exit the config screen by clicking its Close button.

After the first configuration, Tilda no longer offers the configuration screen. If you need to configure Tilda after initial configuration, right click its terminal and select "Preferences.

A Few Initial Words About Configuration

Tilda is a pulldown terminal. Customarily, pulldown terminals have white print on a black background. Unless you have a reason to color it otherwise, I suggest you go with the custom and color it white print on a black background.

Pulldown terminals traditionally cover the whole screen. I suggest covering the whole screen in all cases except when you're configuring Tilda, in which case I suggest you limit the terminal's height to 1/4 the screen height so you can manipulate the config screen or even edit its config files. In other words, in normal use I suggest you configure Tilda to cover the whole screen.

There are two ways to do that: You can set Tilda's size to be almost as big as the complete screen, or you can set the size to be something much smaller and set Tilda to start in fullscreen mode. Each has its advantages. If you start in fullscreen mode but have the size set to something much smaller, you can escape the Tilda Catch 22 by toggling fullscreen (default hotkey F11). But fullscreen means fullscreen: It even covers the thin mouseclick margin no-panel window managers give you to perform mouse commands. And if you have a panel (think of the old Windows taskbar), it covers the panel, which you may or may not want. If you set the size to cover all the screen except the mouseclick margin or panel, Tilda doesn't preclude mouse operations on your user interface.

Then there's the question whether to animate or not animate. Animation is the feature enabling the Tilda window to slowly roll down the screen instead of instantly popping up in its entirety. Each has advantages. Obviously the instant popup is faster and can at least slightly speed your workflow. On the other hand, animating the pulldown bestows an intuitive feel of exactly what Tilda is: It's not just another terminal, it's a pulldown terminal. Personally I useautomated pulldown with a top orientation (pulls down from top) and a 7000 microsecond automation delay, which I find fast enough not to slow me down, but slow enough that I can visually see it quickly roll down. Of course, your mileage may vary.

You can have limited or unlimited scrollback, where scrollback means the ability to go backwards and see what was printed on the terminal earlier. I chose limited to save on resources, and chose a 5000 line limit so I can go back about 200 screenfulls. I've had cases where that wasn't enough: What I was looking for was no longer available. If you really need to go back to any terminal printout from any time, choose unlimited. I'm not sure what that does to speed and resources: You can test to find out.

Speaking of scrolling, I personally think a scrollbar is a must. A scrollbar is simply a different-colored area on the left or right of the terminal, with a yet different colored "slider" that "slides" up and down the scrollbar to scroll the terminal's text. You manipulate the slider with your mouse.

Multiple presses of Shift+PgUp just doesn't cut it for me. By custom, the only bright, contrasty thing on a pulldown terminal is the text output. The scrollbar is typically subtle. I chose a scrollbar on the right, 20px wide, very dark red with the slider being a slightly lighter red. I think by custom it would be very dark gray with a lighter gray slider. However you color it, I recommend you make the slider's hover color very bright and obvious. The slider is small, and if you're manipulating it you're not paying attention to the rest of the screen, so make it bright so you can see it.

Hot Tip:

It's kind of cool and very handy to make the slider wider when it's hovered. This helps with visibility when you're using it.

Speaking of the slider being small, you get to choose just how small it can get. As you know, the slider covers 100% of the height of the scrollbar when the terminal first opens. As the terminal prints more and more output, the slider's height is reduced. You can configure the minimum height of the slider. If the slider gets too short it becomes difficult to click. However, Tilda's scrollbar has a nice property such that when you click and hold anywhere on the scrollbar, the slider comes to that point and can be slid around. Which means the slider can be pretty darn small without becoming inconvenient.

Tilda's Configuration Facilities

Tilda has the following configuration facilities:

~/.config/tilda/style.css

This file governs the color and size of terminal elements. As far as I can tell, it's not documented in the files distributed with Tilda: It needs to be researched on the Internet. Fortunately, the document you're now reading gives you an excellent starting point for a practical style.css.

~/.config/tilda/config_0

This file governs the arrangement and placement of elements, any maximum or minimum numbers, and behavior choices. It's arranged as a one-dimensional list of key/value pairs, and is very understandable, although long. Don't edit this file if Tilda is running.

Direct editing of this file is very handy for changing the terminal's size.

Note:

You can also have a config_1 and config_2 and config_3 etc, if you run multiple invocations of Tilda. I'm not a fan of multiple invocations of dropdown terminals, so that topic isn't discussed in this document.

The Configuration Window

This window is an interface to ~/.config/tilda/config_0. The wrong way to run it is with the command tilda -C. The right way to run it by running Tilda and then right clicking the Tilda terminal. Always exit this window by clicking its Close button. Never exit it by Alt-Tabbing out: If you do, you encounter the The Tilda Catch 22. Always Tab (not Alt+Tab) out of the last field you changed, so that change is recognized.

If the Configuration Window gives you trouble, you can always quit Tilda and edit ~/.config/tilda/config_0 directly. I recommend you do so whenever you change the size of the terminal.

The Configuration Window

As mentioned, you access the Configuration Window by right clicking the Tilda terminal. When you do, you should see a window looking something like the following:

Screenshot of Tilda's config window, the General tab

The Config Window has seven tabs:

  1. General *
  2. Title and Command
  3. Appearance *
  4. Colors *
  5. Scrolling *
  6. Compatibility
  7. Keybindings *

The starred tab names in the preceding list are the interesting ones, and will be covered in this document.

General

This tab includes "Display on all workspaces", which is customary for dropdown terminals, so it's typically left checked. The "Do not show in taskbar" would be checked if you use a no-taskbar window manager setup, or if interactions with the taskbar lead to problems. The point of a dropdown terminal is to be on top of everything else, so most usages would require the "Always on top" checkbox to be checked.

I can't see any reason not to check "Enable Antialiasing". Antialiasing makes for clearer fonts, and we all need that. I can't see any reason not to check "Allow Bold Text".

Appearance

Here's where you specify the terminal's size and position, as well as enabling transparency and setting up Animated Pulldown (if desired). Transparency requires you have a compositor running.

Colors

The Colors tab is odd because it duplicates what you set in ~/.config/tilda/style.css. I just set the "Built-in schemes" dropdown selector to white on black, and accept this tab's defaults.

Scrolling

Here's where you define where you place the scrollbar (left, right or disabled), and set scrollback limitations (if any are desired).

Keybindings

This tab gives you the chance to set any hotkeys you want. If you have any applications that use F1 for "Help", you'll want to change the "Pull Down Terminal" hotkey to something else. I used <Super>1, where <Super> is the "Windows Key".

Everybody has different typing habits and preferences, and everybody chooses different applications and system software to run, each with their own hotkeys. So customize your Tilda hotkeys to suit your needs.

style.css: The Secret Resource

The ~/.config/tilda/style.css file controls dimensions, colors, and other variables you'd expect Cascading StyleSheets (CSS) to control. Without it you have little control of appearance, including those portions of appearance controlling accessibility for those with significantly less than average visual acuity.

So it's odd that no file called style.css appears either in the Void Linux Tilda package, nor in a git clone of Tilda source. style.css appears not to be mentioned in any of the docs distributed with Tilda, at least for my Linux distribution (Void Linux). style.css is not mentioned in README.md or HACKING.md, and the docs directory contains only an image discussing how to lay out your screen, which is a wonderful thing but does nothing to tell one how to, for instance, change the color of the scrollbar.

A file called tilda.appdata.xml looks promising at first, but only shows several screenshots and contains a link to https://github.com/lanoxx/tilda, which is simply a web copy of tilda.appdata.xml. Neither copy contains either the word "style" or the string "css".

In fact, the only way to find the string "style.css" in the git clone is to recursively grep for it, which brings up all the po/ message internationalization files, and src/tilda.c and src/tilda_window.c. Which would be nice if you had a way of knowing that was the filename that leads to the answers of questions like "how do I widen my scrollbar", or "how do I change the color of the current tab" or "how do I make each tab's text and border color rgb(0,164,0)? But there's no link from your question to style.css without all sorts of web search including old versions, many of which contradict each other. Most of the found docs that mention the existence of style.css don't say what directory it should be in. Doable, but a lot more guesswork and trial and error than necessary.

Note:

It turns out Tilda gives you perfectly good info on style.css and styling in general, at https://github.com/lanoxx/tilda/wiki/Styling. It would be an improvement if a link to this would be provided in README.md and tilda.appdata.xml

Oh well. This is the usual state of affairs in free software, which is why I make documents like this. But it might be nice, in the next Tilda version, to provide ~/.config/tilda/style.css, even if the whole thing is commented out.

style.css: The Information

The ~/.config/tilda/style.css file controls dimensions, colors, and other variables you'd expect Cascading StyleSheets (CSS) to control. In some cases it seems to override what's in ~/.config/tilda/config_0. A workable style.css file, consisting of seven CSS selectors with style rules, follows:

/* 1 */
notebook > header {
  background-color: rgba(0,0,0,0.3);
  border: none;
  margin-left: 50px;
}

/* 2 */
notebook > header > tabs {
  background: black;
  background-color: rgba(0,0,0,0.3);
  border: none;
}

/* 3 */
notebook > header > tabs > tab {
  background: black;
  color: gray;
  border: none;
  padding: 6px;
  min-width: 100px;
  border-radius: 0px;
}

/* 4 */
notebook > header > tabs > tab:checked {
  color: orange;
  background-color: rgba(0,64,0,1);
}

/* 5 */
scrollbar {
  background: rgba(32,0,0,1);
  opacity: 1.0;
  margin: 5px;
  min-width: 4px;
  padding: 0px;
}

/* 6 */
scrollbar  slider{
   min-height: 10px; 
   min-width: 10px; 
   border-radius: 0px; 
   background: rgb(64,0,0);
}

/* 7 */
scrollbar  slider:hover{background: orange;}

Selector/rule 1 is generally provided in every example I've seen, so it's included.

Selector/rule 2 defines the look of the area that will contain tabs.

Selector rule 3 defines the look of each tab. They are best readable but not contrastingly so.

Selector 4 defines the look of the current tab. It must stand out and be completely different from the other tabs.

Selector 5 describes the scrollbar: Its color, its width, its opacity.

Selector 6 describes the visual properties of the scrollbar's slider, which must have enough contrast from the scrollbar to be easily identified, but not so contrasty as to be disturbing. Notice that the slider is not the direct child of the scrollbar, but a farther relation. Hence the space between "scrollbar" and "slider" instead of >.

Pay particular attention to the slider's min-height specification. The bigger you make it, the easier to grab. The smaller you make it, the more accurately the slider's length depicts what percentage of scrollback is viewable on the screen. Modern GTk scrollbars have a feature that blows the doors off scrollbars of the past. When you click the scrollbar above or below the slider, the slider comes up to meet your click. From there, if you keep your finger on the left mouse button, you can quickly in real time scroll up and down to your will. This means no matter what the size of the slider, it's very easy to click and slide.

Most modern GTk sliders are set to the shape of a lozenge pill; that is, rounded on the corners. Because I made my min-height fairly small, and because I have bad eyesight, to partially recapture the slider's visibility, I gave it 90 degree corners like old style sliders. I also made the min-width a little wider than normal to improve visibility.

That brings us to selector 7, which turns the slider bright orange when hovered. And for practical purposes, when it's clicked and/or dragged.

There's no end to the modifications that can be made. Try making the min-width of the slider bigger when the slider's hovered, which also means clicked or dragged. The widened slider widens the whole scrollbar.

The ~/.config/tilda/style.css file is an almost undocumented feature, but you can use it to give your Tilda terminal the exact look you want.

Directly Editing config_0

Depending on your viewpoint, you might find directly editing ~/.config/tilda/config_0 directly. This is certainly advisable for setting Tilda's vertical size, and can also be easier for other config tasks, always assuming that you're comfortable editing config files.

DBUS? Say It Isn't So!

Tilda's TODO.md file says that the author intends to attach Tilda to DBUS, and make Tilda into more of a daemon. I can understand the attraction: It must have taken some serious coding to keep Tilda running yet show and unshow it. It might be easier to run most of Tilda as a daemon, and just show and unshow a graphical screen. And having it as a client-server sort of thing would prevent one two many Ctrl+D keystrokes from ending the Tilda executable.

But DBUS? It's like a huge antenna with which anybody can message you: Whitehats, Blackhats, and Stupidhats. It dramatically increases the attack surface, where attack means not only deliberate hacks, but just dumb messages that must be guarded against.

DBUS is a favorite of authors of (often needlessly) complex software intended to (often needlessly) interact with lots of other software. KDE and Gnome3 do a lot with DBUS. And we already have a dropdown terminal for that kind of software: Guake now bills itself as Drop-down terminal for GNOME and The major features of guake are available on DBus">. I'm not alone in preferring software that does its job in the simplest way possible and doesn't have unneeded or overly complex interfaces. I'd like to see Tilde keep being standalone.

This doesn't mean that Tilde can't be a daemon. The server can be started by the init system or .xinitrc. The client could just display or not display the window, and pass stdin and stdout to and from the server. Communication methods could include FIFOs or Unix Domain Sockets.

Last night I came darn near operating the entire Tilda executable as a daemon. It failed only because some needed X resource wasn't available in Runit's process supervisor world, but that's pretty easy to fix when I get some time.

Complex, intertangled software is a dime a dozen. It seems that simple software that does its job simply is becoming an endangered species: One I think very much needs to survive. I hope Tilda keeps its current philosophy of doing its job without unnecessary communications, thick interfaces, or dependencies.

Conclusion

If you need a full sized, full featured persistent terminal that appears and hides at a single keystroke, Tilda is your friend. Like most Free Software, it has too little documentation, and some conflicting documentation out on the web. That's OK, with this document make Tilda do a heck of a lot of what it was designed to do. This document didn't cover multiple Tilda instance or transparency, but I'm sure both will be easy for you to achieve with a little web search and experimentation.


[ Training | Troubleshooters.Com | Email Steve Litt ]