My VSCode setup is heavily inspired, and some parts even exclusively come from glennraya, especially the custom CSS and JS. He also has a YouTube video where he walks through what's what if you're interested.
Required Extensions
Font
My VSCode setup is heavily inspired, and some parts even exclusively come from glennraya, especially the custom CSS and JS. He also has a YouTube video where he walks through what's what if you're interested.
Required Extensions
Font
| { | |
| "editor.fontFamily": "'Recursive Mono Casual Static','Dank Mono Light','Operator Mono Light','Dank Mono','Cascadia Code Light', Menlo, Monaco, 'Courier New', monospace", | |
| "workbench.colorTheme": "Bearded Theme Aquarelle Hydrangea", | |
| "editor.inlineSuggest.enabled": true, | |
| "workbench.iconTheme": "bearded-icons", | |
| "editor.tabSize": 2, | |
| "workbench.fontAliasing": "auto", | |
| "workbench.tips.enabled": false, | |
| "editor.minimap.enabled": false, | |
| "editor.parameterHints.cycle": true, | |
| "explorer.autoReveal": false, | |
| "debug.internalConsoleOptions": "neverOpen", | |
| "extensions.ignoreRecommendations": true, | |
| "editor.renderWhitespace": "trailing", | |
| "editor.scrollbar.horizontalScrollbarSize": 3, | |
| "editor.scrollbar.verticalScrollbarSize": 3, | |
| "editor.scrollbar.vertical": "visible", | |
| "editor.indentSize": "tabSize", | |
| "tailwindCSS.experimental.classRegex": ["class:\\s*?[\"'`]([^\"'`]*).*?,?"], | |
| "workbench.activityBar.location": "hidden", | |
| "launch": { | |
| "configurations": [], | |
| "compounds": [] | |
| }, | |
| "screencastMode.fontSize": 24, | |
| "screencastMode.verticalOffset": 2, | |
| "screencastMode.keyboardOptions": { | |
| "showCommandGroups": true | |
| }, | |
| "codeium.enableConfig": { | |
| "*": false, | |
| "json": false, | |
| "typescript": false, | |
| "javascript": false, | |
| "css": false | |
| }, | |
| "editor.accessibilitySupport": "off", | |
| "files.insertFinalNewline": true, | |
| "terminal.integrated.defaultProfile.linux": "", | |
| "workbench.statusBar.visible": false, | |
| "editor.defaultFormatter": "esbenp.prettier-vscode", | |
| "editor.formatOnPaste": true, | |
| "editor.formatOnSave": true, | |
| "[typescript]": { | |
| "editor.formatOnSave": false | |
| }, | |
| "editor.codeActionsOnSave": { | |
| "source.fixAll.eslint": "explicit" | |
| }, | |
| "editor.cursorSmoothCaretAnimation": "on", | |
| "workbench.list.smoothScrolling": true, | |
| "eslint.codeActionsOnSave.rules": null, | |
| "workbench.layoutControl.enabled": false, | |
| "window.commandCenter": false, | |
| "breadcrumbs.enabled": false, | |
| "scm.diffDecorations": "none", | |
| "editor.hover.delay": 1500, | |
| "editor.hover.enabled": true, | |
| "editor.matchBrackets": "never", | |
| "editor.colorDecorators": false, | |
| "git.decorations.enabled": false, | |
| "workbench.startupEditor": "none", | |
| "editor.lightbulb.enabled": "off", | |
| "editor.selectionHighlight": false, | |
| "editor.overviewRulerBorder": false, | |
| "editor.renderLineHighlight": "none", | |
| "editor.occurrencesHighlight": "off", | |
| "problems.decorations.enabled": false, | |
| "editor.renderControlCharacters": false, | |
| "editor.hideCursorInOverviewRuler": true, | |
| "editor.gotoLocation.multipleReferences": "goto", | |
| "editor.gotoLocation.multipleDefinitions": "goto", | |
| "editor.gotoLocation.multipleDeclarations": "goto", | |
| "workbench.editor.enablePreviewFromQuickOpen": false, | |
| "editor.gotoLocation.multipleImplementations": "goto", | |
| "editor.gotoLocation.multipleTypeDefinitions": "goto", | |
| "vscode_custom_css.imports": [ | |
| "file:///Users/tomgobich/vscode_custom.css", | |
| "file:///Users/tomgobich/vscode_custom.js" | |
| ] | |
| } |
| /* | |
| * The vast majority of this file comes from | |
| * glennraya: https://github.com/glennraya/vscode-settings-json/blob/main/custom-vscode.css | |
| */ | |
| /* Code comment style */ | |
| .mtk3 { | |
| font-family: "Recursive Mono Casual Static", monospace !important; | |
| } | |
| .line-numbers { | |
| position: relative !important; | |
| width: 35px !important; | |
| font-size: 14px !important; | |
| font-family: "Recursive Mono Casual Static" !important; | |
| padding-right: 0.5rem; | |
| opacity: 0.4; | |
| } | |
| /* Code canvas top shadow */ | |
| .monaco-editor .scroll-decoration { | |
| box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.75) !important; | |
| top: -6px !important; | |
| } | |
| /* Toolbars when tabs are enabled. */ | |
| .monaco-workbench | |
| .part.editor | |
| > .content | |
| .editor-group-container | |
| > .title | |
| .editor-actions { | |
| display: none !important; | |
| } | |
| /* Side bar */ | |
| .part.sidebar { | |
| box-shadow: 0px 0px 50px rgba(0, 0, 0, 0.25); | |
| } | |
| /* File Explorer Selected Item */ | |
| .monaco-list.list_id_1 .monaco-list-row.selected { | |
| background-color: #4f5971 !important; | |
| opacity: 1 !important; | |
| border-top: 1px #727b90 solid; | |
| border-bottom: 1px #727b90 solid; | |
| } | |
| /* List item label name */ | |
| .monaco-list.list_id_1 .monaco-list-row.selected .label-name { | |
| color: #fff !important; | |
| opacity: 1 !important; | |
| } | |
| /* File explorer action buttons */ | |
| .monaco-workbench .part.sidebar .title-actions .actions-container { | |
| display: none; | |
| } | |
| /* File Explorer Item Label */ | |
| .monaco-tree .monaco-tree-row .label-name, | |
| .monaco-list .monaco-list-row .monaco-icon-label .label-name { | |
| font-family: "Recursive Mono Casual Static", monospace !important; | |
| font-size: 12px !important; | |
| } | |
| .explorer-folders-view { | |
| opacity: 0.4; | |
| transition: opacity 300ms ease; | |
| } | |
| .explorer-folders-view:hover { | |
| opacity: 1; | |
| } | |
| /* Sidebar top shadow */ | |
| .monaco-scrollable-element > .shadow.top { | |
| box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.75) !important; | |
| top: -3px !important; | |
| } | |
| /* Sidebar title */ | |
| .composite.title { | |
| display: flex !important; | |
| flex-direction: row !important; | |
| align-items: center !important; | |
| justify-items: center !important; | |
| opacity: 0.4; | |
| } | |
| .composite.title h2 { | |
| font-weight: bold !important; | |
| font-size: 12px !important; | |
| } | |
| .monaco-workbench .part.sidebar > .title > .title-label h2 { | |
| margin-left: -10ch; | |
| } | |
| /* Scroll Bar */ | |
| .slider { | |
| position: absolute !important; | |
| right: 1px !important; | |
| width: 1px !important; | |
| background: #bc9abc !important; | |
| left: auto !important; | |
| } | |
| .codicon-toolbar-more, | |
| .codicon-word-wrap { | |
| display: block !important; | |
| } | |
| /* Tooltip box style */ | |
| .monaco-editor-hover, | |
| .monaco-hover { | |
| box-shadow: 0px 8px 32px rgba(0, 0, 0, 0.45) !important; | |
| padding: 0.5rem !important; | |
| background-image: linear-gradient(transparent 0%, #2a2b38 100%) !important; | |
| backdrop-filter: blur(3px) !important; | |
| border-radius: 0.5rem !important; | |
| border: none !important; | |
| } | |
| /* Project title's style at the top. */ | |
| .monaco-workbench | |
| .part.titlebar | |
| > .titlebar-container | |
| > .titlebar-center | |
| > .window-title | |
| > .command-center | |
| .action-item.command-center-center { | |
| border: none !important; | |
| background: transparent !important; | |
| } | |
| /* Project Title */ | |
| .titlebar-left { | |
| justify-content: flex-start !important; | |
| flex-grow: 0 !important; | |
| width: auto !important; | |
| } | |
| /* Search Label */ | |
| .search-label { | |
| font-family: "Recursive Mono Casual Static" !important; | |
| font-size: 12px !important; | |
| color: #fff; | |
| display: block; | |
| } | |
| /* Search icon */ | |
| .search-icon { | |
| display: none !important; | |
| } | |
| .codicon-search::before { | |
| display: none !important; | |
| } | |
| .codicon-arrow-right, | |
| .codicon-arrow-left { | |
| display: none !important; | |
| } | |
| .titlebar-right > * { | |
| display: none !important; | |
| } | |
| /* Command Palette */ | |
| .quick-input-widget { | |
| transform: translateY(-50%) !important; | |
| top: 50% !important; | |
| box-shadow: 0px 8px 20px rgba(0, 0, 0, 0.45) !important; | |
| padding: 10px 10px 18px 10px !important; | |
| /* background-image: linear-gradient(#3c3c50 0%, #2a2b38 100%) !important; */ | |
| backdrop-filter: blur(3px) !important; | |
| border-radius: 0.5rem !important; | |
| } | |
| /* Remove background for lists */ | |
| .monaco-list-rows { | |
| background: transparent !important; | |
| } | |
| /* List hover */ | |
| .monaco-list-row:hover { | |
| background: rgba(0, 0, 0, 0.2) !important; | |
| } | |
| .notifications-toasts .monaco-list-row:hover { | |
| background: none !important; | |
| } | |
| /* .monaco-list-row.focused { | |
| background-color: rgb(181 198 228 / 25%) !important; | |
| } */ | |
| /* .synthetic-focus { | |
| outline-color: rgba(50, 50, 50, 1) !important; | |
| } */ | |
| /* .quick-input-widget .monaco-label { | |
| font-size: 11px !important; | |
| } */ | |
| /* Command palette text input */ | |
| .quick-input-filter .monaco-inputbox { | |
| border-radius: 0.5rem !important; | |
| padding: 8px !important; | |
| border: none !important; | |
| /* background-color: rgba(34, 34, 34, 0.4) !important; */ | |
| font-family: "Recursive Mono Casual Static" !important; | |
| font-size: 12px !important; | |
| margin-bottom: 16px !important; | |
| } | |
| #command-blur { | |
| position: absolute; | |
| width: 100%; | |
| height: 100%; | |
| background: rgba(0, 0, 0, 0.15); | |
| top: 0; | |
| left: 0; | |
| backdrop-filter: blur(8px); | |
| } | |
| /* Command palette's input box placeholder. */ | |
| .monaco-inputbox input::placeholder { | |
| color: rgba(255, 255, 255, 0.3) !important; | |
| } | |
| /* .monaco-workbench label { | |
| color: #fff !important; | |
| font-size: 14px !important; | |
| } */ | |
| /* Container that holds the VS Code home icon. */ | |
| .editor-group-watermark { | |
| max-width: none !important; | |
| } | |
| .command-center-center { | |
| width: auto !important; | |
| } | |
| .letterpress { | |
| background-image: url("data:image/svg+xml,%3Csvg%20width%3D%22100%25%22%20height%3D%22100%25%22%20viewBox%3D%220%200%205000%205000%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20xml%3Aspace%3D%22preserve%22%20xmlns%3Aserif%3D%22http%3A%2F%2Fwww.serif.com%2F%22%20style%3D%22fill-rule%3Aevenodd%3Bclip-rule%3Aevenodd%3Bstroke-linejoin%3Around%3Bstroke-miterlimit%3A2%3B%22%3E%3Cg%20id%3D%22Layer-2%22%20serif%3Aid%3D%22Layer%202%22%3E%3Cpath%20d%3D%22M1006.55%2C1811.24l0%2C1347.79c0.033%2C59.438%206.413%2C117.817%2018.604%2C174.604l581.613%2C-775.496l-0%2C-746.808c-0.017%2C-124.021%20100.587%2C-224.496%20224.621%2C-224.617l859.345%2C0.03l-2138.88%2C2851.75l2851.72%2C-2138.86l0.054%2C859.329c-0.088%2C124.071%20-100.592%2C224.638%20-224.6%2C224.638l-694.25%2C-0l-785.967%2C589.575c43.434%2C6.879%2087.788%2C10.683%20132.567%2C10.625l1347.59%2C-0c454.816%2C-0%20824.854%2C-369.983%20824.854%2C-824.713l-0%2C-1347.73c-0%2C-220.304%20-85.779%2C-427.425%20-241.554%2C-583.191c-155.876%2C-155.904%20-363.042%2C-241.667%20-583.367%2C-241.567l-1347.51%2C-0.058c-454.842%2C0.125%20-824.746%2C370.1%20-824.838%2C824.696%22%20style%3D%22fill%3A%23f1f0ff%3Bfill-rule%3Anonzero%3B%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") !important; | |
| background-repeat: no-repeat no-repeat !important; | |
| background-position: center center !important; | |
| background-size: contain !important; | |
| width: 60% !important; | |
| opacity: 0.15; | |
| filter: invert(); | |
| } |
| /* | |
| * The vast majority of this file comes from | |
| * glennraya: https://github.com/glennraya/vscode-settings-json/blob/main/vscode-script.js | |
| */ | |
| document.addEventListener("DOMContentLoaded", function () { | |
| const checkElement = setInterval(() => { | |
| const commandDialog = document.querySelector(".quick-input-widget"); | |
| if (commandDialog) { | |
| // Create an DOM observer to 'listen' for changes in element's attribute. | |
| const observer = new MutationObserver((mutations) => { | |
| mutations.forEach((mutation) => { | |
| if ( | |
| mutation.type === "attributes" && | |
| mutation.attributeName === "style" | |
| ) { | |
| if (commandDialog.style.display === "none") { | |
| handleEscape(); | |
| } else { | |
| // If the .quick-input-widget element (command palette) is in the DOM | |
| // but no inline style display: none, show the backdrop blur. | |
| runMyScript(); | |
| } | |
| } | |
| }); | |
| }); | |
| observer.observe(commandDialog, { attributes: true }); | |
| // Clear the interval once the observer is set | |
| clearInterval(checkElement); | |
| } else { | |
| console.log("Command dialog not found yet. Retrying..."); | |
| } | |
| }, 500); // Check every 500ms | |
| // Execute when command palette was launched. | |
| document.addEventListener("keydown", function (event) { | |
| if ((event.metaKey || event.ctrlKey) && event.key === "p") { | |
| event.preventDefault(); | |
| runMyScript(); | |
| } else if (event.key === "Escape" || event.key === "Esc") { | |
| event.preventDefault(); | |
| handleEscape(); | |
| } | |
| }); | |
| // Ensure the escape key event listener is at the document level | |
| document.addEventListener( | |
| "keydown", | |
| function (event) { | |
| if (event.key === "Escape" || event.key === "Esc") { | |
| handleEscape(); | |
| } | |
| }, | |
| true | |
| ); | |
| function runMyScript() { | |
| const targetDiv = document.querySelector(".monaco-workbench"); | |
| // Remove existing element if it already exists | |
| const existingElement = document.getElementById("command-blur"); | |
| if (existingElement) { | |
| existingElement.remove(); | |
| } | |
| // Create and configure the new element | |
| const newElement = document.createElement("div"); | |
| newElement.setAttribute("id", "command-blur"); | |
| newElement.addEventListener("click", function () { | |
| newElement.remove(); | |
| }); | |
| // Append the new element as a child of the targetDiv | |
| targetDiv.appendChild(newElement); | |
| } | |
| function handleEscape() { | |
| // Your handleEscape function logic here | |
| console.log("handleEscape function triggered"); | |
| } | |
| // Remove the backdrop blur from the DOM when esc key is pressed. | |
| function handleEscape() { | |
| const element = document.getElementById("command-blur"); | |
| if (element) { | |
| element.click(); | |
| } | |
| } | |
| }); |