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.Monad.IO.Class (liftIO)
import Control.Monad.Trans.Reader (ask, runReaderT)
import Data.Char (toLower)
import Data.Maybe (fromMaybe)
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.Workspaces as Workspaces
import System.Timeout (timeout)
import TaffybarConfig.AIUsage (aiUsageWidget)
import TaffybarConfig.Host (laptopHosts)
import TaffybarConfig.WidgetUtil
@@ -407,9 +409,19 @@ sniTrayWidget = do
prioritizedCollapsibleSNITrayVisibilityThreshold = Just visibilityThreshold,
prioritizedCollapsibleSNITrayHoverExpand = True
}
buildSNITray =
decorateWithClassAndBoxM
"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 =