From 2865d49d47164bcea4257f00d4a56110ac1550bd Mon Sep 17 00:00:00 2001
From: Benjamin Koch <snowball@c3pb.de>
Date: Wed, 16 Dec 2020 01:57:47 +0100
Subject: [PATCH] Add qubesProperty block to CLI

---
 src/QBar/Blocks.hs | 1 +
 src/QBar/Cli.hs    | 8 +++++++-
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/QBar/Blocks.hs b/src/QBar/Blocks.hs
index c35892b..b1c15ff 100644
--- a/src/QBar/Blocks.hs
+++ b/src/QBar/Blocks.hs
@@ -5,6 +5,7 @@ module QBar.Blocks
     QBar.Blocks.DiskUsage.diskUsageBlock,
     QBar.Blocks.NetworkManager.networkManagerBlock,
     QBar.Blocks.Qubes.diskUsageQubesBlock,
+    QBar.Blocks.Qubes.qubesMonitorPropertyBlock,
     QBar.Blocks.Script.scriptBlock,
     QBar.Blocks.Script.pollScriptBlock,
   )
diff --git a/src/QBar/Cli.hs b/src/QBar/Cli.hs
index b9d8f14..4a7a04a 100644
--- a/src/QBar/Cli.hs
+++ b/src/QBar/Cli.hs
@@ -94,7 +94,8 @@ blockParser =
     command "disk" (info diskUsageBlockParser (progDesc "Load the disk usage block.")) <>
     command "networkmanager" (info (pure $ addBlock networkManagerBlock) (progDesc "Load the network-manager block.")) <>
     command "script" (info scriptBlockParser (progDesc "Display the output of an external script as a block.")) <>
-    command "diskQubesPool" (info (pure $ addBlock diskUsageQubesBlock) (progDesc "Load a block that shows free space in Qubes' default pool."))
+    command "diskQubesPool" (info (pure $ addBlock diskUsageQubesBlock) (progDesc "Load a block that shows free space in Qubes' default pool.")) <>
+    command "qubesProperty" (info qubesPropertyBlockParser (progDesc "Display the current value of a Qubes property."))
   )
 
 diskUsageBlockParser :: Parser (BarIO ())
@@ -118,6 +119,11 @@ scriptBlockParser = helper <*> do
   script <- strArgument (metavar "SCRIPT" <> help "The script that will be executed with a shell.")
   return $ (if poll then addBlock . pollScriptBlock pollInterval else addBlock . scriptBlock clickEvents) script
 
+qubesPropertyBlockParser :: Parser (BarIO ())
+qubesPropertyBlockParser  = do
+  name <- strArgument (metavar "NAME" <> help "The NAME of the property.")
+  return $ addBlock $ qubesMonitorPropertyBlock name
+
 qubesCommandParser :: Parser (MainOptions -> IO ())
 qubesCommandParser = hsubparser (
     command "stats" (info (pure $ const $ printEvents qubesVMStats) (progDesc "Subscribe to VM stats and print them to stdout.")) <>
-- 
GitLab