init
This commit is contained in:
commit
b325aabc3f
5
go.mod
Normal file
5
go.mod
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
module puvol
|
||||||
|
|
||||||
|
go 1.17
|
||||||
|
|
||||||
|
require mrogalski.eu/go/pulseaudio v0.0.0-20200511091429-8449222912dd
|
2
go.sum
Normal file
2
go.sum
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
mrogalski.eu/go/pulseaudio v0.0.0-20200511091429-8449222912dd h1:yEN6CTPZV70rUFqpZ5SqJn15JK5iKiSL4Gdw2gJ98ug=
|
||||||
|
mrogalski.eu/go/pulseaudio v0.0.0-20200511091429-8449222912dd/go.mod h1:C3V0v+gsiHHbMtFJvwozjNVdPJZw9oUxlRTVc619wSU=
|
107
main.go
Normal file
107
main.go
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"flag"
|
||||||
|
"fmt"
|
||||||
|
"log"
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
|
||||||
|
"mrogalski.eu/go/pulseaudio"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
flag.Parse()
|
||||||
|
|
||||||
|
c, e := pulseaudio.NewClient()
|
||||||
|
if e != nil {
|
||||||
|
log.Println(e)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
if os.Args[0] == "puvol-cont" {
|
||||||
|
cont(c)
|
||||||
|
} else {
|
||||||
|
single(c)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func printvol(c *pulseaudio.Client) float32 {
|
||||||
|
muted, e := c.Mute()
|
||||||
|
if muted {
|
||||||
|
fmt.Println("🔇")
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
v, e := c.Volume()
|
||||||
|
if e != nil {
|
||||||
|
fmt.Println(e)
|
||||||
|
} else {
|
||||||
|
fmt.Printf("%d%%\n", int(100*v))
|
||||||
|
}
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
|
||||||
|
func cont(c *pulseaudio.Client) {
|
||||||
|
|
||||||
|
ch, e := c.Updates()
|
||||||
|
if e != nil {
|
||||||
|
log.Println(e)
|
||||||
|
os.Exit(2)
|
||||||
|
}
|
||||||
|
|
||||||
|
for {
|
||||||
|
printvol(c)
|
||||||
|
_ = <-ch
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func single(c *pulseaudio.Client) {
|
||||||
|
if len(os.Args) == 1 {
|
||||||
|
printvol(c)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
switch a := os.Args[1]; a {
|
||||||
|
case "toggle":
|
||||||
|
c.ToggleMute()
|
||||||
|
printvol(c)
|
||||||
|
case "mute", "unmute":
|
||||||
|
c.SetMute(a == "mute")
|
||||||
|
printvol(c)
|
||||||
|
case "inc", "dec":
|
||||||
|
v, e := c.Volume()
|
||||||
|
if e != nil {
|
||||||
|
log.Println(e)
|
||||||
|
os.Exit(2)
|
||||||
|
}
|
||||||
|
|
||||||
|
if a == "inc" {
|
||||||
|
v += 0.1
|
||||||
|
} else if a == "dec" {
|
||||||
|
v -= 0.1
|
||||||
|
}
|
||||||
|
|
||||||
|
if v <= 0 {
|
||||||
|
v = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
c.SetVolume(float32(v))
|
||||||
|
printvol(c)
|
||||||
|
|
||||||
|
case "set":
|
||||||
|
if len(os.Args) < 3 {
|
||||||
|
log.Println("missing volume")
|
||||||
|
os.Exit(3)
|
||||||
|
}
|
||||||
|
v, e := strconv.ParseFloat(os.Args[2], 32)
|
||||||
|
if e != nil {
|
||||||
|
log.Println(e)
|
||||||
|
os.Exit(4)
|
||||||
|
}
|
||||||
|
c.SetVolume(float32(v))
|
||||||
|
printvol(c)
|
||||||
|
default:
|
||||||
|
printvol(c)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user