There isn't one simple reason for it. There's a fairly large set of complicated interrelated reasons some of which require going back over 40 years of history to explain. If things had gone differently we'd have had a different result. For instance, just off the top of my head here, if free software had arrived earlier the network effect where everyone wanted one particular operating system because it's what everyone else was using and therefore all the software was written for it might not have happened. People would've been free to build and distribute things for whichever OS they preferred. If Bill Gates hadn't been such a sharp business dealer, maybe his company wouldn't have amassed the vast wealth and influence required to dominate things so thoroughly back in the 1980s. If American antitrust law hadn't been defanged maybe it would've stopped him, because many of Microsoft's business practices that allowed them to get the monopoly we're still recovering from were quite despicable. If DRM (digital restrictions management) hadn't caused problems for Linux such as preventing it playing DVDs for the first few years they were popular, maybe it would've got further by now. If education systems around the world did a better job encouraging more people to be curious about how the things they rely on actually work, maybe the switch to free software would be going faster.
Anyway, it's one thing that is slowly going in the right direction for the most part.