On startup the WebEngineView first shows the bundled qrc find-webclient
page and then navigates to the server web client. That cross-origin
navigation moves the view to a new renderer process, and a user script
registered on the view is not reliably delivered to it, so the first
load of the web client comes up without window.NativeShell. jellyfin-web
then falls back to its HTML video player: playback works, but the native
mpv player, MPRIS, and client settings are silently unavailable until
the page is reloaded.
Registering the script on the profile instead makes injection apply to
every load, including the first one. Verified on Linux (Qt 6.11.2,
Wayland): before the change window.jmpInfo was undefined on every cold
start until a reload; after it is present on the first load.
Homebrew replaced its `sdl2` formula with `sdl2-compat`, a compatibility
layer that provides the SDL2 API by `dlopen`-ing the real SDL3 library
at runtime. The macOS CI build (`build-macos.yml`) pulls this via `brew
install mpv`, so the app now links `libSDL2-2.0.0.dylib` which is
actually `sdl2-compat`, and every nightly ships it in
`Contents/Frameworks`.
SDL3 is not a linker dependency, so it never shows up in `otool -L`
output and the `CompleteBundleMac` fixup loop never copies it into the
app bundle. At runtime `sdl2-compat` looks for `libSDL3.dylib` relative
to its own loader path, cannot find it, prints "Failed loading SDL3
library." and aborts during dyld initialization, since the library is
missing. This regression appeared once Homebrew's SDL2 became the
`sdl2-compat` shim, so older nightly builds (built against genuine SDL2)
are unaffected.
This detects `sdl2-compat` inside the bundle (it is the only
`libSDL2-2.0.0.dylib` containing the `libSDL3.dylib` loader string) and
explicitly copies libSDL3 from the Homebrew prefix into
`Contents/Frameworks/libSDL3.dylib`, using the same `install-id`
convention as the other bundled dylibs so `codesign` and the existing
fixup steps keep working. If SDL3 cannot be found at install time a
warning is printed instead of failing silently.
Fixes#1225
Since [b3dbc4b], command() takes a QStringList instead of a
QVariantList. Replace the usage of QVariantList with QStringList for
each call of command(), and do not use a QVariantMap to build the
extraArgs, instead, we now need to build the option list as a string
separated by commas.
[b3dbc4b]: https://github.com/KDE/mpvqt/commit/b3dbc4b1f51121da81865ca051eaa8f8a63e3f15
* Rename variable 7ZIP to SEVENZIP
Currently this script fails, as %7ZIP% is interpreted as "ZIP", because %7 is treated as the 7th positional argument in bash scripts. Alternatively you could use !7ZIP! as this uses the already enabled DelayedExpansion.
* Update setup.bat to use delayed variable expansion
Observe demuxer-cache-state from mpv, extract seekable-ranges, and emit
them as a QVariantList signal. JavaScript connects to the signal and
stores the ranges for getBufferedRanges().
Live TV omits audioStreamIndex causing DefaultAudioStreamIndex to be undefined,
which previously mapped to -1 and disabled audio in the MPV backend. Fall back
to the first embedded audio track so Live TV plays with audio.
Displays a system tray icon when enabled. Closing the window (clicking the X or Alt+F4) hides the window.
The window can be restored by clicking the icon, or via its context menu. The application can be quit via the context menu or Ctrl+Q.
Default: Disabled
Closes#470
Three fixes for cross-distro compatibility:
- Keep libvdpau.so in the bundle. It's a dispatcher library, not a
GPU driver. The backend drivers in /usr/lib/vdpau/ are still excluded.
Without the dispatcher, the AppImage fails to start on distros where
libvdpau isn't installed by default (e.g. Ubuntu 24.04).
- Replace the QtWebEngineProcess bash wrapper with a statically-linked
C binary. The bash wrapper was crashing on Ubuntu because the host's
/bin/bash was loaded by the host's dynamic linker, which then picked
up the bundled Arch glibc via LD_LIBRARY_PATH — an ABI mismatch that
segfaults. A static binary has no shared library dependencies, so
LD_LIBRARY_PATH is irrelevant to it.
- Improve APPDIR derivation in the wrapper. Instead of relying solely
on the APPDIR environment variable (which may not be inherited by
subprocesses), derive it from the binary's own path via
/proc/self/exe.