Como forçar o gedit a abrir uma nova janela independentemente das janelas existentes do gedit sempre que um arquivo de texto é clicado duas vezes em um desktop Gnome do Debian 8?

7

Como o gedit pode ser forçado a abrir uma nova janela independentemente das janelas existentes do gedit sempre que um arquivo de texto (.txt) é clicado duas vezes em um desktop Gnome do Debian 8 Jessie?

Suponha que a.txt já esteja aberto em uma janela de gedit, e que b.txt seja clicado duas vezes em uma área de trabalho do Gnome do Debian 8 Jessie. Então, infelizmente pelo padrão de fábrica, b.txt será aberto em uma aba na mesma janela que a.txt.

No entanto, quero que o b.txt seja aberto em uma nova janela do gedit para que haja duas janelas - a janela existente para a.txt e uma nova janela para b.txt.

Se o Gnome invocou o gedit com a opção "-s", como em

gedit -s b.txt

então b.txt seria aberto em uma nova janela, enquanto a.txt permanece na janela existente.

No entanto, por padrão, o Gnome parece invocar o gedit sem a opção "-s".

O arquivo de configuração

/usr/share/applications/org.gnome.gedit.desktop

contém a diretiva de execução

Exec=gedit %U

Então, eu mudei para

Exec=gedit -s %U

pelos seguintes comandos e reiniciou o computador.

cd /usr/share/applications
su # similar to sudo
mv org.gnome.gedit.desktop org.gnome.gedit.desktop.bak
perl -pe 's/Exec=gedit %U/Exec=gedit -s %U/' org.gnome.gedit.desktop.bak > org.gnome.gedit.desktop
diff org.gnome.gedit.desktop org.gnome.gedit.desktop.bak

No entanto, esse método falhou. O b.txt ainda abre em uma aba na mesma janela que a.txt. Estou preso. Eu preciso da sua ajuda.

O modo padrão do gedit é "janela única, várias guias". Eu quero o modo "múltiplas janelas".

A propósito, o seguinte método inútil transforma o gedit no modo "janela única, sem guia", que não é o que eu quero.

gsettings set org.gnome.gedit.preferences.ui show-tabs-mode 'never'

Com este método "gsettings", o gedit automaticamente fecha a.txt e reutiliza a janela existente de a.txt para abrir b.txt nela sempre que b.txt é clicado duas vezes em uma área de trabalho. Assim, é o modo "janela única, sem aba" (em oposição a "múltiplas janelas").

(A propósito, o valor padrão para "show-tabs-mode" é 'auto'.)

    
por i7pj3qnuz 03.05.2017 / 20:21

1 resposta

4

O motivo pelo qual sua modificação da chave Exec no arquivo .desktop não funcionou é que o gedit é o DBus ativado. Isso significa que ele é iniciado por meio do daemon DBus da sua sessão e, em seguida, fornece uma interface DBus comum para esses programas ativáveis para especificar os arquivos a serem abertos. Você pode evitar isso alterando a tecla DBusActivatable para false .

Além disso, é muito melhor criar uma cópia do arquivo .desktop que você deseja modificar em seu diretório pessoal e usá-la para substituir a do sistema inteiro, em vez de modificar diretamente o sistema. Dessa forma, o sistema não será sobrescrito nas atualizações de pacotes da distribuição. Para isso basta copiar /usr/share/applications/org.gnome.gedit.desktop para ~/.local/share/applications/org.gnome.gedit.desktop . Os arquivos nesse caminho substituirão os arquivos com o mesmo nome do diretório do sistema.

Em seguida, há também uma diferença importante entre os dois possíveis flags usados para abrir uma nova janela: --new-window ou -s . Ambos resultarão na abertura dos arquivos em uma nova janela, mas com -s cada janela também pertencerá ao seu próprio processo. Ao usar --new-window , todas as janelas compartilham o mesmo processo de gedit.

E, finalmente, para garantir que isso também funcione se você selecionar vários arquivos no gerenciador de arquivos e abri-los, será necessária outra modificação da chave Exec . O %U significa que várias URLs são permitidas como argumentos para esse comando, o que significa que o gerenciador de arquivos o iniciaria assim: gedit --new-window file1.txt file2.txt . Isso resulta em uma única nova janela com duas guias. Se você alterar isso para %u agora, isso informará ao gerenciador de arquivos que o aplicativo aceita apenas uma única URL como argumento e, portanto, faz com que ele execute o comando várias vezes, cada vez com um arquivo diferente como seu argumento. Para obter mais detalhes, consulte a especificação de entrada do desktop freedesktop .

    
por 10.05.2017 / 10:50