├── .gitignore ├── Chromodynamics.color-theme.json ├── Chromodynamics.tmTheme ├── LICENSE ├── Makefile ├── README.md ├── index.less ├── package.json └── styles ├── base.less └── syntax-variables.less /.gitignore: -------------------------------------------------------------------------------- 1 | *.vsix 2 | -------------------------------------------------------------------------------- /Chromodynamics.color-theme.json: -------------------------------------------------------------------------------- 1 | { 2 | "tokenColors": "./Chromodynamics.tmTheme", 3 | "type": "dark", 4 | "colors": { 5 | "activityBarBadge.background": "#007acc", 6 | "sideBarTitle.foreground": "#bbbbbb", 7 | "statusBar.background": "#131313", 8 | "statusBar.noFolderBackground": "#131313", 9 | "statusBar.foreground": "#c6c6c6", 10 | "editor.background": "#060606", 11 | "editor.foreground": "#c6c6c6", 12 | "activityBar.background": "#101010", 13 | "menu.background": "#131313", 14 | "sideBar.background": "#131313", 15 | "panel.background": "#131313", 16 | "editorGroupHeader.tabsBackground": "#131313", 17 | "tab.inactiveBackground": "#151515", 18 | "tab.border": "#131313", 19 | "tab.activeForeground": "#c6c6c6", 20 | "editor.lineHighlightBackground": "#252525", 21 | "breadcrumb.foreground": "#909090", 22 | "editorGutter.background": "#101010", 23 | "gitDecoration.ignoredResourceForeground": "#808080", 24 | "editorRuler.foreground": "#333", 25 | "editor.findMatchHighlightBackground": "#66d9ff40", 26 | "editor.findMatchHighlightBorder": "#66d9ff90", 27 | "editor.selectionBackground": "#444", 28 | "editor.selectionForeground": "#d0d0d0", 29 | "editor.selectionHighlightBorder": "#66d9ff90" 30 | } 31 | } -------------------------------------------------------------------------------- /Chromodynamics.tmTheme: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | name 6 | Chromodynamics 7 | settings 8 | 9 | 10 | settings 11 | 12 | background 13 | #060606 14 | caret 15 | #dfdfdf 16 | foreground 17 | #c6c6c6 18 | invisibles 19 | #3B3A32 20 | lineHighlight 21 | #252525 22 | selection 23 | #444 24 | findHighlight 25 | #FFE792 26 | findHighlightForeground 27 | #000000 28 | selectionBorder 29 | #1c1c1c 30 | gutter 31 | #060606 32 | gutterForeground 33 | #595959 34 | 35 | 36 | 37 | 38 | name 39 | String 40 | scope 41 | text, source 42 | settings 43 | 44 | foreground 45 | #c6c6c6 46 | 47 | 48 | 49 | 50 | name 51 | Git Changed Line 52 | scope 53 | git_changes_change 54 | settings 55 | 56 | foreground 57 | #A29F46 58 | 59 | 60 | 61 | name 62 | Git Added Line 63 | scope 64 | git_changes_add 65 | settings 66 | 67 | foreground 68 | #1f9a12 69 | 70 | 71 | 72 | name 73 | Git Remove Line 74 | scope 75 | git_changes_del- 76 | settings 77 | 78 | foreground 79 | #A72822 80 | 81 | 82 | 83 | 84 | name 85 | Comment 86 | scope 87 | comment 88 | settings 89 | 90 | foreground 91 | #747475 92 | 93 | 94 | 95 | name 96 | String 97 | scope 98 | string 99 | settings 100 | 101 | foreground 102 | #d3c970 103 | 104 | 105 | 106 | name 107 | Docstring 108 | scope 109 | string.quoted.docstring 110 | settings 111 | 112 | foreground 113 | #7c9f57 114 | 115 | 116 | 117 | name 118 | Docstring Quotes (specially for Atom) 119 | scope 120 | string.quoted.docstring string 121 | settings 122 | 123 | foreground 124 | #7c9f57 125 | 126 | 127 | 128 | name 129 | Docstring Storage (r prefix) (specially for Atom) 130 | scope 131 | string.quoted.docstring storage 132 | settings 133 | 134 | foreground 135 | #66D9EF 136 | 137 | 138 | 139 | name 140 | Number 141 | scope 142 | constant.numeric 143 | settings 144 | 145 | foreground 146 | #9a79d7 147 | 148 | 149 | 150 | name 151 | Built-in constant 152 | scope 153 | constant.language 154 | settings 155 | 156 | foreground 157 | #9a79d7 158 | 159 | 160 | 161 | name 162 | User-defined constant 163 | scope 164 | constant.character, constant.other 165 | settings 166 | 167 | foreground 168 | #9a79d7 169 | 170 | 171 | 172 | name 173 | Variable 174 | scope 175 | variable 176 | settings 177 | 178 | fontStyle 179 | 180 | 181 | 182 | 183 | name 184 | Keyword 185 | scope 186 | keyword 187 | settings 188 | 189 | foreground 190 | #e8364f 191 | 192 | 193 | 194 | name 195 | Notes (XXX) 196 | scope 197 | comment.line.note, string.quoted.docstring.note 198 | settings 199 | 200 | foreground 201 | #b14a58 202 | 203 | 204 | 205 | name 206 | Storage 207 | scope 208 | storage 209 | settings 210 | 211 | fontStyle 212 | 213 | foreground 214 | #e8364f 215 | 216 | 217 | 218 | name 219 | Storage type 220 | scope 221 | storage.type 222 | settings 223 | 224 | foreground 225 | #66D9EF 226 | 227 | 228 | 229 | name 230 | Class name 231 | scope 232 | entity.name.class 233 | settings 234 | 235 | foreground 236 | #A6E22E 237 | 238 | 239 | 240 | name 241 | Inherited class 242 | scope 243 | entity.other.inherited-class 244 | settings 245 | 246 | foreground 247 | #A6E22E 248 | 249 | 250 | 251 | name 252 | Function name 253 | scope 254 | entity.name.function 255 | settings 256 | 257 | fontStyle 258 | 259 | foreground 260 | #A6E22E 261 | 262 | 263 | 264 | name 265 | Function argument 266 | scope 267 | variable.parameter 268 | settings 269 | 270 | foreground 271 | #e99c42 272 | 273 | 274 | 275 | name 276 | Tag name 277 | scope 278 | entity.name.tag.namespace 279 | settings 280 | 281 | fontStyle 282 | 283 | foreground 284 | #76263a 285 | 286 | 287 | 288 | name 289 | Tag localname 290 | scope 291 | entity.name.tag, keyword.doctype.xml 292 | settings 293 | 294 | fontStyle 295 | 296 | foreground 297 | #d33c78 298 | 299 | 300 | 301 | name 302 | Tag attribute 303 | scope 304 | entity.other.attribute-name 305 | settings 306 | 307 | fontStyle 308 | 309 | foreground 310 | #D77C23 311 | 312 | 313 | 314 | name 315 | Library function 316 | scope 317 | support.function 318 | settings 319 | 320 | fontStyle 321 | 322 | foreground 323 | #66D9EF 324 | 325 | 326 | 327 | name 328 | Library constant 329 | scope 330 | support.constant 331 | settings 332 | 333 | fontStyle 334 | 335 | foreground 336 | #66D9EF 337 | 338 | 339 | 340 | name 341 | Library class/type 342 | scope 343 | support.type 344 | settings 345 | 346 | foreground 347 | #66D9EF 348 | 349 | 350 | 351 | name 352 | Special name 353 | scope 354 | support.class, support.other, support.variable 355 | settings 356 | 357 | foreground 358 | #66D9EF 359 | 360 | 361 | 362 | name 363 | Library variable 364 | scope 365 | support.other.variable 366 | settings 367 | 368 | fontStyle 369 | 370 | 371 | 372 | 373 | name 374 | Invalid 375 | scope 376 | invalid 377 | settings 378 | 379 | background 380 | #7c3636 381 | fontStyle 382 | 383 | foreground 384 | #F8F8F0 385 | 386 | 387 | 388 | name 389 | Invalid deprecated 390 | scope 391 | invalid.deprecated 392 | settings 393 | 394 | background 395 | #99732b 396 | foreground 397 | #F8F8F0 398 | 399 | 400 | 401 | name 402 | JSON String 403 | scope 404 | meta.structure.dictionary.json string.quoted.double.json 405 | settings 406 | 407 | foreground 408 | #CFCFC2 409 | 410 | 411 | 412 | 413 | name 414 | diff.header 415 | scope 416 | meta.diff, meta.diff.header 417 | settings 418 | 419 | foreground 420 | #75715E 421 | 422 | 423 | 424 | name 425 | diff.deleted 426 | scope 427 | markup.deleted 428 | settings 429 | 430 | foreground 431 | #e8364f 432 | 433 | 434 | 435 | name 436 | diff.inserted 437 | scope 438 | markup.inserted 439 | settings 440 | 441 | foreground 442 | #A6E22E 443 | 444 | 445 | 446 | name 447 | diff.changed 448 | scope 449 | markup.changed 450 | settings 451 | 452 | foreground 453 | #E6DB74 454 | 455 | 456 | 457 | name 458 | self and cls 459 | scope 460 | variable.language.special, variable.parameter.function.language.special 461 | settings 462 | 463 | foreground 464 | #b0af95 465 | 466 | 467 | 468 | 469 | 470 | name 471 | comment/typehint: base color 472 | scope 473 | comment.typehint 474 | settings 475 | 476 | foreground 477 | #888A84 478 | 479 | 480 | 481 | name 482 | comment/typehint: ignore 483 | scope 484 | comment.typehint.ignore 485 | settings 486 | 487 | foreground 488 | #7E6461 489 | 490 | 491 | 492 | name 493 | comment/typehint: type name 494 | scope 495 | comment.typehint.type 496 | settings 497 | 498 | foreground 499 | #44727B 500 | 501 | 502 | 503 | uuid 504 | 72d2f21e-76c9-11e5-8275-000c6c071bb8 505 | 506 | 507 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright (c) 2015 MagicStack Inc. http://magic.io 4 | 5 | Based on Soda Theme by Ian Hill (http://buymeasoda.com/) 6 | 7 | Permission is hereby granted, free of charge, to any person obtaining a copy 8 | of this software and associated documentation files (the "Software"), to deal 9 | in the Software without restriction, including without limitation the rights 10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in 15 | all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | THE SOFTWARE. 24 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: release 2 | 3 | 4 | atom-release: 5 | apm init --theme .atom-build --convert Chromodynamics.tmTheme 6 | cp .atom-build/styles/*.less styles/ 7 | rm -rf .atom-build 8 | cat styles/base.less | sed 's/syntax-wrap-guide-color;/syntax-wrap-guide-color;background-color:@syntax-wrap-guide-color !important;/g' | sed 's/atom-text-editor\(.*\).marker/atom-text-editor\1.syntax--marker/' > styles/base.less~ 9 | mv styles/base.less~ styles/base.less 10 | 11 | 12 | vscode-release: 13 | vsce package && vsce publish 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Chromodynamics [![apm](https://img.shields.io/apm/dm/chromodynamics.svg?label=Atom)](https://atom.io/themes/chromodynamics) [![Package Control](https://img.shields.io/packagecontrol/dt/Color%20Scheme%20-%20Chromodynamics.svg?label=Sublime%20Text)](https://packagecontrol.io/packages/Color%20Scheme%20-%20Chromodynamics) [![VSM](https://vsmarketplacebadge.apphb.com/installs-short/magicstack.Chromodynamics.svg?subject=Visual%20Studio%20Code)](https://marketplace.visualstudio.com/items?itemName=magicstack.Chromodynamics) 2 | 3 | This is a color theme for Sublime Text, Atom, and Visual Studio Code. 4 | 5 | ![](https://magicstack.github.io/MagicPython/example.png) 6 | 7 | The Python source code in the screenshot is highlighted with 8 | [MagicPython](https://github.com/MagicStack/MagicPython). 9 | 10 | 11 | 12 | ## Installation Instructions 13 | 14 | In **Sublime Text** install the `Chromodynamics` package with "Package Control". 15 | 16 | In **Atom** find the `Chromodynamics` theme, install it, and enable via 17 | `Themes / Syntax Theme`. 18 | 19 | In **Visual Studio Code** find the `Chromodynamics` theme, install it, and 20 | enable via the `Preferences: Color Theme` command. 21 | -------------------------------------------------------------------------------- /index.less: -------------------------------------------------------------------------------- 1 | @import "./styles/base.less"; 2 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Chromodynamics", 3 | "displayName": "Chromodynamics Theme", 4 | "description": "A dark color scheme from MagicStack.", 5 | "theme": "syntax", 6 | "version": "0.0.14", 7 | "repository": "https://github.com/MagicStack/Chromodynamics", 8 | "publisher": "magicstack", 9 | "license": "MIT", 10 | "engines": { 11 | "atom": ">=1.13.0", 12 | "vscode": ">=1.10.0" 13 | }, 14 | "categories": [ 15 | "Themes" 16 | ], 17 | "contributes": { 18 | "themes": [ 19 | { 20 | "label": "Chromodynamics", 21 | "uiTheme": "vs-dark", 22 | "path": "./Chromodynamics.color-theme.json" 23 | } 24 | ] 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /styles/base.less: -------------------------------------------------------------------------------- 1 | @import "syntax-variables"; 2 | 3 | atom-text-editor { 4 | background-color: @syntax-background-color; 5 | color: @syntax-text-color; 6 | } 7 | 8 | atom-text-editor .gutter { 9 | background-color: @syntax-gutter-background-color; 10 | color: @syntax-gutter-text-color; 11 | } 12 | 13 | atom-text-editor .gutter .line-number.cursor-line { 14 | background-color: @syntax-gutter-background-color-selected; 15 | color: @syntax-gutter-text-color-selected; 16 | } 17 | 18 | atom-text-editor .gutter .line-number.cursor-line-no-selection { 19 | color: @syntax-gutter-text-color-selected; 20 | } 21 | 22 | atom-text-editor .wrap-guide { 23 | color: @syntax-wrap-guide-color;background-color:@syntax-wrap-guide-color !important; 24 | } 25 | 26 | atom-text-editor .indent-guide { 27 | color: @syntax-indent-guide-color; 28 | } 29 | 30 | atom-text-editor .invisible-character { 31 | color: @syntax-invisible-character-color; 32 | } 33 | 34 | atom-text-editor .search-results .syntax--marker .region { 35 | background-color: transparent; 36 | border: @syntax-result-marker-color; 37 | } 38 | 39 | atom-text-editor .search-results .syntax--marker.current-result .region { 40 | border: @syntax-result-marker-color-selected; 41 | } 42 | 43 | atom-text-editor.is-focused .cursor { 44 | border-color: @syntax-cursor-color; 45 | } 46 | 47 | atom-text-editor.is-focused .selection .region { 48 | background-color: @syntax-selection-color; 49 | } 50 | 51 | atom-text-editor.is-focused .line-number.cursor-line-no-selection, atom-text-editor.is-focused .line.cursor-line { 52 | background-color: #252525; 53 | } 54 | 55 | .syntax--text, .syntax--source { 56 | color: #c6c6c6; 57 | } 58 | 59 | .syntax--git_changes_change { 60 | color: #A29F46; 61 | } 62 | 63 | .syntax--git_changes_add { 64 | color: #1f9a12; 65 | } 66 | 67 | .syntax--git_changes_del- { 68 | color: #A72822; 69 | } 70 | 71 | .syntax--comment { 72 | color: #747475; 73 | } 74 | 75 | .syntax--string { 76 | color: #d3c970; 77 | } 78 | 79 | .syntax--string.syntax--quoted.syntax--docstring { 80 | color: #7c9f57; 81 | } 82 | 83 | .syntax--string.syntax--quoted.syntax--docstring .syntax--string { 84 | color: #7c9f57; 85 | } 86 | 87 | .syntax--string.syntax--quoted.syntax--docstring .syntax--storage { 88 | color: #66D9EF; 89 | } 90 | 91 | .syntax--constant.syntax--numeric { 92 | color: #9a79d7; 93 | } 94 | 95 | .syntax--constant.syntax--language { 96 | color: #9a79d7; 97 | } 98 | 99 | .syntax--constant.syntax--character, .syntax--constant.syntax--other { 100 | color: #9a79d7; 101 | } 102 | 103 | .syntax--variable { 104 | } 105 | 106 | .syntax--keyword { 107 | color: #e8364f; 108 | } 109 | 110 | .syntax--comment.syntax--line.syntax--note, .syntax--string.syntax--quoted.syntax--docstring.syntax--note { 111 | color: #b14a58; 112 | } 113 | 114 | .syntax--storage { 115 | color: #e8364f; 116 | } 117 | 118 | .syntax--storage.syntax--type { 119 | color: #66D9EF; 120 | } 121 | 122 | .syntax--entity.syntax--name.syntax--class { 123 | color: #A6E22E; 124 | } 125 | 126 | .syntax--entity.syntax--other.syntax--inherited-class { 127 | color: #A6E22E; 128 | } 129 | 130 | .syntax--entity.syntax--name.syntax--function { 131 | color: #A6E22E; 132 | } 133 | 134 | .syntax--variable.syntax--parameter { 135 | color: #e99c42; 136 | } 137 | 138 | .syntax--entity.syntax--name.syntax--tag.syntax--namespace { 139 | color: #76263a; 140 | } 141 | 142 | .syntax--entity.syntax--name.syntax--tag, .syntax--keyword.syntax--doctype.syntax--xml { 143 | color: #d33c78; 144 | } 145 | 146 | .syntax--entity.syntax--other.syntax--attribute-name { 147 | color: #D77C23; 148 | } 149 | 150 | .syntax--support.syntax--function { 151 | color: #66D9EF; 152 | } 153 | 154 | .syntax--support.syntax--constant { 155 | color: #66D9EF; 156 | } 157 | 158 | .syntax--support.syntax--type { 159 | color: #66D9EF; 160 | } 161 | 162 | .syntax--support.syntax--class, .syntax--support.syntax--other, .syntax--support.syntax--variable { 163 | color: #66D9EF; 164 | } 165 | 166 | .syntax--support.syntax--other.syntax--variable { 167 | } 168 | 169 | .syntax--invalid { 170 | color: #F8F8F0; 171 | background-color: #7c3636; 172 | } 173 | 174 | .syntax--invalid.syntax--deprecated { 175 | color: #F8F8F0; 176 | background-color: #99732b; 177 | } 178 | 179 | .syntax--meta.syntax--structure.syntax--dictionary.syntax--json .syntax--string.syntax--quoted.syntax--double.syntax--json { 180 | color: #CFCFC2; 181 | } 182 | 183 | .syntax--meta.syntax--diff, .syntax--meta.syntax--diff.syntax--header { 184 | color: #75715E; 185 | } 186 | 187 | .syntax--markup.syntax--deleted { 188 | color: #e8364f; 189 | } 190 | 191 | .syntax--markup.syntax--inserted { 192 | color: #A6E22E; 193 | } 194 | 195 | .syntax--markup.syntax--changed { 196 | color: #E6DB74; 197 | } 198 | 199 | .syntax--variable.syntax--language.syntax--special, .syntax--variable.syntax--parameter.syntax--function.syntax--language.syntax--special { 200 | color: #b0af95; 201 | } 202 | 203 | .syntax--comment.syntax--typehint { 204 | color: #888A84; 205 | } 206 | 207 | .syntax--comment.syntax--typehint.syntax--ignore { 208 | color: #7E6461; 209 | } 210 | 211 | .syntax--comment.syntax--typehint.syntax--type { 212 | color: #44727B; 213 | } 214 | -------------------------------------------------------------------------------- /styles/syntax-variables.less: -------------------------------------------------------------------------------- 1 | // This defines all syntax variables that syntax themes must implement when they 2 | // include a syntax-variables.less file. 3 | 4 | // General colors 5 | @syntax-text-color: #c6c6c6; 6 | @syntax-cursor-color: #dfdfdf; 7 | @syntax-selection-color: #444; 8 | @syntax-background-color: #060606; 9 | 10 | // Guide colors 11 | @syntax-wrap-guide-color: #3B3A32; 12 | @syntax-indent-guide-color: #3B3A32; 13 | @syntax-invisible-character-color: #3B3A32; 14 | 15 | // For find and replace markers 16 | @syntax-result-marker-color: #3B3A32; 17 | @syntax-result-marker-color-selected: #c6c6c6; 18 | 19 | // Gutter colors 20 | @syntax-gutter-text-color: #c6c6c6; 21 | @syntax-gutter-text-color-selected: #c6c6c6; 22 | @syntax-gutter-background-color: #060606; 23 | @syntax-gutter-background-color-selected: #252525; 24 | 25 | // For git diff info. i.e. in the gutter 26 | // These are static and were not extracted from your textmate theme 27 | @syntax-color-renamed: #96CBFE; 28 | @syntax-color-added: #A8FF60; 29 | @syntax-color-modified: #E9C062; 30 | @syntax-color-removed: #CC6666; --------------------------------------------------------------------------------