mirror of
https://github.com/kovidgoyal/kitty
synced 2026-07-18 14:34:52 +02:00
Fix some responses from terminal sometimes leaking into shell on after kitten exit
Always do a roundtrip at kitten exit, except for special purpose kittens. This slows down exit by one round trip time (capped at 2 seconds), however it ensures that we never get terminal response leak. Fixes #9839
This commit is contained in:
@@ -114,6 +114,7 @@ func run_plain_text_loop(opts *Options) (err error) {
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
lp.NoRoundtripToTerminalOnExit = true
|
||||
dest := "c"
|
||||
if opts.UsePrimary {
|
||||
dest = "p"
|
||||
|
||||
@@ -286,10 +286,11 @@ func parse_aliases(raw []string) (map[string][]string, error) {
|
||||
}
|
||||
|
||||
func run_get_loop(opts *Options, args []string) (err error) {
|
||||
lp, err := loop.New(loop.NoAlternateScreen, loop.NoRestoreColors, loop.NoMouseTracking, loop.NoInBandResizeNotifications)
|
||||
lp, err := loop.New(loop.NoAlternateScreen, loop.NoRestoreColors, loop.NoMouseTracking, loop.NoInBandResizeNotifications, loop.NoFocusTracking)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
lp.NoRoundtripToTerminalOnExit = true
|
||||
var available_mimes []string
|
||||
var wg sync.WaitGroup
|
||||
var getting_data_for string
|
||||
|
||||
@@ -43,10 +43,11 @@ func (self *Input) has_mime_matching(predicate func(string) bool) bool {
|
||||
}
|
||||
|
||||
func write_loop(inputs []*Input, opts *Options) (err error) {
|
||||
lp, err := loop.New(loop.NoAlternateScreen, loop.NoRestoreColors, loop.NoMouseTracking, loop.NoInBandResizeNotifications)
|
||||
lp, err := loop.New(loop.NoAlternateScreen, loop.NoRestoreColors, loop.NoMouseTracking, loop.NoInBandResizeNotifications, loop.NoFocusTracking)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
lp.NoRoundtripToTerminalOnExit = true
|
||||
var waiting_for_write loop.IdType
|
||||
var buf [4096]byte
|
||||
aliases, aerr := parse_aliases(opts.Alias)
|
||||
|
||||
@@ -21,11 +21,12 @@ func DetectSupport(timeout time.Duration) (memory, files, direct bool, err error
|
||||
temp_files_to_delete := make([]string, 0, 8)
|
||||
shm_files_to_delete := make([]shm.MMap, 0, 8)
|
||||
var direct_query_id, file_query_id, memory_query_id uint32
|
||||
lp, e := loop.New(loop.NoAlternateScreen, loop.NoRestoreColors, loop.NoMouseTracking, loop.NoInBandResizeNotifications)
|
||||
lp, e := loop.New(loop.NoAlternateScreen, loop.NoRestoreColors, loop.NoMouseTracking, loop.NoInBandResizeNotifications, loop.NoFocusTracking)
|
||||
if e != nil {
|
||||
err = e
|
||||
return
|
||||
}
|
||||
lp.NoRoundtripToTerminalOnExit = true
|
||||
print_error := func(format string, args ...any) {
|
||||
lp.Println(fmt.Sprintf(format, args...))
|
||||
}
|
||||
|
||||
@@ -112,10 +112,11 @@ func (p *parsed_data) generate_chunks(callback func(string)) {
|
||||
}
|
||||
|
||||
func (p *parsed_data) run_loop() (err error) {
|
||||
lp, err := loop.New(loop.NoAlternateScreen, loop.NoRestoreColors, loop.NoMouseTracking, loop.NoInBandResizeNotifications)
|
||||
lp, err := loop.New(loop.NoAlternateScreen, loop.NoRestoreColors, loop.NoMouseTracking, loop.NoInBandResizeNotifications, loop.NoFocusTracking)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
lp.NoRoundtripToTerminalOnExit = true
|
||||
activated := -1
|
||||
prefix := ESC_CODE_PREFIX + "i=" + p.identifier
|
||||
|
||||
|
||||
@@ -26,10 +26,11 @@ func main(cmd *cli.Command, opts *Options, args []string) (rc int, err error) {
|
||||
queries[i] = x
|
||||
}
|
||||
}
|
||||
lp, err := loop.New(loop.NoAlternateScreen, loop.NoKeyboardStateChange, loop.NoMouseTracking, loop.NoRestoreColors, loop.NoInBandResizeNotifications)
|
||||
lp, err := loop.New(loop.NoAlternateScreen, loop.NoKeyboardStateChange, loop.NoMouseTracking, loop.NoRestoreColors, loop.NoInBandResizeNotifications, loop.NoFocusTracking)
|
||||
if err != nil {
|
||||
return 1, err
|
||||
}
|
||||
lp.NoRoundtripToTerminalOnExit = true
|
||||
timed_out := false
|
||||
lp.OnInitialize = func() (string, error) {
|
||||
lp.QueryTerminal(queries...)
|
||||
|
||||
Reference in New Issue
Block a user