Переключение между Unity 3D и единством 2D [закрыто]

Как правило, я предпочитаю 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. Таким образом, он работает для моего наиболее распространенного случая использования, но тот факт, что он не работает наоборот, говорит мне, что я делаю что-то неправильно.

4
задан 8 August 2011 в 13:19

6 ответов

Когда вы запустите metacity --replace, я ожидаю, что он закончит сессию Compiz для вас. Следовательно, возможно, это поможет, если вы не назовете stop_3d, а просто start_2d. Возможно, теперь вы вручную уничтожаете 3D, который запускает перезапуск Compiz, однако, прежде чем он будет перезапущен, 2D запустится, но подумайте, что 3D не работает и, следовательно, не заканчивает его должным образом (без запуска перезапуска) .

Просто догадайтесь, но вы никогда не знаете.

0
ответ дан 25 July 2018 в 21:29
  • 1
    stop_3d - нет-op; он ничего не делает. Кажется, что start_2d работает нормально. Проблема заключается в остановке 2D . Это 2D материал, который, по-видимому, повторно появляется, а не компилятор. – Scott Severance 8 August 2011 в 11:12
  • 2
    Для получения дополнительной информации см. Мое редактирование выше. – Scott Severance 8 August 2011 в 13:20
  • 3
    Извините, я слепой: S Может ли проблема заключаться в обнаружении, работает ли Unity 2D? (Извините, это действительно просто базовая отладка, но у меня нет ничего лучше.) Это может также просто быть ошибкой в ​​Unity - работает ли она, когда вы просто запускаете единство - замените с терминала с помощью 2D Бег? – Vincent 10 August 2011 в 01:02
  • 4
    2D-обнаружение явно работает, иначе мой сценарий не будет работать из 3D-сессии. И запуск unity --replace не избавится от 2D-панели, док-станции и т. Д. Вот почему я пытаюсь убить те процессы, которые получают повторно созданный. – Scott Severance 11 August 2011 в 08:50
  • 5
    unity --replace должен работать (согласно unity --help, выполнение только unity должно делать то же самое), поэтому я сообщаю об ошибке , чтобы узнать, может ли он быть исправлен - должно сделать многое намного проще , – Vincent 12 August 2011 в 18:41

Когда вы запустите metacity --replace, я ожидаю, что он закончит сессию Compiz для вас. Следовательно, возможно, это поможет, если вы не назовете stop_3d, а просто start_2d. Возможно, теперь вы вручную уничтожаете 3D, который запускает перезапуск Compiz, однако, прежде чем он будет перезапущен, 2D запустится, но подумайте, что 3D не работает и, следовательно, не заканчивает его должным образом (без запуска перезапуска) .

Просто догадайтесь, но вы никогда не знаете.

0
ответ дан 31 July 2018 в 13:11
  • 1
    stop_3d - нет-op; он ничего не делает. Кажется, что start_2d работает нормально. Проблема заключается в остановке 2D . Это 2D материал, который, по-видимому, повторно появляется, а не компилятор. – Scott Severance 8 August 2011 в 11:12
  • 2
    Для получения дополнительной информации см. Мое редактирование выше. – Scott Severance 8 August 2011 в 13:20
  • 3
    Извините, я слепой: S Может ли проблема заключаться в обнаружении, работает ли Unity 2D? (Извините, это действительно просто базовая отладка, но у меня нет ничего лучше.) Это может также просто быть ошибкой в ​​Unity - работает ли она, когда вы просто запускаете единство - замените с терминала с помощью 2D Бег? – Vincent 10 August 2011 в 01:02
  • 4
    2D-обнаружение явно работает, иначе мой сценарий не будет работать из 3D-сессии. И запуск unity --replace не избавится от 2D-панели, док-станции и т. Д. Вот почему я пытаюсь убить те процессы, которые получают повторно созданный. – Scott Severance 11 August 2011 в 08:50
  • 5
    unity --replace должен работать (согласно unity --help, выполнение только unity должно делать то же самое), поэтому я сообщаю об ошибке , чтобы узнать, может ли он быть исправлен - должно сделать многое намного проще , – Vincent 12 August 2011 в 18:41

Когда вы запустите metacity --replace, я ожидаю, что он закончит сессию Compiz для вас. Следовательно, возможно, это поможет, если вы не назовете stop_3d, а просто start_2d. Возможно, теперь вы вручную уничтожаете 3D, который запускает перезапуск Compiz, однако, прежде чем он будет перезапущен, 2D запустится, но подумайте, что 3D не работает и, следовательно, не заканчивает его должным образом (без запуска перезапуска) .

Просто догадайтесь, но вы никогда не знаете.

0
ответ дан 2 August 2018 в 03:07
  • 1
    stop_3d - нет-op; он ничего не делает. Кажется, что start_2d работает нормально. Проблема заключается в остановке 2D . Это 2D материал, который, по-видимому, повторно появляется, а не компилятор. – Scott Severance 8 August 2011 в 11:12
  • 2
    Для получения дополнительной информации см. Мое редактирование выше. – Scott Severance 8 August 2011 в 13:20
  • 3
    Извините, я слепой: S Может ли проблема заключаться в обнаружении, работает ли Unity 2D? (Извините, это действительно просто базовая отладка, но у меня нет ничего лучше.) Это может также просто быть ошибкой в ​​Unity - работает ли она, когда вы просто запускаете единство - замените с терминала с помощью 2D Бег? – Vincent 10 August 2011 в 01:02
  • 4
    2D-обнаружение явно работает, иначе мой сценарий не будет работать из 3D-сессии. И запуск unity --replace не избавится от 2D-панели, док-станции и т. Д. Вот почему я пытаюсь убить те процессы, которые получают повторно созданный. – Scott Severance 11 August 2011 в 08:50
  • 5
    unity --replace должен работать (согласно unity --help, выполнение только unity должно делать то же самое), поэтому я сообщаю об ошибке , чтобы узнать, может ли он быть исправлен - должно сделать многое намного проще , – Vincent 12 August 2011 в 18:41

Когда вы запустите metacity --replace, я ожидаю, что он закончит сессию Compiz для вас. Следовательно, возможно, это поможет, если вы не назовете stop_3d, а просто start_2d. Возможно, теперь вы вручную уничтожаете 3D, который запускает перезапуск Compiz, однако, прежде чем он будет перезапущен, 2D запустится, но подумайте, что 3D не работает и, следовательно, не заканчивает его должным образом (без запуска перезапуска) .

Просто догадайтесь, но вы никогда не знаете.

0
ответ дан 4 August 2018 в 18:59
  • 1
    stop_3d - нет-op; он ничего не делает. Кажется, что start_2d работает нормально. Проблема заключается в остановке 2D . Это 2D материал, который, по-видимому, повторно появляется, а не компилятор. – Scott Severance 8 August 2011 в 11:12
  • 2
    Для получения дополнительной информации см. Мое редактирование выше. – Scott Severance 8 August 2011 в 13:20
  • 3
    Извините, я слепой: S Может ли проблема заключаться в обнаружении, работает ли Unity 2D? (Извините, это действительно просто базовая отладка, но у меня нет ничего лучше.) Это может также просто быть ошибкой в ​​Unity - работает ли она, когда вы просто запускаете единство - замените с терминала с помощью 2D Бег? – Vincent 10 August 2011 в 01:02
  • 4
    2D-обнаружение явно работает, иначе мой сценарий не будет работать из 3D-сессии. И запуск unity --replace не избавится от 2D-панели, док-станции и т. Д. Вот почему я пытаюсь убить те процессы, которые получают повторно созданный. – Scott Severance 11 August 2011 в 08:50
  • 5
    unity --replace должен работать (согласно unity --help, выполнение только unity должно делать то же самое), поэтому я сообщаю об ошибке , чтобы узнать, может ли он быть исправлен - должно сделать многое намного проще , – Vincent 12 August 2011 в 18:41

Когда вы запустите metacity --replace, я ожидаю, что он закончит сессию Compiz для вас. Следовательно, возможно, это поможет, если вы не назовете stop_3d, а просто start_2d. Возможно, теперь вы вручную уничтожаете 3D, который запускает перезапуск Compiz, однако, прежде чем он будет перезапущен, 2D запустится, но подумайте, что 3D не работает и, следовательно, не заканчивает его должным образом (без запуска перезапуска) .

Просто догадайтесь, но вы никогда не знаете.

0
ответ дан 6 August 2018 в 03:20
  • 1
    stop_3d - нет-op; он ничего не делает. Кажется, что start_2d работает нормально. Проблема заключается в остановке 2D . Это 2D материал, который, по-видимому, повторно появляется, а не компилятор. – Scott Severance 8 August 2011 в 11:12
  • 2
    Для получения дополнительной информации см. Мое редактирование выше. – Scott Severance 8 August 2011 в 13:20
  • 3
    Извините, я слепой: S Может ли проблема заключаться в обнаружении, работает ли Unity 2D? (Извините, это действительно просто базовая отладка, но у меня нет ничего лучше.) Это может также просто быть ошибкой в ​​Unity - работает ли она, когда вы просто запускаете единство - замените с терминала с помощью 2D Бег? – Vincent 10 August 2011 в 01:02
  • 4
    2D-обнаружение явно работает, иначе мой сценарий не будет работать из 3D-сессии. И запуск unity --replace не избавится от 2D-панели, док-станции и т. Д. Вот почему я пытаюсь убить те процессы, которые получают повторно созданный. – Scott Severance 11 August 2011 в 08:50
  • 5
    unity --replace должен работать (согласно unity --help, выполнение только unity должно делать то же самое), поэтому я сообщаю об ошибке , чтобы узнать, может ли он быть исправлен - должно сделать многое намного проще , – Vincent 12 August 2011 в 18:41

Когда вы запустите metacity --replace, я ожидаю, что он закончит сессию Compiz для вас. Следовательно, возможно, это поможет, если вы не назовете stop_3d, а просто start_2d. Возможно, теперь вы вручную уничтожаете 3D, который запускает перезапуск Compiz, однако, прежде чем он будет перезапущен, 2D запустится, но подумайте, что 3D не работает и, следовательно, не заканчивает его должным образом (без запуска перезапуска) .

Просто догадайтесь, но вы никогда не знаете.

0
ответ дан 7 August 2018 в 21:04
  • 1
    stop_3d - нет-op; он ничего не делает. Кажется, что start_2d работает нормально. Проблема заключается в остановке 2D . Это 2D материал, который, по-видимому, повторно появляется, а не компилятор. – Scott Severance 8 August 2011 в 11:12
  • 2
    Для получения дополнительной информации см. Мое редактирование выше. – Scott Severance 8 August 2011 в 13:20
  • 3
    Извините, я слепой: S Может ли проблема заключаться в обнаружении, работает ли Unity 2D? (Извините, это действительно просто базовая отладка, но у меня нет ничего лучше.) Это может также просто быть ошибкой в ​​Unity - работает ли она, когда вы просто запускаете единство - замените с терминала с помощью 2D Бег? – Vincent 10 August 2011 в 01:02
  • 4
    2D-обнаружение явно работает, иначе мой сценарий не будет работать из 3D-сессии. И запуск unity --replace не избавится от 2D-панели, док-станции и т. Д. Вот почему я пытаюсь убить те процессы, которые получают повторно созданный. – Scott Severance 11 August 2011 в 08:50
  • 5
    unity --replace должен работать (согласно unity --help, выполнение только unity должно делать то же самое), поэтому я сообщаю об ошибке , чтобы узнать, может ли он быть исправлен - должно сделать многое намного проще , – Vincent 12 August 2011 в 18:41

Другие вопросы по тегам:

Похожие вопросы: