mirror of
https://github.com/anotherhadi/settuings.git
synced 2026-10-05 16:18:24 +02:00
@@ -0,0 +1,96 @@
|
||||
package audio
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
tea "charm.land/bubbletea/v2"
|
||||
"github.com/anotherhadi/settuings/internal/audio"
|
||||
notificationsUI "github.com/anotherhadi/settuings/internal/ui/components/notifications"
|
||||
)
|
||||
|
||||
const tickInterval = 5 * time.Second
|
||||
|
||||
func tickCmd() tea.Cmd {
|
||||
return tea.Tick(tickInterval, func(time.Time) tea.Msg { return tickMsg{} })
|
||||
}
|
||||
|
||||
func checkCmd() tea.Cmd {
|
||||
return func() tea.Msg { return checkMsg{err: audio.CheckAvailable()} }
|
||||
}
|
||||
|
||||
func fetchOutputCmd() tea.Cmd {
|
||||
return func() tea.Msg {
|
||||
devices, err := audio.ListSinks()
|
||||
return outputListMsg{devices: devices, err: err}
|
||||
}
|
||||
}
|
||||
|
||||
func fetchInputCmd() tea.Cmd {
|
||||
return func() tea.Msg {
|
||||
devices, err := audio.ListSources()
|
||||
return inputListMsg{devices: devices, err: err}
|
||||
}
|
||||
}
|
||||
|
||||
func fetchAppsCmd() tea.Cmd {
|
||||
return func() tea.Msg {
|
||||
streams, err := audio.ListStreams()
|
||||
return appsListMsg{streams: streams, err: err}
|
||||
}
|
||||
}
|
||||
|
||||
func outputSetVolumeCmd(id string, pct int) tea.Cmd {
|
||||
return func() tea.Msg { return outputActionMsg{err: audio.SetVolume(id, pct)} }
|
||||
}
|
||||
|
||||
func outputToggleMuteCmd(id string) tea.Cmd {
|
||||
return func() tea.Msg { return outputActionMsg{err: audio.ToggleMute(id)} }
|
||||
}
|
||||
|
||||
func outputSetDefaultCmd(id string) tea.Cmd {
|
||||
return func() tea.Msg { return outputActionMsg{err: audio.SetDefault(id)} }
|
||||
}
|
||||
|
||||
func outputTestToneCmd(sinkID string) tea.Cmd {
|
||||
return func() tea.Msg { return outputActionMsg{err: audio.PlayTestTone(sinkID)} }
|
||||
}
|
||||
|
||||
func inputSetVolumeCmd(id string, pct int) tea.Cmd {
|
||||
return func() tea.Msg { return inputActionMsg{err: audio.SetVolume(id, pct)} }
|
||||
}
|
||||
|
||||
func inputToggleMuteCmd(id string) tea.Cmd {
|
||||
return func() tea.Msg { return inputActionMsg{err: audio.ToggleMute(id)} }
|
||||
}
|
||||
|
||||
func inputSetDefaultCmd(id string) tea.Cmd {
|
||||
return func() tea.Msg { return inputActionMsg{err: audio.SetDefault(id)} }
|
||||
}
|
||||
|
||||
func appsSetVolumeCmd(id string, pct int) tea.Cmd {
|
||||
return func() tea.Msg { return appsActionMsg{err: audio.SetVolume(id, pct)} }
|
||||
}
|
||||
|
||||
func appsToggleMuteCmd(id string) tea.Cmd {
|
||||
return func() tea.Msg { return appsActionMsg{err: audio.ToggleMute(id)} }
|
||||
}
|
||||
|
||||
func notifyCmd(title, body string) tea.Cmd {
|
||||
return func() tea.Msg {
|
||||
return notificationsUI.NotificationMsg{Title: title, Body: body, Kind: notificationsUI.KindInfo}
|
||||
}
|
||||
}
|
||||
|
||||
func startLevelMonitorCmd(sourceID string) tea.Cmd {
|
||||
return func() tea.Msg {
|
||||
mon, err := audio.StartLevelMonitor(sourceID)
|
||||
return levelStartedMsg{monitor: mon, err: err}
|
||||
}
|
||||
}
|
||||
|
||||
func waitLevelCmd(mon *audio.LevelMonitor) tea.Cmd {
|
||||
return func() tea.Msg {
|
||||
peak, err := mon.Next()
|
||||
return levelMsg{peak: peak, err: err}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user