commit - 442591b5aa83d4c5778b0c087f9c11fe605554a8
commit + d9c9f86c3fcb2cbad42020f4233c6621ee9335de
blob - afb38c4714fb342a7f201d1fb4ad77e2e477011e
blob + 428401e15c4ee8830f37b7b6c0d749d5d349a4bb
--- wrd/main.go
+++ wrd/main.go
}
_ = f.Close()
- // stamp the cache with the source mtime
+ if rerr != nil {
+ _ = os.Remove(out)
+ return rerr
+ }
_ = os.Chtimes(out, time.Now(), fi.ModTime())
- return rerr
+ return nil
}
func (a *app) load() {
}
func url(rel string) string {
- if strings.HasSuffix(rel, "/index.html") {
- rel = strings.TrimSuffix(rel, "index.html")
- }
+ rel = strings.TrimSuffix(rel, "/index.html")
+ rel = strings.TrimSuffix(rel, "index.html")
return "https://" + rel
}
blob - f957c41e6f2a6716611dc96ecd9656b168389846
blob + cc8250fdb2255a08dfa0cb55fccb85829f546820
--- wrd/tui.go
+++ wrd/tui.go
"os"
"os/exec"
"os/signal"
+ "runtime"
"sort"
"strings"
"syscall"
if !a.content {
mode = "browse"
}
- prompt := fmt.Sprintf("\x1b[1m%s\x1b[0m ▸ %s", mode, string(a.query))
+ qTrunc := truncate(string(a.query), a.cols/2)
+ prompt := fmt.Sprintf("\x1b[1m%s\x1b[0m ▸ %s", mode, qTrunc)
count := fmt.Sprintf("\x1b[2m%d/%d\x1b[0m", min(len(a.results), a.sel+1), len(a.results))
sb.WriteString(pad(prompt, a.cols-visLen(count)) + count + "\r\n")
for i := 0; i < listH; i++ {
left := strings.Repeat(" ", leftW)
if ri := a.top + i; ri < len(a.results) {
- left = padRaw(truncate(a.results[ri].text(), leftW), leftW)
+ left = padraw(truncate(a.results[ri].text(), leftW), leftW)
if ri == a.sel {
left = "\x1b[7m" + left + "\x1b[0m"
}
if !ok {
return
}
- cmd := exec.Command("wl-copy")
- cmd.Stdin = strings.NewReader(url(m.d.rel))
- _ = cmd.Run()
+ clip := url(m.d.rel)
+ var cmds []*exec.Cmd
+ if runtime.GOOS == "darwin" {
+ cmds = []*exec.Cmd{exec.Command("pbcopy")}
+ } else if os.Getenv("WAYLAND_DISPLAY") != "" {
+ cmds = []*exec.Cmd{exec.Command("wl-copy")}
+ } else {
+ cmds = []*exec.Cmd{exec.Command("xclip", "-selection", "clipboard")}
+ }
+ for _, cmd := range cmds {
+ cmd.Stdin = strings.NewReader(clip)
+ if cmd.Run() == nil {
+ return
+ }
+ }
}
func runTTY(cmd *exec.Cmd) {
return string(rs[:w-1]) + "…"
}
-func padRaw(s string, w int) string {
+func padraw(s string, w int) string {
rs := []rune(s)
if len(rs) >= w {
return string(rs[:w])