I'm looking for an exhaustive list of symbols that work:
- On the cmd line kernel (without a Front-End)
- Only in a notebook (with a Front-End)
- In the Wolfram cloud (in the paid version and the free lab version)
Mathematica Stack Exchange is a question and answer site for users of Wolfram Mathematica. It only takes a minute to sign up.Sign up to join this community
I cannot give you an exhaustive list of symbols, and I think it is even debatable what it means that "a symbol requires the FE". But I think I can try to help with this:
I think it is important to know if the code you have will run on the command line
The broad categories of functions that require the FE to work are:
Things that deal with clearly FE-related concepts, such as notebooks. I think it is not worth discussing these, as they are pointless on the command line. The presence of a notebook interface can be tested for using
Manipulate related things clearly require the FE
What is perhaps surprising is that graphics export and rasterization requires the FE. Exporting to bitmap or vector formats,
Image@Graphics[...], etc. all require a front end. This is the single most common cause of code failing when run on the command line.
Functions whose purpose is somehow associated with using a graphical interface typically require an FE. This category is quite vague and sometimes counterintuitive. Examples:
SystemOpen requires an FE, loosely because it is the equivalent of opening files with the Finder (Mac) or Explorer (Windows). It will ultimately handle file type associations. It can also open web addresses, for which one expects to use a graphical browser (even if technically one could use
lynx). Compare it with
Run, which just launches and executable, can be implemented with plain POSIX stuff, and does not require an FE.
Some, but not all, sound-related functions require an FE. One example is
EmitSound. The newer
Audio-related equivalents (such as
AudioPlay) seem to work without an FE.
It should be noted that normally, even when the kernel is running in command line mode, it will reach a hidden FE as needed to evaluate such functions. For some low-level functions this is not automatic and one must use
UsingFrontEnd. On Linux, the FE requires an X server so you must provide one for it.