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.