Configuración de Windows 11 para desarrolladores — la primera hora tras el desembalaje
Configuración en un solo camino para Windows 11: winget, WSL2, Git, SSH. Lleva un PC nuevo al estado listo para git push.
Hay dos enfoques para el desarrollo en Windows: (a) hacerlo todo dentro de WSL2/Linux, (b) ejecutar de forma nativa con PowerShell + Git Bash. Esta guía configura ambos para que puedas elegir por proyecto. ¿Node/Go/Python? WSL2 gana por mucho. ¿.NET, juegos, Tauri, APIs Win32? Lo nativo es la respuesta.
Objetivo: Windows 11 (22H2 o más reciente) con winget disponible. Windows 10 funciona en su mayor parte, con pequeñas diferencias en winget.
Resumen
- Cuatro ajustes del sistema en Windows 11 (extensiones/ocultos en Explorer, historial del portapapeles, atajos de escritorios virtuales)
- winget instala ocho esenciales en una línea (Git, GH CLI, Windows Terminal, PowerShell 7, VS Code, mise, ripgrep, fzf)
- WSL2 + Ubuntu 24.04:
wsl --install -d Ubuntu-24.04 - Configuración global de Git + SSH ed25519 → registrar en GitHub →
gh auth login
Requisitos previos
- Windows 11 22H2+ — confirma con
winver. Es la primera versión que incluye winget. - Derechos de administrador — necesarios para instalar WSL2 y algunos paquetes winget de alcance de sistema.
- Internet + cuenta de Microsoft (prácticamente obligatorio en Windows 11 Home).
- Virtualización por hardware — Intel VT-x o AMD-V habilitado en BIOS/UEFI (requerido por WSL2). Suele estar activado por defecto.
Verifica con
systeminfo | findstr /C:"Hyper-V"— todas las líneas de «Hyper-V Requirements» deben indicar Sí.
1. Ajustes del sistema en Windows 11 — 5 minutos
1.1 Explorer — mostrar extensiones, archivos ocultos y ruta completa
Win + E abre Explorer → Ver → Mostrar → Extensiones de nombre de archivo + Elementos ocultos. O hazlo de un golpe desde PowerShell:
# Mostrar extensiones + archivos ocultos
Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced' -Name HideFileExt -Value 0
Set-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced' -Name Hidden -Value 1
Stop-Process -Name explorer -Force1.2 Historial del portapapeles (Win + V)
Muy útil, desactivado por defecto. Configuración → Sistema → Portapapeles → Historial del portapapeles ON.
1.3 Escritorios virtuales
Ctrl + Win + ←/→ — cambia entre escritorios. Está integrado, pero muchos usuarios nuevos no lo conocen. La respuesta de Windows al gesto de deslizamiento entre espacios de macOS.
1.4 PowerToys (opcional, muy recomendado)
La suite de productividad oficial de Microsoft. Una línea de winget:
winget install Microsoft.PowerToys --source winget --silentDestacados: FancyZones (organización de ventanas — equivalente a Rectangle), PowerToys Run (Alt + Space — equivalente a Raycast), Keyboard Manager (reasignación de teclas).
2. winget — comprueba el gestor de paquetes
winget viene con Windows 11. Las versiones muy antiguas pueden necesitar actualización.
winget --version
# v1.x.x ← ¿aparece? Estás listo¿Falta o está desactualizado? Microsoft Store → busca «App Installer» → actualiza. winget vive dentro de ese paquete.
Script de automatización (opcional)
¿Prefieres ejecutar un solo script en lugar de cada paso? Siempre: descarga → verifica SHA-256 → inspecciona → ejecuta.
setup-windows.ps1# 1. Descargar
Invoke-WebRequest -Uri https://devalice.jaceclub.com/assets/windows/initial-setup/setup-windows.ps1 -OutFile setup-windows.ps1
# 2. Verificar SHA-256
Get-FileHash setup-windows.ps1 -Algorithm SHA256
# esperado: 75A9A5CC7B8804CF0808971A648B7174DADE3A5F32F2DB9C80A9783242EEEEBD
# (minúsculas: 75a9a5cc7b8804cf0808971a648b7174dade3a5f32f2db9c80a9783242eeeebd)
# 3. Inspeccionar
notepad setup-windows.ps1
# 4. Ejecutar (relaja la política de ejecución solo para esta sesión)
PowerShell -ExecutionPolicy Bypass -File .\setup-windows.ps1El script es idempotente — volver a ejecutarlo tras un fallo parcial es seguro. Automatiza la instalación de winget + configuración de Git + creación de clave SSH. La instalación de WSL2 y el registro de la clave en GitHub siguen siendo manuales.
Si prefieres seguir cada paso manualmente, continúa más abajo.
3. Esenciales de winget — 10 minutos
3.1 Ocho esenciales en una línea
winget install --silent --accept-source-agreements --accept-package-agreements `
Git.Git `
GitHub.cli `
Microsoft.WindowsTerminal `
Microsoft.PowerShell `
Microsoft.VisualStudioCode `
jdx.mise `
BurntSushi.ripgrep.MSVC `
junegunn.fzf| Paquete | Propósito |
|---|---|
Git.Git | Git for Windows (incluye Git Bash) |
GitHub.cli | gh |
Microsoft.WindowsTerminal | Terminal con pestañas — muy superior a la consola predeterminada |
Microsoft.PowerShell | PowerShell 7 (el predeterminado es 5.1; 7 está muy mejorado) |
Microsoft.VisualStudioCode | VS Code |
jdx.mise | Gestor de versiones de runtime (Node, Python…) |
BurntSushi.ripgrep.MSVC | rg — grep más rápido |
junegunn.fzf | Buscador difuso |
Algunos paquetes necesitan una terminal nueva para que se actualice el PATH.
3.2 Verificación
git --version
gh --version
pwsh --version # PowerShell 7
code --version
mise --version
rg --version3.3 Establecer Windows Terminal como predeterminado
Configuración → Privacidad y seguridad → Para desarrolladores → Terminal → elige Windows Terminal. Cualquier apertura futura de consola se abrirá en Windows Terminal.
4. WSL2 + Ubuntu — 10 minutos
Si vas a hacer trabajo real en Linux, WSL2 es tu herramienta principal. Node, Python, Docker — todo es mucho más fluido dentro de WSL2.
4.1 Instalación
En un PowerShell como administrador (clic derecho → «Ejecutar como administrador»):
wsl --install -d Ubuntu-24.04Esta única línea:
- Habilita la función WSL
- Habilita la Plataforma de máquina virtual
- Establece WSL2 como versión predeterminada
- Descarga e instala Ubuntu 24.04
Reinicia una vez. Tras el reinicio, Ubuntu arranca y pide nombre de usuario/contraseña.
4.2 Limpieza inicial
Dentro de Ubuntu:
sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential git curl unzipPara abrir la carpeta Ubuntu actual en VS Code para Windows (instala automáticamente la extensión WSL Remote):
code .Accede a los archivos WSL desde Explorer con
\\wsl$\Ubuntu-24.04\home\<usuario>. Las operaciones de E/S de Linux son más rápidas dentro de las rutas WSL (/home/...). Poner el código bajo rutas de Windows (/mnt/c/...) es mucho más lento.
4.3 Verificar el estado de WSL
Desde PowerShell:
wsl --status
wsl --list --verbose
# NAME STATE VERSION
# Ubuntu-24.04 Running 25. Configuración global de Git + SSH — 10 minutos
WSL y Windows tienen configuraciones git independientes. Configura ambas.
5.1 Configuración de Git en el lado Windows (PowerShell)
git config --global user.name "Tu Nombre"
git config --global user.email "tu@ejemplo.com"
git config --global init.defaultBranch main
git config --global pull.rebase false
git config --global core.autocrlf true # Gestión automática de finales de línea Windows
git config --global core.editor "code --wait"5.2 Clave SSH — ed25519
ssh-keygen -t ed25519 -C "tu@ejemplo.com"
# Ruta predeterminada: $env:USERPROFILE\.ssh\id_ed25519 (Enter para aceptar)
# Frase de contraseña: opcionalIniciar ssh-agent + añadir la clave (PowerShell como administrador):
# Iniciar el servicio automáticamente
Set-Service -Name ssh-agent -StartupType Automatic
Start-Service ssh-agent
# Añadir la clave
ssh-add $env:USERPROFILE\.ssh\id_ed255195.3 Registrar la clave pública en GitHub
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub | Set-ClipboardAbre https://github.com/settings/ssh/new → Título: «Windows 11 (nombre del PC)» → pega la clave → Add SSH key.
5.4 Autenticación de gh CLI
gh auth login
# GitHub.com → HTTPS → Y (auth Git with GitHub credentials) → Login with a web browser5.5 Configuración de Git en el lado WSL (opcional, si WSL es tu entorno principal)
Dentro de Ubuntu, repite:
git config --global user.name "Tu Nombre"
git config --global user.email "tu@ejemplo.com"
git config --global init.defaultBranch main
ssh-keygen -t ed25519 -C "tu@ejemplo.com"
# Imprime la clave pública → regístrala por separado en GitHub (mantener claves distintas por superficie de máquina facilita las auditorías)
cat ~/.ssh/id_ed25519.pubConsejo: Puedes crear un enlace simbólico de
%USERPROFILE%\.sshde Windows al~/.sshde WSL para compartir claves, pero los permisos suelen fallar. Mantener claves separadas es más seguro.
6. Verificación — ¿se instaló todo correctamente?
Desde PowerShell:
Write-Host "--- Versions ---"
[System.Environment]::OSVersion.Version
git --version
gh --version | Select-Object -First 1
pwsh --version
wsl --list --verbose
Write-Host "--- GitHub auth ---"
ssh -T git@github.com 2>&1 | Select-Object -First 1
gh auth status 2>&1 | Select-Object -First 3Salida esperada:
--- Versions ---
Major Minor Build
----- ----- -----
10 0 22631 (Windows 11 22H2+)
git version 2.x.x.windows.x
gh version 2.x.x
PowerShell 7.x.x
NAME STATE VERSION
Ubuntu-24.04 Running 2
--- GitHub auth ---
Hi <tu-usuario>! You've successfully authenticated, ...
github.com
✓ Logged in to github.com account <tu-usuario>
Para verificar en el lado WSL, dentro de Ubuntu:
git --version
ssh -T git@github.com 2>&1 | head -17. Resolución de problemas
wsl --install falla con 0x80070003 o un error de virtualización
VT-x / AMD-V está deshabilitado en el BIOS. Reinicia en el BIOS → Configuración de CPU → Tecnología de virtualización → Habilitado → guarda y reinicia.
winget «command not found»
App Installer falta o es muy antiguo. Microsoft Store → busca «App Installer» → instala/actualiza.
Ejecución de script de PowerShell bloqueada
.\setup-windows.ps1 : File ... cannot be loaded because running scripts is disabled on this system.
Omisión de una sesión:
PowerShell -ExecutionPolicy Bypass -File .\setup-windows.ps1Persistente (ámbito de usuario):
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSignedgit push devuelve «Permission denied (publickey)»
ssh-add -l # ¿Está la clave en el agente?
ssh -vT git@github.com 2>&1 | Select -Last 20- El servicio
ssh-agentpuede haberse detenido →Start-Service ssh-agent - La clave pública puede no estar en GitHub → comprueba
https://github.com/settings/keys
La hora dentro de WSL se desvía (futura/pasada) tras la suspensión
Habitual tras la suspensión. Dentro de WSL:
sudo hwclock -swinget rechaza con «found multiple packages»
Colisión de ID. Fija con --id:
winget install --id Git.Git --exactEl texto coreano se rompe en Windows Terminal
Settings (Ctrl + ,) → ese perfil → Appearance → Font face → Cascadia Mono o D2Coding (cualquier fuente con cobertura coreana correcta).
8. Qué sigue
Esta guía terminó en «Windows 11 puede hacer git push». A continuación:
- WSL2 avanzado — integración Docker Desktop ↔ WSL2, límites de memoria (
%USERPROFILE%\.wslconfig) — ajuste de WSL - Herramientas de desarrollo — runtimes de lenguajes (Node, Python), extensiones de editor
- Entorno de agente IA — configuración de Claude Code — /ai-agents/claude-code
- Uso simultáneo de Mac — compartir entrada, sincronización de archivos — /multi-os/input-sharing
Referencias
Registro de cambios
- 2026-05-12 — Traducción inicial al español (devAlice M3 i18n seed)