Clapper Changelog

What's new in Clapper 0.6.0

Apr 23, 2024
  • In this release Clapper code was basically rewritten from scratch. Now split into two libraries and an application built on top of them. These are:
  • Clapper - a playback library
  • ClapperGtk - a GTK integration library
  • The aim of this was to have a much cleaner and easier to maintain code that better integrates with GTK toolkit while also being able to share it with other apps if/when I decide to make another application that needs to play video as part of it. Of course anyone else is free to use them in his/her own projects too as long as he/she comply with license terms (licensed under LGPL-2.1-or-later). Just please note that until version 1.0 they should be considered as an unstable API (some things may change without prior notice).
  • In new implementation of Clapper API, playback operates upon a media queue which implements GListModel interface, making it very easy to integrate with GTK4. All media items are refcounted items and Clapper API automatically takes care of serializing events/signal from GStreamer into main application thread making it compatible as-is with GTK toolkit. It also integrates GstDiscoverer API, so you will see actual media titles whenever possible once enqueued. Additionally it exposes common features that can be easily added to the implementation like MPRIS without need of implementing all that on the app side.
  • As for ClapperGtk - it extends what main Clapper API does into the world of GTK widgets. The main concept here is to provide a premade widgets that can be simply added as overlays on top of the main ClapperGtkVideo widget. Once that is done, they automatically control playback without need to implement all their logic on the app side. For convenience, the video widget takes care of automatically revealing them when interacting with the player and hiding later.
  • Both libraries support GObject Introspection bindings. A simple application example that was done for testing purposes can be found here.
  • During this rewrite, all JavaScript code was dropped and we no longer use GJS for UI logic. For consistency of managing monorepo, everything was redone in pure C.
  • Most significant changes to the Clapper application itself include:
  • Brand new, simplified and consistent UI
  • Player now operates on playback queue model
  • Multiple queue progression modes to choose from (consecutive, repeat item, carousel, shuffle)
  • New media info window (shows media information and GStreamer elements used to play it)
  • More dialogs and windows use libadwaita
  • Multiple new status/info overlays showing what is going and other messages
  • Added video buffering animation
  • Clapper will now inform users about missing GStreamer plugins needed for playback
  • Video chapters now appear throughout the seek bar on hover and while dragging slider
  • Vastly expanded MPRIS implementation
  • Integrated media discovery (see titles of queued items instead of URIs)
  • Expanded WebSocket server functionality (for remote playback control)
  • Increased maximum volume amplification level to 200%
  • Added some new keyboard shortcuts
  • In addition to volume, now also speed and queue progression mode are restored on launch
  • Fixed keyboard shortcuts not being reversed (e.g. seek) in RTL languages
  • Toggle play moved to left mouse button, right one now opens context menu (which was previously hard to access)
  • Many bug fixes and QoL improvements

New in Clapper 0.5.2 (Jun 27, 2022)

  • Fixes:
  • Fix time labels display on RTL languages
  • Improved GL/GLES context automatic selection
  • New translations:
  • Hebrew

New in Clapper 0.5.1 (May 29, 2022)

  • A quick hotfix release. Fixes problems with new video sink on displays with non-100% scaling applied.
  • See 0.5.0 version release notes for full recent changelog.

New in Clapper 0.5.0 (May 29, 2022)

  • This is the first release (out of probably 2) that aims mainly at reworking app internals.
  • Here is what got changed:
  • Clapper now includes an all new and improved GStreamer video sink. With it, we are moving away from GLArea into using GdkPaintable. This already gives us slight performance improvement in some cases and opens new possibilities to improve it further at a later time. New sink now also handles overlaying and displaying subtitles on the GTK side of things (as a separate GdkTextures instead of drawing them into framebuffer). Old, now called "legacy" sink is still included. If there are any problems with the new one, you can set CLAPPER_USE_LEGACY_SINK=1 env to use the old one.
  • Also worth mentioning, is that new plugin (consisting of clappersink element) is installed like any other GStreamer plugin, thus it can also be used outside of Clapper or with gst-launch-1.0/gst-play-1.0 app for testing.
  • Networking was ported into libsoup3. The built-in, unfinished web application was removed. All WebSocket functionality that web application used to talk with the player remains intact. I will likely do an improved web interface at a later point in time, separately from the player.
  • Previously Clapper included built-in support for YouTube web service for playing videos within the player. The code doing that was ugly and broken for quite a while, so it was removed. From this point forward we will leave handling such "extra" features to GStreamer plugins. To compensate, Flatpak version of the app includes another GStreamer plugin that handles not only YT, but also few other popular websites. An older version was already included there for some time, now its gonna get updated to a newer version that also uses libsoup3.
  • Additionally, app now supports D-Bus launching (DBusActivatable).
  • Some other misc fixes and few small UI changes were also done.
  • New translations:
  • Arabic
  • Basque
  • French
  • Japanese
  • Swedish
  • Turkish

New in Clapper 0.4.1 (Mar 9, 2022)

  • Fixes:
  • Compatibility with more recent libadwaita versions
  • Toggle mute with M button alone
  • Allow handling YouTube with external GStreamer plugins
  • Fix catching errors when reading clipboard
  • Fix missing translator-credits
  • Fix missing gio-unix-2.0 dep
  • Fix playback pausing when entering fullscreen with touchscreen
  • Fix GST_PLUGIN_FEATURE_RANK env usage
  • Fix video/audio decoder change detection
  • Merge global video tags instead replacing them
  • Few other misc bug fixes
  • New translations:
  • Chinese Simplified
  • Czech
  • Hungarian
  • Portuguese
  • Portuguese, Brazilian
  • Russian
  • Spanish