Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

touchpad_scroll_speed is ignored for touchpads (get_scroll_speed checks for TABLET_PAD)

Open Beginner friendly
#3,148 1 comment 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
86/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
cpp

Research direction

Start in src/core/seat/pointing-device.cpp at wf::pointing_device_t::get_scroll_speed() and its caller, wf::pointer_t::handle_pointer_axis(). Check the device-type and finger-source handling described in the issue, then verify that touchpad_scroll_speed affects two-finger scrolling while mouse_scroll_speed continues to affect wheel scrolling.

Written by the indexing model from the issue text.

Description

input/touchpad_scroll_speed has no effect on touchpad (two-finger) scrolling.

Version: Wayfire 0.11.0 (Arch wayfire 0.11.0-1), and the same code is on master.

Cause: wf::pointing_device_t::get_scroll_speed() in src/core/seat/pointing-device.cpp:

double wf::pointing_device_t::get_scroll_speed(wlr_input_device *dev, bool touchpad)
{
    if ((touchpad && (dev->type != WLR_INPUT_DEVICE_TABLET_PAD)) ||
        (!touchpad && (dev->type != WLR_INPUT_DEVICE_POINTER)))
    {
        return 1.0;
    }

    return touchpad ? touchpad_scroll_speed : mouse_scroll_speed;
}

It's called from wf::pointer_t::handle_pointer_axis() with touchpad = (ev->source == WL_POINTER_AXIS_SOURCE_FINGER). Finger scrolling from a touchpad arrives as a wlr_pointer_axis_event from a device of type WLR_INPUT_DEVICE_POINTER, never WLR_INPUT_DEVICE_TABLET_PAD, so the first condition is always true for touchpads and the function returns 1.0. touchpad_scroll_speed is only ever applied to tablet pads, which don't emit pointer axis events.

Repro: set touchpad_scroll_speed = 0.1 under [input] (or live over IPC) and two-finger scroll in any client: the speed doesn't change. mouse_scroll_speed works as expected for wheels.

Suggested fix: both kinds of scroll come from pointer devices, so check the device type once:

    if (dev->type != WLR_INPUT_DEVICE_POINTER)
    {
        return 1.0;
    }

    return touchpad ? touchpad_scroll_speed : mouse_scroll_speed;

I confirmed the diagnosis by scaling finger-source axis events from pointer devices by touchpad_scroll_speed in an input_event_signal<wlr_pointer_axis_event> handler in a plugin; with that, the option behaves as documented.

Dominant language
C++
Stars
3.1k
Forks
238
Avg merge
6d 6h
Merged PRs (30d)
8

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from WayfireWM/wayfire

All issues in WayfireWM/wayfire

Similar issues

More C++ issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.