So you’ve got a couple of bits of info that are muddying things for you.
With VPN apps running on phones/desktop windows and Mac(I think), they are able to do split tunneling by app. When you move to a general client, like just the normal VPN client, you can still do a split tunnel, but you do it the “normal” way, which is at the network level. You can’t do it per app.
Split tunnel is really just a phrase to encompass routing traffic to specific gateways. When you have a VPN active, somewhere there is an additional gateway for outbound non-local (i.e. Internet, generally) traffic. Those consumer VPN clients typically will just set all your outbound traffic to use the VPN gateway, but your normal gateway to the Internet is still there and active, it’s just a matter of selecting what traffic goes out it.
Ok, so that said, specifically how you do this with a general VPN client is with route rules. Unfortunately, this means you do have to know/learn some TCP/IP networking to make this happen. What you are doing is inserting a route, that says for a specific destination(IP address), always use a specific gateway, in your case, your normal Internet gateway instead of the one created by the VPN connection.
Now, you’ll notice that this is by destination, not app. This is the typical way split tunnels happen at a network level- those client apps can only do what they do by poking around system internals and being able to pick traffic from other running processes. I don’t know if any of the client apps can do that on Linux. So what you need to do to do this is know the IP address(or address range) that you want to have on the split, and what your local gateway is.
So a trivial example. We’ll assume your local gateway, your router, is sitting at 192.168.1.1, which is does for a lot of people. And lets say you want Google DNS to not go over the VPN, which is 8.8.8.8. In that case, the command(as root) should be:
ip route add
8.8.8.8/32
via
192.168.1.1
That should cause the Google IP to always use your gateway. There’s some additional complexity with route weighting, but I think the more specific the affected IP destination, the more preferential it is. The /32 means to only apply to that IP, specifying something else would get you a larger set of IPs. And the “via 192.168.1.1” is just like it sounds, it’s saying use that as the gateway for that destination. This is setting up a split tunnel for that IP address. So, you should now be asking “so for an app, I need to add a rule for all the IPs it uses that I don’t want to go over the VPN?” and the answer is, unfortunately, yes. On the plus side, you don’t need to do it more than the one time, so if you have multiple apps using the one IP(Like the DNS example) the one rule covers the destination for everything on that system.
So as you can see, you do end up needing to know a little TCP/IP networking, and a little about your local network config, to do split tunnels manually. Hopefully that’s enough to get you going. I don’t remember if those rules are persistant by default, I don’t think they are, you may have to add another switch, (-p?) to make it stay between reboots. Incidentally, being there all the time shouldn’t hurt, like, if your VPN is off, it won’t stop working, as long as your router’s address doesn’t change.