Ask Ubuntu is a question and answer site for Ubuntu users and developers. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Two-fingered scrolling is working fine, but is there a way that I can reverse the direction (natural scrolling)? It seems backwards opposed to the way OSX does it.

share|improve this question
I've been using this for a day and now I want to reverse the direction my Up and Down arrow keys scroll the page. – joeytwiddle Jan 20 '14 at 3:06

I don’t know which version of Ubuntu you’re using, but in 13.04 (and I guess in 12.10) it’s possible via touchpad settings.

So first, open System Settings > Mouse and Touchpad. As seen in the screenshot below if there’s an option for content sticks to fingers, check it. Then the scrollbars will work in reverse direction.

Content sticks to fingers

This is accessible via Dconf Editor as well. Go to org > gnome > settings-daemon > peripherals > touchpad and check natural-scroll.

enter image description here

share|improve this answer
Finally, it's about time they implement something like this :) – Naftuli Tzvi Kay Mar 18 '13 at 17:37
I didn't consider the date of question! :D – AliNa Mar 18 '13 at 18:13
I think this is essential for Ubuntu Touch, where you move the content itself instead of scrollbar slider. – AliNa Mar 18 '13 at 20:35
Unfortunately, it doesn't work in Nautilus and few other applications, though it works in others – asymptotically May 31 '13 at 20:21
The System Settings > Mouse and Touchpad for 14.04 is listed as "Natural scrolling" and works well, including Nautilus. – Steven Almeroth Jun 14 '14 at 21:52

The simplest and IMHO the best way to achieve this on Ubuntu 12.10 and above is (didn't test it on 12.04 and below) to edit synaptics configuration:

sudoedit /usr/share/X11/xorg.conf.d/50-synaptics.conf

On 16.04, copy this file under /etc/X11/xorg.conf.d/50-synaptics.conf, then edit:

cp /usr/share/X11/xorg.conf.d/50-synaptics.conf /etc/X11/xorg.conf.d/
sudoedit /etc/X11/xorg.conf.d/50-synaptics.conf

add those lines in the Section "InputClass" Identifier "touchpad catchall":

        Option "VertScrollDelta" "-111"
        Option "HorizScrollDelta" "-111"

So that it reads like follows:

Section "InputClass"
        Identifier "touchpad catchall"
        Driver "synaptics"
        MatchIsTouchpad "on"
        Option "VertScrollDelta" "-111"
        Option "HorizScrollDelta" "-111"
# ...

Reboot (or read on) and have fun with natural scrolling :)

If you want to try your settings without reboot, you can use synclient

synclient VertScrollDelta=-111
synclient HorizScrollDelta=-111

The changes are immediately applied, but won't stay after reboot if you don't add them in 50-synaptics-conf file.

Note for GNOME or Cinnamon:

If you're using GNOME or Cinnamon desktop manager, there is a good chance that GNOME/Cinnamon's settings can override your custom settings. To prevent GNOME/Cinnamon's settings override yours, open dconf Editor [dconf-editor] and edit following entry:


Uncheck active.


The default value is 111 and it indicates the speed, that means you can play with the value to adjust the scrolling speed to you favor. Giving it a negative value makes it simply to scroll in reversed direction.

share|improve this answer
This works in 12.04 as well, but not for Nautilus. – Lars Nyström Aug 26 '13 at 8:04
In 13.04 works for Files (Nautilus). I don't know why it wouldn't work in 12.04. I used this approach in 12.10 and now using in 13.04. – Елин Й. Aug 26 '13 at 8:08
Ubuntu 12.04 uses Nautilus version 3.4.2. I believe newer versions of Ubuntu uses newer versions of Nautilus. – Lars Nyström Aug 26 '13 at 10:07
+1. I was hoping to make VertEdgeScroll go the opposite way from VertTwoFingerScroll but they appear to be booleans and it's probably a crazy idea anyway. – joeytwiddle Jan 18 '14 at 18:28
This is probably the best solution because it is independent from the desktop environment used. For my Ubuntu 14.10 the xorg.conf.d folder and the file didn't exsist so I needed to create them manually and create a custom InputSection – 0xAffe Oct 29 '14 at 19:41

The reverse scrolling you're talking about is called "natural scrolling," and can be enabled several different ways in Ubuntu. Here's an article on OMG! Ubuntu! detailing how to install the software that will get you what you need. If you're familiar with Ubuntu Tweak, you can also enable it in the latest release.

share|improve this answer
Awesome, thanks. "Natural Scrolling" in Ubuntu Tweak messes with the mouse as well, I'll see if the .Xmodmap tweak works. – Naftuli Tzvi Kay Dec 30 '11 at 4:05
+1 for Ubuntu Tweak – ioSamurai Feb 9 '13 at 15:44

On Ubuntu 14.04, go to "Mouse & Touchpad" and select "Natural Scrolling".

enter image description here

share|improve this answer
This work for me on 16.04, but I have to check natural scrolling and restart :) – rafaelphp May 24 at 3:14

The naturalscrolling package doesn't seem to work for Ubuntu 12.10. I installed Ubuntu Tweak:

sudo add-apt-repository ppa:tualatrix/ppa
sudo apt-get update
sudo apt-get install ubuntu-tweak

and you can adjust scrolling at

Tweaks -> Miscellaneous -> Natural Scrolling

share|improve this answer

Based on this blog, the script below worked for me on Ubuntu 12.04. It sets your touchpad's horizontal and vertical scrolling scale-factors both to negative values (which usually ensures "natural" scrolling). It does it "under the hood" so all your applications will be affected, even those that don't pay attention to the settings adjusted by tweakUI. Several unnecessary commands and comments are there just so you can see what's going on. You'll probably want to turn off any natural scrolling settings in TweakUI or similar.

xinput list | grep "[Tt]ouch" | grep "id=([0-9]+)"
# ⎜   ↳ SynPS/2 Synaptics TouchPad                  id=11    [slave  pointer  (2)]
id=`xinput list | grep -Po "[Tt]ouch[^=]*id=[0-9]+" | grep -Po [0-9]+`
xinput --list-props $id | grep "Scrolling Distance"
# Synaptics Scrolling Distance (269):    -107, -107
# Synaptics Circular Scrolling Distance (282):    0.100000
prop_id=`xinput --list-props $id | grep -P ".*[^C][^i][^r][^c][^u][^l][^a][^r]\sScrolling Distance" | grep -Po '\([0-9]+\)' | grep -Po "[0-9]+"`
prop_xy=xinput --list-props $id | grep -P ".*[^C][^i][^r][^c][^u][^l][^a][^r]\sScrolling Distance" | grep -Po '\s+[-+]{0,1}[0-9]+\,\s*[-+]{0,1}[0-9]+' | tr -d '-'
xinput --list-props $id | grep -P ".*[^C][^i][^r][^c][^u][^l][^a][^r]\sScrolling Distance" | grep -Po '\s+[-+]?[0-9]+[,]?' | tr -d '-' | tr -d ',' | tr ' \t' '-' | xargs xinput --set-prop $id $prop_id
nautilus -q
nautilus -n &
share|improve this answer
You could try | grep -v 'Circular' for [^e][^x][^t][^r][^a] [^r][^e][^a][^d][^a][^b][^i][^l][^i][^t][^y]. Oh silly me, just realised you are a -Perl coder! – joeytwiddle Jan 18 '14 at 18:20
Indeed. Silly me use -P in one place and not all and make work for myself. Will fix. – hobs Jan 19 '14 at 17:15
Actually, I was trying to negate one part of the regex and not the other, so no joy on the @joeytwiddle simplification. Regex's don't do negation combined with nonnegation well (-Perl or otherwise) – hobs Jan 19 '14 at 17:19
Hehe. My suggestion would require an extra command, which is certainly less efficient (on single processor machines anyway). It would look like this: ... | grep -v 'Circular' | grep "\sScrolling Distance" | ... They might be more efficient swapped around. Um. – joeytwiddle Jan 20 '14 at 2:55
Yea, but yours would match a completely different set of strings than mine. Yours would exclude all strings with "Circular". Mine would exclude only those with "Circular" immediately preceding the "Scrolling". Mine is definitely uglier, but it behaves differently, and it's the only one I've tested and made sure is correct enough (it worked on my machine). – hobs Jan 20 '14 at 19:17

This worked on Mate and presumably other environments that don't have a simple option for this in the control panel.

Add this line by hand if you already have an .Xmodmap file.

# standard
echo "pointer = 1 2 3 4 5 6 7 8 9 10 11 12" > ~/.Xmodmap && xmodmap .Xmodmap

# "natural"
echo "pointer = 1 2 3 5 4 6 7 8 9 10 11 12" > ~/.Xmodmap && xmodmap .Xmodmap
share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.