Use on a touchscreen - config & defaults
Opened this issue · 6 comments
Hi, cool app, thank you.
So... I have a new Linux touchscreen tablet with Phosh and have been desperately looking for a video player to use with it that works similarly to Netflix on Android, i.e. touchscreen-based.
Despite Gnome apps having a reputation for working well on touchscreens, most of their apps don't. Video apps are some of the worst, having tiny touch targets and oddly demanding a keyboard. So far Totem, Celluloid, even Livvy are almost unusable on a tablet.
You'll hopefully be glad to hear that your app is the best so far. First, it works, even on Wayland. Simple enough to stay out of the way, powerful enough to choose tracks, subtitles, speed, etc. Efficient, as written in C. So far, so good.
The one drawback, is that while using touch is possible, it is still a tad clumsy. A lot better than the unusable others, but I was hoping a few minor things could be refined.
My understanding of the current behavior:
-
Tap center toggles play/pause, mouse hover brings up OSD interface.
-
Double-click goes full screen
-
Triple tap on the sides, sometimes works to go backward, fast-forward. This is really hard to pull off, not sure of the details.
Some ideas/suggestions for a touchscreen profile:
-
Go full screen by default. Don't forget to hide clock and status bars. Same as tiny button in bottom right.
-
Hover can't work, bring up interface on first tap.
-
Screen divided into thirds, left skip back, center toggle play/pause, right skip forward. Show large translucent buttons icons in center of movie.
-
Bigger buttons everywhere, about double the current size would be good.
Would like the interface to come up on first tap, take a skip or toggle action immediately after that, and fade out a few seconds after last tap—consistently. Many players get confused here and forget to hide the interface for some reason.
Profile selection:
-
Take command-line parameter to start in touchscreen mode without fiddling. This allows a distribution to configure it as ready to go for a tablet.
-
Alternatively, Phosh has a Docked/Undocked mode, not sure how to hook into it.
Nice to haves:
- Swipe left/right to scrub, up/down for brightness.
Thanks for considering this.
Hover can't work, bring up interface on first tap.
Dunno which version you are using, but since 0.6, expected behaviour of first tap is to bring up interface and only while UI is visible it acts as toggle play/pause. Someone with PinePhone + Phosh was/is testing it and reported that it works. As usual Flatpak package from Flathub is recommended for latest stable version with all features.
Go full screen by default. Don't forget to hide clock and status bars. Same as tiny button in bottom right.
The state is restored, so if you close app while fullscreen, it will next time start in fullscreen.
Hi,
Ok, thanks I may not have everything 100% accurate as I wrote this from my laptop. I will continue to refine it.
which version ?
0.6.1 from Fedora
first tap is to bring up interface and only while UI is visible it acts as toggle play/pause
Ok, this is more intricate than I realized. If I have it play automatically (from file manager video click) there is no interface yet. I tap once and the interface comes up (good), but it also pauses (bad).
Later, after the interface hides itself, I have to tap it several times. First tap is ignored, second brings up UI, third tap ignored, fourth tap pauses. As you can see this is complicated. When I try to use it normally I have to keep tapping on the chance something may happen. Can only get it to skip by tapping furiously on one of the sides.
Also, it seems to remember if I've tapped previously, as if the events don't expire after a second or two? That is the issue contributing to everything else I think.
If in doubt on specs, Netflix on Android works well. There's another player named MX Player that I think is free and is well developed.
The state is restored, so if you close app while fullscreen, it will next time start in fullscreen.
Cool, good to know I can get that to work. However in "undocked mode" there are really no times when I want it windowed (not fullscreen), ie. clock/status bar showing.
What do you think?
If I have it play automatically (from file manager video click) there is no interface yet. I tap once and the interface comes up (good), but it also pauses (bad). Later, after the interface hides itself, I have to tap it several times. First tap is ignored, second brings up UI, third tap ignored, fourth tap pauses.
That is not intended bahavior. I wouldn't make it on purpose like that since it does not make sense. Since this was working fine during 0.6 development, either some newer version of GTK broke this or your screen works slightly differently that causes this.
Cool, good to know I can get that to work. However in "undocked mode" there are really no times when I want it windowed (not fullscreen), ie. clock/status bar showing.
If you want to keep fullscreen you can just always close it while fullscreen 😄. Alternatively, latest git (not yet in 0.6) has support and adds some command line arguments. So you can do clapper --fullscreen
or just clapper -f
to launch app fullscreen. Possibly create a shortcut for this to make it always launch like that regardless if it was closed when windowed.
Cool, thanks. How to debug this? Maybe something that prints tap events to a file or something.
Ok, I tried with a laptop and touchscreen. Didn't think of it at first because it has KDE and never really touched the screen. But clapper 0.6.1 installed quickly.
The result was similar, though not identical. Maybe because of the mouse pointer hanging around. Player seems to work for a bit, but then it gets confused after several taps.
But anyway, would like to be able to:
- Configure what the taps/clicks/swipes do, that would be helpful.
- Document the modes and regions where taps are different.
- Maybe deactivate the double/triple? tap events would help as well. Then there shouldn't be any memory of previous taps to affect current taps.
Don't know if there is a state machine in your program, or you are getting events from gtk or something? Those could be buggy as well, not sure.
Deps: gtk4-4.14.5-1
dnf deplist clapper-0.6.1-1.fc40.x86_64
Last metadata expiration check: 0:00:58 ago on 2024-09-27T17:12:36 PDT.
package: clapper-0.6.1-1.fc40.x86_64
dependency: hicolor-icon-theme
provider: hicolor-icon-theme-0.17-18.fc40.noarch
dependency: libadwaita-1.so.0()(64bit)
provider: libadwaita-1.5.3-1.fc40.x86_64
dependency: libadwaita-1.so.0(LIBADWAITA_1_0)(64bit)
provider: libadwaita-1.5.3-1.fc40.x86_64
dependency: libc.so.6(GLIBC_2.34)(64bit)
provider: glibc-2.39-22.fc40.x86_64
dependency: libgio-2.0.so.0()(64bit)
provider: glib2-2.80.3-1.fc40.x86_64
dependency: libglib-2.0.so.0()(64bit)
provider: glib2-2.80.3-1.fc40.x86_64
dependency: libgmodule-2.0.so.0()(64bit)
provider: glib2-2.80.3-1.fc40.x86_64
dependency: libgobject-2.0.so.0()(64bit)
provider: glib2-2.80.3-1.fc40.x86_64
dependency: libgraphene-1.0.so.0()(64bit)
provider: graphene-1.10.6-8.fc40.x86_64
dependency: libgstaudio-1.0.so.0()(64bit)
provider: gstreamer1-plugins-base-1.24.8-1.fc40.x86_64
dependency: libgstgl-1.0.so.0()(64bit)
provider: gstreamer1-plugins-base-1.24.8-1.fc40.x86_64
dependency: libgstpbutils-1.0.so.0()(64bit)
provider: gstreamer1-plugins-base-1.24.8-1.fc40.x86_64
dependency: libgstreamer-1.0.so.0()(64bit)
provider: gstreamer1-1.24.8-1.fc40.x86_64
dependency: libgsttag-1.0.so.0()(64bit)
provider: gstreamer1-plugins-base-1.24.8-1.fc40.x86_64
dependency: libgstvideo-1.0.so.0()(64bit)
provider: gstreamer1-plugins-base-1.24.8-1.fc40.x86_64
dependency: libgtk-4.so.1()(64bit)
provider: gtk4-4.14.5-1.fc40.x86_64
dependency: libm.so.6()(64bit)
provider: glibc-2.39-22.fc40.x86_64
dependency: libm.so.6(GLIBC_2.2.5)(64bit)
provider: glibc-2.39-22.fc40.x86_64
dependency: libmicrodns.so.1()(64bit)
provider: libmicrodns-0.2.0-9.fc40.x86_64
dependency: libpango-1.0.so.0()(64bit)
provider: pango-1.54.0-1.fc40.x86_64
dependency: libsoup-3.0.so.0()(64bit)
provider: libsoup3-3.4.4-3.fc40.x86_64
dependency: rtld(GNU_HASH)
provider: glibc-2.39-22.fc40.i686
provider: glibc-2.39-22.fc40.x86_64