Alternando entre o Unity 3D e o unity 2D [fechado]

4

Geralmente, eu prefiro muito mais o Unity 3D sobre a versão 2D, que está um pouco quebrada na minha máquina. No entanto, frequentemente faço apresentações e o Compiz não suporta várias telas. Fui forçado a sair do 3D e em 2D toda vez que faço uma apresentação, depois volto para o 3D para obter um desktop mais utilizável.

Para evitar esse inconveniente, escrevi um script para alternar entre Unity 2D e 3D sem exigir um logout. Infelizmente, quando eu corro de 2D, acabo com 3D rodando, mais o painel 2D e o launcher. Ambos estão na tela simultaneamente. Eu suspeito que os processos 2D que estou matando estão sendo re-gerados de alguma forma. Alguém pode me ajudar a depurar meu 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

Editar

Meu script funciona quando eu faço login em 3D. Não funciona quando eu faço login em 2D. Então, funciona para o meu caso de uso mais comum, mas o fato de falhar ao contrário sugere que estou fazendo algo errado.

    
por Scott Severance 08.08.2011 / 01:51

1 resposta

0

Quando você executa o metacity --replace, eu esperaria que ele terminasse a sessão do Compiz para você. Assim, talvez ajudaria se você não chamasse stop_3d, mas apenas start_2d. Pode ser que você agora mate manualmente o 3D, que desencadeia uma reinicialização do Compiz, no entanto, antes que ele seja reiniciado, o 2D será iniciado, mas o 3D não está sendo executado e, portanto, não terminará corretamente (sem provocar uma reinicialização) .

Apenas um palpite, mas você nunca sabe.

    
por Vincent 08.08.2011 / 02:43