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()