20
850
Fork
You've already forked fuzzel
83

New Feature: Touchscreen scrolling #594

Merged
markstos merged 3 commits from markstos/fuzzel:issue-435-touchscreen-scrolling into master 2025年06月23日 18:18:05 +02:00
Collaborator
Copy link
No description provided.
New Feature: Touchscreen scrolling
Some checks are pending
ci/woodpecker/pr/woodpecker Pipeline is pending approval
builds.sr.ht/freebsd-x64 Job completed
5bdfa86956
Fixes: #435 
First-time contributor
Copy link

Thanks for the quick implementation! This already looks quite promising. The actual main thing that is still missing now is the ability to tap/select using touch.

Also I think the direction of the scrolling could better be reversed. I've attached two videos to show the behaviour on a touchscreen, the first is fuzzel with this patch, the second is wofi (which has touch behaviour I find quite intuitive).

Thanks for the quick implementation! This already looks quite promising. The actual main thing that is still missing now is the ability to tap/select using touch. Also I think the direction of the scrolling could better be reversed. I've attached two videos to show the behaviour on a touchscreen, the first is fuzzel with this patch, the second is wofi (which has touch behaviour I find quite intuitive).
8.5 MiB
7.6 MiB
fixup: Refine touchscreen support.
All checks were successful
builds.sr.ht/freebsd-x64 Job completed
ci/woodpecker/pr/woodpecker Pipeline was successful
715ac7c20f
- reverse scroll direction
- tap-to-select
- smoother scrolling.
Author
Collaborator
Copy link

Thanks for the feedback. I've pushed another commit with the following changes:

  1. Reversed scrolling direction
  2. Tap-to-select functionality
  3. Smoother scrolling with momentum
Thanks for the feedback. I've pushed another commit with the following changes: 1. Reversed scrolling direction 2. Tap-to-select functionality 3. Smoother scrolling with momentum
First-time contributor
Copy link

Awesome! This works great already!

Awesome! This works great already!
Author
Collaborator
Copy link

@proycon Great! Could you share another short video of Fuzzel's touchscreen support in action? And could I have permission to use it in a blog post featuring interesting uses of Fuzzel's new features?

I noticed you are using the default theme. We are working refreshing that over here: #561 The new theme will probably get a refined a bit further from what's there.

And could you say more why Fuzzel is of interest to replace bemenu in the SXMO project?

@proycon Great! Could you share another short video of Fuzzel's touchscreen support in action? And could I have permission to use it in a blog post featuring interesting uses of Fuzzel's new features? I noticed you are using the default theme. We are working refreshing that over here: https://codeberg.org/dnkl/fuzzel/issues/561 The new theme will probably get a refined a bit further from what's there. And could you say more why Fuzzel is of interest to replace bemenu in the SXMO project?
Author
Collaborator
Copy link

And @proycon Would the "disable prompt" feature being requested also help for building mobile touch-friend menus with Fuzzel?

430

And @proycon Would the "disable prompt" feature being requested also help for building mobile touch-friend menus with Fuzzel? [430](https://codeberg.org/dnkl/fuzzel/issues/430)
First-time contributor
Copy link

Great! Could you share another short video of Fuzzel's touchscreen
support in action? And could I have permission to use it in a blog post
featuring interesting uses of Fuzzel's new features?

Sure! I recorded a new video, this time on a phone and with the new theme. That might make for a nice demo video, feel free to use! (CC-BY) (tip: the new theme indeed looks a lot better, but contrast between selected row and background could be improved still I think)

And @proycon Would the "disable prompt" feature being requested also help for building mobile touch-friend menus with Fuzzel?

In most cases we do retain the prompt with input bar, but we probably also have some edge-cases where it would be nice not to have one.

And could you say more why Fuzzel is of interest to replace bemenu in
the SXMO project?

Bemenu's nice (also the fact that is has different backends) but its scrolling behaviour (paging) is sub-optimal. Wofi's scrolling behaviour is the best but it relies on all of gtk whereas we like leaner solutions generally. Wofi's maintenance status might > Great! Could you share another short video of Fuzzel's touchscreen

support in action? And could I have permission to use it in a blog post
featuring interesting uses of Fuzzel's new features?

Sure! I recorded a new video, this time on a phone and with the new theme. That might make for a nice demo video, feel free to use! (CC-BY) (tip: the new theme indeed looks a lot better, but contrast between selected row and background could be improved still I think)

And @proycon Would the "disable prompt" feature being requested also help for building mobile touch-friend menus with Fuzzel?

In most cases we do retain the prompt with input text, but we probably also have some edge-cases where it would be nice not to have one.

And could you say more why Fuzzel is of interest to replace bemenu in
the SXMO project?

Bemenu's nice (also the fact that is has different backends) but its scrolling behaviour (paging) is sub-optimal. Wofi's scrolling behaviour is the best but it relies on all of gtk whereas we like leaner solutions generally. Wofi's maintenance status might also become an issue. Fuzzel seemed a leaner alternative so peeked my interest but without touch support it wasn't an option yet. Now it is! Thanks! :)

Once fuzzel with this touch support is released, I'll work on a patch for sxmo. Users themselves can then choose what menu they prefer, it's all fairly easily exchangeable as long as some dmenu-like conventions are adhered to.

become an issue. Fuzzel seemed a leaner alternative so peeked my interest.

Once fuzzel with this touch support is released, I'll work on a patch for sxmo. Users themselves can then choose what menu they prefer, it's all fairly easily exchangeable as long as some dmenu-like conventions are adhered to.

> Great! Could you share another short video of Fuzzel's touchscreen > support in action? And could I have permission to use it in a blog post > featuring interesting uses of Fuzzel's new features? Sure! I recorded a new video, this time on a phone and with the new theme. That might make for a nice demo video, feel free to use! (CC-BY) (tip: the new theme indeed looks a lot better, but contrast between selected row and background could be improved still I think) > And @proycon Would the "disable prompt" feature being requested also help for building mobile touch-friend menus with Fuzzel? In most cases we do retain the prompt with input bar, but we probably also have some edge-cases where it would be nice not to have one. > And could you say more why Fuzzel is of interest to replace bemenu in > the SXMO project? Bemenu's nice (also the fact that is has different backends) but its scrolling behaviour (paging) is sub-optimal. Wofi's scrolling behaviour is the best but it relies on all of gtk whereas we like leaner solutions generally. Wofi's maintenance status might > Great! Could you share another short video of Fuzzel's touchscreen > support in action? And could I have permission to use it in a blog post > featuring interesting uses of Fuzzel's new features? Sure! I recorded a new video, this time on a phone and with the new theme. That might make for a nice demo video, feel free to use! (CC-BY) (tip: the new theme indeed looks a lot better, but contrast between selected row and background could be improved still I think) > And @proycon Would the "disable prompt" feature being requested also help for building mobile touch-friend menus with Fuzzel? In most cases we do retain the prompt with input text, but we probably also have some edge-cases where it would be nice not to have one. > And could you say more why Fuzzel is of interest to replace bemenu in > the SXMO project? Bemenu's nice (also the fact that is has different backends) but its scrolling behaviour (paging) is sub-optimal. Wofi's scrolling behaviour is the best but it relies on all of gtk whereas we like leaner solutions generally. Wofi's maintenance status might also become an issue. Fuzzel seemed a leaner alternative so peeked my interest but without touch support it wasn't an option yet. Now it is! Thanks! :) Once fuzzel with this touch support is released, I'll work on a patch for sxmo. Users themselves can then choose what menu they prefer, it's all fairly easily exchangeable as long as some dmenu-like conventions are adhered to. become an issue. Fuzzel seemed a leaner alternative so peeked my interest. Once fuzzel with this touch support is released, I'll work on a patch for sxmo. Users themselves can then choose what menu they prefer, it's all fairly easily exchangeable as long as some dmenu-like conventions are adhered to.
Author
Collaborator
Copy link

@proycon I went ahead and implementing the --hide-prompt option, which I think will also be a good fit for touchscreens. You can see a screenshot and try it here. That branch also includes the touchscreen commits so you can test them together. #596

@proycon I went ahead and implementing the --hide-prompt option, which I think will also be a good fit for touchscreens. You can see a screenshot and try it here. That branch also includes the touchscreen commits so you can test them together. #596
dnkl left a comment
Copy link

Without being able to test... this looks good to me. I assume it's based on foot's implementation?

Without being able to test... this looks good to me. I assume it's based on foot's implementation?
wayland.c Outdated
@ -1178,0 +1262,4 @@
if (distance > 10.0) {
seat->touch.active_touch.is_tap = false;
}
Owner
Copy link

I don't have any touch capable hardware, so can't test how this "feels", but in case we don't set is_tap to false, we still continue and potentially scroll. Is that intended?

I don't have any touch capable hardware, so can't test how this "feels", but in case we **don't** set `is_tap` to `false`, we still continue and potentially scroll. Is that intended?
Author
Collaborator
Copy link

Yes, that's intended. Here's what happens:

  1. Small movements (≤10 pixels): The gesture remains classified as a potential "tap" but the user can still scroll through the list with small finger movements
  2. Large movements (>10 pixels): The gesture is disqualified as a tap, but scrolling continues normally.

This supports making small adjustments to scroll through a list while still being able to tap items, versus making larger swipes that clearly indicate scrolling intent.

Yes, that's intended. Here's what happens: 1. **Small movements (≤10 pixels):** The gesture remains classified as a potential "tap" but the user can still scroll through the list with small finger movements 2. **Large movements (>10 pixels):** The gesture is disqualified as a tap, but scrolling continues normally. This supports making small adjustments to scroll through a list while still being able to tap items, versus making larger swipes that clearly indicate scrolling intent.
markstos marked this conversation as resolved
Owner
Copy link

Oh, we'd also want a changelog entry!

Oh, we'd also want a changelog entry!
Author
Collaborator
Copy link

assume it's based on foot's implementation?

I used Warp terminal, which in turn used Claude 4, which in turn could have quite possibly referenced foot's implementation.

> assume it's based on foot's implementation? I used Warp terminal, which in turn used Claude 4, which in turn could have quite possibly referenced foot's implementation.
Author
Collaborator
Copy link

I added a code comment about the block @dnkl asked about, mentioned touchscreen support in the README along with mouse support and updated the Changelog.

I added a code comment about the block @dnkl asked about, mentioned touchscreen support in the README along with mouse support and updated the Changelog.
markstos force-pushed issue-435-touchscreen-scrolling from d4b202f9a7
Some checks are pending
ci/woodpecker/pr/woodpecker Pipeline is pending approval
builds.sr.ht/freebsd-x64 Job completed
to 10191b8b47
Some checks are pending
ci/woodpecker/pr/woodpecker Pipeline is pending approval
ci/woodpecker/pull_request_closed/woodpecker Pipeline is pending approval
builds.sr.ht/freebsd-x64 Job completed
ci/woodpecker/push/woodpecker Pipeline was successful
2025年06月23日 18:17:07 +02:00
Compare
markstos deleted branch issue-435-touchscreen-scrolling 2025年06月23日 18:18:07 +02:00
First-time contributor
Copy link

Oh wow! I recently learned about fuzzel and it looks interesting. I wanted to get some experience with it first before potentially asking whether it could possibly be used on mobile devices ... thus touchscreen support.
To find you already have that implemented \o/

Oh wow! I recently learned about fuzzel and it looks interesting. I wanted to get some experience with it first before potentially asking whether it could possibly be used on mobile devices ... thus touchscreen support. To find you already have that implemented \o/
Author
Collaborator
Copy link

@diederik There's a video linked in the issue above demonstrating Fuzzel being used on a mobile device.

@diederik There's a video linked in the issue above demonstrating Fuzzel being used on a mobile device.
First-time contributor
Copy link

@markstos I saw it. Initial impression of @proycon's video of wofi looked smoother though as the 'feedback' seemed more direct with the finger movements.
But I guess there's no better way to experience it then trying it out myself ;-)

May take a bit though as I've got a lot to learn; I haven't used/or configured sway and associated tools (like fuzzel) much.
Mostly been working on getting hardware to function (better) thus far. (relevant for touch: PineTab2, but ultimate goal is the PineNote)

First challenge: how to invoke it (without keyboard)

@markstos I saw it. Initial impression of @proycon's video of wofi looked smoother though as the 'feedback' seemed more direct with the finger movements. But I guess there's no better way to experience it then trying it out myself ;-) May take a bit though as I've got a lot to learn; I haven't used/or configured sway and associated tools (like fuzzel) much. Mostly been working on getting hardware to function (better) thus far. (relevant for touch: PineTab2, but ultimate goal is the PineNote) First challenge: how to invoke it (without keyboard)
First-time contributor
Copy link

Currently reading through your blog :-D (and installing fuzzel everywhere)

Currently reading through your blog :-D (and installing ``fuzzel`` everywhere)
First-time contributor
Copy link

Thanks for the touch screen support.

It would be great if the scrolling action would conform to more typical touch screen behavior by moving the scroll bar and not the selected item.

In other apps, swiping up and down just scrolls the list. It might also select, but without activating.

In a touch menu, I'd probably change the selected item color to transparent, since I don't think I'm ever going to use up and down arrows to select items.

Also, touch outside the window should close the window since there's no close button and the esc key might not be available.

Thanks! Been using wofi, but I don't love it. fuzzel could be first class in touchscreen.

Thanks for the touch screen support. It would be great if the scrolling action would conform to more typical touch screen behavior by moving the scroll bar and not the selected item. In other apps, swiping up and down just scrolls the list. It might also select, but without activating. In a touch menu, I'd probably change the selected item color to transparent, since I don't think I'm ever going to use up and down arrows to select items. Also, touch outside the window should close the window since there's no close button and the esc key might not be available. Thanks! Been using wofi, but I don't love it. fuzzel could be first class in touchscreen.
First-time contributor
Copy link

Dunno anything about implementations, but regarding foot above.

Foot does scroll on swipe up and down, bit only in a fixed way while holding contact.

I use ptyxis which implements the flick motion like on an android phone or in gtk. fuzzel currently does move on a flick, but doesn't continue to travel while slowing the scroll speed.

And a third request to mimic typical behavior: scrolling needs to stop at the top and bottom and not rollover.

Thanks!

Dunno anything about implementations, but regarding foot above. Foot does scroll on swipe up and down, bit only in a fixed way while holding contact. I use ptyxis which implements the flick motion like on an android phone or in gtk. fuzzel currently does move on a flick, but doesn't continue to travel while slowing the scroll speed. And a third request to mimic typical behavior: scrolling needs to stop at the top and bottom and not rollover. Thanks!
Author
Collaborator
Copy link

@brianmercer You are commenting on a closed pull request. If you want more touch features, please open a new issue to discuss each change request.

@brianmercer You are commenting on a closed pull request. If you want more touch features, please open a new issue to discuss each change request.
Sign in to join this conversation.
No reviewers
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
5 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
dnkl/fuzzel!594
Reference in a new issue
dnkl/fuzzel
No description provided.
Delete branch "markstos/fuzzel:issue-435-touchscreen-scrolling"

Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?