Как правило, я предпочитаю Unity 3D над 2D-версией, которая немного сломана на моей машине. Тем не менее, я часто даю презентации, а Compiz не поддерживает несколько экранов.
Чтобы избежать этого неудобства, я написал сценарий, который я написал сценарий, и мне пришлось выходить из 3D и в 2D каждый раз, когда я даю презентацию, а затем вернуться в 3D. для переключения между Unity 2D и 3D без необходимости выхода из системы. К сожалению, когда я запускаю его из 2D, я заканчиваю работу 3D, плюс 2D панель и пусковую установку. Оба одновременно отображаются на экране. Я подозреваю, что 2D-процессы, которые я убиваю, так или иначе порождаются. Может ли кто-нибудь помочь мне отладить мой скрипт?
#!/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
Мой скрипт работает, когда я вхожу в 3D. Он не работает при входе в 2D. Таким образом, он работает для моего наиболее распространенного случая использования, но тот факт, что он не работает наоборот, говорит мне, что я делаю что-то неправильно.
Когда вы запустите metacity --replace, я ожидаю, что он закончит сессию Compiz для вас. Следовательно, возможно, это поможет, если вы не назовете stop_3d, а просто start_2d. Возможно, теперь вы вручную уничтожаете 3D, который запускает перезапуск Compiz, однако, прежде чем он будет перезапущен, 2D запустится, но подумайте, что 3D не работает и, следовательно, не заканчивает его должным образом (без запуска перезапуска) .
Просто догадайтесь, но вы никогда не знаете.
Когда вы запустите metacity --replace, я ожидаю, что он закончит сессию Compiz для вас. Следовательно, возможно, это поможет, если вы не назовете stop_3d, а просто start_2d. Возможно, теперь вы вручную уничтожаете 3D, который запускает перезапуск Compiz, однако, прежде чем он будет перезапущен, 2D запустится, но подумайте, что 3D не работает и, следовательно, не заканчивает его должным образом (без запуска перезапуска) .
Просто догадайтесь, но вы никогда не знаете.
Когда вы запустите metacity --replace, я ожидаю, что он закончит сессию Compiz для вас. Следовательно, возможно, это поможет, если вы не назовете stop_3d, а просто start_2d. Возможно, теперь вы вручную уничтожаете 3D, который запускает перезапуск Compiz, однако, прежде чем он будет перезапущен, 2D запустится, но подумайте, что 3D не работает и, следовательно, не заканчивает его должным образом (без запуска перезапуска) .
Просто догадайтесь, но вы никогда не знаете.
Когда вы запустите metacity --replace, я ожидаю, что он закончит сессию Compiz для вас. Следовательно, возможно, это поможет, если вы не назовете stop_3d, а просто start_2d. Возможно, теперь вы вручную уничтожаете 3D, который запускает перезапуск Compiz, однако, прежде чем он будет перезапущен, 2D запустится, но подумайте, что 3D не работает и, следовательно, не заканчивает его должным образом (без запуска перезапуска) .
Просто догадайтесь, но вы никогда не знаете.
Когда вы запустите metacity --replace, я ожидаю, что он закончит сессию Compiz для вас. Следовательно, возможно, это поможет, если вы не назовете stop_3d, а просто start_2d. Возможно, теперь вы вручную уничтожаете 3D, который запускает перезапуск Compiz, однако, прежде чем он будет перезапущен, 2D запустится, но подумайте, что 3D не работает и, следовательно, не заканчивает его должным образом (без запуска перезапуска) .
Просто догадайтесь, но вы никогда не знаете.
Когда вы запустите metacity --replace, я ожидаю, что он закончит сессию Compiz для вас. Следовательно, возможно, это поможет, если вы не назовете stop_3d, а просто start_2d. Возможно, теперь вы вручную уничтожаете 3D, который запускает перезапуск Compiz, однако, прежде чем он будет перезапущен, 2D запустится, но подумайте, что 3D не работает и, следовательно, не заканчивает его должным образом (без запуска перезапуска) .
Просто догадайтесь, но вы никогда не знаете.