É possível ativar o Focus Stealing em Wayland? (Gnome Shell 3.26, Ubuntu 17.10)

2

Acabei de mudar para o Wayland do XOrg no Ubuntu 17.10.

Digamos que eu esteja no Nautilus e clico em um arquivo de texto. Costumava ser para mim que eu era automaticamente alternado para o gedit (toda vez que eu clico em um arquivo, mesmo que o gedit já estivesse aberto).

No Wayland, isso acontece na primeira vez que eu clico no arquivo (quando o gedit é aberto pela primeira vez), mas depois ele não muda mais. O gedit simplesmente abre arquivos de texto em segundo plano, mesmo sem um popup de notificação dizendo "blablabla.txt está pronto no gedit".

No XOrg gnome-shell, eu costumava instalar uma extensão chamada Steal My Focus (há também uma versão atualizada para o 3.26 que pode ser encontrada aqui ). Nenhuma dessas extensões parece funcionar mais.

Houve também uma alteração que fez o mesmo que estas extensões:

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

E isso parece não funcionar mais.

Já que isso está acontecendo logo depois que eu mudei para o Wayland, acho que isso é relacionado ao Wayland.

Alguém conseguiu desabilitar a proteção contra roubo de foco em Wayland. Se não, alguém tem alguma ideia? sugestões?

    
por thebunnyrules 10.01.2018 / 04:01

2 respostas

0

Bem, não tenho certeza se esse bug está ocorrendo apenas na minha máquina ou se é mais comum. Eu poderia estar errado, mas eu estou supondo que isso é provavelmente devido a alguma restrição de segurança que impede que os aplicativos se concentrem em janelas já abertas (tanto quanto eu sei que o gerenciador de janelas deve manipular essas coisas agora e não o servidor de exibição como no X ). Eu estou supondo que este é um problema de transição e que o gnome eventualmente dará ao gedit a capacidade de focar novas abas.

Enquanto aguardo esta correção, criei uma correção parcial que enviará uma notificação quando uma nova guia for aberta no gedit. Isso não corrige o problema de autofoco, mas pelo menos lhe dá uma espécie de sugestão para que você não fique parado por 2 ou 3 segundos imaginando por que sua janela ainda não abriu.

Em um terminal não-root, insira:

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

Em gedit-notify , cole o seguinte script:

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

salve gedit-notify e digite:

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

em gedit-notify.desktop , cole o seguinte código:

[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

Isso criará um atalho na área de trabalho que será exibido como Editor de texto (notificar) em seu painel e no menu Abrir com. No nautilus, navegue, localize um arquivo de texto, clique com o botão direito nele, selecione Propriedades, clique na aba Abrir com, selecione "Editor de Texto (Notificar)", definido como padrão. Haverá 4 ou 5 tipos diferentes de arquivos de texto que precisam ter esse processo repetido. Enxague e repita.

    
por thebunnyrules 21.02.2018 / 05:30
0

Para ter um arquivo que é lançado em um editor já aberto (ou processador de texto) imediatamente vem ao primeiro plano em vez de ser notificado "que está pronto", instale a extensão apropriadamente chamada de shell do gnome Noannoyance , que deve funcionar tanto no xorg quanto no Wayland.

Você pode instalá-lo no centro de software do Ubuntu. Você irá, infelizmente, não encontrá-lo em "Software". No entanto, você pode instalá-lo com o comando

sudo apt install gnome-shell-extension-no-annoyance

ou use o gerenciador gráfico de pacotes Synaptic (não instalado por padrão) para instalar o pacote.

Após a instalação, a extensão está disponível para todos os usuários no sistema. Você precisa ativar a extensão. Você pode fazer isso usando o Gnome Tweaks , que pode ser necessário instalar porque não está instalado no Ubuntu por padrão.

    
por vanadium 16.10.2018 / 17:58