Atlas survey

Windows to Linux in 2026: what crosses over, what doesn't, and how to stage the switch

Almost everything a .NET developer does crosses to Linux in 2026 — the four things that don't are desktop Office with VBA, a native Outlook with working calendar, WPF/WinForms designers, and Windows-only compliance tooling; keep a Windows partition for those and stage the switch through live USB and dual-boot before committing.

44 sources ~15 min read #11 linux · migration · dotnet · microsoft-365 · dual-boot · wine · virtualization · belgium

Decision. For a .NET/TypeScript developer, the toolchain crosses over almost completely in 2026 — Rider, VS Code + MSSQL extension, SQL Server in Docker, PowerShell 7 all run natively [1][2]. What does not cross is the Microsoft office-worker layer: there is no desktop Office for Linux, so no VBA and no offline Excel [3][4]; no native Outlook with a working calendar [5]; no WPF/WinForms designers [6]; and, in Belgium specifically, eID works but breaks the moment your browser is a Snap or Flatpak [7]. Keep a small Windows partition for exactly those, and stage the move: live USB → dual-boot for 4 weeks → commit.

1. Inventory and substitutes

Rated by what actually happens when you try, not by feature-list parity. ✓ = drop-in. ⚠ = works with a caveat you will hit. ✗ = does not cross; needs an escape hatch.

Office and documents

Windows tool Linux substitute Verdict
Word / Excel / PowerPoint (desktop) Microsoft 365 for the web — the only officially supported route; there is no native Linux client [3] ⚠ no VBA, no add-ins, no offline, degrades on large workbooks [4]
.docx / .xlsx round-trip fidelity OnlyOffice Desktop Editors ⭐ 5.1k — OOXML is its native internal format, not an import filter [8][9] ✓ best fidelity for files you exchange with Windows colleagues
.odf-first editing, PDF, everything else LibreOffice ✓ but OOXML is a conversion, so complex styling and layout drift [8]
Excel VBA macros LibreOffice Tools ▸ Macros ▸ Convert Microsoft Office Macros, plus the Option VBASupport 1 compatibility mode [10] ✗ partial by design — anything touching the Excel object model, ActiveX or Application. internals fails. OnlyOffice doesn’t even try: its macros are JavaScript [8]
Power Query / Power Pivot none ✗ no equivalent; move the ETL into Python/pandas or SQL, which you already write

Practical rule: documents you author → OnlyOffice. Documents with macros or Power Query that someone else owns → Windows VM or a Cloud PC. Don’t try to port a business-critical macro workbook; it is the single most common reason a switch reverses.

Communication

Windows tool Linux substitute Verdict
Teams desktop Teams PWA — Microsoft retired the Linux Electron client in December 2022 and made the PWA the supported path [11][12] ⚠ PWA install is Edge/Chrome only — not Firefox [12]
Teams screen sharing PipeWire + xdg-desktop-portal under Wayland ⚠ the recurring Linux-Teams failure. Missing/misconfigured portals → the share picker is empty or the browser crashes; Wayland-vs-Xorg session choice changes the outcome [13]. Test this on day one, not week three
Outlook (mail) Thunderbird 145+ speaks EWS natively with OAuth2 for M365 [5][14] ⚠ and on a clock — see below
Outlook (calendar + contacts) nothing native ✗ Thunderbird’s Exchange support is mail-only; calendar and address book are “on the roadmap”, Graph is “not yet implemented” [5]. Use Outlook Web

⚠ The EWS trap. Thunderbird’s native Exchange support rides on EWS, and Microsoft starts blocking EWS in Exchange Online on 1 October 2026, with full retirement in April 2027; F1/F3/Kiosk licences were cut off from 1 March 2026 [15]. Thunderbird’s Graph backend is not shipped yet [5]. If your mail is in M365, plan on Outlook Web as the primary client and treat Thunderbird as a bonus that may stop working inside 12 months. On-premises Exchange is unaffected [15].

.NET and database tooling

Windows tool Linux substitute Verdict
Visual Studio (Windows-only) JetBrains Rider — runs on Linux, ships .NET 10 / C# 14 support ✓ for ASP.NET, libraries, tests, containers [6]; free for non-commercial use, commercial licence still required for work [16]
VS designers for WPF/WinForms none ✗ Rider edits XAML but has no visual designers [6]; WPF/WinForms apps only run on Windows regardless [17]. EnableWindowsTargeting=true lets CI build them on Linux — it does not let you run or design them
WPF app you must keep maintaining Avalonia for new work; Avalonia XPF for lifting an existing WPF app cross-platform ⚠ XPF is commercial and a port, not a recompile
Azure Data Studio retired 28 February 2026 — no updates, no security fixes [1] ✗ do not build on it
SSMS query/schema work VS Code + MSSQL extension: schema compare, schema designer, DACPAC/BACPAC, Query Profiler, SQL projects open unconverted [1] ✓ this is Microsoft’s own designated replacement
SSMS SQL Server Agent + full admin none — Microsoft explicitly keeps Agent and “classic administration” in SSMS, which is Windows-only [1] ✗ the real SQL gap. Job scheduling → RDP, VM, or T-SQL against msdb
Multi-engine SQL client DBeaver, DataGrip, Beekeeper Studio — all cross-platform [18] ✓
Local SQL Server instance SQL Server in Docker — supported on Linux hosts with x86-64 CPUs [2] ✓ better than Windows. ⚠ x86-64 only; ARM and emulation (QEMU/Rosetta/Prism) are untested and unsupported [2]
IIS + inetmgr Kestrel behind nginx/Caddy, or just your existing Docker Compose ✓ you already run Coolify; this is the direction the platform moved anyway
PowerShell 5.1 scripts PowerShell 7 runs natively on Linux ⚠ Get-WmiObject was removed in PS 6+, and the CIM cmdlets that replaced it were never ported to non-Windows [19]. Anything WMI/CIM, registry, ActiveDirectory, or COM stays on Windows
.NET Framework 4.x projects none ✗ Framework targets don’t build or run on Linux. Legacy Framework work = Windows VM

Creative and compliance

Windows tool Linux substitute Verdict
Photoshop Photopea (browser, best PSD fidelity of the free tools), GIMP, Krita for illustration [20] ⚠ fine for dev-adjacent work, not for a print/agency workflow
Affinity Photo/Designer/Publisher Canva made Affinity free and unified in 2025 [21]; Linux is community-only — an unofficial Affinity v3 AppImage that bundles Wine [22], or AffinityOnLinux ⭐ 1.7k via Bottles/Lutris/Heroic [23] ⚠ unsupported by the vendor; treat as a nice-to-have
Premiere / After Effects / Acrobat Pro DaVinci Resolve (native Linux) / nothing / Okular+qpdf ✗ for AE and Acrobat Pro’s forms & redaction
Corporate SSL VPN OpenConnect covers Cisco AnyConnect, Palo Alto GlobalProtect, Fortinet FortiGate and F5 protocols [24]; GlobalProtect-openconnect ⭐ 2.2k adds SSO/MFA/YubiKey with a GUI [25] ⚠ works, but it’s a reimplementation — if your security team requires the vendor client with posture checking, you lose
Belgian eID card reader Official eid-mw + eid-viewer packages via eid-archive, supported on Debian 12/13, Ubuntu 24.04/26.04 LTS, Mint 21.3/22.3, Fedora 43/44, RHEL 10 + Rocky/Alma, openSUSE Leap 16 [26] ✓ officially supported — on those distros
eID in the browser Firefox/Chrome loading libbeidpkcs11.so ✗ Belgian-specific landmine: eID cannot work with a Snap or Flatpak browser — sandbox confinement blocks the PKCS#11 module [7]. On Ubuntu, Firefox is a Snap by default, so eID is broken out of the box. Fix = install a .deb/native browser
Banking / itsme itsme activates via your bank app, or with eID + card reader if the bank doesn’t offer in-app activation [27] ✓ activate itsme while still on Windows — then most Belgian banking is browser + phone and the reader becomes a fallback

Card readers themselves are almost always CCID-class and need no vendor driver — the software stack (pcscd + eid-mw) is what matters [26].

2. Escape hatches, ranked by what they actually cost

Hatch Good for Cost / caveat
Web app (M365 web, Outlook Web, Photopea) 80% of the office layer Free, zero maintenance, no offline, no macros [4]
Wine / Bottles / CrossOver Office 2016 and older, Affinity, small vendor utilities ✗ Office 365 / 2021 / 2024 don’t work reliably — click-to-run installers defeat Wine, and Outlook/OneDrive/OneNote components are broken or absent [28]
WinApps / WinBoat (Windows VM + RemoteApp over FreeRDP) modern Office, Access, any single stubborn Windows app Individual Windows app windows appear on your Linux desktop with MIME/menu integration — far higher compatibility than Wine, at the price of running a Windows VM [29]
Full VM under KVM/virt-manager Visual Studio proper, SSMS, .NET Framework, anything with posture-checked VPN Best hypervisor on Linux: VirtIO drivers, low overhead, real PCI passthrough. VirtualBox’s 3D/passthrough is markedly weaker [30]
GPU passthrough (VFIO) near-native graphics in the VM Single-GPU passthrough works but takes your GPU away from the host while the VM runs — the Linux desktop goes dark and comes back on shutdown [31]. Fiddly IOMMU/vBIOS setup. Only worth it for GPU-bound Windows work
Windows 365 Cloud PC the compliance/legacy app you touch monthly Reachable from any HTML5 browser on Linux, no client needed [32]. Business tiers run roughly $28–$56/user/month after the May 2026 price cut; Enterprise starts near $31 and scales past $120 [33]
Keep a Windows partition everything above, at zero recurring cost Windows 11 is fine. If the machine is on Windows 10, note support ended 14 October 2025 — consumer ESU (free with settings sync, 1,000 Rewards points, or $30) runs until the programme closes 12 October 2027 [34]

For this reader’s profile the honest answer is: dual-boot Windows for Visual Studio designers + SSMS Agent + macro workbooks, and don’t bother with GPU passthrough.

3. Switch mechanics: dual-boot vs full wipe

Dual-boot, for the first 4–8 weeks, always. The pitfalls are known and all avoidable:

Pitfall What happens Fix
BitLocker Windows 11 24H2 can auto-enable BitLocker even on Home. Repartitioning or a bootloader change triggers a recovery-key prompt [35] Print the recovery key. Suspend or disable BitLocker before you touch partitions.
Fast Startup / hibernation Windows leaves NTFS in a hibernated state; Linux refuses read-write mounts. Worse, hibernating one OS then booting the other can damage a shared EFI System Partition [36] Disable Fast Startup in Windows. Never hibernate in a dual-boot setup
Undersized ESP Windows ships a ~100 MB ESP; GRUB/systemd-boot + a couple of kernels and initramfs images fill it Target ≥ 260 MiB (512 MB is comfortable) [37][36]. Reuse the existing ESP — never reformat it
Install order Windows installers overwrite the bootloader and don’t detect Linux; Linux installers detect Windows and chain-load it Windows first, Linux second [36]
Clock skew Linux writes UTC to the RTC, Windows reads it as local time → your clock jumps 1–2 hours every reboot timedatectl set-local-rtc 1 on Linux, or set Windows to UTC via registry [38]. Fix it once or it will erode your patience daily
Secure Boot third-party kernel modules (NVIDIA, VirtualBox) need signing under Secure Boot [35] Enroll a MOK key during install, or disable Secure Boot — but disabling it also disables BitLocker’s TPM unseal

4. Data, filesystems, and identity

NTFS. The in-kernel ntfs3 driver has a track record of freezes and corruption; the mature choice is ntfs-3g — slower, safe [39]. Use NTFS for reading your old data, not as a daily-driver filesystem. For a shared partition, exFAT has native read-write kernel support and works on both sides [40] — but it carries no POSIX permissions or extended attributes, which matters next.

⚠ Dropbox is the sharpest constraint in this whole migration. The Linux client relies on extended attributes to track files and supports only unencrypted ext4 for the sync folder [41]. Consequences:

  • Your Dropbox folder cannot live on NTFS, exFAT, or btrfs/ZFS. If you were planning btrfs snapshots, Dropbox is a reason to keep at least one ext4 volume.
  • ext4 inside a LUKS container is fine — LUKS is block-level and invisible to Dropbox [41]. ext4’s own file-based encryption (fscrypt) is not.
  • The client also needs an AppIndicator-capable tray; GNOME needs an extension [42].

Identity and config, in order:

  1. SSH keys — copy ~/.ssh, then chmod 700 ~/.ssh && chmod 600 ~/.ssh/id_*. Wrong permissions are the #1 “my key doesn’t work” cause on Linux.
  2. GPG — gpg --export-secret-keys --armor on Windows, gpg --import on Linux, then gpg --edit-key <id> trust. Don’t copy private-keys-v1.d between versions; export/import.
  3. Browser profiles — sign in to Firefox Sync / Chrome sync rather than copying profile directories across OSes. On Ubuntu, install a non-Snap Firefox if you need eID [7].
  4. Dotfiles — this is the moment to put them in a git repo with a bootstrap script; you’ll run it at least twice during a staged migration.
  5. itsme + 2FA + password manager — verify recovery on your phone before wiping anything [27].

5. WSL2 experience: what transfers and what doesn’t

Transfers cleanly Doesn’t transfer
bash, coreutils, package managers, apt/dnf muscle memory Desktop stack: display server (X11 vs Wayland), compositor, portals, audio (PipeWire), theming — WSL2 taught you none of it
Docker, compose, CLI-driven workflows — and they get faster: container start ~0.3s native vs ~1.2s on WSL2, container filesystem ops 3–5× faster [43] Hardware: printers, Bluetooth, webcam, sleep/resume, fingerprint readers, external monitor hotplug, GPU drivers
Shell scripting, ssh, git, editors Networking model — WSL2 defaults to NAT and is isolated from the host stack; native Linux gives you bridged/host networking and real interfaces [44]
Comfort with the CLI generally USB/GPU passthrough, kernel modules, init-system and system-wide config tinkering [43]

WSL2 makes you competent at the Linux userland and leaves you a beginner at the Linux desktop. Budget your learning time accordingly: the surprises will all be graphical, audio, or power-management, not shell.

6. Staged migration plan with go/no-go checkpoints

Stage 0 — Inventory (½ day, still on Windows)

List every app you opened in the last 90 days. Mark each ✓/⚠/✗ against §1. Anything ✗ must have a named hatch from §2 before you proceed. Print the BitLocker recovery key. Activate itsme. Push dotfiles to git.

Stage 1 — Live USB (2 evenings, zero risk)

Boot the candidate distro from USB without installing. This tests hardware, which is the failure mode you cannot fix later.

Gate 1 — all must pass, or change distro/kernel version:

  • Wi-Fi and Bluetooth work without hunting for firmware
  • External monitor + correct resolution/refresh; laptop scaling readable
  • Suspend and resume, twice (lid close, lid open)
  • Audio out and mic in, headset switching
  • Teams PWA screen share picks up a window and a full screen [13]
  • Webcam in a browser call
  • Trackpad gestures, fn-keys (brightness, volume)

Stage 2 — Dual-boot (4 weeks, reversible)

Shrink Windows from inside Windows (Disk Management), leave ≥ 80 GB for Linux + a separate /home. Suspend BitLocker, disable Fast Startup, reuse the ESP, install Linux second [36][35]. Fix the RTC immediately [38]. Put /home (or at least the Dropbox folder) on ext4 [41].

Then do real work on Linux, and log every reboot into Windows and why.

Gate 2 — the checkpoints that decide whether it sticks:

  • Full .NET solution builds, tests run, debugger hits breakpoints in Rider
  • Docker + Coolify deploys work end-to-end
  • SQL Server container up, MSSQL extension connects, schema compare works [1][2]
  • Corporate VPN connects and stays up through a sleep cycle [24]
  • eID reads your card in a non-sandboxed browser; a real government/bank flow completes [26][7]
  • Dropbox reports “Up to date”, not a filesystem warning [41]
  • You joined a Teams meeting, shared a screen, and presented — twice
  • Printing/scanning works if you need it
  • Windows reboot log ≤ 2 in the final week, and every entry maps to a known ✗ item

Fail on any of the first six → fix or abandon; those are not things you learn to live with. Reboots > 2/week for reasons that aren’t on your ✗ list → the switch is not ready.

Stage 3 — Commit (after Gate 2)

Don’t wipe Windows. Shrink it to ~80–120 GB, keep it for VS designers, SSMS Agent, macro workbooks, and any posture-checked VPN, and give Linux the rest. Convert one of the reclaimed NTFS partitions to ext4/btrfs once you’ve verified the data is elsewhere [39]. If you find yourself booting Windows less than monthly after three months, convert it to a KVM guest and reclaim the disk [30] — a VM you can snapshot beats a partition you have to reboot into.

Rollback trigger: if at any point you’re spending more than ~2 hours/week fighting the desktop rather than working, go back to Windows for the quarter and retry after the next LTS/kernel release. The migration is cheap to repeat and expensive to force.

Citations · 44 sources

Click the Citations tab to load…