diff --git a/Monadoro.cabal b/Monadoro.cabal
--- a/Monadoro.cabal
+++ b/Monadoro.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           Monadoro
-version:        0.2.6.2
+version:        0.2.6.3
 synopsis:       A minimalistic CLI Pomodoro timer.
 description:    A Pomodoro timer with two modes: single-pomodoro (default), and four-pomodoro (`--session`).
 category:       Tools
@@ -15,7 +15,7 @@
 license:        MIT
 license-file:   LICENSE
 build-type:     Simple
-extra-source-files:
+data-files:
     README.md
     changelog
     man/monadoro.1
@@ -37,6 +37,7 @@
   build-depends:
       ansi-terminal >=0.8 && <1
     , base >=4.7 && <5
+    , process >=1.6 && <2
     , time >=1.8 && <2
   default-language: Haskell2010
 
@@ -51,6 +52,7 @@
       Monadoro
     , ansi-terminal >=0.8 && <1
     , base >=4.7 && <5
+    , process >=1.6 && <2
     , time >=1.8 && <2
   default-language: Haskell2010
 
@@ -69,5 +71,6 @@
     , base >=4.7 && <5
     , doctest >=0.8
     , hspec
+    , process >=1.6 && <2
     , time >=1.8 && <2
   default-language: Haskell2010
diff --git a/app/Main.hs b/app/Main.hs
--- a/app/Main.hs
+++ b/app/Main.hs
@@ -1,15 +1,18 @@
 module Main where
 
+import Control.Monad      (void)
 import Data.Char          (isDigit)
 import Data.List          (intersect)
 import Data.Version       (showVersion)
-import Paths_Monadoro     (version)
 import System.Environment (getArgs)
-import Control.Monad      (void)
+import System.Exit        (ExitCode(ExitSuccess))
+import System.Process     (system)
 
 import CountdownLoop      (countdown)
 import Pomodoro           (session)
 
+import Paths_Monadoro     (getDataFileName, version)
+
 main :: IO ()
 main = monadoro
 
@@ -21,6 +24,10 @@
   | xs `containsEither` ["--help", "-h"]    = putStrLn usage
   | xs `containsEither` ["--version", "-v"] = putStrLn . showVersion $ version
   | xs `containsEither` ["--session", "-s"] = session
+  | xs `containsEither` ["--man", "-m"] = do
+    man_file <- getDataFileName "man/monadoro.1"
+    ExitSuccess <- system $ "man " ++ man_file
+    return ()
   | otherwise = do
     warnAboutErrorsIfAny invalidIntervals
     runTimer validIntervals
@@ -32,7 +39,7 @@
   putStrLn $ "Unable to parse as interval: " ++ show errors
 
 {-| checkInput
- 
+
 Returns valid entries (first list) and invalid entries (second list).
 
 >>> checkInput []
@@ -86,7 +93,8 @@
 containsEither a = not . null . intersect a
 
 usage :: String
-usage = "Usage: monadoro [-vh] [--session] [INTERVAL [...]]"
+usage = "Usage: monadoro [-h|--help] [-m|--man] [-v|--version] [--session]" ++
+  "[INTERVAL [...]]"
 
 runTimer :: [String] -> IO ()
 runTimer []     = void (countdown "25:00")
diff --git a/changelog b/changelog
--- a/changelog
+++ b/changelog
@@ -1,3 +1,7 @@
+monadoro (2.6.3)
+
+	* Add a man page.
+
 monadoro (2.6.2)
 
 	* Fix surprising output on `stack test`.
