Depois de sofrer umbug no Redshift, encontrei um ótimo substituto,Íris.
Coloquei a Iris
pasta em meu home
diretório e adicionei o seguinte comando a Startup Applications sh /home/arun/Iris/Iris.sh
.
Tudo isso funciona perfeitamente, mas na inicialização, a janela da GUI de configurações também é iniciada. Tudo que eu realmente preciso é do pequeno ícone indicador do painel. Mais ou menos como a função "Ocultar" nos "Itens de login" do OS X.
Isso pode ser alcançado?
Responder1
A janela de configurações da íris
Se fecharmos a janela de configurações do Iris com o X
, éaparentementefechado.
Se fizermos o mesmo, com a ajuda de wmctrl
( wmctrl -ic <window_id>
), porém, verifica-se que não apenas ojanelaestá fechado, mas o aplicativo completo.
Minha conclusão é então que a janela não é realmentefechado, masnão mapeadoquando pressionamos o X
.
Podemos fazer o mesmo com a ajuda de xdotool
. Com uma versão editada desta resposta:Como posso executar um programa na inicialização, minimizado?, podemos então inicializar Iris
sem que a janela de configurações apareça.
Iniciando a írissema janela de configurações (script)
O script usa ambos
wmctrl
exdotool
:sudo apt-get install wmctrl xdotool
Copie o script abaixo em um arquivo vazio e salve-o emo mesmo diretório do seu
Iris.sh
arquivo(então eles estão juntos no mesmo diretório), comostart_iris.py
.#!/usr/bin/env python3 import subprocess import time import sys import os command = os.path.dirname(sys.argv[0])+"/Iris.sh" subprocess.Popen(["/bin/bash", "-c", command]) def get(cmd): return subprocess.check_output(cmd).decode("utf-8").strip() t = 0 while t < 12: time.sleep(1) try: w_list = [l.split()[0] for l in get(["wmctrl", "-l"]).splitlines() if "Iris" in l] for w in w_list: check = [l for l in get(["xprop", "-id", w]).splitlines()\ if "WM_CLASS(STRING)" in l][0] if "Iris" in check: subprocess.Popen(["xdotool", "windowunmap", w]) break break except (IndexError, subprocess.CalledProcessError): pass t += 1
Agora execute o seguinte comando em vez do comando original para iniciar
Iris
:python3 /path/to/start_iris.py
A janela de configurações não aparecerá mais!
Explicação
- O roteiro analisaprópriodiretório para o arquivo
Iris.sh
e o inicia. - Posteriormente, observa a criação de novas janelas de
WM_CLASS
Iris
(sua janela de configurações). Se encontrou a janela de destino,desmapeara janela com o
xdotool
comando:xdotool windowunmap <window_id>
Notas
Obviamente, clicar na
X
janela de configurações também desmapeia a janela.
Aparentemente, isso é feito de uma maneira diferente doxdotool
. A consequência é que você não pode acessar a janela de configurações (no menu do indicador) sem reiniciarIris
.Você mencionou, no entanto, que normalmente não precisa da janela de configuraçõesde forma alguma.
Observe que ao iniciar aplicativos GUI a partir de aplicativos de inicialização (especialmente quando envolve configurações de tela), pode ser necessário fazer uma pequena pausa para que funcione bem. Se não funcionar nos aplicativos de inicialização, altere o comando para adicionar aos aplicativos Stratup para:
/bin/bash -c "sleep 10 && python3 /path/to/start_iris.py"