ecliptic

Settings

~/.config/ecliptic/settings.json, as VS Code keeps its own: JSON with comments and trailing commas allowed, only the settings you changed. Edit it in File → Settings, or by hand (File → Open Settings (JSON) opens it in ecliptic.editor.command, $VISUAL or the desktop's editor); either way the change applies at once.

{
    // Light, whatever the desktop says.
    "window.autoDetectColorScheme": false,
    "workbench.colorTheme": "Light Modern",
    "editor.fontSize": 14,
    "git.scanRepositories": ["~/Warehouse", "~/code"],
}
Setting Default
workbench.colorTheme "Dark Modern" any installed theme; applies when the next one is off
window.autoDetectColorScheme true follow the desktop's light or dark scheme, with:
workbench.preferredDarkColorTheme "Dark Modern" the theme while the desktop is dark
workbench.preferredLightColorTheme "Light Modern" the theme while it is light
workbench.colorCustomizations {} colours over any theme ({ "sideBar.background": "#202020" }), or over one ({ "[Dark+]": { … } }); the ids are in docs/extensions.md
workbench.statusBar.visible true the status bar
workbench.activityBar.location "default" the Activity Bar down the left edge, or "hidden"
workbench.hover.delay 600 milliseconds before a file's or commit's tooltip shows
ecliptic.layout.twoRows true columns in two rows (View → Two Rows)
ecliptic.drawer.sideBar true the changes (or a commit's files) down the left of the drawer
editor.fontFamily "" the font of diffs and commits; empty: the desktop's monospace font
editor.fontSize 12 its size in pixels (6–40)
ecliptic.editor.command "" the editor Open in Editor and Open Settings (JSON) use, as $VISUAL is written (code, code -g, /usr/bin/kate); the path is appended; empty: $VISUAL, else the desktop's default app
ecliptic.menu.file ["git.openChange", "---", "git.openFile", "revealFileInOS", "---", "copyFilePath", "copyRelativeFilePath", "ecliptic.copyFileName", "---", "ecliptic.copyDiff"] a changed file's menu: command ids in order, "---" a separator; an unknown id is reported and skipped
ecliptic.menu.commit ["ecliptic.openCommit", "---", "ecliptic.copyCommitHash", "ecliptic.copyCommitSubject"] a commit's menu
ecliptic.menu.column ["ecliptic.changeRepository", "ecliptic.refreshColumn", "---", "ecliptic.moveColumnLeft", "ecliptic.moveColumnRight", "ecliptic.moveColumnUp", "ecliptic.moveColumnDown", "---", "ecliptic.closeColumn"] a column's menu (its headers, empty space, or its row in the side bar)
scm.countBadge "all" the Source Control badge counts every column's changes, the active column's ("focused") or none ("off")
ecliptic.changes.lineCounts true count each changed file's lines added and removed
ecliptic.activity.unseenMarks true mark what changed until the column is looked at
ecliptic.activity.flash true flash a file when it changes
scm.graph.pageSize 200 commits in each Graph (10–5000)
git.scanRepositories [] folders the repository picker searches; empty: ~/Warehouse, else home
git.repositoryScanMaxDepth 4 how many levels below them it looks (1–16)

Extensions add their own settings, in their own sections of the Settings editor. A value of the wrong type is reported in a banner and its default is used; a file that is not valid JSON is reported too, and the last good settings apply until it is fixed (the editor won't write into it meanwhile). The theme, the two rows and the search folders were once in config.toml; they move to settings.json the first time this version starts.

The layout file

~/.config/ecliptic/config.toml, written when you change columns:

drawer_width = 760.0
row_split = 0.5                    # the top row's share of the height (0.15–0.85)
side_bar = false                   # the Primary Side Bar is open
side_bar_width = 260.0             # pixels (170–800)

[[column]]
repo = "/home/you/code/feed"
width = 340.0                      # pixels (220–2000)
collapsed = ["graph"]              # any of "repositories", "changes", "graph"
split = 0.5                        # Changes' share of the space it splits with Graph
row = 0                            # 0 top row, 1 bottom row

[[column]]                         # an empty column, in the top row

Up to 32 columns. Columns load grouped by row, top row first; files from before rows put every column in the top row. Older files with relative widths (around 1.0) are scaled to pixels. A config that fails to parse is reported in a banner and never overwritten.