aminal/terminal/osc.go

28 lines
544 B
Go

package terminal
import "fmt"
func oscHandler(buffer chan rune, terminal *Terminal) error {
b := <-buffer
switch b {
case rune('0'):
b = <-buffer
if b == rune(';') {
title := []rune{}
for {
b = <-buffer
if b == 0x07 || b == 0x5c { // 0x07 -> BELL, 0x5c -> ST (\)
break
}
title = append(title, b)
}
terminal.SetTitle(string(title))
} else {
return fmt.Errorf("Invalid OSC 0 control sequence: 0x%02X", b)
}
default:
return fmt.Errorf("Unknown OSC control sequence: 0x%02X", b)
}
return nil
}