Termonad is a terminal emulator written in Haskell. It is similar to other terminal emulators like Gnome Terminal, Terminator, Sakura, or ROXTerm. However, unlike these other terminal emulators, Termonad is fully configurable in Haskell. It aims to be the XMonad of terminal emulators.1
This article lists the new features in Termonad. At the end of the article, I've included links to some features I'd like help with.
Short Introduction to Termonad
Installation and usage instructions for Termonad can be found in the README on GitHub.
Termonad is similar to XMonad in that you have your own Haskell configuration file,
termonad launches, it uses GHC to compile your configuration file into a new
termonad binary. It then re-execs into that new binary. You get a Termonad with all your own settings.
This is convenient for Haskellers, but it is probably too much trouble for people who don't know Haskell.
There have been two big features added since the 22.214.171.124 release2:
A menu option to enlarge/shrink the font at runtime. You can do this with the Ctrl + and Ctrl - keys.
Search and find functionality. There is now a way to search for text within the console. This is convenient if you forgot to redirect command output to a file, so you can't open it in
vim, but you want to find something in the text.
Searching for regexes is supported.
These were the two remaining features I really wanted from a terminal emulator. With these two features available, I feel completely comfortable using Termonad everyday, and recommending it to other people.
Outstanding Issues (and future features)
The following issues would all be nice additions to Termonad's feature set. The issues on GitHub provide a little more context, as well as how to get started on them if you are new to the Termonad code-base.
Currently, keybindings for Termonad (for opening a new tab, closing a tab, changing font size, etc) are hard-coded. It would be be nice to give the user a way to change these keybindings within the Termonad config file.
If you want to configure Termonad, you have to do it in Haskell code. This is nice for most Haskellers, but is a little too complicated for people not familiar with Haskell.
It would be nice to provide a GTK dialog that new users could use to configure Termonad.
Termonad uses the haskell-gi family of libraries to interact with the underlying GTK libraries. The haskell-gi libraries are very high quality, but they are only a thin wrapper around the underlying GTK libraries. The GTK libraries are IO-heavy and very procedural.
I would like to thank the people who helped contribute fixes and pull requests to Termonad 126.96.36.199:
- @bts (https://github.com/cdepillabout/termonad/pull/86)
- @craigem (https://github.com/cdepillabout/termonad/pull/90)
- @clinty (https://github.com/cdepillabout/termonad/pull/98)
- @dakotaclemenceplaza (https://github.com/cdepillabout/termonad/pull/111)
- @jecaro (https://github.com/cdepillabout/termonad/pull/116)
- @amir (https://github.com/cdepillabout/termonad/pull/116)
It is more accurate to describe Termonad as a GUI wrapped around a terminal emulation library. Termonad is a GTK app, written using the haskell-gi family of libraries. Termonad uses the VTE terminal emulation library. VTE is a product of the Gnome team, and it is written in C and C++. It is the core of many other popular terminal emulator packages, like gnome-terminal.
Because Termonad doesn't actually implement a full terminal emulator in Haskell, there is a limit to just how much you can customize the actual terminal emulation experience with Termonad. If there was a full terminal emulation library written in Haskell, I'd be very interested in switching over to it instead of using VTE.↩︎