Indicador do idioma de entrada no cursor do teclado (ou cor do cursor)

2

É possível ter alguma indicação do idioma de entrada no cursor do teclado (ou próximo a ele) ou talvez alterar a cor do cursor dependendo do idioma de entrada?

Acho que seria um ótimo complemento para quem usa mais de um idioma.

    
por GLaz 13.01.2018 / 20:57

1 resposta

3

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.

    
por GreggD 13.01.2018 / 22:15