Announcing termonad-2.0.0.0

2019-09-13

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.

A few weeks ago I released termonad-2.0.0.0. It has been a while since I did a release announcement. Since version 1.0.0.0, Termonad has grown a bunch of new features.

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, ~/.config/termonad/termonad.hs . When 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.

New Features

There have been two big features added since the 1.0.0.0 release :

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 less or 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.

Allow user to modify keybindings 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.

Add a preferences dialog to configure Termonad at runtime 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.

Use gi-gtk-declarative 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. Oskar Wickström created a library for making haskell-gi much more declarational and easy to test: gi-gtk-declaractive. It would be interesting to try using this for Termonad.

Conclusion

I would like to thank the people who helped contribute fixes and pull requests to Termonad 2.0.0.0:

If you find any bugs, or there are any features you'd like to see, please feel free to open an issue or PR on GitHub.

tags: haskell