Skip to content

Instantly share code, notes, and snippets.

@vinitkumar
Last active August 13, 2026 03:23
Show Gist options
  • Select an option

  • Save vinitkumar/0a6940afafc25b1f905516dfb4b41dbd to your computer and use it in GitHub Desktop.

Select an option

Save vinitkumar/0a6940afafc25b1f905516dfb4b41dbd to your computer and use it in GitHub Desktop.
Monk: a quiet, Vim-driven, AI-free VS Code profile

Monk VS Code profiles

Deliberately plain VS Code profiles with an 18 px editor font, Vim motions, and almost everything else switched off. Monk uses Quiet Light; Monk Dark uses Dark Modern.

Install

Read the script first, then run it:

curl -fsSL https://gist.githubusercontent.com/vinitkumar/0a6940afafc25b1f905516dfb4b41dbd/raw/install.sh | less
curl -fsSL https://gist.githubusercontent.com/vinitkumar/0a6940afafc25b1f905516dfb4b41dbd/raw/install.sh | sh

To install the dark-only variant as a separate Monk Dark profile:

curl -fsSL https://gist.githubusercontent.com/vinitkumar/0a6940afafc25b1f905516dfb4b41dbd/raw/install.sh | MONK_VARIANT=dark sh

The installer supports macOS and Linux. It requires code, curl, and sqlite3. It creates or updates only the selected Monk profile, installs VSCodeVim there, copies the matching settings, and disables the built-in IDE and unused color-theme extensions listed in the script. Existing settings and state databases for that profile are backed up before replacement.

On the first run, the installer deliberately opens an empty VS Code window. VS Code creates a missing profile only when it opens a window or folder with that profile; extension-management commands cannot create it. Leave the window open while the installer finishes. Later runs can update the existing profile without this creation step.

Set MONK_PROFILE_NAME to use another profile name with either variant:

curl -fsSL https://gist.githubusercontent.com/vinitkumar/0a6940afafc25b1f905516dfb4b41dbd/raw/install.sh | MONK_PROFILE_NAME=Quiet sh

The font stack falls back to Menlo, Monaco, or monospace when Berka Mono Instrument is unavailable.

Window transparency is not included. It requires patching VS Code's Electron shell through a separate extension, survives outside the profile, and is commonly reset by VS Code updates. Keeping that out of a curl | sh installer is intentional.

#!/bin/sh
set -eu
fail() {
printf 'monk-vscode: %s\n' "$1" >&2
exit 1
}
VARIANT=${MONK_VARIANT:-light}
case "$VARIANT" in
light)
default_profile_name=Monk
default_settings_url=https://gist.githubusercontent.com/vinitkumar/0a6940afafc25b1f905516dfb4b41dbd/raw/05202fb9db9e6eda315105f6a7cfc25d4e0e9735/settings.json
default_settings_sha256=4f01f930f388d8544672c40108a5752b136477f97eaf11331a68bae965e05856
;;
dark)
default_profile_name='Monk Dark'
default_settings_url=https://gist.githubusercontent.com/vinitkumar/0a6940afafc25b1f905516dfb4b41dbd/raw/42bfe5567d3f583e765635bbaafab9190d525826/settings-dark.json
default_settings_sha256=cc817e791be1fecaf6616df9303fad89dd887e01f6dd404d2a8f0ae3fac82fbf
;;
*) fail "unknown variant: $VARIANT (expected light or dark)" ;;
esac
PROFILE_NAME=${MONK_PROFILE_NAME:-$default_profile_name}
SETTINGS_URL=${MONK_SETTINGS_URL:-$default_settings_url}
SETTINGS_SHA256=${MONK_SETTINGS_SHA256:-$default_settings_sha256}
for command_name in code curl sqlite3 awk; do
command -v "$command_name" >/dev/null 2>&1 || fail "missing required command: $command_name"
done
case "$PROFILE_NAME" in
''|*[!A-Za-z0-9._\ -]*) fail "profile name may contain only letters, numbers, spaces, dots, underscores, and hyphens" ;;
esac
if [ -n "${MONK_CODE_USER_HOME:-}" ]; then
code_user_home=$MONK_CODE_USER_HOME
else
case "$(uname -s)" in
Darwin) code_user_home="$HOME/Library/Application Support/Code/User" ;;
Linux) code_user_home="${XDG_CONFIG_HOME:-$HOME/.config}/Code/User" ;;
*) fail "automatic installation currently supports macOS and Linux" ;;
esac
fi
profile_window_opened=0
if ! code --profile "$PROFILE_NAME" --list-extensions >/dev/null 2>&1; then
printf 'Opening VS Code once to create the %s profile...\n' "$PROFILE_NAME"
code --profile "$PROFILE_NAME" --new-window >/dev/null 2>&1
profile_window_opened=1
attempt=0
while ! code --profile "$PROFILE_NAME" --list-extensions >/dev/null 2>&1; do
attempt=$((attempt + 1))
[ "$attempt" -lt 30 ] || fail "VS Code did not create the $PROFILE_NAME profile"
sleep 1
done
fi
printf 'Installing VSCodeVim in the %s profile...\n' "$PROFILE_NAME"
code --profile "$PROFILE_NAME" --install-extension vscodevim.vim --force >/dev/null
storage_json="$code_user_home/globalStorage/storage.json"
attempt=0
while [ ! -f "$storage_json" ] && [ "$attempt" -lt 15 ]; do
sleep 1
attempt=$((attempt + 1))
done
[ -f "$storage_json" ] || fail "VS Code did not create its profile registry at $storage_json"
profile_id=$(
awk -v wanted="$PROFILE_NAME" '
/"userDataProfiles"[[:space:]]*:/ { in_profiles = 1; next }
in_profiles && /^[[:space:]]*\]/ { exit }
in_profiles && /"location"[[:space:]]*:/ {
location = $0
sub(/^.*"location"[[:space:]]*:[[:space:]]*"/, "", location)
sub(/".*$/, "", location)
}
in_profiles && /"name"[[:space:]]*:/ {
name = $0
sub(/^.*"name"[[:space:]]*:[[:space:]]*"/, "", name)
sub(/".*$/, "", name)
if (name == wanted) {
print location
exit
}
}
' "$storage_json"
)
case "$profile_id" in
''|*[!A-Za-z0-9._-]*) fail "could not safely resolve the $PROFILE_NAME profile directory" ;;
esac
profile_dir="$code_user_home/profiles/$profile_id"
settings_file="$profile_dir/settings.json"
state_dir="$profile_dir/globalStorage"
state_db="$state_dir/state.vscdb"
timestamp=$(date +%Y%m%d%H%M%S)
temporary_settings=$(mktemp "${TMPDIR:-/tmp}/monk-vscode.XXXXXX")
trap 'rm -f "$temporary_settings"' EXIT HUP INT TERM
curl -fsSL "$SETTINGS_URL" -o "$temporary_settings"
if command -v shasum >/dev/null 2>&1; then
downloaded_sha=$(shasum -a 256 "$temporary_settings" | awk '{ print $1 }')
else
downloaded_sha=$(sha256sum "$temporary_settings" | awk '{ print $1 }')
fi
[ "$downloaded_sha" = "$SETTINGS_SHA256" ] || fail "settings checksum did not match"
mkdir -p "$profile_dir" "$state_dir"
if [ -f "$settings_file" ]; then
cp "$settings_file" "$settings_file.backup.$timestamp"
fi
install -m 600 "$temporary_settings" "$settings_file"
if [ -f "$state_db" ]; then
cp "$state_db" "$state_db.backup.$timestamp"
fi
disabled_extensions='[{"id":"github.copilot-chat"},{"id":"ms-vscode.js-debug"},{"id":"ms-vscode.js-debug-companion"},{"id":"ms-vscode.vscode-js-profile-table"},{"id":"vscode.configuration-editing"},{"id":"vscode.css-language-features"},{"id":"vscode.debug-auto-launch"},{"id":"vscode.debug-server-ready"},{"id":"vscode.emmet"},{"id":"vscode.extension-editing"},{"id":"vscode.git"},{"id":"vscode.git-base"},{"id":"vscode.github"},{"id":"vscode.github-authentication"},{"id":"vscode.grunt"},{"id":"vscode.gulp"},{"id":"vscode.html-language-features"},{"id":"vscode.ipynb"},{"id":"vscode.jake"},{"id":"vscode.json-language-features"},{"id":"vscode.markdown-language-features"},{"id":"vscode.markdown-math"},{"id":"vscode.media-preview"},{"id":"vscode.merge-conflict"},{"id":"vscode.mermaid-markdown-features"},{"id":"vscode.microsoft-authentication"},{"id":"vscode.npm"},{"id":"vscode.php-language-features"},{"id":"vscode.references-view"},{"id":"vscode.search-result"},{"id":"vscode.simple-browser"},{"id":"vscode.terminal-suggest"},{"id":"vscode.theme-abyss"},{"id":"vscode.theme-defaults"},{"id":"vscode.theme-kimbie-dark"},{"id":"vscode.theme-monokai"},{"id":"vscode.theme-monokai-dimmed"},{"id":"vscode.theme-red"},{"id":"vscode.theme-solarized-dark"},{"id":"vscode.theme-solarized-light"},{"id":"vscode.theme-tomorrow-night-blue"},{"id":"vscode.tunnel-forwarding"},{"id":"vscode.typescript-language-features"}]'
if [ "$VARIANT" = dark ]; then
disabled_extensions=$(printf '%s' "$disabled_extensions" | sed 's/,{"id":"vscode.theme-defaults"}//')
fi
sqlite3 "$state_db" <<SQL
CREATE TABLE IF NOT EXISTS ItemTable (key TEXT UNIQUE ON CONFLICT REPLACE, value BLOB);
INSERT OR REPLACE INTO ItemTable (key, value) VALUES ('extensionsIdentifiers/disabled', '$disabled_extensions');
SQL
printf 'Installed Monk in %s\n' "$profile_dir"
printf 'Backups use the suffix .backup.%s when prior files existed.\n' "$timestamp"
if [ "${MONK_NO_OPEN:-0}" != "1" ] && [ "$profile_window_opened" = "0" ]; then
code --profile "$PROFILE_NAME" --new-window >/dev/null 2>&1 &
fi
{
"window.commandCenter": false,
"window.autoDetectColorScheme": false,
"workbench.layoutControl.enabled": false,
"workbench.colorTheme": "Default Dark Modern",
"workbench.preferredLightColorTheme": "Default Dark Modern",
"workbench.preferredDarkColorTheme": "Default Dark Modern",
"workbench.preferredHighContrastColorTheme": "Default Dark Modern",
"workbench.preferredHighContrastLightColorTheme": "Default Dark Modern",
"workbench.colorCustomizations": {
"statusBar.background": "#1F1F1F",
"statusBar.foreground": "#CCCCCC",
"statusBar.border": "#2B2B2B",
"statusBar.noFolderBackground": "#1F1F1F",
"statusBar.noFolderForeground": "#CCCCCC",
"statusBar.debuggingBackground": "#1F1F1F",
"statusBar.debuggingForeground": "#CCCCCC",
"statusBarItem.activeBackground": "#FFFFFF12",
"statusBarItem.hoverBackground": "#FFFFFF0D",
"statusBarItem.remoteBackground": "#1F1F1F",
"statusBarItem.remoteForeground": "#CCCCCC",
"statusBarItem.errorBackground": "#1F1F1F",
"statusBarItem.errorForeground": "#F48771",
"statusBarItem.warningBackground": "#1F1F1F",
"statusBarItem.warningForeground": "#CCA700"
},
"workbench.activityBar.location": "hidden",
"workbench.statusBar.visible": true,
"workbench.editor.showTabs": "none",
"workbench.editor.editorActionsLocation": "hidden",
"workbench.startupEditor": "none",
"workbench.enableExperiments": false,
"workbench.settings.enableNaturalLanguageSearch": false,
"workbench.tips.enabled": false,
"workbench.localHistory.enabled": false,
"workbench.editor.enablePreview": true,
"workbench.editor.restoreViewState": false,
"workbench.editor.closeOnFileDelete": true,
"workbench.editor.limit.enabled": true,
"workbench.editor.limit.perEditorGroup": true,
"workbench.editor.limit.value": 4,
"workbench.editor.limit.excludeDirty": true,
"window.restoreWindows": "none",
"breadcrumbs.enabled": false,
"editor.lineNumbers": "off",
"editor.fontSize": 18,
"editor.fontFamily": "'Berka Mono Instrument', Menlo, Monaco, monospace",
"editor.glyphMargin": false,
"editor.folding": false,
"editor.showFoldingControls": "never",
"editor.minimap.enabled": false,
"editor.stickyScroll.enabled": false,
"editor.scrollbar.vertical": "hidden",
"editor.scrollbar.horizontal": "hidden",
"editor.overviewRulerBorder": false,
"editor.hideCursorInOverviewRuler": true,
"editor.renderLineHighlight": "none",
"editor.renderWhitespace": "none",
"editor.selectionHighlight": false,
"editor.occurrencesHighlight": "off",
"editor.matchBrackets": "never",
"editor.guides.indentation": false,
"editor.guides.bracketPairs": false,
"editor.bracketPairColorization.enabled": false,
"editor.codeLens": false,
"editor.colorDecorators": false,
"editor.hover.enabled": "off",
"editor.lightbulb.enabled": "off",
"editor.inlayHints.enabled": "off",
"editor.inlineSuggest.enabled": false,
"editor.parameterHints.enabled": false,
"editor.quickSuggestions": {
"comments": "off",
"strings": "off",
"other": "off"
},
"editor.suggestOnTriggerCharacters": false,
"editor.snippetSuggestions": "none",
"editor.wordBasedSuggestions": "off",
"editor.tabCompletion": "off",
"editor.semanticHighlighting.enabled": false,
"editor.largeFileOptimizations": true,
"editor.maxTokenizationLineLength": 10000,
"editor.stopRenderingLineAfter": 10000,
"explorer.autoReveal": false,
"explorer.decorations.badges": false,
"explorer.decorations.colors": false,
"problems.decorations.enabled": false,
"scm.diffDecorations": "none",
"git.enabled": false,
"git.decorations.enabled": false,
"task.autoDetect": "off",
"npm.autoDetect": "off",
"grunt.autoDetect": "off",
"gulp.autoDetect": "off",
"jake.autoDetect": "off",
"typescript.disableAutomaticTypeAcquisition": true,
"debug.javascript.autoAttachFilter": "disabled",
"terminal.integrated.enablePersistentSessions": false,
"terminal.integrated.shellIntegration.enabled": false,
"terminal.integrated.scrollback": 1000,
"files.autoSave": "off",
"files.hotExit": "off",
"files.restoreUndoStack": false,
"files.watcherExclude": {
"**/.git/**": true,
"**/.hg/**": true,
"**/.svn/**": true,
"**/node_modules/**": true,
"**/.next/**": true,
"**/.nuxt/**": true,
"**/.turbo/**": true,
"**/.cache/**": true,
"**/.venv/**": true,
"**/venv/**": true,
"**/.benchmark_venvs/**": true,
"**/__pycache__/**": true,
"**/target/**": true,
"**/dist/**": true,
"**/build/**": true,
"**/coverage/**": true
},
"search.exclude": {
"**/.git": true,
"**/.hg": true,
"**/.svn": true,
"**/node_modules": true,
"**/.next": true,
"**/.nuxt": true,
"**/.turbo": true,
"**/.cache": true,
"**/.venv": true,
"**/venv": true,
"**/.benchmark_venvs": true,
"**/__pycache__": true,
"**/target": true,
"**/dist": true,
"**/build": true,
"**/coverage": true
},
"search.followSymlinks": false,
"search.searchOnType": false,
"chat.disableAIFeatures": true,
"chat.agent.enabled": false,
"chat.agentHost.enabled": false,
"chat.agentHost.codexAgent.enabled": false,
"chat.agentHost.claudeAgent.enabled": false,
"chat.agentHost.byokModels.enabled": false,
"chat.agentHost.customTerminalTool.enabled": false,
"chat.agentHost.copilot.toolSearch.enabled": false,
"chat.plugins.enabled": false,
"chat.artifacts.enabled": false,
"chat.sessionSync.enabled": false,
"chat.growthNotification.enabled": false,
"chat.titleBar.signIn.enabled": false,
"chat.titleBar.openInAgentsWindow.enabled": false,
"chat.unifiedAgentsBar.enabled": false,
"chat.subagents.allowInvocationsFromSubagents": false,
"dictation.enabled": false,
"agents.voice.enabled": false,
"imageCarousel.chat.enabled": false,
"github.copilot.enable": {
"*": false
},
"github.copilot.nextEditSuggestions.enabled": false,
"extensions.ignoreRecommendations": true,
"extensions.showRecommendationsOnlyOnDemand": true,
"onboarding.enabled": false,
"vim.startInInsertMode": false,
"vim.useCtrlKeys": true,
"vim.useSystemClipboard": false,
"vim.enableNeovim": false,
"vim.easymotion": false,
"vim.sneak": false,
"vim.surround": false,
"vim.smartRelativeLine": false,
"vim.showMarksInGutter": false,
"vim.statusBarColorControl": false,
"vim.highlightedyank.enable": false,
"telemetry.telemetryLevel": "off",
"zenMode.fullScreen": true,
"zenMode.centerLayout": false,
"zenMode.hideActivityBar": true,
"zenMode.hideStatusBar": false,
"zenMode.hideLineNumbers": true,
"zenMode.showTabs": "none",
"zenMode.silentNotifications": true,
"zenMode.restore": true
}
{
"window.commandCenter": false,
"window.autoDetectColorScheme": false,
"workbench.layoutControl.enabled": false,
"workbench.colorTheme": "Quiet Light",
"workbench.preferredLightColorTheme": "Quiet Light",
"workbench.preferredDarkColorTheme": "Quiet Light",
"workbench.preferredHighContrastColorTheme": "Quiet Light",
"workbench.preferredHighContrastLightColorTheme": "Quiet Light",
"workbench.colorCustomizations": {
"statusBar.background": "#FFFFFF",
"statusBar.foreground": "#333333",
"statusBar.border": "#E5E5E5",
"statusBar.noFolderBackground": "#FFFFFF",
"statusBar.noFolderForeground": "#333333",
"statusBar.debuggingBackground": "#FFFFFF",
"statusBar.debuggingForeground": "#333333",
"statusBarItem.activeBackground": "#00000012",
"statusBarItem.hoverBackground": "#0000000D",
"statusBarItem.remoteBackground": "#FFFFFF",
"statusBarItem.remoteForeground": "#333333",
"statusBarItem.errorBackground": "#FFFFFF",
"statusBarItem.errorForeground": "#C72E0F",
"statusBarItem.warningBackground": "#FFFFFF",
"statusBarItem.warningForeground": "#7A5D00"
},
"workbench.activityBar.location": "hidden",
"workbench.statusBar.visible": true,
"workbench.editor.showTabs": "none",
"workbench.editor.editorActionsLocation": "hidden",
"workbench.startupEditor": "none",
"workbench.enableExperiments": false,
"workbench.settings.enableNaturalLanguageSearch": false,
"workbench.tips.enabled": false,
"workbench.localHistory.enabled": false,
"workbench.editor.enablePreview": true,
"workbench.editor.restoreViewState": false,
"workbench.editor.closeOnFileDelete": true,
"workbench.editor.limit.enabled": true,
"workbench.editor.limit.perEditorGroup": true,
"workbench.editor.limit.value": 4,
"workbench.editor.limit.excludeDirty": true,
"window.restoreWindows": "none",
"breadcrumbs.enabled": false,
"editor.lineNumbers": "off",
"editor.fontSize": 18,
"editor.fontFamily": "'Berka Mono Instrument', Menlo, Monaco, monospace",
"editor.glyphMargin": false,
"editor.folding": false,
"editor.showFoldingControls": "never",
"editor.minimap.enabled": false,
"editor.stickyScroll.enabled": false,
"editor.scrollbar.vertical": "hidden",
"editor.scrollbar.horizontal": "hidden",
"editor.overviewRulerBorder": false,
"editor.hideCursorInOverviewRuler": true,
"editor.renderLineHighlight": "none",
"editor.renderWhitespace": "none",
"editor.selectionHighlight": false,
"editor.occurrencesHighlight": "off",
"editor.matchBrackets": "never",
"editor.guides.indentation": false,
"editor.guides.bracketPairs": false,
"editor.bracketPairColorization.enabled": false,
"editor.codeLens": false,
"editor.colorDecorators": false,
"editor.hover.enabled": "off",
"editor.lightbulb.enabled": "off",
"editor.inlayHints.enabled": "off",
"editor.inlineSuggest.enabled": false,
"editor.parameterHints.enabled": false,
"editor.quickSuggestions": {
"comments": "off",
"strings": "off",
"other": "off"
},
"editor.suggestOnTriggerCharacters": false,
"editor.snippetSuggestions": "none",
"editor.wordBasedSuggestions": "off",
"editor.tabCompletion": "off",
"editor.semanticHighlighting.enabled": false,
"editor.largeFileOptimizations": true,
"editor.maxTokenizationLineLength": 10000,
"editor.stopRenderingLineAfter": 10000,
"explorer.autoReveal": false,
"explorer.decorations.badges": false,
"explorer.decorations.colors": false,
"problems.decorations.enabled": false,
"scm.diffDecorations": "none",
"git.enabled": false,
"git.decorations.enabled": false,
"task.autoDetect": "off",
"npm.autoDetect": "off",
"grunt.autoDetect": "off",
"gulp.autoDetect": "off",
"jake.autoDetect": "off",
"typescript.disableAutomaticTypeAcquisition": true,
"debug.javascript.autoAttachFilter": "disabled",
"terminal.integrated.enablePersistentSessions": false,
"terminal.integrated.shellIntegration.enabled": false,
"terminal.integrated.scrollback": 1000,
"files.autoSave": "off",
"files.hotExit": "off",
"files.restoreUndoStack": false,
"files.watcherExclude": {
"**/.git/**": true,
"**/.hg/**": true,
"**/.svn/**": true,
"**/node_modules/**": true,
"**/.next/**": true,
"**/.nuxt/**": true,
"**/.turbo/**": true,
"**/.cache/**": true,
"**/.venv/**": true,
"**/venv/**": true,
"**/.benchmark_venvs/**": true,
"**/__pycache__/**": true,
"**/target/**": true,
"**/dist/**": true,
"**/build/**": true,
"**/coverage/**": true
},
"search.exclude": {
"**/.git": true,
"**/.hg": true,
"**/.svn": true,
"**/node_modules": true,
"**/.next": true,
"**/.nuxt": true,
"**/.turbo": true,
"**/.cache": true,
"**/.venv": true,
"**/venv": true,
"**/.benchmark_venvs": true,
"**/__pycache__": true,
"**/target": true,
"**/dist": true,
"**/build": true,
"**/coverage": true
},
"search.followSymlinks": false,
"search.searchOnType": false,
"chat.disableAIFeatures": true,
"chat.agent.enabled": false,
"chat.agentHost.enabled": false,
"chat.agentHost.codexAgent.enabled": false,
"chat.agentHost.claudeAgent.enabled": false,
"chat.agentHost.byokModels.enabled": false,
"chat.agentHost.customTerminalTool.enabled": false,
"chat.agentHost.copilot.toolSearch.enabled": false,
"chat.plugins.enabled": false,
"chat.artifacts.enabled": false,
"chat.sessionSync.enabled": false,
"chat.growthNotification.enabled": false,
"chat.titleBar.signIn.enabled": false,
"chat.titleBar.openInAgentsWindow.enabled": false,
"chat.unifiedAgentsBar.enabled": false,
"chat.subagents.allowInvocationsFromSubagents": false,
"dictation.enabled": false,
"agents.voice.enabled": false,
"imageCarousel.chat.enabled": false,
"github.copilot.enable": {
"*": false
},
"github.copilot.nextEditSuggestions.enabled": false,
"extensions.ignoreRecommendations": true,
"extensions.showRecommendationsOnlyOnDemand": true,
"onboarding.enabled": false,
"vim.startInInsertMode": false,
"vim.useCtrlKeys": true,
"vim.useSystemClipboard": false,
"vim.enableNeovim": false,
"vim.easymotion": false,
"vim.sneak": false,
"vim.surround": false,
"vim.smartRelativeLine": false,
"vim.showMarksInGutter": false,
"vim.statusBarColorControl": false,
"vim.highlightedyank.enable": false,
"telemetry.telemetryLevel": "off",
"zenMode.fullScreen": true,
"zenMode.centerLayout": false,
"zenMode.hideActivityBar": true,
"zenMode.hideStatusBar": false,
"zenMode.hideLineNumbers": true,
"zenMode.showTabs": "none",
"zenMode.silentNotifications": true,
"zenMode.restore": true
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment