J'essayais de contrôler le comportement de Ubuntu 14.4.1 Launcher. Je veux qu'il se cache automatiquement chaque fois que j'ai une fenêtre de navigateur comme firefox maxmaized. J'ai trouvé cette solution:
#!/bin/bash
## Change value of "hide" to the command which worked for you to hide the panel
hide='gsettings set com.canonical.Unity2d.Launcher hide-mode 1;'
## Change value of "show" to the command which worked for you to show the panel when it was hidden
show='gsettings set com.canonical.Unity2d.Launcher hide-mode 0;'
## Look for the grep value, add a new browser or application name followed by "\|" eg: 'firefox\|google\|chromium'
while [ 1 ]
do z=$(wmctrl -l -p | grep -i 'firefox\|google');
if [ -n "$z" ]; then
eval $hide
else
eval $show
fi;
sleep 2;
done;
mais cela semble trop vieux pour fonctionner alors j'ai trouvé ceci
J'ai essayé de combiner les deux scripts, alors voici ce que j'ai fait:
#!/bin/bash
AUTOHIDE=$(dconf read /org/compiz/profiles/unity/plugins/unityshell/launcher-hide-mode)
if [[ $AUTOHIDE -eq 1 ]]
then
dconf write /org/compiz/profiles/unity/plugins/unityshell/launcher-hide-mode 0
else
dconf write /org/compiz/profiles/unity/plugins/unityshell/launcher-hide-mode 1
fi
## Look for the grep value, add a new browser or application name followed by "\|" eg: 'firefox\|google\|chromium'
while [ 1 ]
do z=$(wmctrl -l -p | grep -i 'firefox\|google');
if [ -n "$z" ]; then
eval $hide
else
eval $show
fi;
sleep 2;
done;
Mais le script ne fonctionne pas. Quelqu'un peut-il affiner ce script et le faire fonctionner?
Ci-dessous deux versions d'un script pour masquer automatiquement le programme de lancement lorsque la fenêtre d'une application est agrandie. Les scripts sont testés le 14.04/14.10/16.04
Les deux scripts reconnaissent que les fenêtres sont iconisées, il n'y a donc aucune raison de masquer automatiquement et les deux scripts fonctionnent en fonction de l'espace de travail; le lanceur active uniquement le masquage automatique sur les espaces de travail dans lesquels une ou plusieurs fenêtres sont agrandies.
Les scripts utilisent wmctrl
pour mapper les fenêtres actuellement ouvertes. Vous devrez peut-être l'installer:
Sudo apt-get install wmctrl
Les deux scripts ci-dessous ont été mis à jour/réécrits en mars 2017.
1. La version "de base" agit sur les fenêtres maximisées de toutes les applications
#!/usr/bin/env python3
import subprocess
import time
mx = "_NET_WM_STATE_MAXIMIZED_VERT, _NET_WM_STATE_MAXIMIZED_HORZ"
key = ["org.compiz.unityshell:/org/compiz/profiles/unity/plugins/unityshell/",
"launcher-hide-mode"]
def get(cmd):
try:
return subprocess.check_output(cmd).decode("utf-8").strip()
except subprocess.CalledProcessError:
pass
def force_get(cmd):
# both xprop and wmctrl break once and a while, this is to retry if so
val = None
while not val:
val = get(cmd)
return val
def get_res():
# look up screen resolution
scrdata = get("xrandr").split(); resindex = scrdata.index("connected")+2
return [int(n) for n in scrdata[resindex].split("+")[0].split("x")]
res = get_res()
hide1 = False
while True:
time.sleep(2)
hide = False
wlist = [l.split() for l in force_get(["wmctrl", "-lpG"]).splitlines()]
# only check windows if any of the apps is running
for w in wlist:
xpr = force_get(["xprop", "-id", w[0]])
if all([
mx in xpr, not "Iconic" in xpr,
0 <= int(w[3]) < res[0], 0 <= int(w[4]) < res[1],
]):
hide = True
break
if hide != hide1:
nexts = "0" if hide == False else "1"
currset = get(["gsettings", "get", key[0], key[1]])
if nexts != currset:
subprocess.Popen([
"gsettings", "set", key[0], key[1], nexts
])
hide1 = hide
2. La version spécifique à l'application:
#!/usr/bin/env python3
import subprocess
import time
apps = ["gnome-terminal", "firefox"]
mx = "_NET_WM_STATE_MAXIMIZED_VERT, _NET_WM_STATE_MAXIMIZED_HORZ"
key = ["org.compiz.unityshell:/org/compiz/profiles/unity/plugins/unityshell/",
"launcher-hide-mode"]
def get(cmd):
try:
return subprocess.check_output(cmd).decode("utf-8").strip()
except subprocess.CalledProcessError:
pass
def force_get(cmd):
# both xprop and wmctrl break once and a while, this is to retry if so
val = None
while not val:
val = get(cmd)
return val
def get_res():
# look up screen resolution
scrdata = get("xrandr").split(); resindex = scrdata.index("connected")+2
return [int(n) for n in scrdata[resindex].split("+")[0].split("x")]
res = get_res()
hide1 = False
while True:
time.sleep(2)
hide = False
wlist = [l.split() for l in force_get(["wmctrl", "-lpG"]).splitlines()]
pids = [get(["pgrep", app]) for app in apps]
# only check windows if any of the apps is running
if any(pids):
for w in wlist:
xpr = force_get(["xprop", "-id", w[0]])
if all([
mx in xpr, not "Iconic" in xpr,
0 <= int(w[3]) < res[0], 0 <= int(w[4]) < res[1],
any([w[2] == pid for pid in pids]),
]):
hide = True
break
if hide != hide1:
nexts = "0" if hide == False else "1"
currset = get(["gsettings", "get", key[0], key[1]])
if nexts != currset:
subprocess.Popen([
"gsettings", "set", key[0], key[1], nexts
])
hide1 = hide
Copiez l’un des scripts dans un fichier vide,
[définissez, si vous choisissez la seconde, vos applications à masquer]
et enregistrez-le sous le nom autohide.py
.
Exécutez-le à l'aide de la commande:
python3 /path/to/autohide.py
Si cela vous convient, ajoutez-le à vos applications de démarrage.
N.B. Si vous l'utilisez comme application de démarrage, vous devriez supprimer le commentaire de la ligne:
time.sleep(10)
Dans la section head du script. Le script peut se bloquer s'il est appelé avant le chargement complet du bureau. Modifiez la valeur (10) en fonction de votre système.
En boucle le script:
(uniquement) si une modification du mode masqué doit être effectuée, le script modifie le paramètre.
Ici vous allez les gars. Testé sur mon Ubuntu 14.04 avec l’environnement Unity original. J'espère que quelqu'un apprécie mon petit travail ...
Il convient à une fenêtre de navigateur
#!/bin/bash
## Tested with Ubuntu 14.04 Unity
## Auto hide Unity Launcher when web browser is maximized
## wmctrl is required: Sudo apt-get install wmctrl
## ~pba
## Change value of "key" to the command which worked for you
key='gsettings set org.compiz.unityshell:/org/compiz/profiles/unity/plugins/unityshell/ launcher-hide-mode';
while [ 1 ];
do
p=$(wmctrl -lG);
a=($(echo -E "$p" | grep -i "unity-launcher"));
w=($(echo -E "$p" | grep -i "firefox\|google\|chromium\|opera"));
if [ ${w[0]} ]; then
e=$(xwininfo -all -id ${w[0]});
l=( $(echo -E "$e" | grep -ci ' Hidden')
$(echo -E "$e" | grep -ci ' Maximized Vert')
$(echo -E "$e" | grep -ci ' Maximized Horz') );
b=($(echo -E "$p" | grep -i "unity-panel"));
if [ ${l[0]} -ne "1" -a ${l[1]} -eq "1" -a ${l[2]} -eq "1" -a ${w[2]} -eq ${a[4]} -a ${w[3]} -eq ${b[5]} ]; then
eval "$key 1";
Elif [ ${l[0]} -ne "1" -a ${l[1]} -ne "1" -a ${l[2]} -ne "1" -a ${a[3]} -lt "0" ]; then
eval "$key 0";
Elif [ ${l[0]} -eq "1" -a ${a[3]} -lt "0" -a ${w[2]} -ne "1" ]; then
eval "$key 0";
Elif [ ${l[0]} -ne "1" -a ${l[1]} -eq "1" -a ${l[2]} -eq "1" -a ${a[3]} -lt "0" -a ${w[2]} -ne "0" ]; then
eval "$key 0";
Elif [ ${l[0]} -ne "1" -a ${l[1]} -eq "1" -a ${l[2]} -eq "1" -a ${a[3]} -lt "0" -a ${w[3]} -ne ${b[5]} -a ${w[3]} -ne "0" ]; then
eval "$key 0";
fi;
Elif [ ${a[3]} -lt "0" ]; then eval "$key 0";
fi;
sleep 2;
done;
Plus ancien script