I’m a fan of the rxvt-unicode terminal emulator, but it has one problem: it sometimes spaces xft fonts badly, with conspicuous gaps between the characters, making for fewer characters per line.
Looking into alternatives, I found that the GTK library includes vte, a terminal emulator widget that a bunch of terminal emulators use. And they all look good, but had a drawback I couldn’t live with: none of the ones I tried recognized my Meta-keys, which I’ve grown used to using for command-line editing in my shell.
vte, along with the Ruby GTK bindings, makes life so easy, I just rolled my own. This is just the Ruby vte demo program that comes with the bindings with a couple of lines added to handle Meta-keys.
require "vte"
window = Gtk::Window.new("Terminal sample")
window.signal_connect("destroy"){Gtk.main_quit}
vte = Vte::Terminal.new
vte.set_font("DejaVu Sans Mono 16", Vte::TerminalAntiAlias::FORCE_ENABLE)
Gtk.key_snooper_install {|t, e|
vte.feed_child("\\e") if e.state.meta_mask? and e.event_type == Gdk::Event::KEY_PRESS
}
vte.signal_connect("child-exited") do |widget|
Gtk.main_quit
end
vte.signal_connect("window-title-changed") do |widget|
window.title = vte.window_title
end
vte.fork_command
window.add(vte)
window.show_all
Gtk.main