func Deinit() {
	wait := make(chan interface{})
	Queue(func() {
		termbox.Close()
		focus = nil
		prevFocus = nil
		windows = make(map[int]*Window) // toss all windows

		rawMtx.Lock()
		termRaw = false
		rawMtx.Unlock()

		wait <- true
	})
	<-wait
}
func Deinit() {
	wait := make(chan interface{})
	Queue(func() {
		termbox.Close()
		focus = nil
		prevFocus = nil
		windows = make(map[int]*Window) // toss all windows

		rawMtx.Lock()
		termRaw = false
		rawMtx.Unlock()

		wait <- true
	})
	<-wait
}
// Deinit switches the terminal back to cooked mode and it terminates managed
// window mode.  Init must be called again if a switch is required again.
// Deinit shall be called on application exit; failing to do so may leave the
// terminal corrupted.  If that does happen typing "reset" on the shell usually
// fixes this problem.