答案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 编辑器,导航至com→ canonical→ indicator→ messages。
在右侧窗格中删除'empathy.desktop'
,注销并重新登录。
现在,指示栏中不再出现 Empathy 图标。
笔记:
下次打开 Empathy 时,图标将重新出现,您必须重复该过程。
如果要永久删除图标,您必须执行以下命令:
sudo apt-get remove indicator-messages
缺点是,Thunderbird 图标也将被删除 - 因此决定权在您手中......