2

Есть ли способ определить, действителен ли дисплей контролируемым образом? Например, если я установил $DISPLAY=anydisplay или $DISPLAY=0.0 , есть ли способ проверить, является ли anydisplay или 0.0 верным отображением, к которому у меня есть доступ? Я пишу программу, которая должна быть запущена из bash-скрипта, и идея состоит в том, чтобы предупредить пользователя, если его отображение неверно, и запустить программу в режиме консоли.

2 ответа2

3

xhost - это минималистичный способ проверки доступности дисплея.

#!/usr/bin/env bash

xhost +si:localuser:$( whoami ) >&/dev/null && { 
    echo "GUI"
    myapp --gui
} || {
   echo "console"
   myapp --console
}
0

Вы можете просто завершить работу сценария с информативным сообщением об ошибке. Если вы попытаетесь запустить графическую операцию, а дисплей не будет доступен, вы получите сообщение об ошибке. Итак, просто попытайтесь запустить все, что вы делаете графически, и если вы не можете выйти, и попросите пользователя повторно запустить скрипт с другим аргументом. Например:

#!/usr/bin/env bash

xterm 2>/dev/null || 
(echo "The display $DISPLAY is not accessible."
echo "Please run the script again using the '--no-gui' optiion" && 
exit 1)

Просто замените xterm любой функцией, которую вы используете для запуска вашего GUI.

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