diff --git a/widgets/terminal.go b/widgets/terminal.go
index 3a496de..c8b97d3 100644
--- a/widgets/terminal.go
+++ b/widgets/terminal.go
@@ -65,7 +65,9 @@ func (term *Terminal) Close(err error) {
 	if !term.closed && term.OnClose != nil {
 		term.OnClose(err)
 	}
-	term.ctx.HideCursor()
+	if term.ctx != nil {
+		term.ctx.HideCursor()
+	}
 	term.closed = true
 }
 
@@ -126,7 +128,7 @@ func (term *Terminal) Draw(ctx *ui.Context) {
 
 func (term *Terminal) draw() {
 	term.vterm.Draw()
-	if term.focus && !term.closed {
+	if term.focus && !term.closed && term.ctx != nil {
 		if !term.cursorShown {
 			term.ctx.HideCursor()
 		} else {
@@ -182,7 +184,9 @@ func (term *Terminal) HandleEvent(ev tcell.Event) bool {
 		term.draw()
 		// Perform a tcell screen.Show() to show our updates
 		// immediately
-		term.ctx.Show()
+		if term.ctx != nil {
+			term.ctx.Show()
+		}
 		term.invalidate()
 		return true
 	case *tcellterm.EventTitle: