taffybar: time out SNI tray startup

This commit is contained in:
2026-06-28 11:46:26 -07:00
parent 78e805d952
commit b22f112a39

View File

@@ -11,6 +11,7 @@ where
import Control.Concurrent (threadDelay) import Control.Concurrent (threadDelay)
import Control.Monad.IO.Class (liftIO) import Control.Monad.IO.Class (liftIO)
import Control.Monad.Trans.Reader (ask, runReaderT)
import Data.Char (toLower) import Data.Char (toLower)
import Data.Maybe (fromMaybe) import Data.Maybe (fromMaybe)
import Data.Ratio ((%)) import Data.Ratio ((%))
@@ -54,6 +55,7 @@ import System.Taffybar.Widget.Util
) )
import qualified System.Taffybar.Widget.Wlsunset as Wlsunset import qualified System.Taffybar.Widget.Wlsunset as Wlsunset
import qualified System.Taffybar.Widget.Workspaces as Workspaces import qualified System.Taffybar.Widget.Workspaces as Workspaces
import System.Timeout (timeout)
import TaffybarConfig.AIUsage (aiUsageWidget) import TaffybarConfig.AIUsage (aiUsageWidget)
import TaffybarConfig.Host (laptopHosts) import TaffybarConfig.Host (laptopHosts)
import TaffybarConfig.WidgetUtil import TaffybarConfig.WidgetUtil
@@ -407,9 +409,19 @@ sniTrayWidget = do
prioritizedCollapsibleSNITrayVisibilityThreshold = Just visibilityThreshold, prioritizedCollapsibleSNITrayVisibilityThreshold = Just visibilityThreshold,
prioritizedCollapsibleSNITrayHoverExpand = True prioritizedCollapsibleSNITrayHoverExpand = True
} }
decorateWithClassAndBoxM buildSNITray =
"sni-tray" decorateWithClassAndBoxM
(sniTrayPrioritizedCollapsibleNewFromParams prioritizedParams) "sni-tray"
(sniTrayPrioritizedCollapsibleNewFromParams prioritizedParams)
context <- ask
liftIO $ do
maybeTray <- timeout (3 * 1000000) (runReaderT buildSNITray context)
case maybeTray of
Just tray -> return tray
Nothing -> do
fallback <- Gtk.boxNew Gtk.OrientationHorizontal 0
_ <- widgetSetClassGI fallback "sni-tray-unavailable"
Gtk.toWidget fallback
startWidgetsForBackend :: Backend -> [TaffyIO Gtk.Widget] startWidgetsForBackend :: Backend -> [TaffyIO Gtk.Widget]
startWidgetsForBackend backend = startWidgetsForBackend backend =