Après avoir souffert d'un bug dans Redshift , j'ai trouvé un excellent remplaçant, Iris.
J'ai placé le dossier Iris
dans mon répertoire home
et ajouté la commande suivante aux applications de démarrage sh /home/arun/Iris/Iris.sh
.
Tout fonctionne à merveille, mais au démarrage, la fenêtre de l'interface graphique des paramètres se lance également. Tout ce dont j'ai vraiment besoin, c'est de l'icône du petit panneau indicateur. Un peu comme la fonction "Masquer" dans les "éléments de connexion" d'OS X.
Peut-on y parvenir?
Si nous fermons la fenêtre des paramètres d'Iris avec le X
, il est apparemment fermé.
Si nous faisons de même, avec l'aide de wmctrl
(wmctrl -ic <window_id>
) cependant, il s'avère que non seulement la fenêtre est fermée, mais l'application complète.
Ma conclusion est alors que la fenêtre n'est pas réellement fermée , mais non mappée lorsque nous appuyons sur X
.
Nous pouvons faire de même avec l'aide de xdotool
. Avec une version modifiée de cette réponse: Comment puis-je exécuter un programme au démarrage, minimisé? , nous pouvons alors démarrer Iris
sans que la fenêtre des paramètres apparaisse.
Le script utilise à la fois wmctrl
et xdotool
:
Sudo apt-get install wmctrl xdotool
Copiez le script ci-dessous dans un fichier vide, enregistrez-le dans le même répertoire que votre Iris.sh
fichier (donc ils sont ensemble dans le même répertoire), comme start_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
Exécutez maintenant la commande suivante au lieu de la commande d'origine pour démarrer Iris
:
python3 /path/to/start_iris.py
La fenêtre des paramètres n'apparaîtra plus!
Iris.sh
, et le lance.WM_CLASS
Iris
(votre fenêtre de paramètres).S'il a trouvé la fenêtre ciblée, il démappe la fenêtre avec la commande xdotool
:
xdotool windowunmap <window_id>
Évidemment, cliquer sur le X
de la fenêtre des paramètres démappe également la fenêtre.
Apparemment, cela se fait d'une manière différente de xdotool
. La conséquence est que vous ne pouvez pas accéder à la fenêtre des paramètres (à partir du menu indicateur), sans redémarrer Iris
.
Vous avez mentionné cependant que vous n'avez normalement pas besoin du tout de la fenêtre des paramètres .
Notez que lors du démarrage des applications GUI à partir des applications de démarrage (en particulier lorsque cela implique des paramètres d'écran), vous devrez peut-être ajouter une petite pause pour que cela fonctionne correctement. Si cela ne fonctionne pas à partir des applications de démarrage, modifiez la commande à ajouter aux applications Stratup en:
/bin/bash -c "sleep 10 && python3 /path/to/start_iris.py"