4 votes

Basculer entre Unity 3D et unity 2D

En général, je préfère de loin Unity 3D à la version 2D, qui est un peu cassée sur ma machine. Cependant, je fais souvent des présentations, et Compiz ne prend pas en charge les écrans multiples. J'ai été obligé de me déconnecter de la 3D et de passer en 2D à chaque fois que je fais une présentation, puis de revenir à la 3D après pour obtenir un bureau plus utilisable.

Pour éviter ce désagrément, j'ai écrit un script pour basculer entre Unity 2D et 3D sans nécessiter de déconnexion. Malheureusement, lorsque je l'exécute depuis la 2D, je me retrouve avec la 3D en cours d'exécution, plus le panneau 2D et le lanceur. Les deux sont sur l'écran simultanément. Je soupçonne que les processus 2D que je tue sont relancés d'une manière ou d'une autre. Quelqu'un peut-il m'aider à déboguer mon script ?

#!/bin/bash

set -x

unity_2d="unity-2d-places unity-2d-launcher unity-2d-panel unity-2d-spread"

start_2d() {
  metacity --replace &
  for i in $unity_2d; do
    "$i" &
  done
}

stop_2d() {
  killall $unity_2d  # The lack of quotes around $unity_2d is deliberate.
}

start_3d() {
  unity --replace &
}

stop_3d() {
  : # no-op for now
}

if ps -u "$USER" | grep -q [m]etacity; then
  # Unity 2D is currently running.
  stop_2d
  start_3d
else
  # Unity 3D is currently running.
  stop_3d
  start_2d
fi

Modifier

Mon script fonctionne lorsque je me connecte à 3D. Il ne fonctionne pas lorsque je me connecte en 2D. Donc, il fonctionne pour mon cas d'utilisation le plus courant, mais le fait qu'il échoue dans l'autre sens me suggère que je fais quelque chose de mal.

0voto

Vincent Points 2056

Lorsque vous exécutez metacity --replace, je m'attends à ce qu'il mette fin à la session Compiz pour vous. Par conséquent, il serait peut-être utile que vous fassiez pas appeler stop_3d, mais seulement start_2d. Il se peut que vous tuiez maintenant manuellement 3D, ce qui déclenche un redémarrage de Compiz, cependant, avant qu'il ne soit redémarré, 2D se lancera mais pensera que 3D n'est pas en cours d'exécution et, par conséquent, ne le terminera pas correctement (sans déclencher un redémarrage).

Juste une intuition, mais on ne sait jamais.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X