J'ai deux moniteurs: l'un est un grand moniteur 2560x1600, que j'utilise comme moniteur principal et sur lequel je travaille le plus, et l'autre est un moniteur 1360x768 configuré verticalement pour être utilisé comme moniteur 'off' - pour des tâches comme mon calendrier et email, popups de notification, ou pour un navigateur web en jouant, etc.
Je l'ai actuellement configuré pour que le lanceur d'unité ne soit situé que sur le bord gauche du moniteur principal.
J'aimerais pouvoir disposer d'un lanceur d'unité distinct pour chaque moniteur. L'avantage est que les applications de chaque moniteur sont uniquement associées au lanceur situé sur ce moniteur, ce qui permet de garder le bureau organisé.
Malheureusement, l’écran horizontal est rare sur le moniteur éteint - je ne veux pas utiliser 48 pixels supplémentaires d’espace horizontal juste pour cela.
Une solution à ce problème consisterait à modifier le paramètre de position du lanceur (par exemple, à l'aide de l'outil Unity Tweak ou similaire) en bas. Cependant, ce paramètre affecterait la position du lanceur sur les deux écrans et je souhaite que le lanceur reste sur le bord gauche de mon moniteur principal.
Comment puis-je configurer l'unité pour utiliser différentes positions de lanceur sur différents moniteurs?
Une autre solution serait d’avoir le lanceur d’unités sur le masquage automatique du moniteur, mais je veux que la barre de lanceur reste statique sur mon moniteur principal. S'il existe un moyen de configurer le comportement de masquage automatique, moniteur par moniteur, cette solution serait également acceptable.
Je préférerais m'en tenir à l'environnement de bureau unitaire par défaut, mais s'il y a un autre DE qui gère très bien plusieurs moniteurs, je serais peut-être intéressé.
Une solution possible consiste à modifier automatiquement la position du lanceur en fonction de la position actuelle de la souris:
Dans le test que j'ai effectué, cela fonctionnait étonnamment bien et les fenêtres s'adaptaient bien au changement.
#!/usr/bin/env python3
import subprocess
import time
scr_data = subprocess.check_output(["xrandr"]).decode("utf-8")
border = int([s.split("x")[0] for s in scr_data.split() if "+0+0" in s][0])
left_scr = [l.split()[0] for l in scr_data.splitlines() if "+0+0" in l][0]
key = "com.canonical.Unity.Launcher"
item = "launcher-position"
def catch_mouse():
return int(subprocess.check_output([
"xdotool", "getmouselocation"
]).decode("utf-8").split()[0].split(":")[1])
test1 = ""
while True:
time.sleep(1)
test2 = catch_mouse() <= border
if test2 != test1:
if test2 == True:
cmd = ["gsettings", "set", key, item, "Left"]
else:
cmd = ["gsettings", "set", key, item, "Bottom"]
subprocess.Popen(cmd)
test1 = test2
Le script a besoin de xdotool
:
Sudo apt-get install xdotool
Copiez le script dans un fichier vide, enregistrez-le sous le nom move_launcher.py
Test-le exécuter par la commande (à partir d'un terminal)
python3 /path/to/move_launcher.py
Si tout fonctionne correctement, ajoutez à Applications de démarrage: Dash> Applications de démarrage> Ajouter. Ajouter la commande:
/binh/bash -c "sleep 15 && python3 && /path/to/move_launcher.py
... un script qui ne configurera qu'un seul lanceur (sur l'écran de gauche, sur le côté gauche):
... pendant que vous travaillez sur l'écran de gauche. Cela vous donnera une vue en taille réelle sur le bon écran ...
... et un lanceur au bas du deuxième écran:
... Si vous vous déplacez vers l'écran de droite, en indiquant le lanceur dont vous avez besoin à la position souhaitée sur l'écran de droite .
Comme mentionné, dans le (s) test (s), les fenêtres se sont adaptées en douceur, sans erreur.
#!/usr/bin/env python3
import subprocess
import time
scr_data = subprocess.check_output(["xrandr"]).decode("utf-8")
border = int([s.split("x")[0] for s in scr_data.split() if "+0+0" in s][0])
left_scr = [l.split()[0] for l in scr_data.splitlines() if "+0+0" in l][0]
right_scr = [l.split()[0] for l in scr_data.splitlines() if all([
not "+0+0" in l, l.count("+") == 2])][0]
key = "com.canonical.Unity.Launcher"
item = "launcher-position"
subprocess.call(["dconf", "write",
"/org/compiz/profiles/unity/plugins/unityshell/num-launchers", "1"])
def catch_mouse():
return int(subprocess.check_output([
"xdotool", "getmouselocation"
]).decode("utf-8").split()[0].split(":")[1])
test1 = ""
while True:
time.sleep(1)
test2 = catch_mouse() <= border
if test2 != test1:
if test2 == True:
cmd1 = ["xrandr", "--output", left_scr, "--primary"]
cmd2 = ["gsettings", "set", key, item, "Left"]
else:
cmd1 = ["xrandr", "--output", right_scr, "--primary"]
cmd2 = ["gsettings", "set", key, item, "Bottom"]
subprocess.Popen(cmd1)
subprocess.call(cmd2)
test1 = test2
Ce ne sont que deux exemples. Beaucoup de choses sont possibles.
Deux lanceurs, en même temps sur une position différente par écran , est actuellement impossible cependant, jusqu'à ce que quelqu'un crée l'option ...
Je ne vois pas de mécanisme permettant de choisir un emplacement différent pour un seul lanceur (par exemple, Unity) sur différents moniteurs.
Vu le problème de l'immobilier (horizontal limité), je peux voir que placer un lanceur au bas de l'écran et le masquer automatiquement serait une solution.
Dans Ubuntu 16.04 LTS, vous pouvez déplacer le lanceur vers le bas, mais je me rends compte que cela entraîne l’absence du lanceur sur le côté gauche de votre moniteur principal (votre autre problème).
Et si vous aviez deux lanceurs (cachés) sur les deux écrans? Un à gauche et un en bas de l'écran?
Voir cet article pour un mécanisme d'utilisation d'un lanceur alternatif (Cairo Dock): http://www.howtogeek.com/202708/how-to-convert-the-unity-launcher-into-a-dock- style-launcher /
J'ai testé cela (14.04 LTS) et je peux confirmer l'installation d'Unity Tweak Tool et Cairo Dock vous fournira deux lanceurs (masqués, si vous le souhaitez) sur les deux écrans - un (Unity Launcher) à gauche et un autre. (Cairo Dock) en bas de l'écran.
D'après mon évaluation de vos besoins, cela répondrait aux deux, mais cela signifierait que deux lanceurs soient exécutés sur les deux écrans afin que vous puissiez choisir lequel utiliser lorsque cela vous convient.
Cairo-Dock vous permet, si vous possédez plusieurs moniteurs, de gérer l'emplacement du Dock/Launcher afin qu'il apparaisse à un emplacement spécifique sur un seul moniteur en exploitant les fonctionnalités de Xinerama.
Je ne pense pas que cela apporterait des avantages significatifs si le Dock/Launcher est toujours masqué automatiquement, mais cela pourrait vous offrir une certaine flexibilité et potentiellement une solution à laquelle je ne peux pas penser ... :)
Voir ici pour l'option: https://glx-dock.org/bg_topic.php?t=5632