I'm using the github.com/kr/pty
package to create a pseudo-TTY for external processes I spawn off. However the terminal size for them seems to be smaller than the terminal emulator window size (ie ncurses and other terminal UIs will only draw in the top left corner of xterm / Konsole / whatever).
I have raised a bug with the pty package as the idea way to fix this issue would be with the package itself, but as a work around it might be handy if I could set the dimensions of the TTY myself (in code).
How would I go about doing this?
NB The project is written in Go (Golang) so ideally I'd need advice in doing this in C or Go. Also the project I'm working on has a strong emphasis on cross platform compatibility so it would be handy to know if any syscalls required are OS specific.
I found the solution. Turns out creating a new pseudo-TTY was the wrong approach and I can actually use the standard Go libraries to achieve what I wanted:
cmd := exec.Command(name, parameters...)
cmd.SysProcAttr = &syscall.SysProcAttr{
Ctty: int(os.Stdout.Fd()) // set the TTY
}
// These must be the respective Std os.File as using a Reader/Writer
// wouldn't work if you're trying to assign a TTY to your terminal
// emulator.
cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr