如何删除Skype面板图标?

当我使用Docky Skype指示灯时,绿色Skype图标在所有灰色图标旁边看起来不太好 – 从系统托盘中删除图标会很不错。

这可能吗? 我怎么能在Ubuntu 12.04或其他早期版本中做到这一点?

删除sni-qt 情况下删除12.04中的Skype面板图标

  • 如果您不关心sni-qt ,删除图标就像执行apt-get remove sni-qt sni-qt:i386一样简单apt-get remove sni-qt sni-qt:i386
  • 安装Skype提供的deb不是解决方案; 所有Ubuntu版本都捆绑了相同的Skype deb,但使sni-qt成为启用图标的依赖项。

一个简单的配置文件调整或安装/删除包不会这样做,我们需要在这里潦倒和肮脏。

  • sni-qt由这些共享库提供:

     /usr/lib/i386-linux-gnu/qt4/plugins/systemtrayicon/libsni-qt.so
     /usr/lib/x86_64-linux-gnu/qt4/plugins/systemtrayicon/libsni-qt.so
    
  • 在保留sni-qt供其他应用程序使用的同时删除Skype图标的有保证的方法是阻止Skype加载这些共享库。

  • 这可以通过以下两种方式之一来完成:文明方式和蛮力的bash-hacker方式。


1.强烈推荐:使用apparmor阻止Skype加载sni-qt

  • AppArmor是一个内置于Linux内核中的安全框架,它为程序可以访问和不可访问的内容设置权限。 它在Ubuntu中默认启用。

  • Skype的示例配置文件包含在app-armor配置文件中; 我已经修改了用于实现禁用面板图标的目标 – 其他安全function已被删除。

  • 您可以查看此处粘贴的个人资料。 第24-25行是对我们很重要的。

警告 :此配置文件不提供任何其他类型的安全性 – Skype将正常运行。 请在此处查看更完整的Skype AppArmor配置文件,如果您想进一步保护Skype,可以使用该配置文件。

如何安装

  • 要安装,请退出Skype(如果它正在运行),然后使用Ctrl-Alt-T打开终端,然后键入/粘贴以下内容以将粘贴的配置文件安装到apparmor配置文件目录中。 (如果您愿意,也可以手动将其粘贴到/etc/apparmor.d/usr.bin.skype

    sudo wget -O/etc/apparmor.d/usr.bin.skype http://pastebin.com/raw.php?i=2EYME5eF

  • 然后键入sudo /etc/init.d/apparmor reload加载所有配置文件,包括我们刚刚添加的skype。 等几秒钟……

  • 要检查配置文件是否已启用,请键入sudo apparmor_status | egrep "mode|skype" sudo apparmor_status | egrep "mode|skype"

    • 结果应该显示如下:Skype应该在“强制模式”之后,但在任何其他模式之前:
       21个配置文件处于强制模式。
      在/ usr / bin中/ SKYPE
       22个档案处于抱怨模式。
      
  • 启动Skype,面板图标应该会消失!

如何将此行为添加到我自己的Skype AppArmor配置文件中?

  • 只需在配置文件的开头附近添加这些行,就在include之后(它们只是阻止Skype读取/加载sni-qt库)

     deny /usr/lib/i386-linux-gnu/qt4/plugins/systemtrayicon/libsni-qt.so r,
     deny /usr/lib/x86_64-linux-gnu/qt4/plugins/systemtrayicon/libsni-qt.so r,
    

2.不推荐:丑陋的bash hack

  • 我只会给伪代码以防止新的内容陷入陷阱,但是执行以下操作的简单bash脚本也足以禁用面板图标:
    1. 删除适当的libsni-qt.so的读取权限,因为uid(用户)skype正在运行。
    2. 启动Skype,等一下,这样就可以了。
    3. (图标消失了,因为Skype无法加载sni-qt。)
    4. 恢复libsni-qt.so的权限。

仅适用于Ubuntu 11.04 Natty

  1. 通过命令行界面(快速) – OMGubuntu社区提出了这个答案 :

    在终端中输入

     gsettings get com.canonical.Unity.Panel systray-whitelist 

    这将输出类似于:

     ['JavaEmbeddedFrame', 'Mumble', 'Wine', 'Skype', 'hp-systray', 'scp-dbus-service'] 

    我们要从此白名单中删除Skype,因此请在新命令中复制/粘贴此输出并删除“Skype”条目,如下所示:

     gsettings set com.canonical.Unity.Panel systray-whitelist "['JavaEmbeddedFrame', 'Mumble', 'Wine', 'hp-systray', 'scp-dbus-service']" 
  2. 通过图形用户界面(更易于访问), 通过con-f-use提出来回答这个问题 。 只需按照他/她的建议做相反的事情。

现在,下次登录时,Skype图标将消失。


请注意,安装pidgin-skype 安装pidgin-skype 包将使您能够添加您的Skype帐户以换位思考 – 使您可以通过优雅的菜单控制您的Skype状态。

我的系统上的/usr/share/icon/skype.png没有图标。 托盘图标不是用于启动,而是用于报告状态。 它显示您的在线状态(在线,离开,dnd,…),并报告是否有新消息传入。 因此,它是动态的。

它似乎嵌入在Skype二进制文件中,无法改变它。 我非常希望能够对此进行纠正,因为我也鄙视那个绿色斑点。

从您的系统中删除sni-qt软件包,它应该消失,我想。

据我所知,您不能从系统托盘中删除Skype,但如果您没有使用它的任何软件或替换此处的Skype图标,您可以做的是删除系统托盘: /usr/share/icon/skype.png按你想要的。