Steps to reproduce: ```bash mkdir -p /tmp/originals curl -o /tmp/originals/mov_bbb.mp4 https://www.w3schools.com/html/mov_bbb.mp4 mkdir /tmp/links ln -s ../originals/mov_bbb.mp4 /tmp/links/test.mp4 cd /tmp showtime links/test.mp4 ``` Expected behavior: video plays normally Observed behavior: showtime fails with "Failed to pause" error ``` DEBUG: showtime:54 Starting org.gnome.Showtime v50.0 (release) DEBUG: showtime:55 Python version: 3.13.14 (main, Jun 10 2026, 18:10:12) [GCC 15.2.0] DEBUG: showtime:56 GStreamer version: 1.28.3.0 DEBUG: showtime:312 Playing video: file:///originals/mov_bbb.mp4 DEBUG: showtime:360 Video paused DEBUG: showtime:355 Video unpaused DEBUG: showtime:319 No previous play position ERROR: showtime:740 Failed to pause ``` The URI file:///originals/mov_bbb.mp4 is incorrect — the symlink target ../originals/mov_bbb.mp4 is being resolved relative to the current working directory (/tmp) instead of relative to the directory containing the symlink (/tmp/links), producing /originals/mov_bbb.mp4 instead of /tmp/originals/mov_bbb.mp4. Note: opening the same symlink from within its directory (cd /tmp/links && showtime test.mp4) works correctly: ``` DEBUG: showtime:54 Starting org.gnome.Showtime v50.0 (release) DEBUG: showtime:55 Python version: 3.13.14 (main, Jun 10 2026, 18:10:12) [GCC 15.2.0] DEBUG: showtime:56 GStreamer version: 1.28.3.0 DEBUG: showtime:312 Playing video: file:///tmp/originals/mov_bbb.mp4 DEBUG: showtime:360 Video paused DEBUG: showtime:355 Video unpaused DEBUG: showtime:319 No previous play position DEBUG: showtime:707 Seeked to 0 DEBUG: showtime:438 Resizing window… DEBUG: showtime:524 Resized window to 320x176 DEBUG: showtime:524 Resized window to 320x176 ``` The file manager (Nautilus) exhibits the same issue when opening video files via relative symlinks, as it invokes showtime with --gapplication-service using the user's home directory as working directory. Another note: `loupe` works correctly in this regard (replace the video with a picture on the steps above and `loupe` will display the image regardless of current working directory)
After investigating the root cause, I found that this bug was introduced by the fix for upstream issue #119 (https://gitlab.gnome.org/GNOME/showtime/-/work_items/119), implemented in commit d887f76 (https://gitlab.gnome.org/GNOME/showtime/-/commit/d887f76918d5599b6ac87760444b902531f63730). That commit replaced a simple gfile.get_uri() call with manual symlink resolution, which incorrectly resolves relative symlink targets against the process working directory instead of the directory containing the symlink. I tested reverting that commit locally (restoring uri = gfile.get_uri()), and the issue described in this report is gone — relative symlinks work correctly. It is likely that the original bug reported in #119 (not following symlinks) has since been fixed in a lower layer (GStreamer 1.28.3, GIO, or GLib), making the manual symlink resolution in Showtime both unnecessary and harmful. Suggested fix: revert commit d887f76 and verify that #119 is no longer reproducible on current versions of the stack.
There is already a bug reported upstream (https://gitlab.gnome.org/GNOME/showtime/-/work_items/212).