You may remember that I had said that the System76 Galago Pro’s trackpad is garbage recently.

I still stand by this as I’ve been spoiled by Apple’s Magic Trackpad which for years now, they’ve nailed the user experience with.

Fortunately running Linux means getting under the hood and being able to control your own experience a lot more. I know that’s a put off for some people and I get that, but for me, I’m okay with a small bit of being frustrated and screwing around to find a solution.

While the trackpad did work out of the box with no additional configuration, I was saddened by the lack of inertial scrolling.

Researching this ended up being an additional pain because as it turns out, “inertial scrolling” is known as “coasting” in Synaptics speak.

Speaking of Synaptics, even though it’s no longer being maintained and it’s recommended to use xf86-input-mtrack or libinput instead, I did opt to use xf86-input-synaptics.

That’s not to say I didn’t try the alternatives.

libinput which is what came out of the box just doesn’t support coasting at the moment, making it a bit of a deal breaker to use.

xf86-input-mtrack did support coasting, but for the life of me I couldn’t get the buttons for the trackpad to work at all. I was able to get tap to click working but I didn’t necessarily want to have the buttons disabled and have to rely solely on tap to click which I may end up turning off eventually.

Keep in mind that I’m speaking in the context of Arch Linux and I’m not going to go into much detail about how to get things installed.

Probably also worth noting that I still run GNOME in Xorg mode instead of Wayland, mostly because of some theming hacks I do in GNOME that don’t work in Wayland.

Even though I went with the more dated driver, I’m planning to give libinput and xf86-input-mtrack another shot occasionally to see if they’ve either improved or my ability to figure things out has improved ;)

With the inclusion of the Synaptics driver, I lost the ability to configure the mouse within GNOME and had to rely on a configuration file.

To get things feeling more like an Apple Magic Trackpad I needed to enable coasting, of course. In addition, I needed natural scrolling palm/thumb detection and for my own personal preference, a quick speed.

I haven’t quite gotten the speed perfect yet, but again that’s a personal preference thing and you may want to omit the configuration or tweak it for your own preference.

The big pain in the ass for me ended up being the palm / thumb detection. I tweaked things a bit but ultimately anded up disabling the upper right edge of the trackpad to get things where I was completely satisfied.

My configuration looks like this:

Section "InputClass"
    Identifier "touchpad catchall"
    Driver "synaptics"
    MatchIsTouchpad "on"

    # Natural Scrolling
    Option "HorizScrollDelta" "-111"
    Option "VertScrollDelta" "-111"

    # Tap to Click
    Option "TapButton1" "1"
    Option "TapButton2" "3"
    Option "TapButton3" "2"

    # Mouse Speed
    Option "MinSpeed" "1"
    Option "MaxSpeed" "1.75"
    Option "AccelFactor" "0.033448"

    # Palm Detection
    Option "PalmDetect" "1"
    Option "PalmMinWidth" "4"
    Option "PalmMinZ" "50"

    # Disable upper right corner (additional palm detection)
    Option "AreaRightEdge" "5375"
EndSection

A shitty trackpad experience very well could have resulted in me returning my Galago Pro, but this configuration has made things completely tolerable even if it’s not 100% perfect (yet).

Since this is a work in progress, you can always check out the configuration file out in my dotfiles.

Even with a decently working trackpad, I’ve been doing some light research on track and clickpads. Since the System76 Galago Pro is a customer serviceable machine, I don’t see any reason that I couldn’t just find a better piece of hardware to swap in.

If anybody’s ever done this, hit me up in the comments below!