Você pode usar a variável de ambiente $DISPLAY como acionador dentro de uma condição if . Geralmente, quando essa variável tem um valor, você pode executar aplicativos gráficos.
Veja um exemplo bash :
if [[ -z $DISPLAY ]]
then
nano
else
gedit
fi
O operador -z retornará true quando o envvar $DISPLAY estiver vazio e seu script for executado nano ; em todos os outros casos, ele será executado gedit .
De acordo com este comentário de @ vurp0 :
On most modern Wayland desktops (like the default desktop in Fedora and Ubuntu),
$DISPLAYis still set due to backwards compatibility (through XWayland), but for a more robust script it would be good to test for both$DISPLAYand$WAYLAND_DISPLAYto be sure.
Sugiro modificar a expressão de teste da seguinte maneira:
[[ -z ${DISPLAY}${WAYLAND_DISPLAY} ]]
Assim, os valores das duas variáveis serão concatenados em uma string comum, que será processada pelo operador -z .
Referências: