packages feed

movie-monad-0.0.4.0: README.md

![Movie Monad](https://i.imgur.com/gdsyIMv.png)

# Movie Monad

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

## Screenshots

### Linux

![GUI showing "Caminandes 3: LLamigos" from the Blender Foundation](https://i.imgur.com/aYf6XOB.png)

![GUI showing "Sintel" from the Blender Foundation](https://i.imgur.com/UBNYbER.jpg)

### Mac

![GUI showing "Big Buck Bunny" from the Blender Foundation](https://i.imgur.com/Tgmk7SW.png)

![GUI showing the About window as seen on the Mac](https://i.imgur.com/pTJLQdM.png)

## 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

* [Ubuntu 17.10](https://www.ubuntu.com/desktop)
* [Ubuntu 16.04](https://www.ubuntu.com/desktop)
* [Ubuntu 14.04](https://www.ubuntu.com/desktop)
* [Linux Mint 18.2](https://linuxmint.com/)
* [Deepin 15.4.1](https://www.deepin.org/en/dde/)
* [Manjaro 17.04](https://manjaro.org/)
* [Antergos 17.10](https://antergos.com/)
* [Fedora 27](https://getfedora.org/)
* [Solus 3](https://solus-project.com/2017/08/15/solus-3-released/)

### Mac

* [macOS Sierra 10.12.6](https://en.wikipedia.org/wiki/MacOS_Sierra)

## Dependencies

### Run

* [GTK+ >= 3.10](https://www.gtk.org/download/index.php)
* [GStreamer >= 1.0](https://gstreamer.freedesktop.org/download/)
    * [GStreamer Good Plug-ins](https://gstreamer.freedesktop.org/modules/gst-plugins-good.html)
    * [GStreamer Bad Plug-ins >= 1.8](https://gstreamer.freedesktop.org/modules/gst-plugins-bad.html)

### Build

* [Haskell](https://www.haskell.org/platform/prior.html)
    * GHC == 8.0.2

## Install & Run

### Linux

#### AppImage

##### Download & Run

```bash
# 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

```bash
# 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
```

#### [Arch/Manjaro/Antergos](https://aur.archlinux.org/packages/movie-monad/)

```bash
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

```bash
# 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
```

### [Hackage](https://hackage.haskell.org/package/movie-monad)

```bash
# 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
```

### [GitHub](https://github.com/lettier/movie-monad)

```bash
# 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](https://lettier.github.io/posts/2017-08-30-haskell-gtk-video-player.html)

## License

See [LICENSE](LICENSE).

## Copyright

(C) 2017 David Lettier  
[lettier.com](http://www.lettier.com/)