This repository was archived by the owner on Aug 27, 2026. It is now read-only.
/orcaPublic archive
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
119 changes: 107 additions & 12 deletions README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -44,25 +44,120 @@ your operating system from the

#### Mac OS

- Unzip `mac-release.zip` from your `Downloads/` folder
- Double-click on `orca-X.Y.Z.dmg` file, that should open an installation window
- Drag the orca icon into _Applications_
- In finder, go to the `Applications/` folder
- Right-click on the orca icon and click on _Open_, this should open an _Installation Succeeded_ window
- Open the terminal and start using Orca!
- Unzip the `mac-release.zip` file.
- Double-click on the `orca-X.Y.Z.dmg` file. This will open an installation window.
- Drag the orca icon into the `Applications` folder.
- Open finder and navigate to the `Applications/` folder.
- Right-click on the orca icon and select _Open_ from the context menu.
- A password dialog will appear asking for permission to add orca to your system `PATH`.
- Enter you password and click _OK_.
- This should open an _Installation Succeeded_ window.
- Open a new terminal and verify that the orca executable is available on your `PATH`.

```
$ which orca
/usr/local/bin/orca

$ orca --help
Plotly's image-exporting utilities

Usage: orca [--version] [--help] <command> [<args>]
...
```

#### Windows

- Extract the `window-release.zip` file
- In the `release` folder, double-click on `orca Setup X.Y.Z`, this will create an orca icon on your Desktop
- Right-click on the orca icon, then click on _Properties_ and copy the _Starts in_ field
- In the command prompt, run `PATH %PATH%;<paste the "Starts in" field here>`
- Extract the `windows-release.zip` file.
- In the `release` folder, double-click on `orca Setup X.Y.Z`, this will create an orca icon on your Desktop.
- Right-click on the orca icon and select _Properties_ from the context menu.
- From the _Shortcut_ tab, copy the directory in the _Start in_ field.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To clarify, the Start in field is a path to a directory, correct? Not a path to a file?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct, There's also a Target field that is the full path to the executable.

- Add this _Start in_ directory to you system `PATH` (see below).
- Open a new Command Prompt and verify that the orca executable is available on your `PATH`.

```
> orca --help
Plotly's image-exporting utilities

Usage: orca [--version] [--help] <command> [<args>]
...
```

##### Windows References
- How to set the path and environment variables in Windows: https://www.computerhope.com/issues/ch000549.htm

#### Linux

- Run `$ chmod +x orca-X.Y.Z-x86_64.AppImage`
- Add it to your `$PATH`
- Make the orca AppImage executable.

```
$ chmod +x orca-X.Y.Z-x86_64.AppImage
```

- Create a symbolic link named `orca` somewhere on your `PATH` that points
to the AppImage.

```
$ ln -s /path/to/orca-X.Y.Z-x86_64.AppImage /somewhere/on/PATH/orca
```

- Open a new terminal and verify that the orca executable is available on your `PATH`.

```
$ which orca
/somewhere/on/PATH/orca

$ orca --help
Plotly's image-exporting utilities

Usage: orca [--version] [--help] <command> [<args>]
...
```

##### Linux Troubleshooting: Cannot open shared object
The Electron runtime depends a several common system libraries. These
libraries are pre-installed in most desktop Linux distributions
(e.g. Ubuntu), but are not pre-installed on some server Linux distributions
(e.g. Ubuntu Server). If a shared library is missing, you will see an error
message like:

```
$ orca --help
orca: error while loading shared libraries: libgtk-x11-2.0.so.0:
cannot open shared object file: No such file or directory
```

These additional dependencies can be satisfied by installing:
- The `libgtk2.0-0` and `libgconf-2-4` packages from your distribution's
software repository.
- The `google-chrome-stable` package from the [Google Linux Software
Repository](https://www.google.com/linuxrepositories/).

##### Linux Troubleshooting: Headless server configuration
The Electron runtime requires the presence of an active X11 display server,
but many server Linux distributions (e.g. Ubuntu Server) do not include X11
by default. If you do not wish to install X11 on your server, you may
install and run orca with Xvfb instead.

On Ubuntu Server, you can install Xvfb like this:
```
$ sudo apt-get install xvfb
```

To run orca under Xvfb, replace the symbolic link suggested above with a shell
script that runs the orca AppImage executable using the `xvfb-run` command.

```
#!/bin/bash
xvfb-run /path/to/orca-X.Y.Z-x86_64.AppImage "$@"
```

Name this shell script `orca` and place it somewhere or your system `PATH`.

##### Linux References
- How to add directory to system path in Linux: https://www.computerhope.com/issues/ch001647.htm
- AppImage: https://appimage.org/
- Xvfb: https://en.wikipedia.org/wiki/Xvfb

## Quick start

From the command line:
Expand Down
49 changes: 38 additions & 11 deletions bin/orca_electron.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -44,21 +44,48 @@ if (process.platform === 'darwin' && process.argv.length === 1) {
'To create your first image, open a terminal and run:\n\norca graph \'{ "data": [{"y": [1,2,1]}] }\' -o fig.png'
}

const source = path.join(__dirname, 'orca.sh')
const target = '/usr/local/bin/orca'

if (!fs.existsSync(target)) {
try {
execSync(`cp ${source} ${target}`)
} catch (err) {
options.type = 'error'
options.message = 'Installation Failed!'
options.detail = err.message
let showMessage = false

try {
execSync('which orca')
// Orca is already on the path, nothing to do
} catch (err) {
// Check if this is a standalone installation (not conda or npm)
const standalonePath = '/Applications/orca.app/Contents/MacOS/orca'
if (fs.existsSync(standalonePath)) {
// Now we know that orca is not on the path, but it is installed
// in the /Applications directory. So we'll ask the user if they
// want to add it to the path
const source = path.join(__dirname, 'orca.sh')
const target = '/usr/local/bin/orca'

if (!fs.existsSync(target)) {
// Build copy command
const copyCmd = `"cp ${source} ${target}"`

// Use apple script to perform copy so that we can launch a GUI
// prompt for administrator credentials
const prompt = '"Add orca to system PATH (/usr/local/bin)?"'
const cmd = `osascript -e 'do shell script ${copyCmd} with prompt ${prompt} with administrator privileges'`

try {
execSync(cmd)
showMessage = true
} catch (cmdErr) {
// User cancelled. Nothing more to do
}
}
} else {
options.message = 'Executable in non-standard location'
options.detail = 'No orca executable located at /Applications/orca.app/\nNo changes made'
showMessage = true
}
}

app.on('ready', function () {
dialog.showMessageBox(options)
if (showMessage) {
dialog.showMessageBox(options)
}
console.log(HELP)
process.exit(options.type === 'error' ? 1 : 0)
})
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
This repository was archived by the owner on Aug 27, 2026. It is now read-only.
/orcaPublic archive
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
119 changes: 107 additions & 12 deletions README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -44,25 +44,120 @@ your operating system from the

#### Mac OS

- Unzip `mac-release.zip` from your `Downloads/` folder
- Double-click on `orca-X.Y.Z.dmg` file, that should open an installation window
- Drag the orca icon into _Applications_
- In finder, go to the `Applications/` folder
- Right-click on the orca icon and click on _Open_, this should open an _Installation Succeeded_ window
- Open the terminal and start using Orca!
- Unzip the `mac-release.zip` file.
- Double-click on the `orca-X.Y.Z.dmg` file. This will open an installation window.
- Drag the orca icon into the `Applications` folder.
- Open finder and navigate to the `Applications/` folder.
- Right-click on the orca icon and select _Open_ from the context menu.
- A password dialog will appear asking for permission to add orca to your system `PATH`.
- Enter you password and click _OK_.
- This should open an _Installation Succeeded_ window.
- Open a new terminal and verify that the orca executable is available on your `PATH`.

```
$ which orca
/usr/local/bin/orca

$ orca --help
Plotly's image-exporting utilities

Usage: orca [--version] [--help] <command> [<args>]
...
```

#### Windows

- Extract the `window-release.zip` file
- In the `release` folder, double-click on `orca Setup X.Y.Z`, this will create an orca icon on your Desktop
- Right-click on the orca icon, then click on _Properties_ and copy the _Starts in_ field
- In the command prompt, run `PATH %PATH%;<paste the "Starts in" field here>`
- Extract the `windows-release.zip` file.
- In the `release` folder, double-click on `orca Setup X.Y.Z`, this will create an orca icon on your Desktop.
- Right-click on the orca icon and select _Properties_ from the context menu.
- From the _Shortcut_ tab, copy the directory in the _Start in_ field.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To clarify, the Start in field is a path to a directory, correct? Not a path to a file?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct, There's also a Target field that is the full path to the executable.

- Add this _Start in_ directory to you system `PATH` (see below).
- Open a new Command Prompt and verify that the orca executable is available on your `PATH`.

```
> orca --help
Plotly's image-exporting utilities

Usage: orca [--version] [--help] <command> [<args>]
...
```

##### Windows References
- How to set the path and environment variables in Windows: https://www.computerhope.com/issues/ch000549.htm

#### Linux

- Run `$ chmod +x orca-X.Y.Z-x86_64.AppImage`
- Add it to your `$PATH`
- Make the orca AppImage executable.

```
$ chmod +x orca-X.Y.Z-x86_64.AppImage
```

- Create a symbolic link named `orca` somewhere on your `PATH` that points
to the AppImage.

```
$ ln -s /path/to/orca-X.Y.Z-x86_64.AppImage /somewhere/on/PATH/orca
```

- Open a new terminal and verify that the orca executable is available on your `PATH`.

```
$ which orca
/somewhere/on/PATH/orca

$ orca --help
Plotly's image-exporting utilities

Usage: orca [--version] [--help] <command> [<args>]
...
```

##### Linux Troubleshooting: Cannot open shared object
The Electron runtime depends a several common system libraries. These
libraries are pre-installed in most desktop Linux distributions
(e.g. Ubuntu), but are not pre-installed on some server Linux distributions
(e.g. Ubuntu Server). If a shared library is missing, you will see an error
message like:

```
$ orca --help
orca: error while loading shared libraries: libgtk-x11-2.0.so.0:
cannot open shared object file: No such file or directory
```

These additional dependencies can be satisfied by installing:
- The `libgtk2.0-0` and `libgconf-2-4` packages from your distribution's
software repository.
- The `google-chrome-stable` package from the [Google Linux Software
Repository](https://www.google.com/linuxrepositories/).

##### Linux Troubleshooting: Headless server configuration
The Electron runtime requires the presence of an active X11 display server,
but many server Linux distributions (e.g. Ubuntu Server) do not include X11
by default. If you do not wish to install X11 on your server, you may
install and run orca with Xvfb instead.

On Ubuntu Server, you can install Xvfb like this:
```
$ sudo apt-get install xvfb
```

To run orca under Xvfb, replace the symbolic link suggested above with a shell
script that runs the orca AppImage executable using the `xvfb-run` command.

```
#!/bin/bash
xvfb-run /path/to/orca-X.Y.Z-x86_64.AppImage "$@"
```

Name this shell script `orca` and place it somewhere or your system `PATH`.

##### Linux References
- How to add directory to system path in Linux: https://www.computerhope.com/issues/ch001647.htm
- AppImage: https://appimage.org/
- Xvfb: https://en.wikipedia.org/wiki/Xvfb

## Quick start

From the command line:
Expand Down
49 changes: 38 additions & 11 deletions bin/orca_electron.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -44,21 +44,48 @@ if (process.platform === 'darwin' && process.argv.length === 1) {
'To create your first image, open a terminal and run:\n\norca graph \'{ "data": [{"y": [1,2,1]}] }\' -o fig.png'
}

const source = path.join(__dirname, 'orca.sh')
const target = '/usr/local/bin/orca'

if (!fs.existsSync(target)) {
try {
execSync(`cp ${source} ${target}`)
} catch (err) {
options.type = 'error'
options.message = 'Installation Failed!'
options.detail = err.message
let showMessage = false

try {
execSync('which orca')
// Orca is already on the path, nothing to do
} catch (err) {
// Check if this is a standalone installation (not conda or npm)
const standalonePath = '/Applications/orca.app/Contents/MacOS/orca'
if (fs.existsSync(standalonePath)) {
// Now we know that orca is not on the path, but it is installed
// in the /Applications directory. So we'll ask the user if they
// want to add it to the path
const source = path.join(__dirname, 'orca.sh')
const target = '/usr/local/bin/orca'

if (!fs.existsSync(target)) {
// Build copy command
const copyCmd = `"cp ${source} ${target}"`

// Use apple script to perform copy so that we can launch a GUI
// prompt for administrator credentials
const prompt = '"Add orca to system PATH (/usr/local/bin)?"'
const cmd = `osascript -e 'do shell script ${copyCmd} with prompt ${prompt} with administrator privileges'`

try {
execSync(cmd)
showMessage = true
} catch (cmdErr) {
// User cancelled. Nothing more to do
}
}
} else {
options.message = 'Executable in non-standard location'
options.detail = 'No orca executable located at /Applications/orca.app/\nNo changes made'
showMessage = true
}
}

app.on('ready', function () {
dialog.showMessageBox(options)
if (showMessage) {
dialog.showMessageBox(options)
}
console.log(HELP)
process.exit(options.type === 'error' ? 1 : 0)
})
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Aug 27, 2026. It is now read-only.
/orcaPublic archive
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
119 changes: 107 additions & 12 deletions README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -44,25 +44,120 @@ your operating system from the

#### Mac OS

- Unzip `mac-release.zip` from your `Downloads/` folder
- Double-click on `orca-X.Y.Z.dmg` file, that should open an installation window
- Drag the orca icon into _Applications_
- In finder, go to the `Applications/` folder
- Right-click on the orca icon and click on _Open_, this should open an _Installation Succeeded_ window
- Open the terminal and start using Orca!
- Unzip the `mac-release.zip` file.
- Double-click on the `orca-X.Y.Z.dmg` file. This will open an installation window.
- Drag the orca icon into the `Applications` folder.
- Open finder and navigate to the `Applications/` folder.
- Right-click on the orca icon and select _Open_ from the context menu.
- A password dialog will appear asking for permission to add orca to your system `PATH`.
- Enter you password and click _OK_.
- This should open an _Installation Succeeded_ window.
- Open a new terminal and verify that the orca executable is available on your `PATH`.

```
$ which orca
/usr/local/bin/orca

$ orca --help
Plotly's image-exporting utilities

Usage: orca [--version] [--help] <command> [<args>]
...
```

#### Windows

- Extract the `window-release.zip` file
- In the `release` folder, double-click on `orca Setup X.Y.Z`, this will create an orca icon on your Desktop
- Right-click on the orca icon, then click on _Properties_ and copy the _Starts in_ field
- In the command prompt, run `PATH %PATH%;<paste the "Starts in" field here>`
- Extract the `windows-release.zip` file.
- In the `release` folder, double-click on `orca Setup X.Y.Z`, this will create an orca icon on your Desktop.
- Right-click on the orca icon and select _Properties_ from the context menu.
- From the _Shortcut_ tab, copy the directory in the _Start in_ field.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To clarify, the Start in field is a path to a directory, correct? Not a path to a file?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct, There's also a Target field that is the full path to the executable.

- Add this _Start in_ directory to you system `PATH` (see below).
- Open a new Command Prompt and verify that the orca executable is available on your `PATH`.

```
> orca --help
Plotly's image-exporting utilities

Usage: orca [--version] [--help] <command> [<args>]
...
```

##### Windows References
- How to set the path and environment variables in Windows: https://www.computerhope.com/issues/ch000549.htm

#### Linux

- Run `$ chmod +x orca-X.Y.Z-x86_64.AppImage`
- Add it to your `$PATH`
- Make the orca AppImage executable.

```
$ chmod +x orca-X.Y.Z-x86_64.AppImage
```

- Create a symbolic link named `orca` somewhere on your `PATH` that points
to the AppImage.

```
$ ln -s /path/to/orca-X.Y.Z-x86_64.AppImage /somewhere/on/PATH/orca
```

- Open a new terminal and verify that the orca executable is available on your `PATH`.

```
$ which orca
/somewhere/on/PATH/orca

$ orca --help
Plotly's image-exporting utilities

Usage: orca [--version] [--help] <command> [<args>]
...
```

##### Linux Troubleshooting: Cannot open shared object
The Electron runtime depends a several common system libraries. These
libraries are pre-installed in most desktop Linux distributions
(e.g. Ubuntu), but are not pre-installed on some server Linux distributions
(e.g. Ubuntu Server). If a shared library is missing, you will see an error
message like:

```
$ orca --help
orca: error while loading shared libraries: libgtk-x11-2.0.so.0:
cannot open shared object file: No such file or directory
```

These additional dependencies can be satisfied by installing:
- The `libgtk2.0-0` and `libgconf-2-4` packages from your distribution's
software repository.
- The `google-chrome-stable` package from the [Google Linux Software
Repository](https://www.google.com/linuxrepositories/).

##### Linux Troubleshooting: Headless server configuration
The Electron runtime requires the presence of an active X11 display server,
but many server Linux distributions (e.g. Ubuntu Server) do not include X11
by default. If you do not wish to install X11 on your server, you may
install and run orca with Xvfb instead.

On Ubuntu Server, you can install Xvfb like this:
```
$ sudo apt-get install xvfb
```

To run orca under Xvfb, replace the symbolic link suggested above with a shell
script that runs the orca AppImage executable using the `xvfb-run` command.

```
#!/bin/bash
xvfb-run /path/to/orca-X.Y.Z-x86_64.AppImage "$@"
```

Name this shell script `orca` and place it somewhere or your system `PATH`.

##### Linux References
- How to add directory to system path in Linux: https://www.computerhope.com/issues/ch001647.htm
- AppImage: https://appimage.org/
- Xvfb: https://en.wikipedia.org/wiki/Xvfb

## Quick start

From the command line:
Expand Down
49 changes: 38 additions & 11 deletions bin/orca_electron.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -44,21 +44,48 @@ if (process.platform === 'darwin' && process.argv.length === 1) {
'To create your first image, open a terminal and run:\n\norca graph \'{ "data": [{"y": [1,2,1]}] }\' -o fig.png'
}

const source = path.join(__dirname, 'orca.sh')
const target = '/usr/local/bin/orca'

if (!fs.existsSync(target)) {
try {
execSync(`cp ${source} ${target}`)
} catch (err) {
options.type = 'error'
options.message = 'Installation Failed!'
options.detail = err.message
let showMessage = false

try {
execSync('which orca')
// Orca is already on the path, nothing to do
} catch (err) {
// Check if this is a standalone installation (not conda or npm)
const standalonePath = '/Applications/orca.app/Contents/MacOS/orca'
if (fs.existsSync(standalonePath)) {
// Now we know that orca is not on the path, but it is installed
// in the /Applications directory. So we'll ask the user if they
// want to add it to the path
const source = path.join(__dirname, 'orca.sh')
const target = '/usr/local/bin/orca'

if (!fs.existsSync(target)) {
// Build copy command
const copyCmd = `"cp ${source} ${target}"`

// Use apple script to perform copy so that we can launch a GUI
// prompt for administrator credentials
const prompt = '"Add orca to system PATH (/usr/local/bin)?"'
const cmd = `osascript -e 'do shell script ${copyCmd} with prompt ${prompt} with administrator privileges'`

try {
execSync(cmd)
showMessage = true
} catch (cmdErr) {
// User cancelled. Nothing more to do
}
}
} else {
options.message = 'Executable in non-standard location'
options.detail = 'No orca executable located at /Applications/orca.app/\nNo changes made'
showMessage = true
}
}

app.on('ready', function () {
dialog.showMessageBox(options)
if (showMessage) {
dialog.showMessageBox(options)
}
console.log(HELP)
process.exit(options.type === 'error' ? 1 : 0)
})
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Aug 27, 2026. It is now read-only.
/orcaPublic archive
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
119 changes: 107 additions & 12 deletions README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -44,25 +44,120 @@ your operating system from the

#### Mac OS

- Unzip `mac-release.zip` from your `Downloads/` folder
- Double-click on `orca-X.Y.Z.dmg` file, that should open an installation window
- Drag the orca icon into _Applications_
- In finder, go to the `Applications/` folder
- Right-click on the orca icon and click on _Open_, this should open an _Installation Succeeded_ window
- Open the terminal and start using Orca!
- Unzip the `mac-release.zip` file.
- Double-click on the `orca-X.Y.Z.dmg` file. This will open an installation window.
- Drag the orca icon into the `Applications` folder.
- Open finder and navigate to the `Applications/` folder.
- Right-click on the orca icon and select _Open_ from the context menu.
- A password dialog will appear asking for permission to add orca to your system `PATH`.
- Enter you password and click _OK_.
- This should open an _Installation Succeeded_ window.
- Open a new terminal and verify that the orca executable is available on your `PATH`.

```
$ which orca
/usr/local/bin/orca

$ orca --help
Plotly's image-exporting utilities

Usage: orca [--version] [--help] <command> [<args>]
...
```

#### Windows

- Extract the `window-release.zip` file
- In the `release` folder, double-click on `orca Setup X.Y.Z`, this will create an orca icon on your Desktop
- Right-click on the orca icon, then click on _Properties_ and copy the _Starts in_ field
- In the command prompt, run `PATH %PATH%;<paste the "Starts in" field here>`
- Extract the `windows-release.zip` file.
- In the `release` folder, double-click on `orca Setup X.Y.Z`, this will create an orca icon on your Desktop.
- Right-click on the orca icon and select _Properties_ from the context menu.
- From the _Shortcut_ tab, copy the directory in the _Start in_ field.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To clarify, the Start in field is a path to a directory, correct? Not a path to a file?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct, There's also a Target field that is the full path to the executable.

- Add this _Start in_ directory to you system `PATH` (see below).
- Open a new Command Prompt and verify that the orca executable is available on your `PATH`.

```
> orca --help
Plotly's image-exporting utilities

Usage: orca [--version] [--help] <command> [<args>]
...
```

##### Windows References
- How to set the path and environment variables in Windows: https://www.computerhope.com/issues/ch000549.htm

#### Linux

- Run `$ chmod +x orca-X.Y.Z-x86_64.AppImage`
- Add it to your `$PATH`
- Make the orca AppImage executable.

```
$ chmod +x orca-X.Y.Z-x86_64.AppImage
```

- Create a symbolic link named `orca` somewhere on your `PATH` that points
to the AppImage.

```
$ ln -s /path/to/orca-X.Y.Z-x86_64.AppImage /somewhere/on/PATH/orca
```

- Open a new terminal and verify that the orca executable is available on your `PATH`.

```
$ which orca
/somewhere/on/PATH/orca

$ orca --help
Plotly's image-exporting utilities

Usage: orca [--version] [--help] <command> [<args>]
...
```

##### Linux Troubleshooting: Cannot open shared object
The Electron runtime depends a several common system libraries. These
libraries are pre-installed in most desktop Linux distributions
(e.g. Ubuntu), but are not pre-installed on some server Linux distributions
(e.g. Ubuntu Server). If a shared library is missing, you will see an error
message like:

```
$ orca --help
orca: error while loading shared libraries: libgtk-x11-2.0.so.0:
cannot open shared object file: No such file or directory
```

These additional dependencies can be satisfied by installing:
- The `libgtk2.0-0` and `libgconf-2-4` packages from your distribution's
software repository.
- The `google-chrome-stable` package from the [Google Linux Software
Repository](https://www.google.com/linuxrepositories/).

##### Linux Troubleshooting: Headless server configuration
The Electron runtime requires the presence of an active X11 display server,
but many server Linux distributions (e.g. Ubuntu Server) do not include X11
by default. If you do not wish to install X11 on your server, you may
install and run orca with Xvfb instead.

On Ubuntu Server, you can install Xvfb like this:
```
$ sudo apt-get install xvfb
```

To run orca under Xvfb, replace the symbolic link suggested above with a shell
script that runs the orca AppImage executable using the `xvfb-run` command.

```
#!/bin/bash
xvfb-run /path/to/orca-X.Y.Z-x86_64.AppImage "$@"
```

Name this shell script `orca` and place it somewhere or your system `PATH`.

##### Linux References
- How to add directory to system path in Linux: https://www.computerhope.com/issues/ch001647.htm
- AppImage: https://appimage.org/
- Xvfb: https://en.wikipedia.org/wiki/Xvfb

## Quick start

From the command line:
Expand Down
49 changes: 38 additions & 11 deletions bin/orca_electron.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -44,21 +44,48 @@ if (process.platform === 'darwin' && process.argv.length === 1) {
'To create your first image, open a terminal and run:\n\norca graph \'{ "data": [{"y": [1,2,1]}] }\' -o fig.png'
}

const source = path.join(__dirname, 'orca.sh')
const target = '/usr/local/bin/orca'

if (!fs.existsSync(target)) {
try {
execSync(`cp ${source} ${target}`)
} catch (err) {
options.type = 'error'
options.message = 'Installation Failed!'
options.detail = err.message
let showMessage = false

try {
execSync('which orca')
// Orca is already on the path, nothing to do
} catch (err) {
// Check if this is a standalone installation (not conda or npm)
const standalonePath = '/Applications/orca.app/Contents/MacOS/orca'
if (fs.existsSync(standalonePath)) {
// Now we know that orca is not on the path, but it is installed
// in the /Applications directory. So we'll ask the user if they
// want to add it to the path
const source = path.join(__dirname, 'orca.sh')
const target = '/usr/local/bin/orca'

if (!fs.existsSync(target)) {
// Build copy command
const copyCmd = `"cp ${source} ${target}"`

// Use apple script to perform copy so that we can launch a GUI
// prompt for administrator credentials
const prompt = '"Add orca to system PATH (/usr/local/bin)?"'
const cmd = `osascript -e 'do shell script ${copyCmd} with prompt ${prompt} with administrator privileges'`

try {
execSync(cmd)
showMessage = true
} catch (cmdErr) {
// User cancelled. Nothing more to do
}
}
} else {
options.message = 'Executable in non-standard location'
options.detail = 'No orca executable located at /Applications/orca.app/\nNo changes made'
showMessage = true
}
}

app.on('ready', function () {
dialog.showMessageBox(options)
if (showMessage) {
dialog.showMessageBox(options)
}
console.log(HELP)
process.exit(options.type === 'error' ? 1 : 0)
})
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
This repository was archived by the owner on Aug 27, 2026. It is now read-only.
/orcaPublic archive
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
119 changes: 107 additions & 12 deletions README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -44,25 +44,120 @@ your operating system from the

#### Mac OS

- Unzip `mac-release.zip` from your `Downloads/` folder
- Double-click on `orca-X.Y.Z.dmg` file, that should open an installation window
- Drag the orca icon into _Applications_
- In finder, go to the `Applications/` folder
- Right-click on the orca icon and click on _Open_, this should open an _Installation Succeeded_ window
- Open the terminal and start using Orca!
- Unzip the `mac-release.zip` file.
- Double-click on the `orca-X.Y.Z.dmg` file. This will open an installation window.
- Drag the orca icon into the `Applications` folder.
- Open finder and navigate to the `Applications/` folder.
- Right-click on the orca icon and select _Open_ from the context menu.
- A password dialog will appear asking for permission to add orca to your system `PATH`.
- Enter you password and click _OK_.
- This should open an _Installation Succeeded_ window.
- Open a new terminal and verify that the orca executable is available on your `PATH`.

```
$ which orca
/usr/local/bin/orca

$ orca --help
Plotly's image-exporting utilities

Usage: orca [--version] [--help] <command> [<args>]
...
```

#### Windows

- Extract the `window-release.zip` file
- In the `release` folder, double-click on `orca Setup X.Y.Z`, this will create an orca icon on your Desktop
- Right-click on the orca icon, then click on _Properties_ and copy the _Starts in_ field
- In the command prompt, run `PATH %PATH%;<paste the "Starts in" field here>`
- Extract the `windows-release.zip` file.
- In the `release` folder, double-click on `orca Setup X.Y.Z`, this will create an orca icon on your Desktop.
- Right-click on the orca icon and select _Properties_ from the context menu.
- From the _Shortcut_ tab, copy the directory in the _Start in_ field.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To clarify, the Start in field is a path to a directory, correct? Not a path to a file?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct, There's also a Target field that is the full path to the executable.

- Add this _Start in_ directory to you system `PATH` (see below).
- Open a new Command Prompt and verify that the orca executable is available on your `PATH`.

```
> orca --help
Plotly's image-exporting utilities

Usage: orca [--version] [--help] <command> [<args>]
...
```

##### Windows References
- How to set the path and environment variables in Windows: https://www.computerhope.com/issues/ch000549.htm

#### Linux

- Run `$ chmod +x orca-X.Y.Z-x86_64.AppImage`
- Add it to your `$PATH`
- Make the orca AppImage executable.

```
$ chmod +x orca-X.Y.Z-x86_64.AppImage
```

- Create a symbolic link named `orca` somewhere on your `PATH` that points
to the AppImage.

```
$ ln -s /path/to/orca-X.Y.Z-x86_64.AppImage /somewhere/on/PATH/orca
```

- Open a new terminal and verify that the orca executable is available on your `PATH`.

```
$ which orca
/somewhere/on/PATH/orca

$ orca --help
Plotly's image-exporting utilities

Usage: orca [--version] [--help] <command> [<args>]
...
```

##### Linux Troubleshooting: Cannot open shared object
The Electron runtime depends a several common system libraries. These
libraries are pre-installed in most desktop Linux distributions
(e.g. Ubuntu), but are not pre-installed on some server Linux distributions
(e.g. Ubuntu Server). If a shared library is missing, you will see an error
message like:

```
$ orca --help
orca: error while loading shared libraries: libgtk-x11-2.0.so.0:
cannot open shared object file: No such file or directory
```

These additional dependencies can be satisfied by installing:
- The `libgtk2.0-0` and `libgconf-2-4` packages from your distribution's
software repository.
- The `google-chrome-stable` package from the [Google Linux Software
Repository](https://www.google.com/linuxrepositories/).

##### Linux Troubleshooting: Headless server configuration
The Electron runtime requires the presence of an active X11 display server,
but many server Linux distributions (e.g. Ubuntu Server) do not include X11
by default. If you do not wish to install X11 on your server, you may
install and run orca with Xvfb instead.

On Ubuntu Server, you can install Xvfb like this:
```
$ sudo apt-get install xvfb
```

To run orca under Xvfb, replace the symbolic link suggested above with a shell
script that runs the orca AppImage executable using the `xvfb-run` command.

```
#!/bin/bash
xvfb-run /path/to/orca-X.Y.Z-x86_64.AppImage "$@"
```

Name this shell script `orca` and place it somewhere or your system `PATH`.

##### Linux References
- How to add directory to system path in Linux: https://www.computerhope.com/issues/ch001647.htm
- AppImage: https://appimage.org/
- Xvfb: https://en.wikipedia.org/wiki/Xvfb

## Quick start

From the command line:
Expand Down
49 changes: 38 additions & 11 deletions bin/orca_electron.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -44,21 +44,48 @@ if (process.platform === 'darwin' && process.argv.length === 1) {
'To create your first image, open a terminal and run:\n\norca graph \'{ "data": [{"y": [1,2,1]}] }\' -o fig.png'
}

const source = path.join(__dirname, 'orca.sh')
const target = '/usr/local/bin/orca'

if (!fs.existsSync(target)) {
try {
execSync(`cp ${source} ${target}`)
} catch (err) {
options.type = 'error'
options.message = 'Installation Failed!'
options.detail = err.message
let showMessage = false

try {
execSync('which orca')
// Orca is already on the path, nothing to do
} catch (err) {
// Check if this is a standalone installation (not conda or npm)
const standalonePath = '/Applications/orca.app/Contents/MacOS/orca'
if (fs.existsSync(standalonePath)) {
// Now we know that orca is not on the path, but it is installed
// in the /Applications directory. So we'll ask the user if they
// want to add it to the path
const source = path.join(__dirname, 'orca.sh')
const target = '/usr/local/bin/orca'

if (!fs.existsSync(target)) {
// Build copy command
const copyCmd = `"cp ${source} ${target}"`

// Use apple script to perform copy so that we can launch a GUI
// prompt for administrator credentials
const prompt = '"Add orca to system PATH (/usr/local/bin)?"'
const cmd = `osascript -e 'do shell script ${copyCmd} with prompt ${prompt} with administrator privileges'`

try {
execSync(cmd)
showMessage = true
} catch (cmdErr) {
// User cancelled. Nothing more to do
}
}
} else {
options.message = 'Executable in non-standard location'
options.detail = 'No orca executable located at /Applications/orca.app/\nNo changes made'
showMessage = true
}
}

app.on('ready', function () {
dialog.showMessageBox(options)
if (showMessage) {
dialog.showMessageBox(options)
}
console.log(HELP)
process.exit(options.type === 'error' ? 1 : 0)
})
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Aug 27, 2026. It is now read-only.
/orcaPublic archive
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
119 changes: 107 additions & 12 deletions README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -44,25 +44,120 @@ your operating system from the

#### Mac OS

- Unzip `mac-release.zip` from your `Downloads/` folder
- Double-click on `orca-X.Y.Z.dmg` file, that should open an installation window
- Drag the orca icon into _Applications_
- In finder, go to the `Applications/` folder
- Right-click on the orca icon and click on _Open_, this should open an _Installation Succeeded_ window
- Open the terminal and start using Orca!
- Unzip the `mac-release.zip` file.
- Double-click on the `orca-X.Y.Z.dmg` file. This will open an installation window.
- Drag the orca icon into the `Applications` folder.
- Open finder and navigate to the `Applications/` folder.
- Right-click on the orca icon and select _Open_ from the context menu.
- A password dialog will appear asking for permission to add orca to your system `PATH`.
- Enter you password and click _OK_.
- This should open an _Installation Succeeded_ window.
- Open a new terminal and verify that the orca executable is available on your `PATH`.

```
$ which orca
/usr/local/bin/orca

$ orca --help
Plotly's image-exporting utilities

Usage: orca [--version] [--help] <command> [<args>]
...
```

#### Windows

- Extract the `window-release.zip` file
- In the `release` folder, double-click on `orca Setup X.Y.Z`, this will create an orca icon on your Desktop
- Right-click on the orca icon, then click on _Properties_ and copy the _Starts in_ field
- In the command prompt, run `PATH %PATH%;<paste the "Starts in" field here>`
- Extract the `windows-release.zip` file.
- In the `release` folder, double-click on `orca Setup X.Y.Z`, this will create an orca icon on your Desktop.
- Right-click on the orca icon and select _Properties_ from the context menu.
- From the _Shortcut_ tab, copy the directory in the _Start in_ field.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To clarify, the Start in field is a path to a directory, correct? Not a path to a file?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct, There's also a Target field that is the full path to the executable.

- Add this _Start in_ directory to you system `PATH` (see below).
- Open a new Command Prompt and verify that the orca executable is available on your `PATH`.

```
> orca --help
Plotly's image-exporting utilities

Usage: orca [--version] [--help] <command> [<args>]
...
```

##### Windows References
- How to set the path and environment variables in Windows: https://www.computerhope.com/issues/ch000549.htm

#### Linux

- Run `$ chmod +x orca-X.Y.Z-x86_64.AppImage`
- Add it to your `$PATH`
- Make the orca AppImage executable.

```
$ chmod +x orca-X.Y.Z-x86_64.AppImage
```

- Create a symbolic link named `orca` somewhere on your `PATH` that points
to the AppImage.

```
$ ln -s /path/to/orca-X.Y.Z-x86_64.AppImage /somewhere/on/PATH/orca
```

- Open a new terminal and verify that the orca executable is available on your `PATH`.

```
$ which orca
/somewhere/on/PATH/orca

$ orca --help
Plotly's image-exporting utilities

Usage: orca [--version] [--help] <command> [<args>]
...
```

##### Linux Troubleshooting: Cannot open shared object
The Electron runtime depends a several common system libraries. These
libraries are pre-installed in most desktop Linux distributions
(e.g. Ubuntu), but are not pre-installed on some server Linux distributions
(e.g. Ubuntu Server). If a shared library is missing, you will see an error
message like:

```
$ orca --help
orca: error while loading shared libraries: libgtk-x11-2.0.so.0:
cannot open shared object file: No such file or directory
```

These additional dependencies can be satisfied by installing:
- The `libgtk2.0-0` and `libgconf-2-4` packages from your distribution's
software repository.
- The `google-chrome-stable` package from the [Google Linux Software
Repository](https://www.google.com/linuxrepositories/).

##### Linux Troubleshooting: Headless server configuration
The Electron runtime requires the presence of an active X11 display server,
but many server Linux distributions (e.g. Ubuntu Server) do not include X11
by default. If you do not wish to install X11 on your server, you may
install and run orca with Xvfb instead.

On Ubuntu Server, you can install Xvfb like this:
```
$ sudo apt-get install xvfb
```

To run orca under Xvfb, replace the symbolic link suggested above with a shell
script that runs the orca AppImage executable using the `xvfb-run` command.

```
#!/bin/bash
xvfb-run /path/to/orca-X.Y.Z-x86_64.AppImage "$@"
```

Name this shell script `orca` and place it somewhere or your system `PATH`.

##### Linux References
- How to add directory to system path in Linux: https://www.computerhope.com/issues/ch001647.htm
- AppImage: https://appimage.org/
- Xvfb: https://en.wikipedia.org/wiki/Xvfb

## Quick start

From the command line:
Expand Down
49 changes: 38 additions & 11 deletions bin/orca_electron.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -44,21 +44,48 @@ if (process.platform === 'darwin' && process.argv.length === 1) {
'To create your first image, open a terminal and run:\n\norca graph \'{ "data": [{"y": [1,2,1]}] }\' -o fig.png'
}

const source = path.join(__dirname, 'orca.sh')
const target = '/usr/local/bin/orca'

if (!fs.existsSync(target)) {
try {
execSync(`cp ${source} ${target}`)
} catch (err) {
options.type = 'error'
options.message = 'Installation Failed!'
options.detail = err.message
let showMessage = false

try {
execSync('which orca')
// Orca is already on the path, nothing to do
} catch (err) {
// Check if this is a standalone installation (not conda or npm)
const standalonePath = '/Applications/orca.app/Contents/MacOS/orca'
if (fs.existsSync(standalonePath)) {
// Now we know that orca is not on the path, but it is installed
// in the /Applications directory. So we'll ask the user if they
// want to add it to the path
const source = path.join(__dirname, 'orca.sh')
const target = '/usr/local/bin/orca'

if (!fs.existsSync(target)) {
// Build copy command
const copyCmd = `"cp ${source} ${target}"`

// Use apple script to perform copy so that we can launch a GUI
// prompt for administrator credentials
const prompt = '"Add orca to system PATH (/usr/local/bin)?"'
const cmd = `osascript -e 'do shell script ${copyCmd} with prompt ${prompt} with administrator privileges'`

try {
execSync(cmd)
showMessage = true
} catch (cmdErr) {
// User cancelled. Nothing more to do
}
}
} else {
options.message = 'Executable in non-standard location'
options.detail = 'No orca executable located at /Applications/orca.app/\nNo changes made'
showMessage = true
}
}

app.on('ready', function () {
dialog.showMessageBox(options)
if (showMessage) {
dialog.showMessageBox(options)
}
console.log(HELP)
process.exit(options.type === 'error' ? 1 : 0)
})
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Aug 27, 2026. It is now read-only.
/orcaPublic archive
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
119 changes: 107 additions & 12 deletions README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -44,25 +44,120 @@ your operating system from the

#### Mac OS

- Unzip `mac-release.zip` from your `Downloads/` folder
- Double-click on `orca-X.Y.Z.dmg` file, that should open an installation window
- Drag the orca icon into _Applications_
- In finder, go to the `Applications/` folder
- Right-click on the orca icon and click on _Open_, this should open an _Installation Succeeded_ window
- Open the terminal and start using Orca!
- Unzip the `mac-release.zip` file.
- Double-click on the `orca-X.Y.Z.dmg` file. This will open an installation window.
- Drag the orca icon into the `Applications` folder.
- Open finder and navigate to the `Applications/` folder.
- Right-click on the orca icon and select _Open_ from the context menu.
- A password dialog will appear asking for permission to add orca to your system `PATH`.
- Enter you password and click _OK_.
- This should open an _Installation Succeeded_ window.
- Open a new terminal and verify that the orca executable is available on your `PATH`.

```
$ which orca
/usr/local/bin/orca

$ orca --help
Plotly's image-exporting utilities

Usage: orca [--version] [--help] <command> [<args>]
...
```

#### Windows

- Extract the `window-release.zip` file
- In the `release` folder, double-click on `orca Setup X.Y.Z`, this will create an orca icon on your Desktop
- Right-click on the orca icon, then click on _Properties_ and copy the _Starts in_ field
- In the command prompt, run `PATH %PATH%;<paste the "Starts in" field here>`
- Extract the `windows-release.zip` file.
- In the `release` folder, double-click on `orca Setup X.Y.Z`, this will create an orca icon on your Desktop.
- Right-click on the orca icon and select _Properties_ from the context menu.
- From the _Shortcut_ tab, copy the directory in the _Start in_ field.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To clarify, the Start in field is a path to a directory, correct? Not a path to a file?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct, There's also a Target field that is the full path to the executable.

- Add this _Start in_ directory to you system `PATH` (see below).
- Open a new Command Prompt and verify that the orca executable is available on your `PATH`.

```
> orca --help
Plotly's image-exporting utilities

Usage: orca [--version] [--help] <command> [<args>]
...
```

##### Windows References
- How to set the path and environment variables in Windows: https://www.computerhope.com/issues/ch000549.htm

#### Linux

- Run `$ chmod +x orca-X.Y.Z-x86_64.AppImage`
- Add it to your `$PATH`
- Make the orca AppImage executable.

```
$ chmod +x orca-X.Y.Z-x86_64.AppImage
```

- Create a symbolic link named `orca` somewhere on your `PATH` that points
to the AppImage.

```
$ ln -s /path/to/orca-X.Y.Z-x86_64.AppImage /somewhere/on/PATH/orca
```

- Open a new terminal and verify that the orca executable is available on your `PATH`.

```
$ which orca
/somewhere/on/PATH/orca

$ orca --help
Plotly's image-exporting utilities

Usage: orca [--version] [--help] <command> [<args>]
...
```

##### Linux Troubleshooting: Cannot open shared object
The Electron runtime depends a several common system libraries. These
libraries are pre-installed in most desktop Linux distributions
(e.g. Ubuntu), but are not pre-installed on some server Linux distributions
(e.g. Ubuntu Server). If a shared library is missing, you will see an error
message like:

```
$ orca --help
orca: error while loading shared libraries: libgtk-x11-2.0.so.0:
cannot open shared object file: No such file or directory
```

These additional dependencies can be satisfied by installing:
- The `libgtk2.0-0` and `libgconf-2-4` packages from your distribution's
software repository.
- The `google-chrome-stable` package from the [Google Linux Software
Repository](https://www.google.com/linuxrepositories/).

##### Linux Troubleshooting: Headless server configuration
The Electron runtime requires the presence of an active X11 display server,
but many server Linux distributions (e.g. Ubuntu Server) do not include X11
by default. If you do not wish to install X11 on your server, you may
install and run orca with Xvfb instead.

On Ubuntu Server, you can install Xvfb like this:
```
$ sudo apt-get install xvfb
```

To run orca under Xvfb, replace the symbolic link suggested above with a shell
script that runs the orca AppImage executable using the `xvfb-run` command.

```
#!/bin/bash
xvfb-run /path/to/orca-X.Y.Z-x86_64.AppImage "$@"
```

Name this shell script `orca` and place it somewhere or your system `PATH`.

##### Linux References
- How to add directory to system path in Linux: https://www.computerhope.com/issues/ch001647.htm
- AppImage: https://appimage.org/
- Xvfb: https://en.wikipedia.org/wiki/Xvfb

## Quick start

From the command line:
Expand Down
49 changes: 38 additions & 11 deletions bin/orca_electron.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -44,21 +44,48 @@ if (process.platform === 'darwin' && process.argv.length === 1) {
'To create your first image, open a terminal and run:\n\norca graph \'{ "data": [{"y": [1,2,1]}] }\' -o fig.png'
}

const source = path.join(__dirname, 'orca.sh')
const target = '/usr/local/bin/orca'

if (!fs.existsSync(target)) {
try {
execSync(`cp ${source} ${target}`)
} catch (err) {
options.type = 'error'
options.message = 'Installation Failed!'
options.detail = err.message
let showMessage = false

try {
execSync('which orca')
// Orca is already on the path, nothing to do
} catch (err) {
// Check if this is a standalone installation (not conda or npm)
const standalonePath = '/Applications/orca.app/Contents/MacOS/orca'
if (fs.existsSync(standalonePath)) {
// Now we know that orca is not on the path, but it is installed
// in the /Applications directory. So we'll ask the user if they
// want to add it to the path
const source = path.join(__dirname, 'orca.sh')
const target = '/usr/local/bin/orca'

if (!fs.existsSync(target)) {
// Build copy command
const copyCmd = `"cp ${source} ${target}"`

// Use apple script to perform copy so that we can launch a GUI
// prompt for administrator credentials
const prompt = '"Add orca to system PATH (/usr/local/bin)?"'
const cmd = `osascript -e 'do shell script ${copyCmd} with prompt ${prompt} with administrator privileges'`

try {
execSync(cmd)
showMessage = true
} catch (cmdErr) {
// User cancelled. Nothing more to do
}
}
} else {
options.message = 'Executable in non-standard location'
options.detail = 'No orca executable located at /Applications/orca.app/\nNo changes made'
showMessage = true
}
}

app.on('ready', function () {
dialog.showMessageBox(options)
if (showMessage) {
dialog.showMessageBox(options)
}
console.log(HELP)
process.exit(options.type === 'error' ? 1 : 0)
})
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
This repository was archived by the owner on Aug 27, 2026. It is now read-only.
/orcaPublic archive
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
119 changes: 107 additions & 12 deletions README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -44,25 +44,120 @@ your operating system from the

#### Mac OS

- Unzip `mac-release.zip` from your `Downloads/` folder
- Double-click on `orca-X.Y.Z.dmg` file, that should open an installation window
- Drag the orca icon into _Applications_
- In finder, go to the `Applications/` folder
- Right-click on the orca icon and click on _Open_, this should open an _Installation Succeeded_ window
- Open the terminal and start using Orca!
- Unzip the `mac-release.zip` file.
- Double-click on the `orca-X.Y.Z.dmg` file. This will open an installation window.
- Drag the orca icon into the `Applications` folder.
- Open finder and navigate to the `Applications/` folder.
- Right-click on the orca icon and select _Open_ from the context menu.
- A password dialog will appear asking for permission to add orca to your system `PATH`.
- Enter you password and click _OK_.
- This should open an _Installation Succeeded_ window.
- Open a new terminal and verify that the orca executable is available on your `PATH`.

```
$ which orca
/usr/local/bin/orca

$ orca --help
Plotly's image-exporting utilities

Usage: orca [--version] [--help] <command> [<args>]
...
```

#### Windows

- Extract the `window-release.zip` file
- In the `release` folder, double-click on `orca Setup X.Y.Z`, this will create an orca icon on your Desktop
- Right-click on the orca icon, then click on _Properties_ and copy the _Starts in_ field
- In the command prompt, run `PATH %PATH%;<paste the "Starts in" field here>`
- Extract the `windows-release.zip` file.
- In the `release` folder, double-click on `orca Setup X.Y.Z`, this will create an orca icon on your Desktop.
- Right-click on the orca icon and select _Properties_ from the context menu.
- From the _Shortcut_ tab, copy the directory in the _Start in_ field.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To clarify, the Start in field is a path to a directory, correct? Not a path to a file?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct, There's also a Target field that is the full path to the executable.

- Add this _Start in_ directory to you system `PATH` (see below).
- Open a new Command Prompt and verify that the orca executable is available on your `PATH`.

```
> orca --help
Plotly's image-exporting utilities

Usage: orca [--version] [--help] <command> [<args>]
...
```

##### Windows References
- How to set the path and environment variables in Windows: https://www.computerhope.com/issues/ch000549.htm

#### Linux

- Run `$ chmod +x orca-X.Y.Z-x86_64.AppImage`
- Add it to your `$PATH`
- Make the orca AppImage executable.

```
$ chmod +x orca-X.Y.Z-x86_64.AppImage
```

- Create a symbolic link named `orca` somewhere on your `PATH` that points
to the AppImage.

```
$ ln -s /path/to/orca-X.Y.Z-x86_64.AppImage /somewhere/on/PATH/orca
```

- Open a new terminal and verify that the orca executable is available on your `PATH`.

```
$ which orca
/somewhere/on/PATH/orca

$ orca --help
Plotly's image-exporting utilities

Usage: orca [--version] [--help] <command> [<args>]
...
```

##### Linux Troubleshooting: Cannot open shared object
The Electron runtime depends a several common system libraries. These
libraries are pre-installed in most desktop Linux distributions
(e.g. Ubuntu), but are not pre-installed on some server Linux distributions
(e.g. Ubuntu Server). If a shared library is missing, you will see an error
message like:

```
$ orca --help
orca: error while loading shared libraries: libgtk-x11-2.0.so.0:
cannot open shared object file: No such file or directory
```

These additional dependencies can be satisfied by installing:
- The `libgtk2.0-0` and `libgconf-2-4` packages from your distribution's
software repository.
- The `google-chrome-stable` package from the [Google Linux Software
Repository](https://www.google.com/linuxrepositories/).

##### Linux Troubleshooting: Headless server configuration
The Electron runtime requires the presence of an active X11 display server,
but many server Linux distributions (e.g. Ubuntu Server) do not include X11
by default. If you do not wish to install X11 on your server, you may
install and run orca with Xvfb instead.

On Ubuntu Server, you can install Xvfb like this:
```
$ sudo apt-get install xvfb
```

To run orca under Xvfb, replace the symbolic link suggested above with a shell
script that runs the orca AppImage executable using the `xvfb-run` command.

```
#!/bin/bash
xvfb-run /path/to/orca-X.Y.Z-x86_64.AppImage "$@"
```

Name this shell script `orca` and place it somewhere or your system `PATH`.

##### Linux References
- How to add directory to system path in Linux: https://www.computerhope.com/issues/ch001647.htm
- AppImage: https://appimage.org/
- Xvfb: https://en.wikipedia.org/wiki/Xvfb

## Quick start

From the command line:
Expand Down
49 changes: 38 additions & 11 deletions bin/orca_electron.js
Original file line numberDiff line numberDiff line change
Expand Up@@ -44,21 +44,48 @@ if (process.platform === 'darwin' && process.argv.length === 1) {
'To create your first image, open a terminal and run:\n\norca graph \'{ "data": [{"y": [1,2,1]}] }\' -o fig.png'
}

const source = path.join(__dirname, 'orca.sh')
const target = '/usr/local/bin/orca'

if (!fs.existsSync(target)) {
try {
execSync(`cp ${source} ${target}`)
} catch (err) {
options.type = 'error'
options.message = 'Installation Failed!'
options.detail = err.message
let showMessage = false

try {
execSync('which orca')
// Orca is already on the path, nothing to do
} catch (err) {
// Check if this is a standalone installation (not conda or npm)
const standalonePath = '/Applications/orca.app/Contents/MacOS/orca'
if (fs.existsSync(standalonePath)) {
// Now we know that orca is not on the path, but it is installed
// in the /Applications directory. So we'll ask the user if they
// want to add it to the path
const source = path.join(__dirname, 'orca.sh')
const target = '/usr/local/bin/orca'

if (!fs.existsSync(target)) {
// Build copy command
const copyCmd = `"cp ${source} ${target}"`

// Use apple script to perform copy so that we can launch a GUI
// prompt for administrator credentials
const prompt = '"Add orca to system PATH (/usr/local/bin)?"'
const cmd = `osascript -e 'do shell script ${copyCmd} with prompt ${prompt} with administrator privileges'`

try {
execSync(cmd)
showMessage = true
} catch (cmdErr) {
// User cancelled. Nothing more to do
}
}
} else {
options.message = 'Executable in non-standard location'
options.detail = 'No orca executable located at /Applications/orca.app/\nNo changes made'
showMessage = true
}
}

app.on('ready', function () {
dialog.showMessageBox(options)
if (showMessage) {
dialog.showMessageBox(options)
}
console.log(HELP)
process.exit(options.type === 'error' ? 1 : 0)
})
Expand Down