feat: Adding dmnu interface

This commit is contained in:
kar
2025-12-31 03:11:49 -06:00
parent 7a28c9c1ff
commit 26b85266e2
+31 -4
View File
@@ -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)
}