Так как я настроил Сочувствие, мне показали новый значок в панели кнопок индикатора. Этот значок остается видимым, даже если я закрываю Сочувствие.
Как у меня может быть этот значок, исчезают если не с помощью Сочувствия?
Вдохновленный статьей-netbox' ответ, можно автоматически удалить значок после 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.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
Выйдите из системы и въезжайте задним ходом
Установите dconf-editor
, инструмент... открывает терминал и выполняется:
sudo apt-get install dconf-editor
<час> Открытый dconf Редактор , перейдите к com в †’ канонический в †’ индикатор в †’ сообщения .
Удаляют 'empathy.desktop'
на правой панели, выходят из системы и въезжают задним ходом.
Теперь значок Empathy больше не появляется в панели индикатора.
<час>Примечание:
В следующий раз, когда Вы открываете Empathy, значок вновь появится, и необходимо повторить процедуру.
, Когда Вы хотите постоянно удалить значок, необходимо выполнить следующую команду:
sudo apt-get remove indicator-messages
оборотная сторона, что значок Thunderbird будет также удален - таким образом, решение будет ваше дело...