Como impedir que um aplicativo fixo inicie uma nova instância se já estiver em execução?

3

Eu tenho um programa que eu escrevi em Python e adicionei ao Gnome com um arquivo de desktop. Quando clico no ícone fixo do Gnome para iniciá-lo, ele duplica o ícone na minha barra de tarefas e abre uma nova instância. Outros aplicativos colados apenas colocam uma linha abaixo deles. Quando você clica nesses outros aplicativos (como o Chrome ou o Sublime Text) e eles já estão em execução, o gnome simplesmente pula para a janela, em vez de iniciar uma nova instância.

Esse comportamento é algo que preciso manipular em meu aplicativo ou isso é algo que o Gnome pode manipular para mim? É um aplicativo PyQt4 com um lançador bash se isso fizer diferença.

Editar- Esqueci de mencionar que estou executando o Ubuntu-Gnome 16.10 com o Gnome 3.20.4

    
por phimath 16.11.2016 / 21:54

2 respostas

3

Eu tenho isso para trabalhar.

Você precisa adicionar a chave 'StartupWMClass' à sua entrada na área de trabalho.

StartupWMClass: Se especificado, é sabido que o aplicativo mapeará pelo menos uma janela com a string fornecida como sua classe WM ou dica de nome WM.

Informações de protocolo aqui com mais detalhes aqui .

Você pode instalar o xprop, executá-lo e clicar na barra de título para descobrir qual classe é o seu aplicativo.

    
por 18.08.2017 / 02:27
2

Eu não sei sobre a API do Python, mas isso está relacionado a GtkApplication .

Leia o wiki GtkApplication HowDoI que diz:

GtkApplication defaults to applications being single-instance

Veja também esta questão .

    
por 13.08.2017 / 19:01