diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -1,3 +1,15 @@
+## Version 0.28
+
+_New features_
+
+  - New `ComX`, which runs a command with custom exit error message.
+
+_Bug fixes_
+
+  - hinotify version upgraded ([issue #356])
+
+[issue #356]: https://github.com/jaor/xmobar/issues/356
+
 ## Version 0.27 (July, 2018)
 
 _New features_
diff --git a/readme.md b/readme.md
--- a/readme.md
+++ b/readme.md
@@ -1284,7 +1284,20 @@
 
         Run Com "date" ["+\"%a %b %_d %H:%M\""] "mydate" 600
 
-can be used in the output template as `%mydate%`
+can be used in the output template as `%mydate%`.
+
+Sometimes, you don't mind if the command executed exits with an error,
+or you might want to display a custom message in that case.  To that
+end, you can use the `ComX` variant:
+
+`ComX ProgramName Args ExitMessage Alias RefreshRate`
+
+Works like `Com`, but displaying `ExitMessage` (a string) if the
+execution fails.  For instance:
+
+        Run ComX "date" ["+\"%a %b %_d %H:%M\""] "N/A" "mydate" 600
+
+will display "N/A" if for some reason the `date` invocation fails.
 
 ## Other Plugins
 
diff --git a/src/Commands.hs b/src/Commands.hs
--- a/src/Commands.hs
+++ b/src/Commands.hs
@@ -48,6 +48,7 @@
     trigger _ sh  = sh Nothing
 
 data Command = Com Program Args Alias Rate
+             | ComX Program Args String Alias Rate
                deriving (Show,Read,Eq)
 
 type Args    = [String]
@@ -56,10 +57,12 @@
 type Rate    = Int
 
 instance Exec Command where
-    alias (Com p    _    a _)
-        | p /= ""             = if a == "" then p else a
-        | otherwise           = ""
-    start (Com prog args _ r) cb = if r > 0 then go else exec
+    alias (ComX p _ _ a _) =
+      if p /= "" then (if a == "" then p else a) else ""
+    alias (Com p a al r) = alias (ComX p a "" al r)
+    start (Com p as al r) cb =
+      start (ComX p as ("Could not execute command " ++ p) al r) cb
+    start (ComX prog args msg _ r) cb = if r > 0 then go else exec
         where go = exec >> tenthSeconds r >> go
               exec = do
                 (i,o,e,p) <- runInteractiveProcess prog args Nothing Nothing
@@ -71,8 +74,7 @@
                   ExitSuccess -> do str <- getL
                                     closeHandles
                                     cb str
-                  _ -> do closeHandles
-                          cb $ "Could not execute command " ++ prog
+                  _ -> closeHandles >> cb msg
 
 
 -- | Work around to the Int max bound: since threadDelay takes an Int, it
diff --git a/xmobar.cabal b/xmobar.cabal
--- a/xmobar.cabal
+++ b/xmobar.cabal
@@ -1,5 +1,5 @@
 name:               xmobar
-version:            0.27
+version:            0.28
 homepage:           http://xmobar.org
 synopsis:           A Minimalistic Text Based Status Bar
 description: 	    Xmobar is a minimalistic text based status bar.
@@ -30,7 +30,7 @@
   other-modules:
         Xmobar, Actions, Bitmap, Config, Parsers, Commands, Localize,
         XUtil, StatFS, Runnable, ColorCache, Window, Signal,
-        Environment,
+        Environment, Paths_xmobar,
         Plugins, Plugins.BufferedPipeReader,
         Plugins.CommandReader, Plugins.Date, Plugins.EWMH,
         Plugins.PipeReader, Plugins.MarqueePipeReader,
@@ -139,7 +139,7 @@
     other-modules:
       Xmobar, Actions, Bitmap, Config, Parsers, Commands, Localize,
       XUtil, StatFS, Runnable, ColorCache, Window, Signal,
-      Environment,
+      Environment, Paths_xmobar,
       Plugins, Plugins.BufferedPipeReader,
       Plugins.CommandReader, Plugins.Date, Plugins.EWMH,
       Plugins.PipeReader, Plugins.MarqueePipeReader,
@@ -203,7 +203,7 @@
        cpp-options: -DUTF8
 
     if flag(with_inotify) || flag(all_extensions)
-       build-depends: hinotify == 0.3.*
+       build-depends: hinotify >= 0.3 && < 0.5
        other-modules: Plugins.Mail, Plugins.MBox
        cpp-options: -DINOTIFY
 
