Skip to content

A desktop video player built with Haskell that uses GStreamer and GTK+.

License

Notifications You must be signed in to change notification settings

strogo/movie-monad

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Movie Monad

Movie Monad

A free and simple to use video player built with Haskell.

Screenshots

Linux

GUI showing "Caminandes 3: LLamigos" from the Blender Foundation

GUI showing "Sintel" from the Blender Foundation

Mac

GUI showing "Big Buck Bunny" from the Blender Foundation

GUI showing the About window as seen on the Mac

Features

  • Local or Remote Video Playback
    • file://
    • http://
    • https://
  • Window Size Quick Select
  • Responsive Window Resizing
  • Fullscreen Mode
  • Seek
  • Play and Pause
  • Volume
  • Subtitles
    • Disable
    • List and Pick from the Available Languages
  • Command-line Play
    • movie-monad ./path/to/video/file.mp4
    • movie-monad http://www.domain.tld/path/to/video/file.mp4

Keyboard Shortcuts

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

Tested On

Linux

Mac

Dependencies

Run

Build

Install & Run

Linux

AppImage

Download & Run
# Install GTK+ >= 3.10 (https://www.gtk.org/download/index.php)
# Install GStreamer >= 1.0 (https://gstreamer.freedesktop.org/download/)
# Install GStreamer Good Plug-ins (https://gstreamer.freedesktop.org/modules/gst-plugins-good.html)
# Install GStreamer Bad Plug-ins >= 1.8 (https://gstreamer.freedesktop.org/modules/gst-plugins-bad.html)
# Install Wget (https://www.gnu.org/software/wget/)
# Visit https://github.com/lettier/movie-monad/releases
# Download the latest AppImage movie-monad-0.0.4.0-x86_64.AppImage
wget https://github.com/lettier/movie-monad/releases/download/0.0.4.0/movie-monad-0.0.4.0-x86_64.AppImage
chmod a+x movie-monad-0.0.4.0-x86_64.AppImage
./movie-monad-0.0.4.0-x86_64.AppImage
Install
# Install GTK+ >= 3.10 (https://www.gtk.org/download/index.php)
# Install GStreamer >= 1.0 (https://gstreamer.freedesktop.org/download/)
# Install GStreamer Good Plug-ins (https://gstreamer.freedesktop.org/modules/gst-plugins-good.html)
# Install GStreamer Bad Plug-ins >= 1.8 (https://gstreamer.freedesktop.org/modules/gst-plugins-bad.html)
# Install Wget (https://www.gnu.org/software/wget/)
wget "https://raw.githubusercontent.com/lettier/movie-monad/master/scripts/sh/install-app-image.sh" -O "movie-monad-install-app-image.sh"
chmod +x "movie-monad-install-app-image.sh"
./movie-monad-install-app-image.sh
# Install snapd (https://docs.snapcraft.io/core/install)
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
movie-monad
Known Issues
  • Ubuntu 17
    • Does not launch if using Wayland
      • At login, click the gear and select Ubuntu on Xorg
      • Note that Movie Monad works with Wayland when not using the snap
  • File Explorer
    • Some of the left sidebar shortcuts do not map to the expected user directories
      • They instead map to the snap's read-only filesystem or to nothing at all
  • Subtitles
    • Subtitles do not show even though you can select them in the drop down
      • GStreamer must not have access to or cannot find any suitable fonts

All of these issues can be avoided if you run the executable directly.

/snap/movie-monad/current/user/bin/movie-monad
cd
# Install Git (https://git-scm.com/downloads)
sudo pacman -S git
# Install Movie Monad from the AUR (https://aur.archlinux.org/packages/movie-monad/)
mkdir -p movie-monad-tmp
cd movie-monad-tmp
git clone https://aur.archlinux.org/movie-monad.git
cd movie-monad
makepkg -sic
cd
rm -rf movie-monad-tmp
movie-monad

Mac

# Install Homebrew (https://brew.sh/#install)
cd ~/Downloads
brew update && brew upgrade
brew install git
git clone https://github.com/lettier/movie-monad.git
cd movie-monad
brew cask install haskell-platform
brew install pkg-config libffi libav libsvg librsvg libogg libvorbis openh264 theora \
  gobject-introspection cairo gdk-pixbuf gsettings-desktop-schemas gtk+3 gtk-mac-integration \
  gstreamer gst-libav gst-plugins-base gst-plugins-good
brew install --with-gtk+3 gst-plugins-bad
stack setup
stack install hsc2hs
stack install
export PATH=$PATH:"$HOME/.local/bin/"
movie-monad
# Install GObject Introspection (https://wiki.gnome.org/action/show/Projects/GObjectIntrospection)
# Install GTK+ >= 3.10 (https://www.gtk.org/download/index.php)
# Install GStreamer >= 1.0 (https://gstreamer.freedesktop.org/download/)
# Install GStreamer Good Plug-ins (https://gstreamer.freedesktop.org/modules/gst-plugins-good.html)
# Install GStreamer Bad Plug-ins >= 1.8 (https://gstreamer.freedesktop.org/modules/gst-plugins-bad.html)
# Install Cabal, GHC == 8.0.2 (https://www.haskell.org/platform/prior.html)
# Install Cabal Install (https://www.haskell.org/platform/prior.html)
cabal install movie-monad
movie-monad
# Install GObject Introspection (https://wiki.gnome.org/action/show/Projects/GObjectIntrospection)
# Install GTK+ >= 3.10 (https://www.gtk.org/download/index.php)
# Install GStreamer >= 1.0 (https://gstreamer.freedesktop.org/download/)
# Install GStreamer Good Plug-ins (https://gstreamer.freedesktop.org/modules/gst-plugins-good.html)
# Install GStreamer Bad Plug-ins >= 1.8 (https://gstreamer.freedesktop.org/modules/gst-plugins-bad.html)
# Install Git (https://git-scm.com/downloads)
# Install GNU Make (https://www.gnu.org/software/make/)
# Install Haskell, GHC == 8.0.2 (https://www.haskell.org/platform/prior.html)
# Install Haksell Stack (https://www.haskell.org/platform/)
git clone https://github.com/lettier/movie-monad.git
cd movie-monad/
make
make install
make run

Developer Documentation

Let's make a GTK Video Player with Haskell

License

See LICENSE.

Copyright

(C) 2017 David Lettier
lettier.com

About

A desktop video player built with Haskell that uses GStreamer and GTK+.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Haskell 91.4%
  • Shell 5.7%
  • Makefile 2.3%
  • Other 0.6%