Skip to content

Instantly share code, notes, and snippets.

@ismetanin
Created April 9, 2026 21:35
Show Gist options
  • Select an option

  • Save ismetanin/e64b9ce3d1642612f4e8f85d721d3c14 to your computer and use it in GitHub Desktop.

Select an option

Save ismetanin/e64b9ce3d1642612f4e8f85d721d3c14 to your computer and use it in GitHub Desktop.
Set majority of default extensions to be open with VS Code: swift set_vscode_defaults.swift
import CoreServices
import UniformTypeIdentifiers
let bundleID = "com.microsoft.VSCode"
let extensions = [
// Shell / scripts
"sh", "bash", "zsh", "fish",
// Web
"html", "css", "js", "jsx", "ts", "tsx", "json", "xml", "svg",
// Backend
"py", "rb", "go", "rs", "java", "kt", "swift", "php", "c", "cpp", "h", "m", "mm",
// Data / config
"yaml", "yml", "toml", "ini", "cfg", "env", "conf",
// Docs / text
"md", "txt", "csv", "log",
// DB
"sql",
]
var ok = 0
var failed = 0
var unknown = 0
for ext in extensions {
if let uti = UTType(filenameExtension: ext) {
let result = LSSetDefaultRoleHandlerForContentType(uti.identifier as CFString, .all, bundleID as CFString)
if result == noErr {
print("✓ .\(ext)")
ok += 1
} else {
print("✗ .\(ext) (error \(result))")
failed += 1
}
} else {
print("? .\(ext) (no UTI found)")
unknown += 1
}
}
print("\n\(ok) set, \(failed) failed, \(unknown) unknown")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment