web-dev-qa-db-fra.com

Est-il possible d'activer le vol de focus sous Wayland? (Gnome Shell 3.26, Ubuntu 17.10)

Je viens de passer de XOrg à Wayland sous Ubuntu 17.10.

Dites que je suis dans Nautilus et que je clique sur un fichier texte. Auparavant, j’étais automatiquement passé à gedit (à chaque fois que je clique sur un fichier, même si gedit était déjà ouvert).

Sur Wayland, cela se produit la première fois que je clique sur un fichier (lorsque gedit est ouvert pour la première fois), mais après cela, il ne bascule plus. gedit ouvre simplement les fichiers texte en arrière-plan sans même une fenêtre de notification disant "blablabla.txt est prêt dans gedit".

Sous XOrg gnome-Shell, je pouvais installer une extension appelée Steal My Focus (il existe également une version mise à jour pour la version 3.26 qui peut être trouvée ici ). Aucune de ces extensions ne semble plus fonctionner.

Il y avait aussi un gsetting qui faisait la même chose que ces extensions:

gsettings set org.gnome.desktop.wm.preferences focus-new-windows 'strict'

Et cela ne semble plus fonctionner non plus.

Comme cela se produit juste après que je suis passé à Wayland, je suppose que c'est lié à Wayland.

Quiconque réussissait à désactiver la protection contre le vol de focus sous Wayland. Si non, quelqu'un a des idées? suggestions?

2
thebunnyrules

Eh bien, je ne sais pas si ce bogue se produit uniquement dans ma machine ou s'il est plus répandu. Je peux me tromper, mais je suppose que cela est probablement dû à une restriction de sécurité qui empêche les applications de se focaliser sur les fenêtres déjà ouvertes (pour autant que je sache, le gestionnaire de fenêtres est censé gérer ces choses maintenant et non le serveur d'affichage comme dans X). ). Je suppose qu’il s’agit d’un problème de transition et que gnome donnera éventuellement à gedit la possibilité de centrer de nouveaux onglets.

En attendant ce correctif, j'ai proposé un correctif partiel qui enverra une notification lorsqu'un nouvel onglet est ouvert dans gedit. Cela ne résout pas le problème de la mise au point automatique, mais au moins, cela vous donne une sorte de repère afin que vous ne restiez pas assis pendant 2 ou 3 secondes à vous demander pourquoi votre fenêtre ne s’était pas encore ouverte.

Dans un terminal non root, entrez:

gedit admin:///usr/bin/gedit-notify

Dans gedit-notify, collez le script suivant:

#!/bin/bash
# purpose of this script: gedit under gnome Wayland has pretty messed up focusing and activation problems. First document/tab opened will focus normally but all the following ones open in the background without the traditional notification: "Your window is now read, click to focus". Its very distracting behavior because for the first 2 seconds you're wondering if your click was registered or not, if the app opened or not, etc. This script sends a notification every time you open a text file in the background. 

skip_list=true # you get notified but your notification list doesn't get spammed.

    gedit_inst=$(ps ax|grep " gedit "|wc -l)      #total number gedit windows + 1
    gedit_inst=$(expr $gedit_inst - 1)          #remove one from the count to account for the grep " gedit " process
    gedit_s=$(ps ax|grep " gedit -s"|wc -l)         # -s switch represents signle / independent instance for gedit. 
                                                # gedit_s represents the number of gedit windows running as 
                                                # independent instances + 1
    gedit_s=$(expr $gedit_s - 1)                # same logic as before
    gedit_inst=$(expr $gedit_inst - $gedit_s)   #substracts the # of windows running in independent instances 
                                #from total cound - because they don't affect the focus behavior. 
    if [ "$skip_list" = true ]; then
        n_arg0="--hint";n_arg1="int:transient:1"
    else
        n_arg0="-u";n_arg1="low"
    fi

    if [ "$gedit_inst" = 0 ]; then notify=false;fi 

n=0
while true; do
    n=$(expr $n + 1)
    file=$(eval echo \$$n)
    if ! [ -z "$file" ]; then 
        gedit "$file" &
        if [ -z "$err" -o "$err" = 0 ]; then 
                err="$?"
        fi
    else
        count=$(expr $n - 1) 
        if [ $count = 0 ]; then 
            if [ "$notify" != false ]; then notify-send $n_arg0 $n_arg1 "TEXT EDITOR is ready. Activate it manually.";fi
            gedit
        fi
        break; 
    fi          
done

if [ "$err" = 0 -a "$notify" != false ]; then 
    if [ $count -gt 1 ]; then
        notify-send $n_arg0 $n_arg1 "TEXT EDITOR is ready. Activate it manually." "$count files were opened."
    Elif [ $count = 1 ]; then
        notify-send $n_arg0 $n_arg1 "TEXT EDITOR is ready. Activate it manually." "file: \"$1\""
    fi
Elif [ "$err" != 0 ]; then
    notify-send -i error "TEXT EDITOR: I ran into some error(s) while opening your file(s)."
fi

save gedit-notify, et entrez:

cd /usr/bin
Sudo chmod +x gedit-notify; Sudo touch gedit-notify
gedit admin:///usr/share/applications/gedit-notify.desktop

dans gedit-notify.desktop, collez le code suivant:

[Desktop Entry]
Name=Text Editor (Notify)
Comment=Edit text files
Exec=gedit-notify %U
Terminal=false
Type=Application
StartupNotify=true
Icon=gedit
Categories=GNOME;GTK;Utility;TextEditor;
X-GNOME-DocPath=gedit/gedit.xml
X-GNOME-FullName=Text Editor
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=gedit
X-GNOME-Bugzilla-Component=general
X-GNOME-Bugzilla-Version=3.22.1
X-GNOME-Bugzilla-ExtraInfoScript=/usr/share/gedit/gedit-bugreport.sh
Actions=new-window;new-document;
Keywords=Text;Editor;Plaintext;Write;
X-Ubuntu-Gettext-Domain=gedit

X-AppStream-Ignore=true

[Desktop Action new-window]
Name=New Window
Exec=gedit --new-window

[Desktop Action new-document]
Name=New Document
Exec=gedit --new-document

Cela créera un raccourci sur le bureau qui apparaîtra en tant qu'éditeur de texte (notifier) ​​dans votre tableau de bord et dans le menu Ouvrir avec. Dans Nautilus, parcourez, trouvez un fichier texte, cliquez dessus avec le bouton droit de la souris, sélectionnez Propriétés, cliquez sur l’onglet Ouvrir avec, sélectionnez "Éditeur de texte (Notify)", défini par défaut. Il y aura 4 ou 5 types de fichiers texte différents pour lesquels ce processus doit être répété. Rincer et répéter.

0
thebunnyrules