Alternatively, instead of the window comparator, simply use a comparator with positive feedback.
It has the advantage of being MUCH simpler, in terms of parts. Also, it should be VERY stable, thanks to the positive feedback on the comparator.
You can make it even simpler by just getting rid of the analog switch, as well as two of the op-amps.
Ok, I'm having fun now.
So, this circuit never makes a perfect triangle wave, because you're charging the capacitor with a voltage through a resistor.
To make it operate as a true triangle wave generator, we need to do a significant amount of refactoring.
Basically, we need to charge the capacitor with a current source.
This is simple enough to do, all you have to do is stick the cap in the op-amp feedback.
Look at This
(Note: this oscillators start-up is a little weird. It basically relies on leakage to charge the capacitor enough that the bottom op-amp output goes to one of the rails. This would not be a problem in the real world, since op-amps always have a little bit of offset, which would drive the output to one of the rails immediately on startup.
Basically, the simulated op-amps are too perfect.)