Como faço para consultar o estado atual do ícone do mouse?

1

Como faço para consultar (a partir do código) o ícone / estado atual do mouse?

O mouse pode estar passando o mouse sobre um link em um navegador ou mostrando um feixe em I de um terminal.
Eu não me importo com a posição real do mouse, ou em qual aplicativo ele está - apenas seu estado visual.

Como posso consultar o ubuntu para o que meu mouse se parece atualmente?

Estou na seguinte versão do Ubuntu:

lsb_release --all
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.3 LTS
Release:    16.04
Codename:   xenial

usando o flashback do gnome:

$echo $XDG_CURRENT_DESKTOP
GNOME-Flashback:Unity
$echo $GDMSESSION
gnome-flashback-metacity

(não tenho certeza se isso é relevante).

Eu pegaria uma captura de tela de 32x32 a partir da localização do meu mouse e, em seguida, faria um reconhecimento de imagem básico para ver o que é o estado, mas isso também não funciona! Quando você tira uma captura de tela (com digamos, captura de tela do gnome ou obturador), ela mostra automaticamente o mouse em seu estado de ícone normal, apesar de seu estado de ícone quando a captura de tela é realizada.

    
por Trevor Hickey 05.10.2017 / 03:19

1 resposta

0

Bug conhecido

Parece ser um bug conhecido:

link
link

De acordo com o tópico, precisamos instalar o pacote gnome-utils , o que na verdade não ajuda.

Solução

Usando a linha de comando shutter e xdotool , consegui uma solução funcional:

  1. O script:
    #!/bin/bash

    # Get current cursor position using xdotool and eval them as variables
    eval $(xdotool getmouselocation --shell)

    # We need the X and Y coordinates. Minus 10 pixels to create some padding around the cursor
    xc=$(($X-10))
    yc=$(($Y-10))

    # Use shutter to capture a screenshot of the area around the cursor 32px by 32px and save it in the current directory
    shutter -s=$xc,$yc,32,32 -c -e -o './%y-%m-%d_$w_$h_$RRRR.png'
  1. Isso levou a captura de tela, mas usando o ponteiro do cursor padrão. MAS me deu uma mensagem de erro:

    WARNING: XFIXES extension not found - using a default cursor image
    
  2. Com esse erro, eu tive uma direção. Eu rapidamente fiz um apt-cache search xfixes e isso surgiu:

    subroot@subroot:~$ apt-cache search xfixes
    libxcb-xfixes0 - X C Binding, xfixes extension
    libxcb-xfixes0-dbg - X C Binding, xfixes extension, debugging symbols
    libxcb-xfixes0-dev - X C Binding, xfixes extension, development files
    libxfixes-dev - X11 miscellaneous 'fixes' extension library (development headers)
    libxfixes3 - X11 miscellaneous 'fixes' extension library
    libxfixes3-dbg - X11 miscellaneous 'fixes' extension library (debug package)
    libx11-protocol-other-perl - miscellaneous X11::Protocol helpers
    subroot@subroot:~$
    
  3. Acabei de instalar tudo:

    subroot@subroot:~$ sudo apt install libxcb-xfixes0 libxfixes3 libxcb-xfixes0-dbg libxfixes-dev libxfixes3-dbg libxcb-xfixes0-dev libx11-protocol-other-perl
    . . .
    subroot@subroot:~$
    
  4. Eu tentei novamente e funcionou::)

    subroot@subroot:~$ sh cursor.sh
    

O resultado:

Basta brincar com as dimensões e o tamanho da tela para obter a imagem perfeita do ponteiro do cursor. Felicidades.

    
por Parto 05.10.2017 / 10:53