code: func (a *Application) SetScreen(screen tcell.Screen) *Application {
  	if screen == nil {
  		return a // Invalid input. Do nothing.
  	}
  
  	a.Lock()
  	if a.screen == nil {
  		// Run() has not been called yet.
  		a.screen = screen
  		a.Unlock()
  		return a
  	}
  
  	// Run() is already in progress. Exchange screen.
  	oldScreen := a.screen
  	a.Unlock()
  	oldScreen.Fini()
  	a.screenReplacement <- screen
  
  	return a
  }
docs: // SetScreen allows you to provide your own tcell.Screen object. For most
  // applications, this is not needed and you should be familiar with
  // tcell.Screen when using this function.
  //
  // This function is typically called before the first call to Run(). Init() need
  // not be called on the screen.