Ocultando o mouse após ficar alguns segundos ocioso na tela X

9

Eu tenho um aplicativo de quiosque em execução no Ubuntu Server 14.04.3 com Google Chrome e X (xorg e xsession).

Atualmente, tenho algum script para ocultar o mouse após 2 segundos de inatividade e quando o usuário tenta mover o mouse, ele aparece. Eu simplesmente aproveito a cursor:nonesobreposição invisível injetada e a removo quando necessário.

Parece que quando eu inicializo o quiosque, o código é executado conforme o esperado e posso ver a sobreposição inserida, mas como o mouse foi apenas "carregado", ele não desaparece até que eu faça um pequeno movimento. Parece que o navegador não detecta o mouse até que eu faça um pequeno movimento, o que resulta no mouse sendo mostrado no meio da tela. Como o problema não está relacionado ao meu código, ele parece funcionar muito bem.

O que eu quero fazer é que, se o mouse não for movido por 2 segundos, oculte-o. Quando o usuário tentar mover o mouse, mostre-o novamente. A solução precisa funcionar imediatamente após a inicialização do monitor X, portanto, quando eu inicializo o monitor X, o mouse fica no meio da tela e, mesmo que eu não o toque na inicialização, ele desaparece após 2 segundos de inatividade. Acho que preciso conseguir isso mexendo com a tela X em vez de confiar no meu código, pois o mouse não é detectado quando o quiosque é inicializado.

É possível fazer isso com o X display?

kfirba
fonte

Respostas:

14

Existe um aplicativo chamado unclutterque fará isso. Instale-o digitando o seguinte em uma janela do terminal:

sudo apt-get install unclutter

após a instalação, você pode alterar o tempo limite para 2 segundos no seguinte arquivo:

/etc/default/unclutter

e altere a seguinte linha:

EXTRA_OPTS="-idle 1 -root"

para

EXTRA_OPTS="-idle 2 -root"

isso também é iniciado automaticamente quando o sistema é inicializado.

Para iniciar agora sem a reinicialização do sistema, digite o seguinte:

nohup unclutter -idle 2 &

EDITAR:

Se não for encontrado para instalação, edite seu /etc/apt/sources.listarquivo e verifique se as seguintes linhas não estão comentadas #:

deb http://us.archive.ubuntu.com/ubuntu/ trusty universe
deb-src http://us.archive.ubuntu.com/ubuntu/ trusty universe
deb http://us.archive.ubuntu.com/ubuntu/ trusty-updates universe
deb-src http://us.archive.ubuntu.com/ubuntu/ trusty-updates universe

Se eles estiverem comentados, remova o #na parte da frente da linha, execute sudo apt-get updatepara atualizar os repositórios e execute novamente o sudo apt-get install unclutter.

Se eu executar os seguintes comandos, podemos ver que o unclutteraplicativo vem dos trusty universerepositórios.

:~$ apt-cache showpkg unclutter
Package: unclutter
Versions: 
8-19 (/var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_trusty_universe_binary-amd64_Packages) (/var/lib/dpkg/status)
 Description Language: 
                 File: /var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_trusty_universe_binary-amd64_Packages
                  MD5: f0e9ff67c42a9d3dc35bb595d2f84a7b
 Description Language: en
                 File: /var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_trusty_universe_i18n_Translation-en
                  MD5: f0e9ff67c42a9d3dc35bb595d2f84a7b

:~$ dpkg -s unclutter
Package: unclutter
Status: install ok installed
Priority: optional
Section: x11
Installed-Size: 76
Maintainer: Ubuntu Developers <[email protected]>
Architecture: amd64
Version: 8-19
Depends: debconf (>= 0.5) | debconf-2.0, libc6 (>= 2.3.4), libx11-6
Conffiles:
 /etc/X11/Xsession.d/90unclutter 9b47a483264cfc6a155fbd65cd8a3e6e
Description: hides the mouse cursor in X after a period of inactivity
 unclutter hides your X mouse cursor when you don't need it, to prevent it
 from getting in the way. You have only to move the mouse to restore the
 mouse cursor.
Original-Maintainer: Axel Beckert <[email protected]>
Homepage: ftp://ftp.x.org/contrib/utilities/

Espero que isto ajude!

Terrance
fonte
Vou dar uma olhada! Eu não acredito que uma solução tão simples estava bem debaixo do meu nariz :) Btw, quando você diz "criar uma inicialização", você quer dizer criar um arquivo dentro da init.dpasta?
kfirba
@kfirba Atualizado para habilidades de inicialização automática.
Terrance
obrigado por editar isso! Eu vou voltar para você em breve com os resultados :)
kfirba
@kfirba Fico feliz que eu poderia ser de ajuda para você! =)
Terrance
Não consigo instalar a organização por algum motivo ... Eu digito sudo apt-get install uncluttere diz que não há pacote de organização. Alguma idéia de como posso corrigir isso?
kfirba