38

I'm building a kiosk using Ubuntu Precise on a touch screen. Now I'm looking for the appropriate way to make the mouse cursor disappear. As people know where they are pointing, displaying an arrow under their finger is useless, and having an arrow where they last pointed even more so.

My best bet would be some kind of cursor theme consisting only of transparent cursors. I'm a bit surprised to find no UI to switch and maybe install cursor themes in the default Unity UI, but as I won't be using Unity, that's not much of a problem. It appears that the alternatives listed in update-alternatives --list x-cursor-theme all refer to .theme files, so I searched the package list for those. The resulting list does not list any likely candidates, i.e. no packages containing “invisible” or “transparent” in their name.

So far, some googled result yielding a readme for “XCursor Transparent Theme” is my best bet. That would mean compiling those sources myself, perhaps putting them into my PPA. I'm also a bit sceptical about that result as said readme is dated from 2003. And I'm not sure that I'm not making things overly complicated. After all, there is quite some support in Precise for touch devices, so I don't believe I'm the first one who wants to get rid of his mouse cursor.

  • Is there another way which doesn't involve user-compiled binary code?
  • Is there a theme package for transparent cursors which I've overlooked?
  • Is there some other mechanism to make the cursor disappear without changing the cursor theme?

I'll be using Matchbox WM, Firefox and Java applets, so I'll be happy with any solution working under such a setup. I'm not interested in any solutions twiddling with Gnome or Compiz, as I'll not be running either.

41

Try 'unclutter'

the purpose of this program is to hide the pointer after the mouse has not moved for a while. Using it, you can make the pointer appear only when the user touches the screen, and disappear right after it. (maybe this was not exactly what you were aiming for. But it is much easier than your alternative =P)

To use, install it

sudo apt-get install unclutter

then run it

unclutter -idle 0.01 -root

the number is a number of seconds before the pointer disappears (in this case, 1/100 seconds)

  • 1
    If you combine this solution with an icon theme that looks like a small ring, it should look pretty nice even with 0.1 second delay. In that case, the delay would work as visual confirmation that the display detected the touch. – Mikko Rantalainen Jan 11 '16 at 13:46
  • cool idea! do you have such a theme? I'd love to add a recommendation to the answer – josinalvo Jan 12 '16 at 16:15
  • 1
    Sorry, I'm not aware of existing theme. It should not be too hard to create such theme manually. Create suitable PNG file and use xcursorgen to create X11 cursor file. Then you need to write cursor.theme file, put cursor files in subdirectory cursors and create a ZIP file from the whole thing. See ehow.com/how_5026012_make-cursors-file-ubuntu.html and freedesktop.org/wiki/Specifications/cursor-spec/?action=print and some existing theme gnome-look.org/?xcontentmode=36 for more details. – Mikko Rantalainen Jan 13 '16 at 11:19
  • amazing, perfect symbiosis with NoMachine! thx! – Aquarius Power Sep 1 '16 at 2:42
  • Sometimes using unclutter can make the application lose focus, for example when browsing the web the mouse wheel may not work until you click or move the mouse pointer. Just have it in mind so you don't think it's a bug in the web browser like I did ;) – golimar Aug 7 '18 at 10:55
20

If you never want the cursor to appear (appropriate for touchscreens) unclutter won't suffice from my experience. Instead you can use use -nocursor when starting X.

Example:

startx -nocursor

See http://www.x.org/wiki/AdvancedTopicsFAQ/#index1h2

  • 1
    Great answer! It worked for me only like this: startx -- -nocursor – czerasz Jan 25 '15 at 22:27
  • 4
    Is there a way to change this variable after X has started? – Aaron Franke Jan 8 '17 at 11:00
8

If you are using lightdm:

Edit /etc/lightdm/lightdm.conf by adding:

xserver-command=X -bs -core -nocursor

if you are using nodm:

Edit /etc/default/nodm by replacing:

NODM_X_OPTIONS='-nolisten tcp'

with

NODM_X_OPTIONS='-nolisten tcp -nocursor'

This is building from Gibbs very helpful answer

0

Ubuntu 16.04

Open /usr/share/lightdm/lightdm.conf.d/50-xserver-command.conf and edit this line:

xserver-command=X -core

Append -nocursor to it. Like this:

xserver-command=X -core -nocursor

Save and restart.

Warning: Like other answers on this question, mistakes on this file will prevent Xorg initialization. Anyway, you can still can login to terminal and revert.

  • NOTE: this might break login on your machine. Use with caution. – Igor Jun 19 '18 at 8:44
  • 1
    @Igor while a valid point, a mistake on this file will prevent Xorg initialization. So user still can login to terminal and revert. Anyway, I'll add a mention to this. – Rael Gugelmin Cunha Jun 19 '18 at 11:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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