├── .gitignore ├── test ├── test.c ├── test.js └── test.md ├── extension.toml ├── .github └── workflows │ └── release.yml ├── DEVELOPMENT ├── LICENSE ├── README.md └── themes └── macos-classic.json /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | -------------------------------------------------------------------------------- /test/test.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | int main() { 5 | printf(Hello, world\n"); 6 | } 7 | -------------------------------------------------------------------------------- /extension.toml: -------------------------------------------------------------------------------- 1 | id = "macos-classic" 2 | name = "macOS Classic Theme" 3 | description = "A macOS native style theme, let it same like native app in macOS." 4 | version = "0.3.0" 5 | schema_version = 1 6 | authors = ["Jason Lee "] 7 | repository = "https://github.com/huacnlee/zed-theme-macos-classic" 8 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | on: 2 | push: 3 | tags: 4 | - "v*" 5 | 6 | jobs: 7 | homebrew: 8 | name: Release Zed Extension 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: huacnlee/zed-extension-action@v1 12 | with: 13 | extension-name: macos-classic 14 | push-to: huacnlee/zed-extensions 15 | env: 16 | COMMITTER_TOKEN: ${{ secrets.COMMITTER_TOKEN }} 17 | -------------------------------------------------------------------------------- /test/test.js: -------------------------------------------------------------------------------- 1 | import utils from 'utils'; 2 | 3 | const a = 1; 4 | 5 | // This is warning 6 | let b = a + "1"; 7 | 8 | const here_is_a_error = ; 9 | 10 | const here_is_a_error = (here_is_a_info) => { 11 | let unused_var = 1; 12 | }; 13 | 14 | 15 | /** 16 | * @deprecated This method was deprecated in v1.0.0 and will be removed in v2.0.0 17 | */ 18 | const warning_method = () => { 19 | let hint = 1; 20 | } 21 | 22 | warning_method(); 23 | -------------------------------------------------------------------------------- /test/test.md: -------------------------------------------------------------------------------- 1 | # macOS Classic Theme for Zed 2 | 3 | A macOS native style theme for [Zed](https://zed.dev), let it same like native app in macOS. 4 | 5 | See also: [macOS Classic Theme for VS Code](https://marketplace.visualstudio.com/items?itemName=huacnlee.theme-macos-classic) 6 | 7 | ## Features 8 | 9 | - Light and Dark mode 10 | - macOS native style 11 | 12 | ## Usage 13 | 14 | Setup auto switch theme in light and dark mode based on the system's appearance. 15 | 16 | Open your Zed user settings.json: `~/.config/zed/settings.json`, and add this config: 17 | 18 | ```json 19 | { 20 | "theme": { 21 | "mode": "system", 22 | "light": "macOS Classic Light", 23 | "dark": "macOS Classic Dark" 24 | } 25 | } 26 | ``` 27 | -------------------------------------------------------------------------------- /DEVELOPMENT: -------------------------------------------------------------------------------- 1 | # Development 2 | 3 | ## Edit theme 4 | 5 | You can edit the installed theme for development. 6 | 7 | ```bash 8 | $ zed ~/Library/Application\ Support/Zed/extensions/installed/macos-classic/ 9 | ``` 10 | 11 | When you modifed the theme, Zed will reload the theme automatically. 12 | 13 | After you finish the development, you can copy the `macos-classic.json` contents to this project. 14 | 15 | ## Release Extension 16 | 17 | 1. Update version in `extension.toml`. 18 | 2. Create a tag with the version number. 19 | 3. Push the tag to the repository, then the GitHub Actions will make PR to [Zed extensions](https://github.com/zed-industries/extensions). 20 | 4. Wait for the PR to be merged, then the new version will be released. 21 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Jason Lee. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # macOS Classic Theme for Zed 2 | 3 | [![Zed Extension](https://img.shields.io/badge/-Zed_Extension-blue?style=flat&logo=zedindustries&logoColor=%23FFFFFF&logoSize=auto&labelColor=%23111111&color=%23084CCF)](https://zed.dev/extensions/macos-classic) 4 | 5 | A macOS native style theme for [Zed](https://zed.dev), let it same like native app in macOS. 6 | 7 | ## Screenshot 8 | 9 | ### Light 10 | 11 | ![SCR-20240204-edk](https://github.com/user-attachments/assets/1db96b6e-5da6-4979-aee2-d3ee743fcc74) 12 | 13 | ### Dark 14 | 15 | ![SCR-20240204-edr](https://github.com/user-attachments/assets/d87bea56-aa6d-4c86-acfc-87f91624f8a7) 16 | 17 | ## Usage 18 | 19 | Setup auto switch theme in light and dark mode based on the system's appearance. 20 | 21 | Open your Zed user settings.json: `~/.config/zed/settings.json`, and add this config: 22 | 23 | ```json 24 | { 25 | "theme": { 26 | "mode": "system", 27 | "light": "macOS Classic Light", 28 | "dark": "macOS Classic Dark" 29 | } 30 | } 31 | ``` 32 | 33 | ## Other Tools Themes 34 | 35 | - [Zed Theme](https://github.com/huacnlee/zed-theme-macos-classic) 36 | - [VS Code Theme](https://github.com/huacnlee/vscode-macos-classic.theme) 37 | - [Warp Theme](https://github.com/huacnlee/warp-theme-macos-classic) 38 | 39 | ## License 40 | 41 | MIT 42 | -------------------------------------------------------------------------------- /themes/macos-classic.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://zed.dev/schema/themes/v0.1.0.json", 3 | "name": "macOS Classic", 4 | "author": "huacnlee", 5 | "themes": [ 6 | { 7 | "name": "macOS Classic Light", 8 | "appearance": "light", 9 | "style": { 10 | "border": "#D2D2D2", 11 | "border.variant": "#E0E0E0", 12 | "border.focused": "#eeeeee", 13 | "border.selected": "#DADADA", 14 | "border.transparent": "#DADADA", 15 | "border.disabled": "#DCDBDA", 16 | "elevated_surface.background": "#F7F7F7", 17 | "surface.background": "#F9F9F9", 18 | "background": "#ffffff", 19 | "element.background": "#E0E0E0", 20 | "element.hover": "#D0D0D0", 21 | "element.selected": "#C7DEFF", 22 | "ghost_element.hover": "#D7D5D577", 23 | "ghost_element.selected": "#E4E0E0", 24 | "text": "#000000", 25 | "text.muted": "#505050", 26 | "text.placeholder": "#929292", 27 | "text.accent": "#1f6ae2", 28 | "status_bar.background": "#E9E9E9", 29 | "title_bar.background": "#FEFEFE", 30 | "toolbar.background": "#FFFFFF", 31 | "tab_bar.background": "#E9E9E9", 32 | "tab.inactive_background": "#E9E9E9", 33 | "tab.active_background": "#FFFFFF", 34 | "search.match_background": "#fbee5c82", 35 | "search.active_match_background": "#fbee5c", 36 | "panel.background": "#F9F9F9", 37 | "scrollbar.thumb.background": "#C8C8C8AA", 38 | "scrollbar.thumb.hover_background": "#C8C8C8AA", 39 | "scrollbar.track.background": "#ffffff", 40 | "editor.foreground": "#000000", 41 | "editor.background": "#ffffff", 42 | "editor.gutter.background": "#FFFFFF", 43 | "editor.active_line.background": "#F0F0F0", 44 | "editor.line_number": "#929292", 45 | "editor.active_line_number": "#000000", 46 | "editor.invisible": "#acafb1ff", 47 | "editor.wrap_guide": "#DCDBDA", 48 | "editor.active_wrap_guide": "#DCDBDA", 49 | "editor.document_highlight.read_background": "#C9CDD0BB", 50 | "editor.document_highlight.write_background": "#acafb166", 51 | "terminal.background": "#ffffff", 52 | "terminal.foreground": "#000000", 53 | "terminal.ansi.black": "#000000", 54 | "terminal.ansi.bright_black": "#4A4A4A", 55 | "terminal.ansi.red": "#C5060B", 56 | "terminal.ansi.bright_red": "#D9564E", 57 | "terminal.ansi.green": "#277F2B", 58 | "terminal.ansi.bright_green": "#35BD33", 59 | "terminal.ansi.yellow": "#8E7823", 60 | "terminal.ansi.bright_yellow": "#BDA400", 61 | "terminal.ansi.blue": "#282BFF", 62 | "terminal.ansi.bright_blue": "#5685F4", 63 | "terminal.ansi.magenta": "#AE30C2", 64 | "terminal.ansi.bright_magenta": "#D75CE7", 65 | "terminal.ansi.cyan": "#00767C", 66 | "terminal.ansi.bright_cyan": "#20B1C9", 67 | "terminal.ansi.white": "#ffffff", 68 | "terminal.ansi.bright_white": "#999999", 69 | "conflict": "#C5060B", 70 | "created": "#1642FF", 71 | "created.background": "#e5ffe9", 72 | "deleted.background": "#FBEAE5", 73 | "error.background": "#FBEAE5", 74 | "error.border": "#EC9F89", 75 | "hidden": "#6D6D6D", 76 | "hint.background": "#E5F2FF", 77 | "hint.border": "#99CCFF", 78 | "info.background": "#E5EAFF", 79 | "info.border": "#8DA1FF", 80 | "modified": "#9e7008", 81 | "modified.background": "#fff2e5", 82 | "predictive": "#A4ABB6", 83 | "success.background": "#E5FFE5", 84 | "warning": "#C99401", 85 | "warning.background": "#FFFBE5", 86 | "warning.border": "#D9CC89", 87 | "players": [ 88 | { 89 | "cursor": "#3b9ee5ff", 90 | "background": "#3b9ee5ff", 91 | "selection": "#3b9ee53d" 92 | }, 93 | { 94 | "cursor": "#55b4d3ff", 95 | "background": "#55b4d3ff", 96 | "selection": "#55b4d33d" 97 | }, 98 | { 99 | "cursor": "#f98d3fff", 100 | "background": "#f98d3fff", 101 | "selection": "#f98d3f3d" 102 | }, 103 | { 104 | "cursor": "#a37accff", 105 | "background": "#a37accff", 106 | "selection": "#a37acc3d" 107 | }, 108 | { 109 | "cursor": "#4dbf99ff", 110 | "background": "#4dbf99ff", 111 | "selection": "#4dbf993d" 112 | }, 113 | { 114 | "cursor": "#ef7271ff", 115 | "background": "#ef7271ff", 116 | "selection": "#ef72713d" 117 | }, 118 | { 119 | "cursor": "#f1ad49ff", 120 | "background": "#f1ad49ff", 121 | "selection": "#f1ad493d" 122 | }, 123 | { 124 | "cursor": "#85b304ff", 125 | "background": "#85b304ff", 126 | "selection": "#85b3043d" 127 | } 128 | ], 129 | "syntax": { 130 | "attribute": { 131 | "color": "#957931" 132 | }, 133 | "boolean": { 134 | "color": "#C5060B" 135 | }, 136 | "comment": { 137 | "color": "#007fff" 138 | }, 139 | "comment.doc": { 140 | "color": "#007fff" 141 | }, 142 | "constant": { 143 | "color": "#C5060B" 144 | }, 145 | "constructor": { 146 | "color": "#0433ff" 147 | }, 148 | "embedded": { 149 | "color": "#333333" 150 | }, 151 | "function": { 152 | "color": "#0000A2" 153 | }, 154 | "keyword": { 155 | "color": "#0433ff" 156 | }, 157 | "link_text": { 158 | "color": "#0000A2", 159 | "font_style": "normal", 160 | "font_weight": null 161 | }, 162 | "link_uri": { 163 | "color": "#6A7293", 164 | "font_style": "italic", 165 | "font_weight": null 166 | }, 167 | "number": { 168 | "color": "#0433ff" 169 | }, 170 | "string": { 171 | "color": "#036A07" 172 | }, 173 | "string.escape": { 174 | "color": "#036A07" 175 | }, 176 | "string.regex": { 177 | "color": "#036A07" 178 | }, 179 | "string.special": { 180 | "color": "#d21f07" 181 | }, 182 | "string.special.symbol": { 183 | "color": "#d21f07" 184 | }, 185 | "tag": { 186 | "color": "#0433ff" 187 | }, 188 | "text.literal": { 189 | "color": "#6F42C1" 190 | }, 191 | "title": { 192 | "color": "#0433FF" 193 | }, 194 | "type": { 195 | "color": "#6f42c1" 196 | }, 197 | "property": { 198 | "color": "#333333" 199 | }, 200 | "variable": { 201 | "color": "#333333" 202 | }, 203 | "variable.special": { 204 | "color": "#C5060B" 205 | } 206 | } 207 | } 208 | }, 209 | { 210 | "name": "macOS Classic Dark", 211 | "appearance": "dark", 212 | "style": { 213 | "border": "#404040", 214 | "border.variant": "#3A3A3A", 215 | "border.focused": "#3A3A3AFF", 216 | "border.selected": "#3A3A3A", 217 | "border.transparent": "#3A3A3A", 218 | "border.disabled": "#3A3A3A", 219 | "elevated_surface.background": "#1E1D1E", 220 | "surface.background": "#1E1D1E", 221 | "search.match_background": "#fbee5c82", 222 | "search.active_match_background": "#fbee5c", 223 | "background": "#131313", 224 | "element.background": "#373636", 225 | "element.hover": "#353436", 226 | "element.active": "#353436", 227 | "element.selected": "#353436", 228 | "ghost_element.hover": "#353436", 229 | "ghost_element.selected": "#474646", 230 | "text": "#CACCCA", 231 | "text.muted": "#9E9E9E", 232 | "status_bar.background": "#272727", 233 | "title_bar.background": "#323232", 234 | "toolbar.background": "#131313", 235 | "tab_bar.background": "#232323", 236 | "tab.inactive_background": "#232323", 237 | "tab.active_background": "#131313", 238 | "panel.background": "#1E1D1E", 239 | "scrollbar.thumb.background": "#4C4D4DAA", 240 | "scrollbar.thumb.hover_background": "#4C4D4D", 241 | "scrollbar.track.background": "#131313", 242 | "editor.foreground": "#DDDDDD", 243 | "editor.background": "#131313", 244 | "editor.gutter.background": "#131313", 245 | "editor.active_line.background": "#272727", 246 | "editor.line_number": "#8F8F8F", 247 | "editor.active_line_number": "#DDDDDD", 248 | "editor.wrap_guide": "#3A3A3A", 249 | "editor.active_wrap_guide": "#3A3A3A", 250 | "terminal.ansi.black": "#E8E4CF", 251 | "terminal.ansi.bright_black": "#57564F", 252 | "terminal.ansi.red": "#A8473B", 253 | "terminal.ansi.bright_red": "#DD6F61", 254 | "terminal.ansi.green": "#76BA53", 255 | "terminal.ansi.bright_green": "#9DE478", 256 | "terminal.ansi.yellow": "#E1D797", 257 | "terminal.ansi.bright_yellow": "#857F5C", 258 | "terminal.ansi.blue": "#082190", 259 | "terminal.ansi.bright_blue": "#81A9F6", 260 | "terminal.ansi.magenta": "#AE30C2", 261 | "terminal.ansi.bright_magenta": "#D86DE9", 262 | "terminal.ansi.cyan": "#3DB6B0", 263 | "terminal.ansi.bright_cyan": "#5BDFD8", 264 | "terminal.ansi.white": "#131313", 265 | "terminal.ansi.bright_white": "#3A3A3A", 266 | "conflict": "#D2602D", 267 | "created": "#6d94e9", 268 | "created.background": "#0C4619", 269 | "deleted.background": "#46190C", 270 | "error.background": "#46190C", 271 | "error.border": "#802207", 272 | "hidden": "#9E9E9E", 273 | "hint.background": "#0C194D", 274 | "hint.border": "#082190", 275 | "info.background": "#0C194D", 276 | "info.border": "#082190", 277 | "modified": "#B0A878", 278 | "modified.background": "#3A310E", 279 | "predictive": "#5D5945", 280 | "success.background": "#0C4619", 281 | "warning.background": "#3A310E", 282 | "warning.border": "#7B6508", 283 | "players": [ 284 | { 285 | "cursor": "#72cffeff", 286 | "background": "#72cffeff", 287 | "selection": "#72cffe3d" 288 | }, 289 | { 290 | "cursor": "#5bcde5ff", 291 | "background": "#5bcde5ff", 292 | "selection": "#5bcde53d" 293 | }, 294 | { 295 | "cursor": "#fead66ff", 296 | "background": "#fead66ff", 297 | "selection": "#fead663d" 298 | }, 299 | { 300 | "cursor": "#debffeff", 301 | "background": "#debffeff", 302 | "selection": "#debffe3d" 303 | }, 304 | { 305 | "cursor": "#95e5cbff", 306 | "background": "#95e5cbff", 307 | "selection": "#95e5cb3d" 308 | }, 309 | { 310 | "cursor": "#f18779ff", 311 | "background": "#f18779ff", 312 | "selection": "#f187793d" 313 | }, 314 | { 315 | "cursor": "#fecf72ff", 316 | "background": "#fecf72ff", 317 | "selection": "#fecf723d" 318 | }, 319 | { 320 | "cursor": "#d5fe80ff", 321 | "background": "#d5fe80ff", 322 | "selection": "#d5fe803d" 323 | } 324 | ], 325 | "syntax": { 326 | "attribute": { 327 | "color": "#e7cb8f" 328 | }, 329 | "boolean": { 330 | "color": "#E1D797" 331 | }, 332 | "comment": { 333 | "color": "#9E9E9E" 334 | }, 335 | "comment.doc": { 336 | "color": "#9E9E9E" 337 | }, 338 | "constant": { 339 | "color": "#E1D797" 340 | }, 341 | "constructor": { 342 | "color": "#b5af9a" 343 | }, 344 | "embedded": { 345 | "color": "#CACCCA" 346 | }, 347 | "function": { 348 | "color": "#fdd888" 349 | }, 350 | "keyword": { 351 | "color": "#c28b12" 352 | }, 353 | "link_text": { 354 | "color": "#307BF6", 355 | "font_style": "normal" 356 | }, 357 | "link_uri": { 358 | "color": "#7faef9", 359 | "font_style": "italic" 360 | }, 361 | "number": { 362 | "color": "#E1D797" 363 | }, 364 | "string": { 365 | "color": "#62BA46" 366 | }, 367 | "string.escape": { 368 | "color": "#62BA46" 369 | }, 370 | "string.regex": { 371 | "color": "#62BA46" 372 | }, 373 | "string.special": { 374 | "color": "#E1D797" 375 | }, 376 | "string.special.symbol": { 377 | "color": "#E1D797" 378 | }, 379 | "tag": { 380 | "color": "#b5af9a" 381 | }, 382 | "text.literal": { 383 | "color": "#E1D797" 384 | }, 385 | "title": { 386 | "color": "#fdd888", 387 | "font_weight": 600 388 | }, 389 | "type": { 390 | "color": "#c75828" 391 | }, 392 | "property": { 393 | "color": "#CACCCA" 394 | }, 395 | "variable.special": { 396 | "color": "#E19773" 397 | } 398 | } 399 | } 400 | } 401 | ] 402 | } 403 | --------------------------------------------------------------------------------