Skip to content

Instantly share code, notes, and snippets.

@Holi0317
Last active March 17, 2025 00:45
Show Gist options
  • Select an option

  • Save Holi0317/07af088986c5944c15dcdb928f8e5cf1 to your computer and use it in GitHub Desktop.

Select an option

Save Holi0317/07af088986c5944c15dcdb928f8e5cf1 to your computer and use it in GitHub Desktop.
Nushell zero width tty
module github.com/holi0317/zero-pty
go 1.24.1
require github.com/aymanbagabas/go-pty v0.2.2
require (
github.com/creack/pty v1.1.21 // indirect
github.com/u-root/u-root v0.11.0 // indirect
golang.org/x/crypto v0.17.0 // indirect
golang.org/x/sys v0.16.0 // indirect
)
github.com/aymanbagabas/go-pty v0.2.2 h1:YZREB4eSj+1xdbbItIokX0ekjjeifgJOA+ZvxU4/WM8=
github.com/aymanbagabas/go-pty v0.2.2/go.mod h1:gfvlwH+0U66BCwxJREjJaAOEs9H1OFf3YFjI9WSiZ04=
github.com/creack/pty v1.1.21 h1:1/QdRyBaHHJP61QkWMXlOIBfsgdDeeKfK8SYVUWJKf0=
github.com/creack/pty v1.1.21/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
github.com/u-root/gobusybox/src v0.0.0-20221229083637-46b2883a7f90 h1:zTk5683I9K62wtZ6eUa6vu6IWwVHXPnoKK5n2unAwv0=
github.com/u-root/gobusybox/src v0.0.0-20221229083637-46b2883a7f90/go.mod h1:lYt+LVfZBBwDZ3+PHk4k/c/TnKOkjJXiJO73E32Mmpc=
github.com/u-root/u-root v0.11.0 h1:6gCZLOeRyevw7gbTwMj3fKxnr9+yHFlgF3N7udUVNO8=
github.com/u-root/u-root v0.11.0/go.mod h1:DBkDtiZyONk9hzVEdB/PWI9B4TxDkElWlVTHseglrZY=
golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k=
golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU=
golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4=
golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0=
package main
import (
"io"
"log"
"os"
"github.com/aymanbagabas/go-pty"
)
const script = `
print (is-terminal --stdin)
print (is-terminal --stdout)
print (is-terminal --stderr)
print (term size | to md --pretty)
print ({a: b})
print ({})
`
func run() error {
pty, err := pty.New()
if err != nil {
return err
}
defer pty.Close()
c := pty.Command("nu", "-c", script)
if err := c.Start(); err != nil {
return err
}
go io.Copy(os.Stdout, pty)
if err := c.Wait(); err != nil {
return err
}
return nil
}
func main() {
err := run()
if err != nil {
log.Fatal(err)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment