Epsilon for macOS StartupWhen you run Epsilon for macOS, a helper program runs first and manages starting Epsilon. For example, it adds various flags to Epsilon's command line that make it start in your home directory the very first time you run Epsilon, remember any directory you've set from session to session, and use a single instance.
Unlike most Unix-based systems, macOS applications run from an icon
aren't descended from any shell process that loads user-defined
environment variables. Since Epsilon uses some environment variables
for configuration, on macOS, Epsilon's helper program loads
environment variables from the file
Epsilon includes a setup script, which will install Epsilon and its EEL compiler on your path, so you can run them from the command line more conveniently. Running it is optional. To run Epsilon's setup script from a shell prompt, type
assuming /Applications is where you installed Epsilon.
The setup script creates a link to Epsilon's startup helper, instead of running Epsilon's executable directly. If you want to run Epsilon using a shell alias, via an XQuartz Applications menu entry, or in some similar way, either have it run the startup helper program within Epsilon's app bundle (Epsilon 14.04.app/Contents/MacOS/epsilon-starter), or use the "open" command on Epsilon's app bundle, rather than directly running the Epsilon binary file within the app bundle, to let it switch privacy contexts if necessary. (See the next section.)
Normally Epsilon runs with a single instance when invoked via its
icon, while each command-line invocation begins a new instance. You
can change this by adding an entry to the file
Similarly, from an icon Epsilon normally restores the current
directory from a previous session (via the -w1 flag), while from
the command line it inherits the invoking shell's current directory.
You can change this by adding a line
Some other settings are available to work around issues. To operate
with the macOS privacy system explained in the next section, Epsilon's
startup helper sometimes needs to know if X11's DISPLAY environment
variable refers to a local display, where starting Epsilon in a
different privacy context would work, or a remote ssh connection where
it would not. At present, it checks to see if the value of DISPLAY
contains "xquartz:", which indicates a local X11 server. You can
change this string by setting