1

I am trying to determine whether or not I am in a graphical environment via bash on a Mac.

The goal is to have an if/else structure within a bash script that can handle these two cases.

Case 1: I can open windows from the command-line.

Case 2: I cannot open windows from the command-line.

1
  • You could check whether Finder is running (via ps). Commented Jan 26, 2019 at 6:08

1 Answer 1

1

Assuming it's enough to check whether Finder is running, you may use

if pgrep -qx Finder; then
    echo 'Finder is running'
else
    echo 'Finder is not running'
fi

If you are running some X server (not commonly the case on macOS), and want to check whether the current session is attached to it,

if [ -n "$DISPLAY" ]; then
    echo 'In X'
else
    echo 'Not in X'
fi

Both of these tests are quite naive but would at least cover the most basic situations.

2
  • Probably needs pgrep -xq Finder, I got two matches without -x. Or even pgrep -qx -u $(id -u) Finder. But as long as the OP doesn't clarify why they need to be able to distinguish this it's not clear whether this is enough. Commented Jan 26, 2019 at 9:01
  • @nohillside Yes, -x may be needed (added that). I'll hold of with further tinkering until we get further feedback. Commented Jan 26, 2019 at 9:19

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.