termonad-1.0.0.0: Terminal emulator configurable in Haskell

Copyright(c) Dennis Gosnell 2018
LicenseBSD3
Stabilityexperimental
PortabilityPOSIX
Safe HaskellNone
LanguageHaskell2010

Termonad.Config

Contents

Description

This module exposes termonad's basic configuration options. To set these options in your config, first ensure you've imported Termonad.

Then for your main, apply start or defaultMain to a TMConfig value. We suggest you build such values by performing record updates on the defaultTMConfig rather than using the TMConfig constructor, as the latter is much more likely to break when there are changes to the TMConfig type.

E.g.

 -- Re-exports this module.
 import Termonad

 main :: IO ()
 main = start $ defaultTMConfig
   { showScrollbar = ShowScrollbarNever
   , confirmExit = False
   , showMenu = False
   , cursorBlinkMode = CursorBlinkModeOff
   }

Additional options can be found in the following modules.

If you want to see an example configuration file, as well as an explanation for how to use Termonad, see the Termonad README.

Synopsis

Main Config Data Type

data TMConfig Source #

The Termonad ConfigOptions along with the ConfigHooks.

Constructors

TMConfig 
Instances
Show TMConfig Source # 
Instance details

Defined in Termonad.Types

data ConfigOptions Source #

Configuration options for Termonad.

See defaultConfigOptions for the default values.

Constructors

ConfigOptions 

Fields

defaultConfigOptions :: ConfigOptions Source #

The default ConfigOptions.

>>> :{
  let defConfOpt =
        ConfigOptions
          { fontConfig = defaultFontConfig
          , showScrollbar = ShowScrollbarIfNeeded
          , scrollbackLen = 10000
          , confirmExit = True
          , wordCharExceptions = "-#%&+,./=?@\\_~\183:"
          , showMenu = True
          , showTabBar = ShowTabBarIfNeeded
          , cursorBlinkMode = CursorBlinkModeOn
          }
  in defaultConfigOptions == defConfOpt
:}
True

data ConfigHooks Source #

Hooks into certain termonad operations and VTE events. Used to modify termonad's behaviour in order to implement new functionality. Fields should have sane Semigroup and Monoid instances so that config extensions can be combined uniformly and new hooks can be added without incident.

Constructors

ConfigHooks 

Fields

Instances
Show ConfigHooks Source # 
Instance details

Defined in Termonad.Types

defaultConfigHooks :: ConfigHooks Source #

Default values for the ConfigHooks.

Fonts

data FontSize Source #

The font size for the Termonad terminal. There are two ways to set the fontsize, corresponding to the two different ways to set the font size in the Pango font rendering library.

If you're not sure which to use, try FontSizePoints first and see how it looks. It should generally correspond to font sizes you are used to from other applications.

Constructors

FontSizePoints Int

This sets the font size based on "points". The conversion between a point and an actual size depends on the system configuration and the output device. The function fontDescriptionSetSize is used to set the font size. See the documentation for that function for more info.

FontSizeUnits Double

This sets the font size based on "device units". In general, this can be thought of as one pixel. The function fontDescriptionSetAbsoluteSize is used to set the font size. See the documentation for that function for more info.

Instances
Eq FontSize Source # 
Instance details

Defined in Termonad.Types

Show FontSize Source # 
Instance details

Defined in Termonad.Types

defaultFontSize :: FontSize Source #

The default FontSize used if not specified.

>>> defaultFontSize
FontSizePoints 12

data FontConfig Source #

Settings for the font to be used in Termonad.

Constructors

FontConfig 

Fields

Instances
Eq FontConfig Source # 
Instance details

Defined in Termonad.Types

Show FontConfig Source # 
Instance details

Defined in Termonad.Types

defaultFontConfig :: FontConfig Source #

The default FontConfig to use if not specified.

>>> defaultFontConfig == FontConfig {fontFamily = "Monospace", fontSize = defaultFontSize}
True

Misc

data Option a Source #

This data type represents an option that can either be Set or Unset.

This data type is used in situations where leaving an option unset results in a special state that is not representable by setting any specific value.

Examples of this include the cursorFgColour and cursorBgColour options supplied by the ColourConfig ConfigExtension. By default, cursorFgColour and cursorBgColour are both Unset. However, when cursorBgColour is Set, cursorFgColour defaults to the color of the text underneath. There is no way to represent this by setting cursorFgColour.

Constructors

Unset 
Set !a 
Instances
Functor Option Source # 
Instance details

Defined in Termonad.Types

Methods

fmap :: (a -> b) -> Option a -> Option b #

(<$) :: a -> Option b -> Option a #

Foldable Option Source # 
Instance details

Defined in Termonad.Types

Methods

fold :: Monoid m => Option m -> m #

foldMap :: Monoid m => (a -> m) -> Option a -> m #

foldr :: (a -> b -> b) -> b -> Option a -> b #

foldr' :: (a -> b -> b) -> b -> Option a -> b #

foldl :: (b -> a -> b) -> b -> Option a -> b #

foldl' :: (b -> a -> b) -> b -> Option a -> b #

foldr1 :: (a -> a -> a) -> Option a -> a #

foldl1 :: (a -> a -> a) -> Option a -> a #

toList :: Option a -> [a] #

null :: Option a -> Bool #

length :: Option a -> Int #

elem :: Eq a => a -> Option a -> Bool #

maximum :: Ord a => Option a -> a #

minimum :: Ord a => Option a -> a #

sum :: Num a => Option a -> a #

product :: Num a => Option a -> a #

Eq a => Eq (Option a) Source # 
Instance details

Defined in Termonad.Types

Methods

(==) :: Option a -> Option a -> Bool #

(/=) :: Option a -> Option a -> Bool #

Ord a => Ord (Option a) Source # 
Instance details

Defined in Termonad.Types

Methods

compare :: Option a -> Option a -> Ordering #

(<) :: Option a -> Option a -> Bool #

(<=) :: Option a -> Option a -> Bool #

(>) :: Option a -> Option a -> Bool #

(>=) :: Option a -> Option a -> Bool #

max :: Option a -> Option a -> Option a #

min :: Option a -> Option a -> Option a #

Read a => Read (Option a) Source # 
Instance details

Defined in Termonad.Types

Show a => Show (Option a) Source # 
Instance details

Defined in Termonad.Types

Methods

showsPrec :: Int -> Option a -> ShowS #

show :: Option a -> String #

showList :: [Option a] -> ShowS #

data ShowScrollbar Source #

Whether or not to show the scroll bar in a terminal.

Constructors

ShowScrollbarNever

Never show the scroll bar, even if there are too many lines on the terminal to show all at once. You should still be able to scroll with the mouse wheel.

ShowScrollbarAlways

Always show the scrollbar, even if it is not needed.

ShowScrollbarIfNeeded

Only show the scrollbar if there are too many lines on the terminal to show all at once.

data ShowTabBar Source #

Whether or not to show the tab bar for switching tabs.

Constructors

ShowTabBarNever

Never show the tab bar, even if there are multiple tabs open. This may be confusing if you plan on using multiple tabs.

ShowTabBarAlways

Always show the tab bar, even if you only have one tab open.

ShowTabBarIfNeeded

Only show the tab bar if you have multiple tabs open.

Instances
Eq ShowTabBar Source # 
Instance details

Defined in Termonad.Types

Show ShowTabBar Source # 
Instance details

Defined in Termonad.Types

data CursorBlinkMode #

An enumerated type which can be used to indicate the cursor blink mode for the terminal.

Constructors

CursorBlinkModeSystem

Follow GTK+ settings for cursor blinking.

CursorBlinkModeOn

Cursor blinks.

CursorBlinkModeOff

Cursor does not blink.

AnotherCursorBlinkMode Int

Catch-all for unknown values