Não é um dupe
Muito relacionado este , mas um pouco diferente, já que o ícone intermitente e não-responsivo é um problema diferente, não resolvido adicionando:
StartupNotify=false
para o lançador; o ícone continuará piscando por aprox. sete segundos. Embora os problemas em ambas as perguntas tenham o mesmo histórico, os sintomas e a possível solução são ligeiramente diferentes.
A causa
Após iniciar os aplicativos da interface gráfica do Unity Launcher (clicando no ícone), o ativador aguarda a exibição de uma janela. Enquanto espera, o cursor pisca. Leva o lançador um tempo antes que chegue à conclusão de que sua "data" (a janela) não aparecerá. Enquanto espera, no entanto, o lançador não aceita novos cliques para executar o script (novamente).
A solução na pergunta vinculada acima, adicionando
StartupNotify=false
faz resolver a roda giratória do cursor do mouse, mas não faz o ícone responder novamente.
Então, o que funciona?
A outra solução na resposta vinculada, no entanto (abrir uma janela invisível falsa ao iniciar um script não-GUI a partir do iniciador Unity) também resolverá o problema do ícone piscante.
Da resposta vinculada:
- Crie, se ainda não existir, o diretório
~/bin
-
Copie o script abaixo em um arquivo vazio, salve-o como
fake_window
(sem extensão) em~/bin
e torne-o executável#!/usr/bin/env python3 from gi.repository import Gtk from threading import Thread import time import subprocess """ This is a self-destroying window, to "feed" Unity a fake-window, preventing the launcher to show a spinning wheel, waiting for a window to appear. Include the command to run this script at the end of the (your) script. """ class FakeWin(Gtk.Window): def __init__(self): Gtk.Window.__init__(self, title="1526closeme") Thread(target = self.close).start() def close(self): t = 0 while t < 150: time.sleep(0.2) try: pid = subprocess.check_output(["pgrep", "-f", "fake_window"])\ .decode("utf-8").strip() subprocess.Popen(["kill", pid]) break except subprocess.CalledProcessError: pass t += 1 def fakewindow(): window = FakeWin() # make our window transparent window.set_opacity(0) window.set_default_size(0,0) window.show_all() Gtk.main() fakewindow()
-
Adicione ao final do seu script o comando:
fake_window
-
Faça logout e volte em (ou execute
source ~/.profile
)
Agora, o ícone não piscará por sete segundos se você executar o script no Iniciador Unity.