commit d9c9f86c3fcb2cbad42020f4233c6621ee9335de
parent 442591b5aa83d4c5778b0c087f9c11fe605554a8
Author: mtmn <miro@haravara.org>
Date: Sun, 21 Jun 2026 01:00:42 +0200
wrd: fix stale cache, add x11/darwin support
Diffstat:
2 files changed, 27 insertions(+), 11 deletions(-)
diff --git a/wrd/main.go b/wrd/main.go
@@ -161,9 +161,12 @@ func render(src, out string) error {
}
_ = 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() {
@@ -237,8 +240,7 @@ func fuzzy(hay, needle string) bool {
}
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
}
diff --git a/wrd/tui.go b/wrd/tui.go
@@ -6,6 +6,7 @@ import (
"os"
"os/exec"
"os/signal"
+ "runtime"
"sort"
"strings"
"syscall"
@@ -189,7 +190,8 @@ func (a *app) draw() {
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")
@@ -197,7 +199,7 @@ func (a *app) draw() {
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"
}
@@ -276,9 +278,21 @@ func (a *app) yank() {
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) {
@@ -316,7 +330,7 @@ func truncate(s string, w int) string {
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])