From 26b85266e2e6e37aeb2fbd2aafcefd83293d7ef0 Mon Sep 17 00:00:00 2001 From: kar Date: Wed, 31 Dec 2025 03:11:49 -0600 Subject: [PATCH] feat: Adding dmnu interface --- client.go | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/client.go b/client.go index 2279431..4d2fe22 100644 --- a/client.go +++ b/client.go @@ -1,11 +1,15 @@ -package main +package main + import ( "fmt" + "log" "net" "os" - "log" + "os/exec" "slices" - + "strings" + + "github.com/joho/godotenv" ) const ( @@ -31,7 +35,7 @@ func main() { os.Exit(1) } - comandosPermitidos := []string{"play", "pause", "info", "next"} + comandosPermitidos := []string{"play", "pause", "info", "next", "addsong"} var comando string if slices.Contains(comandosPermitidos, os.Args[1]) { comando = os.Args[1] @@ -50,6 +54,9 @@ func main() { func handleConn(conn net.Conn, comando string) { defer conn.Close() + if comando == "addsong" { + manageAddSong(conn, comando) + } _, err := conn.Write([]byte(comando)) if err != nil { log.Println("Error al enviar comando", err) @@ -60,5 +67,25 @@ func handleConn(conn net.Conn, comando string) { log.Println("Error al recibir respuesta", err) } fmt.Printf("%s", string(respuestaRaw[:n])) + } + +func manageAddSong(conn net.Conn, comando string) { + _, err := conn.Write([]byte(comando)) + if err != nil { + log.Println("Error al enviar comando", err) + } + cmd := exec.Command("bash", "-c", `dmenu -i -l 1`) + cmd.Stdin = conn + output, err := cmd.CombinedOutput() + if err != nil { + log.Println("Error al ejecutar comando", err) + } + fmt.Printf("Enviando %s al servidor\n", strings.TrimSpace(string(output))) + _, err = conn.Write([]byte(output)) + if err != nil { + log.Println("Error al enviar nueva cancion", err) + } + os.Exit(0) +}