diff --git a/Tools/TimePlot.hs b/Tools/TimePlot.hs
--- a/Tools/TimePlot.hs
+++ b/Tools/TimePlot.hs
@@ -1,6 +1,11 @@
-{-# LANGUAGE ScopedTypeVariables, TypeFamilies, ParallelListComp, CPP, BangPatterns #-}
+{-# LANGUAGE ScopedTypeVariables, TypeFamilies, ParallelListComp, CPP, BangPatterns, TemplateHaskell #-}
 module Main where
 
+import Paths_timeplot (version)
+import Data.Version (showVersion)
+import Distribution.VcsRevision.Git
+import Language.Haskell.TH.Syntax
+
 import Control.Monad
 import Data.List
 import Data.Ord
@@ -16,10 +21,6 @@
 
 import Graphics.Rendering.Chart
 
-#ifdef HAVE_GTK
-import Graphics.Rendering.Chart.Gtk
-#endif
-
 import Tools.TimePlot.Types
 import Tools.TimePlot.Conf
 import Tools.TimePlot.Source
@@ -76,22 +77,12 @@
 showHelp = mapM_ putStrLn [ "",
   "tplot - a tool for drawing timing diagrams.",
   "        See http://www.haskell.org/haskellwiki/Timeplot",
-#ifdef HAVE_GTK  
-  "Usage: tplot [-o OFILE] [-of {png|pdf|ps|svg|x}] [-or 640x480]",
-  "             -if IFILE [-tf TF] ",
-  "             [{+|-}k Pat1 Kind1 {+|-}k Pat2 Kind2 ...] [{+|-}dk KindN]",
-  "             [-fromTime TIME] [-toTime TIME] [-baseTime TIME]",
-  "  -o  OFILE  - output file (required if -of is not x)",
-  "  -of        - output format (x means draw result in a window, default:",
-  "               extension of -o)",
-#else
   "Usage: tplot [-o OFILE] [-of {png|pdf|ps|svg}] [-or 640x480]",
   "             -if IFILE [-tf TF] ",
   "             [{+|-}k Pat1 Kind1 {+|-}k Pat2 Kind2 ...] [{+|-}dk KindN]",
   "             [-fromTime TIME] [-toTime TIME] [-baseTime TIME]",
   "  -o  OFILE  - output file",
   "  -of        - output format (default: extension of -o)",
-#endif
   "  -or        - output resolution (default 640x480)",
   "  -if IFILE  - input file; '-' means 'read from stdin'",
   "               NOTE: for large datasets, use actual files, not stdin,",
@@ -203,21 +194,26 @@
   "     way as in cumsum."
   ]
 
+showGitVersion = $(do
+  v <- qRunIO getRevision
+  lift $ case v of
+    Nothing           -> "<none>"
+    Just (hash,True)  -> hash ++ " (with local modifications)"
+    Just (hash,False) -> hash)
 
 main = do
   args <- getArgs
   mainWithArgs args
 mainWithArgs args = do
   when (null args || args == ["--help"]) $ showHelp >> exitSuccess
+  when (null args || args == ["--version"]) $ do
+    putStrLn ("This is timeplot-" ++ showVersion version ++ " (git " ++ showGitVersion ++ ")") >> exitSuccess
   let !conf = readConf args
   let render = case (outFormat conf) of {
       PNG    -> \c w h f -> const () `fmap` renderableToPNGFile c w h f;
       PDF    -> renderableToPDFFile ;
       PS     -> renderableToPSFile  ;
       SVG    -> renderableToSVGFile ;
-#ifdef HAVE_GTK          
-      Window -> \c w h f -> renderableToWindow c w h
-#endif          
     }
   case conf of
     ConcreteConf {
diff --git a/timeplot.cabal b/timeplot.cabal
--- a/timeplot.cabal
+++ b/timeplot.cabal
@@ -1,5 +1,5 @@
 name: timeplot
-version: 1.0.4
+version: 1.0.5
 cabal-version: >=1.6
 build-type: Simple
 license: BSD3
@@ -33,4 +33,5 @@
                    bytestring-lexing -any, cairo -any, colour -any, containers -any,
                    data-accessor ==0.2.*, data-accessor-template >=0.2.1.1 && <0.3,
                    regex-tdfa -any, strptime >=0.1.7, time -any,
-                   transformers -any
+                   transformers -any,
+                   vcs-revision -any, template-haskell -any
