Mac OS X

From Inkscape Wiki
Revision as of 14:43, 6 December 2022 by Kjoonlee (talk | contribs)
Jump to navigation Jump to search

This page is added as mini-TOC of Mac information on this Wiki, and a scratch pad for Mac stuff awaiting a home of its own.

Ventura Information

Do not update to macOS Ventura if you rely on Inkscape! There is an unresolved issue that currently affects all GTK3 based apps on macOS Ventura, making the app unresponsive to certain mouse events. (GTK is used by many different programs, and builds those programs' user interfaces for you to interact with.)

Sample bugs:

Upstream bug:

Legacy Information

Installing Inkscape

Inkscape for Mac OS X is an X client: it runs under the X Windows System. You will need an X Windows Server installed for it to work. For 10.4.x users, X11 can be installed from your installation DVD. For 10.3.x users, you can get Apple's X Server, or use XDarwin.

Since version 0.43, the Inkscape deliverable has been a disk image with a properly packaged Mac OS X Bundle -- Inkscape.app. You can simply drag the Inkscape icon to where is most convenient for you, usually your Applications folder or possibly your Desktop. This hardly warrants the grandiose title or style of "installing", but it does mean that un-installing is simple and complete -- just drag the icon to the Trash when you are finished with Inkscape and no longer want it.

From version 0.44, the disk image will have an alias to your system-wide Applications folder, allowing you to very easily drop the Inkscape icon into the most useful place for it, and open that folder so that you can start Inkscape.

Otherwise start Inkscape by double clicking one of its documents and it will thereafter be available to you in the Dock and from the "Recent Items" menu-item.

Inkscape command line

For many purposes you may need to execute Inkscape from the command line. For example within a LaTeX document you can update the pdf and pdf_tex files with your maths with the following command (see InkscapePDFLaTeX.pdf):

inkscape -z -D --file=image.svg --export-pdf=image.pdf --export-latex

The Inkscape script is supposed to change to Inkscape's Resources directory

cd /Applications/Inkscape.app/Contents/Resources/bin 

in order to get the correct environments for Inkscape as well as for native (Apple) Python.

But if you simply made a symbolic link to /usr/local/bin (which is in your PATH) with:

sudo ln -s /Applications/Inkscape.app/Contents/Resources/bin/inkscape /usr/local/bin

the command invoked by the default Inkscape script (0.48.1):

$ dirname $0

might not move to Inkscape's Resources directory but to /usr/local/bin.

From a terminal, even if

$ which inkscape

refers to /usr/local/bin/inkscape, a command like:

$ inkscape -z -D --file=image.svg --export-pdf=image.pdf --export-latex

may work while:

$ /usr/local/bin/inkscape -z -D --file=image.svg --export-pdf=image.pdf --export-latex

may not work because of a different interpretation of $0 and dirname. Tricky and unsolved in the general case...

Alias Solution

The following can be added to your `~/.profile` file to create an alias that is expanded into the full Inkscape path:

 alias inkscape="/Applications/Inkscape.app/Contents/Resources/bin/inkscape"

You must reload your profile to see the changes:

 $ source ~/.profile

LaTex Specific Solution

For the specific case of updating the pdf and pdf_tex files from LaTex by invoking Inkscape from command line (see InkscapePDFLaTeX.pdf), the easiest solution might be to alter the necessary LaTex preamble commands from:

\newcommand{\executeiffilenewer}[3]{%
 \ifnum\pdfstrcmp{\pdffilemoddate{#1}}%
 {\pdffilemoddate{#2}}>0%
 {\immediate\write18{#3}}\fi%
}

\newcommand{\includesvg}[1]{%
 \executeiffilenewer{#1.svg}{#1.pdf}%
 {inkscape -z -D --file=#1.svg %
 --export-pdf=#1.pdf}%
 \input{#1.pdf_tex}%
}

to use the full Inkscape path. This is necessary when compiling LaTex through editors that don't see the aliases defined in `~/.profile`. The necessary preamble commands are then:

\newcommand{\executeiffilenewer}[3]{%
 \ifnum\pdfstrcmp{\pdffilemoddate{#1}}%
 {\pdffilemoddate{#2}}>0%
 {\immediate\write18{#3}}\fi%
}

\newcommand{\includesvg}[1]{%
 \executeiffilenewer{#1.svg}{#1.pdf}%
 {/Applications/Inkscape.app/Contents/Resources/bin/inkscape -z -D --file=#1.svg %
 --export-pdf=#1.pdf}%
 \input{#1.pdf_tex}%
}

See

Links