fix plugin installation

This commit is contained in:
2025-09-09 22:21:09 +02:00
parent d962c87fe3
commit 7da6746d0e
4 changed files with 24 additions and 44 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
bin.sysusage

View File

@@ -4,6 +4,7 @@ import (
"bufio" "bufio"
"fmt" "fmt"
"os" "os"
"runtime"
"strings" "strings"
"time" "time"
@@ -11,39 +12,6 @@ import (
"github.com/shirou/gopsutil/v3/mem" "github.com/shirou/gopsutil/v3/mem"
) )
func isSupported() bool {
goos := os.Getenv("TMUX_SYSUSAGE_GOOS") // Debug/Override optional
if goos == "" {
goos = detectGOOS()
}
switch goos {
case "darwin":
return true
case "linux":
id := linuxID()
return id == "ubuntu" || id == "arch"
default:
return false
}
}
func detectGOOS() string {
// runtime.GOOS vermeiden, um Import minimal zu halten? Es ist Standard—nutzen wir.
// (Minimale Imports sind nice-to-have, aber runtime ist winzig.)
// Wir nehmen ihn doch, weil zuverlässig.
// → Ein einzelner Import mehr ist ok.
return runtimeGOOS()
}
//go:noinline
func runtimeGOOS() string {
// kleiner Trick: getrennt, damit der Compiler runtime nicht inlined—irrelevant, aber clean.
return getGOOS()
}
//go:linkname getGOOS runtime.GOOS
func getGOOS() string
func linuxID() string { func linuxID() string {
f, err := os.Open("/etc/os-release") f, err := os.Open("/etc/os-release")
if err != nil { if err != nil {
@@ -62,12 +30,22 @@ func linuxID() string {
return "" return ""
} }
func isSupported() bool {
switch runtime.GOOS {
case "darwin":
return true
case "linux":
id := linuxID()
return id == "ubuntu" || id == "arch"
default:
return false
}
}
func main() { func main() {
if !isSupported() { if !isSupported() {
// Keine Ausgabe auf nicht unterstützten Systemen
return return
} }
// Kurze CPU-Stichprobe
values, err := cpu.Percent(400*time.Millisecond, false) values, err := cpu.Percent(400*time.Millisecond, false)
if err != nil || len(values) == 0 { if err != nil || len(values) == 0 {
return return
@@ -76,7 +54,6 @@ func main() {
if err != nil { if err != nil {
return return
} }
// Kompakte tmux-Ausgabe
fmt.Printf("CPU %.0f%% | RAM %.0f%%", values[0], vm.UsedPercent) fmt.Printf("CPU %.0f%% | RAM %.0f%%", values[0], vm.UsedPercent)
} }

BIN
monitor

Binary file not shown.

18
plugin.tmux Normal file → Executable file
View File

@@ -1,12 +1,14 @@
#!/usr/bin/env bash
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# tmux bind-key T run-shell "$CURRENT_DIR/scripts/tmux_list_plugins.sh"
# Binary bauen (still). Wenn go fehlt: überspringen # Binary bauen (still). Wenn go fehlt: überspringen
run-shell "cd '#{plugin_path}' && GO111MODULE=on go mod tidy >/dev/null 2>&1 || true" tmux run-shell "cd $CURRENT_DIR && GO111MODULE=on go mod tidy >/dev/null 2>&1 || true"
run-shell "cd '#{plugin_path}' && GO111MODULE=on go build -ldflags='-s -w' -o bin.sysusage ./cmd/monitor >/dev/null 2>&1 || true" tmux run-shell "cd $CURRENT_DIR && GO111MODULE=on go build -ldflags='-s -w' -o bin.sysusage ./cmd/monitor >/dev/null 2>&1 || true"
# tmux-Variable setzen: #{sysusage} # tmux-Variable setzen: #{sysusage}
set -g @sysusage_cmd '#{plugin_path}/bin.sysusage' tmux set -g @sysusage_cmd "$CURRENT_DIR/bin.sysusage"
set -g status-interval 2 tmux set -g status-interval 2
# Du kannst später im Theme einfach schreiben:
# set -g status-right "... #{sysusage} ..."
set -g -F @sysusage '#(@sysusage_cmd)'