feat: Adding dmnu interface

This commit is contained in:
kar
2025-12-31 03:11:49 -06:00
parent 7a28c9c1ff
commit 26b85266e2
+29 -2
View File
@@ -1,10 +1,14 @@
package main package main
import ( import (
"fmt" "fmt"
"log"
"net" "net"
"os" "os"
"log" "os/exec"
"slices" "slices"
"strings"
"github.com/joho/godotenv" "github.com/joho/godotenv"
) )
@@ -31,7 +35,7 @@ func main() {
os.Exit(1) os.Exit(1)
} }
comandosPermitidos := []string{"play", "pause", "info", "next"} comandosPermitidos := []string{"play", "pause", "info", "next", "addsong"}
var comando string var comando string
if slices.Contains(comandosPermitidos, os.Args[1]) { if slices.Contains(comandosPermitidos, os.Args[1]) {
comando = os.Args[1] comando = os.Args[1]
@@ -50,6 +54,9 @@ func main() {
func handleConn(conn net.Conn, comando string) { func handleConn(conn net.Conn, comando string) {
defer conn.Close() defer conn.Close()
if comando == "addsong" {
manageAddSong(conn, comando)
}
_, err := conn.Write([]byte(comando)) _, err := conn.Write([]byte(comando))
if err != nil { if err != nil {
log.Println("Error al enviar comando", err) 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) log.Println("Error al recibir respuesta", err)
} }
fmt.Printf("%s", string(respuestaRaw[:n])) 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)
}