mirror of
https://github.com/zed-industries/zed.git
synced 2024-11-08 07:35:01 +03:00
125 lines
2.9 KiB
Markdown
125 lines
2.9 KiB
Markdown
# Zed Theme Importer
|
|
|
|
---
|
|
|
|
## Usage
|
|
|
|
- `cargo run -p theme_importer` - Import the context of `assets/themes/src`
|
|
|
|
---
|
|
|
|
## Troubleshooting
|
|
|
|
As the importer generates rust files, you may need to manually do some cleanup in `registry.rs` and `themes/mod.rs` if you remove themes or delete the `themes` folder in the theme crate.
|
|
|
|
---
|
|
|
|
## Required Structure
|
|
|
|
To import a theme or series of themes 3 things are required:
|
|
|
|
- `family.json`: A JSON file containing the theme family metadata and list of theme variants
|
|
- `{theme_name}.json`: One theme json for each theme variant
|
|
- `LICENSE`: A license file for the theme family
|
|
|
|
### `family.json`
|
|
|
|
#### `name`
|
|
|
|
The name of the theme family. Avoid special characters.
|
|
|
|
This will be used for the theme family directory name (lowercased) and the theme family name in the Zed UI.
|
|
|
|
Good:
|
|
|
|
- `Rose Pine`
|
|
- `Synthwave 84`
|
|
- `Monokai Solarized`
|
|
|
|
Bad:
|
|
|
|
- `Rosé Pine`
|
|
- `Synthwave '84`
|
|
- `Monokai (Solarized)`
|
|
|
|
#### `author`
|
|
|
|
The author of the theme family. This can be a name or a username.
|
|
|
|
This will be used for the theme family author in the Zed UI.
|
|
|
|
#### `themes`
|
|
|
|
A list of theme variants.
|
|
|
|
`appearance` can be either `light` or `dark`. This will impact which default fallback colors are used, and where the theme shows up in the Zed UI.
|
|
|
|
### `{theme_name}.json`
|
|
|
|
Each theme added to the family must have a corresponding JSON file. This JSON file can be obtained from the VSCode extensions folder (once you have installed it.) This is usually located at `~/.vscode/extensions` (on macOS).
|
|
|
|
You can use `open ~/.vscode/extensions` to open the folder in Finder directly.
|
|
|
|
Copy that json file into the theme family directory and tidy up the filenames as needed.
|
|
|
|
### `LICENSE`
|
|
|
|
A LICENSE file is required to import a theme family. Failing to provide a complete text license will cause it to be skipped when the import is run.
|
|
|
|
If the theme only provides a license code (e.g. MIT, Apache 2.0, etc.) then put that code into the LICENSE file.
|
|
|
|
If no license is provided, either contact the theme creator or don't add the theme.
|
|
|
|
---
|
|
|
|
### Complete Example:
|
|
|
|
An example family with multiple variants:
|
|
|
|
```json
|
|
{
|
|
"name": "Ayu",
|
|
// When both name and username are available
|
|
// prefer the `username (name)` format
|
|
"author": "dempfi (Ike Ku)",
|
|
"themes": [
|
|
{
|
|
"name": "Ayu Light",
|
|
"file_name": "ayu-light.json",
|
|
"appearance": "light"
|
|
},
|
|
{
|
|
"name": "Ayu Mirage",
|
|
"file_name": "ayu-mirage.json",
|
|
"appearance": "dark"
|
|
},
|
|
{
|
|
"name": "Ayu Dark",
|
|
"file_name": "ayu-dark.json",
|
|
"appearance": "dark"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
An example single variant family:
|
|
|
|
```json
|
|
{
|
|
"name": "Andromeda",
|
|
"author": "Eliver Lara (EliverLara)",
|
|
"themes": [
|
|
{
|
|
"name": "Andromeda",
|
|
"file_name": "andromeda.json",
|
|
"appearance": "dark"
|
|
},
|
|
{
|
|
"name": "Andromeda Bordered",
|
|
"file_name": "andromeda-bordered.json",
|
|
"appearance": "dark"
|
|
}
|
|
]
|
|
}
|
|
```
|