我如何隐藏 Empathy 的邮件指示器图标?

我如何隐藏 Empathy 的邮件指示器图标?

由于我已配置 Empathy,指示图标栏中会显示一个新图标。即使我关闭 Empathy,此图标仍然可见。

当不使用 Empathy 时,如何让这个图标消失?

在此处输入图片描述

答案1

受到 cl-netbox 答案的启发,你可以自动地关闭后删除图标empathy。这可以通过运行(启动)empathy包装器脚本来完成。据我所知,这没有缺点。唯一的缺点是可能的缺点是右键单击选项打开用不起作用,但这并不适用于empathy

包装器只会在 empathy 运行期间运行,并等待其关闭,因此解决方案非常具体。

它能做什么

  • 当运行 empathy 时(通过包装器),会启动一个小脚本,执行两件事:

    • empathy通过以下命令查看指示器是否可见:

      gsettings get com.canonical.indicator.messages applications
      

      这将返回当前指标的列表。如果empathy未包含该指标,脚本会将其添加到列表中并通过以下命令设置更改后的列表:

      gsettings set com.canonical.indicator.messages applications <newlist>
      
    • 然后,脚本查找empathy窗口是否存在
      ,如果不再存在同理心窗口,脚本将再次获取指标列表并以相同方式删除指标。

  • 然后包装脚本将自行终止,并且您的图标将从面板中删除。

包装器

#!/usr/bin/env python3
import subprocess
import time

key = "com.canonical.indicator.messages"

def hide_icon(icon, mode):
    # function to remove the targeted icon from the list
    current = eval(subprocess.check_output([
        "gsettings", "get", key, "applications"
        ]).decode("utf-8").strip())
    if mode == "h":
        try:
            current.remove(icon)
        except ValueError:
            pass
    elif mode == "s":
        if not icon in current:
            current.append(icon)
    subprocess.call([
        "gsettings", "set", key, "applications", str(current)
        ])

# run empathy
subprocess.Popen(["empathy"])
# make sure the icon shows
hide_icon('empathy.desktop', "s")

while True:
    time.sleep(3)
    try:
        # get the pid of empathy
        pid = subprocess.check_output(["pgrep", "empathy"]).decode("utf-8").strip()
    except subprocess.CalledProcessError:
        break
    else:
        try:
            # see if the pid of empathy is still in the window list...
            wlist = subprocess.check_output(["wmctrl", "-lp"]).decode("utf-8")
            # ...if not, remove the icon from the list and break
            if not pid in wlist:
                hide_icon('empathy.desktop', "h")
                break
        except subprocess.CalledProcessError:
            pass

如何设置

  • 将脚本复制到一个空文件中,另存为no_indicator.py

  • 使用以下命令测试运行脚本:

    python3 /path/to/no_indicator.py
    

    如果您关闭 empathy,图标应该会消失。如果一切正常:

  • 将全局empathy.desktop文件复制到~/.local/share/applications

    cp /usr/share/applications/empathy.desktop ~/.local/share/applications
    
  • 使用以下命令打开本地复制的文件gedit

    gedit ~/.local/share/applications/empathy.desktop
    

    替换以下行:

    Exec=empathy
    

    经过:

    Exec=python3 /path/to/no_indicator.py
    
  • 在以 开头的行之前(上方)Actions=,插入以下行:

    StartupWMClass=empathy
    

    这是为了防止运行时启动器中出现多余的图标empathy

  • 注销并重新登录

答案2

安装dconf-editor工具...打开终端并执行:

sudo apt-get install dconf-editor  

打开dconf 编辑器,导航至comcanonicalindicatormessages

在此处输入图片描述

在右侧窗格中删除'empathy.desktop',注销并重新登录。

在此处输入图片描述

现在,指示栏中不再出现 Empathy 图标。


笔记:

下次打开 Empathy 时,图标将重新出现,您必须重复该过程。
如果要永久删除图标,您必须执行以下命令:

sudo apt-get remove indicator-messages  

缺点是,Thunderbird 图标也将被删除 - 因此决定权在您手中......

相关内容