Every local folder becomes a root
In the order the file lists them, with the alias the file gave each one. A directory opened from Finder or the command line is treated the same way: a single-folder project.

Workspaces and windows
Most Mac editors treat a workspace file as JSON to read. Linelark reads it as what it is — an ordered list of folders, with the exclusions and aliases someone already agreed on — and opens the project, in a window that belongs to it.
The mechanism
A workspace file is somebody else’s document, usually checked into the repository. Opening it in Linelark and saving it again should not be something a teammate can detect from the diff.
In the order the file lists them, with the alias the file gave each one. A directory opened from Finder or the command line is treated the same way: a single-folder project.
Boolean files.exclude and search.exclude entries are applied to folder search using the portable subset of VS Code glob syntax — *, ? and recursive ** — so **/dist and **/*.generated.swift work as written.
A project arriving from outside the app is a launch context, not a preference. Close it and the folder you had chosen yourself is exactly where it was.
File ▸ Add Folder to Workspace… adds one; a root’s context menu removes it without touching the folder on disk.
File ▸ Save Workspace and Save Workspace As… produce a VS Code-compatible .code-workspace with relative folder paths, so the file survives being cloned to a different machine.
Settings, tasks, launch configuration and anything else it does not understand are written back unchanged. An editor that dropped them would be an editor nobody could open a shared workspace in twice.
⇧⌘N opens a second window with its own tabs, panes, folder root, find state, shells and plugin panels. The menu bar acts on the window in front.
Every window open at quit is restored, in order, at the size and position it had. Closing one forgets that window rather than the app’s session.
Specifics
Read from the file on open, and written back on save. Everything in the third column is round-tripped rather than interpreted.
| Part of the file | What happens |
|---|---|
| folders[].path | Opened as a root, relative paths resolved against the workspace file. |
| folders[].name | Used as the root’s display name in the sidebar. |
| files.exclude | Boolean-true globs are skipped by the folder tree and folder search. |
| search.exclude | Boolean-true globs are skipped by folder search. |
| settings, tasks, launch | Not interpreted. Preserved exactly when Linelark saves the file. |
| Remote or virtual folders | Ignored. Only local folders are opened. |
Read from the Linelark Studio 1.6.1 source, not from its documentation. Where the two disagree, this is the one that ships.
Before you rely on it
Linelark reads the parts of the format that describe folders and search. It is not a second implementation of the editor the format came from.
Free, and staying free
Apple-notarized, macOS 14 and newer, Intel and Apple silicon.
Download Studio 1.6.1 6.8 MB · every version, with checksums