-
The thing that may affect end users the most in this release is that the
defaultMain
function moved fromTermonad.App
toTermonad.Startup
. (However, it is also exported from the top-levelTermonad
module, so most users will likely want to get it from the top-levelTermonad
module.) #239 -
There has been a big refactoring of the guts of Termonad. As an end user, if you reach into any modules like
Termonad.App
,Termonad.Term
, orTermonad.Types
, you may notice some functions have moved around or gained new arguments. Some data types have changed as well. Most end users don't use these modules, so I don't expect that this refactoring will affect most users. -
Add support for setting Termonad options with CLI arguments. Add a whole CLI argument parser based on optparse-applicative. #234
Check out
termonad --help
to see the options available to be set from the CLI.By default, passing CLI options will override options specified in the
termonad.hs
file, as well as options specified in the Preferences dialog.In your own
termonad.hs
file, if you want to not use this CLI argument funtionality, you should be able to use theTermonad.start
function (in place ofTermonad.defaultMain
). -
Embed the Termonad icon into the Termonad library (instead of having it set as a
data-file
intermonad.cabal
).This fixes a problem some users were seeing when garbaging-collecting their Nix store and losing the required
termonad-lambda.png
file that their Termonad binary was referencing: #165 -
Rename the
Termonad.PreferencesFile
module toTermonad.Preferences.File
.Also, add a
Termonad.Preferences
module that re-exports everything helpful from theTermonad.Preferences.File
module. Also, some of the preferences-related functionality fromTermonad.App
has been moved intoTermonad.Preferences
. #238
- Add an
allowBold
option (which defaults toTrue
). This can be used if you want disable use of bold text. Thanks @zanculmarktum! #225
- Add support for opening URLs in a browser by right-clicking on them. URLs will also become underlined if you mouse-over them. #222
- Add SIXEL support. Note that you will need to set
enableSixel
toTrue
in yourConfigOptions
. In order forenableSixel
to have any affect, you'll need to use version of VTE that is >= 0.63, and has been compiled with SIXEL support. There is also a report that even if you enable SIXEL and have a supported version of VTE, there may still be some problems. See the linked PR for more information, including how to compile VTE with SIXEL support. Thanks @junjihashimoto! #219
-
Added an example of how to setup a Dracula color scheme. Thanks @craigem! #195
-
Bump to allow both aeson-1 and aeson-2. Thanks @gelisam! #210
-
Add new options
highlightFgColour
andhighlightBgColour
for setting the color of highlighted text #190. Thanks @zanculmarktum! -
Termonad creates a configuration file in
~/.config/termonad/termonad.yaml
for use with the Preferences editor. This is only used if you don't have atermonad.hs
file.The configuration file loading code has been updated to be more robust in loading configurations that are missing fields. This means that if you update Termonad from an old version, your preferences will still be able to be loaded in most cases #191. Thanks again @jecaro!
-
Added an example of how to setup a PaperColour color scheme. Thanks @craigem! #193
- Add new shortcuts to switch to the next and previous tab: CtrlPgDown and CtrlPgUp. This works similar to gnome-terminal and xfce4-terminal. #180. Thanks @juliendehos!
- Add an option for enabling "bold is bright". This forces colors from the extended light palette to be used whenever Termonad prints bold text. #178. Thanks @M0M097!
- Disable doctest test-suite when building with GHC-8.10.3. The doctests appear to be segfaulting, but only when compiled with GHC-8.10.3. #175.
- Add Preferences link to context menu. This is a convenient way to open the Preferences if you don't have the menu shown by default. #171 Thanks @maridonkers!
- Update Termonad to be able to be built with the latest versions of the
haskell-gi libraries. This shouldn't affect most users building with
stack
. It is only used currently for building Termonad with packages from Nixpkgs.
-
Remove the dependently typed code for specifying terminal colors. #161. Thanks @ssbothwell!
The
Palette
data type has been updated to not used length-indexed lists, but instead just newtype wrappers around normal lists.In prevous versions, the
Palette
data type looked like this:data Palette c = NoPalette | BasicPalette !(Vec N8 c) | ExtendedPalette !(Vec N8 c) !(Vec N8 c) | ColourCubePalette !(Vec N8 c) !(Vec N8 c) !(Matrix '[N6, N6, N6] c) | FullPalette !(Vec N8 c) !(Vec N8 c) !(Matrix '[N6, N6, N6] c) !(Vec N24 c)
In 4.0.0.0,
Palette
has been changed to the following:data Palette c = NoPalette | BasicPalette !(List8 c) | ExtendedPalette !(List8 c) !(List8 c) | ColourCubePalette !(List8 c) !(List8 c) !(Matrix c) | FullPalette !(List8 c) !(List8 c) !(Matrix c) !(List24 c)
Instead of using types like
Vec N8 c
, you will use types likeList8 c
.When setting the
palette
field of in aColourConfig
, you can now do it like the following. Note that there is both amkList8
function that returnsMaybe
, and anunsafeMkList8
that throws a runtime error. Most users will probably want to use theunsafeMkList8
function, since it is easy to use, and you can eyeball whether the list has the correct number of elements. If you're doing something more complicated, you may want to use themkList8
function:myColourConfig :: ColourConfig (AlphaColour Double) myColourConfig = defaultColourConfig { palette = ExtendedPalette myStandardColours (maybe defaultLightColours id myLightColours) } where -- This is a an example of creating a linked-list of colours, -- This function uses an unsafe method for generating the list. -- An exception will be thrown if your list does not have exactly 8 elements. myStandardColours :: List8 (AlphaColour Double) myStandardColours = unsafeMkList8 [ createColour 40 30 20 -- dark brown (used as background colour) , createColour 180 30 20 -- red , createColour 40 160 20 -- green , createColour 180 160 20 -- dark yellow , createColour 40 30 120 -- dark purple , createColour 180 30 120 -- bright pink , createColour 40 160 120 -- teal , createColour 180 160 120 -- light brown ] -- This is an example of creating a linked-list of colours with a type -- safe method. mkList8 produces a Maybe value which must be handled explicitely. myLightColours :: Maybe (List8 (AlphaColour Double)) myLightColours = mkList8 [ createColour 70 60 50 -- brown , createColour 220 30 20 -- light red , createColour 40 210 20 -- light green , createColour 220 200 20 -- yellow , createColour 40 30 180 -- purple , createColour 140 30 80 -- dark pink , createColour 50 200 160 -- light teal , createColour 220 200 150 -- light brown ]
Also see the functions
setAtList8
,overAtList8
,setAtList24
,overAtList24
, etc.
-
Add an example showing Gruvbox colours #149. Thanks again @craigem!
-
Set an upperbound on
base
so we make sure that only GHC-8.8 is used. Some of the dependencies of Termonad don't support GHC-8.10 yet.
-
Fix up deprecated functions used in Setup.hs. This should allow Termonad to be compiled with Cabal-3.0.0.0 (which is used by default in GHC-8.8). #144 Thanks mdorman!
-
Fully update to LTS-15 and GHC-8.8. Termonad now requires GHC-8.8 in order to be compiled. #145.
-
Remove the one-pixel white border around the
GtkNotebook
(the GTK widget thing that contains the tabs). #138 -
Add a right-click menu for the terminal. It currently allows copy and paste. #136 Thanks @jecaro!
-
Add a preferences file that settings will be saved to and read from at
~/.config/termonad/termonad.yaml
. You can change settings with the Preferences dialog. The settings will only be used from this file if you do not have a~/.config/termonad/termonad.hs
file. #140 Thanks again @jecaro!
- Add a menu option to set preferences for a running Termonad session. The preferences you have set are lost when you end the Termonad session. #130 Thanks @jecaro!
- Added menu option to search for a regex within the terminal output. This removes support for versions of VTE-2.91 older than 0.46. This means that compiling on older versions of Debian and Ubuntu may no longer work. #118
- Change all uses of
Colour
toAlphaColour
inTermonad.Config.Colour
. Users should now useAlphaColour
instead ofColour
. Also, all uses ofsRGB24
should be replaced withcreateColour
. This change is mechanical and should not affect how Termonad works at all. Thanks to @jecaro and @amir! #116
-
Got the code for setting the backgroud color of the terminal actually working. Thanks @dakotaclemenceplaza. #111
- This changes the type of
ColourConfig
to make the foreground and background colors of the terminal optional.
- This changes the type of
-
Various cleanup in the nix files.
-
Added an example of how to setup a solarized color scheme. Thanks @craigem. #90 and #103
-
Various fixes in the nix files. Make sure Termonad can see the GTK icons. #91 and #92
-
Add a menu option to change the font size at runtime. You should be able to do this with the
Ctrl-+
andCtrl--
keys. #95 -
Get building with GHC 8.6. Thanks @clinty. #98
-
Stop using the
widgetSetFocusOnClick
function, which is not supported on older versions of GTK. This lets Termonad be compiled with older versions of GTK. #87. -
Add CI. #87.
-
Support versions of VTE-2.91 older than 0.44. #87.
-
Add some functions for converting from a list to a
Vec
inTermonad.Config.Vec
:fromListVec
andfromListVec_
. Commit 883eb98b5f. -
Fix the paste hotkey. #86.
-
The API for configuring Termonad is now completely different. Many, many changes have gone into this version. You should approach it as a completely different application.
The CHANGELOG will be kept up-to-date for future releases.
-
Make sure the window title is set to "Termonad".
-
Relabel tabs when termonad is started.
-
Open dialog asking if you want to quit when you try to use your WM to quit.
-
Termonad will attempt to open up a new terminal in the working directory of the current terminal.
-
Make sure termonad won't crash if dyre can't find GHC.
-
Add a few more ways to compile on NixOS.
-
Add an icon for termonad.
- Initial release.