diff --git a/hledger-ui/Hledger/UI/Main.hs b/hledger-ui/Hledger/UI/Main.hs index 8dd9d7f36..628815cc6 100644 --- a/hledger-ui/Hledger/UI/Main.hs +++ b/hledger-ui/Hledger/UI/Main.hs @@ -20,7 +20,8 @@ import Data.List (find) import Data.List.Extra (nubSort) import Data.Maybe (fromMaybe) import qualified Data.Text as T -import Graphics.Vty (mkVty, Mode (Mouse), Vty (outputIface), Output (setMode)) +import Graphics.Vty (Mode (Mouse), Vty (outputIface), Output (setMode)) +import Graphics.Vty.CrossPlatform (mkVty) import Lens.Micro ((^.)) import System.Directory (canonicalizePath) import System.Environment (withProgName) diff --git a/hledger-ui/hledger-ui.cabal b/hledger-ui/hledger-ui.cabal index d6786ddd7..03c85f4af 100644 --- a/hledger-ui/hledger-ui.cabal +++ b/hledger-ui/hledger-ui.cabal @@ -73,7 +73,7 @@ library ansi-terminal >=0.9 , async , base >=4.14 && <4.19 - , brick >=1.5 && <2 + , brick >=2.1.1 && <2.2 , cmdargs >=0.8 , containers >=0.5.9 , data-default @@ -95,14 +95,16 @@ library , text-zipper >=0.4 , time >=1.5 , transformers - , unix , vector - , vty >=5.15 && <6 + , vty ==6.1.* + , vty-crossplatform >=0.4.0.0 && <0.5.0.0 default-language: Haskell2010 if os(windows) - buildable: False + build-depends: + vty-windows >=0.2.0.1 && <0.3.0.0 else - buildable: True + build-depends: + unix executable hledger-ui main-is: hledger-ui.hs @@ -116,9 +118,5 @@ executable hledger-ui base >=4.14 && <4.19 , hledger-ui default-language: Haskell2010 - if os(windows) - buildable: False - else - buildable: True if flag(threaded) ghc-options: -threaded diff --git a/hledger-ui/package.yaml b/hledger-ui/package.yaml index bfcbd232d..13f517b7a 100644 --- a/hledger-ui/package.yaml +++ b/hledger-ui/package.yaml @@ -51,7 +51,6 @@ ghc-options: dependencies: - base >=4.14 && <4.19 -when: # curses is required to build terminfo for vty for hledger-ui. # On POSIX systems it might be not present. # On windows it's very likely not present, but possibly it could be. @@ -61,12 +60,10 @@ when: # curses # default: True # description: - # For now, just don't build hledger-ui on windows - - condition: os(windows) - then: - buildable: false - else: - buildable: true + # + # note on windows: the vty-windows (and hence hledger-ui) will reliably work only on the newer backends + # like Windows Terminal. + # mintty-based backends (default for cygwin/gitbash/msys2) are not supported (yet) library: source-dirs: . @@ -101,10 +98,16 @@ library: - time >=1.5 - transformers - vector - # not installable on windows, cf buildable flag below - - brick >=1.5 && <2 - - vty >=5.15 && <6 - - unix + - brick >=2.1.1 && <2.2 + - vty >=6.1 && <6.2 + - vty-crossplatform >= 0.4.0.0 && < 0.5.0.0 + when: + - condition: os(windows) + then: + dependencies: vty-windows >= 0.2.0.1 && < 0.3.0.0 + else: + dependencies: unix + executables: hledger-ui: diff --git a/stack.yaml b/stack.yaml index 2058862eb..54d645999 100644 --- a/stack.yaml +++ b/stack.yaml @@ -31,3 +31,10 @@ nix: # # "$targets": -Werror # # "$everything": -O2 # # some-package: -DSOME_CPP_FLAG +extra-deps: + - vty-windows-0.2.0.1 + - vty-crossplatform-0.4.0.0 + - brick-2.1.1 + - vty-6.1 + - vty-unix-0.2.0.0 + diff --git a/stack9.4.yaml b/stack9.4.yaml index ad3add652..2c179e3f8 100644 --- a/stack9.4.yaml +++ b/stack9.4.yaml @@ -8,8 +8,12 @@ packages: - hledger-ui - hledger-web -# extra-deps: - +extra-deps: + - vty-windows-0.2.0.1 + - vty-crossplatform-0.4.0.0 + - brick-2.1.1 + - vty-6.1 + - vty-unix-0.2.0.0 nix: pure: false packages: [perl gmp ncurses zlib]