mirror of
https://github.com/zed-industries/zed.git
synced 2024-12-28 20:01:33 +00:00
Add a README for theme_importer
This commit is contained in:
parent
3cb72610b3
commit
2931d32499
1 changed files with 124 additions and 0 deletions
124
crates/theme_importer/README.md
Normal file
124
crates/theme_importer/README.md
Normal file
|
@ -0,0 +1,124 @@
|
|||
# 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 provices 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"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
Loading…
Reference in a new issue