更新
这个问题最终在 Linux 版 Skype 4.0.0.7 中得到解决。对于直接从网站安装 Skype 的用户来说,这个问题将不复存在。版本 4.0+ 将包含在 Quantal(Ubuntu 12.10)的 Universe 存储库中。
这里只需要修复一些不必要的烦恼:
假设您正在运行 Ubuntu 版 Skype。您不小心再次点击了启动器。现在的情况是,Skype 启动了第二个实例,它会立即告诉您无法登录。另一个实例已经在运行。更糟糕的是:下次正常启动 Skype 时,由于“登录失败”,您将不得不重新输入已保存的密码。
我以为这个问题很快就会得到解决,但 Canonical 和 Microsoft 都不太在意。至少在过去的三次更新中,这个问题依然存在。因此,为了提供一种解决方法,我将发布我为防止这种行为所采取的措施。也许这对你们中的一些人有用。也许它会提高人们的认识并导致修复。
顺便说一句,我很高兴能找到更好的解决方案。这就是我提问的真正目的。通常我不会亲自回答这些问题。那么有谁知道更好的解决方案来修复 Skype 的双实例吗?
答案1
因此,我采取了以下措施来防止 Skype 启动另一个实例:
我已将可执行文件重命名为:
mv /usr/bin/skype /usr/bin/skype.bin
原始 skype 可执行文件将链接到一个脚本,该脚本仅在没有其他实例运行时启动 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 本身(看着微软:-)
编辑:正如评论中所说,Skype 的通知图标存在一个小问题(单击它不会切换隐藏/显示 Skype 窗口)。现在已修复(并使用 Ubuntu 10.04、11.04 和 12.04 进行了测试)。
编辑 2:使用 www.skype.com 提供的最新版本(撰写本文时为 4.0.0.7),而不是当前存储库中的版本,错误已修复。我预计修复后的版本最终会进入 Ubuntu 存储库。