fix: lazysecrets starts from fzf's become, on a non-blocking terminal #67
No files matched your search
@@ -436,6 +436,7 @@ Flags:
|
|||||||
Styles: &theme,
|
Styles: &theme,
|
||||||
DefaultFg: defaultFg,
|
DefaultFg: defaultFg,
|
||||||
})
|
})
|
||||||
|
blockingStdin()
|
||||||
p = tea.NewProgram(m)
|
p = tea.NewProgram(m)
|
||||||
final, err := p.Run()
|
final, err := p.Run()
|
||||||
if fm, ok := final.(app.Model); ok {
|
if fm, ok := final.(app.Model); ok {
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
//go:build !unix
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
func blockingStdin() {}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
//go:build unix
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"syscall"
|
||||||
|
|
||||||
|
"golang.org/x/term"
|
||||||
|
)
|
||||||
|
|
||||||
|
// blockingStdin makes a terminal on stdin blocking again. fzf's become
|
||||||
|
// hands on its /dev/tty non-blocking; Go can't poll /dev/tty on macOS,
|
||||||
|
// so it reads it directly, and the TUI's first read would fail with
|
||||||
|
// EAGAIN ("resource temporarily unavailable").
|
||||||
|
func blockingStdin() {
|
||||||
|
if fd := int(os.Stdin.Fd()); term.IsTerminal(fd) {
|
||||||
|
_ = syscall.SetNonblock(fd, false)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in new issue
Block a user