Files
wisp-open/internal/linux/media.go
T

45 lines
907 B
Go

//go:build linux
package linux
import (
"os/exec"
"strings"
"wis-free-v3/internal/logger"
)
// IsPlaying checks if media is currently playing using playerctl
func IsPlaying() bool {
cmd := exec.Command("playerctl", "status")
out, err := cmd.Output()
if err != nil {
return false
}
return strings.EqualFold(strings.TrimSpace(string(out)), "playing")
}
// TogglePlayPause sends the play-pause command via playerctl
func TogglePlayPause() {
cmd := exec.Command("playerctl", "play-pause")
err := cmd.Run()
if err != nil {
logger.Error("Failed to toggle media on Linux: %v", err)
}
}
// PauseMedia checks if playing, pauses if so, returns whether we paused
func PauseMedia() bool {
wasPlaying := IsPlaying()
if wasPlaying {
TogglePlayPause()
}
return wasPlaying
}
// ResumeMedia resumes only if we paused it
func ResumeMedia(wasPaused bool) {
if wasPaused {
TogglePlayPause()
}
}