taffybar-2.1.0: src/System/Taffybar/Widget/Volume.hs
module System.Taffybar.Widget.Volume
( volumeTextNew
, volumeControlNew
) where
import Control.Monad.IO.Class
import Graphics.UI.Gtk
import System.Taffybar.Information.Volume
import System.Taffybar.Widget.Generic.PollingLabel
-- | Creates a new text volume meter
volumeTextNew :: MonadIO m => String -> String -> Double -> m Widget
volumeTextNew mixer control pollSeconds = liftIO $ do
l <- pollingLabelNew "" pollSeconds . fmap show $ getVolume mixer control
widgetShowAll l
return l
-- | Creates a new volume meter widget
volumeControlNew :: String -> String -> IO Widget
volumeControlNew mixer control = do
b <- volumeButtonNew
_ <- on b scaleButtonValueChanged $ \v ->
setVolume mixer control (v * 100)
let w = toWidget b
widgetShowAll w
return w