packages feed

brick-3.0: brick.cabal

name:                brick
version:             3.0
synopsis:            A declarative terminal user interface library
description:
  Write terminal user interfaces (TUIs) painlessly with 'brick'! You
  write an event handler and a drawing function and the library does the
  rest.
  .
  .
  > module Main where
  >
  > import Brick
  >
  > ui :: Widget ()
  > ui = str "Hello, world!"
  >
  > main :: IO ()
  > main = simpleMain ui
  .
  .
  To get started, see:
  .
  * <https://github.com/jtdaugherty/brick/blob/main/README.md The README>
  .
  * The <https://github.com/jtdaugherty/brick/blob/main/docs/guide.rst Brick user guide>
  .
  * The demonstration programs in the 'programs' directory
  .
  .
  This package deprecates <http://hackage.haskell.org/package/vty-ui vty-ui>.
license:             BSD3
license-file:        LICENSE
author:              Jonathan Daugherty <cygnus@foobox.com>
maintainer:          Jonathan Daugherty <cygnus@foobox.com>
copyright:           (c) Jonathan Daugherty 2015-2026
category:            Graphics
build-type:          Simple
cabal-version:       1.18
Homepage:            https://github.com/jtdaugherty/brick/
Bug-reports:         https://github.com/jtdaugherty/brick/issues
tested-with:         GHC == 9.0.2
                      || == 9.2.8
                      || == 9.4.8
                      || == 9.6.7
                      || == 9.8.4
                      || == 9.10.3
                      || == 9.12.2
                      || == 9.14.1

extra-doc-files:     README.md,
                     docs/guide.rst,
                     docs/snake-demo.gif,
                     CHANGELOG.md,
                     programs/custom_keys.ini

Source-Repository head
  type:     git
  location: http://github.com/jtdaugherty/brick

Flag demos
    Description:     Build demonstration programs
    Default:         False

library
  default-language:    Haskell2010
  ghc-options:         -Wall -Wcompat -O2 -Wunused-packages
  default-extensions:  CPP
  hs-source-dirs:      src
  exposed-modules:
    Brick
    Brick.Animation
    Brick.AttrMap
    Brick.BChan
    Brick.BorderMap
    Brick.Keybindings
    Brick.Keybindings.KeyConfig
    Brick.Keybindings.KeyEvents
    Brick.Keybindings.KeyDispatcher
    Brick.Keybindings.Normalize
    Brick.Keybindings.Parse
    Brick.Keybindings.Pretty
    Brick.Focus
    Brick.Forms
    Brick.Main
    Brick.Themes
    Brick.Types
    Brick.Util
    Brick.Widgets.Border
    Brick.Widgets.Border.Style
    Brick.Widgets.Center
    Brick.Widgets.Core
    Brick.Widgets.Dialog
    Brick.Widgets.Edit
    Brick.Widgets.FileBrowser
    Brick.Widgets.List
    Brick.Widgets.Menu
    Brick.Widgets.MenuBar
    Brick.Widgets.ProgressBar
    Brick.Widgets.Table
    Data.IMap
  other-modules:
    Brick.Animation.Clock
    Brick.Types.Common
    Brick.Types.TH
    Brick.Types.EventM
    Brick.Types.Internal
    Brick.Widgets.Internal

  build-depends:       base >= 4.9.0.0 && < 4.23.0.0,
                       vty >= 6.0,
                       vty-crossplatform,
                       bimap >= 0.5 && < 0.6,
                       data-clist >= 0.1,
                       directory >= 1.2.5.0,
                       exceptions >= 0.10.0,
                       filepath,
                       containers >= 0.5.7,
                       microlens-platform >= 0.3.0.0 && < 0.6,
                       microlens,
                       microlens-th,
                       microlens-mtl,
                       mtl,
                       config-ini,
                       vector,
                       stm >= 2.4.3,
                       text >= 2.1.2,
                       text-zipper >= 0.13,
                       template-haskell,
                       deepseq >= 1.3 && < 1.6,
                       unix-compat,
                       bytestring,
                       word-wrap >= 0.2,
                       unordered-containers,
                       hashable,
                       time

executable brick-custom-keybinding-demo
  if !flag(demos)
    Buildable: False
  hs-source-dirs:      programs
  ghc-options:         -threaded -Wall -Wcompat -O2
  default-language:    Haskell2010
  default-extensions:  CPP
  main-is:             CustomKeybindingDemo.hs
  build-depends:       base,
                       brick,
                       text,
                       vty,
                       containers,
                       microlens,
                       microlens-mtl,
                       microlens-th

executable brick-table-demo
  if !flag(demos)
    Buildable: False
  hs-source-dirs:      programs
  ghc-options:         -threaded -Wall -Wcompat -O2
  default-language:    Haskell2010
  default-extensions:  CPP
  main-is:             TableDemo.hs
  build-depends:       base,
                       brick

executable brick-tail-demo
  if !flag(demos)
    Buildable: False
  hs-source-dirs:      programs
  ghc-options:         -threaded -Wall -Wcompat -O2
  default-language:    Haskell2010
  default-extensions:  CPP
  main-is:             TailDemo.hs
  build-depends:       base,
                       brick,
                       text,
                       vty,
                       random,
                       microlens-th,
                       microlens-mtl

executable brick-readme-demo
  if !flag(demos)
    Buildable: False
  hs-source-dirs:      programs
  ghc-options:         -threaded -Wall -Wcompat -O2
  default-language:    Haskell2010
  default-extensions:  CPP
  main-is:             ReadmeDemo.hs
  build-depends:       base,
                       brick

executable brick-file-browser-demo
  if !flag(demos)
    Buildable: False
  hs-source-dirs:      programs
  ghc-options:         -threaded -Wall -Wcompat -O2
  default-language:    Haskell2010
  default-extensions:  CPP
  main-is:             FileBrowserDemo.hs
  build-depends:       base,
                       vty,
                       brick,
                       text,
                       mtl

executable brick-form-demo
  if !flag(demos)
    Buildable: False
  hs-source-dirs:      programs
  ghc-options:         -threaded -Wall -Wcompat -O2
  default-language:    Haskell2010
  default-extensions:  CPP
  main-is:             FormDemo.hs
  build-depends:       base,
                       brick,
                       text,
                       microlens,
                       microlens-th,
                       vty-crossplatform,
                       vty

executable brick-text-wrap-demo
  if !flag(demos)
    Buildable: False
  hs-source-dirs:      programs
  ghc-options:         -threaded -Wall -Wcompat -O2
  default-language:    Haskell2010
  default-extensions:  CPP
  main-is:             TextWrapDemo.hs
  build-depends:       base,
                       brick,
                       word-wrap

executable brick-cache-demo
  if !flag(demos)
    Buildable: False
  hs-source-dirs:      programs
  ghc-options:         -threaded -Wall -Wcompat -O2
  default-language:    Haskell2010
  default-extensions:  CPP
  main-is:             CacheDemo.hs
  build-depends:       base,
                       brick,
                       vty,
                       mtl

executable brick-visibility-demo
  if !flag(demos)
    Buildable: False
  hs-source-dirs:      programs
  ghc-options:         -threaded -Wall -Wcompat -O2
  default-language:    Haskell2010
  main-is:             VisibilityDemo.hs
  build-depends:       base,
                       brick,
                       vty,
                       microlens >= 0.3.0.0,
                       microlens-th,
                       microlens-mtl

executable brick-viewport-scrollbars-demo
  if !flag(demos)
    Buildable: False
  hs-source-dirs:      programs
  ghc-options:         -threaded -Wall -Wcompat -O2
  default-language:    Haskell2010
  default-extensions:  CPP
  main-is:             ViewportScrollbarsDemo.hs
  build-depends:       base,
                       brick,
                       vty,
                       vty-crossplatform,
                       microlens-mtl,
                       microlens-th

executable brick-viewport-scroll-demo
  if !flag(demos)
    Buildable: False
  hs-source-dirs:      programs
  ghc-options:         -threaded -Wall -Wcompat -O2
  default-language:    Haskell2010
  default-extensions:  CPP
  main-is:             ViewportScrollDemo.hs
  build-depends:       base,
                       brick,
                       vty

executable brick-dialog-demo
  if !flag(demos)
    Buildable: False
  hs-source-dirs:      programs
  ghc-options:         -threaded -Wall -Wcompat -O2
  default-language:    Haskell2010
  main-is:             DialogDemo.hs
  build-depends:       base,
                       brick,
                       vty

executable brick-mouse-demo
  if !flag(demos)
    Buildable: False
  hs-source-dirs:      programs
  ghc-options:         -threaded -Wall -Wcompat -O2
  default-language:    Haskell2010
  main-is:             MouseDemo.hs
  build-depends:       base,
                       brick,
                       vty,
                       microlens >= 0.3.0.0,
                       microlens-th,
                       microlens-mtl,
                       mtl

executable brick-layer-demo
  if !flag(demos)
    Buildable: False
  hs-source-dirs:      programs
  ghc-options:         -threaded -Wall -Wcompat -O2
  default-language:    Haskell2010
  main-is:             LayerDemo.hs
  build-depends:       base,
                       brick,
                       vty,
                       microlens >= 0.3.0.0,
                       microlens-th,
                       microlens-mtl

executable brick-suspend-resume-demo
  if !flag(demos)
    Buildable: False
  hs-source-dirs:      programs
  ghc-options:         -threaded -Wall -Wcompat -O2
  default-language:    Haskell2010
  main-is:             SuspendAndResumeDemo.hs
  build-depends:       base,
                       brick,
                       vty,
                       microlens >= 0.3.0.0,
                       microlens-th

executable brick-cropping-demo
  if !flag(demos)
    Buildable: False
  hs-source-dirs:      programs
  ghc-options:         -threaded -Wall -Wcompat -O2
  default-language:    Haskell2010
  main-is:             CroppingDemo.hs
  build-depends:       base,
                       brick,
                       vty

executable brick-padding-demo
  if !flag(demos)
    Buildable: False
  hs-source-dirs:      programs
  ghc-options:         -threaded -Wall -Wcompat -O2
  default-language:    Haskell2010
  main-is:             PaddingDemo.hs
  build-depends:       base,
                       brick,
                       vty

executable brick-theme-demo
  if !flag(demos)
    Buildable: False
  hs-source-dirs:      programs
  ghc-options:         -threaded -Wall -Wcompat -O2
  default-language:    Haskell2010
  main-is:             ThemeDemo.hs
  build-depends:       base,
                       brick,
                       vty,
                       mtl

executable brick-attr-demo
  if !flag(demos)
    Buildable: False
  hs-source-dirs:      programs
  ghc-options:         -threaded -Wall -Wcompat -O2
  default-language:    Haskell2010
  main-is:             AttrDemo.hs
  build-depends:       base,
                       brick,
                       vty

executable brick-tabular-list-demo
  if !flag(demos)
    Buildable: False
  hs-source-dirs:      programs
  ghc-options:         -threaded -Wall -Wcompat -O2
  default-language:    Haskell2010
  main-is:             TabularListDemo.hs
  build-depends:       base,
                       brick,
                       vty,
                       microlens >= 0.3.0.0,
                       microlens-mtl,
                       microlens-th,
                       vector

executable brick-list-demo
  if !flag(demos)
    Buildable: False
  hs-source-dirs:      programs
  ghc-options:         -threaded -Wall -Wcompat -O2
  default-language:    Haskell2010
  main-is:             ListDemo.hs
  build-depends:       base,
                       brick,
                       vty,
                       microlens >= 0.3.0.0,
                       microlens-mtl,
                       mtl,
                       vector

executable brick-list-vi-demo
  if !flag(demos)
    Buildable: False
  hs-source-dirs:      programs
  ghc-options:         -threaded -Wall -Wcompat -O2
  default-language:    Haskell2010
  main-is:             ListViDemo.hs
  build-depends:       base,
                       brick,
                       vty,
                       microlens >= 0.3.0.0,
                       microlens-mtl,
                       mtl,
                       vector

executable brick-animation-demo
  if !flag(demos)
    Buildable: False
  hs-source-dirs:      programs
  ghc-options:         -threaded -Wall -Wcompat -O2
  default-language:    Haskell2010
  main-is:             AnimationDemo.hs
  build-depends:       base,
                       brick,
                       vty,
                       vty-crossplatform,
                       containers,
                       microlens-platform

executable brick-custom-event-demo
  if !flag(demos)
    Buildable: False
  hs-source-dirs:      programs
  ghc-options:         -threaded -Wall -Wcompat -O2
  default-language:    Haskell2010
  main-is:             CustomEventDemo.hs
  build-depends:       base,
                       brick,
                       vty,
                       microlens >= 0.3.0.0,
                       microlens-th,
                       microlens-mtl

executable brick-fill-demo
  if !flag(demos)
    Buildable: False
  hs-source-dirs:      programs
  ghc-options:         -threaded -Wall -Wcompat -O2
  default-language:    Haskell2010
  main-is:             FillDemo.hs
  build-depends:       base,
                       brick

executable brick-hello-world-demo
  if !flag(demos)
    Buildable: False
  hs-source-dirs:      programs
  ghc-options:         -threaded -Wall -Wcompat -O2
  default-language:    Haskell2010
  main-is:             HelloWorldDemo.hs
  build-depends:       base,
                       brick

executable brick-edit-demo
  if !flag(demos)
    Buildable: False
  hs-source-dirs:      programs
  ghc-options:         -threaded -Wall -Wcompat -O2
  default-language:    Haskell2010
  main-is:             EditDemo.hs
  build-depends:       base,
                       brick,
                       vty,
                       microlens >= 0.3.0.0,
                       microlens-th,
                       microlens-mtl

executable brick-editor-line-numbers-demo
  if !flag(demos)
    Buildable: False
  hs-source-dirs:      programs
  ghc-options:         -threaded -Wall -Wcompat -O2
  default-language:    Haskell2010
  main-is:             EditorLineNumbersDemo.hs
  build-depends:       base,
                       brick,
                       vty,
                       microlens >= 0.3.0.0,
                       microlens-th,
                       microlens-mtl

executable brick-border-demo
  if !flag(demos)
    Buildable: False
  hs-source-dirs:      programs
  ghc-options:         -threaded -Wall -Wcompat -O2
  default-extensions:  CPP
  default-language:    Haskell2010
  main-is:             BorderDemo.hs
  build-depends:       base,
                       brick,
                       vty,
                       text

executable brick-dynamic-border-demo
  if !flag(demos)
    Buildable: False
  hs-source-dirs:      programs
  ghc-options:         -threaded -Wall -Wcompat -O2
  default-extensions:  CPP
  default-language:    Haskell2010
  main-is:             DynamicBorderDemo.hs
  build-depends:       base <= 5,
                       brick

executable brick-progressbar-demo
  if !flag(demos)
    Buildable: False
  hs-source-dirs:      programs
  ghc-options:         -threaded -Wall -Wcompat -O2
  default-extensions:  CPP
  default-language:    Haskell2010
  main-is:             ProgressBarDemo.hs
  build-depends:       base,
                       brick,
                       vty,
                       microlens-mtl,
                       microlens-th

executable brick-menu-demo
  if !flag(demos)
    Buildable: False
  hs-source-dirs:      programs
  ghc-options:         -threaded -Wall -Wcompat -O2
  default-extensions:  CPP
  default-language:    Haskell2010
  main-is:             MenuDemo.hs
  build-depends:       base,
                       brick,
                       vty,
                       mtl,
                       text,
                       microlens,
                       microlens-mtl,
                       microlens-th

executable brick-menu-keybindings-demo
  if !flag(demos)
    Buildable: False
  hs-source-dirs:      programs
  ghc-options:         -threaded -Wall -Wcompat -O2
  default-extensions:  CPP
  default-language:    Haskell2010
  main-is:             MenuKeybindingsDemo.hs
  build-depends:       base,
                       brick,
                       vty,
                       mtl,
                       text,
                       microlens,
                       microlens-mtl,
                       microlens-th

executable brick-menu-bar-demo
  if !flag(demos)
    Buildable: False
  hs-source-dirs:      programs
  ghc-options:         -threaded -Wall -Wcompat -O2
  default-extensions:  CPP
  default-language:    Haskell2010
  main-is:             MenuBarDemo.hs
  build-depends:       base,
                       brick,
                       vty,
                       mtl,
                       text,
                       microlens,
                       microlens-mtl,
                       microlens-th

test-suite brick-tests
  type:                exitcode-stdio-1.0
  hs-source-dirs:      tests
  ghc-options:         -Wall -Wcompat -Wno-orphans -O2
  default-language:    Haskell2010
  main-is:             Main.hs
  other-modules:       List Render
  build-depends:       base <=5,
                       brick,
                       containers,
                       microlens,
                       vector,
                       vty,
                       vty-crossplatform,
                       QuickCheck