Terminal Emulator: Termite

From rxvt-unicode …

Up to a few days ago, I was using rxvt-unicode as my terminal emulator. It works fine, is light (especially with its client/server mode) and integrates nicely with a tilled window manager. But I was needing Fontconfig support which is lacking from rxvt-unicode.

rxvt-unicode

rxvt-unicode

… to LilyTerm …

I first tried to switch to LilyTerm which seems to be appreciated by some people but I was not convinced. The default configuration has some annoying behaviors (confirmation needed when starting the term to launch a specific command, reusing existing window, …) and it has some shortcomings as well (most importantly TERM is set to xterm which is wrong since LilyTerm has 256 colors support).

… to Termite

I have been then suggested to try Termite, a rather recent (first commit is from May 2012), VTE based (as LilyTerm), terminal emulator. The config is really easy and in a few minutes I had a config replicating my rxvt config.

Termite

Termite

Here is my old rxvt config :

URxvt.foreground: white

URxvt*iso14755: False

URxvt.depth: 32
URxvt*background: rgba:0000/0000/0000/cccc
URxvt.loginShell: true
URxvt.perl-lib: /usr/lib/urxvt/perl
URxvt.keysym.M-u: perl:mark-yank-urls:activate_mark_mode
URxvt.underlineURLs: true
URxvt.perl-ext: selection
URxvt.perl-ext-common:  default,matcher
URxvt.matcher.button:   1
URxvt.urlLauncher: /usr/bin/firefox-ux
URxvt.underlineColor: green
URxvt.saveLines: 65535
URxvt.scrollBar: false
URxvt.visualBell: true

URxvt*background:        #333333
URxvt*foreground:        #cccccc
URxvt*cursorColor:       #999999
URxvt*colorBD:           #ffffff
URxvt*colorUL:           #ffff99

!BLK
URxvt*color0:           #666666
URxvt*color8:           #999999
!RED
URxvt*color1:          #CC6699
URxvt*color9:           #FF99CC
!GRN
URxvt*color2:           #99CC66
URxvt*color10:         #CCFF99
!YEL
URxvt*color3:          #CC9966
URxvt*color11:         #FFCC99
!BLU
URxvt*color4:          #6699CC
URxvt*color12:         #99CCFF
!MAG
URxvt*color5:           #9966CC
URxvt*color13:          #CC99FF
!CYN
URxvt*color6:          #66CC99
URxvt*color14:         #99FFCC
!WHT
URxvt*color7:          #CCCCCC
URxvt*color15:         #FFFFFF

URxvt*font:     -ypn-envypn-medium-r-normal--13-130-75-75-c-90-iso8859-1
URxvt*boldFont:     -ypn-envypn-medium-r-normal--13-130-75-75-c-90-iso8859-1

And, here is my Termite config (not exactly the same behavior than rxvt but same look) :

[options]
resize_grip = false
scroll_on_output = false
scroll_on_keystroke = true
audible_bell = false
visible_bell = false
mouse_autohide = false
allow_bold = true
dynamic_title = true
urgent_on_bell = true
clickable_url = true
font = envypn 9
scrollback_lines = 10000
search_wrap = true
#icon_name = terminal
#geometry = 640x480

# 0.0: opaque, 1.0: transparent
transparency = 0.0
pseudo_transparency = false

# "system", "on" or "off"
cursor_blink = system

# "block", "underline" or "ibeam"
cursor_shape = block

# $BROWSER is used by default
browser = firefox

# word characters used for word selection
# (default if unset: all graphic non-punctuation/space characters)
#word_chars = -A-Za-z0-9,./?%&#:_=+@~

[colors]
foreground = #cccccc
foreground_bold = #ffffff
#foreground_dim = #888888
background = #333333
cursor = #999999

# if unset, will reverse foreground and background
#highlight = #2f2f2f

# colors from color0 to color254 can be set
color0 = #666666
color1 = #CC6699
color2 = #99CC66
color3 = #CC9966
color4 = #6699CC
color5 = #9966CC
color6 = #66CC99
color7 = #CCCCCC
color8 = #999999
color9 = #FF99CC
color10 = #CCFF99
color11 = #FFCC99
color12 = #99CCFF
color13 = #CC99FF
color14 = #99FFCC
color15 = #FFFFFF

[hints]
#font = Monospace 12
#foreground = #dcdccc
#background = #3f3f3f
#padding = 2
#border = #3f3f3f
#border_width = 0.5
#roundness = 2.0

# vim: ft=dosini

Moreover, Termite brings some interesting features:

  • Open a new terminal in the current directory: a basic feature I was trying to achieve directly in my Xmonad configuration for months.
  • A command mode which takes its roots into Vim command mode.
  • Scrollback search (really useful when you forgot to pipe a long running command into grep, less or whatever and that you need to find something specific in the output).

Some features are still lacking like settings specifics parameters through CLI arguments and (probably) sending events. These features are needed to use Termite with programs like Cluster SSH. But this is OK as it is something I do not use everyday and I can keep using urxvt for this.

Termite does not have client/server mode either but it is light enough for this not to be a requirement.

If you are looking for a lightweight terminal emulator, I strongly suggest you give Termite a try.

7 thoughts on “Terminal Emulator: Termite

  1. I thought this post deserved a comment 🙂

    I am a rxvt-unicode user, and never thought i would ever in a million years switch back to a VTE. But with termite, it still is not my default, but I have found myself using it a bit more and a bit more and a bit more. I came across it on the IRC, when asking a question about something terminal related in general, I was told to use termite instead. At the time I was not so satisfied with that answer. But since that is its origins, they knew what it already had over urxvt and what it was to become. It may not be complete, but it is pretty d*mn good.

  2. Hi! Very interesting article.
    I have a doubt though. I have installed termite and I would like to change its appearance, colours…
    I tried modifying the config file in /home/myusername/temite/config and it didn’t do anything.
    Then I tried changing things in /etc/xdg/termite/config and then it worked. Can you explain me why this happens? What should I do to make the config file in my user folder be the one valid?
    Thanks in advance

    • Just to be sure the typo in the path on your home folder is only on this comment (temite vs termite)?

      ~/termite/config is not a valid path. You should put it in ~/.config/termite/config (or $XDG_CONFIG_HOME/termite/config which will probably point to the same folder).

      • Oh yes, that was a typo here in the comment.
        I created the folder termite in ~/.config and put the config file there and then it worked.
        But the thing is, the config was originally there (in ~/termite/config) after I cloned from git (git clone –recursive https://github.com/thestinger/termite.git) and installed it. Plus there was a exact config file in /etc/xdg/termite/
        I am a newbie here, what I don’t understand is why it has to create 2 config files in 2 separate places.
        And another doubt, how can I know where $XDG_CONFIG_HOME points to and can I modify this?
        Thanks for your prompt reply.

        • Well I do not know about how things are being installed by the makefile. I am using my distro package.

          Anyway, the file in /etc is systemwide. The file in your home is specific to your user. Anything set in your home overwrite what is set in the system wide file.

          You can do “echo $XDG_CONFIG_HOME” to see what is set to. If not set you can do this in your ~/.bashrc.

  3. Hi again

    Ubuntu doesn’t set these variables (I got an empty line) I won’t touch anything for now.
    Besides, after your reply I have been reading some articles, some of them:

    https://www.reddit.com/r/linux/comments/2v8rv2/move_your_config_files_to_xdg_config_home/
    https://web.archive.org/web/20150101022638/http://lxl.io/xdg-config-home
    http://askubuntu.com/questions/388167/how-can-i-force-all-applications-to-use-xdg-config-home-instead-of-app
    https://bbs.archlinux.org/viewtopic.php?id=77606

    Apparently it is going to be difficult to keep $HOME tidy. If you have some advice or trick to keep it “tidier”…

    Thanks anyway, I appreciate your help.

    • This is why using ~/.config which is most of the time the directory used by XDG_CONFIG_HOME is a good idea.

Leave a Reply

Your email address will not be published. Required fields are marked *