LogoLumide

Settings & Configuration

Lumide stores configuration in JSON and provides an interactive graphical settings editor.


Opening Settings#

Settings dialog on the General page, with the settings categories in the sidebar
  • Shortcut: Cmd + , (macOS) / Ctrl + , (Windows/Linux).
  • Command Palette: Preferences: Open Settings.
  • TopBar: Application menu or Session menu -> Settings....

Settings Scopes#

  1. User Settings: Global configuration applied across all workspaces.
    • Stored at: ~/.sofluffy/lumide/settings.json
  2. Workspace Settings: Project-specific overrides committed with your repository.
    • Stored at: <project>/.sofluffy/lumide/settings.json, or in the settings section of a workspace file when the window opened one
    • Takes precedence over User Settings when that project is open.
  3. Folder Settings: In a workspace of several folders, each added folder's own settings, for the files inside it.
    • Stored at: <folder>/.sofluffy/lumide/settings.json
    • Take precedence over Workspace Settings for the folder's files, and apply only to settings that can differ between folders (see below).

For a setting that can differ between folders, a file gets the value from the deepest workspace folder that holds it: folder > workspace > user > default. With a workspace file, the workspace settings are the file's settings section, and every folder's own file, the first folder's too, is a folder file: it sets only what can differ between folders, for its files. Window settings, such as the theme, come from the workspace file and the user settings. Language overrides (languages.<id>) and platform overrides (macos, linux, windows) work in a folder's file too; as elsewhere, a language override beats a plain value at any level.

Folder settings, like workspace settings, apply only in a trusted workspace. Remote SSH windows and browser windows use the workspace settings only.

In a guest window of a shared workspace, the host decides editor.tab_size, editor.insert_spaces and editor.format_on_save for its files, as its own editor resolves them per folder and language, over every layer of your settings. Every other setting is yours. These rows show a From badge with the host's name.

Which Settings Apply per Folder#

Applies per folder (resource)Applies to the whole window
editor.tab_size, editor.insert_spaces, editor.format_on_save editor.font_size, editor.font_family, editor.line_height
editor.soft_wrap , editor.show_line_numbers , editor.show_indent_guides editor.vim_mode.*, edit_predictions.* (AI completion)
editor.show_code_lenses, editor.snippet_suggestions theme.*, general.*, status_bar.*, keymap.*
editor.diagnosis.show_inline, editor.diagnosis.show_hover files.* (auto save, hot exit, Local History)
editor.json_preview.show_annotations file_tree.*, logging.*, collaboration.*, agent.*
git.inline_blame.enabled, git.inline_blame.delay_ms other git.* keys, dart.*
terminal.default_profile (the folder a new terminal starts in) other terminal.* keys, including the profiles themselves
plugins.config.<plugin>.<key> (plugin configuration) plugins.enabled, plugins.localPaths

A folder's file that sets a window setting, or a key Lumide doesn't know, leaves it out; the Settings editor's Folder tab lists what it left out.

The Folder Tab#

With added folders, the Settings editor shows User, Project and Folder tabs. With a workspace file, the Project tab is named Workspace after the file and edits its settings section, keeping the rest of the file, and Folder lists the first folder too. Folder edits an added folder's settings file; when the workspace has several added folders, a picker beside the tabs chooses which. The tab lists only the settings a folder can set, shows the value the folder's files get when the folder leaves one unset, and warns when the folder's file sets window settings or can't be read. In the User and Project tabs, a setting that a folder overrides shows a Folder: name badge; click it to open that folder. Open settings.json opens the selected folder's file.

Plugins read a folder's values by passing a file or folder as the scope of getConfiguration; without a scope they get the workspace value.


Core Settings Reference#

Editor (editor.*)#

KeyTypeDefaultDescription
editor.font_size double 13.0 Editor font size in pixels.
editor.font_family string "JetBrains Mono" Monospace font family.
editor.line_height double 22.0 Line height in pixels.
editor.show_line_numbers bool true Display line numbers in gutter.
editor.soft_wrap bool false Wrap long lines to viewport.
editor.format_on_save bool false Automatically reformat code on save.
editor.tab_size int 2 Number of spaces per tab indentation.
editor.insert_spaces bool true Insert spaces instead of \t.
editor.show_indent_guides bool true Display vertical indentation guide lines.
editor.diagnosis.show_inline bool false Display diagnostic squiggly lines inline.
editor.diagnosis.show_hover bool true Display diagnostics in hover popup.

Files & Recovery (files.*)#

KeyTypeDefaultDescription
files.auto_save string "onFocusChange" Auto-save mode: off , afterDelay , onFocusChange , onWindowChange .
files.auto_save_delay int 1000 Delay in milliseconds when auto_save is afterDelay.
files.hot_exit bool true Backup unsaved buffers across quits and reboots.
files.local_history bool true Maintain file revision history before saves.
files.local_history_max_versions int 50 Maximum snapshot revisions kept per file.
files.local_history_max_file_size_kb int 5120 Maximum file size in KB for history snapshots.

Theme & Appearance (theme.* & general.*)#

KeyTypeDefaultDescription
theme.mode string "system" Theme mode: dark, light, or system.
theme.dynamic_theme bool false Synchronize theme with OS light/dark schedule.
theme.dark string "ailurus-dark" Preferred dark color theme ID.
theme.light string "ailurus-light" Preferred light color theme ID.
theme.icon_theme string "" File icon pack.
general.background_image string "" File path to custom workspace wallpaper.
general.background_opacity double 1.0 Wallpaper opacity (0.0 to 1.0).
general.background_fit string "cover" Wallpaper fit (cover, contain, fill).

File Tree (file_tree.*)#

KeyTypeDefaultDescription
file_tree.open_mode string "singleClick" singleClick or doubleClick to open files.
file_tree.auto_reveal_active_file bool false Highlight active tab in file tree.
file_tree.file_nesting.enabled bool false Group generated files under parent files.
file_tree.show_hidden_files bool true Display dotfiles.
file_tree.show_diagnostics bool true Highlights problematic files in tree.

Git (git.*)#

KeyTypeDefaultDescription
git.inline_blame.enabled bool true Display author blame ghost text on active line.
git.inline_blame.delay_ms int 0 Milliseconds before blame text displays.
git.separate_staged_unstaged_lists bool true Separate staged and unstaged files in C.O.R.G.I.
git.stage_resolved_conflicts bool true Stage a conflicted file once no conflict markers are left in it.
git.sync_branch_operations bool false With several repositories, check out and create branches in all of them at once.
git.show_ignored_files bool true Display ignored files in git views.

Terminal (terminal.*)#

KeyTypeDefaultDescription
terminal.shell_path string "" Custom shell executable path (empty = default OS shell).
terminal.font_size double 13.0 Terminal font size.
terminal.font_family string "JetBrains Mono" Monospace font family.

Direct JSON Editing#

Open ~/.sofluffy/lumide/settings.json directly via Command Palette: Preferences: Open User Settings (JSON).


Next Steps#