Certamente é possível, mas a solução para isso que eu criei é muito ... feia.
Primeiro, você precisa criar seus próprios temas de cursor com suas próprias cores. Você pode copiar aqueles que você tem em /usr/share/icons
(verifique se há pastas que contenham cursor.theme
file) na pasta ~/.icons
de seus usuários, renomeie-os por sua escolha e colore. Para a prova de conceito, mostrarei a você apenas usando temas de cursor que já devem estar disponíveis no sistema. Vamos dizer "DMZ-White" e "DMZ-Black".
Quanto aos cursores de colorização, você pode fazê-lo com o GIMP e sua função / filtro "colorizar", mas você deve aplicá-lo a todas as camadas (tamanhos diferentes) e exportá-los com .xmc
e depois tira essa extensão, então os nomes são como no original, tema fonte.
Vários ambientes de área de trabalho têm métodos diferentes para armazenar o layout atual do teclado e para o que estou trabalhando (MATE) eu nem consegui descobrir um método legal, então precisei usar xset -q
, que retorna muito "máscara" sem sentido que é diferente para cada layout de teclado.
Tente executar este comando depois de alternar os layouts de teclado:
xset -q | grep -A 0 'LED' | cut -c59-67
Deve dar-lhe algo como "00000002" para um layout e "00001002" para o outro. Você precisará desses valores mais tarde.
Agora, você precisa descobrir como alterar um tema de cursor por um comando em seu ambiente.
Veja o que funciona no MATE:
gsettings set org.mate.peripherals-mouse cursor-theme 'DMZ-Black'
... e isso provavelmente deve funcionar no GNOME:
gsettings set org.gnome.desktop.interface cursor-theme 'DMZ-Black'
Se você não souber os nomes próprios para os temas do seu cursor, basta mudá-los pela GUI e verificar:
gsettings get org.mate.peripherals-mouse cursor-theme
gsettings get org.gnome.desktop.interface cursor-theme
E agora ... a parte mais feia - juntando tudo e executando um script em loop com um determinado intervalo que mudará um cursor de acordo com um valor de xset
. Aqui está um simples que faz isso:
#!/bin/bash
current=$(gsettings get org.mate.peripherals-mouse cursor-theme)
echo "STARTING WITH: $current"
while [ "true" ]; do
xval=$(xset -q | grep -A 0 'LED' | cut -c59-67)
if [ "$xval" == "00000002" ]; then
if [ "$current" != "'DMZ-Black'" ]; then
current="'DMZ-Black'"
echo "CHANGING TO: $current"
gsettings set org.mate.peripherals-mouse cursor-theme $current
fi
elif [ "$xval" == "00001002" ]; then
if [ "$current" != "'DMZ-White'" ]; then
current="'DMZ-White'"
echo "CHANGING TO: $current"
gsettings set org.mate.peripherals-mouse cursor-theme $current
fi
fi
sleep 1 # one-second interval between each re-check
done
Coloque este script em algum arquivo, aplique chmod +x
a ele (permissão executável) e depois de configurar de acordo com sua situação e testes no terminal (fe bash /home/glaz/my-dynamic-cursor-script
), você pode adicioná-lo ao seu início automático e ~ VIOLA ~
Talvez não seja a melhor solução, mas faz o trabalho - pelo menos para mim:)
Oh ... Também funciona quando você está usando esse recurso, que permite um layout de entrada diferente para cada janela, então quando você muda o foco para uma janela diferente, o cursor também é atualizado. No entanto, ele não funcionará em aplicativos que usam seus próprios cursores personalizados - esses casos exigiriam outra idéia: seguir um cursor em tempo real e renderizar alguma sobreposição ao lado dele, mas não acho que seja tão fácil como isso ... pode exigir a codificação de algum aplicativo / daemon especializado que executaria apenas isso.