VSCodium, emacs, vim/neovim, helix.
Helix is pretty slick, but it’s not very extensible. Very easy to use and if the out of the box features are good enough for you then it’s a fine IDE.
Neovim is my preference unless I’m working with Jupyter notebooks, in which case I switch to vscodium. It’s a pain in the ass to set up. I took the easy way out with LazyVim. It’s fast to work with and I can use it for almost everything.
I dabbled with emacs many years ago. It’s like vim but completely different. You can make it do anything. Personally, I don’t care for the keyboard shortcuts. It’s probably easier to pick up than vim, but all the key chords and sequences are too much for me. In any case, anyone willing to look at vim should also take a look at emacs.
VSCodium is accessible and extensible. You can’t go wrong with this one. It can’t refactor like the Jetbrains stuff, but if there’s anything else it can’t do then I don’t know what it is. It’s a great IDE.
Really, any of these can do just about any job and do it very well. There’s no choice that clearly stands above the others. It really comes down to personal preference.
I wouldn’t call it a mess. There’s a reason it’s not standard. It’s because Linux is about having choices. Linux users have such a variety of use cases and there are a zillion different kinds of hardware it runs on. There’s no one thing that works for everyone.
I think this flexibility is a big part of what makes Linux special but also what makes it difficult for newcomers. The documentation on all the various software is typically very good to excellent. The harder part is figuring out which choice to make in the first place.
I don’t really have any answers except to take it all in and be more willing to do some research than some other platforms may require.
System-wide DoH is sort of a power user thing to begin with so other platforms will likely be similar. I think you would probably be using some kind of app to do it on Windows or Mac.
By the way, you might want to take a look at stubby for your situation. I did something similar a few weeks back and that’s what I used. It’s runs a little local DNS proxy that forwards requests to your upstream servers. Then you would set your DNS server to 127.0.0.1 in NetworkManager or whatever you’re using. You have to change like 3 lines in the default stubby config a typical distro may provide to make it work.