web-dev-qa-db-fra.com

Indicateur de la langue de saisie sur le curseur du clavier (ou la couleur du curseur)

Est-il possible d'avoir une indication de la langue de saisie sur le curseur du clavier (ou à proximité de celui-ci) ou de changer la couleur du curseur en fonction de la langue de saisie?

Je pense que ce serait un excellent ajout pour ceux qui utilisent plusieurs langues.

3
GLaz

C'est certainement possible, mais la solution que j'ai proposée est très ... moche.

Tout d’abord, vous devez créer vos propres thèmes de curseur avec vos propres couleurs. Vous pouvez copier ceux que vous avez dans /usr/share/icons (recherchez les dossiers contenant le fichier cursor.theme) dans le dossier de vos utilisateurs ~/.icons, les renommer de votre choix et les colorier. Pour la preuve de concept, je vous montrerai du repos en utilisant simplement des thèmes de curseur qui devraient déjà être disponibles dans le système. Disons "DMZ-White" et "DMZ-Black".

En ce qui concerne la colorisation des curseurs, vous pouvez le faire avec GIMP et sa fonction/filtre "coloriser", mais vous devez l’appliquer à tous les calques (tailles différentes) puis exporter ces fichiers avec l’extension .xmc puis effacez cette extension pour que les noms soient comme dans le thème source d'origine.


Différents environnements de bureau utilisent différentes méthodes pour stocker la disposition de clavier actuelle et pour celle sur laquelle je travaille (MATE), je n’étais même pas en mesure de trouver une méthode agréable. J’avais donc besoin d’utiliser xset -q qui ne renvoie aucun sens. "masque" qui est différent pour chaque disposition de clavier.

Essayez d’exécuter cette commande après avoir changé la disposition du clavier:

xset -q | grep -A 0 'LED' | cut -c59-67

Cela devrait vous donner quelque chose comme "00000002" pour une mise en page et "00001002" pour l'autre. Vous aurez besoin de ces valeurs plus tard.


Vous devez maintenant comprendre comment changer un thème de curseur à l'aide d'une commande de votre environnement.

Voici ce qui fonctionne sur MATE:

gsettings set org.mate.peripherals-mouse cursor-theme 'DMZ-Black'

... et cela devrait probablement fonctionner sur GNOME:

gsettings set org.gnome.desktop.interface cursor-theme 'DMZ-Black'

Si vous ne connaissez pas les noms propres pour vos thèmes de curseur, il suffit de les changer par interface graphique et de vérifier:

gsettings get org.mate.peripherals-mouse cursor-theme
gsettings get org.gnome.desktop.interface cursor-theme

Et maintenant ... la partie la plus laide - tout rassembler et exécuter un script en boucle avec un intervalle donné qui changera un curseur en fonction de la valeur de xset. Voici un simple qui fait ça:

#!/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

Mettez ce script dans un fichier, appliquez-y chmod +x (permission exécutable) et, après avoir configuré en fonction de votre situation et testé dans le terminal (par exemple, bash /home/glaz/my-dynamic-cursor-script), vous pouvez l'ajouter à votre démarrage automatique et ~ VIOLA ~

Peut-être pas la solution la plus gentille, mais ça fait le travail - du moins pour moi :)


Oh ... Cela fonctionne également lorsque vous utilisez cette fonctionnalité, cela permet une présentation différente pour chaque fenêtre. Ainsi, lorsque vous changez le focus en fenêtre différente, le curseur se met également à jour. Toutefois, il ne fonctionnera pas avec les applications. qui utilisent leurs propres curseurs personnalisés - de tels cas nécessiteraient une autre idée: suivre un curseur en temps réel et afficher une superposition à côté, mais je ne pense pas que ce soit aussi simple que cela ... cela pourrait nécessiter de coder une application/un démon spécialisé capable de réaliser cela.

3
GreggD