From 3ac528c554dbcb60d5c37e1e9c721308bc1f273c Mon Sep 17 00:00:00 2001 From: S4NKALP Date: Thu, 18 Jan 2024 14:36:22 +0545 Subject: [PATCH] update --- config/Code/User/keybindings.json | 274 ---- config/Code/User/settings.json | 740 --------- .../Code/User/snippets/snippet.code-snippets | 126 -- config/Code/User/spellright.dict | 14 - config/Code/User/vsc.css | 1424 ----------------- config/Code/User/vsc.js | 100 -- config/VSCodium/User/extensions.txt | 40 + config/VSCodium/User/keybindings.json | 303 ++++ config/VSCodium/User/settings.json | 489 ++++++ config/VSCodium/User/snippets/css.json | 13 + config/VSCodium/User/snippets/global.json | 6 + config/VSCodium/User/snippets/lua.json | 50 + config/VSCodium/User/snippets/markdown.json | 72 + .../VSCodium/User/snippets/python/python.json | 19 + config/hypr/UserConfigs/WindowRules.conf | 2 +- config/hypr/UserScripts/QuickEdit.sh | 2 +- config/hypr/scripts/Caway.sh | 120 ++ config/hypr/scripts/ClipManager.sh | 40 +- config/hypr/scripts/RofiEmoji.sh | 2 +- config/hypr/scripts/WaybarCava.sh | 33 - config/kitty/kitty.conf | 2 +- config/nvim/.github/README.md | 25 +- .../nvim/.github/overview-images/lualine.png | Bin 11063 -> 12603 bytes .../.github/overview-images/which-key.png | Bin 61467 -> 62066 bytes .../nvim/after/ftplugin/javascriptreact.lua | 16 + config/nvim/after/ftplugin/json.lua | 12 + config/nvim/after/ftplugin/jsonc.lua | 12 + .../nvim/after/ftplugin/typescriptreact.lua | 16 + config/nvim/lazy-lock.json | 82 +- config/nvim/lazyvim.json | 19 +- config/nvim/lua/config/autocmds.lua | 30 +- config/nvim/lua/config/keymaps.lua | 21 +- config/nvim/lua/config/lazy.lua | 1 + config/nvim/lua/config/options.lua | 11 +- config/nvim/lua/plugins/bufferline.lua | 33 +- .../lua/plugins/extras/coding/ai/codeium.lua | 2 +- .../nvim/lua/plugins/extras/coding/ai/gen.lua | 29 + .../lua/plugins/extras/coding/annotation.lua | 1 + config/nvim/lua/plugins/extras/dap/core.lua | 17 +- .../lua/plugins/extras/editor/carbon-now.lua | 7 + .../plugins/extras/editor/dev-container.lua | 32 + .../plugins/extras/editor/git/diffview.lua | 6 +- .../lua/plugins/extras/editor/harpoon.lua | 34 +- config/nvim/lua/plugins/extras/editor/oil.lua | 2 +- .../nvim/lua/plugins/extras/editor/rayso.lua | 11 - .../extras/editor/telescope/urlview.lua | 1 + .../extras/editor/terminal/floaterm.lua | 12 +- .../lua/plugins/extras/lang/go-extended.lua | 3 +- .../lua/plugins/extras/lang/rust-extended.lua | 12 + .../extras/lang/web/typescript-extended.lua | 29 + .../extras/ui/colorschemes/catppuccin.lua | 24 +- .../nvim/lua/plugins/extras/util/vscode.lua | 53 +- config/nvim/lua/plugins/gitsigns.lua | 3 +- config/nvim/rules/biome.json | 2 +- config/nvim/snippets/languages/markdown.json | 70 +- config/rofi/.current_wallpaper | 2 +- config/rofi/config-long.rasi | 176 +- config/rofi/config-powermenu.rasi | 4 +- config/rofi/config-wallpaper.rasi | 6 +- config/rofi/config.rasi | 8 +- config/rofi/launcher.rasi | 4 +- config/waybar/config | 2 +- config/waybar/configs/[ALL] allside | 125 -- config/waybar/configs/[BOT & Right] southeast | 2 +- config/waybar/configs/[BOT] default | 2 +- config/waybar/configs/[BOT] peony | 2 +- config/waybar/configs/[TOP] default | 2 +- config/waybar/configs/[TOP] minimal - long | 1 + config/waybar/configs/[TOP] minimal - short | 1 + config/waybar/configs/[TOP] sleek | 1 + config/waybar/modules | 31 +- config/waybar/style.css | 6 +- 72 files changed, 1734 insertions(+), 3140 deletions(-) delete mode 100644 config/Code/User/keybindings.json delete mode 100644 config/Code/User/settings.json delete mode 100644 config/Code/User/snippets/snippet.code-snippets delete mode 100644 config/Code/User/spellright.dict delete mode 100644 config/Code/User/vsc.css delete mode 100644 config/Code/User/vsc.js create mode 100644 config/VSCodium/User/extensions.txt create mode 100644 config/VSCodium/User/keybindings.json create mode 100644 config/VSCodium/User/settings.json create mode 100644 config/VSCodium/User/snippets/css.json create mode 100644 config/VSCodium/User/snippets/global.json create mode 100644 config/VSCodium/User/snippets/lua.json create mode 100644 config/VSCodium/User/snippets/markdown.json create mode 100644 config/VSCodium/User/snippets/python/python.json create mode 100755 config/hypr/scripts/Caway.sh delete mode 100755 config/hypr/scripts/WaybarCava.sh create mode 100644 config/nvim/after/ftplugin/javascriptreact.lua create mode 100644 config/nvim/after/ftplugin/typescriptreact.lua create mode 100644 config/nvim/lua/plugins/extras/coding/ai/gen.lua create mode 100644 config/nvim/lua/plugins/extras/editor/carbon-now.lua create mode 100644 config/nvim/lua/plugins/extras/editor/dev-container.lua delete mode 100644 config/nvim/lua/plugins/extras/editor/rayso.lua delete mode 100644 config/waybar/configs/[ALL] allside diff --git a/config/Code/User/keybindings.json b/config/Code/User/keybindings.json deleted file mode 100644 index 9d04af3b..00000000 --- a/config/Code/User/keybindings.json +++ /dev/null @@ -1,274 +0,0 @@ -[ - { - "key": "ctrl+shift+r", - "command": "workbench.action.reloadWindow", - "when": "editorTextFocus" - }, - { - "key": "ctrl+i", - "command": "workbench.action.terminal.sendSequence", - "when": "resourceExtname == .py", - "args": { - "text": "python \"${file}\" < ./i\n" - } - }, - { - "key": "f5", - "command": "python.execInTerminal", - "when": "resourceExtname == .py", - }, - { - "key": "f5", - "command": "workbench.action.terminal.sendSequence", - "when": "resourceExtname == .dart", - "args": { - "text": "dart \"${file}\"\n" - } - }, - { - "key": "f5", - "command": "workbench.action.terminal.sendSequence", - "when": "resourceExtname == .js", - "args": { - "text": "node \"${file}\"\n" - } - }, - { - "key": "f5", - "command": "workbench.action.terminal.sendSequence", - "when": "resourceExtname == .java", - "args": { - "text": "java \"${file}\"\n" - } - }, - { - "key": "f5", - "command": "workbench.action.terminal.sendSequence", - "when": "resourceExtname == .sh", - "args": { - "text": "\"${file}\"\n" - } - }, - { - "key": "f5", - "command": "workbench.action.terminal.sendSequence", - "when": "resourceExtname == .cpp", - "args": { - "text": "g++ -g \"${file}\" -o \"${fileDirname}/${fileBasenameNoExtension}\" && \"${fileDirname}/${fileBasenameNoExtension}\"\n" - } - }, - { - "key": "f5", - "command": "workbench.action.terminal.sendSequence", - "when": "resourceExtname == .c", - "args": { - "text": "gcc -g \"${file}\" -o \"${fileDirname}/${fileBasenameNoExtension}\" && \"${fileDirname}/${fileBasenameNoExtension}\"\n" - } - }, - { - "key": "f5", - "command": "workbench.action.terminal.sendSequence", - "when": "resourceExtname == .asm", - "args": { - "text": "nasm -f elf64 \"${file}\" && ld -o \"${fileDirname}/${fileBasenameNoExtension}\" \"${fileDirname}/${fileBasenameNoExtension}.o\" && \"${fileDirname}/${fileBasenameNoExtension}\"\n" - } - }, - { - "key": "ctrl+i", - "command": "workbench.action.terminal.sendSequence", - "when": "resourceExtname == .cpp", - "args": { - "text": "g++ -g \"${file}\" -o \"${fileDirname}/${fileBasenameNoExtension}\" && \"${fileDirname}/${fileBasenameNoExtension}\" < ./i\n" - } - }, - { - "key": "ctrl+g", - "command": "workbench.action.terminal.sendSequence", - "when": "resourceExtname == .cpp", - "args": { - "text": "g++ -g \"${file}\" -o \"${fileDirname}/${fileBasenameNoExtension}\" -lgraph -lGL -lGLU -lglut && \"${fileDirname}/${fileBasenameNoExtension}\" 2>/dev/null\n" - } - }, - // { - // "key": "f5", - // "command": "workbench.action.tasks.runTask", - // "when": "resourceExtname == .cpp", - // "args": "Build and Run C++" - // }, - { - "key": "shift+f5", - "command": "workbench.action.terminal.sendSequence", - "when": "resourceExtname == .cpp", - "args": { - "text": "g++ -g \"${fileDirname}/*.cpp\" -o \"${fileDirname}/${fileBasenameNoExtension}\" && \"${fileDirname}/${fileBasenameNoExtension}\"\n" - } - }, - // { - // "key": "shift+f5", - // "command": "workbench.action.tasks.runTask", - // "when": "resourceExtname == .cpp", - // "args": "Build and Run C++ (Multiple cpp files)" - // }, - { - "key": "f4", - "command": "workbench.action.debug.continue", - "when": "inDebugMode" - }, - { - "key": "f4", - "command": "workbench.action.debug.start", - "when": "!inDebugMode" - }, - { - "key": "f4", - "command": "workbench.action.debug.start", - "when": "debuggersAvailable && !inDebugMode" - }, - { - "key": "f5", - "command": "-workbench.action.debug.continue", - "when": "inDebugMode" - }, - { - "key": "f5", - "command": "-workbench.action.debug.start", - "when": "!inDebugMode" - }, - { - "key": "f5", - "command": "-workbench.action.debug.start", - "when": "debuggersAvailable && !inDebugMode" - }, - { - "key": "shift+f4", - "command": "workbench.action.debug.stop", - "when": "inDebugMode" - }, - { - "key": "shift+f5", - "command": "-workbench.action.debug.stop", - "when": "inDebugMode" - }, - { - "key": "ctrl+v", - "command": "workbench.action.terminal.paste", - "when": "terminalFocus && terminalProcessSupported" - }, - { - "key": "ctrl+shift+v", - "command": "-workbench.action.terminal.paste", - "when": "terminalFocus && terminalProcessSupported" - }, - { - "key": "ctrl+alt+up", - "command": "editor.action.copyLinesUpAction", - "when": "editorTextFocus && !editorReadonly" - }, - { - "key": "ctrl+alt+down", - "command": "editor.action.copyLinesDownAction", - "when": "editorTextFocus && !editorReadonly" - }, - { - "key": "ctrl+shift+alt+up", - "command": "-editor.action.copyLinesUpAction", - "when": "editorTextFocus && !editorReadonly" - }, - { - "key": "ctrl+shift+alt+down", - "command": "-editor.action.copyLinesDownAction", - "when": "editorTextFocus && !editorReadonly" - }, - { - "key": "ctrl+,", - "command": "-workbench.action.openSettings" - }, - { - "key": "ctrl+,", - "command": "workbench.action.openSettingsJson" - }, - { - "key": "ctrl+i", - "command": "-editor.action.triggerSuggest", - "when": "editorHasCompletionItemProvider && textInputFocus && !editorReadonly" - }, - { - "key": "ctrl+c", - "command": "workbench.action.terminal.copySelection", - "when": "terminalFocus && terminalProcessSupported && terminalTextSelected && terminalTextSelected" - }, - { - "key": "ctrl+shift+c", - "command": "-workbench.action.terminal.copySelection", - "when": "terminalFocus && terminalProcessSupported && terminalTextSelected && terminalTextSelected" - }, - { - "key": "ctrl+k", - "command": "workbench.action.terminal.kill", - "when": "terminalIsOpen && terminalFocus" - }, - { - "key": "delete", - "command": "-workbench.action.terminal.killInstance", - "when": "terminalIsOpen && terminalTabsFocus || terminalProcessSupported && terminalTabsFocus" - }, - { - "key": "ctrl+shift+i", - "command": "-editor.action.formatDocument.none", - "when": "editorTextFocus && !editorHasDocumentFormattingProvider && !editorReadonly" - }, - { - "key": "ctrl+shift+i", - "command": "-notebook.formatCell", - "when": "editorHasDocumentFormattingProvider && editorTextFocus && inCompositeEditor && notebookEditable && !editorReadonly && activeEditor == 'workbench.editor.notebook'" - }, - { - "key": "ctrl+shift+i", - "command": "editor.action.formatDocument", - "when": "editorTextFocus" - }, - { - "key": "ctrl+shift+i", - "command": "-editor.action.formatDocument", - "when": "editorHasDocumentFormattingProvider && editorTextFocus && !editorReadonly && !inCompositeEditor" - }, - { - "key": "ctrl+shift+i", - "command": "workbench.action.toggleDevTools", - "when": "!editorTextFocus" - }, - { - "key": "ctrl+shift+i", - "command": "-workbench.action.toggleDevTools", - "when": "isDevelopment" - }, - { - "key": "ctrl+t", - "command": "-workbench.action.showAllSymbols" - }, - { - "key": "ctrl+t", - "command": "workbench.action.files.newUntitledFile" - }, - { - "key": "ctrl+n", - "command": "-workbench.action.files.newUntitledFile" - }, - { - "key": "ctrl+shift+m", - "command": "github.cweijan.mysql.focus" - }, - { - "key": "ctrl+shift+m", - "command": "-workbench.actions.view.problems", - "when": "workbench.panel.markers.view.active" - }, - { - "key": "ctrl+shift+0", - "command": "workbench.action.zoomReset" - }, - { - "key": "ctrl+numpad0", - "command": "-workbench.action.zoomReset" - } -] diff --git a/config/Code/User/settings.json b/config/Code/User/settings.json deleted file mode 100644 index 3fcd4610..00000000 --- a/config/Code/User/settings.json +++ /dev/null @@ -1,740 +0,0 @@ -{ - "workbench.colorCustomizations": { - "[Chromodynamics]": { - "terminal.background": "#060606", - "terminal.foreground": "#e0e0e0", - "terminal.selectionBackground": "#555555", - "titleBar.activeBackground": "#020202", - "titleBar.activeForeground": "#e0e0e0", - "titleBar.inactiveBackground": "#020202", - "titleBar.inactiveForeground": "#e0e0e0", - "tab.inactiveBackground": "#0b0b0b", - "editor.background": "#060606", - "editor.findMatchBorder": "#0c0c0d", - "editor.findMatchHighlightBorder": "#0c0c0d", - "editor.lineHighlightBackground": "#060606", - "editor.selectionBackground": "#222222", - "editor.selectionHighlightBackground": "#e4dddd", - "editor.selectionHighlightBorder": "#0c0c0d", - "editorGroupHeader.tabsBackground": "#0b0b0b", - "editorGutter.background": "#000000", - "sideBar.background": "#060606", - "sideBarSectionHeader.background": "#0b0b0b", - "statusBar.background": "#060606" - }, - "[Sweet Dracula]": { - "editorGroupHeader.tabsBackground": "#161925" - } - }, - "editor.tokenColorCustomizations": { - "[Chromodynamics]": { - "textMateRules": [ - { - "scope": [ - "constant.language.python", - "variable.parameter.function.language.special.self.python" - ], - "settings": { - "foreground": "#66D9EF" - } - }, - { - "scope": [ - "entity.name.function.operator", - "keyword.operator" - ], - "settings": { - "foreground": "#E8364F", - "fontStyle": "" - } - }, - { - "scope": [ - "punctuation.definition.template-expression.begin.js", - "punctuation.definition.template-expression.end.js" - ], - "settings": { - "foreground": "#da70d6", - "fontStyle": "italic" - } - }, - { - "scope": [ - "variable.other.readwrite.js" - ], - "settings": { - "foreground": "#c6c6c6", - "fontStyle": "" - } - } - ] - }, - "textMateRules": [ - { - "scope": [ - "entity.name.type.class", - "storage.type.class", - "storage.modifier", - "storage.type", - "constant", - "comment", - "keyword", - "invalid" - ], - "settings": { - "fontStyle": "italic" - } - } - ] - }, - // Window Settings - "window.commandCenter": false, - "window.menuBarVisibility": "toggle", - "window.newWindowDimensions": "maximized", - "window.restoreWindows": "preserve", - "window.title": "${activeEditorShort}${separator}${rootName}", - "window.titleBarStyle": "native", - "window.titleSeparator": " γƒ»ξŠ† ・", - "workbench.editor.enablePreviewFromQuickOpen": false, - "workbench.editor.highlightModifiedTabs": true, - "workbench.editor.restoreViewState": true, - "workbench.editor.sharedViewState": false, - "workbench.editor.showTabs": true, - "workbench.editor.tabCloseButton": "right", - "workbench.editor.tabSizing": "shrink", - "workbench.editor.untitled.hint": "hidden", - "workbench.iconTheme": "sweet-vscode-icons", - "workbench.layoutControl.type": "menu", - "workbench.list.smoothScrolling": true, - "workbench.panel.defaultLocation": "right", - "workbench.startupEditor": "none", - "workbench.statusBar.visible": true, - "workbench.editorAssociations": { - "*.ipynb": "jupyter-notebook" - }, - "workbench.reduceMotion": "off", - // Editor Settings - "editor.acceptSuggestionOnEnter": "smart", - "editor.autoClosingBrackets": "always", - "editor.bracketPairColorization.enabled": true, - "editor.codeActionsOnSave": { - "source.organizeImports": true - }, - "editor.colorDecorators": false, - "editor.cursorBlinking": "phase", - "editor.cursorSmoothCaretAnimation": "on", - "editor.cursorStyle": "line-thin", - "editor.detectIndentation": false, - "editor.emptySelectionClipboard": false, - "editor.fontFamily": "'Operator Mono SSm Lig Book', 'FiraCode Nerd Font', 'Hack Nerd Font Mono', 'codicon'", - "editor.fontVariations": true, - "editor.fontLigatures": "'ss01', 'ss02', 'ss03', 'ss04', 'ss05', 'ss06', 'zero', 'onum'", - "editor.fontSize": 12, - "editor.fontWeight": "normal", - "editor.formatOnSave": true, - "editor.formatOnType": true, - "editor.glyphMargin": true, - "editor.guides.bracketPairs": "active", - "editor.guides.bracketPairsHorizontal": "active", - "editor.guides.highlightActiveBracketPair": true, - "editor.hover.above": false, - "editor.inlayHints.enabled": "on", - "editor.inlineSuggest.enabled": true, - "editor.insertSpaces": true, - "editor.linkedEditing": true, - "editor.matchBrackets": "never", - "editor.maxTokenizationLineLength": 99999999, - "editor.minimap.enabled": false, - "editor.mouseWheelScrollSensitivity": 1.5, - "editor.occurrencesHighlight": false, - "editor.renderControlCharacters": true, - "editor.renderFinalNewline": "on", - "editor.renderLineHighlight": "gutter", - "editor.renderWhitespace": "none", - "editor.scrollbar.horizontal": "auto", - "editor.scrollbar.vertical": "auto", - "editor.selectionHighlight": true, - "editor.smoothScrolling": true, - "editor.stickyScroll.enabled": true, - "editor.stickyScroll.maxLineCount": 5, - "editor.stickyTabStops": false, - "editor.suggestLineHeight": 28, - "editor.suggestSelection": "first", - "editor.suggest.insertMode": "replace", - "editor.suggest.preview": true, - "editor.suggest.snippetsPreventQuickSuggestions": false, - "editor.tabCompletion": "on", - "editor.tabSize": 4, - "editor.wordBasedSuggestions": true, - "editor.wordBasedSuggestionsMode": "matchingDocuments", - "editor.wordWrap": "on", - "editor.quickSuggestions": { - "other": "on", - "comments": "on", - "strings": "on" - }, - // Emmet Settings - "emmet.excludeLanguages": [], - "emmet.includeLanguages": { - "javascript": "javascriptreact", - "markdown": "html", - "vue-html": "html" - }, - // Explorer Settings - "explorer.compactFolders": false, - "explorer.confirmDelete": false, - "explorer.confirmDragAndDrop": false, - // Files Explorer - "problems.decorations.enabled": false, - // Customize UI - // "customizeUI.activityBar": "bottom", - // "customizeUI.activityBarHideSettings": true, - // "customizeUI.listRowHeight": 20, - // "customizeUI.font.monospace": "CaskaydiaCove Nerd Font", - // "customizeUI.font.regular": "CaskaydiaCove Nerd Font", - // "customizeUI.fontSizeMap": { - // "13px": "12px", - // "monospace": "12px", - // "tab-title": "12px", - // "window-title": "12.5px" - // }, - // "customizeUI.titleBar": "inline", - // "customizeUI.stylesheet": { - // ":root,::after,::before": "--tab-height: 25px;--tab-radius: 8px;--ui-radius: 6px;--base-color: #bd93f9;--gradient-one: #c50ed2;--gradient-two: #8500f7;--side-pane-color: var(--vscode-editor-background);--focus-border: #3f4f81;--sash-size: 2px !important;--sash-hover-size: 2px !important;", - // ".editor-container": "-webkit-font-smoothing: antialiased;", - // ".monaco-workbench .part.editor > .content > .watermark": "display: none !important;", - // ".monaco-workbench .part.titlebar .window-controls-container .layout-dropdown-container": "margin-left: auto !important;", - // ".monaco-workbench .part.titlebar > .window-controls-container": "width: unset !important;", - // ".monaco-workbench .part.titlebar > .window-controls-container > .window-icon": "width: 30px !important;", - // ".monaco-workbench .part.titlebar > .titlebar-container .window-appicon > .home-bar-icon-badge, .monaco-workbench .part.titlebar > .titlebar-container > .window-appicon:not(.codicon)": "background-image: url(./vsc/vsc.svg) !important;", - // ".monaco-workbench .part.editor > .content .editor-group-container.empty .editor-group-letterpress": "background-image: url(./vsc/vsc-back.svg) !important;", - // ".monaco-workbench .part.editor.has-watermark > .content.empty .editor-group-container > .editor-group-letterpress": "background-position-y: 50% !important;", - // ".monaco-sash.hover:before, .monaco-sash.active:before": "background: linear-gradient(to bottom, var(--gradient-one), var(--gradient-two)) !important;", - // ".monaco-editor .squiggly-error": "background: none !important;border-bottom: 0.5px solid var(--vscode-editorError-foreground) !important;", - // ".monaco-editor .squiggly-warning": "background: none !important;border-bottom: 0.5px solid var(--vscode-editorWarning-foreground) !important;", - // ".monaco-editor .squiggly-info": "background: none !important;border-bottom: 0.5px solid var(--vscode-editorInfo-foreground) !important;", - // ".monaco-editor .squiggly-hint": "background: none !important;border-bottom: 0.5px solid var(--vscode-editorHint-foreground) !important;", - // "body.activity-bar-at-bottom .monaco-workbench .activitybar .active-item-indicator": "display: block !important;", - // ".monaco-workbench .activitybar > .content :not(.monaco-menu) > .monaco-action-bar .action-item.checked .active-item-indicator:before": "border: 0 !important;width: 100% !important;height: 3px !important;position: absolute !important;bottom: 0 !important;left: 0 !important;top: unset !important;background-image: linear-gradient(to top, var(--gradient-one), var(--gradient-two)) !important;border-radius: 100vmax !important;", - // ".monaco-workbench .part.editor > .content .editor-group-container > .title .tabs-container > .tab > .tab-border-bottom-container, .monaco-workbench .part.editor > .content .editor-group-container > .title .tabs-container > .tab > .tab-border-top-container": "background-image: linear-gradient(to left, var(--gradient-one), var(--gradient-two)) !important;height: 3px !important;", - // ".monaco-workbench .activitybar > .content :not(.monaco-menu) > .monaco-action-bar .badge .badge-content": "background-image: linear-gradient(90deg, var(--gradient-one), var(--gradient-two)) !important;", - // ".monaco-workbench .part.editor > .content .editor-group-container.active > .title .tabs-container > .tab.dirty > .tab-actions .action-label:not(:hover):before, .monaco-workbench .part.editor > .content .editor-group-container > .title .tabs-container > .tab.dirty > .tab-actions .action-label:not(:hover):before": "content: '' !important;", - // ".codicon-git-branch:before": "background: linear-gradient(to bottom, var(--gradient-one), var(--gradient-two)) !important;-webkit-background-clip: text !important;background-clip: text !important;color: rgba(255, 255, 255, 0.4) !important;", - // ".monaco-editor, .split-view-view .monaco-editor-background": "background: url(./vsc/pek.png) bottom right / 10% auto no-repeat scroll;", - // ".monaco-scrollable-element > .scrollbar > .slider": "border-radius: 7px !important;", - // ".monaco-scrollable-element > .scrollbar > .slider.active": "background: linear-gradient(to top, var(--gradient-one), var(--gradient-two)) !important;", - // "canvas.decorationsOverviewRuler, .monaco-scrollable-element > .scrollbar.vertical, .monaco-scrollable-element > .scrollbar.vertical > .slider": "width: 7px !important;", - // ".monaco-scrollable-element > .scrollbar.horizontal, .monaco-scrollable-element > .scrollbar.horizontal > .slider": "height: 7px !important;", - // ".monaco-scrollable-element > .scrollbar.horizontal > .slider": "width: 135px !important;", - // ".monaco-editor .monaco-hover, .monaco-editor .suggest-widget, .monaco-editor .suggest-details": "border-radius: var(--ui-radius) !important;overflow: hidden !important;box-shadow: rgb(0 0 0 / 36%) 0px 2px calc(var(--ui-radius) + 2px) !important;", - // ".pane .pane-body, .pane .pane-body .monaco-list, .pane .pane-body .monaco-list .monaco-scrollable-element, .pane .pane-body .monaco-list .monaco-scrollable-element .monaco-list-rows, .pane .pane-body .monaco-list .monaco-scrollable-element .monaco-list-rows .monaco-list-row": "overflow: visible !important;", - // ".open-editors .monaco-list .monaco-list-row": "padding-left: 0px !important;", - // ".monaco-list-row:hover, .monaco-list-row.selected, .monaco-list-row.focused": "border-radius: 0 var(--ui-radius) var(--ui-radius) 0 !important;", - // ".monaco-workbench .monaco-list:not(.element-focused):focus:before, .monaco-select-box, .monaco-select-box-dropdown-container, .monaco-select-box-dropdown-container .monaco-list-row:hover, .monaco-select-box-dropdown-container .monaco-list-row.selected, .monaco-select-box-dropdown-container .monaco-list-row.focused": "border-radius: var(--ui-radius) !important;", - // ".monaco-list-row.selected::before, .monaco-list-row.selected::after": "--ui-radius: 6px;content: '' !important;display: block !important;position: absolute !important;width: var(--ui-radius) !important;height: var(--ui-radius) !important;left: 0 !important;pointer-events: none !important;", - // ".monaco-list-row.selected::before": "top: calc(0px - var(--ui-radius)) !important;background: radial-gradient(circle at 100% 0%, transparent 70.71%, var(--side-pane-color) 29.289%) no-repeat;background-position: 100% 0%;", - // ".monaco-list-row.selected::after": "bottom: calc(0px - var(--ui-radius)) !important;background: radial-gradient(circle at 100% 100%, transparent 70.71%, var(--side-pane-color) 29.289%) no-repeat;background-position: 100% 100%;", - // ".monaco-button.monaco-text-button": "border-radius: var(--ui-radius) !important;", - // ".monaco-editor .cursors-layer.cursor-smooth-caret-animation > .cursor": "transition: all 100ms ease-out;", - // ".tab:first-child": "margin-left: var(--tab-radius) !important;", - // ".tab:last-child": "margin-right: var(--tab-radius) !important;", - // ".tab.active": "border-radius: var(--tab-radius) var(--tab-radius) 0 0 !important;", - // ".tab.dirty-border-top > .tab-border-top-container": "border-radius: var(--tab-radius) var(--tab-radius) 0 0 !important;", - // ".tab.active::before, .tab.active::after": "content: '' !important;display: block !important;box-sizing: border-box !important;position: absolute !important;z-index: 1;width: var(--tab-radius) !important;height: var(--tab-radius) !important;bottom: 0px !important;pointer-events: none !important;", - // ".tab.active::before": "left: calc(0px - var(--tab-radius)) !important;border-bottom-right-radius: var(--tab-radius) !important;box-shadow: 3px 3px 0 3px var(--vscode-editor-background) !important;", - // ".tab.active::after": "right: 0 !important;transform: translateX(var(--tab-radius)) !important;border-bottom-left-radius: var(--tab-radius) !important;box-shadow: -3px 3px 0 3px var(--vscode-editor-background) !important;", - // ".monaco-workbench .part.sidebar>.title>.title-label h2": "font-weight: bold !important;", - // "body.activity-bar-at-bottom div.monaco-grid-view > div > div > div.monaco-scrollable-element > div.split-view-container > div.split-view-view.visible > div > div > div.monaco-scrollable-element > div.split-view-container > div:nth-child(1) > div > div > div.monaco-scrollable-element > div.split-view-container > div:nth-child(2)": "height: auto !important;", - // "body.activity-bar-at-bottom .monaco-workbench .part.activitybar": "border: none !important; padding: 0px 6px 6px 6px !important;margin-top: -8px !important; background-color: var(--vscode-editor-background) !important; position: relative !important; z-index: 10 !important;", - // "body.activity-bar-at-bottom .monaco-workbench .activitybar.bordered:before": "display: none !important;", - // "body.activity-bar-at-bottom .monaco-workbench .activitybar > .content": "justify-content: center !important; border-radius: 6px; width: unset !important; border: 1px solid #3f4f818c !important;", - // "body.activity-bar-at-bottom .monaco-workbench .activitybar>.content>.composite-bar": "margin-bottom: unset !important;", - // "body.activity-bar-at-bottom .monaco-action-bar .action-item.icon > .action-label": "color: var(--vscode-editor-foreground) !important;opacity: 0.4;", - // "body.activity-bar-at-bottom .monaco-action-bar .action-item.icon.checked > .action-label": "opacity: 1 !important;", - // ".monaco-workbench .part.editor .tabs-and-actions-container .window-controls-container": "display: flex;flex-grow: 0;flex-shrink: 0;text-align: center; -webkit-app-region: no-drag; height: 100%;", - // ".monaco-workbench .part.editor .tabs-and-actions-container .window-controls-container .window-icon": "width: 30px !important;height: 30px !important; display: flex; align-items: center; justify-content: center;", - // ".monaco-workbench .part.editor .tabs-and-actions-container .window-controls-container .window-icon.window-close:hover": "background-color: #FF5555", - // }, - // Terminal Settings - "terminal.integrated.altClickMovesCursor": true, - "terminal.integrated.cursorBlinking": true, - "terminal.integrated.customGlyphs": true, - "terminal.integrated.cursorStyle": "line", - "terminal.integrated.enableMultiLinePasteWarning": false, - "terminal.integrated.fontFamily": "'CaskaydiaCove Nerd Font', 'FiraCode Nerd Font', 'Hack Nerd Font Mono'", - "terminal.integrated.fontSize": 13, - "terminal.integrated.gpuAcceleration": "auto", - "terminal.integrated.scrollback": 200000, - "terminal.integrated.smoothScrolling": true, - "terminal.integrated.tabs.enabled": false, - "terminal.integrated.tabs.enableAnimation": true, - "terminal.integrated.profiles.linux": { - "zsh": { - "path": "/usr/bin/zsh" - } - }, - "terminal.integrated.shellIntegration.enabled": false, - "terminal.integrated.shellIntegration.decorationsEnabled": "never", - // Language Settings - "[python]": { - "editor.semanticHighlighting.enabled": false - }, - "python.analysis.completeFunctionParens": true, - "python.analysis.typeCheckingMode": "off", - "python.formatting.provider": "black", - "python.formatting.blackArgs": [ - "--line-length", - "120" - ], - "python.languageServer": "Pylance", - "python.linting.ignorePatterns": [ - ".vscode/*.py", - "**/site-packages/**/*.py", - ".git" - ], - "python.linting.enabled": true, - "python.linting.pylintEnabled": false, - "python.linting.pylintArgs": [ - "--rcfile", - "${env:HOME}/.pylintrc" - // "--load-plugins=pylint_django" - ], - "ruff.args": [ - "--config=~/pyproject.toml" - ], - "[cpp]": { - "editor.semanticHighlighting.enabled": false - }, - "C_Cpp.default.includePath": [ - "${workspaceFolder}/**", - "/usr/include", - "/usr/local/include", - "/usr/include/c++/11.1.0", - "/opt/cuda/include/" - ], - "C_Cpp.default.defines": [ - "${default}" - ], - "C_Cpp.default.compilerPath": "/usr/bin/g++", - "C_Cpp.default.cppStandard": "c++20", - "C_Cpp.default.cStandard": "c17", - "C_Cpp.default.intelliSenseMode": "gcc-x64", - "C_Cpp.default.compilerArgs": [ - "-g" - ], - "launch": { - "version": "0.2.0", - "configurations": [ - { - "name": "(gdb) Launch", - "type": "cppdbg", - "request": "launch", - "program": "${fileDirname}/${fileBasenameNoExtension}", - "args": [], - "stopAtEntry": false, - "cwd": "${workspaceFolder}", - "environment": [], - "externalConsole": false, - "MIMode": "gdb", - "miDebuggerPath": "/usr/bin/gdb", - "preLaunchTask": "Build", - "setupCommands": [ - { - "description": "Enable pretty-printing for gdb", - "text": "-enable-pretty-printing", - "ignoreFailures": true - } - ] - } - ] - }, - "tasks": { - "version": "2.0.0", - "tasks": [ - { - "label": "Build", - "type": "shell", - "command": "g++ -g \"${file}\" -o \"${fileDirname}/${fileBasenameNoExtension}\"", - "problemMatcher": [ - "$gcc" - ], - "group": { - "kind": "build", - "isDefault": true - } - }, - { - "label": "Build (Multiple cpp files)", - "type": "shell", - "command": "g++ -g \"${fileDirname}/*.cpp\" -o \"${fileDirname}/${fileBasenameNoExtension}\"", - "problemMatcher": [ - "$gcc" - ], - "group": { - "kind": "build", - "isDefault": true - } - } - ] - }, - "C_Cpp.autocompleteAddParentheses": true, - "C_Cpp.codeFolding": "enabled", - "C_Cpp.clang_format_fallbackStyle": "{ BasedOnStyle: Google, IndentWidth: 4, ColumnLimit: 100}", - "C_Cpp.inlayHints.autoDeclarationTypes.enabled": true, - "C_Cpp.inlayHints.autoDeclarationTypes.showOnLeft": true, - "C_Cpp.inlayHints.parameterNames.enabled": true, - "C_Cpp.inlayHints.parameterNames.hideLeadingUnderscores": true, - "C_Cpp.inlayHints.parameterNames.suppressWhenArgumentContainsName": true, - "C_Cpp.inlayHints.referenceOperator.enabled": true, - "C_Cpp.inlayHints.referenceOperator.showSpace": false, - "css.format.enable": true, - "css.format.newlineBetweenRules": true, - "css.format.newlineBetweenSelectors": true, - "css.format.spaceAroundSelectorSeparator": true, - "[css]": { - "editor.tabSize": 2 - }, - "java.jdt.ls.java.home": "/usr/lib/jvm/java-11-openjdk-amd64", - "java.configuration.runtimes": [ - { - "name": "JavaSE-11", - "path": "/usr/lib/jvm/java-11-openjdk-amd64" - } - ], - "java.server.launchMode": "LightWeight", - "[html]": { - "editor.tabSize": 2 - }, - "html.autoClosingTags": true, - "html.completion.attributeDefaultValue": "singlequotes", - "[dart]": { - "editor.suggestSelection": "first", - "editor.tabCompletion": "onlySnippets", - "editor.wordBasedSuggestions": false - }, - "[javascript]": { - "editor.tabSize": 2 - }, - "javascript.autoClosingTags": true, - "javascript.suggest.autoImports": true, - "javascript.suggest.completeFunctionCalls": true, - "javascript.suggest.enabled": true, - "javascript.updateImportsOnFileMove.enabled": "always", - "javascript.validate.enable": false, - "[json]": { - "editor.tabSize": 2 - }, - "json.maxItemsComputed": 100000, - "[markdown]": { - "editor.quickSuggestions": { - "other": "on", - "comments": "on", - "strings": "on" - } - }, - "[scss]": { - "editor.tabSize": 2 - }, - "[typescript]": { - "editor.tabSize": 2 - }, - "typescript.autoClosingTags": true, - "typescript.suggest.autoImports": true, - "typescript.updateImportsOnFileMove.enabled": "always", - "typescript.validate.enable": false, - "[typescriptreact]": { - "editor.tabSize": 2, - "editor.formatOnSave": false - }, - "js/ts.implicitProjectConfig.checkJs": true, - //Latex - "[latex]": { - "editor.formatOnSave": false - }, - // Empty-Indent Extension - "emptyIndent.highlightColor": "rgba(246,36,89,0.6)", - "emptyIndent.highlightIndent": false, - "emptyIndent.removeIndent": true, - // Github Co-pilot - "github.copilot.inlineSuggest.enable": true, - "github.copilot.enable": { - "*": true, - "yaml": false, - "plaintext": true, - "markdown": false - }, - // Gitlens - "gitlens.currentLine.enabled": true, - "gitlens.hovers.currentLine.over": "line", - "gitlens.codeLens.enabled": false, - "gitlens.statusBar.enabled": true, - // General Setting\ - "color-highlight.markRuler": false, - "color-highlight.markerType": "background", - "debug.onTaskErrors": "showErrors", - "debug.openDebug": "openOnDebugBreak", - "eslint.enable": true, - "extensions.ignoreRecommendations": true, - "files.autoSave": "onWindowChange", - "files.insertFinalNewline": true, - "files.restoreUndoStack": true, - "files.trimFinalNewlines": true, - "files.trimTrailingWhitespace": true, - "git.autofetch": true, - "grammarly.files.include": [ - "**/*.md", - "**/*.txt", - "**/*.tex" - ], - "latex-workshop.latex.autoBuild.cleanAndRetry.enabled": true, - "latex-workshop.latex.autoBuild.run": "never", - "latex-workshop.latex.clean.fileTypes": [ - "*/*.aux", - "*/*.synctex.gz" - ], - "latex-workshop.latex.outDir": "/tmp/Review-Paper/", - "latex-workshop.latex.recipe.default": "latexmk (lualatex)", - "latex-workshop.latex.recipes": [ - { - "name": "latexmk πŸ”ƒ", - "tools": [ - "latexmk" - ] - }, - { - "name": "latexmk (latexmkrc)", - "tools": [ - "latexmk_rconly" - ] - }, - { - "name": "latexmk (lualatex)", - "tools": [ - "lualatexmk" - ] - }, - { - "name": "latexmk (xelatex)", - "tools": [ - "xelatexmk" - ] - }, - { - "name": "pdflatex ➞ bibtex ➞ pdflatexβ€ŠΓ—β€Š2", - "tools": [ - "pdflatex", - "bibtex", - "pdflatex", - "pdflatex" - ] - }, - { - "name": "Compile Rnw files", - "tools": [ - "rnw2tex", - "latexmk" - ] - }, - { - "name": "Compile Jnw files", - "tools": [ - "jnw2tex", - "latexmk" - ] - }, - { - "name": "tectonic", - "tools": [ - "tectonic" - ] - } - ], - "latex-workshop.latex.tools": [ - { - "name": "latexmk", - "command": "latexmk", - "args": [ - "-synctex=1", - "-interaction=nonstopmode", - "-file-line-error", - "-pdf", - "-outdir=%OUTDIR%", - "%DOC%" - ], - "env": {} - }, - { - "name": "lualatexmk", - "command": "latexmk", - "args": [ - "-synctex=1", - "-interaction=nonstopmode", - "-file-line-error", - "-lualatex", - "-outdir=%OUTDIR%", - "%DOC%" - ], - "env": {} - }, - { - "name": "xelatexmk", - "command": "latexmk", - "args": [ - "-synctex=1", - "-interaction=nonstopmode", - "-file-line-error", - "-xelatex", - "-outdir=%OUTDIR%", - "%DOC%" - ], - "env": {} - }, - { - "name": "latexmk_rconly", - "command": "latexmk", - "args": [ - "%DOC%" - ], - "env": {} - }, - { - "name": "pdflatex", - "command": "pdflatex", - "args": [ - "-synctex=1", - "-interaction=nonstopmode", - "-file-line-error", - "-output-directory=%OUTDIR%", - "%DOC%" - ], - "env": {} - }, - { - "name": "bibtex", - "command": "bibtex", - "args": [ - "%DOCFILE%" - ], - "env": {} - }, - { - "name": "rnw2tex", - "command": "Rscript", - "args": [ - "-e", - "knitr::opts_knit$set(concordance = TRUE); knitr::knit('%DOCFILE_EXT%')" - ], - "env": {} - }, - { - "name": "jnw2tex", - "command": "julia", - "args": [ - "-e", - "using Weave; weave(\"%DOC_EXT%\", doctype=\"tex\")" - ], - "env": {} - }, - { - "name": "jnw2texmintex", - "command": "julia", - "args": [ - "-e", - "using Weave; weave(\"%DOC_EXT%\", doctype=\"texminted\")" - ], - "env": {} - }, - { - "name": "tectonic", - "command": "tectonic", - "args": [ - "--synctex", - "--keep-logs", - "%DOC%.tex" - ], - "env": {} - } - ], - "liveServer.settings.donotShowInfoMsg": true, - "liveServer.settings.donotVerifyTags": true, - "liveServer.settings.file": "404.html", - // "liveServer.settings.https": { - // "enable": true, - // "cert": "/home/proxzima/.ssh/cert/cert.pem", - // "key": "/home/proxzima/.ssh/cert/key.pem", - // "passphrase": "1234" - // }, - "liveServer.settings.useLocalIp": true, - "markdown.preview.markEditorSelection": true, - "markdown.preview.scrollEditorWithPreview": false, - "markdown.preview.scrollPreviewWithEditor": false, - "svgPreview.autoOpen": true, - "svgPreview.scaleToFit": true, - "svgPreview.style": { - "html": { - "background-position": "0 0, 13px 13px", - "background-size": "26px 26px", - "background": "rgba(255, 255, 255, 1)" - // "background-image": "linear-gradient(45deg, #141414 25%, transparent 25%, transparent 75%, #141414 75%, #141414), linear-gradient(45deg, #141414 25%, transparent 25%, transparent 75%, #141414 75%, #141414)" - } - }, - "print.folder.exclude": [ - "{bin,obj,out}", - "node_module", - "**/*.{bin,exe,dll,hex,pdb,pdf,pfx,png,jpg,gif,bmp,suo,pptx,ppt,jar,woff2,woff,ttf,eot,odt,otf,class}" - ], - "print.lineNumbers": "on", - "print.printAndClose": false, - "print.colourScheme": "XCode", - "print.alternateBrowser": true, - "print.browserPath": "/usr/bin/google-chrome", - "spellright.documentTypes": [ - "markdown", - "latex", - "plaintext" - ], - "spellright.language": [ - "en_GB" - ], - "spellright.notificationClass": "information", - "spellright.suggestionsInHints": false, - "spellright.useDocumentSymbolsInCode": true, - "telemetry.telemetryLevel": "off", - "search.exclude": { - "**/bower_components": true, - "**/*.code-search": true, - "**/node_modules": true, - "**/env": true, - "**/venv": true - }, - "files.associations": { - "*.xml": "html", - "*.svg": "html", - "*.json": "jsonc" - }, - "files.exclude": { - "**/.DS_Store": true, - "**/.git": true, - "**/.svn": true, - "**/.hg": true, - "**/CVS": true, - "**/.classpath": true, - "**/.project": true, - "**/.settings": true, - "**/.factorypath": true - }, - "files.watcherExclude": { - "**/.DS_Store/**": true, - "**/.git/objects/**": true, - "**/.git/subtree-cache/**": true, - "**/.svn/**": true, - "**/.hg/**": true, - "**/CVS/**": true, - "**/node_modules/**": true, - "**/env/**": true, - "**/venv/**": true, - "env-*": true - }, - "workbench.colorTheme": "Sweet Dracula", - "security.workspace.trust.untrustedFiles": "open" -} diff --git a/config/Code/User/snippets/snippet.code-snippets b/config/Code/User/snippets/snippet.code-snippets deleted file mode 100644 index c6cfa712..00000000 --- a/config/Code/User/snippets/snippet.code-snippets +++ /dev/null @@ -1,126 +0,0 @@ -{ - // Place your global snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and - // description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope - // is left empty or omitted, the snippet gets applied to all languages. The prefix is what is - // used to trigger the snippet and the body will be expanded and inserted. Possible variables are: - // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. - // Placeholders with the same ids are connected. - // Example: - "if name is main": { - "scope": "python", - "prefix": "ifn", - "body": [ - "if __name__ == '__main__':", - "\t$0" - ], - "description": "" - }, - "for in": { - "scope": "python", - "prefix": "fori", - "body": [ - "for ${1:item} in ${2:items}:", - "\t$0" - ], - "description": "" - }, - "for in range": { - "scope": "python", - "prefix": "forr", - "body": [ - "for ${1:i} in range($2):", - "\t$0" - ], - "description": "" - }, - "lambda": { - "scope": "python", - "prefix": "lamb", - "body": [ - "lambda ${1:arg} : $0", - ], - "description": "" - }, - "map input": { - "scope": "python", - "prefix": "mapi", - "body": [ - "map(${1:func}, input($2).split())" - ], - "description": "" - }, - "html boiler plate": { - "scope": "html", - "prefix": "html", - "body": [ - "", - "", - "", - "", - " ", - " ", - "", - " ${1:Basic HTML5}", - " ", - " ", - "", - " ", - " ", - " ", - " ", - " ", - "", - " ", - " ", - " ", - "", - " ", - "", - "", - "", - "", - " ${0:}", - " ", - "", - "", - "", - ], - "description": "" - }, - "css boiler plate": { - "scope": "css", - "prefix": "css", - "body": [ - "html {", - " font-family: sans-serif;", - " font-size: 100%;", - " box-sizing: border-box;", - "}", - "", - "*, ::before, ::after {", - " box-sizing: inherit;", - "}", - "", - "html, body {", - " margin: 0;", - " padding: 0;", - " width: 100vw;", - " min-height: 100%;", - " text-rendering: optimizeLegibility;", - "}", - "" - ] - }, - "consoleLog": { - "scope": "javascript", - "prefix": "clg", - "body": "console.log(${1:object});", - "description": "Displays a message in the console" - }, - "consoleLogObject": { - "scope": "javascript", - "prefix": "clo", - "body": "console.log('${1:object} :>> ', ${1:object});", - "description": "Displays an object in the console with its name" - } -} diff --git a/config/Code/User/spellright.dict b/config/Code/User/spellright.dict deleted file mode 100644 index 1fab5c0d..00000000 --- a/config/Code/User/spellright.dict +++ /dev/null @@ -1,14 +0,0 @@ -PROxZIMA -gui -url -yara -backend -txt -Regex -github -args -grep -res -yar -shipit -json diff --git a/config/Code/User/vsc.css b/config/Code/User/vsc.css deleted file mode 100644 index 9a341a39..00000000 --- a/config/Code/User/vsc.css +++ /dev/null @@ -1,1424 +0,0 @@ -/* *:not(.monaco-editor .margin):not(.monaco-editor .lines-content.monaco-editor-background):not(.monaco-editor .cursors-layer.cursor-smooth-caret-animation > .cursor):not(.monaco-scrollable-element > .scrollbar.vertical > .slider):not(.monaco-scrollable-element > .scrollbar.horizontal > .slider):not(.pane .pane-body .monaco-list .monaco-scrollable-element .monaco-list-rows) { - transition-duration: 100ms !important; -} */ - -:root, -::after, -::before { - --tab-height: 25px; - --tab-radius: 8px; - --ui-radius: 6px; - --base-color: #bd93f9; - --gradient-one: #cba6f7; - --gradient-two: #89b4fa; - --side-pane-color: var(--vscode-editor-background); - --focus-border: #3f4f81; - --sash-size: 2px !important; - --sash-hover-size: 2px !important; -} - -body > .monaco-workbench > .monaco-grid-view > .monaco-grid-branch-node > .monaco-split-view2 > .monaco-scrollable-element > .split-view-container { - background: var(--vscode-editor-background) !important; -} - -.editor-container { - -webkit-font-smoothing: antialiased; -} - -.monaco-workbench .part.titlebar .window-controls-container .window-icon, -.monaco-workbench .part.editor > .content > .watermark { - display: none !important; -} - -.monaco-workbench .part.editor .tabs-and-actions-container .window-controls-container { - display: flex; - flex-grow: 0; - flex-shrink: 0; - text-align: center; - -webkit-app-region: no-drag; - height: 100%; -} - -.monaco-workbench .part.editor .tabs-and-actions-container .window-controls-container .window-icon { - width: 30px !important; - height: 30px !important; - display: flex; - align-items: center; - justify-content: center; -} - -.monaco-workbench .part.editor .tabs-and-actions-container .window-controls-container .window-icon.window-close:hover { - background: #FF5555 !important; -} - -.monaco-workbench .part.titlebar .window-controls-container .layout-dropdown-container { - margin-left: auto !important; -} - -.monaco-workbench .part.titlebar > .window-controls-container { - width: unset !important; -} - -.monaco-workbench .part.titlebar > .window-controls-container > .window-icon { - width: 30px !important; -} - -.monaco-workbench.linux .part.titlebar > .window-title { - font-size: 12.5px !important; -} - -.monaco-workbench .part.titlebar > .titlebar-container .window-appicon > .home-bar-icon-badge, -.monaco-workbench .part.titlebar > .titlebar-container > .window-appicon:not(.codicon) { - background-image: url(./vsc/vsc.svg) !important; -} - -.monaco-workbench .part.editor > .content .editor-group-container.empty .editor-group-letterpress { - background-image: url(./vsc/vsc-back.svg) !important; -} - -.monaco-workbench .part.editor.has-watermark > .content.empty .editor-group-container > .editor-group-letterpress { - background-position-y: 50% !important; -} - -.mac, -.windows, -.linux { - /* font-family: 'CaskaydiaCove Nerd Font' !important; - --monaco-monospace-font: 'CaskaydiaCove Nerd Font' !important; */ - /* font-family: 'Delugia' !important; - --monaco-monospace-font: 'Delugia Mono' !important; */ -} - - -.monaco-workbench .part.sidebar > .title > .title-label h2 { - font-weight: bold !important; -} - -.monaco-sash.hover:before, -.monaco-sash.active:before { - background: linear-gradient(to bottom, var(--gradient-one), var(--gradient-two)) !important; -} - -/* Squiggly lines to straight lines */ - -.monaco-editor .squiggly-error { - background: none !important; - border-bottom: 0.5px solid var(--vscode-editorError-foreground) !important; -} - -.monaco-editor .squiggly-warning { - background: none !important; - border-bottom: 0.5px solid var(--vscode-editorWarning-foreground) !important; -} - -.monaco-editor .squiggly-info { - background: none !important; - border-bottom: 0.5px solid var(--vscode-editorInfo-foreground) !important; -} - -.monaco-editor .squiggly-hint { - background: none !important; - border-bottom: 0.5px solid var(--vscode-editorHint-foreground) !important; -} - -/* */ - -/* Gradient Tab border */ -body.activity-bar-at-bottom .monaco-workbench .activitybar .active-item-indicator { - display: block !important; -} - -.monaco-workbench .activitybar > .content :not(.monaco-menu) > .monaco-action-bar .action-item.checked .active-item-indicator:before { - border: 0 !important; - width: 3px !important; - height: 100% !important; - position: absolute !important; - top: 0 !important; - left: 0 !important; - background-image: linear-gradient(to top, var(--gradient-one), var(--gradient-two)) !important; - border-radius: 100vmax !important; -} - -.monaco-workbench .part.editor > .content .editor-group-container > .title .tabs-container > .tab > .tab-border-bottom-container, -.monaco-workbench .part.editor > .content .editor-group-container > .title .tabs-container > .tab > .tab-border-top-container { - background-image: linear-gradient(to left, var(--gradient-one), var(--gradient-two)) !important; - height: 3px !important; - display: none !important; -} - -.monaco-workbench .activitybar > .content :not(.monaco-menu) > .monaco-action-bar .badge .badge-content { - background-image: linear-gradient(90deg, var(--gradient-one), var(--gradient-two)) !important; -} - -/* */ - -/* Hides dirty tab white dot indicator */ - -.monaco-workbench .part.editor > .content .editor-group-container.active > .title .tabs-container > .tab.dirty > .tab-actions .action-label:not(:hover):before, -.monaco-workbench .part.editor > .content .editor-group-container > .title .tabs-container > .tab.dirty > .tab-actions .action-label:not(:hover):before { - content: '' !important; -} - -/* */ - -/* Git icon background */ - -.codicon-git-branch:before { - background: linear-gradient(to bottom, var(--gradient-one), var(--gradient-two)) !important; - -webkit-background-clip: text !important; - background-clip: text !important; - color: rgba(255, 255, 255, 0.4) !important; -} - -/* */ - -/* Editor Background */ - -.monaco-editor, -.split-view-view .lines-content.monaco-editor-background { - background: url(./vsc/pek.png) bottom right / 10% auto no-repeat scroll; - /*background: linear-gradient(rgba(0,0,0,.65), rgba(0,0,0,.65)), url(./vsc/bg.jpg) center center / auto 100vh no-repeat scroll;*/ -} - -/* */ - -/* Scrollbar */ -.monaco-scrollable-element > .scrollbar > .slider { - border-radius: 7px !important; -} - -.monaco-scrollable-element > .scrollbar > .slider.active { - background: linear-gradient(to top, var(--gradient-one), var(--gradient-two)) !important; -} - -canvas.decorationsOverviewRuler, -.monaco-scrollable-element > .scrollbar.vertical, -.monaco-scrollable-element > .scrollbar.vertical > .slider { - width: 7px !important; -} - -.monaco-scrollable-element > .scrollbar.vertical > .slider { - transition: all 100ms ease-out; -} - -.monaco-scrollable-element > .scrollbar.horizontal, -.monaco-scrollable-element > .scrollbar.horizontal > .slider { - height: 7px !important; -} - -.monaco-scrollable-element > .scrollbar.horizontal > .slider { - transition: all 100ms ease-out; -} - -.monaco-scrollable-element > .scrollbar.horizontal > .slider { - width: 135px !important; -} - -/* */ - -/* Rounded UI */ - -/* Suggestions */ -.monaco-editor .monaco-hover, -.monaco-editor .suggest-widget, -.monaco-editor .suggest-details { - border-radius: var(--ui-radius) !important; - overflow: hidden !important; - box-shadow: rgb(0 0 0 / 36%) 0px 2px calc(var(--ui-radius) + 2px) !important; -} - -/* Left pane selected file */ -.pane .pane-body, -.pane .pane-body .monaco-list, -.pane .pane-body .monaco-list .monaco-scrollable-element, -.pane .pane-body .monaco-list .monaco-scrollable-element .monaco-list-rows, -.pane .pane-body .monaco-list .monaco-scrollable-element .monaco-list-rows .monaco-list-row { - overflow: visible !important; -} - -.open-editors .monaco-list .monaco-list-row { - padding-left: 0px !important; -} - -.monaco-list-row:hover, -.monaco-list-row.selected, -.monaco-list-row.focused { - border-radius: 0 var(--ui-radius) var(--ui-radius) 0 !important; -} - -.monaco-workbench .monaco-list:not(.element-focused):focus:before, -.monaco-select-box, -.monaco-select-box-dropdown-container, -.monaco-select-box-dropdown-container .monaco-list-row:hover, -.monaco-select-box-dropdown-container .monaco-list-row.selected, -.monaco-select-box-dropdown-container .monaco-list-row.focused { - border-radius: var(--ui-radius) !important; -} - -.monaco-list-row.selected::before, -.monaco-list-row.selected::after { - content: '' !important; - display: block !important; - position: absolute !important; - width: var(--ui-radius) !important; - height: var(--ui-radius) !important; - left: 0 !important; - pointer-events: none !important; -} - -.monaco-list-row.selected::before { - top: calc(0px - var(--ui-radius)) !important; - background: radial-gradient(circle at 100% 0%, transparent 70.71%, var(--side-pane-color) 29.289%) no-repeat; - background-position: 100% 0%; -} - -.monaco-list-row.selected::after { - bottom: calc(0px - var(--ui-radius)) !important; - background: radial-gradient(circle at 100% 100%, transparent 70.71%, var(--side-pane-color) 29.289%) no-repeat; - background-position: 100% 100%; -} - -.monaco-button.monaco-text-button { - border-radius: var(--ui-radius) !important; -} - -/* */ - -/* Smooth cursor */ - -.monaco-editor .cursors-layer.cursor-smooth-caret-animation > .cursor { - transition: all 100ms ease-out; -} - -/* */ - -/* Active tab (Without border) */ - -..tab:first-child { - margin-left: var(--tab-radius) !important; - /* margin-left: calc(var(--tab-radius) - 2px) !important; */ -} - -..tab:last-child { - margin-right: var(--tab-radius) !important; - /* margin-right: calc(var(--tab-radius) - 2px) !important; */ -} - -..tab.active { - /* border: 2px solid var(--base-color) !important; */ - /* background-color: transparent !important; */ - /* rgb(20, 24, 34) */ - border-radius: var(--tab-radius) var(--tab-radius) 0 0 !important; - /* border-bottom: 2px solid #0c0e14 !important; */ - /* z-index: 1 !important; */ -} - -.tab.dirty-border-top > .tab-border-top-container { - border-radius: var(--tab-radius) var(--tab-radius) 0 0 !important; -} - -ignorethispart { - - /* Border bottom radius */ - .tab.active::before, - .tab.active::after { - content: '' !important; - display: block !important; - box-sizing: border-box !important; - position: absolute !important; - z-index: 1; - width: var(--tab-radius) !important; - height: var(--tab-radius) !important; - bottom: 0px !important; - /* bottom: -2px !important; */ - pointer-events: none !important; - /* border-bottom: 2px solid var(--base-color) !important; */ - } - - .tab.active::before { - left: calc(0px - var(--tab-radius)) !important; - /* transform: translateX(calc(0px - var(--tab-radius))) !important; */ - /* border-right: 2px solid var(--base-color) !important; */ - border-bottom-right-radius: var(--tab-radius) !important; - /* box-shadow: 3px 3px 0 3px var(--tab-color) !important; */ - box-shadow: 3px 3px 0 3px var(--vscode-editor-background) !important; - /* background: radial-gradient(circle at 0% 0%, transparent 70.71%, var(--tab-color) 29.289%) no-repeat; - background-position: 0% 0%; */ - } - - .tab.active::after { - right: 0 !important; - transform: translateX(var(--tab-radius)) !important; - /* border-left: 2px solid var(--base-color) !important; */ - border-bottom-left-radius: var(--tab-radius) !important; - /* box-shadow: -3px 3px 0 3px var(--tab-color) !important; */ - box-shadow: -3px 3px 0 3px var(--vscode-editor-background) !important; - /* background: radial-gradient(circle at 100% 0%, transparent 70.71%, var(--tab-color) 29.289%) no-repeat; - background-position: 100% 0%; */ - } - - /* .tabs-container:before { - content: '' !important; - top: 0 !important; - left: 0 !important; - right: 0 !important; - bottom: 0 !important; - background: linear-gradient(90deg, rgb(12, 14, 20), rgb(189, 172, 255), rgb(189, 147, 249), rgb(189, 147, 249), rgb(189, 147, 249), rgb(189, 172, 249), rgb(12, 14, 20)) !important; - clip: rect(33px, 2600px, 33px, 0px) !important; - position: absolute !important; -} - -.tabs-container:after { - content: '' !important; - top: 0 !important; - left: 0 !important; - right: 0 !important; - bottom: 0 !important; - background: linear-gradient(90deg, rgb(12, 14, 20), rgb(189, 172, 255), rgb(189, 147, 249), rgb(189, 147, 249), rgb(189, 147, 249), rgb(189, 172, 249), rgb(12, 14, 20)) !important; - clip: rect(33px, 2600px, 35px, 0px) !important; - position: absolute !important; -} - -.tab-label > .monaco-icon-label-container::after { - background: transparent !important; -} */ -} - -.tab { - border-radius: 12px !important; - margin: 5px !important; - height: 40px !important; - border: 2px solid #313244 !important; - background-color: #161925 !important; -} - -.tab.active { - border: 2px solid var(--gradient-one) !important; - color: var(--gradient-one) !important; - font-weight: bold !important; -} - -.tab.dirty { - border: 2px solid var(--gradient-two) !important; - -} - -.tabs-container { - height: auto !important; - padding: 5px !important; -} - -.editor-actions { - height: inherit !important; -} - - - - - - - - -ignorethispart { - /* ATOM */ - - .part.editor > .content .editor-group-container > .title:not(.tabs).dirty .codicon-close-dirty { - color: #568af2 !important; - } - - - /* .monaco-workbench.vs-dark .part.editor>.content .editor-group-container .editor-group-watermark>.shortcuts dl, */ - .monaco-workbench .part.editor > .content .editor-group-container > .editor-group-watermark > .shortcuts dd > .monaco-keybinding, - .monaco-workbench.vs-dark .part.editor > .content .editor-group-container .editor-group-watermark > .shortcuts dt { - color: hsla(219, 13%, 66%, .6) !important; - } - - - - ::placeholder { - color: #9da5b4 !important; - opacity: 1 !important; - } - - - /* NOTE: badge count may be off-centred when workbench font is changed */ - /* .windows { */ - /* .monaco-workbench { -font-family: 'Iosevka', 'Victor Mono', 'JetBrains Mono', 'SF Mono', 'Input Mono', 'Hack', 'Dank Mono', 'Fira Code', 'Operator Mono', 'Source Code Pro', 'IBM Plex Mono', 'Courier New', Courier, monospace; -} */ - - - /* tab label */ - - .monaco-workbench .part.editor > .content .editor-group-container > .title .tabs-container > .tab .tab-label { - text-align: center !important; - } - - .monaco-workbench .part.editor > .content .editor-group-container > .title .tabs-container > .tab.sizing-fit .monaco-icon-label, - .monaco-workbench .part.editor > .content .editor-group-container > .title .tabs-container > .tab.sizing-fit .monaco-icon-label > .monaco-icon-label-container { - overflow: hidden !important; - } - - .monaco-workbench .part.editor > .content .editor-group-container > .title .tabs-container > .tab.sizing-fit .monaco-icon-label[class*="untitled-"] { - font-style: italic !important; - } - - - /* caret, cursor */ - - .monaco-inputbox.synthetic-focus .input { - contain: paint; - caret-color: #568af2; - } - - .suggest-input-container > .monaco-editor.focused .cursor { - /* .monaco-editor.focused .cursor { */ - border-color: #568af2; - border-width: 2px; - border-left: 2px solid #528bff; - } - - - /* PANEL */ - - /* action label */ - - .monaco-workbench .part.basepanel > .composite.title > .panel-switcher-container > .monaco-action-bar .action-item .action-label { - display: block !important; - } - - .monaco-workbench .part.basepanel > .composite.title > .panel-switcher-container > .monaco-action-bar .action-item .action-label { - color: #9da5b4 !important; - text-transform: lowercase; - } - - .monaco-workbench .part.basepanel > .composite.title > .panel-switcher-container > .monaco-action-bar .action-item .action-label::first-letter { - text-transform: uppercase !important; - } - - .part.panel.basepanel.bottom { - color: #9da5b4 !important; - } - - - /* PANEL end. */ - - - - /* editor hover widget */ - - .monaco-editor .parameter-hints-widget.multiple, - .monaco-editor .monaco-hover { - color: #9da5b4 !important; - border-radius: 3px !important; - } - - - /* panel indicator */ - - .part.basepanel > .composite.title > .panel-switcher-container > .monaco-action-bar .action-item .active-item-indicator:before { - border: none !important; - } - - - /* extension name */ - - .extension-list-item > .details > .description { - color: rgba(157, 165, 180, 0.6) !important; - } - - .extension-list-item > .details > .footer > .author > .publisher-name { - color: rgba(157, 165, 180, 0.6) !important; - } - - - /* workbench hover widget */ - - .monaco-workbench .workbench-hover { - border-radius: 3px !important; - background: #4d78cc !important; - color: #fff !important; - border-color: #4d78cc !important; - } - - .monaco-workbench .workbench-hover-pointer:after { - background-color: #4d78cc !important; - border-color: #4d78cc !important; - /*border-right: 1px solid #181a1f !important; - border-bottom: 1px solid #181a1f !important;*/ - } - - - /* settings (UI) */ - - .settings-editor > .settings-header > .settings-header-controls { - border-color: #181a1f !important; - } - - - /* checkbox */ - - .settings-editor > .settings-body .settings-tree-container .setting-item-bool .codicon-check::before, - .settings-editor > .settings-body .settings-tree-container .setting-item-bool .setting-value-checkbox::after { - color: #001133 !important; - } - - /* .settings-editor>.settings-body .settings-tree-container .setting-item-bool .setting-value-checkbox.checked, */ - .settings-editor > .settings-body .settings-tree-container .setting-item-bool .codicon-check.checked { - background-color: #568af2 !important; - } - - - /* status bar */ - - .monaco-workbench .part.statusbar { - border-top: 1px solid #181a1f !important; - } - - - /* sidebar */ - - .part.sidebar.left, - .part.sidebar.right { - color: #9da5b4 !important; - } - - .sidebar.right { - border-left: 1px solid #181a1f !important; - } - - .sidebar.left { - border-right: 1px solid #181a1f; - } - - - /* .codicon, */ - - .codicon-notifications-clear-all, - .codicon-notifications-do-not-disturb, - .codicon-notifications-hide, - .codicon-gear, - - .codicon-edit, - .codicon-new-folder, - .codicon-refresh, - - .codicon-watch-expressions-add-function-breakpoint, - .codicon-breakpoints-activate, - .codicon-breakpoints-remove-all, - .codicon-collapse-all, - .codicon-watch-expressions-add, - .codicon-watch-expressions-remove-all, - - .codicon-debug-console-evaluation-prompt, - /*.codicon-split-horizontal,*/ - .codicon-terminal-bash, - .codicon-terminal-cmd, - .codicon-terminal-powershell, - .codicon-trashcan, - .codicon-debug, - - .codicon-preferences-clear-input, - .codicon-preferences-filter, - .codicon-preferences-open-settings, - .codicon-search-refresh, - - .codicon-new-file, - .codicon-save-all, - .codicon-close-all, - .codicon-expand-all, - .codicon-timeline-pin, - .codicon-timeline-refresh, - .codicon-timeline-filter, - .codicon-localHistory-icon, - - .extension-action.icon, - .codicon-extension-activation-time, - .codicon-extensions-install-count, - .codicon-view-pane-container-expanded, - .codicon-view-pane-container-collapsed, - .codicon-preserve-case, - .codicon-book, - .codicon-exclude, - - .codicon-widget-close, - .codicon-find-previous-match, - .codicon-find-next-match, - .codicon-find-replace, - .codicon-find-replace-all, - .codicon-find-collapsed, - .codicon-find-expanded, - .codicon-search-replace-all, - .codicon-search-hide-replace, - .codicon-search-show-replace, - .codicon-split-vertical, - .codicon-split-horizontal, - .codicon-toolbar-more, - .codicon-terminal, - .codicon-panel-maximize, - .codicon-panel-restore { - color: #9da5b4 !important; - } - - - /* breadcrumbs */ - /* .monaco-breadcrumbs .monaco-breadcrumb-item { - color: var(--vscode-breadcrumb-foreground); -} */ - - - /* select box */ - - .monaco-action-bar .action-item .monaco-select-box { - color: #9da5b4 !important; - } - - - /* search, extension */ - - .suggest-input-container .suggest-input-placeholder, - .search-view .search-widget .monaco-inputbox .input::placeholder { - /* .search-view .search-widget .monaco-inputbox>.ibwrapper>textarea.input::placeholder { */ - color: #9da5b4 !important; - /* opacity: 1 !important; */ - } - - .search-view .message { - color: #9da5b4 !important; - } - - .codicon-search-show-context, - .codicon-preserve-case, - .codicon-book, - .codicon-exclude { - color: #9da5b4 !important; - border-color: #181a1f !important; - background-color: #373d48 !important; - } - - .codicon-search-show-context.checked, - .codicon-preserve-case.checked, - .codicon-book.checked, - .codicon-exclude.checked { - color: #fff !important; - border-color: #181a1f !important; - background-color: #568af2 !important; - } - - - /* find widget */ - - .monaco-editor .find-widget.no-results > .find-part .monaco-inputbox.synthetic-focus .input { - caret-color: #ff6347; - } - - .monaco-editor .find-widget.no-results .matchesCount { - color: #ff6347; - } - - .monaco-editor .find-widget.no-results > .find-part .monaco-inputbox.synthetic-focus { - border-color: #ff6347 !important; - box-shadow: 0 0 0 1px #ff6347 !important; - background-color: #312426 !important; - } - - .monaco-editor .find-widget, - .monaco-editor .find-widget .monaco-findInput .input::placeholder { - color: #9da5b4 !important; - } - - .codicon-case-sensitive, - .codicon-whole-word, - .codicon-regex { - color: #9da5b4 !important; - border-color: #181a1f !important; - background-color: #373d48 !important; - } - - .codicon-case-sensitive.checked, - .codicon-whole-word.checked, - .codicon-regex.checked { - color: #fff !important; - border-color: #181a1f !important; - background-color: #568af2 !important; - } - - - /* tab (for panel && editor) */ - - .monaco-workbench .part.basepanel.bottom > .composite.title > .panel-switcher-container > .monaco-action-bar .action-item:first-of-type, - .tabs-container > .tab:first-of-type { - border-left-color: transparent; - } - - .monaco-workbench .part.panel.basepanel.bottom .composite.title, - .editor-group-container > .title .tabs-container { - box-shadow: inset 0 -1px 0 #181a1f; - } - - .monaco-workbench .part.basepanel.bottom > .composite.title > .panel-switcher-container > .monaco-action-bar .action-item.icon:last-of-type { - box-shadow: none !important; - border-left: none !important; - } - - .monaco-workbench .part.basepanel.bottom > .composite.title > .panel-switcher-container > .monaco-action-bar .action-item:last-of-type, - .tabs-container > .tab:last-of-type { - box-shadow: inset 0 -1px 0 #181a1f, 1px 0 0 #181a1f; - } - - .monaco-workbench .part.basepanel.bottom > .composite.title > .panel-switcher-container > .monaco-action-bar .action-item.checked:last-of-type, - .tabs-container > .tab.active:last-of-type { - box-shadow: 1px 0 0 #181a1f; - } - - .monaco-workbench .part.basepanel.bottom > .composite.title > .panel-switcher-container > .monaco-action-bar .action-item, - .monaco-workbench .part.basepanel.bottom > .composite.title > .panel-switcher-container > .monaco-action-bar .action-item.checked, - .tabs-container > .tab, - .tabs-container > .tab.active { - flex: 1 1 0; - max-width: 22em; - min-width: 7em !important; - } - - .monaco-workbench .part.basepanel.bottom > .composite.title > .panel-switcher-container > .monaco-action-bar .action-item.checked, - .tabs-container > .tab.active { - color: #d7dae0; - background-color: #282c34; - box-shadow: none; - width: -webkit-fit-content; - } - - .monaco-workbench .part.basepanel.bottom > .composite.title > .panel-switcher-container > .monaco-action-bar .action-item, - .tabs-container > .tab { - border-left: 1.4px solid #181a1f; - border-right: none !important; - transition: max-width 0.25s ease-in-out; - box-shadow: inherit; - } - - - /* active tab(editor, panel) border */ - - .monaco-workbench .part.panel:focus-within > .composite.title > .panel-switcher-container > .monaco-action-bar .action-item.checked .action-label::before, - .monaco-workbench .part.panel > .composite.title > .panel-switcher-container > .monaco-action-bar .action-item.checked:active .action-label::before, - .part.editor > .content .editor-group-container:focus-within .tabs-container > .tab.active:before { - background: #568af2; - } - - .monaco-workbench .part.panel > .composite.title > .panel-switcher-container > .monaco-action-bar .action-item.checked .action-label::before, - .part.editor > .content .active .tabs-container > .tab.active:before { - content: ""; - position: absolute; - pointer-events: none; - z-index: 2; - top: 0; - left: -1px; - bottom: 0; - width: 2px; - background: #4f545e; - box-sizing: border-box; - } - - - .part.editor > .content .split-view-view:not(:first-child) .active .tabs-container > .tab.active:before { - left: 0 !important; - } - - - /* tab close btn */ - - .tabs-container > .tab.dirty:not(:hover) .codicon-close::before { - content: "\ea71" !important; - /* display: inline-block; */ - } - - .tabs-container > .tab .codicon-close::before { - content: "\ea76" !important; - } - - .codicon-panel-close, - .tabs-container > .tab .codicon-close { - border-radius: 3px; - transform: scale(0); - transition: transform .08s; - } - - .tabs-container > .tab.dirty:not(:hover) .codicon-close { - color: #568af2 !important; - border-radius: 3px; - border: none; - transform: scale(1); - } - - .part.basepanel > .title:has(.title-actions:hover) .codicon-panel-close, - .part.basepanel > .title > .global-actions:hover .codicon-panel-close, - .tabs-container > .tab:hover .codicon-close { - transform: scale(1); - transition-duration: .16s; - } - - .codicon-panel-close:hover, - .tabs-container > .tab .codicon-close:hover { - color: #001133 !important; - background-color: #568af2 !important; - } - - .tabs-container > .tab.dirty:hover .codicon-close:hover { - color: #fff !important; - } - - .tabs-container > .tab.dirty:hover .codicon-close { - color: #568af2 !important; - } - - - /* button border */ - - .monaco-button.monaco-text-button { - border: 1px solid #181a1f; - } - - - - /* keybinding label */ - - - .quick-input-list .monaco-keybinding > .monaco-keybinding-key:has(~ .monaco-keybinding-key-separator) { - margin-right: 0 !important; - } - - .quick-input-list .monaco-keybinding > .monaco-keybinding-key:has(+ .monaco-keybinding-key-chord-separator) { - border-top-right-radius: 3px !important; - border-bottom-right-radius: 3px !important; - } - - .quick-input-list .monaco-keybinding > .monaco-keybinding-key-chord-separator + .monaco-keybinding-key { - border-top-left-radius: 3px !important; - border-bottom-left-radius: 3px !important; - } - - .quick-input-list .monaco-keybinding > .monaco-keybinding-key:first-child { - border-top-left-radius: 3px !important; - border-bottom-left-radius: 3px !important; - } - - .quick-input-list .monaco-keybinding > .monaco-keybinding-key:last-child { - border-top-right-radius: 3px !important; - border-bottom-right-radius: 3px !important; - } - - .quick-input-list .monaco-keybinding > .monaco-keybinding-key { - margin-left: 0; - } - - /* .quick-input-list .monaco-keybinding>.monaco-keybinding-key-separator:has(~ .monaco-keybinding-key) { - margin-left: 0 !important; - } */ - - .monaco-keybinding { - line-height: 2 !important; - } - - .quick-input-list .monaco-keybinding > .monaco-keybinding-key, - .quick-input-list .monaco-keybinding > .monaco-keybinding-key-separator { - color: #fff !important; - background-color: #4d78cc !important; - } - - .quick-input-list .monaco-keybinding > .monaco-keybinding-key-separator { - line-height: 22px !important; - } - - .quick-input-list .monaco-keybinding > .monaco-keybinding-key { - /* border-radius: 3px; */ - border-radius: 0; - border: transparent !important; - box-shadow: none !important; - padding: 0 0.375em !important; - } - - - /* center count-badge */ - - .extensions-viewlet > .extensions .extension-view-header .count-badge-wrapper { - display: flex !important; - align-items: center !important; - } - - .extension-list-item > .icon-container .extension-badge { - display: flex !important; - align-items: center !important; - } - - - /* notifications center header */ - - .monaco-workbench > .notifications-center > .notifications-center-header > .notifications-center-header-title { - color: #9da5b4 !important; - } - - /* notifications toolbar */ - - .notification-list-item .notification-list-item-toolbar-container .action-item .codicon { - /* color: inherit !important; */ - color: black !important; - opacity: .4 !important; - background: none !important; - } - - .notification-list-item .notification-list-item-toolbar-container .action-item .codicon:hover { - opacity: 1 !important; - } - - - /* notifications */ - - :where(.notifications-list-container) .monaco-list-row:has( :is(.codicon-error)) { - color: #7a1200 !important; - background-color: #e89d96 !important; - } - - :where(.notifications-list-container) .monaco-list-row:has( :is(.codicon-warning)) { - color: #835b21 !important; - background-color: #f3bf44 !important; - } - - :where(.notifications-list-container) .monaco-list-row:has( :is(.codicon-info)) { - color: #0e3377 !important; - background-color: #7ebef7 !important; - } - - - - /* notifications buttons */ - - - .notifications-list-container .monaco-list-row:has(.codicon-info) .monaco-text-button { - color: #d7dae0 !important; - text-shadow: none !important; - border: 1px solid #181a1f !important; - background-color: #0f82e6 !important; - background-image: linear-gradient(#0f87f0, #0f82e6) !important; - color: white !important; - } - - .notifications-list-container .monaco-list-row:has(.codicon-info) .monaco-text-button:hover { - color: #ffffff !important; - background-image: linear-gradient(#1e8ef1, #1489f0) !important; - } - - .notifications-list-container .monaco-list-row:has(.codicon-info) .monaco-text-button:active { - background: #0d77d3 !important; - box-shadow: none !important; - } - - .notifications-list-container .monaco-list-row:has(.codicon-info) .monaco-text-button:focus { - outline: none !important; - } - - .notifications-list-container .monaco-list-row:has(.codicon-info) .monaco-text-button:hover, - .notifications-list-container .monaco-list-row:has(.codicon-info) .monaco-text-button:focus { - color: white !important; - } - - .notifications-list-container .monaco-list-row:has(.codicon-info) .monaco-text-button:focus { - border-color: transparent !important; - background-clip: padding-box !important; - box-shadow: inset 0 0 0 1px rgba(24, 26, 31, 0.5), 0 0 0 1px #0f82e6 !important; - } - - .notifications-list-container .monaco-list-row:has(.codicon-warning) .monaco-text-button { - color: #d7dae0 !important; - text-shadow: none !important; - border: 1px solid #181a1f !important; - background-color: #ad7c0b !important; - background-image: linear-gradient(#b6830c, #ad7c0b) !important; - color: white !important; - } - - .notifications-list-container .monaco-list-row:has(.codicon-warning) .monaco-text-button:hover { - color: #ffffff !important; - background-image: linear-gradient(#c58d0d, #bb860c) !important; - } - - .notifications-list-container .monaco-list-row:has(.codicon-warning) .monaco-text-button:active { - background: #996e0a !important; - box-shadow: none !important; - } - - .notifications-list-container .monaco-list-row:has(.codicon-warning) .monaco-text-button:focus { - outline: none !important; - } - - .notifications-list-container .monaco-list-row:has(.codicon-warning) .monaco-text-button:hover, - .notifications-list-container .monaco-list-row:has(.codicon-warning) .monaco-text-button:focus { - color: white !important; - } - - .notifications-list-container .monaco-list-row:has(.codicon-warning) .monaco-text-button:focus { - border-color: transparent !important; - background-clip: padding-box !important; - box-shadow: inset 0 0 0 1px rgba(24, 26, 31, 0.5), 0 0 0 1px #ad7c0b !important; - } - - .notifications-list-container .monaco-list-row:has(.codicon-error) .monaco-text-button { - color: #d7dae0 !important; - text-shadow: none !important; - border: 1px solid #181a1f !important; - background-color: #d13b2e !important; - background-image: linear-gradient(#d34336, #d13b2e) !important; - color: white !important; - } - - .notifications-list-container .monaco-list-row:has(.codicon-error) .monaco-text-button:hover { - color: #ffffff !important; - background-image: linear-gradient(#d64f43, #d4473a) !important; - } - - .notifications-list-container .monaco-list-row:has(.codicon-error) .monaco-text-button:active { - background: #c0372a !important; - box-shadow: none !important; - } - - .notifications-list-container .monaco-list-row:has(.codicon-error) .monaco-text-button:focus { - outline: none !important; - } - - .notifications-list-container .monaco-list-row:has(.codicon-error) .monaco-text-button:hover, - .notifications-list-container .monaco-list-row:has(.codicon-error) .monaco-text-button:focus { - color: white !important; - } - - .notifications-list-container .monaco-list-row:has(.codicon-error) .monaco-text-button:focus { - border-color: transparent !important; - background-clip: padding-box !important; - box-shadow: inset 0 0 0 1px rgba(24, 26, 31, 0.5), 0 0 0 1px #d13b2e !important; - } - - - /* scrollbar */ - - canvas.decorationsOverviewRuler, - .monaco-scrollable-element > .scrollbar.vertical, - .monaco-scrollable-element > .vertical > .slider { - width: 10px !important; - } - - .monaco-scrollable-element > .scrollbar.horizontal, - .monaco-scrollable-element > .horizontal > .slider { - height: 10px !important; - } - - .quick-input-list > .monaco-list > .monaco-scrollable-element > .visible, - .quick-input-list > .monaco-list > .monaco-scrollable-element > .invisible.vertical { - background: #21252b !important; - } - - .monaco-scrollable-element > .visible, - .monaco-scrollable-element > .invisible.fade { - transition: none !important; - } - - /*.monaco-scrollable-element>.invisible.fade,*/ - .quick-input-list > .monaco-list > .monaco-scrollable-element > .invisible.vertical.fade { - opacity: 1 !important; - pointer-events: all !important; - } - - .monaco-scrollable-element > .scrollbar > .slider { - box-sizing: border-box !important; - border-radius: 5px !important; - border: 3px solid !important; - border-color: rgba(40, 44, 52, 0) !important; - /* background: #4b5362 !important; */ - background-color: rgba(75, 83, 98, 1) !important; - background-clip: content-box !important; - } - - .quick-input-list > .monaco-list > .monaco-scrollable-element > .scrollbar > .slider { - background: #4b5362 !important; - border-color: #21252b !important; - } - - .monaco-scrollable-element > .vertical > .slider:active { - border-radius: 0 !important; - border-left-width: 0 !important; - border-right-width: 0 !important; - } - - .monaco-scrollable-element > .horizontal > .slider:active { - border-radius: 0 !important; - border-top-width: 0 !important; - border-bottom-width: 0 !important; - } - - .quick-input-widget { - top: 50px !important; - /* no margin here. */ - box-sizing: border-box !important; - color: #9da5b4; - padding-bottom: 0.75em !important; - box-shadow: 0 6px 12px -2px rgba(0, 0, 0, 0.4), 0 0 0 100vw rgba(8, 9, 10, 0.75) !important; - } - - /* .quick-input-header { - display: flex; - padding: 0.75em; -} */ - - .quick-input-widget.hidden-input .quick-input-header { - padding: 0 !important; - margin-bottom: 0 !important; - } - - .quick-input-header { - /* display: flex; */ - padding: 0.75em !important; - } - - .quick-input-list .monaco-scrollable-element { - margin: 0 !important; - padding: 0 !important; - } - - .quick-input-widget.hidden-input .quick-input-list { - margin-top: 0.75em !important; - } - - .quick-input-list { - display: block !important; - border: 1.5px solid #181a1f !important; - position: relative !important; - overflow-y: auto !important; - max-height: 312px !important; - /* margin: 0 0.75em 0.75em !important; */ - margin: 0 0.75em 0 !important; - padding: 0 !important; - list-style: none !important; - cursor: default !important; - } - - .quick-input-list .monaco-list { - max-height: 312px !important; - margin: 0 !important; - padding: 0 !important; - } - - .quick-input-list .monaco-list .monaco-list-rows { - background-color: #292d35 !important; - } - - .quick-input-list .monaco-list-row.focused { - /* color: #d7dae0; */ - background-color: #3a3f4b !important; - } - - .quick-input-list .monaco-list .monaco-list-row { - position: static !important; - height: auto !important; - display: block !important; - padding: 0.75em 1em !important; - line-height: 2em !important; - border-bottom: 1.5px solid #181a1f !important; - border-radius: 0 !important; - color: #9da5b4; - } - - .quick-input-list .monaco-list-row:last-of-type { - border-bottom: none !important; - } - - .monaco-findInput > div { - overflow: visible !important; - } - - .suggest-input-container, - .monaco-inputbox.idle { - border: 1px solid #181a1f !important; - background-color: #1b1d23 !important; - border-radius: 3px !important; - } - - /* .monaco-editor.focused, */ - .suggest-input-container.synthetic-focus, - .monaco-inputbox.synthetic-focus { - overflow: visible !important; - outline: none !important; - border-color: #568af2 !important; - box-shadow: 0 0 0 1px #568af2 !important; - background-color: #202634 !important; - } - - .monaco-editor .suggest-widget > .message { - border-radius: 3px; - padding-bottom: 1em; - background-color: #252830; - } - - .monaco-editor .suggest-widget { - background: transparent !important; - border: none !important; - position: fixed; - /* z-index: 12; */ - contain: layout style; - display: block; - } - - .monaco-editor .suggest-widget .monaco-list { - position: relative; - margin-left: -39px; - width: auto !important; - background-color: #252830 !important; - box-shadow: 0 2px 8px 1px rgba(0, 0, 0, 0.3); - border-radius: 3px; - min-width: 243px; - padding: 0; - overflow: hidden; - color: #9da5b4; - } - - .monaco-editor .suggest-widget .monaco-list-rows { - background-color: transparent; - border: none; - padding: 0; - position: relative; - overflow-y: scroll; - margin-top: 0; - display: table; - width: 100%; - margin-right: 10px; - list-style: none; - cursor: default; - } - - .monaco-editor .suggest-widget .monaco-list-row { - display: table-row; - color: #9da5b4; - line-height: 2em; - /* padding-left: 0.375em; */ - padding-left: 0; - white-space: nowrap; - } - - .monaco-editor .suggest-widget .monaco-list-row.focused { - background-color: #3a3f4b !important; - } - - /* .monaco-editor .suggest-widget .codicon[class*=-variable] { */ - /* .monaco-editor .suggest-widget .codicon-symbol-snippet[class*=codicon-] { */ - .monaco-editor .suggest-widget .codicon[class*=codicon-] { - color: rgba(157, 165, 180, 0.6); - background: rgba(157, 165, 180, 0.1); - /* .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-function] { */ - font-size: 14px; - display: inline-block !important; - height: inherit; - min-width: 2em; - padding-left: 0; - margin-right: 0.75em !important; - line-height: 2em; - text-align: center; - font-style: normal; - font-weight: bold; - } - - .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-attribute] { - color: #d19a66 !important; - background: rgba(209, 154, 102, 0.2); - } - - .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-builtin] { - color: #c678dd !important; - background: rgba(198, 120, 221, 0.2); - } - - .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-class] { - color: #e5c07b !important; - background: rgba(229, 192, 123, 0.2); - } - - .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-constant] { - color: #d19a66 !important; - background: rgba(209, 154, 102, 0.2); - } - - .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-function] { - color: #61afef !important; - background: rgba(97, 175, 239, 0.2); - } - - .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-import] { - color: #c678dd !important; - background: rgba(198, 120, 221, 0.2); - } - - .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-keyword] { - color: #c678dd !important; - background: rgba(198, 120, 221, 0.2); - } - - .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-method] { - color: #61afef !important; - background: rgba(97, 175, 239, 0.2); - } - - .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-module] { - color: #c678dd !important; - background: rgba(198, 120, 221, 0.2); - } - - .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-mixin] { - color: #e5c07b !important; - background: rgba(229, 192, 123, 0.2); - } - - .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-package] { - color: #c678dd !important; - background: rgba(198, 120, 221, 0.2); - } - - .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-property] { - color: #abb2bf !important; - background: rgba(171, 178, 191, 0.2); - } - - .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-require] { - color: #c678dd !important; - background: rgba(198, 120, 221, 0.2); - } - - .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-snippet] { - color: #98c379 !important; - background: rgba(152, 195, 121, 0.2); - } - - .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-tag] { - color: #e06c75 !important; - background: rgba(224, 108, 117, 0.2); - } - - .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-type] { - color: #e5c07b !important; - background: rgba(229, 192, 123, 0.2); - } - - .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-value] { - color: #abb2bf !important; - background: rgba(171, 178, 191, 0.2); - } - - .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-variable] { - color: #e06c75 !important; - background: rgba(224, 108, 117, 0.2); - } - - .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-selector] { - color: #d19a66 !important; - background: rgba(209, 154, 102, 0.2); - } - - .monaco-editor .suggest-widget .codicon[class*=codicon-symbol-pseudo-selector] { - color: #d19a66 !important; - background: rgba(209, 154, 102, 0.2); - } -} diff --git a/config/Code/User/vsc.js b/config/Code/User/vsc.js deleted file mode 100644 index a14bf5ab..00000000 --- a/config/Code/User/vsc.js +++ /dev/null @@ -1,100 +0,0 @@ -function getOffset(el) { - const rect = el.getBoundingClientRect(); - return { - left: rect.left + window.scrollX, - top: rect.top + window.scrollY, - }; -} - -const prevOffset = {}; - -const displayEffect = (event) => { - if (prevOffset.top === undefined) { - let initialOffset = getOffset(document.getElementsByClassName("cursor")[0]); - prevOffset.top = initialOffset.top; - prevOffset.left = initialOffset.left; - } - - const existingRect = document.getElementById("myRect"); - if (existingRect !== null) { - existingRect.remove(); - } - - setTimeout(function () { - const currOffset = getOffset(document.getElementsByClassName("cursor")[0]); - const top = prevOffset.top; - const left = prevOffset.left; - const rect = document.createElement("div"); - - // console.log("prev: ", top, left); - // console.log("curr: ", currOffset.top, currOffset.left); - - rect.id = "myRect"; - rect.style.cssText = ` - position:absolute; - top:${top}px; - left:${left}px; - width:9px; - height:20px; - z-index:10; - background-color:red; - opacity: 0.5; - `; - rect.animate( - [ - // keyframes - { transform: "scale(1) skew(10deg)" }, - { transform: "scale(0) skew(10deg)" }, - ], - { - // timing options - duration: 500, - easing: "ease-in-out", - direction: "alternate", - iterations: Infinity, - } - ); - - document.body.appendChild(rect); - prevOffset.top = currOffset.top; - prevOffset.left = currOffset.left; - }, 24); -}; - -// NOTE: First enable editor.cursorSmoothCaretAnimation. -// NOTE: Uncomment this to get a cursor trail effect. -// document.addEventListener("keydown", displayEffect); - -const windowControls = document.createElement('div'); -windowControls.className = 'window-controls-container'; -const minimize = document.createElement('div'); -minimize.classList.add('window-icon', 'window-minimize', 'codicon', 'codicon-chrome-minimize'); -const restore = document.createElement('div'); -restore.classList.add('window-icon', 'window-max-restore', 'codicon', 'codicon-chrome-restore'); -const close = document.createElement('div'); -close.classList.add('window-icon', 'window-close', 'codicon', 'codicon-chrome-close'); -windowControls.appendChild(minimize); -windowControls.appendChild(restore); -windowControls.appendChild(close); -// const html = '
'; -// template.innerHTML = html; -// const windowControls = template.content.firstChild; - -var observer = new MutationObserver(function (mutations, me) { - console.warn('Observing if window controls present'); - // const windowControls = document.querySelector(".window-controls-container"); - const tabContainer = document.querySelector(".tabs-and-actions-container"); - - if (windowControls && tabContainer) { - tabContainer.appendChild(windowControls); - console.warn('Observing completed'); - me.disconnect(); - return; - } -}); - - -// observer.observe(document, { -// childList: true, -// subtree: true -// }); diff --git a/config/VSCodium/User/extensions.txt b/config/VSCodium/User/extensions.txt new file mode 100644 index 00000000..36ef6bdd --- /dev/null +++ b/config/VSCodium/User/extensions.txt @@ -0,0 +1,40 @@ +alefragnani.project-manager +amodio.toggle-excluded-files +astro-build.astro-vscode +asvetliakov.vscode-neovim +bmalehorn.vscode-fish +bradlc.vscode-tailwindcss +BrandonKirbyson.vscode-animations +Catppuccin.catppuccin-vsc +charliermarsh.ruff +Codeium.codeium +DavidAnson.vscode-markdownlint +dbaeumer.vscode-eslint +drcika.apc-extension +dsznajder.es7-react-js-snippets +eamodio.gitlens +esbenp.prettier-vscode +ExodiusStudios.comment-anchors +formulahendry.code-runner +golang.go +humao.rest-client +jrebocho.vscode-random +mads-hartmann.bash-ide-vscode +ms-azuretools.vscode-docker +ms-python.python +ms-python.vscode-pylance +petekinnecom.terminal-command-keys +rafamel.subtle-brackets +redhat.ansible +redhat.vscode-yaml +rust-lang.rust-analyzer +streetsidesoftware.code-spell-checker +sumneko.lua +svelte.svelte-vscode +thang-nm.catppuccin-perfect-icons +timonwong.shellcheck +usernamehw.errorlens +VSpaceCode.whichkey +Vue.volar +yandeu.five-server +ziglang.vscode-zig diff --git a/config/VSCodium/User/keybindings.json b/config/VSCodium/User/keybindings.json new file mode 100644 index 00000000..58da7442 --- /dev/null +++ b/config/VSCodium/User/keybindings.json @@ -0,0 +1,303 @@ +[ + { + "key": "ctrl+shift+b", + "command": "workbench.action.toggleActivityBarVisibility" + }, + { + "key": "ctrl+shift+[Backslash]", + "command": "workbench.action.toggleStatusbarVisibility" + }, + { + "key": "ctrl+shift+i", + "command": "-editor.action.formatDocument.none", + "when": "editorTextFocus && !editorHasDocumentFormattingProvider && !editorReadonly" + }, + { + "key": "ctrl+meta+numpad_add", + "command": "editor.action.formatDocument", + "when": "editorHasDocumentFormattingProvider && editorTextFocus && !editorReadonly && !inCompositeEditor" + }, + { + "key": "ctrl+shift+i", + "command": "-editor.action.formatDocument", + "when": "editorHasDocumentFormattingProvider && editorTextFocus && !editorReadonly && !inCompositeEditor" + }, + { + "key": "ctrl+shift+m", + "command": "-workbench.actions.view.problems", + "when": "workbench.panel.markers.view.active" + }, + { + "key": "ctrl+numpad_divide", + "command": "bookmarks.toggle", + "when": "editorTextFocus" + }, + { + "key": "ctrl+alt+k", + "command": "-bookmarks.toggle", + "when": "editorTextFocus" + }, + { + "key": "ctrl+1", + "command": "-workbench.action.focusFirstEditorGroup" + }, + { + "key": "ctrl+1", + "command": "extension.liveServer.goOnline", + "when": "editorTextFocus" + }, + { + "key": "alt+l alt+o", + "command": "-extension.liveServer.goOnline", + "when": "editorTextFocus" + }, + { + "key": "shift+f11", + "command": "-workbench.action.debug.stepOut", + "when": "debugState == 'stopped'" + }, + { + "key": "f11 f11", + "command": "workbench.action.toggleZenMode" + }, + { + "key": "ctrl+k z", + "command": "-workbench.action.toggleZenMode" + }, + { + "key": "shift+f11", + "command": "workbench.action.debug.stepIntoTarget", + "when": "inDebugMode && stepIntoTargetsSupported && debugState == 'stopped'" + }, + { + "key": "ctrl+f11", + "command": "-workbench.action.debug.stepIntoTarget", + "when": "inDebugMode && stepIntoTargetsSupported && debugState == 'stopped'" + }, + { + "key": "ctrl+b", + "command": "-lineHighlightBookmark.toogleBookmarks", + "when": "editorTextFocus" + }, + { + "key": "ctrl+t", + "command": "-workbench.action.showAllSymbols" + }, + { + "key": "ctrl+\\", + "command": "workbench.action.terminal.toggleTerminal", + "when": "terminal.active" + }, + { + "key": "ctrl+`", + "command": "-workbench.action.terminal.toggleTerminal", + "when": "terminal.active" + }, + { + "key": "ctrl+alt+p", + "command": "workbench.action.showAllEditors" + }, + { + "key": "ctrl+k ctrl+p", + "command": "-workbench.action.showAllEditors" + }, + { + "key": "ctrl+shift+o", + "command": "workbench.action.files.openFolder", + "when": "openFolderWorkspaceSupport" + }, + { + "key": "ctrl+k ctrl+o", + "command": "-workbench.action.files.openFolder", + "when": "openFolderWorkspaceSupport" + }, + { + "key": "shift+alt+left", + "command": "-editor.action.smartSelect.shrink", + "when": "editorTextFocus" + }, + { + "key": "ctrl+shift+t", + "command": "workbench.action.toggleTabsVisibility" + }, + { + "key": "ctrl+shift+t", + "command": "-workbench.action.reopenClosedEditor" + }, + { + "key": "ctrl+shift+b", + "command": "-workbench.action.tasks.build", + "when": "taskCommandsRegistered" + }, + { + "key": "ctrl+k left", + "command": "-workbench.action.moveActiveEditorGroupLeft" + }, + { + "key": "ctrl+alt+left", + "command": "-workbench.action.moveEditorToPreviousGroup" + }, + { + "key": "ctrl+alt+right", + "command": "-workbench.action.moveEditorToNextGroup" + }, + { + "key": "ctrl+k right", + "command": "-workbench.action.moveActiveEditorGroupRight" + }, + { + "key": "ctrl+k up", + "command": "-workbench.action.moveActiveEditorGroupUp" + }, + { + "key": "ctrl+k down", + "command": "-workbench.action.moveActiveEditorGroupDown" + }, + { + "key": "ctrl+alt+down", + "command": "workbench.action.moveEditorToBelowGroup" + }, + { + "key": "ctrl+alt+up", + "command": "workbench.action.moveEditorToAboveGroup" + }, + { + "key": "ctrl+alt+left", + "command": "workbench.action.moveEditorToLeftGroup" + }, + { + "key": "ctrl+alt+right", + "command": "workbench.action.moveEditorToRightGroup" + }, + { + "key": "ctrl+m", + "command": "editor.action.toggleMinimap" + }, + { + "key": "ctrl+shift+m", + "command": "-rust-analyzer.matchingBrace", + "when": "editorTextFocus && editorLangId == 'rust'" + }, + { + "key": "ctrl+m", + "command": "-markdown.extension.editing.toggleMath", + "when": "editorTextFocus && !editorReadonly && editorLangId =~ /^markdown$|^rmd$|^quarto$/" + }, + { + "key": "ctrl+m", + "command": "-editor.action.toggleTabFocusMode" + }, + { + "key": "ctrl+d", + "command": "-vscode-neovim.ctrl-d", + "when": "editorTextFocus && neovim.ctrlKeysNormal && neovim.init && neovim.mode != 'insert'" + }, + { + "key": "ctrl+u", + "command": "-vscode-neovim.ctrl-u", + "when": "editorTextFocus && neovim.ctrlKeysNormal && neovim.init && neovim.mode != 'insert'" + }, + { + "key": "ctrl+f", + "command": "-vscode-neovim.ctrl-f", + "when": "editorTextFocus && neovim.ctrlKeysNormal && neovim.init && neovim.mode != 'insert'" + }, + { + "key": "ctrl+b", + "command": "-vscode-neovim.ctrl-b", + "when": "editorTextFocus && neovim.ctrlKeysNormal && neovim.init && neovim.mode != 'insert'" + }, + { + "command": "vscode-neovim.send", + "key": "ctrl+d", + "when": "editorTextFocus && neovim.init && neovim.mode != insert || neovim.recording", + "args": "" + }, + { + "command": "vscode-neovim.send", + "key": "ctrl+u", + "when": "editorTextFocus && neovim.init && neovim.mode != insert || neovim.recording", + "args": "" + }, + { + "command": "vscode-neovim.send", + "key": "ctrl+f", + "when": "editorTextFocus && neovim.init && neovim.mode != insert || neovim.recording", + "args": "" + }, + { + "command": "vscode-neovim.send", + "key": "ctrl+b", + "when": "editorTextFocus && neovim.init && neovim.mode != insert || neovim.recording", + "args": "" + }, + { + "key": "ctrl+d", + "command": "-vscode-neovim.ctrl-d", + "when": "editorTextFocus && neovim.ctrlKeysNormal && neovim.init && neovim.mode != 'insert'" + }, + { + "key": "ctrl+u", + "command": "-vscode-neovim.ctrl-u", + "when": "editorTextFocus && neovim.ctrlKeysNormal && neovim.init && neovim.mode != 'insert'" + }, + { + "key": "ctrl+f", + "command": "-vscode-neovim.ctrl-f", + "when": "editorTextFocus && neovim.ctrlKeysNormal && neovim.init && neovim.mode != 'insert'" + }, + { + "key": "ctrl+b", + "command": "-vscode-neovim.ctrl-b", + "when": "editorTextFocus && neovim.ctrlKeysNormal && neovim.init && neovim.mode != 'insert'" + }, + { + "command": "vscode-neovim.send", + "key": "ctrl+d", + "when": "editorTextFocus && neovim.init && neovim.mode != insert || neovim.recording", + "args": "" + }, + { + "command": "vscode-neovim.send", + "key": "ctrl+u", + "when": "editorTextFocus && neovim.init && neovim.mode != insert || neovim.recording", + "args": "" + }, + { + "command": "vscode-neovim.send", + "key": "ctrl+f", + "when": "editorTextFocus && neovim.init && neovim.mode != insert || neovim.recording", + "args": "" + }, + { + "command": "vscode-neovim.send", + "key": "ctrl+b", + "when": "editorTextFocus && neovim.init && neovim.mode != insert || neovim.recording", + "args": "" + }, + { + "key": "shift+h", + "command": "toggleexcludedfiles.toggle", + "when": "filesExplorerFocus" + }, + { + "key": "ctrl+shift+a", + "command": "-toggleexcludedfiles.toggle", + "when": "filesExplorerFocus" + }, + { + "key": "alt+enter", + "command": "-notebook.cell.executeAndInsertBelow", + "when": "notebookCellListFocused && notebookCellType == 'markup' || notebookCellListFocused && notebookMissingKernelExtension && !notebookCellExecuting && notebookCellType == 'code' || notebookCellListFocused && !notebookCellExecuting && notebookCellType == 'code' && notebookKernelCount > 0 || notebookCellListFocused && !notebookCellExecuting && notebookCellType == 'code' && notebookKernelSourceCount > 0" + }, + { + "key": "alt+enter", + "command": "editor.action.inlineSuggest.commit", + "when": "inlineSuggestionHasIndentationLessThanTabSize && inlineSuggestionVisible && !editorHoverFocused && !editorTabMovesFocus && !suggestWidgetVisible" + }, + { + "key": "tab", + "command": "-editor.action.inlineSuggest.commit", + "when": "inlineSuggestionHasIndentationLessThanTabSize && inlineSuggestionVisible && !editorHoverFocused && !editorTabMovesFocus && !suggestWidgetVisible" + }, +] \ No newline at end of file diff --git a/config/VSCodium/User/settings.json b/config/VSCodium/User/settings.json new file mode 100644 index 00000000..86ff684b --- /dev/null +++ b/config/VSCodium/User/settings.json @@ -0,0 +1,489 @@ +{ + // open json editor for settings + "workbench.settings.editor": "json", + // Theme + "workbench.colorTheme": "Catppuccin Macchiato", + "workbench.preferredDarkColorTheme": "Catppuccin Macchiato", + "workbench.iconTheme": "catppuccin-perfect-mocha", + "workbench.preferredHighContrastColorTheme": "Catppuccin Macchiato", + "catppuccin.accentColor": "lavender", + "catppuccin.extraBordersEnabled": true, + "catppuccin.italicComments": true, + "catppuccin.boldKeywords": true, + "catppuccin.italicKeywords": false, + // Font + "editor.fontFamily": "JetBrainsMono Nerd Font", + "editor.inlayHints.fontFamily": "JetBrainsMono Nerd Font", + "terminal.integrated.fontFamily": "JetBrainsMono Nerd Font", + "scm.inputFontFamily": "JetBrainsMono Nerd Font", + "chat.editor.fontFamily": "JetBrainsMono Nerd Font", + "debug.console.fontFamily": "JetBrainsMono Nerd Font", + "editor.codeLensFontFamily": "JetBrainsMono Nerd Font", + "notebook.output.fontFamily": "JetBrainsMono Nerd Font", + "markdown.preview.fontFamily": "JetBrainsMono Nerd Font", + "errorLens.fontFamily": "JetBrainsMono Nerd Font", + "editor.fontLigatures": true, + "editor.fontSize": 14, + "terminal.integrated.fontSize": 14, + // UI + "editor.stickyScroll.enabled": true, + "window.commandCenter": false, + "editor.lineNumbers": "relative", + "window.menuBarVisibility": "toggle", + "editor.minimap.enabled": false, + "editor.overviewRulerBorder": false, + "workbench.editor.enablePreviewFromCodeNavigation": true, + "workbench.view.alwaysShowHeaderActions": true, + "workbench.startupEditor": "none", + "editor.scrollbar.horizontal": "hidden", + "editor.hideCursorInOverviewRuler": true, + "workbench.editor.empty.hint": "hidden", + "workbench.editor.tabActionCloseVisibility": false, + "markdown-preview-github-styles.lightTheme": "dark", + "markdown-preview-github-styles.colorTheme": "dark", + "editor.matchBrackets": "never", + "files.trimTrailingWhitespace": true, + "editor.foldingImportsByDefault": true, + "editor.guides.bracketPairs": true, + "editor.guides.highlightActiveIndentation": true, + "editor.guides.bracketPairsHorizontal": "active", + "cSpell.language": "en, es", + "search.followSymlinks": false, + "workbench.editor.showTabs": "multiple", + "explorer.compactFolders": false, + "breadcrumbs.filePath": "off", + "editor.bracketPairColorization.enabled": true, + "editor.scrollbar.vertical": "hidden", + "editor.wordWrap": "off", + "errorLens.fontStyleItalic": true, + // Misc + "codeium.enableCodeLens": false, + "git.openRepositoryInParentFolders": "never", + "editor.linkedEditing": true, + "git.closeDiffOnOperation": true, + "workbench.editor.scrollToSwitchTabs": true, + "editor.inlayHints.enabled": "on", + "editor.autoClosingBrackets": "always", + "diffEditor.codeLens": true, + "editor.suggest.preview": true, + "debug.allowBreakpointsEverywhere": true, + "editor.suggest.matchOnWordStartOnly": false, + "editor.mouseWheelZoom": true, + "codeium.enableSearch": true, + "workbench.editor.splitInGroupLayout": "vertical", + "files.associations": { + ".env*": "dotenv" + }, + "update.mode": "manual", + "editor.codeActionsOnSave": { + "source.addMissingImports": "explicit", + "source.organizeImports": "explicit" + }, + "editor.formatOnSave": true, + // APC + "apc.electron": { + "titleBarStyle": "hidden" + }, + "window.titleBarStyle": "native", + "apc.activityBar": { + "position": "bottom", + "hideSettings": true, + "size": 26 + }, + "apc.font.family": "JetBrainsMono Nerd Font", + "apc.monospace.font.family": "JetBrainsMono Nerd Font", + "apc.statusBar": { + "position": "editor-bottom", + "height": 23, + "fontSize": 12 + }, + // Custom css + "apc.stylesheet": { + ".title-actions": "display: none !important", + ".tabs-and-actions-container > .editor-actions": "display: none !important", + ".titlebar-center": "display: none !important", + ".titlebar-right": "display: none !important", + ".inline-tabs-placeholder": "display: none !important" + }, + // Neovim + "extensions.experimental.affinity": { + "asvetliakov.vscode-neovim": 1 + }, + // Project Manager + "projectManager.git.baseFolders": [ + "/home/matt/Repos/Work", + "/home/matt/Repos/Personal", + "/home/matt/Repos/Community", + "/home/matt/Repos/Class" + ], + "projectManager.sortList": "Recent", + // Smooth movement + "editor.cursorSmoothCaretAnimation": "on", + "workbench.list.smoothScrolling": true, + "terminal.integrated.smoothScrolling": true, + "editor.cursorBlinking": "smooth", + "editor.smoothScrolling": true, + // Animations + "animations.Enabled": true, + "animations.Active": "Indent", + "animations.Scrolling": "Slide", + "animations.Durations": { + "Command-Palette": 400, + "Scrolling": 300, + "Active": 200, + "Smooth-Mode": 300, + "Tabs": 300 + }, + "animations.Smooth-Mode": true, + "animations.Install-Method": "Apc Customize UI++", + "apc.imports": [ + "file:///home/matt/.vscode-oss/extensions/brandonkirbyson.vscode-animations-2.0.1/dist/updateHandler.js" + ], + // Language specific + "markdown.preview.scrollEditorWithPreview": true, + "markdown.preview.scrollPreviewWithEditor": true, + "Lua.codeLens.enable": true, + "html.format.enable": true, + "json.format.enable": true, + "javascript.format.enable": true, + "redhat.telemetry.enabled": false, + "javascript.updateImportsOnFileMove.enabled": "always", + "typescript.updateImportsOnFileMove.enabled": "always", + "vue.updateImportsOnFileMove.enabled": true, + "[json]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[javascript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode", + "javascript.preferences.importModuleSpecifier": "relative" + }, + "[typescript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode", + "typescript.preferences.importModuleSpecifier": "relative" + }, + "[javascriptreact]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[typescriptreact]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[vue]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[css]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[scss]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[less]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[html]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[jsonc]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[yaml]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[markdown]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[graphql]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[handlebars]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[python]": { + "editor.defaultFormatter": "charliermarsh.ruff" + }, + // File explorer + // Terminal + "terminal.integrated.cursorBlinking": true, + "terminal.external.linuxExec": "kitty", + "terminal.integrated.cursorStyle": "line", + "terminal.integrated.defaultProfile.linux": "fish", + "terminal.integrated.gpuAcceleration": "on", + "terminal.integrated.shellIntegration.suggestEnabled": true, + "terminal.integrated.enableImages": true, + "terminal.explorerKind": "external", + "terminal.integrated.env.linux": {}, + // Zen mode + "zenMode.showTabs": "none", + "zenMode.hideLineNumbers": false, + "zenMode.silentNotifications": false, + "zenMode.fullScreen": false, + // Error lens + "errorLens.errorGutterIconColor": "#ED8796", + "errorLens.searchForProblemQuery": "https://search.brave.com/search?q=$message", + "errorLens.warningGutterIconColor": "#EED49F", + // Colorize + "colorize.include": [ + "**/*.lua", + "**/*.cs", + "**/*.css", + "**/*.scss", + "**/*.sass", + "**/*.less", + "**/*.styl", + "**/*.xml", + "**/*.svg", + "**/*.json", + "**/*.js", + "**/*.java", + "**/*.kt", + "**/*.cpp", + "**/*.rasi" + ], + "colorize.languages": [ + "css", + "sass", + "scss", + "less", + "postcss", + "sss", + "stylus", + "xml", + "svg", + "json", + "javascript", + "java", + "c", + "rasi", + "markdown" + ], + // Toggle excluded files + "files.exclude": { + "**/.git": true, + "**/.svn": true, + "**/.hg": true, + "**/CVS": true, + "**/.DS_Store": true, + "**/Thumbs.db": true, + "**/node_modules": true, + "**/.next": true, + "**/.husky": true, + "**/drizzle": true, + "**/dist": true, + "**/.todo.md": true, + "**/.vscode": true, + "**/.eslintrc.cjs": true, + "**/.editorconfig": true, + "**/.gitignore": true, + "**/.lintstagedrc.mjs": true, + "**/.markdownlint.json": true, + "**/.markdownlintignore": true, + "**/.prettierignore": true, + "**/bun.lockb": true, + "**/cspell.json": true, + "**/package-lock.json": true, + "**/pnpm-lock.yaml": true, + "**/next-env.d.ts": true, + "**/postcss.config.cjs": true, + "**/prettier.config.js": true, + "**/README.md": true, + "**/next.config.js": true, + "**/tailwind.config.ts": true, + "**/drizzle.config.ts": true, + "**/migrate.ts": true, + "**/.env.example": true + }, + "commentAnchors.workspace.lazyLoad": false, + "commentAnchors.tags.anchors": { + // General Anchors + "ANCHOR": { + "iconColor": "default", + "highlightColor": "#A8C023", + "scope": "file", + "isItalic": true, + "isBold": true, + "styleMode": "full" + }, + "TODO": { + "iconColor": "#91d7e3", + "highlightColor": "#91d7e3", + "scope": "workspace", + "isItalic": true, + "isBold": true, + "styleMode": "full" + }, + + // FIX Anchors + "FIXME": { + "iconColor": "#ed8796", + "highlightColor": "#ed8796", + "scope": "workspace", + "isItalic": true, + "styleMode": "full" + }, + "FIX": { + "iconColor": "#ed8796", + "highlightColor": "#ed8796", + "scope": "workspace", + "isItalic": true, + "isBold": true, + "styleMode": "full" + }, + "BUG": { + "iconColor": "#ed8796", + "highlightColor": "#ed8796", + "scope": "workspace", + "isItalic": true, + "styleMode": "full" + }, + "FIXIT": { + "iconColor": "#ed8796", + "highlightColor": "#ed8796", + "scope": "workspace", + "isItalic": true, + "styleMode": "full" + }, + "ISSUE": { + "iconColor": "#ed8796", + "highlightColor": "#ed8796", + "scope": "workspace", + "isItalic": true, + "styleMode": "full" + }, + + // NOTE Anchors + "INFO": { + "iconColor": "#8bd5ca", + "highlightColor": "#8bd5ca", + "scope": "workspace", + "isItalic": true, + "styleMode": "full" + }, + "NOTE": { + "iconColor": "#8bd5ca", + "highlightColor": "#8bd5ca", + "scope": "workspace", + "isItalic": true, + "isBold": true, + "styleMode": "full" + }, + + // Other Anchors + "HACK": { + "iconColor": "#eed49f", + "highlightColor": "#eed49f", + "scope": "workspace", + "isItalic": true, + "styleMode": "full" + }, + + // Warning Anchors + "XXX": { + "iconColor": "#eed49f", + "highlightColor": "#eed49f", + "scope": "workspace", + "isItalic": true, + "styleMode": "full" + }, + "WARNING": { + "iconColor": "#eed49f", + "highlightColor": "#eed49f", + "scope": "workspace", + "isItalic": true, + "styleMode": "full" + }, + "WARN": { + "iconColor": "#eed49f", + "highlightColor": "#eed49f", + "scope": "workspace", + "isItalic": true, + "isBold": true, + "styleMode": "full" + }, + + // Performance Anchors + "OPTIM": { + "iconColor": "#f0c6c6", + "highlightColor": "#f0c6c6", + "scope": "workspace", + "isItalic": true, + "styleMode": "full" + }, + "PERFORMANCE": { + "iconColor": "#f0c6c6", + "highlightColor": "#f0c6c6", + "scope": "workspace", + "isItalic": true, + "styleMode": "full" + }, + "OPTIMIZE": { + "iconColor": "#f0c6c6", + "highlightColor": "#f0c6c6", + "scope": "workspace", + "isItalic": true, + "styleMode": "full" + }, + "PERF": { + "iconColor": "#f0c6c6", + "highlightColor": "#f0c6c6", + "scope": "workspace", + "isItalic": true, + "isBold": true, + "styleMode": "full" + }, + + // Testing Anchors + "PASSED": { + "iconColor": "#f0c6c6", + "highlightColor": "#f0c6c6", + "scope": "workspace", + "isItalic": true, + "styleMode": "full" + }, + "FAILED": { + "iconColor": "#f0c6c6", + "highlightColor": "#f0c6c6", + "scope": "workspace", + "isItalic": true, + "styleMode": "full" + }, + "TESTING": { + "iconColor": "#f0c6c6", + "highlightColor": "#f0c6c6", + "scope": "workspace", + "isItalic": true, + "styleMode": "full" + }, + "TEST": { + "iconColor": "#f0c6c6", + "highlightColor": "#f0c6c6", + "scope": "workspace", + "isItalic": true, + "isBold": true, + "styleMode": "full" + }, + "REVIEW": { + "iconColor": "#a6da95", + "highlightColor": "#a6da95", + "scope": "workspace", + "isItalic": true, + "styleMode": "full" + }, + + // Dividing Anchors + "SECTION": { + "iconColor": "#f5bde6", + "highlightColor": "#f5bde6", + "scope": "workspace", + "behavior": "region", + "isItalic": true, + "styleMode": "full" + }, + "LINK": { + "iconColor": "#f5a97f", + "highlightColor": "#f5a97f", + "scope": "workspace", + "behavior": "link", + "isItalic": true, + "styleMode": "full" + } + } +} diff --git a/config/VSCodium/User/snippets/css.json b/config/VSCodium/User/snippets/css.json new file mode 100644 index 00000000..835896fe --- /dev/null +++ b/config/VSCodium/User/snippets/css.json @@ -0,0 +1,13 @@ +{ + "ignore (prettier)": { + "body": "/* prettier-ignore */", + "prefix": "ignore (prettier)" + }, + "ignore range (stylelint)": { + "body": [ + "/* stylelint-disable ${1:no-duplicate-selectors} */", + "/* stylelint-enable ${1:no-duplicate-selectors} */" + ], + "prefix": "ignore range (stylelint)" + } +} diff --git a/config/VSCodium/User/snippets/global.json b/config/VSCodium/User/snippets/global.json new file mode 100644 index 00000000..96e7c982 --- /dev/null +++ b/config/VSCodium/User/snippets/global.json @@ -0,0 +1,6 @@ +{ + "nonbreaking space": { + "body": " ", + "prefix": "nonbreaking space" + } +} diff --git a/config/VSCodium/User/snippets/lua.json b/config/VSCodium/User/snippets/lua.json new file mode 100644 index 00000000..f7e8a981 --- /dev/null +++ b/config/VSCodium/User/snippets/lua.json @@ -0,0 +1,50 @@ +{ + "@class (LuaDoc)": { + "body": [ + "---@class (exact) ${1:class_name}", + "---@field ${2:field_name} string", + "---@field ${3:field_name} string" + ], + "description": "https://github.com/LuaLS/lua-language-server/wiki/Annotations#class", + "prefix": "@class (LuaDoc)" + }, + "@type (LuaDoc)": { + "body": "---@type ${1:string}", + "prefix": "@type (LuaDoc)" + }, + "export module": { + "body": [ + "local M = {}", + "--------------------------------------------------------------------------------", + "", + "$0--------------------------------------------------------------------------------", + "return M" + ], + "prefix": "export module" + }, + "find all in string": { + "body": [ + "local ${1:matches} = {}", + "for match in ${2:str}:gmatch(${3:pattern}) do", + "\ttable.insert(${1:matches}, match)", + "end" + ], + "prefix": "find all in string" + }, + "home": { + "body": "os.getenv(\"HOME\")", + "prefix": "home" + }, + "ignore (stylua)": { + "body": "-- stylua: ignore", + "prefix": "ignore (stylua)" + }, + "ignore start/end (stylua)": { + "body": ["-- stylua: ignore start", "-- stylua: ignore end"], + "prefix": "ignore start/end (stylua)" + }, + "import module": { + "body": "local ${1:name} = require(\"${2:module}.${1:name}\")", + "prefix": "import module" + } +} diff --git a/config/VSCodium/User/snippets/markdown.json b/config/VSCodium/User/snippets/markdown.json new file mode 100644 index 00000000..10dad64e --- /dev/null +++ b/config/VSCodium/User/snippets/markdown.json @@ -0,0 +1,72 @@ +{ + "caution (callout)": { + "body": [ + "> [!CAUTION]", + "> $0" + ], + "description": "https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts", + "prefix": "caution (callout)" + }, + "centerdiv": { + "body": "
$0
", + "prefix": "centerdiv" + }, + "details & summary": { + "body": [ + "
", + "${1:Text}", + "$0", + "
" + ], + "description": "https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details", + "prefix": [ + "toggle / fold", + "details & summary" + ] + }, + "div": { + "body": "
$0
", + "description": "https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div", + "prefix": "div" + }, + "image": { + "body": "\"${2:alt", + "description": "HTML syntax for images used to display images with reduced size", + "prefix": "image" + }, + "important (callout)": { + "body": [ + "> [!IMPORTANT]", + "> $0" + ], + "description": "https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts", + "prefix": "important (callout)" + }, + "note (callout)": { + "body": [ + "> [!NOTE]", + "> $0" + ], + "description": "https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts", + "prefix": [ + "info (callout)", + "note (callout)" + ] + }, + "tip (callout)": { + "body": [ + "> [!TIP]", + "> $0" + ], + "description": "https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts", + "prefix": "tip (callout)" + }, + "warning (callout)": { + "body": [ + "> [!WARNING]", + "> $0" + ], + "description": "https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts", + "prefix": "warning (callout)" + } +} diff --git a/config/VSCodium/User/snippets/python/python.json b/config/VSCodium/User/snippets/python/python.json new file mode 100644 index 00000000..01932eee --- /dev/null +++ b/config/VSCodium/User/snippets/python/python.json @@ -0,0 +1,19 @@ +{ + "list comprehension": { + "body": "list(${1:value} for ${2:value} in ${3:iterable})$0", + "description": "List comprehension for creating a list based on existing lists.", + "prefix": "list comprehension" + }, + "replace (regex)": { + "body": "re.sub(r\"${1:regex}\", r\"${2:replace}\", ${3:str})$0", + "prefix": "replace (regex)" + }, + "ternary": { + "body": "${1:value1} if ${2:condition} else ${3:value2}", + "prefix": "ternary" + }, + "while": { + "body": "while ${1:condition}:\n\t${2:pass}$0", + "prefix": "while" + } +} diff --git a/config/hypr/UserConfigs/WindowRules.conf b/config/hypr/UserConfigs/WindowRules.conf index 65a4cb30..0fda2e7d 100644 --- a/config/hypr/UserConfigs/WindowRules.conf +++ b/config/hypr/UserConfigs/WindowRules.conf @@ -129,7 +129,7 @@ windowrulev2 = center, title:(.*Save File.*) # VS Code -windowrulev2 = workspace 2, class:(Code) +windowrulev2 = workspace 2, class:^(.*Code.*)$|(.*codium.*)$ windowrulev2 = opacity 0.9 0.6, class:(Code) diff --git a/config/hypr/UserScripts/QuickEdit.sh b/config/hypr/UserScripts/QuickEdit.sh index 93851874..73ecf770 100755 --- a/config/hypr/UserScripts/QuickEdit.sh +++ b/config/hypr/UserScripts/QuickEdit.sh @@ -17,7 +17,7 @@ menu(){ } main() { - choice=$(menu | rofi -dmenu -i -l 7 -p " View / Edit Hyprland Configs:" -config ~/.config/rofi/config-compact.rasi | cut -d. -f1) + choice=$(menu | rofi -dmenu -i -l 9 -p " View / Edit Hyprland Configs:" -config ~/.config/rofi/config.rasi | cut -d. -f1) case $choice in 1) kitty -e nano "$UserConfigs/ENVariables.conf" diff --git a/config/hypr/scripts/Caway.sh b/config/hypr/scripts/Caway.sh new file mode 100755 index 00000000..05d26742 --- /dev/null +++ b/config/hypr/scripts/Caway.sh @@ -0,0 +1,120 @@ +#!/usr/bin/bash + +# Nuke all internal spawns when script dies +trap "trap - SIGTERM && kill -- -$$" SIGINT SIGTERM + +BARS=8 +FRAMERATE=60 +EQUILIZER=1 + +# Get script options +while getopts 'b:f:m:eh' flag; do + case "${flag}" in + b) BARS="${OPTARG}" ;; + f) FRAMERATE="${OPTARG}" ;; + e) EQUILIZER=0 ;; + h) + echo "caway usage: caway [ options ... ]" + echo "where options include:" + echo + echo " -b (Number of bars to display. Default 8)" + echo " -f (Framerate of the equilizer. Default 60)" + echo " -e (Disable equilizer. Default enabled)" + echo " -h (Show help message)" + exit 0 + ;; + esac +done + +bar="β–β–‚β–ƒβ–„β–…β–†β–‡β–ˆ" +dict="s/;//g;" + +# creating "dictionary" to replace char with bar + thin space " " +i=0 +while [ $i -lt ${#bar} ]; do + dict="${dict}s/$i/${bar:$i:1} /g;" + i=$((i=i+1)) +done + +# Remove last extra thin space +dict="${dict}s/.$//;" + +clean_create_pipe() { + if [ -p "$1" ]; then + unlink "$1" + fi + mkfifo "$1" +} + +kill_pid_file() { + if [[ -f "$1" ]]; then + while read -r pid; do + kill "$pid" && wait "$pid" 2>/dev/null + done < "$1" + fi +} + +# PID of the cava process and while loop launched from the script +cava_waybar_pid="/tmp/cava_waybar_pid" + +# Clean pipe for cava +cava_waybar_pipe="/tmp/cava_waybar.fifo" +clean_create_pipe "$cava_waybar_pipe" + +# Custom cava config +cava_waybar_config="/tmp/cava_waybar_config" +cat > "$cava_waybar_config" < "$playerctl_waybar_pipe" & + +# Read the playerctl o/p via its fifo pipe +while read -r line; do + # Kill the cava process to stop the input to cava_waybar_pipe + kill_pid_file "$cava_waybar_pid" + + # Move these outside the loop + cava_cmd="cava -p $cava_waybar_config > $cava_waybar_pipe &" + jq_cmd="jq --arg a \$(echo \$cmd2 | sed \"$dict\") '.text = \$a' --unbuffered --compact-output" + + echo "$line" | eval "$jq_cmd" + + # If the class says "Playing" and equilizer is enabled + # then show the cava equilizer + if [ "$EQUILIZER" == 1 ] && [ "$(echo "$line" | jq -r '.class')" == 'Playing' ]; then + + # cava output into cava_waybar_pipe + eval "$cava_cmd" + + # Save the PID of child process + echo $! > "$cava_waybar_pid" + + # Read the cava o/p via its fifo pipe + cava_output() { + while read -r cmd2; do + # Change the "text" key to bars + echo "$line" | eval "$jq_cmd" + done < "$cava_waybar_pipe" & + } + + cava_output & + + # Save the while loop PID into the file as well + echo $! >> "$cava_waybar_pid" + fi +done < "$playerctl_waybar_pipe" diff --git a/config/hypr/scripts/ClipManager.sh b/config/hypr/scripts/ClipManager.sh index 6e22e605..1da94194 100755 --- a/config/hypr/scripts/ClipManager.sh +++ b/config/hypr/scripts/ClipManager.sh @@ -1,24 +1,40 @@ #!/bin/bash -# Clipboard Manager. This needed cliphist & wl-copy and of course rofi +# Clipboard Manager. This script uses cliphist, rofi, and wl-copy. + +# Actions: +# CTRL Del to delete an entry +# ALT Del to wipe clipboard contents while true; do - if pidof rofi &> /dev/null; then - pkill rofi - fi + result=$( + rofi -dmenu \ + -kb-custom-1 "Control-Delete" \ + -kb-custom-2 "Alt-Delete" \ + -p "CTRL Del - Cliphist del || Alt Del - cliphist wipe" \ + -config ~/.config/rofi/config-long.rasi < <(cliphist list) + ) - result=$(cliphist list | rofi -kb-custom-1 "Ctrl+Delete" -dmenu -config ~/.config/rofi/config-long.rasi) - exit_state=$? - - [[ $exit_state -eq 1 ]] && break - - case "$exit_state" in - 0) - cliphist decode <<<"$result" | wl-copy + case "$?" in + 1) exit ;; + 0) + case "$result" in + "") + continue + ;; + *) + cliphist decode <<<"$result" | wl-copy + exit + ;; + esac + ;; 10) cliphist delete <<<"$result" ;; + 11) + cliphist wipe + ;; esac done diff --git a/config/hypr/scripts/RofiEmoji.sh b/config/hypr/scripts/RofiEmoji.sh index a9290094..d530725a 100755 --- a/config/hypr/scripts/RofiEmoji.sh +++ b/config/hypr/scripts/RofiEmoji.sh @@ -3,7 +3,7 @@ # Rofi Emoticons. Not my own. Cant remember the source sed '1,/^### DATA ###$/d' $0 | -rofi -dmenu -config ~/.config/rofi/config-long.rasi| +rofi -dmenu -p "πŸ”Ž Search" -config ~/.config/rofi/config-long.rasi| cut -d ' ' -f 1 | tr -d '\n' | wl-copy exit diff --git a/config/hypr/scripts/WaybarCava.sh b/config/hypr/scripts/WaybarCava.sh deleted file mode 100755 index 96126bed..00000000 --- a/config/hypr/scripts/WaybarCava.sh +++ /dev/null @@ -1,33 +0,0 @@ -# #! /bin/bash - - -#----- Optimized bars animation without much CPU usage increase -------- -bar="β–β–‚β–ƒβ–„β–…β–†β–‡β–ˆ" -dict="s/;//g" - -# Calculate the length of the bar outside the loop -bar_length=${#bar} - -# Create dictionary to replace char with bar -for ((i = 0; i < bar_length; i++)); do - dict+=";s/$i/${bar:$i:1}/g" -done - -# Create cava config -config_file="/tmp/bar_cava_config" -cat >"$config_file" <About @@ -19,6 +20,7 @@ - [tzachar/cmp-tabnine](https://github.com/tzachar/cmp-tabnine) - [jackMort/ChatGPT.nvim](https://dotfyle.com/plugins/jackMort/ChatGPT.nvim) - [zbirenbaum/copilot.lua](https://dotfyle.com/plugins/zbirenbaum/copilot.lua) +- [David-Kunz/gen.nvim](https://dotfyle.com/plugins/David-Kunz/gen.nvim) @@ -301,6 +303,7 @@ - [andweeb/presence.nvim](https://dotfyle.com/plugins/andweeb/presence.nvim) - [edluffy/hologram.nvim](https://dotfyle.com/plugins/edluffy/hologram.nvim) +- [ellisonleao/carbon-now.nvim](https://dotfyle.com/plugins/ellisonleao/carbon-now.nvim) @@ -357,6 +360,13 @@ +
+🏠 Remote-development> + +- [esensar/nvim-dev-container](https://dotfyle.com/plugins/esensar/nvim-dev-container) + +
+
πŸ“œ Scrollbar-Scrolling @@ -377,7 +387,6 @@
🐌 Snippet -- [TobinPalmer/rayso.nvim](https://dotfyle.com/plugins/TobinPalmer/rayso.nvim) - [L3MON4D3/LuaSnip](https://dotfyle.com/plugins/L3MON4D3/LuaSnip) - [chrisgrieser/nvim-scissors](https://dotfyle.com/plugins/chrisgrieser/nvim-scissors) - [mrcjkb/haskell-snippets.nvim](https://dotfyle.com/plugins/mrcjkb/haskell-snippets.nvim) @@ -618,17 +627,9 @@ | ----------------------------------------------- | | ![find-files](./overview-images/find-files.png) | -
- -| **Neo-tree** | -| ------------------------------------------- | -| ![neo-tree](./overview-images/neo-tree.png) | - -| **Symbols Outline** | -| ----------------------------------------- | -| ![outline](./overview-images/outline.png) | - -
+| **Neo-tree** | **Symbols Outline** | +| ------------------------------------------- | ----------------------------------------- | +| ![neo-tree](./overview-images/neo-tree.png) | ![outline](./overview-images/outline.png) | | **Bufferline** | | ----------------------------------------------- | diff --git a/config/nvim/.github/overview-images/lualine.png b/config/nvim/.github/overview-images/lualine.png index 72ec93c7b88d32c6aca3bbb83011f69929f41ff7..9006069495613bc3ba27644d593d4843a72cc961 100644 GIT binary patch literal 12603 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 literal 11063 zcmW++Ra70z792dmHMqOGJHg%EHORr;LxQ_IC%C%>hv4oI9D=*MJ?{IN)jzwZr)O1H z@2Uz{R+K`5$Abp|07*t#TonMIZ9c|WpCCV;@n>L703ZQm#6{ITvre-;^f4EoF2GCK zYfB@lDV+=*_e{U?X!;Z}eWDmM`o#0C9nP3fi&isNlkhPV>{wYdaD2`o>F7wp0?9hK z4=qwpZ(q$83+*9P=GrzU-&mi=(%C1+CUSTuc_*(4`htcNMzJn9Sebk9ffyquqO;c`#>Cn+b%+HTzmHmlkqZ3dL9ZlvHjV%AwztRlqe($tfb29Ed&R_Es>Y-n4z3zrJ z+ZOi5Ip6;)R-~+ev-eRq$3PR^+pwr$A=8n;b zQK=2;22;yQ`N-Mnzi8W<{I@<`6`>aaLHUTt^KTBgyRzU-EX9l~oSS#z0Z-vU0`zdU z1v&wA@&k2YxXqk0%hzFJ`%^ocV@ppj0okn1r>@JN9WW)}aDx7GbAC`&KtAIeU`SYcpQsGskv!JXO z8O#td(rs4`%^ia?Z)L95j3`8_cOF8YN5O0mQsIwXE=7NetJ$-eLVUr!M0u)C|0k=- z&C6E3&i8xMQ-2FTo#DE_n67@{otGT7 zX+312O%x;!C3Ws49vM}wgu%0zRUn~UH#Je_LIZI_7Q3gQfb|xa`a+O7A7bF)Awh?0 zX?7bm1UW>YJe_rA)d-(=!IolAzE)1ApNr+ce}sBnem7;VsJqhOFGGA88fsHyz7^DL zrhP;8{n~mMy_S~$^7xw_ju^jS64*FQc6yN~_ijPn81CPshZ`6WHnZIU z?b~?vj^8I_Y&Iv>AjF1W{?B$z@?`!_YhP^Pm~#W`&y5g@7~f~6=~bChlQ-H_Q!@V? z+c;eyqD0BCu{Og5Zu4_D&3}Oc;^ob}Bp+fk&3f;)+_?xJ{9%H68NJ?>_71N1JXBP*bD1CPvc?H1fbtAgY|-gw3rcjnW2)JP(hm|>U`jhS*^eKFv8tQ z8HYpOwlCr~;FO>+DZfgPaDd73`BM6`9IWCLVb(L*=$!nuMp2T|lNlJWr%2jBL6m#fh^ao1~| z#XiKE1&8*s9%^I5G+FNN{8F`*?+63DN;huGG|4blvWNnU#$<%wx+5b`7Y5yRrfRA+r{-t?8$5{^>^yzoz0=AH2Y4^(~_pdc)R5$&RQezkWdEq z352X1{2TcC<#j2=9P#vDcs15SfM4ee+U>NDF!eafsVzS(maH-zT6^ocQ~@e=J5GjE zyE@s4!sg4uoj5|Q^Y+T zBu@qYZJvt!7{hD{=ULC;950S{KVuKF@};Fv&pd?&D3WSOSav3#``dHTHQ!(UU}7We zjhGGU^{aw75d&rOQO>0AVfty}*%!A}#P0gD6|jz^&|=Y{wl%#&+DXu^=v*f8J*%9; z&;Qo=aT-~uPA?HU@WJ)_NR16_hmX76JAj{Yfi%1KsZx68*S9KCH*bmYL5zksUtmht zNZ%l>YS|qjYplUZ1!UzEz^x2Ia&D=3vA0pV<2Cds&-YL_mQSEfEc{xPnnfS5CbQJ+ zI9qM083T}{%E&q=M!GP4`hAL=6EDhot?mpuU<0!;pINp9uXcGw&FX5!dC|Gf%&gZN zKK-yhK081Y+WF2&*<3-`uD((h(#&yw6}>I|6s_cZndvBet?u`jUBKOBN`VKYE%Cs~ zODBw)TX+o@yW3?no8X72KyWRb%@fTr|I$wmb4bLf+Yj9 z#A*%g2GF?MT zz7Rc>Bm)UCwkjs9?ChWU4fw~hJAGmd8W1Sirx_B=?a0H&VNwI4uGU;p1iH_U{&~2S zVv?ZNrcpAxadB|$t)Kf0B}E^%4=7a(O*kX7a-d&|eq9^mmDyK34oKCjw`(|6rNQJI zD<)=6!JPBR8uk(EY4lN*n`E_t*j(f72^ot1@8*DNIWFTprCnbB6CLOt2q{z^(qc+y z^?auvwR~^C{#BS%^W~`8O^#v40-{5TQyPkeB~J!1R6l z)2-56@w>}73Ue^4!Vo{x#%Rewlsmf-;XZxJNPu(|o>OqhsuErP#_G`e-_4;~~ zw3%qG_}uzz1z*=!wY@*YxaN4U00lg&y_2U@VwHc;@GmdM7O~oUX>UF1fZj45`0%hi z&j6IY+bm0k@2Af*2kPj+6wTiem}#W(?ABdCS!c!j;e>F$Nxf(kKQ5O!5-KF`?Tcl4 zB_Y(#wLx~!34#CU1jp(JYUDQ#+Xu!AXU5nk>_O$H3h|7oGS1BBe`s7MYpgk8w02a# z8qo0TmC4o3%RSRzIs=Y(+1h$pDq2}WUR#5%a!tS5IKR!vNu*OFR!mJ$Dtkb*27|gE zDCW81d2R@bzGIr_jPZ4i(mSWrpFh0V!r4Z$W81GvkY#>LERPxC=_;>c;5Qi_+*?re zv$d^g^`W-d=qvEx;k;nUzX?6wl3+`zh$p zdVN+*JlXOBx5ECXPH6z9#qQwK7pwQr!RgdrO|fsWQg#b#1jtP-+hKu^H(0rMtSqV8 z9v>h8h(#S*j*vi&;Gg%my~5VIm9w`*pnG|GU-Z@>q$RrXNAt*(>h!w4OkO&yf_|Kn zyU$!hqo?c7VRZSiQ+d!@YbXXp|FL)A<|Qz7`AdE5d_gnn@PJs*)=x^UFg@Aq_Vw7E zsmGJ-@UGB+@K%CG^0SP#ne~2*R5+x)mD57$K%E|d%600N(zg6XgKp=x|7iF|M(&Lk z3*j?Py1gYm+GS+D;v!bjp(eV-XPO+6#N&6U>d#1pXfl9fe%Zf^*C6J97%Z5tZ_641 zdYLW$qBukbXm|-uZ>k$#tGFA1K=$O9(}qKo-&qRSOvfd{-iNB_8X$gJ%&VpIfIwjL z;z%k+q>pT$Szvv`m#wz0wbjaF`f+X%j!f4qN#<~%th;c z&CUkx@IAuilic2I^tJ!xux}KubrmR7HUByI{8D!{aO5z%hAw%T*Gd+1>J3e6JqH8x^lIW`~OrgcgG8Mr1 z>9U3!TgJTf{%B9K6`!XKOOW(!NVM{r1?BLb$8i}Z%d%FrRQzcu{>?;gR|f-aoqjkHVYVwsLwU7j02mdN{?sxeFG^~(MDO* zjBr4_w)dWH^p?$mrN}!3@Xd3zuBN80X+bc!_X7T-&G_YV1Pj;^yz1gbXf!28+os8N z7vxM71vR_^%1K_PSASx)4W}Dnv=9aI<>~AzhlxqVQM2f>At0qM<}?f{IWw3_>_1@k z0XElEQ5E@67*ihj7KZ&RqUN}VzkSU>chqp_&3-W`8tZNX;_C?Esu&=W8>jU}AH#9k zr&aeULkZIVe%@?@?=kuwF(VIcy~F>ngRg4e92Q_addJ)FnA{Y?CN=p9M0aS@UPASS zL(Nv|T)Hlt7bpO)Q6(OsJT-eDk*eS@-oCD8@!^eH7p0Vek{Kz!T)`5Qc#}EtH1hT} zxG;})tg7oB>|ii%-o}v4rS7*r4C*eo$o&*h93;Pe^c@%{JR?2I!hJG@bK+^(xogSD z%d|T`Na_+ocU&=mDgs2h3sT1`vd)SK<%M4{nvX@Nc2X~B&;Z%GNz1II3_qvE%`zN$ zO{azQ>$deHo6<{gP2ALA!W`_{Pm`fWPrY(0vobzDXZ}`Uh0d4L#`09W4B6#n_0;`= zhCi?pzqinKR;*`PF<*Jv)jSeD>v^Dz-+>*vIzU@9MqikchrLhvY_YKka>2JgSBcD# z6UAj+ICsdCU5P(Tw3WZ5kp|1C!vh@ioU}-hZ>t_1FQep3?}Bbt7fe!eiBQ}lMX&qL z7IODTJi>Z-5Ws@cHCLgj5#gwp+5PS6(ZX(`pZ<6ayH~Uk(eT@@sSxmzta-B=f5IGV z4jwCo3q;v}Xw}Vp%TT>|%&i!R$yr2y!R?zyq}6}_gZfnB&a206pDg%rqO8fURWiNt z(K$om^p0)I6}4Mh9lAa}t-oS7@hr6-Cm&Psa3J>9v}X}?$Xsh9Pw?qV2aB12%p8Vr zS)(Yvln(am>FEN2J<89njSU=hSS&6REDI5zk$p)PHTYQO|BsL5% z$(H*uCLgH0&gb(kg(@^u?tqIe0%2_YSp!-aFyV;J$!13mYIpbCX-y>3w!6gjerWyi zijSt!rHk>ej@`sinrd(6_6zW+#`s!!@x#)z3gGFJky;*oxK1COIl1SveDB@(y1_8% z$epRSgtY+((~(cNLFQJ1^%X>Mg?QMAWY zdAL|<673F@kaO??f|oGe3^chzTe9_La@nux+Z8PH2x|{pLV)BGI-grG*60c+$poi4 zEa0eHMqw({`{$Q%K0JMj*1xB<`o+^Qy(gH&Qxsr6c#-gfiue7d^gX~P!(5H7V@j{R z-OGrFV$BO*a{k`Bi|*0(CKI3&AirOQhMHneofVy~J)_W>egBAFf(@6D?cO8qoV^LE_n`SZjT4LD_ddPoJv%w+BqmR+fN9B8x0~ zy5;c>*zfVaPb+}NmuH10Iil>$FkJ5j1;d43K=zwM6#)w|Hv>b3!H{cFjnuKHlF<$u zEs&bPnGD|&x1m6x0zty;#SPG4IRkMrKiwyYGnc#?7T5OO zxGwncYjW*e6@AR)G?;*-y{tx;&uqp_itMx_VlH5(n-si)P&|6tz5MBmT!cw)ez94pTvXWn4t^NVUb9XsEWUX zXS+Q(@lAb8s9aXoa9u?Q zLevtY6-=38$T_ix&>yn#! zu;hlg@*0oz%9o`HLeV`%F&Rn1s&20HU-iW8G~;40I#vJpSf`tULr=C(j9STDmR)7< zByV%IlAp<0RR?v`>rM5`DrraxB1G(9YVtY)Qlw0W??U%i#5rQ1U1zT!iBPym9STSf z^x>{;-ltHbd3UQq1l)_c8N%G}Ez==6%9c%X=z5XGJx?tcR< z8H@W($P8U|&AtZw_uBsWAN!zlnV$(Nh+GP915I#6{b{`;kab$X7x{?zTV8v?dW5Lq)QqCjQhp4=+F$>cb7w5eAn#I0LLav%!Q`&R^A$a zsIz^Iud6ZDL`;~%H*3M=4e9sRur!lO31S3oo>;yFP%Z0wg=BKCZaR4m2CiUA; z+*L87t<7ByEc3>O{7w}mKE|lf7++(V3}w4fIGoJv7|aaT)JA2Um)q8n5i)kSxh=ps zH6WmS%TZk3HZBq~#C_YVMG$UHtQ!>35@E}>HaX2}PD{=|&(e}4Z@~`wwmMayYVvm5TeP5< z;%=|Ii;|npVomk>hK2=Wy~~@5p5iBIrj4~O6mZ=a%lx|S0Iwi;rmU9b#k?)P`f`73 zQ^4=`(Yh%o9UP#Y5ph)t?28SggF%FT!&H`H_Qg#b@}+V7zk^r#ngvNLbJk~}L_Fkf zZ_VCefT$7A5BZ6mUP{pl0~p#>eNSsyi0MQ`@JZKxb#ZT;r^j-JUlXIksBI_1r@Iz} zPY)G`je%t>VNPaNz6uA=463{l1S#PjkBnOA@|tpiPy%F^n-pet!-9 z{+R+=P=Hja+u3dN_M*V_<2Yg)cO)MnrA;WaTIcgZ2Y#8*00pT6+PM3fPqC#20#3Hv z=jw{%g$YcA$$hPv_F1^!ti`4UP|WQ(QlY1EQH=6(VD0{eaXjI(nnDjO+suei7-!sd z)fX#Nw-f)U>gk`iy>12{3m(qTvB!U0P*)o>%ySICw-ebv-A1C|Np+e+Lk^8M$Q`dg z^#xfg8xbQe5Cb$g%j^06^cqc9&u0lY;XW;CTC=N+K%h4FY&1I*BW}kj%kGw4f=J$( z`J#I`ME6he6GjI%@kfYr7`hNhAS4gZ3!(U)QkoLolk671ru{3K79FEPL+1u(uirw^ zTt-t4*LQ*HR>41OUw|+gx|G`mht1hzyNg$7AOuTe{@9vf3kb{({T%d_1y8haVUvBN zZ-nt!5u*D9$pr25n~s$nAHM5uW%4lAvywU6LDK1SJ+JTM5rq-lGpTC2EvigXBo_f> zVC;g#WDcI|iI}KHzDVZFLWetWOXKDCb@85QRkjmMPNp23W;W6_G3(~MSy%7VT*_ruwQm^Qb0lj*6#lH{Hy}BMLUEsKa zk0?OiT$!>`bhmzf=*{xccFU(UTk;6q1UC{YB#S1d#M4HlJmsCZ=(#QK9dOHd%!Cd8 z6es)b?=0tIrt{A>^D}gU;Ugd}X1`qf?kzFlJdc#*^V^LLEMH>{g^s zb7Ju0Gz)UmBn%&D;7oz)PB%C&!Rp6g-RZqU%NOA}wm?n|kIx-{2G{bjvFKWq&R0pa&Z zQLQ@X@l1_m*p7IVw??V%{Ykyw=m3>Mcvq&!%E)qvWd8pCdUzx_$M=%phe?VLwE@=j z4UPH6h<#>Gn60yr)`&FACfMtjkI&(Xm8OI-=m%z z*TIO2)8<^|RmNRZJ5{{+9tGHD$8g$_6qBhBSCoR6p<*c@`q)z}V|+aexv5skG|T zT}5OSZi_(oJc^H1Fv$-J>pLv|S(Ho)$^?p3_e`xjI9N zELxH$o6FHtpvZynxLvaGFky46adp&e`{!Q`wCx4BM`q+t${oIE+=4icL+KI-8=sUX zi}m7$f$mi4#+Io?>>H{GnWc{W;ua);$^KR4jpe1Z*4#5v0)z~(u`TrXb0&>;mxFcwXSQK+ju8XFCcfVm7N|~^9IEbKE>K$V zfM%4GfrmhZf{{>_5y8IlllC|M)v)+?iyW~P88R%}RgAI26z?6r-t-r!-dMtAvrR8f zw6etFv8y{I#7G=rCaQ^?e%Z95JDT`WS6(4&)JO>&nY9WX9lZ}K_2_~w4u)y*f6EP_ z;KNIK6Dvg|FDbqRDcn*#n;P@D;L*0Vx8#sR0k*KE=ST&p^IykeEOCGfadg-a_ToF{ zYLsw!N$(P+jVs^qBuUl#_*KR*PiX7yqx;N+VJuJR??UcL;#9p;q(_TAHD~*dUgxne zPR!-cpE=kO0dZeJd#d1F#z?EskY~M0oy{&)@Tu$F;;sV&k}60qEgm9pGW8&?>s|L{ zSxiVV#r1@S{!eGA{^Jn_@A^zshyOL<7? z%=fsD`S^I`X&foV60F33<+mJvPJcbubH_tKl%H|qTIwV%gfCqx)_@SdMGOZa&}-1`P3ZjrRSy^WUT8OSG_G zJ6HL|&hR?OJS6uzO6?nFUTWhf-oBi7Q?hiN-c$vMSZD(xdS>YZDS_oVd6X*h zt1n1+7|s`AC5x#O6H6YDfVt7?^qPKYTLJP8TllYHRwk_9004jWUlt(ols9J9P>Cc# zP^{S6J$=O|7aCo*8web!X>x{77^VEsL&=4(0c9GFT5T=8m(kO9)RZ4s<9(we1EaEp zEX@?!r&JSIpFLJP1vlf6Ap$~Tt3~KAq$yoqA$iEQ#s>_gP9YplZ#n{MU!fGzQh;u2 z``i_6ND(Q}kC9uIzr70YF2>%1p%)@il28D&XvvNQ))?hdHM0-Au=-3 z=qwQgW#X{1>j9i0RU*ogm+S>cKB@{l8VYb{IVT<i_mek$cDRT(_{S})=}tga@suH6_m3t#qs0rI zcm#glN+*+W@7?83$Oy+*9ph0nQFnjn1$K)u}GG(YOW3jlmPTrd!}0@Zz{HU`0q{V37*Xpse`ovy3$!lJPy|C$yogp*_`gGd-p zU(EKeAv;dLj7Q*P#i}d>#23a?<)k}7K<0{*Bu!+089PK<9RtmgGFN?zKz1=`{yDqe zpUKVmJF-`4)Ssdm+Y7u8CQl6T2L(AOaw_HF>4WqGc6y)z^0UjwYO^?6@FW?nH?eNiDJ?I9xq zfbnwca*bcZFa!|V+x9T9kZd_UK4)vGdbn5ZH}5m6UaM4g+8vHi&wL{JS-iDW!D+%P z%Eokfrm&vrdYIo%SH_<0%_J5hv{y<&Pfsg}G%*YiWw3J#3hLB z-IhD2(84aP7wm;H-81>YHslpdg}ExA>U5vMmD*Rezz0nIH877TO|R55ux=XoM>on_ zUCXkxt^%8(q{+a%_L%||`a}9;D;-i^k>TB;0=m~4x?ZUn2*AH(82)Kt7wG&g(VLkn zEiXa&vC{s>3J6s0Zn;_Ehs{<*5RaY7PI#yTXC=kTq(xPW?xNoi0NqvT<|KN1p5S@vWqA5ds@1ln3$VZYUIrF~q^!&K6oa)&(4Ks#hYGz#SkyN3%J(~Vk z!e^9L=#YbJL|39{94|WojM(?@bJ-4T73kDeNkif~Ftql_ZvZgjf2D`l;*P%0G&P2jg*mx7N6S?m|NZ@-|kUe2!hyQ;?UZR>)SMFeN;#3^-pY z(!G)Ss^F$z<`f=0zG{O|Z26S)SKkC>fv>1|&TD11BSsHr-CXzGa z!mr8JSRj{I$Da@F{MnU`pOcsqR9PT_mn_{gyYatWq%pnNpf*=xz`s@f$^q8x7E}1c zv+!+Rhy|5aqGR>8f&~qHTX8k6-QJ2yq2Q$@>Yo1je~l<^T1$Jhx!HN#;vtw>8sV)! zZjIUTAzbqQXzqVR!oVM2;CjU)M%)8*xSEJuA-l!@`II&I)s3$+& zzID1T3Pn}+RkOWE=_+!3&^>qI2TvBLHlD%&x$547!@*ExUp zRa&u6SJ!tER%m2Oj7V6OLqtfi87|rnS)S4JN^Pv7`Ysh-zX(c|4c>RJ2uRQs;0O}wW@Y8Sa}DJCiuuw33Ep2xRAr{=Q$Faiq^Rgq&_!E| zLSg@5!0WifEMF+QY10|c#hMoJ+o;?7jLOYK`1JkPGgL*I5g9v0ZKqei&%8$@Dx~3M-vdcf!kyex@Ij zKVM`vBX)v&m}{t+5%V*rLws2;eSUH)?OG8rbJsNWPz>-^>!O0}CGr2n8h+N#x!6o! z3CO|A0l(+74ECF7X#eC5=G(b-7SH?f*zznFQfqi%ERSPp9+6wG)FGwAD>1ng*1Hvs z(|F{++)@5aBoQh_%Cn^*H7N~+fW50vGfrq4!SL;mm=z;Cs~3itLutM^>y z?|o_$2X}W-18MQ^Iyol2)^SJ6c^tQr4g>v@oh~cCBv_tRjkJu6xPShb-9-r5!zE^v zEP6Nhfc+s)^6NKlkD{QMjAi4S$VG8h1)t%E@#gMg9VrEEFa)Jvx=jvDvj*THx* zDz-4c2hTnGxvIf>;UEv0*OBaPDgAtG_1l(nYuTIY{DFDH3~UIJ*^vxXb0gLET&$4F zb*rweoC6`TTP5P)z;s|TI?+E2t~F}Ar)@P$L{^gK;gW#`;cR1yR@<-zV(n7(5sL&B zncCN%JzJONS2SbkLiGAFLfgbRLJPVA1_z1-CVfLL1J@UEv1LbZ-?y|9CJ&hJ8`#)h zx#jQQ&HZ8a?`?RC&A*lG{>s5s?$|RpT z{Csx-+K;WK`E|YyFFO$RV%#AtRkY_BE7M(G$SI*gx{t|_0es8N*qxh_HuxjhllvLw z^=n#=k&AY+i0MZRlMAPg`|?EyPcla@XWsvk<(A2sM*nfXy9R^M8HrpG{UV8l?R6i7 zd-rpGHdeXlW%CIDcL>tm($d}Ch)CxELxZ$KcQf-wzxRLZ zt+&==oyBnPJ+b%MXAWoY{kst=O43;9r04(uV9CmSPy+xoZ}{H{Xo&FN0zOME06+=I zeh|~}%sR~W&{LmZ?#-n!dx3XNXJNijuI`1 z(hmnDj~;dTvd({!+jP3d70M@8Y1~5F%K_ZWZjQs(a62lk`!7y&|EDwSznX=H!6_ne6MsQck`u$-CIp39 z+77u|`ThK~GV^Z&agl!?{!<#>Kg7IUXtuM%kJZnoR0uBBr7HUzeawG)&-X6=)!UEs z4R{l-9}1iB*2bC87fKo8H!ISx^t@?$%dX1}ZSj9|(`oa+%>%D#z$gqB1tCS&)}X+r zuj6vqf%2b#-Ux^PDNOi7hbxFuzl7bbu9H9?Zd=_#eKAp%qtfGHgQH&?mBfFmdtv>v zO*|BdHwtd7ONo0M7@EHZ{K2^A&TC3M(Woc3zeAsA1pa5Ad@6pK7h<>{y%_aL{G5X@ zgD8=rpv{@`mXIRzo+VnL&nN7E=e_gz-?D@E`0SITRQ!Bq+FI~m1Hr3@_;>q~{j-hp z|Ckbf1;ROXa}{Vk4^zYtfq0e+3BM#;f7qVrhVnvkb)KhI_KcR`d-U96QT&s3zz ztKA-`Gw?R4_dtVU2K$|$2j0u*@L7?zTcMB6y!q&;`^6Rc(19dy?2PnjPB-cymK^?+ z)VYGGp-U>@3j9zrg;z+SNdaFyn2wldE0@!xth{^1prjmoUhi+WA9RBoAO$=#p`Oih zK5OaU!{F9Z{UWl<_#h)K8As3B_9`?qwQWmgSb4p#EHlGin9l3&sYW{b8DOa_$|{Wi zQGCf$;qZs+i)SP<3$4nR=MSw7by>pevmh=%lIx)YTX(A05U`1fuE!%I0s6dOU1dpS zLa1Ec%KZ+1#D|Pl3*)ZuWu}3OCw`j_LZ0_GN2o7HlH}2JT7+rYO`jsVz8v`HsarSj zRqKhusOgy>0$B~+2aSp#cr4kR7f;p~U0TSl^i}bS514M4!1wCBV_CUFt+0TUZb_HH zTdd8coGuUArtlJt6ht4vB2+OHl+ofb9nP&T_r73arB|)jj&XlPJG~1sv$>oech<)F zwsJ1Rmts424)}&vb`Mu8%6`2AZf&om_;mC4#qXU@ignMF4b|GwIBW0D()@^sniG41 z=zeT^to;#t`f|{`>{LY)aEAyTO37w>+sP?fAgIMlF=gUn5zrE?rQLLV^sC#!V5a-X z72>owt1T~dyC=$?#s9g<^0C3Blwf3}CDn{@yR&C2lU%jcdc&DdcaLP<4-rT+p<@5_ zf&5`}FvXFz?d(uh-Ni+jujHz(`R9C`w#(jRR)>nD$Jz3ldcytHTeO02x^|^3+ zs3tn%?3||F?ZrjLId2ML3&%xROu$La$&-dGmC^X{<7J7*WH;zQ+&lbBcc#3ww{-w9 zp_lBW1f*nh)R9+65GSu(72)@ClY9dgmk-Tqi|BIA1UTW5@RTh7r&9mggS2&jSrl*P zqPGfz27m^&*Y-*nA}2mcN1=0nu1Z`XcLDq!rxjAD`fwpF5$m6nhF8^YkBPOJynyy{DrgDi8csQ9)7aIu27|?K(VGQFBFiRec=LpMyO&^EZwo(S1hNkjy3FZn9Z*-qIiip#-+6 zs^iq%)ZH|#T~C*Vq1|0N%7n+z7(slm5>y_oSq&TO&%k>LeF=tVz?6mUN3h1V5nfH8 z&m_5?kLU7_6^r9i#=)lFmBoO#J zlNk7|E#<5X5hcL0`d;=jF_t0L%L^SvR3n|=qCFE6>9X^ve$-d8joJwi#to0 z6Bj`F2aF7OrmmSn+g=~NI~3|pY7)?~#d*9;OhgJ4ouF8KxKl>xPEua!1{Fls)f9Pr z+vhv5kx{-zzHSw_##BI+)E8CLHeg6t;D1=aBxk)F1^mXc zP3YIf=tF7vvD}^9$egzJ+oGch0EVHHx>SBhHxUrt?%(fn{s7?8A3G&@Nrq~&5nbm@ zp5(GmC?f=x6IWe-HC(DNwPJ)^gkuY(4o#PEeCp;BTy@^(w28&l**tE!H=tUzyqQef zE&<+OMFsIfNI$uk*C30jQX|s39>Eix;h!Ug1Vc(Gjw@)&M+{NMca(89lY2*X(+Kswy7WvBz6|i)xH!x zi5XC2eRL3utdW;Z7>5TbwrFoon7{n$t$L<)>328Z5g3Fs^!#^W`pgDDn= zE6NcAv*mlZXZRd&xtG$lwdOQmci}zWtdeCb-jKm?EFL0J0)8C|U;w@dx!*LY*!7WT zXXg$4Nd2y?8`HbbjF_dxJw30av~(@SU5q@x(bUGa-|zmaK+zRaW3bWg%sMK;c{e4p~DKZr5t-Taa!+#zHd z;N)w;W4I92E~14O;H~Mb8E|`J+`6620MlLitF_KWPe}EeGKHVDsg0_RYL05WxpjZ` z+0PQr?SU1N^#Ia@L;#p5UWt_@v$k>g)Cd{|8N`SyO~|f)K5Q8S;UO23dU#Sqm6yM_ zp~5hvMC)Yt4xm=UL+BmuSNP=R?oLq=LoFDNl193?IR5kt+F zdEVJ4GD0@iY0Cx})I!TyX{p4g1?bJ$Fcad>ZTHNC zPC*th+;mx0ujd$&EBjWCzC7fbnLnQO)O-b)ukEoOy*pGGFc;2uuH!^XR2V979yiCD zZv8jps`F%JCABTY+$*T?fcFYgHnLu21tG8B<1|~D8p^Z3JsMw3DjCm16 z#HSml*`^PcKzKjZPhZ^jP4|=UWe@v!t0pDE?zY*hg|4RB_p^3`psAIno5Iv)2V=40 zT%Q*6;u56ZOfID2PL7+UordfqSB{oiBD7n%CuLcG8-JUF?~c?imdIbaN&@ydol%@R z4@(Y!DH>ed89i<+mVvITkm@|bz}n_skIk z%U0j!LPiCaLID-kjDUyrY}&==+3oMQKYq#VxVh41f5tw1Vrx~4@Oz@FB0FQYuj#J@ z?+8ak@$jf7FhcrXs1pUZ4odFYkqaha0kRxgv`ISfl_HtULv#GvHNAInSQ8(T|Q%oFk(^I9GB?DE?ul>(}oSrxWc zKg_Jt(zd@MJJOn1lW8k{yGcnUZ)q;yMy|1>d;VtV{ja3~3kba}R?Illh~f5*MMj3U zKNKSVk*a(Fs+WvKj54Z#fUZ!e|jJ~rz=CqYGHkO4LOicbjiWw2pt$l?Cux!R5ldxEG+eHy(~HC zUv!_*8$-onhs)15iyNSL6dIEOjVNw@0VJpGt_t*2(9k0QFIlS2pte|Tv1au;vi@=l zqRTd;Q3PMp=+ms}fwzl-TTk<(8G^v`Nav(J#1`&ZP2hcR2L8^kHo;J$eU_^8M7@Xr z3AFYm4|x}Pb<0709qr{dpXk|nJ{3|Bc$SHkkD8Tz2Hfao@=(%1Y*Q!TGx53`*MIy6 zNU2PZt|-O)m0K$Fe9+|HJRf(f?o#a>j~tT$&`S!V)udbb`Q}TQgpzKiPUV@SKBVu{ z{9Eq(wXCaAP7LR@T;3WC2$am<@1ic7xUU91<5_0h(TcC#UMhYMehEQgMe=!uoM4R9 zD+=`IG>KNk7W%!Mmds%@d3!fmLSw3Xz8nE%CO+E`Ril!&7am*F`V=RhN``k?a%s=~ z4DZ=Zxp>^67kd@r4Z zWM}`z(4^9~^=kGcGwuXF64d)k;)a&(Q`#po7o4yxkyqy}F%iFX0;bYn==U-LjUU}tsFu0WLg6Yt|lHKL6EoIzXnAHFdD66a90ILVsiFC`S6+B&a zj1q=vy;pNDFXEU7_ts_$b6zpms*}GydebyhQ}*|{tn;?qmF?R(+x`8e=RFxcv%@2A z-d;ZDG)VKaToXe_f$z1IAJPi20G8tRP(cj9mB;N|-s^ob84thD1bN%vRUoeCkbM4v z$IZ>IxLwUu1Ifb%f-H3xyIjB3yL=%!CZoJ`yNV995_&^=*H~Nn*q&!RL%ntosP!2A z;U|j!h1jn(@fV2SYdfw-`EUjd_VF-2h=ghKUh_HXVZLjN`#F6cpvC?AdXHir{^c7t zthF1BMJn(eEOSUH`lvM`dS@M%BW)1>n31_ud6aefc3bMSxwTY&Tv3rPsAUyxjmTZo zRlmTp`a2i*vB4wtBS?fu*Q3zz;K6ptO(wkEQ`C$?U1HQWqjZJS7u1)!TU=4Xt0&y_ zMWNVJ@vc--eG$RcL*HGYePc+r4(6XsQrw^iGPG?tI z1)vKx3Y^zBv5k85^HCKiokgMsnfJ#x!0C15lYBsD^W~te4hj)~``Vp_+f!F>mX^?^ zbaHHRVQHXc!Vc%bk~ykM$l`bpWGUcn(JrN_{rpA0A;fjBihqi3RmG|O^%T!r9IQ3( z<6b$Gs4X7F?a8iUR`Xi!ld!|6fR`q{9}Sd0#LuUDov<0#36v-wb`W|`k1QEng_k#q z4oX3_R5LID8cxY|*QsO=FqeRL)pui&! z#qCR_6SJBEPkpa4w)9WM?gewr@zjsVMaRp8D(fwPR$O;xLz(l>L1ABgXaA|eH|c=$ zWLY67?NPZ9H;loq%r>J0oTj&l5BBaGFPw$t4Z6it`dL)RXMs50;$SQ}ANMj@!$NU8 zBNth@1r;TNC0>=3&|+h;vS|asQ{ieagg_LAE56x4XrNg{1SDOp(l5GvO zNH~jAT5H1wVpD?;$36&ioNse7vM^h4XvY%q?(lpR$6ZR-u`0F2oih@u9?zyv2>Z!~ z5ZIOg`HbozTL~H=9(2%031n7n>DF&t3jewB@uM5l>g{7E{P2Wiub-#FAZ%vf)Seym za?0j=)v}VqWK%?R+@id>w48;ehd@kEXBTJxTMGezfT%I|Y7v_> zTM6?QVqo+ojb+-#u|ya3aR}3?=y@$yL-zys`R70IgBKt7h3jYP?dIZC)#u8wUqgXj zBU{w!?m8I<3zC%6){hQGm7jXL+K$GhH{QhM1HIEL4(0Q=*Kd|I$qrk=9ywCv&oK}H z4C;mr6QA%1me3_Rx#vR_&q_KlX;#9b-@Ty87(P4wkuB;DWneecg(baPF#k6A_9WcL zn1^TXJRb;b89n_bY#F|l8P_-eY7H3}bTA-45OJpl_qr!sV9e8(kh9*2+Oj`lEU%<`+&8a-TAMtbZ=+Kt42v5-+$^lE&~dVPukSPf zQy>uMq6;RleR?j{hBH6ry!g;+@`vI!SxP%=6u@-! zN2nTWgrxS_XP;WzW!Zf07;#PZH2*S z*XVcjZ0#OSI6ZkpK=~-T*t-Nt33WrwcO(?jNa_!b3(MM0H$ZQot)r+}{iXI^Lc_Di z(A%Mal#)!@LgoVKuTe#&k!a+=ps_tEz3FnArTdk`?b80zD8R^S_q(M@!C^J!&_PrJ z$IabV>46p-Vqi=a^}P7>18DJjud{JbPznq$04~|x2}6&$Bg@j`N%tfHO+Onj=V(m&aD3Y zN`APr>SEIf0LbM|pG2N}6zJDaW-{$2h^>uVe?V0~izYN_BcF|bGKz1bP z9^cBILccxmUA^oIE9S$urBEGNPq?#aMzmY^a$nCc>3knO4_CnzYf<59w$lz!v3y&8 z@PXafO+QAk!0oqhL7?(0n%&~C4|^>I}6F-F091 zt+x5p81j9uc0cFR&JbH!Tj2#@$Vbs^n6FK`+*B)HWbixAwyv1uPM&}D10vT3}sd1apQ8ecst|YxrQu~7Rkl*+X zDj2`jKKfdHobv*`rw`=QvQ5y$hSt56EAb!-i}(<z9o@cmYmnsI5t&wzdup4D@B+s7nd7+1B&psGA@JDizJ~ zg^$QLVIA#_T;eXwgKWR)E)*B{Bg6b;K=Yt4yvl<M zbrt2J=|WMa;fRQ^Ye$$7#0I0xSm8A!0|t3fsXyqYco#T~mjYuR)zR9uwj(h25i{+| zSTNiv7Ir_&s58PHWr5vL3lez5f00prQ&Sqh2ibu;FwZAb*y!jcVIQvJ zVP$X+DfyyRX$|Ndjjm!CIdp~=fYQke_PnBr6hZc-jx&^_O;-#fvXp{x2;YmdwA3fK zJkC)9`^NT|*fObqM|D3aK1wCFW`7kgdQNjhAH!buE|3!G8EFcb0k@0YZ3O)&+dd!% zZ>rctvbYpNsx1)v&A=dwn*DhsX_f4w!G+<{gRRBEk5R?sTMA%E-iPy(ngRS9jk%~i zWXkH;N}bIY$+{CYKO6~v;EXGKUs zJicp%KWK(G3|h)jC@w4-U=HVWjmJouh<;>617;bLjf3?fj#J6s2nuT}#@LiQ>ZzRt zeL$qvM?w#|rxB9)^=CLFWIb1KN`2rG*RL*cG=C;_(%@CnrQOen)f6nO%(aL9Rrk+> zMxdJuZ6ym{c8}=gAy9e!<~g38EG9(6$%(@*w)9P~0+p`La?1+kR;Aq@@_Ke;Fw-LOJ5;lyRdJ(g$5N?0Ah4`^W9BfebP=tn~4QD@GAYuHPr!@YWG@!!$4&D zP@kAG7Iq!#%*z6X&8%u`19aF{N@Kbc2DJnhT zRz*vUPExf3Mdnp?;~p-LML~Vx7#$d#xtX8ZYu%!&vO4Dk1k+&mk^F?O-8W@F`G~?D zXGCEc91uMGS{klf{%nhoNUk`;+dHOM&HA}hTvSvf!G}7Yrs!}#&$}Orz&AmYte7$@ zW0mgj5yRi{2U(;J!k@!;UbKwN15%rDEJf29{5b{!EwU1wGltOiP?Y9&6sO7`W^+74 zIo(T5u98DcXs*2a){TogF}~fKZ?R&k?)M%PzHJJ)pVb@?E>OoQEn3@Jl~1VjJkiwG z=OJixi^e79D3WqCca~G}B5C1CcmoE;2sJ9)?^b3;)8vZi`i0rpHW_1SlkP*kvE{kh z4T8&5*~!1H3^|&CK5%s{s8KU+4N%}?x#Enm9A=!V$S z=J~)4+N35=m4bvQnnMc2UJxU`(SyiF7|F&?g;Wvkfbf0>3?a~*YdvaI1~JflhFC8E zj}_N3hu(>OACt~-N{2lD$da`1NveV(N!m}sr-#6|XGR@~wvd?EoN%}4SQ`XB@sfu) z9;|ckcL;t~_~M`LjGR2LA*j=stDrLJIE9PzJNtyosebPpj=w$*K*&R=lzPn}s|?{@ zGO`_nJLP>T7s!Zo!D3%6Im{GfXTej^qYC?=rhL;AzrJci><)jgYu%IROn$%7Yl(!L zpV+WFp))H%HdG@MiwU#Z{DNaJ7>ocUmA&!PJWms|MC<2jS<`PcyZly$=)bjtAqLM* zXg*q7Ye7{DKzN%S#{t{ZP9egvB56{V#e=Ja+_Q*4_FD0yGVx@85r|~mB*0vBrKXaB zdh^Z!c*%3Y#Y}&a!-FSw&y7@<{7K`J3XMKYt$?;)lu30npj}8^4iZCvt_uK5sZq~j zu2`C_kl#|1c{Dex+C*EybOty4uiR3~IM~gF#&+pMQrMVqrko-WpQ)l5_LitioS{IWBW^qf^ z0umYwk_$=<{p`*63wWV}{;h^2?9`i^S%{SV_WwL9vXV$>=0KjIqX=#l&S zzt-1dE8^n0_05Ve!CT#TAQ4;%`#`mdY2TCAj#$n#T2aBo2~sEcYOFS=aHYt$(&K-m zjS2j*v5EV9AGpv>+rlt8Y8~D)=}8v@u`?ee4)<5Rm-!zS00kIH8ZBsVmNJy*OG=Y3 z0Y$rF8fc{ApC_-l8hX^+L}AF%ygcIF^vXyif=v`-0A5A!NK=}kvhry{}^54OomKZ&35O?!{3 zMPCx;)6bHMArLYYn4iWKL-{QQa^bdlwEKm3Pix>1tPYaT$mvCkEODfd;=;Os=|(UA zfO6LV*}AQv$gj(@j}a&&Bs@p^04nov z%r3}2U}smpiVDW(=|s?~^6yfyw2meh`oizv;1JvDp_}q4C1vO1M?whGEd`N;9~g}y z0vg4U0G#Ug;_1g8^My4d^+G3GDl>0>49uV+05ZR=IQ|4jID+}OJq57F8SM1?WQubW zu1!U%tNaz{XacuaTq*c!B<~huOnPRskBI=!Z?|U9{&e#c!hXYub=#8MQ^zQ@0Op-_ z!KinCy{7PJpUdK#!gOk1Xi|nxa$*uM$ZMhA+NIpq7Ljhey8OkF!9{-l%E&C$kwq#> zFppdR*ZxW~@f_W(lO6v4fZ1ns*&B8OrFF8D+5L9xhODu>!MB6iJt~K`5Q!{Nm;1iE z?;b>KPHq>;?=m*?5z9$gjecx)cG~%yN@$pU@V2qh_Zz>Bn6b4juc|~{TomHtK&MX#E>-H#l%z}8{FOHFWNbfQy;H)KyS{1``y{gTa+S4M6LB%U<@EV&F@l0*xB{1 zoeU-E>+#v2dssx9>hi!|{g(snq(}{7QkoNq$Sy$dRNt`IY!;n=aL7|Q=b7NU>NT#+ z%uEx992$h-@Pk>E3M*oU!d%Lu}za|Kn9rW0L=BtJsud#mMWWmNveZF zgEu??PoySaaE^GU11j1X^RqOcU-G6*m?6El_O~&YRg(2DzcR`t?i?#F9@y9-)=1u# zYu6pCT=mp;VxqHuBR8*-=s?0=kd?-G;>;v>&T=Rm6{-k7-Gvgxjw90kw0yDc7OM5_ zVDnhOAHNB6k2t2=u zU?>JxhrE7_i@F(0EiV3}do(If>s1Dx5MlQuQAC8+K0nb+-o{&HJ?|S$8f|Ex5gi{` zEIF4Xe=eh`RDfP@^070wMgYDKZRjka>FNj)(lV;v5!>#Da}Y!>#SG?mk<<*V7~X*s zNvM5;`y7w&Zf@^Gm^Hh)4kbTo%PF-N)med~-nG4BIw+61#H1*uwc(uAR?w9CQtGvt z_C1)4xaR)PxCcPVA+)piU6k+u?hOH-@0@1I3^?HV(!z4p3Y&^*5&e}AR|KQR%y}!m zn)}fElCnB7iTRWp=GnWx7x^qGy>z%q{ z%u?BLYGJ>F-%Ee&#|9plWsx0zk8~J3oO^#dN^R>g%L6XiGvBw~ml=(#UR9MJ`bAv^ z&%>5Jb4Da5W_I6gJJ4P~d%e=?ITyBh z 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 V`jSQn=i%?+-pVLT*GRq({yzkvAt3+& literal 61467 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
y>Mr$OSoepOBX8#*+z7*enl0OeTqJPm_i)= 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

*p)v0T!i-^4Hlnf&|!D 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 R)!-xma?;9Dl@caF{{wb0-" or " />" + end + + return "/" +end, { expr = true, buffer = true }) diff --git a/config/nvim/after/ftplugin/json.lua b/config/nvim/after/ftplugin/json.lua index b58d3e11..fcaaccd4 100644 --- a/config/nvim/after/ftplugin/json.lua +++ b/config/nvim/after/ftplugin/json.lua @@ -1 +1,13 @@ vim.opt.conceallevel = 0 + +-- When creating a new line with o, make sure there is a trailing comma on the current line +vim.keymap.set("n", "o", function() + local line = vim.api.nvim_get_current_line() + + local should_add_comma = string.find(line, "[^,{[]$") + if should_add_comma then + return "A," + else + return "o" + end +end, { buffer = true, expr = true }) diff --git a/config/nvim/after/ftplugin/jsonc.lua b/config/nvim/after/ftplugin/jsonc.lua index b58d3e11..fcaaccd4 100644 --- a/config/nvim/after/ftplugin/jsonc.lua +++ b/config/nvim/after/ftplugin/jsonc.lua @@ -1 +1,13 @@ vim.opt.conceallevel = 0 + +-- When creating a new line with o, make sure there is a trailing comma on the current line +vim.keymap.set("n", "o", function() + local line = vim.api.nvim_get_current_line() + + local should_add_comma = string.find(line, "[^,{[]$") + if should_add_comma then + return "A," + else + return "o" + end +end, { buffer = true, expr = true }) diff --git a/config/nvim/after/ftplugin/typescriptreact.lua b/config/nvim/after/ftplugin/typescriptreact.lua new file mode 100644 index 00000000..458f3e8b --- /dev/null +++ b/config/nvim/after/ftplugin/typescriptreact.lua @@ -0,0 +1,16 @@ +-- Automatically end a self-closing tag when pressing / +vim.keymap.set("i", "/", function() + local node = vim.treesitter.get_node() + if not node then + return "/" + end + + if node:type() == "jsx_opening_element" then + local char_at_cursor = vim.fn.strcharpart(vim.fn.strpart(vim.fn.getline("."), vim.fn.col(".") - 2), 0, 1) + local already_have_space = char_at_cursor == " " + + return already_have_space and "/>" or " />" + end + + return "/" +end, { expr = true, buffer = true }) diff --git a/config/nvim/lazy-lock.json b/config/nvim/lazy-lock.json index ac6f5105..ec792799 100644 --- a/config/nvim/lazy-lock.json +++ b/config/nvim/lazy-lock.json @@ -1,7 +1,7 @@ { "LazyVim": { "branch": "main", "commit": "879e29504d43e9f178d967ecc34d482f902e5a91" }, - "LuaSnip": { "branch": "master", "commit": "82108e7e31cc6fc223cc5df5cae6d89f70bb199f" }, - "SchemaStore.nvim": { "branch": "main", "commit": "d9de9914da37b54a53edec6923e1893c2262e236" }, + "LuaSnip": { "branch": "master", "commit": "2dbef19461198630b3d7c39f414d09fb07d1fdd2" }, + "SchemaStore.nvim": { "branch": "main", "commit": "015f5a51b95fef2828e8739a17c42c93877a3c90" }, "actions-preview.nvim": { "branch": "master", "commit": "dd63df1a4ed0ffe1458945ee50ecb1dd02b605ab" }, "animation.nvim": { "branch": "main", "commit": "fb77091ab72ec9971aee0562e7081182527aaa6a" }, "autolist.nvim": { "branch": "main", "commit": "5f70a5f99e96c8fe3069de042abd2a8ed2deb855" }, @@ -11,34 +11,38 @@ "ccc.nvim": { "branch": "main", "commit": "ec6e23fd2c0bf4ffcf71c1271acdcee6e2c6f49c" }, "cinnamon.nvim": { "branch": "master", "commit": "c406ffda3a0302f32c23b24ab756ea20467d6578" }, "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, + "cmp-dotenv": { "branch": "main", "commit": "fd78929551010bc20602e7e663e42a5e14d76c96" }, "cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" }, "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, + "cmp-under-comparator": { "branch": "master", "commit": "6857f10272c3cfe930cece2afa2406e1385bfef8" }, "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" }, "codeium.vim": { "branch": "main", "commit": "4063291e335e74e9ee2be04beb47d40b376312fa" }, - "comment-box.nvim": { "branch": "main", "commit": "c0166bf14ed00a2301e4f265544d4252d48170cc" }, + "comment-box.nvim": { "branch": "main", "commit": "a5dbf397b81914ed4c2e3bf0785a0b482ace9183" }, "compiler.nvim": { "branch": "main", "commit": "e82a48e9528edc769b1329b753eb9e3926f25595" }, - "conform.nvim": { "branch": "master", "commit": "75e7c5c7eb5fbd53f8b12dc420b31ec70770b231" }, - "crates.nvim": { "branch": "main", "commit": "ad837c525c07f228179352e1629c902b3cc0efb1" }, + "conform.nvim": { "branch": "master", "commit": "cbc5745bf7519acaf3a5cbaaa677fd556aa813d7" }, + "crates.nvim": { "branch": "main", "commit": "b9d68ba054e184dd158cbfd375574d24269232a9" }, "dashboard-nvim": { "branch": "master", "commit": "63df28409d940f9cac0a925df09d3dc369db9841" }, "debugprint.nvim": { "branch": "main", "commit": "13378f67edc112bf0d043bc0c018f8923dc2198d" }, "dial.nvim": { "branch": "master", "commit": "27eb570085db2ef44bff4f620d3806039184651c" }, "diffview.nvim": { "branch": "main", "commit": "3dc498c9777fe79156f3d32dddd483b8b3dbd95f" }, - "dooku.nvim": { "branch": "main", "commit": "0d471187f512c1fd96ed8c0a70df61a0473f8cca" }, - "dressing.nvim": { "branch": "master", "commit": "94b0d24483d56f3777ee0c8dc51675f21709318c" }, - "dropbar.nvim": { "branch": "master", "commit": "104e664dfa7e974e93200298f806d2da967c5dd0" }, + "dooku.nvim": { "branch": "main", "commit": "632ac0e27a96e77d8be47c42583fb58c3be9d85f" }, + "dressing.nvim": { "branch": "master", "commit": "c1179336aaeca82a785cade27e9b7b276af3222e" }, + "dropbar.nvim": { "branch": "master", "commit": "0383ce9122e698360f19526e024348ae5bbc63ca" }, "edgy.nvim": { "branch": "main", "commit": "8355be45610afdf79a0bab32b91ee297997455b4" }, - "esqueleto.nvim": { "branch": "main", "commit": "4a363d3bbc513507ba89f2ab3bcbc8a34280970e" }, "flash.nvim": { "branch": "main", "commit": "48817af25f51c0590653bbc290866e4890fe1cbe" }, "friendly-snippets": { "branch": "main", "commit": "69a2c1675b66e002799f5eef803b87a12f593049" }, "garbage-day.nvim": { "branch": "main", "commit": "957499b8a493974bd7002b68b1f15f7d285e0dd1" }, "git-worktree.nvim": { "branch": "master", "commit": "f247308e68dab9f1133759b05d944569ad054546" }, "gitsigns.nvim": { "branch": "main", "commit": "4aaacbf5e5e2218fd05eb75703fe9e0f85335803" }, "glance.nvim": { "branch": "master", "commit": "8ed5cf3b3b1231ea696d88c9efd977027429d869" }, + "go.nvim": { "branch": "master", "commit": "24d2fa373d55d9900cd4b502a88214dc17e6fab6" }, + "guihua.lua": { "branch": "master", "commit": "9fb6795474918b492d9ab01b1ebaf85e8bf6fe0b" }, "harpoon": { "branch": "harpoon2", "commit": "2cd4e03372f7ee5692c8caa220f479ea07970f17" }, "headlines.nvim": { "branch": "master", "commit": "e3d7bfdf40e41a020d966d35f8b48d75b90367d2" }, "highlight-undo.nvim": { "branch": "main", "commit": "50a6884a8476be04ecce8f1c4ed692c5000ef0a1" }, "hydra.nvim": { "branch": "master", "commit": "55de54543d673824435930ecf533256eea2e565b" }, "icon-picker.nvim": { "branch": "master", "commit": "3ee9a0ea9feeef08ae35e40c8be6a2fa2c20f2d3" }, + "import-cost.nvim": { "branch": "main", "commit": "39ef36f438574db0b26e9c957316eb1cb22e970f" }, "inc-rename.nvim": { "branch": "main", "commit": "6f9b5f9cb237e12935144cdc535322b8c93c1b25" }, "indent-blankline.nvim": { "branch": "master", "commit": "12e92044d313c54c438bd786d11684c88f6f78cd" }, "kitty-scrollback.nvim": { "branch": "main", "commit": "5e0deaba10b29aa9e2af1ef79fa22ba51987b2a9" }, @@ -47,7 +51,7 @@ "lsp-lens.nvim": { "branch": "main", "commit": "48bb1a7e271424c15f3d588d54adc9b7c319d977" }, "lualine.nvim": { "branch": "master", "commit": "566b7036f717f3d676362742630518a47f132fff" }, "markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "0989bdf4fdf7b5aa4c74131d7ffccc3f399ac788" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "3ba1b92b771f33256b4969d696b82c8ae7075364" }, "mason-nvim-dap.nvim": { "branch": "main", "commit": "3614a39aae98ccd34124b072939d6283853b3dd2" }, "mason.nvim": { "branch": "main", "commit": "e110bc3be1a7309617cecd77bfe4bf86ba1b8134" }, "middleclass": { "branch": "master", "commit": "9fab4d5bca67262614960960ca35c4740eb2be2c" }, @@ -58,49 +62,55 @@ "mini.indentscope": { "branch": "main", "commit": "5a8369475cd7cd6f207a4d288406d03b0fc48bdb" }, "mini.surround": { "branch": "main", "commit": "7bf8915ba15d7a4f3c2afe7868d3c15a858d73f1" }, "multicursors.nvim": { "branch": "main", "commit": "8e876fe9db46c1b76c151202b418df21eca07bad" }, - "neo-tree.nvim": { "branch": "v3.x", "commit": "77d9f484b88fd380386b46ed9206e5374d69d9d8" }, + "neo-tree.nvim": { "branch": "v3.x", "commit": "2f2d08894bbc679d4d181604c16bb7079f646384" }, "neoconf.nvim": { "branch": "main", "commit": "64437787dba70fce50dad7bfbb97d184c5bc340f" }, - "neodev.nvim": { "branch": "main", "commit": "dde00106b9094f101980b364fae02fd85d357306" }, + "neodev.nvim": { "branch": "main", "commit": "505860e0277611434f4e8d61d3c0d373045e57e1" }, "neogen": { "branch": "main", "commit": "70127baaff25611deaf1a29d801fc054ad9d2dc1" }, - "neotest": { "branch": "master", "commit": "1ee3fcc150207f33dba8c9b3f478e5a0148d661d" }, + "neotest": { "branch": "master", "commit": "dcdb40ea48f9c7b67a5576f6bb2e5f63ec15f2c0" }, "neotest-bash": { "branch": "main", "commit": "2eaad2ae4577fadf4af1eec32ec169d0fb2698bb" }, + "neotest-go": { "branch": "main", "commit": "d29d20d912aca81a07c50022d880cc66f0d26542" }, "neotest-jest": { "branch": "main", "commit": "a394106cf053eef86d65ae04c4b93a1a7bd60aef" }, "neotest-mocha": { "branch": "main", "commit": "68f0e9768a94c3ebd4d5e67b2765e6a5df017d99" }, - "neotest-python": { "branch": "master", "commit": "86ac2bbc8a4da3f203e56d9303d6ed1d7e50c1f6" }, + "neotest-python": { "branch": "master", "commit": "2e83d2bc00acbcc1fd529dbf0a0e677cabfe6b50" }, "neotest-rust": { "branch": "main", "commit": "3c06f239ad260f02c8678141e08b57d20fbe2c55" }, - "neotest-vitest": { "branch": "main", "commit": "15972c4791b3d47df82311047835803a072c1da6" }, + "neotest-vitest": { "branch": "main", "commit": "87e91bfd9419a8c74bf0d105e2ae31b9692daf0b" }, "noice.nvim": { "branch": "main", "commit": "92433164e2f7118d4122c7674c3834d9511722ba" }, "nui.nvim": { "branch": "main", "commit": "35da9ca1de0fc4dda96c2e214d93d363c145f418" }, "nvim-ansible": { "branch": "main", "commit": "d115cb9bb3680c990e2684f58cf333663fff03b8" }, "nvim-autopairs": { "branch": "master", "commit": "9fd41181693dd4106b3e414a822bb6569924de81" }, "nvim-cmp": { "branch": "main", "commit": "538e37ba87284942c1d76ed38dd497e54e65b891" }, "nvim-dap": { "branch": "master", "commit": "9adbfdca13afbe646d09a8d7a86d5d031fb9c5a5" }, + "nvim-dap-go": { "branch": "main", "commit": "a5cc8dcad43f0732585d4793deb02a25c4afb766" }, "nvim-dap-python": { "branch": "master", "commit": "091e4ae00a12085f9ed4200a3cd04af7179b8a23" }, - "nvim-dap-ui": { "branch": "master", "commit": "7e5e16427aaf814dc2d58e1b219def9ef2fa2435" }, + "nvim-dap-ui": { "branch": "master", "commit": "a6beb3a855b42faa1d0fee1081602257719c2c5e" }, "nvim-dap-virtual-text": { "branch": "master", "commit": "d4542ac257d3c7ee4131350db6179ae6340ce40b" }, + "nvim-dev-container": { "branch": "main", "commit": "47927e2df27503debf3bfbfe90afefbac73e002f" }, "nvim-devdocs": { "branch": "master", "commit": "521d24661ffe6d1ba025debea2675c765a9c1ee1" }, + "nvim-jqx": { "branch": "master", "commit": "11b1d0368e5b23b9c356da8e5f70bb5827f27f62" }, "nvim-lightbulb": { "branch": "master", "commit": "8f00b89dd1b1dbde16872bee5fbcee2e58c9b8e9" }, - "nvim-lint": { "branch": "master", "commit": "8df53b5dde8ea80f0a039775777eae6648a10229" }, + "nvim-lint": { "branch": "master", "commit": "6427b17058a74891bb287b275356bbc445b5924c" }, "nvim-lsp-file-operations": { "branch": "master", "commit": "8e7223e138590c1bd9d86d3de810e65939d8b12f" }, - "nvim-lspconfig": { "branch": "master", "commit": "e47ccfae775f0d572ef0f3a7d245f043b259dafc" }, - "nvim-notify": { "branch": "master", "commit": "1576123bff3bed67bc673a3076e591abfe5d8ca9" }, + "nvim-lspconfig": { "branch": "master", "commit": "7eed8b2150192e5ad05e1886fdf133493ddf2928" }, + "nvim-notify": { "branch": "master", "commit": "80b67b265530632505193553d05127ae7fe09ddd" }, "nvim-numbertoggle": { "branch": "main", "commit": "9ab95e60ea5ec138e1b2332e0fc18b8e5de464c6" }, "nvim-origami": { "branch": "main", "commit": "4ec426ce4b0aad0303af44909f86e075dd65c615" }, "nvim-puppeteer": { "branch": "main", "commit": "d7e1b2d67c89d32b6ecada88ff67b539ba09f2d7" }, "nvim-recorder": { "branch": "main", "commit": "bf9efe10bff3ae8461568eee7f0d6c8750b01569" }, - "nvim-scissors": { "branch": "main", "commit": "f7a24fbbb10c1c87f1907e57de5f384cc01baf24" }, + "nvim-regexplainer": { "branch": "main", "commit": "78fff711edcb986a05a03253c28a90e32c4ce31f" }, + "nvim-scissors": { "branch": "main", "commit": "63d05e732d1403fcd7c7e1fb6b55763adcd08b64" }, "nvim-spectre": { "branch": "master", "commit": "d8906855f1949ac97b1e77aaf8d3fe12ed158ddc" }, - "nvim-treesitter": { "branch": "master", "commit": "8cd2b230174efbf7b5d9f49fe2f90bda6b5eb16e" }, - "nvim-treesitter-context": { "branch": "master", "commit": "400a99ad43ac78af1148061da3491cba2637ad29" }, + "nvim-treesitter": { "branch": "master", "commit": "07c8c3d84f67b1530f636dcad31971f569a3df5f" }, + "nvim-treesitter-context": { "branch": "master", "commit": "2017a0d7fc2d3790d823feddedada506984a10ce" }, "nvim-treesitter-endwise": { "branch": "master", "commit": "4c344ffc8d54d7e1ba2cefaaa2c10ea93aa1cc2d" }, - "nvim-treesitter-textobjects": { "branch": "master", "commit": "a97a6ea140cbe5e0f7ab1291c7ca70abd5171d31" }, + "nvim-treesitter-textobjects": { "branch": "master", "commit": "19a91a38b02c1c28c14e0ba468d20ae1423c39b2" }, "nvim-ts-autotag": { "branch": "main", "commit": "8515e48a277a2f4947d91004d9aa92c29fdc5e18" }, "nvim-ts-context-commentstring": { "branch": "main", "commit": "1277b4a1f451b0f18c0790e1a7f12e1e5fdebfee" }, "nvim-ufo": { "branch": "main", "commit": "b0741a647efd98d9abb6cb653e056d24a07e4581" }, - "nvim-various-textobjs": { "branch": "main", "commit": "779dd981e55d534a4234d9650c9cbb39e4663c9a" }, - "nvim-web-devicons": { "branch": "master", "commit": "584038666b0d8124d452a2e8ea9e38e6d6e56490" }, - "nvim_context_vt": { "branch": "master", "commit": "a14f9292b4bd68ceed433fc513f287641816dc6d" }, - "octo.nvim": { "branch": "master", "commit": "c6b008434d684e746a40e443876b646b521cebbf" }, + "nvim-various-textobjs": { "branch": "main", "commit": "ca9e6f290c25f6a3168c5dd64b9ef0a8000263d9" }, + "nvim-web-devicons": { "branch": "master", "commit": "140edfcf25093e8b321d13e154cbce89ee868ca0" }, + "nvim_context_vt": { "branch": "master", "commit": "8f7b6b46292e0819290b0d368abc3366b8a163fc" }, + "octo.nvim": { "branch": "master", "commit": "5a04268e54c3f538702ef4f03f635d69c569d23e" }, + "oil.nvim": { "branch": "master", "commit": "dd432e76d01eda08b8658415588d011009478469" }, "openingh.nvim": { "branch": "main", "commit": "5c9e851d7c26fdb236dfea8866b71fefe7ddeffc" }, "outline.nvim": { "branch": "main", "commit": "4ad4e8e2b9c797d68774b0d88f91c92183975639" }, "overseer.nvim": { "branch": "master", "commit": "68a2d344cea4a2e11acfb5690dc8ecd1a1ec0ce0" }, @@ -110,16 +120,22 @@ "plenary.nvim": { "branch": "master", "commit": "55d9fe89e33efd26f532ef20223e5f9430c8b0c0" }, "presence.nvim": { "branch": "main", "commit": "87c857a56b7703f976d3a5ef15967d80508df6e6" }, "promise-async": { "branch": "main", "commit": "94f6f03c6c1e2aab551aacdf0c1e597a7269abb6" }, - "rainbow-delimiters.nvim": { "branch": "master", "commit": "739a034046465d2b100151037401c24c42cb09cf" }, + "rainbow-delimiters.nvim": { "branch": "master", "commit": "cf626cd2f94f6c230384c2e3249352b6404cd8d7" }, "refactoring.nvim": { "branch": "master", "commit": "c067e44b8171494fc1b5206ab4c267cd74c043b1" }, - "rustaceanvim": { "branch": "master", "commit": "d03f72788b81cb311250d9fe0692f3435d609b5a" }, + "rest.nvim": { "branch": "main", "commit": "84e81a19ab24ccf05c9233d34d4dfce61c233abe" }, + "rustaceanvim": { "branch": "master", "commit": "ea105333daea50823d30842adeae1a763d1e88f6" }, "satellite.nvim": { "branch": "main", "commit": "99610b77fe2e047d2e55d70a256bcf63953eb6d7" }, "search-replace.nvim": { "branch": "main", "commit": "d92290a02d97f4e9b8cd60d28b56b403432158d5" }, "semshi": { "branch": "master", "commit": "0182447e2ff4dfa04cd2dfe5f189e012c581ca45" }, "smart-splits.nvim": { "branch": "master", "commit": "36bfe63246386fc5ae2679aa9b17a7746b7403d5" }, + "sniprun": { "branch": "master", "commit": "0079f9c4675a6825f84e108bbff866f67dd8762f" }, + "speedtyper.nvim": { "branch": "main", "commit": "2d158eed4c753995b0501a3a7a72464fbb213e3d" }, "sqlite.lua": { "branch": "master", "commit": "b7e28c8463254c46a8e61c52d27d6a2040492fc3" }, + "ssr.nvim": { "branch": "main", "commit": "bb323ba621ac647b4ac5638b47666e3ef3c279e1" }, "suda.vim": { "branch": "master", "commit": "8b0fc3711760195aba104e2d190cff9af8267052" }, + "tailwindcss-colorizer-cmp.nvim": { "branch": "main", "commit": "bc25c56083939f274edcfe395c6ff7de23b67c50" }, "telescope-all-recent.nvim": { "branch": "main", "commit": "bfd8bb3b9c43bf0d09c2a77f3a5fcbecddbf9908" }, + "telescope-dap.nvim": { "branch": "master", "commit": "8c88d9716c91eaef1cdea13cb9390d8ef447dbfe" }, "telescope-floaterm.nvim": { "branch": "main", "commit": "ccd3f40ae30dce5de0e5d0f5069e08e7d9ad6d23" }, "telescope-fzf-native.nvim": { "branch": "main", "commit": "6c921ca12321edaa773e324ef64ea301a1d0da62" }, "telescope-import.nvim": { "branch": "main", "commit": "08e31708451b43d1ef766d370d5ef17e9f0c24ae" }, @@ -128,7 +144,7 @@ "telescope-undo.nvim": { "branch": "main", "commit": "d3afc1c105535a90caec092ce27a113f77ba7b84" }, "telescope-zoxide": { "branch": "main", "commit": "68966349aa1b8e9ade403e18479ecf79447389a7" }, "telescope.nvim": { "branch": "master", "commit": "da8b3d485975a8727bea127518b65c980521ae22" }, - "text-case.nvim": { "branch": "main", "commit": "04a2ef39604fac1e1cd280989afd101615039b88" }, + "text-case.nvim": { "branch": "main", "commit": "6bc91cde614bbec6f0befbaf7fcd302415d803fb" }, "theme-loader.nvim": { "branch": "master", "commit": "ad8774ec8267a447d469b4e6603b43f49b946e53" }, "todo-comments.nvim": { "branch": "main", "commit": "4a6737a8d70fe1ac55c64dfa47fcb189ca431872" }, "tokyonight.nvim": { "branch": "main", "commit": "f247ee700b569ed43f39320413a13ba9b0aef0db" }, @@ -136,8 +152,12 @@ "trouble.nvim": { "branch": "main", "commit": "f1168feada93c0154ede4d1fe9183bf69bac54ea" }, "ts-node-action": { "branch": "master", "commit": "e37eb458378de5d994df459a53711b2546abef0f" }, "tsc.nvim": { "branch": "main", "commit": "a8f26d3d6a0faf533afb840816a6d9ac6a1fcbea" }, + "tw-values.nvim": { "branch": "main", "commit": "3808621a53f6ac9c151b77d9df61b29991c12921" }, "twilight.nvim": { "branch": "main", "commit": "8b7b50c0cb2dc781b2f4262a5ddd57571556d1e4" }, - "venv-selector.nvim": { "branch": "main", "commit": "79709f8ad99ac2082d99a713985f3da0c924f4a2" }, + "urlview.nvim": { "branch": "main", "commit": "7d622e11adbc2cac5bba62345ade9b6672d564a4" }, + "venv-selector.nvim": { "branch": "main", "commit": "fcb30164f2c4f8a34a305ead3247954a1fd8634f" }, + "vim-be-good": { "branch": "master", "commit": "c290810728a4f75e334b07dc0f3a4cdea908d351" }, + "vim-carbon-now-sh": { "branch": "master", "commit": "31a18d26fc27e7bd5786da092ed886273b4cf639" }, "vim-dadbod": { "branch": "master", "commit": "738cfc2ea6a1510fe23cba9006fef9291be70f7b" }, "vim-dadbod-completion": { "branch": "master", "commit": "c920cb0ba3dff4b1b0ed373e1c0b3007dec696c2" }, "vim-dadbod-ui": { "branch": "master", "commit": "e99dcfd5162d9b9b4b24a5d035cf114315f1aeec" }, diff --git a/config/nvim/lazyvim.json b/config/nvim/lazyvim.json index 810894d9..3eba0da2 100644 --- a/config/nvim/lazyvim.json +++ b/config/nvim/lazyvim.json @@ -7,12 +7,15 @@ "plugins.extras.coding.ai.gpt", "plugins.extras.coding.annotation", "plugins.extras.coding.cmp.autopairs", + "plugins.extras.coding.cmp.dotenv", + "plugins.extras.coding.cmp.under-comparator", "plugins.extras.coding.debugprint", "plugins.extras.coding.dial", "plugins.extras.coding.multicursor", "plugins.extras.coding.recorder", "plugins.extras.coding.refactoring", "plugins.extras.coding.snippets", + "plugins.extras.coding.sniprun", "plugins.extras.coding.treesitter.endwise", "plugins.extras.coding.treesitter.mini-align", "plugins.extras.coding.treesitter.node-action", @@ -22,8 +25,11 @@ "plugins.extras.coding.yanky", "plugins.extras.dap.core", "plugins.extras.dap.persistent-breakpoints", + "plugins.extras.dap.telescope", + "plugins.extras.editor.carbon-now", "plugins.extras.editor.color", "plugins.extras.editor.compiler", + "plugins.extras.editor.dev-container", "plugins.extras.editor.docs.devdocs", "plugins.extras.editor.fold", "plugins.extras.editor.git.diffview", @@ -31,15 +37,20 @@ "plugins.extras.editor.git.worktree", "plugins.extras.editor.harpoon", "plugins.extras.editor.live-server", + "plugins.extras.editor.oil", "plugins.extras.editor.outline", "plugins.extras.editor.package-info", + "plugins.extras.editor.regex", + "plugins.extras.editor.rest-client", "plugins.extras.editor.search-replace", + "plugins.extras.editor.ssr", "plugins.extras.editor.suda", "plugins.extras.editor.telescope.all-recent", "plugins.extras.editor.telescope.import", "plugins.extras.editor.telescope.lazy", "plugins.extras.editor.telescope.luasnip", "plugins.extras.editor.telescope.undotree", + "plugins.extras.editor.telescope.urlview", "plugins.extras.editor.telescope.zoxide", "plugins.extras.editor.terminal.floaterm", "plugins.extras.formatting.prettier-extended", @@ -47,12 +58,15 @@ "plugins.extras.formatting.trim_whitespace", "plugins.extras.lang.ansible", "plugins.extras.lang.bash", + "plugins.extras.lang.docker-extended", "plugins.extras.lang.git", + "plugins.extras.lang.go-extended", "plugins.extras.lang.markdown-extended", "plugins.extras.lang.python-extended", "plugins.extras.lang.rust-extended", "plugins.extras.lang.sql", "plugins.extras.lang.web.html-css", + "plugins.extras.lang.web.tailwind-extended", "plugins.extras.lang.web.typescript-extended", "plugins.extras.lang.web.vue", "plugins.extras.linting.biome", @@ -71,6 +85,7 @@ "plugins.extras.ui.comment-box", "plugins.extras.ui.context", "plugins.extras.ui.highlight-undo", + "plugins.extras.ui.import-cost", "plugins.extras.ui.number-toggle", "plugins.extras.ui.rainbow-delimeters", "plugins.extras.ui.scrollbar", @@ -80,10 +95,12 @@ "plugins.extras.util.bigfile", "plugins.extras.util.discordrcp", "plugins.extras.util.dot-extended", - "plugins.extras.util.esqueleto", "plugins.extras.util.icon-picker", "plugins.extras.util.kitty-scrollback", + "plugins.extras.util.neovide", "plugins.extras.util.smart-splits", + "plugins.extras.util.speedtyper", + "plugins.extras.util.vim-be-good", "plugins.extras.util.vscode", "plugins.extras.util.wakatime" ], diff --git a/config/nvim/lua/config/autocmds.lua b/config/nvim/lua/config/autocmds.lua index 58f96c85..6a94565b 100644 --- a/config/nvim/lua/config/autocmds.lua +++ b/config/nvim/lua/config/autocmds.lua @@ -2,12 +2,11 @@ -- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua -- Add any additional autocmds here -local function augroup(name) - return vim.api.nvim_create_augroup("lazyvim_" .. name, { clear = true }) -end +local au = vim.api.nvim_create_autocmd +local ag = vim.api.nvim_create_augroup -- Disable diagnostics in a .env file -vim.api.nvim_create_autocmd("BufRead", { +au("BufRead", { pattern = ".env", callback = function() vim.diagnostic.disable(0) @@ -15,7 +14,7 @@ vim.api.nvim_create_autocmd("BufRead", { }) -- Fix telescope entering on insert mode -vim.api.nvim_create_autocmd("WinLeave", { +au("WinLeave", { callback = function() if vim.bo.ft == "TelescopePrompt" and vim.fn.mode() == "i" then vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("", true, false, true), "i", false) @@ -34,8 +33,8 @@ local auto_close_filetype = { } -- Auto close window when leaving -vim.api.nvim_create_autocmd("BufLeave", { - group = augroup("auto_close_win"), +au("BufLeave", { + group = ag("lazyvim_auto_close_win", { clear = true }), callback = function(event) local ft = vim.api.nvim_buf_get_option(event.buf, "filetype") @@ -49,8 +48,8 @@ vim.api.nvim_create_autocmd("BufLeave", { }) -- Disable leader and localleader for some filetypes -vim.api.nvim_create_autocmd("FileType", { - group = augroup("unbind_leader_key"), +au("FileType", { + group = ag("lazyvim_unbind_leader_key", { clear = true }), pattern = { "lazy", "mason", @@ -69,16 +68,25 @@ vim.api.nvim_create_autocmd("FileType", { }) -- Delete number column on terminals -vim.api.nvim_create_autocmd("TermOpen", { +au("TermOpen", { callback = function() vim.cmd("setlocal listchars= nonumber norelativenumber") end, }) -- Disable next line comments -vim.api.nvim_create_autocmd("BufEnter", { +au("BufEnter", { callback = function() vim.cmd("set formatoptions-=cro") vim.cmd("setlocal formatoptions-=cro") end, }) + +-- Disable eslint on node_modules +au({ "BufNewFile", "BufRead" }, { + group = ag("DisableEslintOnNodeModules", { clear = true }), + pattern = { "**/node_modules/**", "node_modules", "/node_modules/*" }, + callback = function() + vim.diagnostic.disable(0) + end, +}) diff --git a/config/nvim/lua/config/keymaps.lua b/config/nvim/lua/config/keymaps.lua index ddff65ac..39a128f0 100644 --- a/config/nvim/lua/config/keymaps.lua +++ b/config/nvim/lua/config/keymaps.lua @@ -15,9 +15,18 @@ map("n", "?", searching_brave, { noremap = true, silent = true, desc = " -- stylua: ignore map("n", "uB", function() Util.toggle("background", false, { "light", "dark" }) end, { desc = "Toggle Background" }) +-- Save without formatting +map("n", "", "noautocmd w", { desc = "Save without formatting" }) + -- Disable lazyterminal keymap map("n", "fT", "") +-- Cursor navigation on insert mode +map("i", "", "", { desc = "Move cursor left" }) +map("i", "", "", { desc = "Move cursor left" }) +map("i", "", "", { desc = "Move cursor left" }) +map("i", "", "", { desc = "Move cursor left" }) + -- End of the word backwards map("n", "E", "ge") @@ -28,15 +37,9 @@ map("n", "-", "") -- Tabs map("n", "]", "tabnext", { desc = "Next Tab" }) map("n", "[", "tabprevious", { desc = "Previous Tab" }) -map("n", "1", "tabn 1", { desc = "Tab 1" }) -map("n", "2", "tabn 2", { desc = "Tab 2" }) -map("n", "3", "tabn 3", { desc = "Tab 3" }) -map("n", "4", "tabn 4", { desc = "Tab 4" }) -map("n", "5", "tabn 5", { desc = "Tab 5" }) -map("n", "6", "tabn 6", { desc = "Tab 6" }) -map("n", "7", "tabn 7", { desc = "Tab 7" }) -map("n", "8", "tabn 8", { desc = "Tab 8" }) -map("n", "9", "tabn 9", { desc = "Tab 9" }) +for i = 1, 9 do + map("n", "" .. i, "tabn " .. i .. "", { desc = "Tab " .. i }) +end -- Buffers map("n", "bf", "bfirst", { desc = "First Buffer" }) diff --git a/config/nvim/lua/config/lazy.lua b/config/nvim/lua/config/lazy.lua index 5c31cff0..3a20e1a1 100644 --- a/config/nvim/lua/config/lazy.lua +++ b/config/nvim/lua/config/lazy.lua @@ -36,6 +36,7 @@ require("lazy").setup({ "tarPlugin", "tohtml", "tutor", + "netrwPlugin", "zipPlugin", }, }, diff --git a/config/nvim/lua/config/options.lua b/config/nvim/lua/config/options.lua index 14780259..20f0e67e 100644 --- a/config/nvim/lua/config/options.lua +++ b/config/nvim/lua/config/options.lua @@ -6,20 +6,17 @@ local opt = vim.g -- Optimizations on startup vim.loader.enable() +-- Define leader key +opt.mapleader = " " +opt.maplocalleader = "\\" + -- Autoformat on save (Global) opt.autoformat = true --- Disable netrw -opt.loaded_netrw = 1 -opt.loaded_netrwPlugin = 1 - -- Font opt.gui_font_default_size = 10 opt.gui_font_size = opt.gui_font_default_size opt.gui_font_face = "JetBrainsMono Nerd Font" --- Define leader key -opt.mapleader = " " - -- Enable EditorConfig integration opt.editorconfig = true diff --git a/config/nvim/lua/plugins/bufferline.lua b/config/nvim/lua/plugins/bufferline.lua index 6f880529..33830a52 100644 --- a/config/nvim/lua/plugins/bufferline.lua +++ b/config/nvim/lua/plugins/bufferline.lua @@ -1,22 +1,21 @@ +local keys = {} + +-- stylua: ignore start +for i = 1, 9 do + table.insert(keys, { "b" .. i, "BufferLineGoToBuffer " .. i .. "", desc = "Buffer " .. i }) +end + +table.insert(keys, { "[B", "BufferLineMovePrev", desc = "Move buffer prev" }) +table.insert(keys, { "]B", "BufferLineMoveNext", desc = "Move buffer next" }) +table.insert(keys, { ".", "BufferLinePick", desc = "Pick Buffer" }) + +table.insert(keys, { "bS", "BufferLineSortByDirectory", desc = "Sort By Directory" }) +table.insert(keys, { "bs", "BufferLineSortByExtension", desc = "Sort By Extensions" }) +-- stylua: ignore end + return { "akinsho/bufferline.nvim", - keys = { - { "[B", "BufferLineMovePrev", desc = "Move buffer prev" }, - { "]B", "BufferLineMoveNext", desc = "Move buffer next" }, - { ".", "BufferLinePick", desc = "Pick Buffer" }, - { "bS", "BufferLineSortByDirectory", desc = "Sort By Directory" }, - { "bs", "BufferLineSortByExtension", desc = "Sort By Extensions" }, - { "b1", "BufferLineGoToBuffer 1", desc = "Buffer 1" }, - { "b2", "BufferLineGoToBuffer 2", desc = "Buffer 2" }, - { "b3", "BufferLineGoToBuffer 3", desc = "Buffer 3" }, - { "b4", "BufferLineGoToBuffer 4", desc = "Buffer 4" }, - { "b5", "BufferLineGoToBuffer 5", desc = "Buffer 5" }, - { "b6", "BufferLineGoToBuffer 6", desc = "Buffer 6" }, - { "b7", "BufferLineGoToBuffer 7", desc = "Buffer 7" }, - { "b8", "BufferLineGoToBuffer 8", desc = "Buffer 8" }, - { "b9", "BufferLineGoToBuffer 9", desc = "Buffer 9" }, - { "b0", "BufferLineGoToBuffer -1", desc = "Buffer -1" }, - }, + keys = keys, opts = { options = { modified_icon = "ο‘„", diff --git a/config/nvim/lua/plugins/extras/coding/ai/codeium.lua b/config/nvim/lua/plugins/extras/coding/ai/codeium.lua index cf79507c..e4b026f4 100644 --- a/config/nvim/lua/plugins/extras/coding/ai/codeium.lua +++ b/config/nvim/lua/plugins/extras/coding/ai/codeium.lua @@ -30,7 +30,7 @@ return { return vim.fn["codeium#Clear"]() end, opts) - vim.keymap.set("n", "cI", "CodeiumToggle", { desc = "Toggle IA" }) + vim.keymap.set("n", "cI", "CodeiumToggle", { desc = "Toggle IA (Codeium)" }) end, }, { diff --git a/config/nvim/lua/plugins/extras/coding/ai/gen.lua b/config/nvim/lua/plugins/extras/coding/ai/gen.lua new file mode 100644 index 00000000..d97d70d9 --- /dev/null +++ b/config/nvim/lua/plugins/extras/coding/ai/gen.lua @@ -0,0 +1,29 @@ +return { + "jellydn/gen.nvim", + opts = { + model = "codellama", + display_mode = "split", + show_prompt = true, + show_model = true, + no_auto_close = false, + init = function(options) + pcall(io.popen, "ollama serve > /dev/null 2>&1 &") + end, + command = "curl --silent --no-buffer -X POST http://localhost:11434/api/generate -d $body", + }, + config = function(_, opts) + local gen = require("gen") + gen.setup(opts) + + gen.prompts["Elaborate_Text"] = { + prompt = "Elaborate the following text:\n$text", + } + gen.prompts["Fix_Code"] = { + prompt = "Fix the following code. Only output the result in format ```$filetype\n...\n```:\n```$filetype\n$text\n```", + extract = "```$filetype\n(.-)```", + } + end, + keys = { + { "i", "Gen", mode = { "n", "v" }, desc = "IA (Gen)" }, + }, +} diff --git a/config/nvim/lua/plugins/extras/coding/annotation.lua b/config/nvim/lua/plugins/extras/coding/annotation.lua index 4017a968..eb632f54 100644 --- a/config/nvim/lua/plugins/extras/coding/annotation.lua +++ b/config/nvim/lua/plugins/extras/coding/annotation.lua @@ -29,6 +29,7 @@ return { -- stylua: ignore keys = { { "ag", "DookuGenerate", desc = "Generate HTML Docs" }, + { "ao", "DookuOpen", desc = "Open HTML Docs" }, }, }, } diff --git a/config/nvim/lua/plugins/extras/dap/core.lua b/config/nvim/lua/plugins/extras/dap/core.lua index ae146b18..ee9a5b80 100644 --- a/config/nvim/lua/plugins/extras/dap/core.lua +++ b/config/nvim/lua/plugins/extras/dap/core.lua @@ -12,14 +12,15 @@ return { }, }, }, - -- stylua: ignore - keys = { - { "", function() require("dap").continue() end, desc = "Debug: Continue" }, - { "", function() require("dap").step_over() end, desc = "Debug: Step over" }, - { "", function() require("dap").step_into() end, desc = "Debug: Step into" }, - { "", function() require("dap").step_out() end, desc = "Debug: Step out" }, - { "", function() require("dap").toggle_breakpoint() end, desc = "Debug: Toggle breakpoint" }, - }, + -- stylua: ignore + keys = { + { "", function() require("dap").continue() end, desc = "Debug: Continue" }, + { "", function() require("dap").step_over() end, desc = "Debug: Step over" }, + { "", function() require("dap").step_into() end, desc = "Debug: Step into" }, + { "", function() require("dap").step_out() end, desc = "Debug: Step out" }, + { "", function() require("dap").toggle_breakpoint() end, desc = "Debug: Toggle breakpoint" }, + { "", function() require("dap").set_breakpoint(vim.fn.input('Breakpoint condition: ')) end, desc = "Breakpoint Condition" }, + }, }, { "folke/which-key.nvim", diff --git a/config/nvim/lua/plugins/extras/editor/carbon-now.lua b/config/nvim/lua/plugins/extras/editor/carbon-now.lua new file mode 100644 index 00000000..b3f5dc6a --- /dev/null +++ b/config/nvim/lua/plugins/extras/editor/carbon-now.lua @@ -0,0 +1,7 @@ +return { + "kristijanhusak/vim-carbon-now-sh", + cmd = { "CarbonNowSh" }, + keys = { + { "cS", ":CarbonNowSh", mode = { "n", "v" }, desc = "Screenshot Code", silent = true }, + }, +} diff --git a/config/nvim/lua/plugins/extras/editor/dev-container.lua b/config/nvim/lua/plugins/extras/editor/dev-container.lua new file mode 100644 index 00000000..fa41ed2d --- /dev/null +++ b/config/nvim/lua/plugins/extras/editor/dev-container.lua @@ -0,0 +1,32 @@ +return { + { + "https://codeberg.org/esensar/nvim-dev-container", + cmd = { + "DevcontainerStart", + "DevcontainerStop", + "DevcontainerLogs", + "DevcontainerEditNearestConfig", + "DevcontainerAttach", + "DevcontainerExec", + "DevcontainerStopAll", + "DevcontainerRemoveAll", + }, + dependencies = { "nvim-treesitter/nvim-treesitter" }, + opts = {}, + keys = { + { "os", "DevcontainerStart", desc = "Start" }, + { "oS", "DevcontainerStop", desc = "Stop" }, + { "ol", "DevcontainerLogs", desc = "Log" }, + { "oc", "DevcontainerEditNearestConfig", desc = "Config" }, + { "oa", "DevcontainerAttach", desc = "Attach" }, + }, + }, + { + "folke/which-key.nvim", + opts = { + defaults = { + ["o"] = { name = "ο’· c[o]ntainers" }, + }, + }, + }, +} diff --git a/config/nvim/lua/plugins/extras/editor/git/diffview.lua b/config/nvim/lua/plugins/extras/editor/git/diffview.lua index 689d872b..fbd8868a 100644 --- a/config/nvim/lua/plugins/extras/editor/git/diffview.lua +++ b/config/nvim/lua/plugins/extras/editor/git/diffview.lua @@ -15,12 +15,12 @@ return { { "n", "gCt", actions.conflict_choose("theirs"), { desc = "Choose the THEIRS version of a conflict" } }, { "n", "gCb", actions.conflict_choose("base"), { desc = "Choose the BASE version of a conflict" } }, { "n", "gCa", actions.conflict_choose("all"), { desc = "Choose all the versions of a conflict" } }, - { "n", "gCx", actions.conflict_choose("none"), { desc = "Delete the conflict region" } }, + { "n", "gCx", actions.conflict_choose("none"), { desc = "Delete the conflict region" } }, { "n", "gCO", actions.conflict_choose_all("ours"), { desc = "Choose the OURS version of a conflict for the whole file" } }, { "n", "gCT", actions.conflict_choose_all("theirs"), { desc = "Choose the THEIRS version of a conflict for the whole file" } }, { "n", "gCB", actions.conflict_choose_all("base"), { desc = "Choose the BASE version of a conflict for the whole file" } }, { "n", "gCA", actions.conflict_choose_all("all"), { desc = "Choose all the versions of a conflict for the whole file" } }, - { "n", "gCX", actions.conflict_choose_all("none"), { desc = "Delete the conflict region for the whole file" } }, + { "n", "gCX", actions.conflict_choose_all("none"), { desc = "Delete the conflict region for the whole file" } }, }, --stylua: ignore file_panel = { @@ -28,7 +28,7 @@ return { { "n", "gCT", actions.conflict_choose_all("theirs"), { desc = "Choose the THEIRS version of a conflict for the whole file" } }, { "n", "gCB", actions.conflict_choose_all("base"), { desc = "Choose the BASE version of a conflict for the whole file" } }, { "n", "gCA", actions.conflict_choose_all("all"), { desc = "Choose all the versions of a conflict for the whole file" } }, - { "n", "gCX", actions.conflict_choose_all("none"), { desc = "Delete the conflict region for the whole file" } }, + { "n", "gCX", actions.conflict_choose_all("none"), { desc = "Delete the conflict region for the whole file" } }, }, } end, diff --git a/config/nvim/lua/plugins/extras/editor/harpoon.lua b/config/nvim/lua/plugins/extras/editor/harpoon.lua index 2dd2ffe2..203d1051 100644 --- a/config/nvim/lua/plugins/extras/editor/harpoon.lua +++ b/config/nvim/lua/plugins/extras/editor/harpoon.lua @@ -1,3 +1,18 @@ +local keys = {} + +-- stylua: ignore start +for i = 1, 9 do + table.insert(keys, { "h" .. i, function() require("harpoon"):list():select(i) end, desc = "File " .. i }) +end + +table.insert(keys, { "ha", function() require("harpoon"):list():append() end, desc = "Add Mark" }) +table.insert(keys, { "hh", function() require("harpoon").ui:toggle_quick_menu(require("harpoon"):list()) end, desc = "Menu" }) +table.insert(keys, { "hf", "Telescope harpoon marks", desc = "Files" }) + +table.insert(keys, { "]H", function() require("harpoon"):list():next() end, desc = "Next Harpoon File" }) +table.insert(keys, { "[H", function() require("harpoon"):list():prev() end, desc = "Prev Harpoon File" }) +-- stylua: ignore end + return { { "ThePrimeagen/harpoon", @@ -6,24 +21,7 @@ return { "nvim-lua/plenary.nvim", }, --stylua: ignore - keys = { - { "ha", function() require("harpoon"):list():append() end, desc = "Add Mark" }, - { "hh", function() require("harpoon").ui:toggle_quick_menu(require("harpoon"):list()) end, desc = "Menu" }, - { "hf", "Telescope harpoon marks", desc = "Files" }, - { "h1", function() require("harpoon"):list():select(1) end, desc = "File 1" }, - { "h2", function() require("harpoon"):list():select(2) end, desc = "File 2" }, - { "h3", function() require("harpoon"):list():select(3) end, desc = "File 3" }, - { "h4", function() require("harpoon"):list():select(4) end, desc = "File 4" }, - { "h5", function() require("harpoon"):list():select(5) end, desc = "File 5" }, - { "h6", function() require("harpoon"):list():select(6) end, desc = "File 6" }, - { "h7", function() require("harpoon"):list():select(7) end, desc = "File 7" }, - { "h8", function() require("harpoon"):list():select(8) end, desc = "File 8" }, - { "h9", function() require("harpoon"):list():select(9) end, desc = "File 9" }, - { "]H", function() require("harpoon"):list():next() end, desc = "Next Harpoon File" }, - { "[H", function() require("harpoon"):list():prev() end, desc = "Prev Harpoon File" }, - { "", function() require("harpoon"):list():next() end, desc = "Next Harpoon File" }, - { "", function() require("harpoon"):list():prev() end, desc = "Prev Harpoon File" }, - }, + keys = keys, config = function() local harpoon = require("harpoon") harpoon:setup({}) diff --git a/config/nvim/lua/plugins/extras/editor/oil.lua b/config/nvim/lua/plugins/extras/editor/oil.lua index 622f01e0..4b51ebb2 100644 --- a/config/nvim/lua/plugins/extras/editor/oil.lua +++ b/config/nvim/lua/plugins/extras/editor/oil.lua @@ -13,6 +13,6 @@ return { }, -- stylua: ignore keys = { - { "", function() require("oil").toggle_float() end, desc = "Toggle oil" }, + { ";", function() require("oil").toggle_float() end, desc = "Toggle oil" }, }, } diff --git a/config/nvim/lua/plugins/extras/editor/rayso.lua b/config/nvim/lua/plugins/extras/editor/rayso.lua deleted file mode 100644 index 11da81bc..00000000 --- a/config/nvim/lua/plugins/extras/editor/rayso.lua +++ /dev/null @@ -1,11 +0,0 @@ -return { - "TobinPalmer/rayso.nvim", - cmd = { "Rayso" }, - keys = { - { "cS", "Rayso", mode = { "n" }, desc = "Screenshot Code" }, - { "cS", "'<,'>Rayso", mode = { "v" }, desc = "Screenshot Selection" }, - }, - opts = { - open_cmd = "librewolf", - }, -} diff --git a/config/nvim/lua/plugins/extras/editor/telescope/urlview.lua b/config/nvim/lua/plugins/extras/editor/telescope/urlview.lua index 6c012c6c..71b6cea7 100644 --- a/config/nvim/lua/plugins/extras/editor/telescope/urlview.lua +++ b/config/nvim/lua/plugins/extras/editor/telescope/urlview.lua @@ -1,5 +1,6 @@ return { "axieax/urlview.nvim", + dependencies = { "nvim-telescope/telescope.nvim" }, cmd = { "UrlView" }, keys = { { "sU", "UrlView", desc = "Search Urls" } }, opts = { diff --git a/config/nvim/lua/plugins/extras/editor/terminal/floaterm.lua b/config/nvim/lua/plugins/extras/editor/terminal/floaterm.lua index b068b3ee..b664fac2 100644 --- a/config/nvim/lua/plugins/extras/editor/terminal/floaterm.lua +++ b/config/nvim/lua/plugins/extras/editor/terminal/floaterm.lua @@ -4,18 +4,9 @@ return { cmd = { "FloatermNew", "FloatermToggle", "FloatermNext", "FloatermPrev", "FloatermLast", "FloatermFirst" }, --stylua: ignore keys = { - { "Ts", "FloatermNew --disposable --name=duaroot --opener=edit --titleposition=center --height=0.85 --width=0.85 --cwd= dua i", desc = "Workspace Size (root dir)" }, - { "TS", "FloatermNew --disposable --name=duabuffer --opener=edit --titleposition=center --height=0.85 --width=0.85 --cwd= dua i", desc = "Workspace Size (cwd)" }, - { "", "FloatermNew --disposable --name=yaziroot --opener=edit --titleposition=center --height=0.85 --width=0.85 --cwd= yazi", desc = "File Explorer (root dir)" }, + { "", "FloatermNew --disposable --name=yaziroot --opener=edit --titleposition=center --height=0.85 --width=0.85 --cwd= yazi", desc = "Yazi" }, { "gg", "FloatermNew --name=lazygitroot --opener=edit --titleposition=center --height=0.85 --width=0.85 --cwd= lazygit", desc = "Lazygit (root dir)" }, { "gG", "FloatermNew --name=lazygitbuffer --opener=edit --titleposition=center --height=0.85 --width=0.85 --cwd= lazygit", desc = "Lazygit (cwd)" }, - { "Td", "FloatermNew --disposable --name=lazydocker --opener=edit --titleposition=center --height=0.85 --width=0.85 lazydocker", desc = "Lazydocker" }, - { "Tb", "FloatermNew --disposable --name=btop --opener=edit --titleposition=center --height=0.85 --width=0.85 btop", desc = "Btop" }, - { "Tn", "FloatermNew --disposable --name=navi --opener=edit --titleposition=center --height=0.85 --width=0.85 pages", desc = "Navi Pages" }, - { "Tp", "FloatermNew --disposable --name=proc --opener=edit --titleposition=center --height=0.85 --width=0.85 proc", desc = "Systemd Processes" }, - { "TB", "FloatermNew --disposable --name=bandwhich --opener=edit --titleposition=center --height=0.85 --width=0.85 bandwhich", desc = "Bandwidth" }, - { "gF", "FloatermNew --disposable --name=forgit --opener=edit --titleposition=center --height=0.85 --width=0.85 fgit", desc = "Forgit" }, - { "gf", "FloatermNew! --disposable --name=onefetch --opener=edit --titleposition=center --height=0.85 --width=0.85 --cwd= gfetch", desc = "Gitfetch" }, { "cen", "FloatermNew --name=node --opener=edit --titleposition=center --wintype=split --height=0.35 node", desc = "Node" }, { "cep", "FloatermNew --name=python --opener=edit --titleposition=center --wintype=split --height=0.35 python", desc = "Python" }, { "", "FloatermNext", mode = { "t" }, desc = "Next Terminal" }, @@ -46,7 +37,6 @@ return { defaults = { ["ce"] = { name = "r[e]pl" }, ["ft"] = { name = "terminals" }, - ["T"] = { name = " tools" }, }, }, }, diff --git a/config/nvim/lua/plugins/extras/lang/go-extended.lua b/config/nvim/lua/plugins/extras/lang/go-extended.lua index e3b44c8e..f8f189ce 100644 --- a/config/nvim/lua/plugins/extras/lang/go-extended.lua +++ b/config/nvim/lua/plugins/extras/lang/go-extended.lua @@ -4,7 +4,7 @@ return { "williamboman/mason.nvim", opts = function(_, opts) opts.ensure_installed = opts.ensure_installed or {} - vim.list_extend(opts.ensure_installed, { "golangcil-lint" }) + vim.list_extend(opts.ensure_installed, { "golangci-lint" }) end, }, { @@ -15,7 +15,6 @@ return { "nvim-treesitter/nvim-treesitter", }, opts = {}, - event = { "LazyFile" }, ft = { "go", "gomod" }, build = function() require("go.install").update_all_sync() diff --git a/config/nvim/lua/plugins/extras/lang/rust-extended.lua b/config/nvim/lua/plugins/extras/lang/rust-extended.lua index 260bee43..b50a6e4e 100644 --- a/config/nvim/lua/plugins/extras/lang/rust-extended.lua +++ b/config/nvim/lua/plugins/extras/lang/rust-extended.lua @@ -4,6 +4,18 @@ return { "simrat39/rust-tools.nvim", enabled = false, }, + -- TODO: Look at crates lsp + -- { + -- "Saecki/crates.nvim", + -- opts = { + -- lsp = { + -- enabled = true, + -- on_attach = function(client, bufnr) end, + -- actions = true, + -- completion = true, + -- }, + -- }, + -- }, { "mrcjkb/rustaceanvim", version = "^3", -- Recommended diff --git a/config/nvim/lua/plugins/extras/lang/web/typescript-extended.lua b/config/nvim/lua/plugins/extras/lang/web/typescript-extended.lua index d2e28a9f..e8bd04f6 100644 --- a/config/nvim/lua/plugins/extras/lang/web/typescript-extended.lua +++ b/config/nvim/lua/plugins/extras/lang/web/typescript-extended.lua @@ -1,3 +1,15 @@ +local source_action = function(name) + return function() + vim.lsp.buf.code_action({ + apply = true, + context = { + only = { string.format("source.%s.ts", name) }, + diagnostics = {}, + }, + }) + end +end + local inlayHints = { includeInlayParameterNameHints = "all", includeInlayParameterNameHintsWhenArgumentMatchesName = true, @@ -47,6 +59,23 @@ return { inlayHints = inlayHints, }, }, + keys = { + { + "co", + source_action("organizeImports"), + desc = "Organize Imports", + }, + { + "cM", + source_action("addMissingImports"), + desc = "Add Missing Imports", + }, + { + "cR", + source_action("removeUnused"), + desc = "Remove Unused Imports", + }, + }, }, denols = { root_dir = require("lspconfig").util.root_pattern("deno.json", "deno.jsonc", "deno.lock"), diff --git a/config/nvim/lua/plugins/extras/ui/colorschemes/catppuccin.lua b/config/nvim/lua/plugins/extras/ui/colorschemes/catppuccin.lua index 2e15b4ce..da783d85 100644 --- a/config/nvim/lua/plugins/extras/ui/colorschemes/catppuccin.lua +++ b/config/nvim/lua/plugins/extras/ui/colorschemes/catppuccin.lua @@ -1,4 +1,4 @@ -local macchiato = require("catppuccin.palettes").get_palette("macchiato") +local palette = require("catppuccin.palettes").get_palette("macchiato") -- Import your favorite catppuccin colors return { { @@ -14,6 +14,23 @@ return { dark = "macchiato", }, term_colors = true, + custom_highlights = function() + return { + FloatermBorder = { fg = palette.base }, + TelescopeMatching = { fg = palette.blue }, + TelescopeSelection = { fg = palette.text, bg = palette.surface0, bold = true }, + TelescopePromptPrefix = { bg = palette.surface0 }, + TelescopePromptNormal = { bg = palette.surface0 }, + TelescopeResultsNormal = { bg = palette.mantle }, + TelescopePreviewNormal = { bg = palette.mantle }, + TelescopePromptBorder = { bg = palette.surface0, fg = palette.surface0 }, + TelescopeResultsBorder = { bg = palette.mantle, fg = palette.mantle }, + TelescopePreviewBorder = { bg = palette.mantle, fg = palette.mantle }, + TelescopePromptTitle = { bg = palette.red, fg = palette.mantle }, + TelescopeResultsTitle = { fg = palette.mantle }, + TelescopePreviewTitle = { bg = palette.green, fg = palette.mantle }, + } + end, integrations = { alpha = true, cmp = true, @@ -71,7 +88,6 @@ return { semantic_tokens = true, telescope = { enabled = true, - style = "nvchad", }, symbols_outline = false, treesitter = true, @@ -87,8 +103,8 @@ return { styles = { "italic", "bold" }, custom = { all = { - fill = { bg = macchiato.mantle }, - background = { bg = macchiato.mantle }, + fill = { bg = palette.mantle }, + background = { bg = palette.mantle }, }, }, }), diff --git a/config/nvim/lua/plugins/extras/util/vscode.lua b/config/nvim/lua/plugins/extras/util/vscode.lua index c931751e..82ee4962 100644 --- a/config/nvim/lua/plugins/extras/util/vscode.lua +++ b/config/nvim/lua/plugins/extras/util/vscode.lua @@ -25,6 +25,7 @@ local enabled = { "nvim-various-textobjs", "nvim-ts-context-commentstring", "vim-repeat", + "vim-carbon-now-sh", "highlight-undo.nvim", "ts-node-action", "LazyVim", @@ -40,9 +41,9 @@ vim.o.spell = false vim.notify = vscode.notify vim.g.clipboard = vim.g.vscode_clipboard -local function vscode_action(cmd) +local function vscode_action(cmd, opts) return function() - vscode.action(cmd) + vscode.action(cmd, opts) end end @@ -58,16 +59,54 @@ vim.api.nvim_create_autocmd("User", { map("n", "ss", vscode_action("workbench.action.gotoSymbol")) -- view problems map("n", "xx", vscode_action("workbench.actions.view.problems")) - -- open file explorer in left sidebar + -- open file explorer map("n", "e", vscode_action("workbench.view.explorer")) - -- Code Action - map("n", "ca", vscode_action("editor.action.codeAction")) - -- Open terminal - map("n", "ft", vscode_action("workbench.action.terminal.focus")) + -- toggle side bar + map("n", "ue", vscode_action("workbench.action.toggleSidebarVisibility")) + -- terminal + map("n", [[]], vscode_action("workbench.action.terminal.toggleTerminal")) + map("n", "fts", vscode_action("workbench.action.terminal.newWithCwd")) + -- close editor + map("n", "bd", vscode_action("workbench.action.closeActiveEditor")) + -- breakpoints + map("n", "", vscode_action("editor.debug.action.toggleBreakpoint")) + -- windows + map("n", "|", vscode_action("workbench.action.splitEditorRight")) + map("n", "-", vscode_action("workbench.action.splitEditorDown")) -- LSP actions + map("n", "ca", vscode_action("editor.action.codeAction")) map("n", "gy", vscode_action("editor.action.goToTypeDefinition")) map("n", "gr", vscode_action("editor.action.goToReferences")) map("n", "gi", vscode_action("editor.action.goToImplementation")) + map("n", "K", vscode_action("editor.action.showHover")) + map("n", "cr", vscode_action("editor.action.rename")) + map("n", "co", vscode_action("editor.action.organizeImport")) + map("n", "cf", vscode_action("editor.action.formatDocument")) + -- refactor + map("n", "cR", vscode_action("editor.action.refactor")) + -- markdown preview + map("n", "cp", vscode_action("markdown.showPreviewToSide")) + -- project manager + map("n", "fp", vscode_action("projectManager.listProjects")) + -- zoxide + -- stylua: ignore + map("n", "fz", vscode_action("terminalCommandKeys.run", + { args = { cmd = "cdzc", newTerminal = false, saveAllFiles = false, showTerminal = true, focus = true } } + )) + -- zen mode + map("n", "z", vscode_action("workbench.action.toggleZenMode")) + -- cspell + map("n", "!", vscode_action("cSpell.addWordToDictionary")) + map("n", "us", vscode_action("cSpell.toggleEnableSpellChecker")) + -- comments + map("n", "xt", vscode_action("workspaceAnchors.focus")) + -- git + map("n", "gg", vscode_action("gitlens.views.home.focus")) + map("n", "ub", vscode_action("gitlens.toggleFileBlame")) + -- statusline + map("n", "uS", vscode_action("workbench.action.toggleStatusbarVisibility")) + -- markdown preview + map("n", "cp", vscode_action("markdown.showPreviewToSide")) end, }) diff --git a/config/nvim/lua/plugins/gitsigns.lua b/config/nvim/lua/plugins/gitsigns.lua index 50e4f6e3..415aa258 100644 --- a/config/nvim/lua/plugins/gitsigns.lua +++ b/config/nvim/lua/plugins/gitsigns.lua @@ -2,7 +2,6 @@ return { "lewis6991/gitsigns.nvim", opts = { yadm = { enable = true }, - current_line_blame = true, current_line_blame_opts = { virt_text = true, virt_text_pos = "eol", -- 'eol' | 'overlay' | 'right_align' @@ -13,6 +12,6 @@ return { keys = { -- stylua: ignore { "ub", "Gitsigns toggle_current_line_blame", desc = "Toggle Line Blame" }, - { "uD", "Gitsigns toggle_deleted", desc = "Toggle Deletions Inline" }, + { "ghd", "Gitsigns toggle_deleted", desc = "Deletions Inline" }, }, } diff --git a/config/nvim/rules/biome.json b/config/nvim/rules/biome.json index fe004c38..3494b699 100644 --- a/config/nvim/rules/biome.json +++ b/config/nvim/rules/biome.json @@ -1,5 +1,5 @@ { - "$schema": "https://biomejs.dev/schemas/1.5.1/schema.json", + "$schema": "https://biomejs.dev/schemas/1.5.2/schema.json", "organizeImports": { "enabled": true }, diff --git a/config/nvim/snippets/languages/markdown.json b/config/nvim/snippets/languages/markdown.json index d2551272..10dad64e 100644 --- a/config/nvim/snippets/languages/markdown.json +++ b/config/nvim/snippets/languages/markdown.json @@ -1,42 +1,72 @@ { + "caution (callout)": { + "body": [ + "> [!CAUTION]", + "> $0" + ], + "description": "https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts", + "prefix": "caution (callout)" + }, + "centerdiv": { + "body": "

$0
", + "prefix": "centerdiv" + }, + "details & summary": { + "body": [ + "
", + "${1:Text}", + "$0", + "
" + ], + "description": "https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details", + "prefix": [ + "toggle / fold", + "details & summary" + ] + }, + "div": { + "body": "
$0
", + "description": "https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div", + "prefix": "div" + }, "image": { "body": "\"${2:alt", "description": "HTML syntax for images used to display images with reduced size", "prefix": "image" }, - "details & summary": { - "body": ["
", "${1:Text}", "$0", "
"], - "description": "https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details", - "prefix": ["toggle / fold", "details & summary"] - }, - "caution (callout)": { - "body": ["> [!CAUTION]", "> $0"], - "description": "https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts", - "prefix": "caution (callout)" - }, "important (callout)": { - "body": ["> [!IMPORTANT]", "> $0"], + "body": [ + "> [!IMPORTANT]", + "> $0" + ], "description": "https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts", "prefix": "important (callout)" }, "note (callout)": { - "body": ["> [!NOTE]", "> $0"], + "body": [ + "> [!NOTE]", + "> $0" + ], "description": "https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts", - "prefix": ["info (callout)", "note (callout)"] + "prefix": [ + "info (callout)", + "note (callout)" + ] }, "tip (callout)": { - "body": ["> [!TIP]", "> $0"], + "body": [ + "> [!TIP]", + "> $0" + ], "description": "https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts", "prefix": "tip (callout)" }, "warning (callout)": { - "body": ["> [!WARNING]", "> $0"], + "body": [ + "> [!WARNING]", + "> $0" + ], "description": "https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts", "prefix": "warning (callout)" - }, - "div": { - "body": ["
{$0}
"], - "description": "https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div", - "prefix": ["div"] } } diff --git a/config/rofi/.current_wallpaper b/config/rofi/.current_wallpaper index fcf78139..e575d150 120000 --- a/config/rofi/.current_wallpaper +++ b/config/rofi/.current_wallpaper @@ -1 +1 @@ -/home/sankalp/Pictures/wallpapers/17.png \ No newline at end of file +/home/ja/Pictures/wallpapers/CuteCat.png \ No newline at end of file diff --git a/config/rofi/config-long.rasi b/config/rofi/config-long.rasi index a6b3d8d7..95ac9e7e 100644 --- a/config/rofi/config-long.rasi +++ b/config/rofi/config-long.rasi @@ -1,38 +1,45 @@ -/* ---- Configuration ---- */ +/*****----- Configuration -----*****/ configuration { - modi: "drun,run,filebrowser,file-browser-extended"; - font: "Fira Code SemiBold 12"; - show-icons: true; + modi: "drun,run,filebrowser"; + show-icons: false; display-drun: "🐧"; display-run: "πŸ“¦"; display-filebrowser: "πŸ“‚"; display-window: "πŸ—„οΈ"; - display-file-browser-extended: "πŸ—„οΈ"; - drun-display-format: "{name}"; - hover-select: true; - me-select-entry: "MouseSecondary"; - me-accept-entry: "MousePrimary"; - window-format: "{w} Β· {c} Β· {t}"; - dpi: 1; - + drun-display-format: "{name} [({generic})]"; + window-format: "{w} Β· {c} Β· {t}"; } - - * { - background: #1E1F29FF; - background-alt: #282A36FF; - foreground: #FFFFFFFF; - selected: #BD93F9FF; - active: #50FA7BFF; - urgent: #FF5555FF; + font: "JetBrainsMono Nerd Font 12"; + + background: #1E1D2FFF; + background-alt: #282839FF; + foreground: #D9E0EEFF; + selected: #7AA2F7FF; + active: #ABE9B3FF; + urgent: #F28FADFF; + + + border-colour: var(selected); + handle-colour: var(selected); + background-colour: var(background); + foreground-colour: var(foreground); + alternate-background: var(background-alt); + normal-background: var(background); + normal-foreground: var(foreground); + urgent-background: var(urgent); + urgent-foreground: var(background); + active-background: var(active); + active-foreground: var(background); + } +/*****----- Main Window -----*****/ /* ---- Window ---- */ window { width: 700px; - /*height: 500px;*/ x-offset: 0px; y-offset: 0px; spacing: 0px; @@ -45,31 +52,61 @@ window { anchor: center; fullscreen: false; enabled: true; - border-radius: 12px; + border-radius: 15px; + border-radius: 15px; background-color: transparent; } -/* ---- Mainbox ---- */ +/*****----- Main Box -----*****/ mainbox { - enabled: true; - orientation: vertical; - padding: 8px; - background-image: url("~/.config/rofi/.current_wallpaper", height); - children: [ "imagebox" ]; - border-radius: 12px; - background-color: transparent; + enabled: true; + orientation: vertical; + padding: 8px; + border-radius: 12px; + border-color: @border-colour; + background-color: transparent; + children: [ "inputbar", "listbox"]; + background-image: url("~/.config/rofi/.current_wallpaper", height); } -/* ---- Imagebox ---- */ -imagebox { - background-color: transparent; - orientation: vertical; - children: [ "inputbar", "listbox"]; +/*****----- Inputbar -----*****/ +inputbar { + enabled: true; + spacing: 10px; + padding: 14px; + border-radius: 10px; + border: 1px; + border-color: @foreground; + background-color: transparent; + text-color: #FFFF00; + children: [ "prompt", "textbox-prompt-colon", "entry" ]; +} + +prompt { + enabled: true; + background-color: inherit; + text-color: inherit; +} +textbox-prompt-colon { + enabled: true; + expand: false; + str: ""; + background-color: transparent; + text-color: inherit; +} +entry { + enabled: true; + background-color: transparent; + text-color: inherit; + cursor: text; + placeholder: ""; + placeholder-color: inherit; } /* ---- Listbox ---- */ listbox { spacing: 4px; + padding: 1px; orientation: vertical; children: [ "listview" ]; border-radius: 10px; @@ -78,34 +115,8 @@ listbox { background-color: transparent; } -/* ---- Inputbar ---- */ -inputbar { - enabled: true; - text-color: @foreground; - spacing: 10px; - padding: 6px; - border-radius: 10px; - border-color: @foreground; - background-color: transparent; - children: [ "textbox-prompt-colon", "entry" ]; - border: 1px; - border-color: @foreground; -} - -textbox-prompt-colon { - enabled: true; - expand: false; - str: "πŸ”Ž "; - text-color: inherit; - background-color: transparent; -} - -entry { - enabled: true; - text-color: inherit; - cursor: text; - placeholder: "Search"; - placeholder-color: inherit; +/* ---- Dummy ---- */ +dummy { background-color: transparent; } @@ -113,27 +124,34 @@ entry { listview { enabled: true; columns: 1; - lines: 9; + lines: 10; spacing: 4px; dynamic: true; cycle: true; - scrollbar: true; + scrollbar: false; layout: vertical; reverse: false; fixed-height: true; - fixed-columns: true; + fixed-columns: false; background-color: transparent; border-radius: 10px; } +scrollbar { + handle-width: 1px ; + handle-color: @handle-colour; + border-radius: 1px; + background-color: @alternate-background; +} /* ---- Element ---- */ element { enabled: true; - padding: 2px; + padding: 5px; margin: 2px; cursor: pointer; - background-color: transparent; + background-color: transparent; border-radius: 10px; + border: 0px; } element normal.normal { @@ -190,7 +208,7 @@ element-icon { element-text { background-color: transparent; - text-color: inherit; + text-color: #FFFF00; cursor: inherit; vertical-align: 0.5; horizontal-align: 0.0; @@ -198,27 +216,21 @@ element-text { /*****----- Message -----*****/ message { - background-color: transparent; - border: 0px; + background-color: @background; margin: 20px 0px 0px 0px; - padding: 0px; - spacing: 0px; border-radius: 10px; } textbox { - padding: 6px; - margin: 0px; - border-radius: 0px; - background-color: transparent; + padding: 15px; + background-color: @background; text-color: @foreground; - vertical-align: 0.5; - horizontal-align: 0.0; } error-message { - padding: 6px; - border-radius: 20px; - background-color: @background; + padding: 15px; + border-radius: 20px; + background-color: @background; text-color: @foreground; } + diff --git a/config/rofi/config-powermenu.rasi b/config/rofi/config-powermenu.rasi index 80abf03d..1c09b951 100644 --- a/config/rofi/config-powermenu.rasi +++ b/config/rofi/config-powermenu.rasi @@ -63,7 +63,7 @@ prompt { border-radius: 15px; border-color: @foreground; background-color: transparent; - text-color: @foreground; + text-color: #FFFF00; cursor: text; } @@ -94,7 +94,7 @@ element { padding: 20px; border-radius: 30px; background-color: transparent; - text-color: @foreground; + text-color: #FFFF00; cursor: pointer; } element-text { diff --git a/config/rofi/config-wallpaper.rasi b/config/rofi/config-wallpaper.rasi index 3a699562..c58ea2ce 100644 --- a/config/rofi/config-wallpaper.rasi +++ b/config/rofi/config-wallpaper.rasi @@ -84,7 +84,7 @@ dummy { /* ---- Inputbar ---- */ inputbar { enabled: true; - text-color: @foreground; + text-color: #FFFF00; spacing: 10px; padding: 8px; border-radius: 10px; @@ -99,7 +99,7 @@ textbox-prompt-colon { enabled: true; expand: false; str: "σ°Έ‰ "; - text-color: inherit; + text-color: #FFFF00; background-color: transparent; } @@ -197,7 +197,7 @@ element-icon { element-text { font: "Fira Code SemiBold 8"; background-color: transparent; - text-color: inherit; + text-color: #FFFF00; cursor: inherit; vertical-align: 0.5; horizontal-align: 0.5; diff --git a/config/rofi/config.rasi b/config/rofi/config.rasi index 309f4f20..f4bdc3f7 100644 --- a/config/rofi/config.rasi +++ b/config/rofi/config.rasi @@ -78,7 +78,7 @@ inputbar { border: 1px; border-color: @foreground; background-color: transparent; - text-color: @foreground; + text-color: #FFFF00; children: [ "prompt", "textbox-prompt-colon", "entry" ]; } @@ -156,12 +156,12 @@ element { element normal.normal { background-color: inherit; - text-color: @foreground; + text-color: #1e1e2e; } element normal.urgent { background-color: inherit; - text-color: @foreground; + text-color: #1e1e2e; } element normal.active { @@ -208,7 +208,7 @@ element-icon { element-text { background-color: transparent; - text-color: inherit; + text-color: #FFFF00; cursor: inherit; vertical-align: 0.5; horizontal-align: 0.0; diff --git a/config/rofi/launcher.rasi b/config/rofi/launcher.rasi index d5213d8e..126a3f6d 100644 --- a/config/rofi/launcher.rasi +++ b/config/rofi/launcher.rasi @@ -70,7 +70,7 @@ inputbar { border-radius: 10px; border-color: @foreground; background-color: transparent; - text-color: white; + text-color: #FFFF00; children: ["textbox-prompt-colon", "entry"]; } @@ -189,7 +189,7 @@ element-icon { element-text { background-color: transparent; - text-color: inherit; + text-color: #FFFF00; cursor: inherit; vertical-align: 0.5; horizontal-align: 0.0; diff --git a/config/waybar/config b/config/waybar/config index d244b1ad..72fca87a 120000 --- a/config/waybar/config +++ b/config/waybar/config @@ -1 +1 @@ -/home/sankalp/.config/waybar/configs/[BOT] gardenia \ No newline at end of file +/home/sankalp/.config/waybar/configs/[TOP & BOT] summitsplit \ No newline at end of file diff --git a/config/waybar/configs/[ALL] allside b/config/waybar/configs/[ALL] allside deleted file mode 100644 index c0d29990..00000000 --- a/config/waybar/configs/[ALL] allside +++ /dev/null @@ -1,125 +0,0 @@ -// ### ALL SIDES ### // - -[{ -// ### TOP PANEL ## - -"include": "~/.config/waybar/modules", -"layer": "top", -//"mode": "dock", -"exclusive": true, -"passthrough": false, -"position": "top", -"spacing": 3, -"fixed-center": true, -"ipc": true, -"margin-left": 8, -"margin-right": 8, -"margin-top": 2, - -"modules-left": [ - "cpu", - "custom/CpuTemp", - "memory", - "custom/weather", - ], - -"modules-center": [ - "custom/cava_mviz", - ], - -"modules-right": [ - "battery", - "backlight", - "network", - "custom/swaync" - ], -}, - -// ### LEFT PANEL ### // -{ -"include": "~/.config/waybar/modules", -"layer": "top", -"position": "left", -"margin-top": 8, -"margin-bottom": 8, -"margin-left": 3, -//"margin-right": 3, -"spacing": 3, -"fixed-center": true, -"ipc": true, -//"gtk-layer-shell": true, - -"modules-left": [ - "custom/menu", - ], - -"modules-center": [ - "hyprland/workspaces#4", - ], - -"modules-right": [ - "idle_inhibitor", - ], -}, - -// ### RIGHT PANEL ### // -{ -"include": "~/.config/waybar/modules", -"layer": "top", -"position": "right", -"margin-top": 8, -"margin-bottom": 8, -//"margin-left": 3, -"margin-right": 3, -"spacing": 3, -"fixed-center": true, -"ipc": true, -"gtk-layer-shell": true, - -"modules-left": [ - "custom/lock", - ], - -"modules-center": [ - "clock#vertical", - ], - -"modules-right": [ - "custom/power_vertical", - ], -}, - -// ### BOTTOM PANEL ### // -{ -"include": "~/.config/waybar/modules", -"layer": "top", -"mode": "dock", -"exclusive": true, -"passthrough": false, -"position": "bottom", -"spacing": 3, -"fixed-center": true, -"ipc": true, -"margin-left": 8, -"margin-right": 8, -"margin-bottom": 2, - -"modules-left": [ - "wlr/taskbar", - ], - -"modules-center": [ - "hyprland/window", - ], - -"modules-right": [ - "mpris", - "tray", - "custom/keyboard", - //"keyboard-state", - "pulseaudio", - //"wireplumber", - "pulseaudio#microphone", - ], - -}] diff --git a/config/waybar/configs/[BOT & Right] southeast b/config/waybar/configs/[BOT & Right] southeast index f281fdaf..81a462f8 100644 --- a/config/waybar/configs/[BOT & Right] southeast +++ b/config/waybar/configs/[BOT & Right] southeast @@ -18,7 +18,7 @@ "modules-left": [ "custom/menu", "cpu", - "temperature", + "custom/CpuTemp", "memory", "disk", ], diff --git a/config/waybar/configs/[BOT] default b/config/waybar/configs/[BOT] default index 7b5baeb2..a7e4dc6d 100644 --- a/config/waybar/configs/[BOT] default +++ b/config/waybar/configs/[BOT] default @@ -24,7 +24,7 @@ "custom/separator#dot-line", "custom/weather", "custom/separator#blank_3", - "custom/cava_mviz", + "custom/music", ], "modules-center": [ diff --git a/config/waybar/configs/[BOT] peony b/config/waybar/configs/[BOT] peony index 164db3c7..4c8b683a 100644 --- a/config/waybar/configs/[BOT] peony +++ b/config/waybar/configs/[BOT] peony @@ -25,7 +25,7 @@ "custom/separator#blank", "pulseaudio", "custom/separator#blank", - "temperature", + "custom/CpuTemp", "custom/separator#blank", "network#peony", "custom/swaync"], diff --git a/config/waybar/configs/[TOP] default b/config/waybar/configs/[TOP] default index 50f34660..9fa46ad2 100644 --- a/config/waybar/configs/[TOP] default +++ b/config/waybar/configs/[TOP] default @@ -24,7 +24,7 @@ "custom/separator#dot-line", "custom/weather", "custom/separator#blank_3", - "custom/cava_mviz", + "custom/music", ], "modules-center": [ diff --git a/config/waybar/configs/[TOP] minimal - long b/config/waybar/configs/[TOP] minimal - long index 8b46a3d9..a7438409 100644 --- a/config/waybar/configs/[TOP] minimal - long +++ b/config/waybar/configs/[TOP] minimal - long @@ -24,6 +24,7 @@ "mpris", "custom/swaync", "tray", + "custom/music" ], "modules-center": [ "clock", diff --git a/config/waybar/configs/[TOP] minimal - short b/config/waybar/configs/[TOP] minimal - short index 24ed3d34..1b58871c 100644 --- a/config/waybar/configs/[TOP] minimal - short +++ b/config/waybar/configs/[TOP] minimal - short @@ -12,6 +12,7 @@ "modules-left": [ "clock", "custom/weather", + "custom/music", ], "modules-center": [ diff --git a/config/waybar/configs/[TOP] sleek b/config/waybar/configs/[TOP] sleek index 5f3c2a83..a1e6ab69 100644 --- a/config/waybar/configs/[TOP] sleek +++ b/config/waybar/configs/[TOP] sleek @@ -22,6 +22,7 @@ ], "modules-right": [ + "custom/music", "custom/swaync", "custom/separator#blank", "tray", diff --git a/config/waybar/modules b/config/waybar/modules index 72930e91..21146c3e 100644 --- a/config/waybar/modules +++ b/config/waybar/modules @@ -115,7 +115,7 @@ "all-outputs": true, "sort-by-number": true, "format-icons": { - "1": "", + "1": "ξ―†", "2": "ο„ ", "3": "", "4": "", @@ -397,8 +397,8 @@ "interval": 10, "format": "{player_icon} ", "format-paused": "{status_icon}", - "on-click-middle": "playerctl play-pause", - "on-click": "playerctl previous", + "on-click": "playerctl play-pause", + "on-click-middle": "playerctl previous", "on-click-right": "playerctl next", "scroll-step": 5.0, "on-scroll-up": "~/.config/hypr/scripts/Volume.sh --inc", @@ -423,6 +423,25 @@ "max-length": 30, }, +// This is a custom cava visualizer +"custom/music": { + "format": "{icon}{}", + "format-icons": { + // "Playing": "ο…„ ", // Uncomment if not using the dynamic script + "Paused": "ο£€ ", + "Stopped": "‭ο­₯ " // This stop symbol is RTL. So ‭ is left-to-right override. +}, + "escape": true, + "tooltip": true, + "exec": "~/.config/hypr/scripts/Caway.sh -b 10", + "return-type": "json", + "on-click": "playerctl play-pause", + "on-click-middle": "playerctl previous", + "on-click-right": "playerctl next", + "max-length": 30 +}, + + "wlr/taskbar": { "format": "{icon}", "icon-size": 15, @@ -482,12 +501,6 @@ "tooltip": false, }, -// This is a custom cava visualizer -"custom/cava_mviz": { - "exec": "~/.config/hypr/scripts/WaybarCava.sh", - "format": "{}" -}, - "custom/lock": { "format": "󰌾 {}", "exec": "echo ; echo σ°·› screen lock", diff --git a/config/waybar/style.css b/config/waybar/style.css index 7b703bf8..5652ea5b 100644 --- a/config/waybar/style.css +++ b/config/waybar/style.css @@ -136,7 +136,6 @@ window#waybar.empty { #wireplumber, #workspaces, #custom-keybinds, -#custom-music, #custom-keyboard, #custom-CpuTemp, #custom-cycle_wall, @@ -145,6 +144,7 @@ window#waybar.empty { #custom-speaker, #custom-lock, #custom-menu, +#custom-music, #custom-power_vertical, #custom-power, #custom-swaync, @@ -282,8 +282,8 @@ window#waybar.empty { transition: all 0.3s cubic-bezier(.55,-0.68,.48,1.682); } -#custom-cava_mviz { - color : @pink; +#custom-music { + color: @mauve; } #custom-menu {