A maneira mais elegante é "reiniciar" o ícone; para remover o ícone de sua posição no lançador e substituí-lo na mesma posição. O script abaixo faz o trabalho. Está em python2, desde 12.04 não vem com python3 por padrão. No entanto, ele também pode ser usado em python3, apenas altere a shebang nesse caso. O script também pode ser útil (em versões posteriores do Ubuntu também) para aplicar imediatamente um ícone alterado, por exemplo.
Você pode simplesmente usá-lo chamando o script, com o arquivo da área de trabalho editado como um argumento (veja mais abaixo).
Observação : em 12.04, se um ícone atualizado representar um aplicativo em execução , o aplicativo em questão falhará, conforme descrito em esta pergunta , portanto, se você usá-lo, verifique se o aplicativo não está sendo executado. Em 14.04, o ícone simplesmente não será atualizado no caso de um aplicativo em execução.
O script
#!/usr/bin/env python
import subprocess
import time
import sys
desktopfile = sys.argv[-1]
def read_currentlauncher():
# reads the current launcher contents
get_launcheritems = subprocess.Popen([
"gsettings", "get", "com.canonical.Unity.Launcher", "favorites"
], stdout=subprocess.PIPE)
return get_launcheritems.communicate()[0].decode("utf-8")
def set_launcher(llist):
# sets a defined unity launcher list
current_launcher = str(llist).replace(", ", ",")
subprocess.Popen([
"gsettings", "set", "com.canonical.Unity.Launcher", "favorites",
current_launcher,
])
def refresh_icon(desktopfile):
current_launcher = read_currentlauncher()
current_launcher_temp = eval(current_launcher)
item = [item for item in current_launcher_temp if desktopfile in item][0]
index = current_launcher_temp.index(item)
current_launcher_temp.pop(index)
set_launcher(current_launcher_temp)
time.sleep(2)
set_launcher(current_launcher)
refresh_icon(desktopfile)
Como usar
- Copie o script acima em um arquivo vazio e proteja-o como
refresh.py
- Por conveniência, torne-o executável
-
Atualize o ícone pelo comando:
/path/to/script/refresh.py name_of_edited_desktopfile (e.g. 'firefox.desktop')
Se você realmente deseja suavizar
-
Torne o script executável, remova a extensão
.py
, salve em~/bin
. Após o log out / in, você pode executá-lo pelo comando:refresh firefox.desktop (as an example)