skip to content
MusesΜοῦσαιdocs

basics / 02 of 15

Installing

phonto is one binary on Linux and macOS. On Linux, GStreamer does the decoding, and its plugins matter as much as phonto does.

Requirements

  • On Linux, a Wayland compositor with wlr-layer-shell. Hyprland, Sway, niri, river and KDE Plasma have it. GNOME doesn’t.
  • On Linux, GStreamer and its plugins. The base, good and bad sets and libav cover the containers and codecs most videos use, and the VA-API plugin decodes on the GPU. Without it, GStreamer decodes on the CPU instead. That works, but costs far more CPU.
  • On macOS, nothing. phonto uses the system’s frameworks, and VideoToolbox decodes H.264, HEVC and ProRes on the GPU.
  • For YouTube links, yt-dlp on your PATH.

GStreamer plugins on Linux

shell
# Arch Linux
sudo pacman -S gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-libav gst-plugin-va
# Debian and Ubuntu
sudo apt install gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-gl gstreamer1.0-vaapi
# Fedora
sudo dnf install gstreamer1-plugins-base gstreamer1-plugins-good gstreamer1-plugins-bad-free gstreamer1-libav gstreamer1-vaapi

With Nix you can skip this. The package brings its own GStreamer.

Installing phonto

Homebrew

On macOS, and on Linux on x86_64.

shell
brew tap museslabs/phonto
brew install phonto

Nix

shell
nix profile install github:museslabs/phonto

Arch Linux

From the AUR:

shell
yay -S phonto

Cargo

shell
cargo install phonto

Cargo builds phonto from source. That takes Rust 1.88 or newer, and on Linux the development headers for GStreamer, Wayland and EGL:

shell
# Debian and Ubuntu
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libglib2.0-dev libwayland-dev libegl1-mesa-dev

Checking it works

shell
phonto displays

This lists the displays phonto can see, with their IDs and resolutions. If they’re there, phonto can reach your compositor. Then play something:

shell
phonto ~/Videos/harbour.mp4

If phonto exits with a GStreamer error on Linux instead, a plugin is usually missing. Check the list above.