Skip to content

Linux Installation Guide

This guide covers building and installing Movian on various Linux distributions from source code.

Quick Installation (Ubuntu/Debian)

For Ubuntu 16.04+ and Debian 9+:

# 1. Install dependencies
sudo apt-get update
sudo apt-get install -y \
    git build-essential \
    libfreetype6-dev libfontconfig1-dev libxext-dev \
    libgl1-mesa-dev libasound2-dev libgtk2.0-dev \
    libxss-dev libxxf86vm-dev libxv-dev libvdpau-dev \
    yasm libpulse-dev libssl-dev curl \
    libwebkitgtk-dev libsqlite3-dev libavahi-client-dev

# 2. Clone and build
git clone https://github.com/andoma/movian.git
cd movian
./configure
make -j$(nproc)

# 3. Install (optional)
sudo make install

# 4. Run
./build.linux/movian

Distribution-Specific Instructions

Ubuntu/Debian

Ubuntu 20.04 LTS (Focal Fossa)

sudo apt-get update
sudo apt-get install -y \
    git build-essential pkg-config \
    libfreetype6-dev libfontconfig1-dev \
    libxext-dev libgl1-mesa-dev \
    libasound2-dev libpulse-dev \
    libgtk2.0-dev libxss-dev \
    libxxf86vm-dev libxv-dev libvdpau-dev \
    yasm libssl-dev curl \
    libwebkitgtk-3.0-dev libsqlite3-dev \
    libavahi-client-dev

Ubuntu 18.04 LTS (Bionic Beaver)

sudo apt-get update
sudo apt-get install -y \
    git build-essential pkg-config \
    libfreetype6-dev libfontconfig1-dev \
    libxext-dev libgl1-mesa-dev \
    libasound2-dev libpulse-dev \
    libgtk2.0-dev libxss-dev \
    libxxf86vm-dev libxv-dev libvdpau-dev \
    yasm libssl-dev curl \
    libwebkitgtk-dev libsqlite3-dev \
    libavahi-client-dev

Debian 11 (Bullseye)

sudo apt-get update
sudo apt-get install -y \
    git build-essential pkg-config \
    libfreetype6-dev libfontconfig1-dev \
    libxext-dev libgl1-mesa-dev \
    libasound2-dev libpulse-dev \
    libgtk2.0-dev libxss-dev \
    libxxf86vm-dev libxv-dev libvdpau-dev \
    yasm libssl-dev curl \
    libwebkit2gtk-4.0-dev libsqlite3-dev \
    libavahi-client-dev

Fedora/CentOS/RHEL

Fedora 34+

sudo dnf update
sudo dnf install -y \
    git gcc gcc-c++ make pkg-config \
    freetype-devel fontconfig-devel \
    libXext-devel mesa-libGL-devel \
    alsa-lib-devel pulseaudio-libs-devel \
    gtk2-devel libXScrnSaver-devel \
    libXxf86vm-devel libXv-devel \
    libvdpau-devel yasm openssl-devel \
    curl-devel webkitgtk3-devel \
    sqlite-devel avahi-devel

CentOS 8/RHEL 8

# Enable EPEL repository
sudo dnf install -y epel-release
sudo dnf config-manager --set-enabled powertools

sudo dnf install -y \
    git gcc gcc-c++ make pkg-config \
    freetype-devel fontconfig-devel \
    libXext-devel mesa-libGL-devel \
    alsa-lib-devel pulseaudio-libs-devel \
    gtk2-devel libXScrnSaver-devel \
    libXxf86vm-devel libXv-devel \
    libvdpau-devel yasm openssl-devel \
    curl-devel sqlite-devel avahi-devel

CentOS 7/RHEL 7

# Enable EPEL repository
sudo yum install -y epel-release

sudo yum install -y \
    git gcc gcc-c++ make pkg-config \
    freetype-devel fontconfig-devel \
    libXext-devel mesa-libGL-devel \
    alsa-lib-devel pulseaudio-libs-devel \
    gtk2-devel libXScrnSaver-devel \
    libXxf86vm-devel libXv-devel \
    libvdpau-devel yasm openssl-devel \
    curl-devel sqlite-devel avahi-devel

# Note: May need newer GCC for C99 support
sudo yum install -y centos-release-scl
sudo yum install -y devtoolset-8-gcc devtoolset-8-gcc-c++
scl enable devtoolset-8 bash

Arch Linux

# Install dependencies
sudo pacman -S --needed \
    git base-devel pkg-config \
    freetype2 fontconfig libxext \
    mesa alsa-lib pulseaudio gtk2 \
    libxss libxxf86vm libxv libvdpau \
    yasm openssl curl webkit2gtk \
    sqlite avahi

# Build and install
git clone https://github.com/andoma/movian.git
cd movian
./configure
make -j$(nproc)
sudo make install

openSUSE

openSUSE Leap 15.x

sudo zypper refresh
sudo zypper install -y \
    git gcc gcc-c++ make pkg-config \
    freetype2-devel fontconfig-devel \
    libXext-devel Mesa-libGL-devel \
    alsa-devel libpulse-devel \
    gtk2-devel libXss-devel \
    libXxf86vm-devel libXv-devel \
    libvdpau-devel yasm libopenssl-devel \
    libcurl-devel webkit2gtk3-devel \
    sqlite3-devel libavahi-devel

openSUSE Tumbleweed

sudo zypper refresh
sudo zypper install -y \
    git gcc gcc-c++ make pkg-config \
    freetype2-devel fontconfig-devel \
    libXext-devel Mesa-libGL-devel \
    alsa-devel libpulse-devel \
    gtk2-devel libXss-devel \
    libXxf86vm-devel libXv-devel \
    libvdpau-devel yasm libopenssl-3-devel \
    libcurl-devel webkit2gtk3-devel \
    sqlite3-devel libavahi-devel

Build Process

1. Clone Repository

git clone https://github.com/andoma/movian.git
cd movian

2. Configure Build

Basic Configuration

./configure

Configuration Options

# Release build (optimized)
./configure --release

# Debug build with symbols
./configure --optlevel=g --enable-bughunt

# Disable optional features
./configure --disable-webkit --disable-vdpau

# Custom installation prefix
./configure --prefix=/opt/movian

# Specify compiler
./configure --cc=gcc-9 --cxx=g++-9

3. Compile

# Use all CPU cores
make -j$(nproc)

# Or specify number of jobs
make -j4

# Verbose output for debugging
make V=1

4. Install (Optional)

# System-wide installation (requires root)
sudo make install

# Or run from build directory
./build.linux/movian

Configuration Options

Common Configure Flags

Flag Description Default
--release Optimized release build Debug build
--prefix=PATH Installation prefix /usr/local
--disable-webkit Disable WebKit HTML rendering Enabled
--disable-vdpau Disable VDPAU video acceleration Enabled
--disable-pulse Disable PulseAudio support Enabled
--glw-frontend=none Disable GLW UI (headless) X11 frontend
--enable-bughunt Enable debugging features Disabled

Advanced Options

# Cross-compilation
./configure --arch=arm --cpu=cortex-a7

# Static linking
./configure --enable-static --disable-shared

# Custom library paths
./configure --extra-cflags="-I/opt/include" --extra-ldflags="-L/opt/lib"

# Sanitizers for debugging
./configure --extra-cflags="-fsanitize=address" --extra-ldflags="-fsanitize=address"

Troubleshooting

Common Build Issues

Missing Dependencies

# Error: Package 'freetype2' not found
sudo apt-get install libfreetype6-dev

# Error: Package 'fontconfig' not found
sudo apt-get install libfontconfig1-dev

# Error: GL/gl.h: No such file or directory
sudo apt-get install libgl1-mesa-dev

# Error: X11/Xlib.h: No such file or directory
sudo apt-get install libx11-dev libxext-dev

Compiler Issues

# Error: C99 support required
# Use newer GCC version
sudo apt-get install gcc-8 g++-8
./configure --cc=gcc-8 --cxx=g++-8

# Error: undefined reference to symbol 'pthread_create'
# Add pthread linking
./configure --extra-ldflags="-lpthread"

Library Version Issues

# Error: WebKit version too old
# Disable WebKit if not needed
./configure --disable-webkit

# Error: OpenSSL version incompatible
# Use system OpenSSL or disable
./configure --disable-openssl

Runtime Issues

Missing Libraries

# Check library dependencies
ldd build.linux/movian

# Error: libssl.so.1.1: cannot open shared object file
sudo apt-get install libssl1.1

# Error: libpulse.so.0: cannot open shared object file
sudo apt-get install libpulse0

Permission Issues

# Error: Permission denied accessing audio device
sudo usermod -a -G audio $USER
# Log out and back in

# Error: Permission denied accessing video device
sudo usermod -a -G video $USER

Display Issues

# Error: Cannot connect to X server
export DISPLAY=:0

# Error: GLX extension not available
# Install proper graphics drivers
sudo apt-get install mesa-utils
glxinfo | grep "direct rendering"

Development Environment Setup

IDE Configuration

Visual Studio Code

# Install C/C++ extension
code --install-extension ms-vscode.cpptools

# Create .vscode/c_cpp_properties.json
mkdir -p .vscode
cat > .vscode/c_cpp_properties.json << 'EOF'
{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "/usr/include/**"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c99",
            "cppStandard": "c++11",
            "intelliSenseMode": "linux-gcc-x64"
        }
    ],
    "version": 4
}
EOF

CLion

  1. Open project as "Makefile Application"
  2. Set build directory to build.linux
  3. Configure toolchain in File → Settings → Build → Toolchains

Debugging Setup

GDB Configuration

# Build with debug symbols
./configure --optlevel=g --enable-bughunt
make -j$(nproc)

# Run with GDB
gdb ./build.linux/movian
(gdb) run
(gdb) bt  # backtrace on crash

Valgrind Memory Debugging

# Install Valgrind
sudo apt-get install valgrind

# Run with memory checking
valgrind --leak-check=full --show-leak-kinds=all ./build.linux/movian

AddressSanitizer

# Build with AddressSanitizer
./configure --extra-cflags="-fsanitize=address -fno-omit-frame-pointer" \
           --extra-ldflags="-fsanitize=address"
make -j$(nproc)

# Run normally - crashes will show detailed info
./build.linux/movian

Performance Optimization

Build Optimizations

# Maximum optimization
./configure --optlevel=3 --release

# Link-time optimization (GCC 4.9+)
./configure --extra-cflags="-flto" --extra-ldflags="-flto"

# Native CPU optimization
./configure --extra-cflags="-march=native -mtune=native"

Runtime Optimizations

# Set CPU governor to performance
echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

# Increase process priority
nice -n -10 ./build.linux/movian

# Use dedicated GPU (NVIDIA Optimus)
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia ./build.linux/movian

System Integration

Desktop Integration

Create Desktop Entry

# Create desktop file
mkdir -p ~/.local/share/applications
cat > ~/.local/share/applications/movian.desktop << 'EOF'
[Desktop Entry]
Name=Movian
Comment=Media Player
Exec=/usr/local/bin/movian
Icon=movian
Terminal=false
Type=Application
Categories=AudioVideo;Player;
MimeType=video/x-msvideo;video/mp4;video/x-matroska;
EOF

# Update desktop database
update-desktop-database ~/.local/share/applications

File Associations

# Associate vi[glw](../reference/glossary.md#glw-opengl-widget) files with Movian
xdg-mime default movian.desktop video/mp4
xdg-mime default movian.desktop video/x-matroska
xdg-mime default movian.desktop video/x-msvideo

Service Installation

Systemd Service (for headless operation)

# Create service file
sudo tee /etc/systemd/system/movian.service << 'EOF'
[Unit]
Description=Movian Media Player
After=network.target

[Service]
Type=simple
User=movian
Group=movian
ExecStart=/usr/local/bin/movian --headless
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF

# Create user and enable service
sudo useradd -r -s /bin/false movian
sudo systemctl enable movian
sudo systemctl start movian

Next Steps

After successful installation:

  1. Test Installation: Play a media file to verify everything works
  2. Explore Plugins: Check out the Plugin Development Guide
  3. Customize UI: Learn about UI Theming
  4. Join Community: Visit the Movian Forum for support

Source References: - configure.linux - Linux-specific build configuration - README.markdown - Original build instructions - support/configure.inc - Common configuration options

Accuracy Status: 🟢 Verified on Ubuntu 20.04, Fedora 34, Arch Linux
Last Updated: November 2025
Tested Platforms: Ubuntu 18.04+, Debian 10+, Fedora 32+, CentOS 8+, Arch Linux