Como evito que o Skype inicie outra instância quando já está em execução?

3

Atualizar

Este problema foi finalmente corrigido com o Skype 4.0.0.7 para Linux. Isso torna a questão obsoleta para todos que instalaram o Skype diretamente do site. A versão 4.0+ será incluída nos repositórios do universo do Quantal (Ubuntu 12.10).

Apenas um pouco de incômodo desnecessário para corrigir aqui:

Suponha que você tenha o Skype para Ubuntu em execução. Você acidentalmente clica no lançador novamente. Do jeito que está agora, o Skype inicia uma segunda instância, que prontamente informa que ele não pode efetuar login. Há outra instância em execução. Para piorar as coisas: No próximo início regular do Skype, você terá que digitar novamente a senha salva, devido à "Falha na conexão".

Eu pensei que isso seria corrigido em breve, mas nem a Canonical nem a Microsoft se importam o suficiente. O aborrecimento continua existindo pelas últimas três atualizações pelo menos. Portanto, em uma abordagem para fornecer uma solução alternativa, postarei o que fiz para evitar esse comportamento. Talvez seja útil para alguns de vocês. Talvez isso aumente a consciência e cause uma correção.

Estou feliz por qualquer solução melhor. e esse é o propósito real da minha pergunta. Normalmente eu não respondo a mim mesmo. Então, alguém sabe de uma solução melhor para corrigir a instanciação dual do Skype?

    
por con-f-use 25.04.2012 / 14:42

1 resposta

1

Então, aqui está o que eu fiz para impedir que o Skype inicie outra instância:

Eu renomei o executável:

mv /usr/bin/skype /usr/bin/skype.bin

O executável original do skype será vinculado a um script que só inicia o Skype se nenhuma outra instância estiver sendo executada (aqui um link). Aqui está o pequeno script que eu chamei de skype-wrapper.sh . Ele verifica se o usuário já está executando o Skype:

#!/bin/bash
# Use this instead of the Skype executable in '/usr/bin/skype' to prevent
# Skype from running another instance. Rename the executable to 'skype.bin'
# beforehand.

if [ $# -gt 0 ]; then
    /usr/bin/skype.bin $@
elif [ ! -n "$(lsof /usr/bin/skype.bin | grep $USER)" ]; then
    /usr/bin/skype.bin 
fi

Você pode vinculá-lo ao nome original do executável do Skype assim:

ln -s /home/con-f-use/bin/skype-wrapper.sh /usr/bin/skype

Isso, obviamente, tem uma desvantagem: após uma atualização do Skype, é necessário refazer a renomeação do executável e da vinculação do script.

Mais uma vez, abra para uma solução melhor ou até mesmo uma correção do próprio Skype (olhando para você, Microsoft: -)

Editar: Como foi dito nos comentários, houve um problema menor com o ícone de notificação do Skype (um clique nele não alternaria a ocultação / exibição da janela do Skype). Isso agora é corrigido (e testado com o Ubuntu 10.04, 11.04 e 12.04).

Editar2: Com a versão mais recente do www.skype.com (no momento em que foi escrito, era 4.0.0.7), ao contrário da versão atual nos repositórios, o erro é fixo. Espero que a versão corrigida em algum momento encontre o caminho para os repositórios do Ubuntu.

    
por con-f-use 25.04.2012 / 14:47

Tags