mirror of https://github.com/liamg/aminal.git
28 lines
542 B
Go
28 lines
542 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.title = 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
|
|
}
|