packages feed

gsmenu 2.1 → 2.2

raw patch · 3 files changed

+34/−19 lines, 3 files

Files

Main.hs view
@@ -66,7 +66,7 @@               hPutStr stderr $ concat errs ++ usage               exitFailure -runWithCfg :: AppConfig String -> IO ()+runWithCfg :: AppConfig [String] -> IO () runWithCfg cfg = do    dpy   <- setupDisplay $ cfg_display cfg   let screen = defaultScreenOfDisplay dpy@@ -74,15 +74,18 @@   rect  <- findRectangle dpy (rootWindowOfScreen screen)   sel   <- gpick dpy screen rect (cfg_gpconfig cfg) elems   case sel of-    Left reason     -> err reason >> exitWith (ExitFailure 1)-    Right Nothing   -> exitWith $ ExitFailure 2-    Right (Just el) -> putStr el >> exitSuccess+    Left reason      -> err reason >> exitWith (ExitFailure 1)+    Right Nothing    -> exitWith $ ExitFailure 2+    Right (Just els) -> printer els >> exitSuccess     where reader            | cfg_complex cfg = readElementsC "stdin"            | otherwise       = readElements+          printer (x:xs:rest) = putStrLn x *> printer (xs:rest)+          printer [x]         = putStr x+          printer _           = return ()           valuer-           | cfg_enumerate cfg = const show-           | otherwise         = \ s _ -> s+           | cfg_enumerate cfg = const $ (:[]) . show+           | otherwise         = \s _ -> [s]  setupDisplay :: String -> IO Display setupDisplay dstr =@@ -99,8 +102,8 @@   fromJust <$> find hasPointer <$> getScreenInfo dpy  readElements :: MonadIO m => Handle -             -> (String -> Integer -> a)-             -> m [Element a]+             -> (String -> Integer -> [String])+             -> m [Element [String]] readElements h f = do   str   <- io $ hGetContents h   return $ zipWith mk (lines str) [0..]@@ -112,15 +115,18 @@                            readElementsC :: MonadIO m => SourceName               -> Handle-              -> (String -> Integer -> a)-              -> m [Element a]+              -> (String -> Integer -> [String])+              -> m [Element [String]] readElementsC sn h f = do   str   <- io $ hGetContents h   case parseElements sn str of     Left  e   -> error $ show e     Right els -> return $ zipWith mk els [0..]-        where mk elm num = elm {-                el_data = f (fst $ el_disp elm) num }+        where mk elm num =+                  elm { el_data = fromMaybe +                                  (f (fst $ el_disp elm) num) +                                  (el_data elm)+                      }  type GSMenuOption a = OptDescr (AppConfig a -> IO (AppConfig a)) @@ -146,7 +152,7 @@   return $ usageInfo header options  versionStr :: String-versionStr = "2.1-dev"+versionStr = "2.2"  options :: [GSMenuOption a] options = [ Option "c"@@ -189,13 +195,13 @@             "The vertical center of the grid, range [0,1]"           ]                -parseElements :: SourceName -> String -> Either ParseError [Element a]+parseElements :: SourceName -> String -> Either ParseError [Element (Maybe [String])] parseElements = parse $ many element <* eof -blankElem :: Element a+blankElem :: Element (Maybe a) blankElem = Element {               el_colors = ("black", "white")-            , el_data   = error "Element without data."+            , el_data   = Nothing             , el_disp   = error "Element without display."             , el_tags   = []             }@@ -212,7 +218,7 @@ twodigitHex :: Word8 -> String twodigitHex = printf "%02x" -element :: GenParser Char u (Element a)+element :: GenParser Char u (Element (Maybe [String])) element = do kvs <- kvPair `sepBy1` realSpaces <* spaces              let (fg, bg) = tagColors $ tags kvs              foldM procKv blankElem { el_colors = (fg, bg) } kvs@@ -232,6 +238,8 @@           procKv _   ("bg", _) = badval "bg"           procKv elm ("tags",val) =             return elm { el_tags = el_tags elm ++ filter (/="") val }+          procKv elm ("value",val) =+            return elm { el_data = Just val }           procKv _ (k, _) = nokey k           badval = parserFail . ("Bad value for field " ++) . quote           nokey  = parserFail . ("Unknown key " ++) . quote
gsmenu.1 view
@@ -1,4 +1,4 @@-.TH GSMENU 1 gsmenu\-2.1+.TH GSMENU 1 gsmenu\-2.2 .SH NAME gsmenu \- grid menu .SH SYNOPSIS@@ -107,6 +107,13 @@ .TP .B tags A list of tags of the element, used when filtering.+.TP+.B value+Instead of the name, print the value of this key when the element is+selected.  If a list, a newline is printed after every element but the+last.  If the+.B \-e+option is passed, this key has no effect.  .SS INTERACTION When the user moves focus to an element and presses Return, that
gsmenu.cabal view
@@ -1,5 +1,5 @@ name:               gsmenu-version:            2.1+version:            2.2 homepage:           http://sigkill.dk/programs/gsmenu synopsis:           A visual generic menu description: