{"id":13610495,"url":"https://github.com/cdepillabout/termonad","last_synced_at":"2025-04-13T16:46:27.765Z","repository":{"id":38631861,"uuid":"125719179","full_name":"cdepillabout/termonad","owner":"cdepillabout","description":"Terminal emulator configurable in Haskell.","archived":false,"fork":false,"pushed_at":"2025-01-20T19:48:04.000Z","size":1411,"stargazers_count":408,"open_issues_count":28,"forks_count":49,"subscribers_count":14,"default_branch":"master","last_synced_at":"2025-04-06T14:02:14.196Z","etag":null,"topics":["configurable","gtk","hacktoberfest","haskell","terminal-emulator","vte"],"latest_commit_sha":null,"homepage":"https://hackage.haskell.org/package/termonad","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cdepillabout.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"cdepillabout"}},"created_at":"2018-03-18T11:45:06.000Z","updated_at":"2025-03-28T18:47:28.000Z","dependencies_parsed_at":"2023-10-17T05:48:50.385Z","dependency_job_id":"e84a118c-5879-413b-8585-064550cec4ea","html_url":"https://github.com/cdepillabout/termonad","commit_stats":{"total_commits":842,"total_committers":29,"mean_commits":29.03448275862069,"dds":0.1437054631828979,"last_synced_commit":"34c9f7404073c046a40e8c96735df3382829a696"},"previous_names":[],"tags_count":26,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdepillabout%2Ftermonad","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdepillabout%2Ftermonad/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdepillabout%2Ftermonad/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdepillabout%2Ftermonad/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cdepillabout","download_url":"https://codeload.github.com/cdepillabout/termonad/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248748686,"owners_count":21155673,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["configurable","gtk","hacktoberfest","haskell","terminal-emulator","vte"],"created_at":"2024-08-01T19:01:45.216Z","updated_at":"2025-04-13T16:46:27.738Z","avatar_url":"https://github.com/cdepillabout.png","language":"Haskell","funding_links":["https://github.com/sponsors/cdepillabout"],"categories":["Haskell","Packages"],"sub_categories":["Terminals"],"readme":"\nTermonad\n=========\n\n[![CI](https://github.com/cdepillabout/termonad/actions/workflows/ci.yml/badge.svg)](https://github.com/cdepillabout/termonad/actions/workflows/ci.yml)\n[![Hackage](https://img.shields.io/hackage/v/termonad.svg)](https://hackage.haskell.org/package/termonad)\n[![Stackage LTS](http://stackage.org/package/termonad/badge/lts)](http://stackage.org/lts/package/termonad)\n[![Stackage Nightly](http://stackage.org/package/termonad/badge/nightly)](http://stackage.org/nightly/package/termonad)\n[![BSD3 license](https://img.shields.io/badge/license-BSD3-blue.svg)](./LICENSE)\n[![Join the chat at https://gitter.im/termonad/Lobby](https://badges.gitter.im/termonad/Lobby.svg)](https://gitter.im/termonad/Lobby?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n\nTermonad is a terminal emulator configurable in Haskell.  It is extremely\ncustomizable and provides hooks to modify the default behavior.  It can be\nthought of as the \"XMonad\" of terminal emulators.\n\n![image of Termonad](./img/termonad.png)\n\nTermonad was\n[featured on an episode](https://www.youtube.com/watch?v=TLNr_gBv5HY) of\n[DistroTube](https://www.youtube.com/channel/UCVls1GmFKf6WlTraIb_IaJg).\nThis video gives a short overview of Termonad.\n\n\u003c!-- markdown-toc start - Don't edit this section. Run M-x markdown-toc-refresh-toc --\u003e\n**Table of Contents**\n\n- [Termonad](#termonad)\n  - [Installation](#installation)\n    - [Arch Linux](#arch-linux)\n    - [Ubuntu / Debian](#ubuntu--debian)\n    - [Nix](#nix)\n    - [Mac OS X](#mac-os-x)\n      - [Installing with just `stack`](#installing-with-just-stack)\n      - [Installing with just `nix`](#installing-with-just-nix)\n      - [Installing with `stack` using `nix`](#installing-with-stack-using-nix)\n    - [Windows](#windows)\n  - [How to use Termonad](#how-to-use-termonad)\n    - [Default Key Bindings](#default-key-bindings)\n    - [Configuring Termonad](#configuring-termonad)\n    - [Compiling Local Settings](#compiling-local-settings)\n      - [Running with `stack`](#running-with-stack)\n      - [Running with `nix`](#running-with-nix)\n  - [Goals](#goals)\n  - [Where to get help](#where-to-get-help)\n  - [Contributions](#contributions)\n  - [Maintainers](#maintainers)\n\n\u003c!-- markdown-toc end --\u003e\n\n## Installation\n\nTermonad can be installed on any system as long as the necessary GTK libraries\nare available.  The following are instructions for installing Termonad on a few\ndifferent distributions and systems.  If the given steps don't work for you, or\nyou want to add instructions for an additional system, please send a pull\nrequest.\n\nThe following steps use the\n[`stack`](https://docs.haskellstack.org/en/stable/README/) build tool to build\nTermonad, but [`cabal`](https://www.haskell.org/cabal/) can be used as well. Steps for\ninstalling `stack` can be found on\n[this page](https://docs.haskellstack.org/en/stable/install_and_upgrade/).\n\n\n### Arch Linux\n\nFirst, you must install the required Gnome/GTK system libraries:\n\n```sh\n$ pacman -S vte3 gobject-introspection\n```\n\nIn order to install Termonad, clone this repository and run `stack install`.\nThis will install the `termonad` binary to `~/.local/bin/`:\n\n```sh\n$ git clone https://github.com/cdepillabout/termonad\n$ cd termonad/\n$ stack install\n```\n\nNote that Termonad depends on the [`haskell-gi`](https://github.com/haskell-gi/haskell-gi) family of Haskell libraries.  `haskell-gi` contains Haskell wrappers for for Gnome/GTK system libraries.  It uses the [GObject Introspection](https://gi.readthedocs.io/en/latest/) functionality from the Gnome libraries.\n\nOne problem that Arch users often run into is that their system Gnome/GTK libraries are newer than what the `haskell-gi` dependencies from Stackage support.  If you run into this problem, there are a couple things you can try:\n\n- Manually switch to a newer Stackage resolver (probably Stackage Nightly).  Newer Stackage resolvers often have newer versions of the `haskell-gi` libraries.  Newer versions of the `haskell-gi` libraries are more likely to support your newer system Gnome/GTK libraries.  If you get something working like this, please open a PR.\n- Use `cabal` for building Termonad instead of `stack`.  Make sure `cabal`'s constraint solver picks the latest versions of the `haskell-gi` libraries on Hackage.\n- Use Nix for installing Termonad.\n\nMy suggestion is to use Nix, since it is highly likely to \"just work\" (because with Nix, _all_ libraries are pinned to known working versions, even system libraries).\n\n### Ubuntu / Debian\n\nTermonad can be installed through `apt` on Debian and Ubuntu:\n\n```console\n$ sudo apt install termonad libghc-termonad-dev\n```\n\nNote that the `libghc-termonad-dev` package is necessary if you want to be able\nto compile the Haskell-based settings file, `termonad.hs`.\n\n#### Compiling from source on Ubuntu / Debian\n\nFirst, you must install the required Gnome/GTK system libraries:\n\n```sh\n$ apt-get install gobject-introspection libgirepository1.0-dev libgtk-3-dev libvte-2.91-dev libpcre2-dev\n```\n\nIn order to install Termonad, clone this repository and run `stack install`.\nThis will install the `termonad` binary to `~/.local/bin/`:\n\n```sh\n$ git clone https://github.com/cdepillabout/termonad\n$ cd termonad/\n$ stack install\n```\n\n### Nix\n\nIf you have `nix` installed, you should be able to use it to obtain Termonad.\nThis means that it will work on NixOS, or with `nix` on another distro.  There\nare three different ways to use `nix` to get Termonad:\n\n1.  Get Termonad from Nixpkgs.  Termonad is provided as a top-level `termonad`\n    attribute in Nixpkgs.\n\n    For instance, run a `nix-shell` with Termonad:\n\n    ```console\n    $ nix-shell -p termonad\n    $ termonad   # run termonad within the nix-shell\n    ```\n\n    You can also install `termonad` with tools like `nix-env` or home-manager.\n    If you're using NixOS, you can add `termonad` to your\n    `environment.systemPackages` list.\n\n    Keep in mind that if you're using an old release of NixOS, you'll likely\n    get an older version of Termonad.\n\n2.  Build Termonad using the code in this repository. The following commands\n    clone this repo and build the `termonad` binary at `./result/bin/`:\n\n    ```sh\n    $ git clone https://github.com/cdepillabout/termonad\n    $ cd termonad/\n    $ nix-build\n    ```\n\n3.  Build Termonad using `stack` with Nix-integration. The following commands\n    install `stack` for your user, clone this repository, and install the\n    `termonad` binary to `~/.local/bin/`:\n\n    ```sh\n    $ nix-env -i stack\n    $ git clone https://github.com/cdepillabout/termonad\n    $ cd termonad/\n    $ stack --nix install\n    ```\n\n    (_edit_: Building with `stack` using Nix-integration does not currently work.\n    See [#99](https://github.com/cdepillabout/termonad/issues/99).)\n\n### Mac OS X\n\nBuilding and installing Termonad on Mac OS X should be possible with any of the following three methods:\n\n-   Install the required system libraries (like GTK and VTE) by hand, then use\n    `stack` to build Termonad.\n\n    This is probably the easiest method.  You don't have to understand anything\n    about `nix`.  However, it is slightly annoying to have to install GTK and\n    VTE by hand.\n\n-   Use `nix` to install both the required system libraries and Termonad itself.\n\n    If you are a nix user and want an easy way to install Termonad, this\n    is the recommended method.\n\n-   Use `nix` to install install the required system libraries, and `stack` to\n    build Termonad.\n\n    If you are a nix user, but want to use `stack` to actually do development\n    on Termonad, using `stack` may be easier than using `cabal`.\n\nThe following sections describe each method.\n\n#### Installing with just `stack`\n\n(*currently no instructions available.  please send a PR adding instructions if you get termonad to build using this method.*)\n\n#### Installing with just `nix`\n\n`nix` can be used to install Termonad with the following steps, assuming you\nhave `nix` [installed](https://nixos.org/nix/download.html).  These commands\nclone this repository and build the `termonad` binary at `./result/bin/`:\n\n```sh\n$ git clone https://github.com/cdepillabout/termonad\n$ cd termonad/\n$ nix-build\n```\n\n#### Installing with `stack` using `nix`\n\n`stack` can be used in conjunction with `nix` to install Termonad.  `nix` will\nhandle installing system dependencies (like GTK and VTE), while `stack` will\nhandle compiling and installing Haskell packages.\n\nYou must have `nix` [installed](https://nixos.org/nix/download.html).\n\nYou will also need `stack` installed.  You can do that with the following command:\n\n```sh\n$ nix-env -i stack\n```\n\nAfter `stack` is installed, you will need to clone Termonad and build it:\n\n```\n$ git clone https://github.com/cdepillabout/termonad\n$ cd termonad/\n$ stack --nix install\n```\n\nThis will install the `termonad` binary to `~/.local/bin/`.\n\n### Windows\n\nTo run Termonad on Windows, you'll need:\n\n* any X server app, for example **Vcxsrv**\n* any WSL, for example **Ubuntu**\n\nI'm using both Vcxsrv and Ubuntu WSL.\n\nConfigure both Vcxsrv and WSL. For Vcxsrv go with default settings\neverywhere, it will be fine. Configure your WSL as you want (choose\nyour name etc.). After you set up the user, you'll have to update your\nOS, run:\n\n```console\n$ sudo apt-get update\n$ sudo apt-get upgrade -y\n$ sudo apt-get dist-upgrade -y\n$ sudo apt-get autoremove -y\n```\n\nConfigure the `DISPLAY` environment variable for the X server, and load the changes in bash:\n\nFor WSL1:\n\n```console\n$ echo \"export DISPLAY=localhost:0.0\" \u003e\u003e ~/.bashrc\n$ source ~/.bashrc\n```\n\nFor WSL2:\n\n```console\n$ echo export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2\u003e/dev/null):0 \u003e\u003e ~/.bashrc\n$ echo export LIBGL_ALWAYS_INDIRECT=1 \u003e\u003e ~/.bashrc\n$ source ~/.bashrc\n```\n\nIf you're using WSL2, you have to create a separate **inbound rule** for TCP port 6000, to allow WSL access to the X server.\nIf you're using mentioned earlier **Vcxsrv** you can enable public access for your X server by disabling Access Control on the Extra Settings.\nYou can also use `-ac` flag in the Additional parameters for VcXsrv section.\n\nYour X server should now be configured.\n\nExecute following command to install the necessary GTK system libraries:\n\n```console\n$ apt-get install gobject-introspection libgirepository1.0-dev libgtk-3-dev libvte-2.91-dev libpcre2-dev\n```\n\nThe required GTK system libraries should now be installed.\n\nClone the Termonad repo:\n\n```sh\n$ git clone https://github.com/cdepillabout/termonad\n$ cd termonad/\n$ stack build\n$ stack run\n```\nAfter `stack run`, you should see a new window with your Termonad running.\n\n## How to use Termonad\n\nTermonad is similar to XMonad. The above steps will install a `termonad` binary\nsomewhere on your system. If you have installed Termonad using `stack`, the\n`termonad` binary will be in `~/.local/bin/`. If you have installed Termonad using\nyour Linux distro, the `termonad` binary will likely be in `/usr/bin/`. This\nbinary is a version of Termonad configured with default settings. You can try\nrunning it to get an idea of what Termonad is like:\n\n```sh\n$ /usr/bin/termonad\n```\n\nIf you would like to configure Termonad with your own settings, first you will\nneed to create a Haskell file called `~/.config/termonad/termonad.hs`. A following\nsection gives an example configuration file.\n\nIf this configuration file exists, when the `/usr/bin/termonad` binary\nlaunches, it will try to use GHC to compile the configuration file. If GHC\nis able to successfully compile the configuration file, a separate binary will\nbe created called something like `~/.cache/termonad/termonad-linux-x86_64`.\nThis binary file can be thought of as your own personal Termonad, configured\nwith all your own settings.\n\nWhen you run `/usr/bin/termonad`, it will re-exec\n`~/.cache/termonad/termonad-linux-x86_64` if it exists.\n\nHowever, there is one difficulty with this setup. In order for the\n`/usr/bin/termonad` binary to be able to compile your\n`~/.config/termonad/termonad.hs` configuration file, Termonad needs to know\nwhere GHC is, as well as where all your Haskell packages live. This presents\nsome difficulties that will be discussed in one of the following sections.\n\n### Default Key Bindings\n\nTermonad provides the following default key bindings.\n\n| Key binding | Action |\n|------------|--------|\n| \u003ckbd\u003eCtrl\u003c/kbd\u003e \u003ckbd\u003eShift\u003c/kbd\u003e \u003ckbd\u003et\u003c/kbd\u003e | Open new tab. |\n| \u003ckbd\u003eCtrl\u003c/kbd\u003e \u003ckbd\u003eShift\u003c/kbd\u003e \u003ckbd\u003ew\u003c/kbd\u003e | Close tab. |\n| \u003ckbd\u003eCtrl\u003c/kbd\u003e \u003ckbd\u003eShift\u003c/kbd\u003e \u003ckbd\u003ef\u003c/kbd\u003e | Open Find dialog for searching for a regex. |\n| \u003ckbd\u003eCtrl\u003c/kbd\u003e \u003ckbd\u003eShift\u003c/kbd\u003e \u003ckbd\u003ep\u003c/kbd\u003e | Find the regex **above** the current position. |\n| \u003ckbd\u003eCtrl\u003c/kbd\u003e \u003ckbd\u003eShift\u003c/kbd\u003e \u003ckbd\u003ei\u003c/kbd\u003e | Find the regex **below** the current position. |\n| \u003ckbd\u003eCtrl\u003c/kbd\u003e \u003ckbd\u003e+\u003c/kbd\u003e | Increase font size. |\n| \u003ckbd\u003eCtrl\u003c/kbd\u003e \u003ckbd\u003e-\u003c/kbd\u003e | Decrease font size. |\n| \u003ckbd\u003eCtrl\u003c/kbd\u003e \u003ckbd\u003ePgUp\u003c/kbd\u003e | Switch to previous tab. |\n| \u003ckbd\u003eCtrl\u003c/kbd\u003e \u003ckbd\u003ePgDown\u003c/kbd\u003e | Switch to next tab. |\n| \u003ckbd\u003eAlt\u003c/kbd\u003e \u003ckbd\u003e(number key)\u003c/kbd\u003e | Switch to tab `number`.  For example, \u003ckbd\u003eAlt\u003c/kbd\u003e \u003ckbd\u003e2\u003c/kbd\u003e switches to tab 2. |\n\n### Configuring Termonad\n\nTermonad has three different ways to be configured.\n\n1.  Pass arguments on the command line.  For instance, run\n    `termonad --no-show-menu` to never show the `File` menubar.\n\n    Arguments passed on the command line will normally override other\n    configuration methods.\n\n2.  Use the built-in Preferences editor.  You can find this in\n    the `Preferences` menu under `Edit` in the menubar.\n\n    When opening Termonad for the first time, it will create a preferences file\n    at `~/.config/termonad/termonad.yaml`.  When you change a setting in the\n    Preferences editor, Termonad will update the setting in the preferences\n    file.\n\n    When running Termonad, it will load settings from the preferences file. Do\n    not edit the preferences file by hand, because it will be overwritten when\n    updating settings in the Preferences editor.\n\n    This method is perfect for users who only want to make small changes to the\n    Termonad settings, like the default font size.\n\n3.  Use a Haskell-based settings file, called `~/.config/termonad/termonad.hs` by default.\n    This method allows you to make large, sweeping changes to Termonad.  This\n    method is recommended for power users.\n\n    The rest of this section explains the `~/.config/termonad/termonad.hs` file.\n\n**WARNING: If you have a `~/.config/termonad/termonad.hs` file, then all\nsettings from `~/.config/termonad/termonad.yaml` will be ignored.  If you want\nto set *ANY* settings in `~/.config/termonad/termonad.hs`, then you must\nset *ALL* settings in `~/.config/termonad/termonad.hs`.  However, as stated above,\nCLI arguments will override settings in `~/.config/termonad/termonad.hs` by default.**\n\nThe following is an example Termonad configuration file. You should save this to\n`~/.config/termonad/termonad.hs`. You can find more information on the available\nconfiguration options within the\n[`Termonad.Config`](https://hackage.haskell.org/package/termonad/docs/Termonad-Config.html)\nmodule.\n\n```haskell\n{-# LANGUAGE OverloadedStrings #-}\n\nmodule Main where\n\nimport Termonad\n  ( FontConfig, FontSize(FontSizePoints), Option(Set)\n  , ShowScrollbar(ShowScrollbarAlways), defaultConfigOptions, defaultFontConfig\n  , defaultMain, defaultTMConfig, fontConfig, fontFamily, fontSize, options\n  , showScrollbar\n  )\nimport Termonad.Config.Colour\n  ( AlphaColour, ColourConfig, addColourExtension, createColour\n  , createColourExtension, cursorBgColour, defaultColourConfig\n  )\n\n-- | This sets the color of the cursor in the terminal.\n--\n-- This uses the \"Data.Colour\" module to define a dark-red color.\n-- There are many default colors defined in \"Data.Colour.Names\".\ncursBgColour :: AlphaColour Double\ncursBgColour = createColour 204 0 0\n\n-- | This sets the colors used for the terminal.  We only specify the background\n-- color of the cursor.\ncolConf :: ColourConfig (AlphaColour Double)\ncolConf =\n  defaultColourConfig\n    { cursorBgColour = Set cursBgColour\n    }\n\n-- | This defines the font for the terminal.\nfontConf :: FontConfig\nfontConf =\n  defaultFontConfig\n    { fontFamily = \"DejaVu Sans Mono\"\n    , fontSize = FontSizePoints 13\n    }\n\nmain :: IO ()\nmain = do\n  colExt \u003c- createColourExtension colConf\n  let termonadConf =\n        defaultTMConfig\n          { options =\n              defaultConfigOptions\n                { fontConfig = fontConf\n                  -- Make sure the scrollbar is always visible.\n                , showScrollbar = ShowScrollbarAlways\n                }\n          }\n        `addColourExtension` colExt\n  defaultMain termonadConf\n```\n\nThere are other example configuration files in the\n[example-config/](./example-config) directory.\n\nIf you want to test what all the colors look like, you may find it convenient\nto use the\n[`print-console-colors`](http://hackage.haskell.org/package/print-console-colors)\npackage, which provides an executable called `print-console-colors` that prints\nall of the colors for your terminal.\n\n### Compiling Local Settings\n\nIf you launch Termonad by calling `/usr/bin/termonad`, it will try to\ncompile the `~/.config/termonad/termonad.hs` file if it exists.  The problem is\nthat `/usr/bin/termonad` needs to be able to see GHC and the required\nHaskell libraries to be able to compile `~/.config/termonad/termonad.hs`.\n\nThere are a couple solutions to this problem, listed in the sections below.\n\n(These steps are definitely confusing. I would love to figure out a better\nway to do this.  Please submit an issue or PR if you have a good idea about\nhow to fix this.)\n\n#### Running with `stack`\n\nIf you originally compiled Termonad with `stack` and installed it to\n`~/.local/bin/termonad`, you can use `stack` to execute Termonad.  First, you\nmust change to the directory with the Termonad source code.  From there, you\ncan run `stack exec`:\n\n```sh\n$ cd termonad/  # change to the termonad source code directory\n$ stack exec -- termonad\n```\n\n`stack` will pick up the correct GHC version and libraries from the\n`stack.yaml` and `termonad.cabal` file.  `termonad` will be run in an\nenvironment with GHC available.  `termonad` will use this GHC and libraries to\ncompile your `~/.config/termonad/termonad.hs` file.  It if succeeds, it should\ncreate a `~/.cache/termonad/termonad-linux-x86_64` binary.\n\nIf you need extra Haskell libraries available when compiling your\n`~/.config/termonad/termonad.hs` file, you can specify them to `stack exec`:\n\n```sh\n$ stack exec --package lens --package conduit -- termonad\n```\n\nThe problem with this is that `stack exec` changes quite a few of your\nenvironment variables.  It is not recommended to actually run Termonad from\nwithin `stack exec`.  After you run `stack exec -- termonad` and let it\nrecompile your `~/.config/termonad/termonad.hs` file, exit Termonad.\nRe-run Termonad by calling it directly.  Termonad will notice that\n`~/.config/termonad/termonad.hs` hasn't changed since\n`~/.cache/termonad/termonad-linux-x86_64` has been recompiled, so it will\ndirectly execute `~/.cache/termonad/termonad-linux-x86_64`.\n\n#### Running with `nix`\n\nBuilding Termonad with `nix` (by running `nix-build` in the top\ndirectory) sets it up so that Termonad can see GHC.  Termonad should be able\nto compile the `~/.config/termonad/termonad.hs` file by default.\n\nIf you're interested in how this works, or want to change which Haskell\npackages are available from your `~/.config/termonad/termonad.hs` file, please\nsee the documentation in the\n[`.nix-helpers/termonad-with-packages.nix`](./.nix-helpers/termonad-with-packages.nix)\nfile.\n\n## Additional Info\n\nThis section contains some additional info that may be helpful for using Termonad.\n\n### Opening URLs by right-clicking\n\nIt is possible to open a URL in a browser by right-clicking on it, and\nselecting `Open URL in browser`.  In order for this you work, you may\nhave to setup your XDG defaults.  You can set the default browser to\nFirefox with a command like the following:\n\n```console\n$ xdg-mime default firefox.desktop x-scheme-handler/http\n$ xdg-mime default firefox.desktop x-scheme-handler/https\n```\n\nThis `xdg-mime` executable comes from a package called `xdg-utils` in both\nNixpkgs and Ubutun/Debian.\n\n## Goals\n\nTermonad has the following goals:\n\n* fully configurable in Haskell\n\n  There are already\n  [many](https://gnometerminator.blogspot.com/p/introduction.html)\n  [good](https://www.enlightenment.org/about-terminology.md)\n  [terminal](http://software.schmorp.de/pkg/rxvt-unicode.html)\n  [emulators](https://launchpad.net/sakura).  However, there are no terminal\n  emulators fully configurable in Haskell.  Termonad fills this niche.\n\n* flexible\n\n  Most people only need a terminal emulator that lets you change the font-size,\n  cursor color, etc.  They don't need tons of configuration options.  Termonad\n  should be for people that like lots of configuration options.  Termonad\n  should provide many hooks to allow the user full control over its behavior.\n\n* stable\n\n  Termonad should be able to be used everyday as your main terminal\n  emulator.  It should not crash for any reason.  If you experience a crash,\n  please file an issue or a pull request!\n\n* good documentation\n\n  The [documentation](https://hackage.haskell.org/package/termonad) for\n  Termonad on Hackage should be good.  You shouldn't have to guess at what\n  certain data types or functions do.  If you have a hard time understanding\n  anything in the documentation, please submit an issue or PR.\n\n## Where to get help\n\nIf you find a bug in Termonad, please either\n[send a PR](https://github.com/cdepillabout/termonad/pulls) fixing it or create\nan [issue](https://github.com/cdepillabout/termonad/issues) explaining it.\n\nIf you just need help with configuring Termonad, you can either join the\n[Gitter room](https://gitter.im/termonad/Lobby) or\n[#termonad on irc.freenode.net](https://webchat.freenode.net/).\n\n## Contributions\n\nContributions are highly appreciated.  Termonad is currently missing many\nhelpful configuration options and behavior hooks.  If there is something you\nwould like to add, please submit an issue or PR.\n\n## Maintainers\n\n- [cdepillabout](https://github.com/cdepillabout)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdepillabout%2Ftermonad","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcdepillabout%2Ftermonad","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdepillabout%2Ftermonad/lists"}