packages feed

taffybar 7.2.2 → 7.2.3

raw patch · 3 files changed

+56/−4 lines, 3 files

Files

CHANGELOG.md view
@@ -1,3 +1,11 @@+# 7.2.3++## Packaging++* Add a `wireplumber` flag, enabled by default, so package sets without+  WirePlumber 0.5 development libraries can disable the WirePlumber-backed+  audio modules and still build taffybar.+ # 7.2.2  ## Packaging
src/System/Taffybar/Information/Audio.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE AllowAmbiguousTypes #-}+{-# LANGUAGE CPP #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE KindSignatures #-} {-# LANGUAGE OverloadedStrings #-}@@ -44,11 +45,15 @@ import Control.Monad.IO.Class (liftIO) import Control.Monad.STM (atomically) import Data.Proxy (Proxy (..))+#ifdef WITH_WIREPLUMBER import qualified Data.Text as T+#endif import GHC.TypeLits (KnownSymbol, SomeSymbol (..), Symbol, someSymbolVal, symbolVal) import System.Taffybar.Context (TaffyIO) import qualified System.Taffybar.Information.PulseAudio as PulseAudio+#ifdef WITH_WIREPLUMBER import qualified System.Taffybar.Information.WirePlumber as WirePlumber+#endif  data AudioBackend   = PulseAudioBackend@@ -74,18 +79,26 @@  audioBackendAvailable :: IO AudioBackend audioBackendAvailable = do+#ifdef WITH_WIREPLUMBER   pulseAvailable <- PulseAudio.pulseAudioAvailable   pure $     if pulseAvailable       then PulseAudioBackend       else WirePlumberBackend+#else+  pure PulseAudioBackend+#endif  getAudioInfo :: String -> String -> IO (Maybe AudioInfo) getAudioInfo pulseSink wirePlumberNode = do   backend <- audioBackendAvailable   case backend of     PulseAudioBackend -> fmap fromPulseAudioInfo <$> PulseAudio.getPulseAudioInfo pulseSink+#ifdef WITH_WIREPLUMBER     WirePlumberBackend -> fmap fromWirePlumberInfo <$> WirePlumber.getWirePlumberInfo wirePlumberNode+#else+    WirePlumberBackend -> wirePlumberNode `seq` pure Nothing+#endif  getAudioInfoChan :: String -> String -> TaffyIO (TChan (Maybe AudioInfo)) getAudioInfoChan pulseSink wirePlumberNode =@@ -122,23 +135,35 @@     PulseAudioBackend -> do       (pulseChan, pulseVar) <- PulseAudio.getPulseAudioInfoChanAndVar pulseSink       buildMappedChanVar fromPulseAudioInfo pulseChan pulseVar+#ifdef WITH_WIREPLUMBER     WirePlumberBackend -> do       (wireChan, wireVar) <- WirePlumber.getWirePlumberInfoChanAndVar wirePlumberNode       buildMappedChanVar fromWirePlumberInfo wireChan wireVar+#else+    WirePlumberBackend -> liftIO $ wirePlumberNode `seq` buildUnavailableChanVar+#endif  toggleAudioMute :: String -> String -> IO Bool toggleAudioMute pulseSink wirePlumberNode = do   backend <- audioBackendAvailable   case backend of     PulseAudioBackend -> PulseAudio.togglePulseAudioMute pulseSink+#ifdef WITH_WIREPLUMBER     WirePlumberBackend -> WirePlumber.toggleWirePlumberMute wirePlumberNode+#else+    WirePlumberBackend -> wirePlumberNode `seq` pure False+#endif  adjustAudioVolume :: String -> String -> Int -> IO Bool adjustAudioVolume pulseSink wirePlumberNode deltaPercent = do   backend <- audioBackendAvailable   case backend of     PulseAudioBackend -> PulseAudio.adjustPulseAudioVolume pulseSink deltaPercent+#ifdef WITH_WIREPLUMBER     WirePlumberBackend -> WirePlumber.adjustWirePlumberVolume wirePlumberNode deltaPercent+#else+    WirePlumberBackend -> wirePlumberNode `seq` pure False+#endif  pulseSinkToWirePlumberNode :: String -> String pulseSinkToWirePlumberNode "" = defaultAudioWirePlumberNode@@ -167,6 +192,15 @@             writeTChan chan info     pure $ AudioInfoChanVar (chan, var) +#ifndef WITH_WIREPLUMBER+buildUnavailableChanVar :: IO (AudioInfoChanVar a)+buildUnavailableChanVar = do+  chan <- newBroadcastTChanIO+  var <- newMVar Nothing+  atomically $ writeTChan chan Nothing+  pure $ AudioInfoChanVar (chan, var)+#endif+ fromPulseAudioInfo :: PulseAudio.PulseAudioInfo -> AudioInfo fromPulseAudioInfo info =   AudioInfo@@ -176,6 +210,7 @@       audioBackend = PulseAudioBackend     } +#ifdef WITH_WIREPLUMBER fromWirePlumberInfo :: WirePlumber.WirePlumberInfo -> AudioInfo fromWirePlumberInfo info =   AudioInfo@@ -184,6 +219,7 @@       audioNodeName = T.unpack $ WirePlumber.wirePlumberNodeName info,       audioBackend = WirePlumberBackend     }+#endif  encodeAudioSpecs :: String -> String -> String encodeAudioSpecs pulseSink wirePlumberNode = pulseSink ++ "\n" ++ wirePlumberNode
taffybar.cabal view
@@ -1,6 +1,6 @@ cabal-version: 3.4 name: taffybar-version: 7.2.2+version: 7.2.3 synopsis: A desktop bar similar to xmobar, but with more GUI description: Taffybar is a desktop status bar with GTK widgets for window   manager state, system information, tray icons, and custom user modules.@@ -39,6 +39,11 @@ flag Deprecated-Pager-Hints   description: Enables the deprecated System.Taffybar.Support.PagerHints module, which has been moved to xmonad-contrib. +flag wireplumber+  description: Enables WirePlumber/PipeWire audio support.+  default: True+  manual: True+ common haskell   default-extensions:     DeriveGeneric@@ -90,7 +95,6 @@                , gi-gtk3 >= 3.0.44 && < 4                , gi-gtk-hs >= 0.3.17 && < 0.4                , gi-pango >= 1.0 && < 1.1-               , gi-wireplumber >= 0.5.14.2 && < 0.6                , gtk-scaling-image >= 0.1.0.1 && < 0.2                , gtk-sni-tray >= 0.2.1.2 && < 0.3                , gtk-strut >= 0.1.4.1 && < 0.2@@ -143,7 +147,6 @@                  , System.Taffybar.Information.Hyprland                  , System.Taffybar.Information.HyprlandWorkspaceHistory                  , System.Taffybar.Information.PulseAudio-                 , System.Taffybar.Information.WirePlumber                  , System.Taffybar.Information.AnthropicUsage                  , System.Taffybar.Information.Backlight                  , System.Taffybar.Information.ASUS@@ -243,7 +246,6 @@                  , System.Taffybar.Widget.Weather                  , System.Taffybar.Widget.Windows                  , System.Taffybar.Widget.Workspaces-                 , System.Taffybar.Widget.WirePlumber                  , System.Taffybar.Widget.Wlsunset                  , System.Taffybar.Widget.WttrIn                  , System.Taffybar.Widget.XDGMenu.Menu@@ -253,6 +255,12 @@   if flag(Deprecated-Pager-Hints)     build-depends: xmonad >= 0.17 && < 0.19     exposed-modules: System.Taffybar.Support.PagerHints++  if flag(wireplumber)+    build-depends: gi-wireplumber >= 0.5.14.2 && < 0.6+    cpp-options: -DWITH_WIREPLUMBER+    exposed-modules: System.Taffybar.Information.WirePlumber+                   , System.Taffybar.Widget.WirePlumber    other-modules: Paths_taffybar                , System.Taffybar.DBus.Client.ChromeWindowInfo