mirror of
https://github.com/clockworkpi/LauncherGoDev.git
synced 2025-12-12 07:58:51 +01:00
69 lines
1.4 KiB
Go
69 lines
1.4 KiB
Go
// +build !windows
|
|
/*
|
|
* Copied from https://github.com/itchyny/volume-go, MIT License
|
|
*/
|
|
package Sound
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"os"
|
|
"os/exec"
|
|
"strings"
|
|
)
|
|
|
|
func execCmd(cmdArgs []string) ([]byte, error) {
|
|
cmd := exec.Command(cmdArgs[0], cmdArgs[1:]...)
|
|
cmd.Env = append(os.Environ(), cmdEnv()...)
|
|
out, err := cmd.Output()
|
|
if err != nil {
|
|
err = fmt.Errorf(`failed to execute "%v" (%+v)`, strings.Join(cmdArgs, " "), err)
|
|
}
|
|
return out, err
|
|
}
|
|
|
|
// GetVolume returns the current volume (0 to 100).
|
|
func GetVolume() (int, error) {
|
|
out, err := execCmd(getVolumeCmd())
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
return parseVolume(string(out))
|
|
}
|
|
|
|
// SetVolume sets the sound volume to the specified value.
|
|
func SetVolume(volume int) error {
|
|
if volume < 0 || 100 < volume {
|
|
return errors.New("out of valid volume range")
|
|
}
|
|
_, err := execCmd(setVolumeCmd(volume))
|
|
return err
|
|
}
|
|
|
|
// IncreaseVolume increases (or decreases) the audio volume by the specified value.
|
|
func IncreaseVolume(diff int) error {
|
|
_, err := execCmd(increaseVolumeCmd(diff))
|
|
return err
|
|
}
|
|
|
|
// GetMuted returns the current muted status.
|
|
func GetMuted() (bool, error) {
|
|
out, err := execCmd(getMutedCmd())
|
|
if err != nil {
|
|
return false, err
|
|
}
|
|
return parseMuted(string(out))
|
|
}
|
|
|
|
// Mute mutes the audio.
|
|
func Mute() error {
|
|
_, err := execCmd(muteCmd())
|
|
return err
|
|
}
|
|
|
|
// Unmute unmutes the audio.
|
|
func Unmute() error {
|
|
_, err := execCmd(unmuteCmd())
|
|
return err
|
|
}
|