tools

various tools I have been using throughout the years
Log | Files | Refs | README | LICENSE

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:
Mwrd/main.go | 12+++++++-----
Mwrd/tui.go | 26++++++++++++++++++++------
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])