diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,13 @@
 
+5.30
+----
+
+New features:
+ * Added `Graphics.Vty.setWindowTitle` to emit an escape
+   sequence to set the window title, provide the terminal emulator
+   accepts Xterm-style title sequences. For details, see:
+   https://tldp.org/HOWTO/Xterm-Title-3.html
+
 5.29
 ----
 
diff --git a/src/Graphics/Vty.hs b/src/Graphics/Vty.hs
--- a/src/Graphics/Vty.hs
+++ b/src/Graphics/Vty.hs
@@ -33,6 +33,7 @@
 module Graphics.Vty
   ( Vty(..)
   , mkVty
+  , setWindowTitle
   , Mode(..)
   , module Graphics.Vty.Config
   , module Graphics.Vty.Input
@@ -54,6 +55,9 @@
 import Graphics.Vty.UnicodeWidthTable.IO
 import Graphics.Vty.UnicodeWidthTable.Install
 
+import Data.Char (isPrint, showLitChar)
+import qualified Data.ByteString.Char8 as BS8
+
 import qualified Control.Exception as E
 import Control.Monad (when)
 import Control.Concurrent.STM
@@ -224,3 +228,24 @@
                  , shutdown = shutdownIo
                  , isShutdown = shutdownStatus
                  }
+
+-- | Set the terminal window title string.
+--
+-- This function emits an Xterm-compatible escape sequence that we
+-- anticipate will work for essentially all modern terminal emulators.
+-- Ideally we'd use a terminal capability for this, but there does not
+-- seem to exist a termcap for setting window titles. If you find that
+-- this function does not work for a given terminal emulator, please
+-- report the issue.
+--
+-- For details, see:
+--
+-- https://tldp.org/HOWTO/Xterm-Title-3.html
+setWindowTitle :: Vty -> String -> IO ()
+setWindowTitle vty title = do
+    let sanitize :: String -> String
+        sanitize = concatMap sanitizeChar
+        sanitizeChar c | not (isPrint c) = showLitChar c ""
+                       | otherwise = [c]
+    let buf = BS8.pack $ "\ESC]2;" <> sanitize title <> "\007"
+    outputByteBuffer (outputIface vty) buf
diff --git a/vty.cabal b/vty.cabal
--- a/vty.cabal
+++ b/vty.cabal
@@ -1,5 +1,5 @@
 name:                vty
-version:             5.29
+version:             5.30
 license:             BSD3
 license-file:        LICENSE
 author:              AUTHORS
