Plays videos using GStreamer and GTK+.

Latest on Hackage:

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow to host generated Haddocks.

BSD3 licensed and maintained by Lettier

Movie Monad

Movie Monad? Another video player? Really?

Yes really.

Movie Monad is a free and simple to use video player made with Haskell. Originally it was a proof of concept to add video playback to Gifcurry (another great app—check it out). Nowadays it’s a lightweight yet mighty media player used all over the world everyday.

Movie Monad is cross platform so you’ll never have to compute without it. You can play files on your computer or stream videos from the web. Play, pause, seek, repeat, resize, expand, and turn it up—Movie Monad gets out of the way so you can watch the videos you love.

So put down your copy of mpv, VLC, or Elmedia and try out Movie Monad—it’s FREE!

What does Movie Monad look like?

Movie Monad Movie Monad

What can I do with Movie Monad?

  • You can play video files from your hard drive or stream videos from the web.
    • To play web videos, click the file open button, paste the URL into the text box, and click open.
    • Movie Monad can handle file://, https://, and http://.
  • You can play and pause.
  • You can seek/scrub through the video.
  • You can put the video on repeat.
  • You can turn subtitles off or on and pick your language.
  • You can turn up, turn down, or mute the volume.
  • You can expand the video to fullscreen.
  • You can quickly resize the video to standard sizes.
  • You can resize the video to a custom size by resizing the window.
    • Movie Monad will responsively adjust the video size to fill the window.
  • You can play videos from the command line.
    • movie-monad ./path/to/video/file.mp4
    • movie-monad http://www.domain.tld/path/to/video/file.mp4

What are the keyboard controls?

  • Mute/Unmute
    • m
    • AudioMute
  • Fullscreen/Windowed
    • f
  • Show Controls
    • c
  • Toggle Repeat
    • r
  • Volume Up
    • ArrowUp
    • AudioRaiseVolume
  • Volume Down
    • ArrowDown
    • AudioLowerVolume
  • Seek Left
    • ArrowLeft
  • Seek Right
    • ArrowRight
  • Play/Pause
    • Space
    • AudioPlay

How do I get a copy of Movie Monad?

Movie Monad works on Linux, Mac, and most likely Windows. Make sure you have GStreamer and GTK+ installed on your machine. To find the latest version of Movie Monad, head over to the releases page.

I use Linux.

If you use Linux then the easiest way to grab a copy of Movie Monad is by downloading the AppImage. After you download the AppImage, right click on it, select permissions, and check the box near execute. With that out of the way—you’re all set—just double click on the AppImage and Movie Monad will pop up.

You can also download and install the AppImage using the handy AppImage install script (right click the link and select “Save link as…”). Download the script, right click on it, select permissions, check the box near execute, and double click on it. You should now see Movie Monad listed alongside your other installed programs.

I use Arch/Manjaro/Antergos/pacman.

If you’d rather install Movie Monad via pacman then copy the following into your terminal.

cd "$HOME/Downloads"
sudo pacman -S git
mkdir -p build-movie-monad
cd build-movie-monad
git clone
cd movie-monad
makepkg -sic
cd "$HOME/Downloads"
rm -rf build-movie-monad

I use Ubuntu/Mint/Debian/Deepin/snap.

Movie Monad is available as a snap from Snapcraft. If you don’t already have snap, go ahead and install it using the command sudo apt install snapd.

You can install the Movie Monad snap right from your browser or via the command line. For the command line route, paste the following into your terminal.

snap install movie-monad
sudo snap connect movie-monad:mount-observe
sudo snap connect movie-monad:removable-media
sudo snap connect movie-monad:raw-usb

I use Mac.

Mac users can download and run the Mac install script (hold down control, click the link, and select “Save Link As…”). After running the install script, a shortcut to Movie Monad will be on your desktop.

I’m a Haskell developer.

If you develop Haskell programs then the easiest way to build Movie Monad is with Haskell Stack. Copy the following into your terminal.

cd "$HOME/Downloads"
git clone
cd movie-monad
stack update
stack setup
stack install alex happy
stack install haskell-gi
stack install
stack exec -- movie-monad

What dependencies does Movie Monad use?

To run Movie Monad.

To build Movie Monad.

What is the license?


Who wrote Movie Monad?

(C) 2017 David Lettier


Movie Monad



  • Repeat mode
  • Custom icons for new bottom controls
  • Custom styling for new bottom controls
  • Added a one second fade in animation for the bottom controls
  • Added extra error checking around window width combo box selection
  • Mac install script


  • Tooltips
  • Use a SVG icon instead of PNG
  • Fixed video info being changed before selecting a video
  • Use play and pause image widget names to determine state of the play pause button
  • If the user sets the window to a custom size, select nothing in the window selection combo box
  • Set timeout for hiding the bottom controls to seven seconds instead of five
  • AppImage meta data
  • AppImage install script
  • Snap packaging
  • AUR packaging



  • Subtitle support
  • C src directory
  • C FFI files


  • Clamped keyboard shortcut seek left and right to 0.0 and 100.0
  • Reduced keyboard shortcut seek left and right proportion



  • PKGBUILD for Arch Linux
  • AppImage specific desktop file
  • Linux screenshot
  • Ubuntu snapcraft.yaml
  • Seek left and right keyboard shortcuts


  • Cabal file
    • Added stack.yaml
    • Added makefile
    • Changed base to use ghc-8.0.1 or ghc-8.0.2
  • makefile
    • Ensure cabal binary is stack version
    • Force reinstalls for cabal install
  • Dependencies
  • Allow the window to be freely resized no matter the current width selection
  • Adjusts the window height so that the video can fill the width of the window


  • Version from mac screenshot


  • Hides the cursor and the on-screen controls when the mouse is idle
  • New Logo
  • URL support
  • Keyboard shortcuts
  • makefile
  • Icon
  • AppImage
  • AppImage installation script
  • Support for GTK 3.10
  • macOS screenshots
  • macOS build instructions
  • Screensaver and power management enable/disable
  • Video file path command line option that, if present, plays the video on window realized


  • Cabal file
    • Corrected source-repository
  • Logo
  • Dependencies
  • Icon
  • Play/Pause toggle to button
  • ICO file to PNG
  • Switched from GstVideoOverlay to GtkSink


  • ExifTool requirement
  • Old logo PNG file
  • X11 dependency


  • Fullscreen mode


  • Screenshot
  • Main function
    • Extracted callback functions into their own functions
  • Dependencies to match Hackage


  • lib directory


  • File Loader
  • Seek
  • Pause
  • Play
  • Window Width Selector
  • About
  • Screenshot
  • Logo
  • Documentation



comments powered byDisqus