Modern MKV extraction for Linux, inspired by the classic gMKVExtractGUI project.
This directory is a standalone Linux-only edition of gMKVExtractGUI. It contains the Avalonia desktop application, the cross-platform gMKVToolNix library it uses, and Linux package definitions. It does not contain the Windows Forms application or Windows build scripts.
The application bundles the .NET runtime in its packages. MKVToolNix and the host's Avalonia/X11 system libraries are installed as package dependencies.
Build each package on its target Linux distribution. All builds target x86_64 Linux.
| Package | Build command | Local output path | Download |
|---|---|---|---|
Debian/Ubuntu (.deb; install dpkg-deb and .NET 10 SDK) |
bash packaging/debian/build-deb.sh |
artifacts/debian/gmkvextractgui_1.0.3_amd64.deb |
Download .deb |
Fedora (.rpm; install rpm-build and .NET 10 SDK) |
bash packaging/fedora/build-rpm.sh |
artifacts/fedora/gmkvextractgui-1.0.3-1.x86_64.rpm |
Download .rpm |
Arch Linux (.pkg.tar.gz; install base-devel and dotnet-sdk) |
bash packaging/arch/build-arch.sh |
artifacts/arch/gmkvextractgui-1.0.3-1-x86_64.pkg.tar.gz |
Download Arch package |
AppImage (install appimagetool and .NET 10 SDK) |
bash packaging/appimage/build-appimage.sh |
artifacts/appimage/gMKVExtractGUI-x86_64.AppImage |
Download AppImage |
| Flatpak (install Flatpak Builder, curl, and Freedesktop 26.08 SDK/runtime) | bash packaging/flatpak/build-flatpak.sh |
artifacts/flatpak/io.github.smapgit.gmkvextractgui.flatpak |
Download Flatpak |
The build scripts write packages to the local paths shown above. The artifacts/ directory is gitignored, so attach these generated files to a GitHub Release for the download links to work. Debian, Fedora, and Arch builds default to version 1.0.3; set VERSION to override it. All package filenames in the Release assets must match the names shown above.
The Flatpak bundles MKVToolNix command-line tools, so the host does not need MKVToolNix installed.
The Flatpak grants read/write access to your home directory and GVfs mounts under /run/user/<uid>/gvfs. Connect to the network share in your file manager before starting the app, then use its mounted filesystem path rather than an smb:// URL. The share's own permissions must also allow writing to the extraction destination.
For an already-installed Flatpak, enable GVfs access and restart the app:
flatpak override --user --filesystem=xdg-run/gvfs io.github.smapgit.gmkvextractgui
For shares mounted elsewhere (for example, under /mnt), grant access only to the required mount and restart the app:
flatpak override --user --filesystem=/mnt/media io.github.smapgit.gmkvextractgui
The selected theme, Use input folder setting, and saved filename patterns/options are stored in the app's user configuration and restored on the next launch.
Build the Debian package, then run bash packaging/docker/build-docker.sh to create the local gmkvextractgui:1.0.3 image with TigerVNC and a browser WebUI on port 6080. VNC authentication is optional; no-password access is unsafe on untrusted networks. The Use input folder option is enabled by default and requires a read/write media mount. To publish the image to GitHub Container Registry, run gh workflow run publish-docker.yml --repo SMAP-git/gmkvextractgui -f version=1.0.3.
For Unraid, use the container template and see the Docker guide.
After the workflow succeeds, pull ghcr.io/smap-git/gmkvextractgui:1.0.3. See packaging/docker/README.md for X11 display, file-mount, and container registry instructions.
From this directory, run:
dotnet publish src/gMKVExtractGUI.Linux/gMKVExtractGUI.Linux.csproj \
--configuration Release --runtime linux-x64 --self-contained true
gMKVExtractGUI for Linux was originally inspired by the excellent gMKVExtractGUI project by Gpower2.
While the original application served as the blueprint for many of the features implemented here, this project is not simply a direct port.
The original gMKVExtractGUI is a Windows application built on .NET Framework and WinForms, whereas this project was developed specifically for Linux using modern .NET and Avalonia UI.
The goal has been to bring as much of the functionality and workflow of the original application to Linux users as possible, while taking advantage of a modern cross-platform technology stack and implementing Linux-focused behaviour where appropriate.
Huge credit goes to the original project for defining many of the workflows and features that inspired this implementation.
