Как я могу запретить скайпу запускать другой экземпляр, когда он уже запущен?


Обновление

Эта проблема наконец-то исправлена ​​в Skype 4.0.0.7 для Linux. Это делает вопрос устаревшим для каждого, кто установил Skype прямо с сайта. Версия 4.0+ будет включена в репозитории юниверсов для Quantal (Ubuntu 12.10).


Annoying Skype but (Another Skype instance may exist)

Просто немного излишнего раздражения, чтобы исправить это:

Предположим, у вас работает Skype для Ubuntu. Вы случайно нажимаете на лаунчер снова. Теперь Skype запускает второй экземпляр, который быстро сообщает, что не может войти в систему. Уже запущен другой экземпляр. Что еще хуже: при следующем регулярном запуске Skype вам потребуется повторно ввести сохраненный пароль из-за «Ошибка входа».

Я думал, что это будет исправлено в ближайшее время, но ни Canonical, ни Microsoft не заботятся достаточно. Раздражение продолжает существовать как минимум для последних трех обновлений. Таким образом, в подходе к решению проблемы я опубликую то, что я сделал, чтобы предотвратить такое поведение. Может быть, это полезно для некоторых из вас. Может быть, это повысит осведомленность и приведет к исправлению.

Я рад за лучшее решение, кстати. и это реальная цель моего вопроса. Обычно я не отвечаю на них сам. Так кто-нибудь знает лучшее решение для исправления двойного использования Skype?

3
задан 24 September 2012 в 18:43

1 ответ

Итак, вот что я сделал, чтобы запретить Skype запуск другого экземпляра:

Я переименовал исполняемый файл:

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

Исходный исполняемый файл Skype будет связан со сценарием, который Скайп запускается только в том случае, если другой экземпляр не запущен (здесь - мягкая ссылка). Вот небольшой сценарий, который я назвал skype-wrapper.sh. Он проверяет, запущен ли уже пользователь 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

Вы можете связать его с исходным именем исполняемого файла Skype, например:

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

Это, конечно, имеет один недостаток: После обновления Skype необходимо повторить переименование исполняемого файла и связывание скрипта.

Опять же, откройте для лучшего решения или даже для исправления самого Skype (глядя на вас, Microsoft: -)

Редактировать: Как сказано в комментариях, была небольшая проблема с иконкой уведомлений скайпа (щелчок по нему не переключал бы скрытие / отображение окна Skype). Теперь это исправлено (и протестировано с Ubuntu 10.04, 11.04 и 12.04).

Edit2: в последней версии с сайта www.skype.com (на момент написания статьи это было 4.0.0.7), в отличие от той, которая в настоящее время находится в репозиториях, ошибка исправлена. Я ожидаю, что исправленная версия в какой-то момент найдет свой путь в репозитории Ubuntu.

0
ответ дан 24 September 2012 в 18:43

Другие вопросы по тегам:

Похожие вопросы: