Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Install the development dependencies:
```sh
sudo dnf install ImageMagick cargo desktop-file-utils gcc git glycin-devel \
glycin-loaders gstreamer1-devel gstreamer1-plugin-gtk4 \
gstreamer1-plugins-base gstreamer1-plugins-good gtk4-devel rust xdg-utils
gstreamer1-plugins-base gstreamer1-plugins-good gtk4-devel rust wayland-devel xdg-utils
```

Clone and run the project:
Expand Down
150 changes: 137 additions & 13 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,14 @@ repository = "https://github.com/TheRealShek/open-mpv"

[dependencies]
glycin = { version = "3.1.0", features = ["gdk4", "async-io"] }
gdk4-wayland = { version = "0.11.5", features = ["wayland_crate"] }
gstreamer = "0.25.3"
gtk4 = { version = "0.11.4", features = ["gio_v2_80", "v4_18", "v4_22"] }
gufo-common = "1.1.0"
rustix = { version = "1.1.4", features = ["fs"] }
tempfile = "3.27.0"
wayland-client = "0.31.15"
wayland-protocols = { version = "0.32.13", features = ["client", "unstable"] }

[profile.release]
lto = "thin"
Expand Down
11 changes: 7 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,12 @@ when you choose to save a rotation, move them to trash or restore them.
## Install

Currently supported on **Fedora 44 Workstation, GNOME, Wayland and x86-64**.
For Arch Linux / Omarchy on Hyprland, see the experimental
For Arch Linux and Omarchy on Hyprland, use the experimental
[native Arch package instructions](docs/DISTRIBUTION.md#arch-linux-and-omarchy).
Other environments have not completed the full support checklist.

### Fedora

Previously installed from source? Follow the [source-to-RPM migration guide](docs/DISTRIBUTION.md#migrate-a-source-installation-to-rpm) first so an old binary or desktop launcher does not hide the RPM.

Install the latest release:
Expand Down Expand Up @@ -148,9 +150,10 @@ keyboard shortcuts, follow the [configuration guide](docs/CONFIGURATION.md).

## Having trouble?

If images do not open, check that `glycin-loaders` is installed. If a video
will not play, you may need additional codecs. The optional
`gstreamer1-plugin-libav` package adds software decoding for more video formats.
If images do not open, check that Fedora's `glycin-loaders` or Arch's `glycin`
package is installed. If a video will not play, you may need additional codecs.
Fedora's `gstreamer1-plugin-libav` and Arch's `gst-libav` add software decoding
for more video formats.

The [troubleshooting guide](docs/TROUBLESHOOTING.md) explains how to check
video support, understand configuration failures, and capture crash backtraces. If you opened the app from
Expand Down
22 changes: 21 additions & 1 deletion docs/DISTRIBUTION.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ the local transaction and rollback behavior; GitHub hosts the RPM.
- The packaged platform today is Fedora 44 Workstation on x86-64 with GNOME
and Wayland.
- The code currently requires GTK 4.22, glycin and its matching loader
protocol, GStreamer, and `gtk4paintablesink`.
protocol, GStreamer, `gtk4paintablesink`, and Wayland client development
files for native video idle inhibition.
- A package must satisfy [REQUIREMENTS.md](REQUIREMENTS.md), including glycin
isolation, the video decoding path, file operations, desktop integration and
the performance budgets.
Expand Down Expand Up @@ -125,6 +126,9 @@ for software decoding. Arch's `glycin` includes the image loaders; `libheif`
supplies HEIF/AVIF support. Additional codecs and hardware decoders are
available through `gst-plugins-bad` and `gst-plugins-ugly`. Hardware acceleration
must be verified on the actual GPU; software playback is the fallback.
The native Wayland client library is needed to inhibit compositor idle while
video plays. GTK's session inhibit remains the fallback if the compositor does
not expose the Wayland idle-inhibit protocol.

Omarchy normally supplies `xdg-desktop-portal`, `xdg-desktop-portal-hyprland`
and `xdg-desktop-portal-gtk`. Keep Hyprland's portal selection; GTK provides
Expand Down Expand Up @@ -155,6 +159,22 @@ portal availability alone does not prove that Hyprland's idle behavior works.
Verify install, reinstall/update and removal, software decoding and the actual
hardware path, and measure the requirements' startup and PSS limits.

After building this checkout, run the targeted idle check in a Hyprland session
with no other open-mpv instance. It uses `ffmpeg`, `hyprctl` and `wtype`, creates
a temporary local video and isolated `loop=no` configuration, and checks that
playback inhibits idle while pause, natural end and exit release it. Seeking
after natural end keeps the video paused until playback is requested again,
and looping playback stays inhibited:

```sh
python3 packaging/arch/check-idle.py target/release/open-mpv
```

The current local package recipe still builds the published 0.1.4 tag. These
source changes enter that recipe when the next release is tagged and its version
and checksum are updated. A checkout build and an installed 0.1.4 package are
different binaries; close the installed instance before testing the checkout.

On 20 September 2026, the patched 0.1.4 package passed all 192 default release
tests on Omarchy x86-64 (GTK 4.22.4, Glycin 2.1.5 and GStreamer 1.28.6).
Installation, same-version reinstallation, removal, desktop launch, native
Expand Down
4 changes: 4 additions & 0 deletions docs/REQUIREMENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -223,6 +223,10 @@ new product decisions rather than incidental implementation.
plain language.
- **FR-10.9** Frame stepping, playlists, network playback, subtitle downloading and video
editing are outside the current direction.
- **FR-10.10** Playing video inhibits compositor idle blanking and locking where
the desktop supports it. Pause, natural end, navigation away, playback failure
and close release that inhibition. A session API reporting success is
insufficient if the compositor does not honor the request.

### FR-11 — Quick Markup

Expand Down
Loading