├── .eslintrc.json ├── .gitignore ├── .vscode ├── extensions.json └── launch.json ├── .vscodeignore ├── CHANGELOG.md ├── LICENSE.txt ├── README.md ├── extension.js ├── images ├── demo.gif ├── icon.png └── logo.png ├── jsconfig.json └── package.json /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "browser": false, 4 | "commonjs": true, 5 | "es6": true, 6 | "node": true, 7 | "mocha": true 8 | }, 9 | "parserOptions": { 10 | "ecmaVersion": 2018, 11 | "ecmaFeatures": { 12 | "jsx": true 13 | }, 14 | "sourceType": "module" 15 | }, 16 | "rules": { 17 | "no-const-assign": "warn", 18 | "no-this-before-super": "warn", 19 | "no-undef": "warn", 20 | "no-unreachable": "warn", 21 | "no-unused-vars": "warn", 22 | "constructor-super": "warn", 23 | "valid-typeof": "warn" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | // See https://go.microsoft.com/fwlink/?LinkId=733558 3 | // for the documentation about the extensions.json format 4 | "recommendations": [ 5 | "dbaeumer.vscode-eslint", 6 | "ms-vscode.extension-test-runner" 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | // A launch configuration that launches the extension inside a new window 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | { 6 | "version": "0.2.0", 7 | "configurations": [ 8 | { 9 | "name": "Run Extension", 10 | "type": "extensionHost", 11 | "request": "launch", 12 | "args": [ 13 | "--extensionDevelopmentPath=${workspaceFolder}" 14 | ] 15 | } 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /.vscodeignore: -------------------------------------------------------------------------------- 1 | .vscode/** 2 | .vscode-test/** 3 | test/** 4 | .gitignore 5 | .yarnrc 6 | vsc-extension-quickstart.md 7 | **/jsconfig.json 8 | **/*.map 9 | **/.eslintrc.json 10 | **/.vscode-test.* 11 | images/demo.gif 12 | node_modules/** -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | ## 0.1.2 4 | - Compatibility with VSCode 1.94 5 | 6 | ## 0.1.1 7 | - Added options for blur. 8 | 9 | ## 0.1.0 10 | - Added options to disable default extension style. `"spacebox-ui.defaultStyle": true|false` 11 | - Added options for custom css import. You can now import local css file. `"spacebox-ui.importCss": "c:\\Users\\xxx\\editor.css",` 12 | 13 | ## 0.0.6 14 | - "Some features are disabled because of VS Code bugs. Blur does not work for now. This extension uses backdrop-filter for blurring menus, while VSCode has some strange bugs and incompatibility with backdrop filter, I decided to disable this function for now. Here is what happened when backdrop filter is inside VSCode: https://i.imgur.com/v6Uvqf3.gif." 15 | 16 | ## 0.0.5 17 | - **New Feature**: You can define now colors for UI. 18 | - Other bug fixes. 19 | 20 | ## 0.0.5 21 | - **New Feature**: You can define now colors for UI. 22 | - Other bug fixes. 23 | 24 | ## 0.0.4 - Ready for VSCode v1.86+ 25 | - **New Feature**: Ready for VSCode version 1.86+. 26 | - **New Feature**: Added new animations. 27 | - Other bug fixes. 28 | 29 | ## 0.0.3 30 | - **New Feature**: Added new animations. 31 | - Other bug fixes. 32 | 33 | ## 0.0.2 - Bug Fix in style 34 | - **Bug Fix**: Bug Fix in style. 35 | 36 | ## 0.0.1 - Initial release 37 | - Initial release. 38 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 amnweb (https://github.com/amnweb) 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 | ![SpaceBox UI](https://github.com/amnweb/SpaceBox-UI-Enhancer/raw/HEAD/images/logo.png?raw=true&new=1) 2 | 3 | # SpaceBox-UI-Enhancer 4 | 5 | A simple and lightweight UI enhancer for VSCode, providing enhanced customization of the VSCode UI. Features animations, blur effects, and more. Works best with the [SpaceBox Theme](https://marketplace.visualstudio.com/items?itemName=SpaceBox.spacebox-theme). 6 | 7 | ## Features 8 | 9 | - Better activity bar 10 | - Acrylic menu 11 | - Animation 12 | - More features coming soon 13 | 14 | 15 | ## Installation 16 | 17 | 1. Open Visual Studio Code 18 | 2. Go to the Extensions view (`Ctrl+Shift+X`) 19 | 3. Search for "SpaceBox UI Enhancer" 20 | 4. Click on the Install button 21 | 22 | 23 | ## Activation 24 | 25 | 1. Open Visual Studio Code 26 | 2. Go to the Command Palette (`Ctrl+Shift+P`) 27 | 3. Type "SpaceBox Enable UI Enhancer" 28 | 4. Restart 29 | 30 | ## Blur Effect 31 | 32 | 1. Open `settings.json` or go to extension settings. 33 | 2. For menu and popups set `"spacebox-ui.blurEffect": true` 34 | 3. For command center `"spacebox-ui.commandCenterBlur": true` 35 | 4. Type "SpaceBox Enable UI Enhancer" 36 | 5. Restart 37 | 38 | ## Import custom style 39 | 40 | 1. Open extension settings page. 41 | 2. In the Import CSS filed type path for your css, example `C:\Users\xxx\.vscode\style.css` 42 | 3. Type "SpaceBox Enable UI Enhancer" 43 | 4. Restart 44 | 45 | ## Deactivation 46 | 47 | 1. Open Visual Studio Code 48 | 2. Go to the Command Palette (`Ctrl+Shift+P`) 49 | 3. Type "SpaceBox Disable UI Enhancer" 50 | 4. Restart 51 | 52 | ## Update 53 | 54 | 1. Update 55 | 2. Deactivate and Activate from Command Palette 56 | 57 | Note: In the future, I will make this automatic. 58 | 59 | ## How to change color 60 | 61 | If you want to have a blur effect, you need to change the color go to vscode `settings.json` and define the color you like, example. 62 | 63 | ``` 64 | "workbench.colorCustomizations": { 65 | "menu.background": "#262c3670", //menu background 66 | "menu.selectionBackground": "#3e465377", //menu hover background 67 | "menu.separatorBackground": "#3e434d9f", //menu separator line color 68 | "quickInput.background": "#10151d10", //command center 69 | "editorHoverWidget.background": "#10151d10" //background color of the editor hover widget 70 | } 71 | ``` 72 | 73 | ## Demo 74 |

75 | demo 76 |

77 | 78 | 79 | 80 | ## Marketplace 81 | You can download the extension from the Visual Studio Code marketplace: [SpaceBox UI Enhancer](https://marketplace.visualstudio.com/items?itemName=SpaceBox.spacebox-ui) -------------------------------------------------------------------------------- /extension.js: -------------------------------------------------------------------------------- 1 | const vscode = require("vscode"); 2 | const fs = require("fs"); 3 | const path = require("path"); 4 | const crypto = require("crypto"); 5 | 6 | const appDir = require.main ? path.dirname(require.main.filename) : path.dirname(process.argv[1]); 7 | const appRoot = vscode.env.appRoot; 8 | const productFile = path.join(appRoot, "product.json"); 9 | const origFile = `${productFile}.orig.${vscode.version}`; 10 | const workbenchCssPath = path.join( 11 | appRoot, 12 | "out", 13 | "vs", 14 | "workbench", 15 | "workbench.desktop.main.css" 16 | ); 17 | const workbenchJsPath = path.join( 18 | appRoot, 19 | "out", 20 | "vs", 21 | "workbench", 22 | "workbench.desktop.main.js" 23 | ); 24 | 25 | async function promptRestart() { 26 | const config = vscode.workspace.getConfiguration(); 27 | const configKey = "update.mode"; 28 | const value = config.inspect(configKey); 29 | 30 | await config.update( 31 | configKey, 32 | config.get(configKey) === "default" ? "manual" : "default", 33 | vscode.ConfigurationTarget.Global 34 | ); 35 | config.update( 36 | configKey, 37 | value && value.globalValue, 38 | vscode.ConfigurationTarget.Global 39 | ); 40 | } 41 | 42 | function applyChecksum() { 43 | const product = require(productFile); 44 | let changed = false; 45 | for (const [filePath, curChecksum] of Object.entries(product.checksums)) { 46 | const checksum = computeChecksum( 47 | path.join(appDir, ...filePath.split("/")) 48 | ); 49 | if (checksum !== curChecksum) { 50 | product.checksums[filePath] = checksum; 51 | changed = true; 52 | } 53 | } 54 | if (changed) { 55 | const json = JSON.stringify(product, null, "\t"); 56 | try { 57 | if (!fs.existsSync(origFile)) { 58 | fs.renameSync(productFile, origFile); 59 | } 60 | fs.writeFileSync(productFile, json, { encoding: "utf8" }); 61 | } catch (err) { 62 | console.error(err); 63 | } 64 | } 65 | } 66 | 67 | function restoreChecksum() { 68 | try { 69 | if (fs.existsSync(origFile)) { 70 | fs.unlinkSync(productFile); 71 | fs.renameSync(origFile, productFile); 72 | } 73 | } catch (err) { 74 | console.error(err); 75 | } 76 | } 77 | 78 | function computeChecksum(file) { 79 | var contents = fs.readFileSync(file); 80 | return crypto 81 | .createHash("sha256") 82 | .update(contents) 83 | .digest("base64") 84 | .replace(/=+$/, ""); 85 | } 86 | 87 | function cleanupOrigFiles() { 88 | // Remove all old backup files 89 | const oldOrigFiles = fs 90 | .readdirSync(appRoot) 91 | .filter((file) => /\.orig\./.test(file)) 92 | .filter((file) => !file.endsWith(vscode.version)); 93 | for (const file of oldOrigFiles) { 94 | fs.unlinkSync(path.join(appRoot, file)); 95 | } 96 | } 97 | 98 | function createBackup(filePath) { 99 | const backupPath = `${filePath}.backup`; 100 | if (!fs.existsSync(backupPath)) { 101 | fs.copyFileSync(filePath, backupPath); 102 | } 103 | } 104 | 105 | function restoreFromBackup(filePath, msgShow = true) { 106 | const backupPath = `${filePath}.backup`; 107 | if (fs.existsSync(backupPath)) { 108 | fs.copyFileSync(backupPath, filePath); 109 | if (msgShow) { 110 | promptRestart("Settings restored. Restart VS Code to see changes."); 111 | } 112 | } else { 113 | if (msgShow) { 114 | vscode.window.showInformationMessage(`Backup files not found`); 115 | } 116 | } 117 | } 118 | 119 | function activate(context) { 120 | const changeSystem = "spacebox-ui.modifyFiles"; 121 | const restoreSystem = "spacebox-ui.restoreSettings"; 122 | let newCss = ""; 123 | const modifyDisposable = vscode.commands.registerCommand( 124 | changeSystem, 125 | async () => { 126 | const config = vscode.workspace.getConfiguration('spacebox-ui'); 127 | const defaultUiStyle = config.get('defaultStyle', true); 128 | const blurEffect = config.get('blurEffect', false); 129 | const commandCenterBlur = config.get('commandCenterBlur', false); 130 | const importCss = config.get('importCss'); 131 | if (importCss && fs.existsSync(importCss)) { 132 | const importCssContent = fs.readFileSync(importCss, 'utf-8'); 133 | newCss += importCssContent; 134 | } 135 | if (defaultUiStyle) { 136 | newCss += `:root { 137 | --activity-bar-action-item-size: 38px !important; 138 | --activity-bar-action-item-margin: 6px !important 139 | } 140 | .quick-input-widget { 141 | transform-origin: top; 142 | animation: openPopup01 .4s 143 | } 144 | .monaco-workbench .activitybar>.content :not(.monaco-menu)>.monaco-action-bar .badge .badge-content { 145 | top: 20px !important 146 | } 147 | div.monaco-workbench div.activitybar>div.content div.monaco-action-bar ul.actions-container li.action-item { 148 | padding-left: 4px 149 | } 150 | div.monaco-workbench div.activitybar>div.content div.monaco-action-bar ul.actions-container { 151 | margin-top: var(--activity-bar-action-item-margin) !important 152 | } 153 | div.monaco-workbench div.activitybar>div.content div.monaco-action-bar ul.actions-container li.action-item a.action-label { 154 | height: calc(var(--activity-bar-action-item-size)*1.2); 155 | width: var(--activity-bar-action-item-size); 156 | font-size: calc(var(--activity-bar-action-item-size)*0.5); 157 | -webkit-mask-size: 1em; 158 | mask-size: 1em; 159 | padding: 0 160 | } 161 | .monaco-workbench .activitybar>.content :not(.monaco-menu)>.monaco-action-bar .active-item-indicator { 162 | z-index: 0 !important 163 | } 164 | div.monaco-workbench.enable-motion .activitybar.part .monaco-action-bar .action-item.checked .active-item-indicator:before { 165 | height: 40% !important; 166 | top: 30% !important; 167 | left: 2px !important; 168 | border-left-width: 0 !important; 169 | width: 4px; 170 | background-color: var(--vscode-activityBar-activeBorder); 171 | border-radius: 8px !important; 172 | animation: activityBorder01 .4s forwards 173 | } 174 | div.monaco-workbench.enable-motion .activitybar.part .monaco-action-bar .action-item.checked .active-item-indicator:after { 175 | background-image: linear-gradient(var(--vscode-activityBar-activeBorder), var(--vscode-activityBar-activeBorder)); 176 | content: ""; 177 | position: absolute; 178 | left: 4px; 179 | right: 6px; 180 | top: 0; 181 | bottom: 0; 182 | border-radius: 4px; 183 | z-index: -1; 184 | opacity: .2 185 | } 186 | @keyframes activityBorder01 { 187 | 0% { 188 | transform: scale(0) 189 | } 190 | to { 191 | transform: scale(1) 192 | } 193 | } 194 | div.monaco-workbench.enable-motion .activitybar.part .monaco-action-bar .action-item.clicked:not(.checked):not(.active) a { 195 | animation: activityBarIconAnimation2 .3s 196 | } 197 | div.monaco-workbench.enable-motion .activitybar.part .monaco-action-bar .action-item.checked a { 198 | animation: activityBarIconAnimation .3s 199 | } 200 | @keyframes activityBarIconAnimation { 201 | 0% { 202 | transform: scale(1) 203 | } 204 | 50% { 205 | transform: scale(.86) 206 | } 207 | to { 208 | transform: scale(1) 209 | } 210 | } 211 | @keyframes activityBarIconAnimation2 { 212 | 0% { 213 | transform: scale(1) 214 | } 215 | 50% { 216 | transform: scale(.86) 217 | } 218 | to { 219 | transform: scale(1) 220 | } 221 | } 222 | .window-appicon { 223 | display: none 224 | } 225 | .lightBulbWidget { 226 | transition: top .2s 227 | } 228 | .monaco-hover:not(.hidden) { 229 | animation: hoverFadeIn001 .2s 230 | } 231 | @keyframes hoverFadeIn001 { 232 | 0% { 233 | opacity: 0 234 | } 235 | to { 236 | opacity: 1 237 | } 238 | } 239 | .action-label { 240 | transition: color .2s 241 | } 242 | .quick-input-widget[style*="display: none;"] { 243 | display: block !important; 244 | transform-origin: top; 245 | animation: closePopup01 .4s; 246 | opacity: 0; 247 | transform: scaleY(0); 248 | pointer-events: none 249 | } 250 | @keyframes openPopup01 { 251 | 0% { 252 | opacity: 0; 253 | transform: scaleY(0) 254 | } 255 | to { 256 | opacity: 1; 257 | transform: scaleY(1) 258 | } 259 | } 260 | @keyframes closePopup01 { 261 | 0% { 262 | opacity: 1; 263 | transform: scaleY(1) 264 | } 265 | to { 266 | opacity: 0; 267 | transform: scaleY(0) 268 | } 269 | } 270 | .extensions-list .monaco-list-row:not(.explorer-folders-view .monaco-list-row) { 271 | animation: scrollingAnimation001 .4s 272 | } 273 | @keyframes scrollingAnimation001 { 274 | 0% { 275 | opacity: 0; 276 | transform: scale(0) 277 | } 278 | to { 279 | opacity: 1; 280 | transform: scale(1) 281 | } 282 | } 283 | .menubar-menu-button.open .menubar-menu-items-holder { 284 | animation: menu-slide .3s !important; 285 | transform-origin: top 286 | } 287 | @keyframes menu-slide { 288 | 0% { 289 | transform: scaleY(0) 290 | } 291 | to { 292 | transform: scaleY(1) 293 | } 294 | } 295 | .suggest-input-container { 296 | border-radius: 4px 297 | } 298 | .extensions-list .monaco-list-row:not(.explorer-folders-view .monaco-list-row) { 299 | margin: 0 12px !important; 300 | max-width: calc(100% - 24px) !important; 301 | border-radius: 8px !important 302 | } 303 | .extension-list-item>.icon-container>.icon { 304 | margin-right: 14px; 305 | padding-right: 0 !important; 306 | object-fit: contain !important 307 | } 308 | .extension-list-item>.details>.header-container>.header>.name { 309 | font-size: 14px !important 310 | } 311 | .monaco-workbench .part.titlebar>.titlebar-container>.titlebar-left { 312 | padding-left: 4px 313 | } 314 | .monaco-workbench .pane-composite-part>.title>.composite-bar-container>.composite-bar>.monaco-action-bar .action-item.checked:not(:focus) .active-item-indicator:before { 315 | width: 100% !important; 316 | bottom: 2px !important; 317 | left: 0 !important; 318 | height: 2px; 319 | border: none !important; 320 | background-color: var(--vscode-activityBar-activeBorder); 321 | border-radius: 8px !important; 322 | animation: activityBorder01 .4s forwards 323 | }`; 324 | } 325 | if (blurEffect) { 326 | newCss += ` 327 | .action-widget:after, 328 | .suggest-details-container:after, 329 | .context-view.top.left:after, 330 | .overflowingContentWidgets>div:after, 331 | .workbench-hover-container:after, 332 | .find-widget:after, 333 | .monaco-menu:after, 334 | .shadow-root-host::part(menu)::after { 335 | z-index: -1; 336 | content: ''; 337 | position: absolute; 338 | left: 0; 339 | top: 0; 340 | bottom: 0; 341 | right: 0; 342 | backdrop-filter: blur(12px) 343 | }`; 344 | } 345 | if(commandCenterBlur){ 346 | newCss += ` 347 | .quick-input-widget {backdrop-filter: blur(12px)}`; 348 | } 349 | restoreFromBackup(workbenchCssPath, false); 350 | createBackup(workbenchCssPath); 351 | createBackup(workbenchJsPath); 352 | 353 | // Update workbench.desktop.main.css file 354 | const cssFileContent = fs.readFileSync(workbenchCssPath, "utf-8"); 355 | const modifiedCssContent = cssFileContent + newCss; 356 | fs.writeFileSync(workbenchCssPath, modifiedCssContent, "utf-8"); 357 | 358 | // Update workbench.desktop.main.js file 359 | const jsFileContent = fs.readFileSync(workbenchJsPath, "utf-8"); 360 | const regexToCheck = 361 | /([A-Z])\.classList\.add\("monaco-menu"\),\1\.setAttribute\("role","presentation"\)/; 362 | // Test the file content against the regex 363 | if (regexToCheck.test(jsFileContent)) { 364 | // Replace the matched pattern with the new string 365 | const modifiedJsContent = jsFileContent.replace( 366 | regexToCheck, 367 | '$1.classList.add("monaco-menu"),$1.setAttribute("role","presentation"),$1.setAttribute("part","menu")' 368 | ); 369 | // Write the modified content back to the original file 370 | fs.writeFileSync(workbenchJsPath, modifiedJsContent, "utf-8"); 371 | } 372 | cleanupOrigFiles(); 373 | applyChecksum(); 374 | promptRestart("You must restart VS Code to see changes"); 375 | } 376 | ); 377 | const restoreDisposable = vscode.commands.registerCommand( 378 | restoreSystem, 379 | () => { 380 | // Restore files from backups 381 | restoreFromBackup(workbenchCssPath); 382 | restoreFromBackup(workbenchJsPath); 383 | restoreChecksum(); 384 | } 385 | ); 386 | context.subscriptions.push(modifyDisposable, restoreDisposable); 387 | } 388 | exports.activate = activate; -------------------------------------------------------------------------------- /images/demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amnweb/SpaceBox-UI-Enhancer/eb8164aafa1c1ca8ffb7a39478fc88a44b41d43b/images/demo.gif -------------------------------------------------------------------------------- /images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amnweb/SpaceBox-UI-Enhancer/eb8164aafa1c1ca8ffb7a39478fc88a44b41d43b/images/icon.png -------------------------------------------------------------------------------- /images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/amnweb/SpaceBox-UI-Enhancer/eb8164aafa1c1ca8ffb7a39478fc88a44b41d43b/images/logo.png -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "Node16", 4 | "target": "ES2022", 5 | "checkJs": false, /* Typecheck .js files. */ 6 | "lib": [ 7 | "ES2022" 8 | ] 9 | }, 10 | "exclude": [ 11 | "node_modules" 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "spacebox-ui", 3 | "displayName": "SpaceBox UI Enhancer", 4 | "description": "Experience enhanced customization of VSCode UI, featuring animations, blur effects, and more.", 5 | "icon": "images/icon.png", 6 | "publisher": "SpaceBox", 7 | "repository": "https://github.com/amnweb/SpaceBox-UI-Enhancer", 8 | "version": "0.1.2", 9 | "engines": { 10 | "vscode": "^1.86.0" 11 | }, 12 | "categories": [ 13 | "Other" 14 | ], 15 | "galleryBanner": { 16 | "color": "#0d1116", 17 | "theme": "dark" 18 | }, 19 | "activationEvents": [], 20 | "main": "./extension.js", 21 | "contributes": { 22 | "configuration": { 23 | "title": "SpaceBox UI Enhancer Configuration", 24 | "properties": { 25 | "spacebox-ui.defaultStyle": { 26 | "type": "boolean", 27 | "default": true, 28 | "description": "Enable the default SpaceBoxUI style style.", 29 | "markdownDescription": "This will enable the default SpaceBoxUI style", 30 | "order": 1 31 | }, 32 | "spacebox-ui.blurEffect": { 33 | "type": "boolean", 34 | "default": false, 35 | "description": "Enable the blur effect. This includes the right-click context menu, menu bar, widgets, popups.", 36 | "order": 2 37 | }, 38 | "spacebox-ui.commandCenterBlur": { 39 | "type": "boolean", 40 | "default": false, 41 | "description": "Enable the command center menu blur.", 42 | "order": 3 43 | }, 44 | "spacebox-ui.importCss": { 45 | "type": "string", 46 | "default": "", 47 | "description": "Path to the custom CSS file. This file will be imported directly in VSCode style.", 48 | "order": 4 49 | } 50 | } 51 | }, 52 | "commands": [ 53 | { 54 | "command": "spacebox-ui.modifyFiles", 55 | "title": "SpaceBox Enable UI Enhancer" 56 | }, 57 | { 58 | "command": "spacebox-ui.restoreSettings", 59 | "title": "SpaceBox Disable UI Enhancer" 60 | } 61 | ] 62 | }, 63 | "scripts": { 64 | "lint": "eslint .", 65 | "pretest": "npm run lint" 66 | }, 67 | "devDependencies": { 68 | "@types/mocha": "^10.0.6", 69 | "@types/node": "^18.0.0", 70 | "@types/vscode": "^1.80.0", 71 | "@vscode/test-cli": "^0.0.4", 72 | "@vscode/test-electron": "^2.3.8", 73 | "eslint": "^8.56.0", 74 | "typescript": "^5.3.3" 75 | } 76 | } --------------------------------------------------------------------------------