
{"id":48492,"date":"2025-03-24T13:24:24","date_gmt":"2025-03-24T13:24:24","guid":{"rendered":"https:\/\/ubuntuhandbook.org\/?p=48492"},"modified":"2025-07-17T08:37:28","modified_gmt":"2025-07-17T08:37:28","slug":"enable-3-finger-dragging-ubuntu","status":"publish","type":"post","link":"https:\/\/ubuntuhandbook.org\/index.php\/2025\/03\/enable-3-finger-dragging-ubuntu\/","title":{"rendered":"Enable 3\/4 Finger Dragging in Ubuntu via Libinput 2.18.0"},"content":{"rendered":"<p><a href=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2022\/05\/touchpad-icon.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-thumbnail wp-image-40004\" src=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2022\/05\/touchpad-icon-250x250.webp\" alt=\"\" width=\"250\" height=\"250\" srcset=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2022\/05\/touchpad-icon-250x250.webp 250w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2022\/05\/touchpad-icon-300x300.webp 300w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2022\/05\/touchpad-icon-600x600.webp 600w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2022\/05\/touchpad-icon-768x768.webp 768w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2022\/05\/touchpad-icon.webp 1200w\" sizes=\"auto, (max-width: 250px) 100vw, 250px\" \/><\/a><\/p>\n<p>Libinput released version 1.28.0 today, which finally introduced the long requested <b>three-finger drag gesture support for touchpads<\/b>!<\/p>\n<blockquote><p><i>The big new feature in this release is three-finger drag for touchpads. When enabled three fingers down on the touchpad will logically hold the left mouse button down, any movement of the fingers then moves the pointer for a drag. For some users this is a more precise and easier-to-trigger interaction than e.g. tap-and-drag.<\/i><\/p><\/blockquote>\n<p><!--more--><\/p>\n<p>Similar to macOS three-finger drag feature, it&#8217;s a swipe gesture that emulates a button down + motion + button up sequence, and can be configured to use <b>either 3-finger or 4-finger<\/b>.<\/p>\n<p>When fingers are released, and two fingers remain, it keeps dragging. And similar to the tap drag lock feature, when 3\/4 fingers are set down immediately after releasing all fingers the drag continues.<\/p>\n<p>Besides the multi-touch drag gesture, <a href=\"https:\/\/gitlab.freedesktop.org\/libinput\/libinput\/-\/releases\" target=\"_blank\" rel=\"noopener\">libinput 1.28.0<\/a> also added\/updated device-specific quirks, including:<\/p>\n<ul>\n<li>Add Apple Magic Trackpad v2 2024.<\/li>\n<li>Add Apple Magic Trackpad v2 USB-C.<\/li>\n<li>Raise AttrTrackpointMultiplier for ThinkPad T470\/T480\/A485 to 0.75.<\/li>\n<li>Add Dell Haptics Touchpad.<\/li>\n<li>Disable MT_TOOL_PALM for the Yoga Slim 7i Carbon.<\/li>\n<li>Add RazerBlade182024 Keyboard.<\/li>\n<li>Set pressure pad for ThinkPad X9 15 Gen 1 Forcepad<\/li>\n<li>Add pressure pad quirk for Lenovo ThinkBook 14 G7+ IAH.<\/li>\n<li>Add quirks for Dell laptop with Goodix Touchpad.<\/li>\n<\/ul>\n<h3>Install Libinput 1.28.0 to Enable 3\/4 finger dragging<\/h3>\n<p>Besides compiling the new library from source tarball (see the link above), I&#8217;ve built it into unofficial Ubuntu PPAs for Ubuntu 22.04, Ubuntu 24.04, and Ubuntu 24.10 on <code>amd64<\/code> and <code>arm64\/armhf<\/code> platforms.<\/p>\n<p><b>NOTE 1: The PPA package is NOT well tested. It MAY NOT work on some devices. Use it at your own risk!<\/b><\/p>\n<p><b>NOTE 1: The new three-finger drag is disabled by default, and, so far no compositor offers config option for it. I built the package with the feature enabled, but separated into 2 PPAs: one for 3-finger drag, another for 4-finger drag.<\/b><\/p>\n<p><b>NOTE 2: Enable 3-finger drag will disable GNOME&#8217;s default gestures (while 4-finger drag won&#8217;t).<\/b><\/p>\n<p><b>1.<\/b> First, press <code>Ctrl+Alt+T<\/code> on keyboard to open up a terminal window. When it opens, run either command below to add PPA:<\/p>\n<ul>\n<li>For 3-finger touchpad drag support, add <a href=\"https:\/\/launchpad.net\/~ubuntuhandbook1\/+archive\/ubuntu\/libinput\" target=\"_blank\" rel=\"noopener\">the PPA<\/a>:\n<pre>sudo add-apt-repository ppa:ubuntuhandbook1\/libinput<\/pre>\n<\/li>\n<li>For the 4-finger drag, add <a href=\"https:\/\/launchpad.net\/~ubuntuhandbook1\/+archive\/ubuntu\/libinput-4fg\" target=\"_blank\" rel=\"noopener\">this PPA<\/a> instead:\n<pre>sudo add-apt-repository ppa:ubuntuhandbook1\/libinput-4fg<\/pre>\n<\/li>\n<\/ul>\n<p><a href=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/03\/libinput128-ppa.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-48493\" src=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/03\/libinput128-ppa-700x454.webp\" alt=\"\" width=\"610\" height=\"396\" srcset=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/03\/libinput128-ppa-700x454.webp 700w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/03\/libinput128-ppa-300x195.webp 300w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/03\/libinput128-ppa.webp 738w\" sizes=\"auto, (max-width: 610px) 100vw, 610px\" \/><\/a><\/p>\n<p><b>2.<\/b> After added PPA, run the command below to manually refresh package cache:<\/p>\n<pre>sudo apt update<\/pre>\n<p><b>3.<\/b> Finally, run the command below to update the libinput library:<\/p>\n<pre>sudo apt install libinput-bin libinput10 libinput-tools<\/pre>\n<p><strong>NOTE<\/strong>: For those who have Ubuntu Pro enabled, run the command below instead to specify the package repository:<\/p>\n<pre>sudo apt install -t \"o=ubuntuhandbook1-libinput\" libinput-bin libinput10 libinput-tools<\/pre>\n<p>And replace <code>\"o=ubuntuhandbook1-libinput\"<\/code> with <code>o=ubuntuhandbook1-libinput-4fg\"<\/code> if you added the 4-finger drag PPA.<\/p>\n<p><a href=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/03\/apt-libinput.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-48494\" src=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/03\/apt-libinput-700x410.webp\" alt=\"\" width=\"610\" height=\"357\" srcset=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/03\/apt-libinput-700x410.webp 700w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/03\/apt-libinput-300x176.webp 300w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/03\/apt-libinput-768x450.webp 768w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/03\/apt-libinput.webp 1002w\" sizes=\"auto, (max-width: 610px) 100vw, 610px\" \/><\/a><\/p>\n<p>Finally, <b>log out and log back in<\/b> to apply change.<\/p>\n<p><b>4. Clean up<\/b>. After installed the packages, you may remove the PPAs by either running command below in terminal:<\/p>\n<pre>sudo add-apt-repository --remove ppa:ubuntuhandbook1\/libinput-4fg<\/pre>\n<pre>sudo add-apt-repository --remove ppa:ubuntuhandbook1\/libinput<\/pre>\n<p>Or use &#8220;Software &amp; Updates&#8221; to remove corresponding source lines under Other Software tab.<\/p>\n<p><a href=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/03\/remove-ppas.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-48495\" src=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/03\/remove-ppas-700x429.webp\" alt=\"\" width=\"610\" height=\"374\" srcset=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/03\/remove-ppas-700x429.webp 700w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/03\/remove-ppas-300x184.webp 300w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/03\/remove-ppas-768x471.webp 768w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/03\/remove-ppas.webp 1035w\" sizes=\"auto, (max-width: 610px) 100vw, 610px\" \/><\/a><\/p>\n<h3>How to restore the default libinput library<\/h3>\n<p>For any reason, you can easily revert back to the default libinput library by running the commands below one by one in terminal:<\/p>\n<ul>\n<li>First, run command to check available package versions:\n<pre>apt policy libinput-tools<\/pre>\n<p>In the output, copy the available package version from system repositories.<\/li>\n<li>Then, run the command below to install libinput with specified package version:\n<pre>sudo apt install libinput10=x.xx.x-xxx libinput-tools=x.xx.x-xxx libinput-bin=x.xx.x-xxx<\/pre>\n<p>Here you need to replace <code>x.xx.x-xxx<\/code> to the package version according to the last command.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/03\/downgrade-libinput.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-48496\" src=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/03\/downgrade-libinput-700x533.webp\" alt=\"\" width=\"610\" height=\"464\" srcset=\"https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/03\/downgrade-libinput-700x533.webp 700w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/03\/downgrade-libinput-300x228.webp 300w, https:\/\/ubuntuhandbook.org\/wp-content\/uploads\/2025\/03\/downgrade-libinput.webp 738w\" sizes=\"auto, (max-width: 610px) 100vw, 610px\" \/><\/a><\/p>\n<p>Also, log out and back in to apply change.<\/p>","protected":false},"excerpt":{"rendered":"<p>Libinput released version 1.28.0 today, which finally introduced the long requested three-finger drag gesture support for touchpads! The big new feature in this release is three-finger drag for touchpads. When enabled three fingers down on the touchpad will logically hold the left mouse button down, any movement of the fingers then moves the pointer for [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":40004,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[1389],"class_list":["post-48492","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-howtos","tag-touchpad"],"_links":{"self":[{"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/posts\/48492","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/comments?post=48492"}],"version-history":[{"count":0,"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/posts\/48492\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/media\/40004"}],"wp:attachment":[{"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/media?parent=48492"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/categories?post=48492"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ubuntuhandbook.org\/index.php\/wp-json\/wp\/v2\/tags?post=48492"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}