Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use on a touchscreen - config & defaults #490

Open
mixmastamyk opened this issue Sep 24, 2024 · 6 comments
Open

Use on a touchscreen - config & defaults #490

mixmastamyk opened this issue Sep 24, 2024 · 6 comments

Comments

@mixmastamyk
Copy link

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.

@Rafostar
Copy link
Owner

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.

@mixmastamyk
Copy link
Author

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?

@Rafostar
Copy link
Owner

Rafostar commented Sep 25, 2024

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.

@mixmastamyk
Copy link
Author

Cool, thanks. How to debug this? Maybe something that prints tap events to a file or something.

@mixmastamyk
Copy link
Author

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.

@mixmastamyk
Copy link
Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants