У меня есть следующий жестко закодированный список терминалов в моем приложении:

"/usr/bin/konsole", // KDE
"/usr/bin/gnome-terminal", // Gnome
"/usr/bin/pantheon-terminal" // Pantheon (Elementary OS)

Затем я просто беру первую запись из этого списка, которая указывает на существующий файл. Очевидно, проблема в том, что программа перестает работать, как только она запускается в системе с неизвестным двоичным файлом терминала. Итак, могу ли я определить это каким-то общим способом? Возможно, через какую-то стандартную переменную среды?

1 ответ1

1

Во-первых, я бы только сохранял имена исполняемых файлов терминала в списке и динамически определял их фактические пути на основе PATH env var - в зависимости от дистрибутива и / или параметров установки, которые они могли бы находиться в других местах. Или используйте which <terminal executable> который сделает это за вас.

Я бы использовал xterm в качестве окончательного запасного терминала - он довольно стандартный для любой установки X-Windows.

Другие соображения удобства:

  • проверьте, установлен ли DISPLAY - если это не так, скорее всего, терминалы не будут работать
  • попытайтесь определить фактическую графическую среду и сначала попробуйте более подходящую для нее. WINDOWMANAGER может помочь. Определенные оконные менеджеры обычно устанавливают свои собственные env-переменные, например, в моем случае KDE устанавливает: KDE_SESSION_UID , KDE_FULL_SESSION , KDE_MULTIHEAD , KDE_SESSION_VERSION .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .