Releases: Rafostar/clapper
0.6.1
A bug-fix release in 0.6 series.
- Updated metainfo summary and colors (thanks @bertob)
- Complemented metainfo categories (thanks @1Maxnet1)
- Fixed wrong
MARKER_NO_END
value in Clapper API GIR (thanks to @jangernert for noticing) - Fixed
GtkWindowControls
style when used withinClapperGtkVideo
as OSD (noticed in NewsFlash, thanks @jangernert) - Fixed crashes after GL context is destroyed (noticed in Tuba Clapper-enabled builds, thanks @GeopJr)
- Fixed missing signals disconnections after dispose of
ClapperGtkVideo
(also noticed in Tuba, thanks @GeopJr) - Fixed playback of media with missing plugins for metadata
- Few small documentation fixes
- Fixed problems building
clapper-gtk
documentation on a clean system - Fixed info window not closing when pressing "Esc" key
- Fixed opened file content type detection (used for determining subtitle files)
- Few fixes and additional checks for meson build script
- Ensured private types before template init in
ClapperGtk
API - Enabled audio pitch correction for non-normal speed in
ClapperGtkVideo
(use "scaletempo" audio filter by default) - Fixed invisible status message in
ClapperGtkVideo
when used in light theme apps - Made transitions time in
ClapperGtkBillboard
widget a tad faster - Added Occitan translation (thanks @Mejans)
- Updated translations
Also while not 0.6.1 only, but happened after 0.6.0 release, so worth mentioning: There are now Rust
language bindings available for Clapper 0.6.X APIs. For anyone interested, repo can be found here (credit to @jangernert for making them).
0.6.0
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
Info for package maintainers: Clapper no longer uses GJS
, please remove it from package dependencies and descriptions. The "OpenGL rendering" part should now also be removed. In overall please try to make description more universal. From this point onward stable versions will use even numbers in minor version place and odd numbers for development releases. Sorry for all inconveniences.
0.5.2
0.5.1
0.5.0
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
0.4.1
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
0.4.0
Changes:
- Now uses libadwaita
- New and adaptive preferences window
- Improved open URI dialog
- Few small tweaks to fullscreen UI design
- Show current video and audio decoders in popovers (easy way to check if HW accel is used)
- Enabled NVDEC hardware acceleration by default (requires Nvidia proprietary drivers)
- Added option to use PipeWire for audio output (experimental)
- Added option to use playbin3 element (experimental)
- New PiP icon from icon development kit
- Improved performance on devices running OpenGL ES
- Translations support
- Various bug fixes
New keyboard shortcuts:
- Leave fullscreen with Escape key
- Toggle mute with Ctrl+M
More touchscreen gestures:
- Toggle playback with a long press
- Switch playlist items via double tap on screen side
New translations:
- Catalan
- Dutch
- German
- Italian
- Polish
0.3.0
Changes:
- Added MPRIS support
- Added repeat modes: single video, whole playlist and shuffle
- Support opening folders with media files
- Append playlist items by holding Ctrl while doing Drag and Drop
- Improved handling of keyboard shortcuts
- Added more keyboard shortcuts
- Added window that shows available keyboard shortcuts
- Show black screen by default after playback (make showing last frame optional instead)
- Added ability to export playlist to file
- Improve handling of changing displays with different resolutions
- Added support for EGL under x11 with GTK 4.3.1 or later
- Added missing symbolic app icon (thanks to @SeaDve)
- Some misc bug fixes and code cleanups
0.2.1
Player:
- Fix missing top left menu buttons on some system configurations
- Fix potential video sink deadlock
- Do not show mobile controls transition on launch
- Show tooltip with full playlist item text on hover
YouTube:
- Auto select best matching resolution for used monitor
- Added some YouTube related preferences
- Added support for live HLS videos
- Added support for non-adaptive live HLS streaming
0.2.0
New features:
- YouTube support - drag and drop videos from youtube or use open URI dialog to play them
- Added convenient ways of opening external subtitles:
- select and open both video+subs from file chooser/manager
- drop subtitles file on player window
- open subtitles from file chooser/manager while video plays to add them
- send their file path/uri to player via WebSocket message
Changes:
- Few GUI layout improvements
- Simplified video sink code
- Fixed missing Ctrl+O common keybinding
- Fixed error when playback finishes during controls reveal animation
- Fixed startup window size on Xorg
- Fixed top time not showing up on fullscreen startup
- Fixed missing file extensions in online URIs
- Fixed some error messages not being displayed