Como sobrescrever o cursor do mouse personalizado com o Xcursor?

6

Quando utilizo rdesktop para ligar a um servidor Microsoft Windows, o cursor do rato é definido para uma versão monocromática do cursor de cores reais do Windows. Isso acaba sendo uma seta branca sem contorno, então é muito difícil vê-la sobre uma superfície branca.

Eu não quero mudar o cursor na máquina Windows, mas meu entendimento de como o Xcursor funciona está seguindo:

Quando qualquer cursor é definido, ele é procurado pelo nome do arquivo (usando um hash da imagem do cursor) para que, se uma correspondência for encontrada, esse Xcursor seja usado em vez do original monocromático.

Minha idéia é que, se eu puder fornecer esse arquivo e colocar uma imagem de cursor mais clara nele (como a seta padrão), ele resolverá meu problema usando a seta padrão na maioria das vezes. Além disso, ele ainda permitirá que rdesktop altere o cursor para outra coisa (como uma seta de redimensionamento) se a máquina remota precisar.

  • Como posso descobrir qual hash usar para a imagem do cursor rdesktop que estou obtendo?
  • Como posso mapear esse hash para o cursor de seta normal no tema que estou usando?
por Malvineous 01.07.2014 / 07:47

1 resposta

6

Eu tenho trabalhado como fazer isso. Primeiro, você precisa definir a variável de ambiente XCURSOR_DISCOVER antes de executar o programa que está configurando o cursor do mouse, no meu caso, rdesktop :

$ XCURSOR_DISCOVER=1 rdesktop ...

Isso imprimirá os bitmaps e hashes de cada cursor uma vez somente quando forem definidos pela primeira vez. Aqui está o que cuspiu quando o cursor padrão do Windows foi definido, que é a imagem que eu quero substituir:

Cursor image name: 24020000002800000528000084810000
...
Cursor image name: 7bf1cc07d310bf080118007e08fc30ff
...
Cursor hash 24020000002800000528000084810000 returns 0x0

Quando o Xcursor procura por cursores ausentes, o caminho de busca inclui ~/.icons/default/cursors , então é onde podemos colocar imagens para cursores ausentes.

$ mkdir -p ~/.icons/default/cursors

Agora, aqui você apenas aponta qualquer hash para uma imagem existente. Quando um aplicativo tenta definir o hash, essa imagem será usada. Nesse caso, queremos que a imagem left_ptr seja usada (essa é a seta padrão) do tema Vanilla-DMZ :

$ ln -s /usr/share/icons/Vanilla-DMZ/cursors/left_ptr ~/.icons/default/cursors/24020000002800000528000084810000

É isso! A alteração deve ser visível imediatamente.

    
por 05.07.2014 / 09:14