devAlice
← Windows

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

  1. Cuatro ajustes del sistema en Windows 11 (extensiones/ocultos en Explorer, historial del portapapeles, atajos de escritorios virtuales)
  2. winget instala ocho esenciales en una línea (Git, GH CLI, Windows Terminal, PowerShell 7, VS Code, mise, ripgrep, fzf)
  3. WSL2 + Ubuntu 24.04: wsl --install -d Ubuntu-24.04
  4. 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 -Force

1.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 --silent

Destacados: 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.ps1

El 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
PaquetePropósito
Git.GitGit for Windows (incluye Git Bash)
GitHub.cligh
Microsoft.WindowsTerminalTerminal con pestañas — muy superior a la consola predeterminada
Microsoft.PowerShellPowerShell 7 (el predeterminado es 5.1; 7 está muy mejorado)
Microsoft.VisualStudioCodeVS Code
jdx.miseGestor de versiones de runtime (Node, Python…)
BurntSushi.ripgrep.MSVCrg — grep más rápido
junegunn.fzfBuscador 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 --version

3.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.04

Esta única línea:

  1. Habilita la función WSL
  2. Habilita la Plataforma de máquina virtual
  3. Establece WSL2 como versión predeterminada
  4. 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 unzip

Para 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         2

5. 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: opcional

Iniciar 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_ed25519

5.3 Registrar la clave pública en GitHub

Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub | Set-Clipboard

Abre 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 browser

5.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.pub

Consejo: Puedes crear un enlace simbólico de %USERPROFILE%\.ssh de Windows al ~/.ssh de 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 3

Salida 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 -1

7. 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.ps1

Persistente (ámbito de usuario):

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned

git 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-agent puede 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 -s

winget rechaza con «found multiple packages»

Colisión de ID. Fija con --id:

winget install --id Git.Git --exact

El 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)