commit 9eed830

delthas  ·  2025-12-23 11:22:03 +0000 UTC
parent 333c27f
Fix broken Compose input on ghostty

See: https://github.com/ghostty-org/ghostty/discussions/10026
1 files changed,  +16, -10
+16, -10
 1@@ -124,24 +124,30 @@ func New(config Config) (ui *UI, colors ConfigColors, err error) {
 2 		}
 3 	}
 4 	var vx *vaxis.Vaxis
 5-	vx, err = vaxis.New(vaxis.Options{
 6+	opts := vaxis.Options{
 7 		DisableMouse: !config.Mouse,
 8-		CSIuBitMask:  vaxis.CSIuDisambiguate | vaxis.CSIuReportEvents | vaxis.CSIuAlternateKeys | vaxis.CSIuAllKeys | vaxis.CSIuAssociatedText,
 9+		CSIuBitMask:  vaxis.CSIuDisambiguate | vaxis.CSIuReportEvents | vaxis.CSIuAlternateKeys | vaxis.CSIuAssociatedText, // | vaxis.CSIuAllKeys, // ,
10 		WithTTY:      config.WithTTY,
11 		WithConsole:  config.WithConsole,
12-	})
13+	}
14+	vx, err = vaxis.New(opts)
15 	if err != nil {
16 		return
17 	}
18-	if strings.HasPrefix(vx.TerminalID(), "iTerm2") {
19+	restart := true
20+	switch {
21+	case strings.HasPrefix(vx.TerminalID(), "iTerm2"):
22 		// see: https://gitlab.com/gnachman/iterm2/-/issues/12177
23+		opts.CSIuBitMask = vaxis.CSIuDisambiguate | vaxis.CSIuReportEvents | vaxis.CSIuAlternateKeys
24+	case strings.HasPrefix(vx.TerminalID(), "ghostty"):
25+		// see: https://github.com/ghostty-org/ghostty/discussions/10026
26+		opts.CSIuBitMask = vaxis.CSIuDisambiguate | vaxis.CSIuReportEvents | vaxis.CSIuAlternateKeys | vaxis.CSIuAssociatedText
27+	default:
28+		restart = false
29+	}
30+	if restart {
31 		vx.Close()
32-		vx, err = vaxis.New(vaxis.Options{
33-			DisableMouse: !config.Mouse,
34-			CSIuBitMask:  vaxis.CSIuDisambiguate | vaxis.CSIuReportEvents | vaxis.CSIuAlternateKeys,
35-			WithTTY:      config.WithTTY,
36-			WithConsole:  config.WithConsole,
37-		})
38+		vx, err = vaxis.New(opts)
39 		if err != nil {
40 			return
41 		}