commit f2d965ab9159f2bb5eca3461f99c287724f95a4d Author: laika Date: Thu Jun 11 19:54:37 2026 +0200 feat: Initial commit diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..0e191b5 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,17 @@ +// A launch configuration that launches the extension inside a new window +// Use IntelliSense to learn about possible attributes. +// Hover to view descriptions of existing attributes. +// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Extension", + "type": "extensionHost", + "request": "launch", + "args": [ + "--extensionDevelopmentPath=${workspaceFolder}" + ] + } + ] +} \ No newline at end of file diff --git a/.vscodeignore b/.vscodeignore new file mode 100644 index 0000000..f369b5e --- /dev/null +++ b/.vscodeignore @@ -0,0 +1,4 @@ +.vscode/** +.vscode-test/** +.gitignore +vsc-extension-quickstart.md diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..d71ac86 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Laika Schmidt + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..4292be3 --- /dev/null +++ b/README.md @@ -0,0 +1,14 @@ +# vscode-theme-lesbian-dark + +_A (dark) theme for Visual Studio Code, inspired by lesbian pride flags._ + +Inspired by Charlie Gerard's [Pride VSCode themes](https://github.com/charliegerard/pride-vscode-themes)! + +## Preview + + + +## License & Author*ess + +This theme was written by Laika Schmidt (_laika_) and licensed under the [MIT-License](https://git.pawly.dev/laika/vscode-lesbian-theme/raw/branch/main/LICENSE.md). + diff --git a/icon.png b/icon.png new file mode 100644 index 0000000..1019fe3 Binary files /dev/null and b/icon.png differ diff --git a/images/lesbian-dark-demo.png b/images/lesbian-dark-demo.png new file mode 100644 index 0000000..883afbd Binary files /dev/null and b/images/lesbian-dark-demo.png differ diff --git a/package.json b/package.json new file mode 100644 index 0000000..c26c1fe --- /dev/null +++ b/package.json @@ -0,0 +1,42 @@ +{ + "name": "vscode-theme-lesbian-dark", + "displayName": "Lesbian theme (dark)", + "description": "A (dark) theme for Visual Studio Code, inspired by lesbian pride flags.", + "version": "0.0.1", + "engines": { + "vscode": "^1.57.0" + }, + "icon": "icon.png", + "repository": { + "type": "git", + "url": "https://git.pawly.dev/laika/vscode-lesbian-theme" + }, + "homepage": "https://git.pawly.dev/laika/vscode-lesbian-theme", + "author": { + "name": "Laika Schmidt" + }, + "publisher": "laika", + "categories": [ + "Themes" + ], + "keywords": [ + "pride", + "vscode", + "lesbian", + "lesbisch", + "wlw", + "sapphic", + "lgbtq", + "lsbtiq" + ], + "license": "MIT", + "contributes": { + "themes": [ + { + "label": "Lesbian (Dark)", + "uiTheme": "vs-dark", + "path": "./themes/lesbian-color-theme.json" + } + ] + } +} \ No newline at end of file diff --git a/themes/lesbian-color-theme.json b/themes/lesbian-color-theme.json new file mode 100644 index 0000000..295f068 --- /dev/null +++ b/themes/lesbian-color-theme.json @@ -0,0 +1,490 @@ +{ + "colors": { + "activityBar.activeBorder": "#D162A4", + "activityBar.background": "#171717", + "activityBar.foreground": "#D162A4", + "activityBar.inactiveForeground": "#d162a543", + "activityBarBadge.background": "#A30262", + "activityBarBadge.foreground": "#FFFFFF", + "button.background": "#A30262", + "button.foreground": "#FFFFFF", + "diffEditor.insertedLineBackground": "#48d8903e", + "diffEditor.removedLineBackground": "#d52e003e", + "editor.background": "#171717", + "editor.foreground": "#ffffff", + "editorLineNumber.foreground": "#ffffffc1", + "gitDecoration.addedResourceForeground": "#48d890", + "gitDecoration.conflictingResourceForeground": "#D52D00", + "gitDecoration.deletedResourceForeground": "#D52D00", + "gitDecoration.modifiedResourceForeground": "#D162A4", + "gitDecoration.renamedResourceForeground": "#FFFFFF", + "gitDecoration.untrackedResourceForeground": "#D52D00", + "list.errorForeground": "#D52D00", + "list.warningForeground": "#EF7627", + "sideBarTitle.foreground": "#ffffff", + "statusBar.background": "#A30262", + "statusBar.debuggingBackground": "#D162A4", + "statusBar.foreground": "#FFFFFF", + "statusBar.noFolderBackground": "#A30262", + "statusBar.noFolderForeground": "#B55690", + "textBlockQuote.border": "#A30262", + "textCodeBlock.background": "#242526", + "textLink.activeForeground": "#EF7627", + "textLink.foreground": "#FF9A56", + }, + "name": "Lesbian (Dark)", + "tokenColors": [ + { + "name": "Comment", + "scope": [ + "comment", + "punctuation.definition.comment" + ], + "settings": { + "fontStyle": "italic", + "foreground": "#FFFFFF50" + } + }, + { + "name": "Variables", + "scope": [ + "variable", + "string constant.other.placeholder" + ], + "settings": { + "fontStyle": "italic", + "foreground": "#FFFFFF" + } + }, + { + "name": "Colors", + "scope": [ + "constant.other.color" + ], + "settings": { + "foreground": "#ffffff" + } + }, + { + "name": "Invalid", + "scope": [ + "invalid", + "invalid.illegal" + ], + "settings": { + "foreground": "#F30943" + } + }, + { + "name": "Keyword, Storage", + "scope": [ + "keyword", + "storage.type", + "storage.modifier" + ], + "settings": { + "foreground": "#FF9A56" + } + }, + { + "name": "Operator, Misc", + "scope": [ + "keyword.control", + "constant.other.color", + "keyword.other.template", + "keyword.other.substitution", + "punctuation.separator.inheritance.php", + ], + "settings": { + "foreground": "#FF9A56" + } + }, + { + "name": "Tags", + "scope": [ + "meta.tag", + "punctuation.definition.tag", + "punctuation.definition.tag.html", + "punctuation.definition.tag.begin.html", + "punctuation.definition.tag.end.html", + "punctuation.section.embedded", + "meta.tag.sgml", + "markup.deleted.git_gutter", + "entity.name.tag", + ], + "settings": { + "foreground": "#B55690" + } + }, + { + "name": "Function, Special Method", + "scope": [ + "entity.name.function", + "meta.function-call", + "variable.function", + "support.function", + "keyword.other.special-method" + ], + "settings": { + "foreground": "#ea8bc5" + } + }, + { + "name": "Self Defined Function", + "scope": [ + "variable.function", + "entity.name.function" + ], + "settings": { + "fontStyle": "italic", + "foreground": "#ea8bc5" + } + }, + { + "name": "Block Level Variables", + "scope": [ + "meta.block variable.other", + ], + "settings": { + "foreground": "#ffffff" + } + }, + { + "name": "Number, Constant, Function Argument, Tag Attribute, Embedded", + "scope": [ + "constant.numeric", + "constant.language", + "support.constant", + "constant.character", + "constant.escape", + "variable.parameter", + "keyword.other.unit", + "keyword.other" + ], + "settings": { + "fontStyle": "italic", + "foreground": "#ff3567" + } + }, + { + "name": "String, Symbols, Inherited Class, Markup Heading", + "scope": [ + "string", + "constant.other.symbol", + "constant.other.key", + "entity.other.inherited-class", + "markup.heading", + "markup.inserted.git_gutter", + "meta.group.braces.curly constant.other.object.key.js string.unquoted.label.js" + ], + "settings": { + "fontStyle": "italic", + "foreground": "#FF9A56" + } + }, + { + "name": "Class, Support", + "scope": [ + "entity.name", + "support.type", + "support.class", + "support.other.namespace.use.php", + "meta.use.php", + "support.other.namespace.php", + "markup.changed.git_gutter", + "support.type.sys-types" + ], + "settings": { + "foreground": "#EA8BC5" + } + }, + { + "name": "CSS Class and Support", + "scope": [ + "source.css support.type.property-name", + "source.sass support.type.property-name", + "source.scss support.type.property-name", + "source.less support.type.property-name", + "source.stylus support.type.property-name", + "source.postcss support.type.property-name" + ], + "settings": { + "foreground": "#fbac78" + } + }, + { + "name": "Language methods", + "scope": [ + "variable.language" + ], + "settings": { + "foreground": "#ff3567" + } + }, + { + "name": "CSS Attributes, Classes and Tags", + "scope": [ + "source.csss entity.name.tag", + "source.sass keyword.control", + "source.css meta.selector.css" + ], + "settings": { + "fontStyle": "italic", + "foreground": "#ffffff" + } + }, + { + "name": "HTML derivative", + "scope": [ + "entity.other.attribute-name.class", + "entity.other.attribute-name", + "text.html.derivative" + ], + "settings": { + "foreground": "#ffffff" + } + }, + { + "name": "Regular Expressions", + "scope": [ + "string.regexp" + ], + "settings": { + "foreground": "#d42c00" + } + }, + { + "name": "Escape Characters", + "scope": [ + "constant.character.escape" + ], + "settings": { + "foreground": "#F30943" + } + }, + { + "name": "URL", + "scope": [ + "*url*", + "*link*", + "*uri*" + ], + "settings": { + "fontStyle": "italic underline" + } + }, + { + "name": "JSON Braces", + "scope": [ + "support.type.property-name.json" + ], + "settings": { + "fontStyle": "italic" + } + }, + { + "name": "JSON Key - Level 0", + "scope": [ + "source.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground": "#fc39ae" + } + }, + { + "name": "JSON Key - Level 1", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground": "#e478ba" + } + }, + { + "name": "JSON Key - Level 2", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground": "#f17bc2" + } + }, + { + "name": "JSON Key - Level 3", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground": "#ffffff" + } + }, + { + "name": "JSON Key - Level 4", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground": "#FF9A56" + } + }, + { + "name": "JSON Key - Level 5", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground": "#EF7627" + } + }, + { + "name": "JSON Key - Level 6", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground": "#f64615" + } + }, + { + "name": "JSON Key - Level 7", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground": "#F30943" + } + }, + { + "name": "JSON Key - Level 8", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground": "#bb4562" + } + }, + { + "name": "Markdown - Plain", + "scope": [ + "text.html.markdown", + "punctuation.definition.list_item.markdown" + ], + "settings": { + "foreground": "#ffffff" + } + }, + { + "name": "Markdown - Markup Raw Inline", + "scope": [ + "text.html.markdown markup.inline.raw.markdown" + ], + "settings": { + "foreground": "#C792EA" + } + }, + { + "name": "Markdown - Markup Raw Inline Punctuation", + "scope": [ + "text.html.markdown markup.inline.raw.markdown punctuation.definition.raw.markdown" + ], + "settings": { + "foreground": "#65737E" + } + }, + { + "name": "Markdown - Heading", + "scope": [ + "markdown.heading", + "markup.heading | markup.heading entity.name", + "markup.heading.markdown punctuation.definition.heading.markdown" + ], + "settings": { + "foreground": "#D52D00" + } + }, + { + "name": "Markup - Italic", + "scope": [ + "markup.italic" + ], + "settings": { + "fontStyle": "italic", + "foreground": "#E4ACCF" + } + }, + { + "name": "Markup - Bold", + "scope": [ + "markup.bold", + "markup.bold string" + ], + "settings": { + "fontStyle": "bold", + "foreground": "#d472ad" + } + }, + { + "name": "Markup - Bold-Italic", + "scope": [ + "markup.bold markup.italic", + "markup.italic markup.bold", + "markup.quote markup.bold", + "markup.bold markup.italic string", + "markup.italic markup.bold string", + "markup.quote markup.bold string" + ], + "settings": { + "fontStyle": "italic bold", + "foreground": "#ba5391" + } + }, + { + "name": "Markup - Underline", + "scope": [ + "markup.underline" + ], + "settings": { + "fontStyle": "underline", + "foreground": "#F30943" + } + }, + { + "name": "Markup - Quote", + "scope": [ + "markup.quote" + ], + "settings": { + "fontStyle": "italic" + } + }, + { + "name": "Markdown - Link", + "scope": [ + "string.other.link.title.markdown" + ], + "settings": { + "fontStyle": "italic", + "foreground": "#ffffff" + } + }, + { + "name": "Markdown - Link Description", + "scope": [ + "string.other.link.description.title.markdown" + ], + "settings": { + "foreground": "#FF9A56" + } + }, + { + "name": "Markdown - Link Anchor", + "scope": [ + "constant.other.reference.link.markdown" + ], + "settings": { + "foreground": "#F30943" + } + }, + ], + "type": "dark" +} \ No newline at end of file diff --git a/vsc-extension-quickstart.md b/vsc-extension-quickstart.md new file mode 100644 index 0000000..e4c8abc --- /dev/null +++ b/vsc-extension-quickstart.md @@ -0,0 +1,28 @@ +# Welcome to your VS Code Extension + +## What's in the folder + +* This folder contains all of the files necessary for your color theme extension. +* `package.json` - this is the manifest file that defines the location of the theme file and specifies the base theme of the theme. +* `themes/lesbian-color-theme.json` - the color theme definition file. + +## Get up and running straight away + +* Press `F5` to open a new window with your extension loaded. +* Open `File > Preferences > Color Themes` and pick your color theme. +* Open a file that has a language associated. The languages' configured grammar will tokenize the text and assign 'scopes' to the tokens. To examine these scopes, invoke the `Developer: Inspect Editor Tokens and Scopes` command from the Command Palette (`Ctrl+Shift+P` or `Cmd+Shift+P` on Mac) . + +## Make changes + +* Changes to the theme file are automatically applied to the Extension Development Host window. + +## Adopt your theme to Visual Studio Code + +* The token colorization is done based on standard TextMate themes. Colors are matched against one or more scopes. + +To learn more about scopes and how they're used, check out the [color theme](https://code.visualstudio.com/api/extension-guides/color-theme) documentation. + +## Install your extension + +* To start using your extension with Visual Studio Code copy it into the `/.vscode/extensions` folder and restart Code. +* To share your extension with the world, read on https://code.visualstudio.com/docs about publishing an extension. diff --git a/vscode-theme-lesbian-dark-0.0.1.vsix b/vscode-theme-lesbian-dark-0.0.1.vsix new file mode 100644 index 0000000..22e468e Binary files /dev/null and b/vscode-theme-lesbian-dark-0.0.1.vsix differ