{- Copyright 2016 Joey Hess - - Licensed under the GNU AGPL version 3 or higher. -} module UI (module UI, module Types.UI) where import Types.UI import Control.Monad import UI.Zenity import UI.Readline availableUIs :: IO [UI] availableUIs = filterM isAvailable [readlineUI, zenityUI] selectUI :: Bool -> IO UI selectUI needgui | needgui = do ok <- isAvailable zenityUI if ok then return zenityUI else error "zenitty is not installed, GUI not available" | otherwise = do l <- availableUIs case l of (u:_) -> return u [] -> error "Neither zenity nor the readline UI are available"