feat(vscodium): add config with settings, keybinds and snippets

using vscodium as a fallback editor in pair with the neovim native integration plugin
This commit is contained in:
Sergio Laín 2024-01-16 11:13:40 +01:00
parent c9ab1fe3cb
commit 04b78eb79f
No known key found for this signature in database
GPG key ID: 14C9B8080681777B
11 changed files with 710 additions and 17 deletions

View file

@ -0,0 +1,3 @@
<div align="center">
<a href=""><img src="./title.png"></a>
</div>

BIN
.config/VSCodium/User/.github/title.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

View file

@ -0,0 +1,278 @@
[
{
"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+t",
"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": "<C-D>"
},
{
"command": "vscode-neovim.send",
"key": "ctrl+u",
"when": "editorTextFocus && neovim.init && neovim.mode != insert || neovim.recording",
"args": "<C-U>"
},
{
"command": "vscode-neovim.send",
"key": "ctrl+f",
"when": "editorTextFocus && neovim.init && neovim.mode != insert || neovim.recording",
"args": "<C-F>"
},
{
"command": "vscode-neovim.send",
"key": "ctrl+b",
"when": "editorTextFocus && neovim.init && neovim.mode != insert || neovim.recording",
"args": "<C-B>"
},
{
"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": "<C-D>"
},
{
"command": "vscode-neovim.send",
"key": "ctrl+u",
"when": "editorTextFocus && neovim.init && neovim.mode != insert || neovim.recording",
"args": "<C-U>"
},
{
"command": "vscode-neovim.send",
"key": "ctrl+f",
"when": "editorTextFocus && neovim.init && neovim.mode != insert || neovim.recording",
"args": "<C-F>"
},
{
"command": "vscode-neovim.send",
"key": "ctrl+b",
"when": "editorTextFocus && neovim.init && neovim.mode != insert || neovim.recording",
"args": "<C-B>"
},
]

View file

@ -0,0 +1,249 @@
{
// 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.italicKeywords": true,
// 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.fontSize": 14,
"terminal.integrated.fontSize": 14,
// UI
"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.statusBar.visible": false,
"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",
// 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",
// APC
"apc.activityBar": {
"position": "bottom",
"hideSettings": true,
"size": 28
},
"apc.electron": {
"titleBarStyle": "hiddenInset",
"trafficLightPosition": {
"x": 12,
"y": 10
}
},
"apc.font.family": "JetBrainsMono Nerd Font",
"apc.monospace.font.family": "JetBrainsMono Nerd Font",
"apc.statusBar": {
"position": "editor-bottom",
"height": 28,
"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"
},
// 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
},
// 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"
],
// 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/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,
// 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"
],
}

View file

@ -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)"
}
}

View file

@ -0,0 +1,6 @@
{
"nonbreaking space": {
"body": "&nbsp;",
"prefix": "nonbreaking space"
}
}

View file

@ -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"
}
}

View file

@ -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": "<div style=\"text-align: center;\">$0</div>",
"prefix": "centerdiv"
},
"details & summary": {
"body": [
"<details>",
"<summary>${1:Text}</summary>",
"$0",
"</details>"
],
"description": "https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details",
"prefix": [
"toggle / fold",
"details & summary"
]
},
"div": {
"body": "<div>$0</div>",
"description": "https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div",
"prefix": "div"
},
"image": {
"body": "<img src=\"${1:image_path}\" alt=\"${2:alt text}\" width=\"${3:50%}\">",
"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)"
}
}

View file

@ -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"
}
}

View file

@ -43,7 +43,8 @@
- lazynpm
- scc-bin
- tgpt-bin
- visual-studio-code-bin
- vscodium-bin
- vscodium-marketplace-bin
# Cargo
- name: Install Rust Packages

34
.github/README.md vendored
View file

@ -54,6 +54,7 @@ I've been working on this for a long time so I hope you like it!
- :dark_sunglasses: Dark Mode for the whole system
- :framed_picture: Various Wallpapers
- :nerd_face: Nerd Fonts for the Shell Prompt
- :rocket: VSCodium with native integration of your Neovim setup
- :loud_sound: Volume OSD
- :iphone: App Launcher
- :keyboard: Multiple Keyboard Layouts
@ -162,22 +163,23 @@ Here is all the information about my setup:
<details>
<summary><b>🖱️ GUI Apps</b></summary>
| 📚 Entry | ✨ App |
| --------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| **Music Player** | [Spotify](https://open.spotify.com/) (patched with [Spicetify](https://spicetify.app/)) [:gear:](../.config/spicetify/) |
| **Web Browser** | 💖 [Librewolf](https://librewolf.net/) [:gear:](../.config/browser/) |
| **Messaging App** | [Discord](https://discord.com/) (patched with [BetterDiscord](https://betterdiscord.app/)) [:gear:](../.config/BetterDiscord/) |
| **Email Client** | [Thunderbird](https://www.thunderbird.net/) |
| **PDF Viewer** | [Zathura](https://pwmt.org/projects/zathura/) [:gear:](../.config/zathura/) |
| **Note Taking App** | 💖 [Obsidian](https://obsidian.md/) [:gear:](../.config/obsidian/) |
| **Video Player** | [Celluloid](https://celluloid-player.github.io/) ([MPV](https://mpv.io/) frontend) [:gear:](../.config/mpv/) |
| **Image Viewer** | [geeqie](https://www.geeqie.org/) [:gear:](../.config/geeqie/) |
| **File Manager** | [Nemo](https://community.linuxmint.com/software/view/nemo) |
| **Audio Effects** | [Easyeffects](https://github.com/wwmm/easyeffects) |
| **Image Editor** | [Krita](https://krita.org/) |
| **VM Manager** | [Virt-Manager](https://virt-manager.org/) ([QEMU](https://www.qemu.org/)) |
| **Recording Program** | [OBS](https://obsproject.com/) |
| **Office Apps** | [LibreOffice](https://www.libreoffice.org/) |
| 📚 Entry | ✨ App |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------ |
| **Music Player** | [Spotify](https://open.spotify.com/) (patched with [Spicetify](https://spicetify.app/)) [:gear:](../.config/spicetify/) |
| **Fallback Text Editor** | [VSCodium](https://vscodium.com/) [:gear:](../.config/VSCodium/User/) |
| **Web Browser** | 💖 [Librewolf](https://librewolf.net/) [:gear:](../.config/browser/) |
| **Messaging App** | [Discord](https://discord.com/) (patched with [BetterDiscord](https://betterdiscord.app/)) [:gear:](../.config/BetterDiscord/) |
| **Email Client** | [Thunderbird](https://www.thunderbird.net/) |
| **PDF Viewer** | [Zathura](https://pwmt.org/projects/zathura/) [:gear:](../.config/zathura/) |
| **Note Taking App** | 💖 [Obsidian](https://obsidian.md/) [:gear:](../.config/obsidian/) |
| **Video Player** | [Celluloid](https://celluloid-player.github.io/) ([MPV](https://mpv.io/) frontend) [:gear:](../.config/mpv/) |
| **Image Viewer** | [geeqie](https://www.geeqie.org/) [:gear:](../.config/geeqie/) |
| **File Manager** | [Nemo](https://community.linuxmint.com/software/view/nemo) |
| **Audio Effects** | [Easyeffects](https://github.com/wwmm/easyeffects) |
| **Image Editor** | [Krita](https://krita.org/) |
| **VM Manager** | [Virt-Manager](https://virt-manager.org/) ([QEMU](https://www.qemu.org/)) |
| **Recording Program** | [OBS](https://obsproject.com/) |
| **Office Apps** | [LibreOffice](https://www.libreoffice.org/) |
</details>