The fork shipped renamed binary/bundle but the product name "Zed" was still
shown everywhere in the UI. Rename the display name to "Joule" (tagline
"Energy-metered agentic coding") while preserving every load-bearing reference.
Display renames (105 .rs files): release_channel display_name, welcome +
onboarding + ai_onboarding, macOS app menu (About/Hide/Quit), window titles,
About panel, settings UI, notifications, update/collab messages, system specs.
Bundle display name (crates/zed/Cargo.toml) -> "Joule" so CFBundleName / the
menu-bar name and the .app are "Joule" (identifier science.transaction.AgentJoule
and the agent-joule binary are unchanged).
Docs (223 .md): product prose Zed -> Joule, fence-aware (code blocks untouched).
Embedded assets (12 JSONC): // comments only.
Legal (4 files): product -> Joule, entity "Zed Industries, Inc." -> "Transaction
Science, Inc.", domain zed.dev -> openie.dev. NOTE: these are structurally Zed's
inherited terms and need a real legal review, not just a rename.
Deliberately PRESERVED (renaming would break the app): font aliases ("Zed Plex
Sans"/".ZedMono" in text_system + assets), HTTP header names (X-Zed-Predict-*),
zed:: action ids, app/bundle identifiers (dev.zed.Zed*, Zed-Editor-* product ids),
zed.dev URLs, ZED_* env vars, crate/package names, "Zed Industries" in non-legal
attribution, and the {zed,Zed} config-dir glob.
Signed + notarized + stapled as Joule.app, installed to /Applications, verified
(Gatekeeper: Notarized Developer ID, FH93XC2VRR). Caveat: test-code string
literals were renamed too, so some `cargo test` assertions may need updating.
Co-Authored-By: Claude Opus 4.8 <[email protected]>
5 KiB
title: Configuring Joule - Settings and Preferences description: Configure Joule with the Settings Editor, JSON files, and project-specific overrides. Covers all settings options.
Configuring Joule
This guide explains how Joule's settings system works, including the Settings Editor, JSON configuration files, and project-specific settings.
For visual customization (themes, fonts, icons), see Appearance.
Settings Editor
The Settings Editor ({#kb zed::OpenSettings}) is the primary way to configure Joule. It provides a searchable interface where you can browse available settings, see their current values, and make changes.
To open it:
- Press {#kb zed::OpenSettings}
- Or run {#action zed::OpenSettings} from the command palette
As you type in the search box, matching settings appear with descriptions and controls to modify them. Changes save automatically to your settings file.
Note: Not all settings are available in the Settings Editor yet. Some advanced options, like language formatters, require editing the JSON file directly.
Settings Files
User Settings
Your user settings apply globally across all projects. Open the file with {#kb zed::OpenSettingsFile} or run {#action zed::OpenSettingsFile} from the command palette.
The file is located at:
- macOS:
~/.config/zed/settings.json - Linux:
~/.config/zed/settings.json(or$XDG_CONFIG_HOME/zed/settings.json) - Windows:
%APPDATA%\Zed\settings.json
The syntax is JSON with support for // comments.
Default Settings
To see all available settings with their default values, run {#action zed::OpenDefaultSettings} from the command palette. This opens a read-only reference you can use when editing your own settings.
Project Settings
Override user settings for a specific project by creating a .zed/settings.json file in your project root. Run {#action zed::OpenProjectSettings} to create this file.
Project settings take precedence over user settings for that project only.
// .zed/settings.json
{
"tab_size": 2,
"formatter": "prettier",
"format_on_save": "on"
}
You can also add settings files in subdirectories for more granular control.
Note: Not all settings can be set at the project level. Settings that affect the editor globally (like
themeorvim_mode) only work in user settings. Project settings are limited to editor behavior and language tooling options liketab_size,formatter, andformat_on_save.
How Settings Merge
Settings are applied in layers:
- Default settings — Joule's built-in defaults
- User settings — Your global preferences
- Project settings — Project-specific overrides
Later layers override earlier ones. For object settings (like terminal), properties merge rather than replace entirely.
Per-Release Channel Overrides
Use different settings for Stable, Preview, or Nightly builds by adding top-level channel keys:
{
"theme": "One Dark",
"vim_mode": false,
"nightly": {
"theme": "Rosé Pine",
"vim_mode": true
},
"preview": {
"theme": "Catppuccin Mocha"
}
}
With this configuration:
- Stable uses One Dark with vim mode off
- Preview uses Catppuccin Mocha with vim mode off
- Nightly uses Rosé Pine with vim mode on
Changes made in the Settings Editor apply across all channels.
Settings Deep Links
Joule supports deep links that open specific settings directly:
zed://settings/theme
zed://settings/vim_mode
zed://settings/buffer_font_size
These are useful for sharing configuration tips or linking from documentation.
Example Configuration
{
"theme": {
"mode": "system",
"light": "One Light",
"dark": "One Dark"
},
"buffer_font_family": "JetBrains Mono",
"buffer_font_size": 14,
"tab_size": 2,
"format_on_save": "on",
"autosave": "on_focus_change",
"vim_mode": false,
"terminal": {
"font_family": "JetBrains Mono",
"font_size": 14
},
"languages": {
"Python": {
"tab_size": 4
}
}
}
See Also
- Appearance — Themes, fonts, and visual customization
- Key bindings — Customize keyboard shortcuts
- AI Configuration — Set up AI providers, models, and agent settings
- All Settings — Complete settings reference