Skip to content

Ulysses

Ulysses is a powerful writing app for Mac, iPad and iPhone. Protocol Launcher allows you to generate deep links to create and manage sheets, groups, and notes in Ulysses.

Usage

There are two ways to use this library:

  • On-Demand import from subpaths enables tree-shaking and keeps bundles small.
  • Full Import from the root package is convenient but includes all app modules.

Pick On-Demand for production builds; Full Import is fine for quick scripts or demos.

Select Installation Method

On-Demand
Recommended. Optimized for production.
Full Import
Convenient. Good for quick scripts.

Open App

On-Demand
ts
import { open } from 'protocol-launcher/ulysses'

const url = open()

Open Item

Open a sheet or group by identifier, name, or path.

On-Demand
ts
import { openItem } from 'protocol-launcher/ulysses'

const url = openItem({
  id: 'DCj45UWKr_g15y2vBPwJdQ',
})

New Sheet

Create a new sheet with optional content, group, format, and position.

On-Demand
ts
import { newSheet } from 'protocol-launcher/ulysses'

const url = newSheet({
  text: 'My new sheet content',
  group: '/Books',
  format: 'markdown',
  index: 0,
})

Insert Text

Insert or append text to an existing sheet.

On-Demand
ts
import { insert } from 'protocol-launcher/ulysses'

const url = insert({
  id: 'H8zLAmc1I0njH-0Ql-3YGQ',
  text: 'Inserted text',
  format: 'markdown',
  position: 'end',
  newline: 'prepend',
})

Attach Note

Attach a note to a sheet.

On-Demand
ts
import { attachNote } from 'protocol-launcher/ulysses'

const url = attachNote({
  id: 'H8zLAmc1I0njH-0Ql-3YGQ',
  text: 'My new note',
  format: 'markdown',
})

Attach Keywords

Add keywords to a sheet.

On-Demand
ts
import { attachKeywords } from 'protocol-launcher/ulysses'

const url = attachKeywords({
  id: 'H8zLAmc1I0njH-0Ql-3YGQ',
  keywords: 'Draft,Important',
})

New Group

Create a new group for organizing sheets.

On-Demand
ts
import { newGroup } from 'protocol-launcher/ulysses'

const url = newGroup({
  name: 'My Group',
  parent: '/Books',
  index: 0,
})

Copy Item

Copy a sheet or group to a target location.

On-Demand
ts
import { copy } from 'protocol-launcher/ulysses'

const url = copy({
  id: 'hZ7IX2jqKbVmPGlYUXkZjQ',
  targetGroup: 'H8zLAmc1I0njH-0Ql-3YGQ',
  index: 4,
})

Open All

Open the special "All" group showing all sheets.

On-Demand
ts
import { openAll } from 'protocol-launcher/ulysses'

const url = openAll()

Open Favorites

Open the special "Favorites" group.

On-Demand
ts
import { openFavorites } from 'protocol-launcher/ulysses'

const url = openFavorites()

Open Recent

Open the special "Last 7 Days" (Recent) group.

On-Demand
ts
import { openRecent } from 'protocol-launcher/ulysses'

const url = openRecent()