taffybar: refine tray icon priorities and icon lookup

This commit is contained in:
2026-02-20 05:55:18 -08:00
committed by Kat Huang
parent a2b2ce5635
commit 88cf64ef58
2 changed files with 18 additions and 3 deletions

View File

@@ -19,6 +19,8 @@ priorities:
priority: 0 priority: 0
- key: item-id:udiskie - key: item-id:udiskie
priority: 0 priority: 0
- key: icon-name:audio-volume-low
priority: -1
- key: item-id:blueman - key: item-id:blueman
priority: -1 priority: -1
- key: item-id:chrome_status_icon_1 - key: item-id:chrome_status_icon_1
@@ -27,6 +29,8 @@ priorities:
priority: -1 priority: -1
- key: item-id:systray_6518 - key: item-id:systray_6518
priority: -1 priority: -1
- key: process:tailscale
priority: -1
- key: item-id:spotify-client - key: item-id:spotify-client
priority: -2 priority: -2
- key: item-id:systray_6428 - key: item-id:systray_6428

View File

@@ -61,7 +61,6 @@ import System.Taffybar.Widget.SNITray.PrioritizedCollapsible
import qualified System.Taffybar.Widget.ScreenLock as ScreenLock import qualified System.Taffybar.Widget.ScreenLock as ScreenLock
import System.Taffybar.Widget.Util (backgroundLoop, buildContentsBox, buildIconLabelBox, loadPixbufByName, widgetSetClassGI) import System.Taffybar.Widget.Util (backgroundLoop, buildContentsBox, buildIconLabelBox, loadPixbufByName, widgetSetClassGI)
import qualified System.Taffybar.Widget.Wlsunset as Wlsunset import qualified System.Taffybar.Widget.Wlsunset as Wlsunset
import qualified System.Taffybar.Widget.Workspaces.Hyprland as Hyprland
import qualified System.Taffybar.Widget.Workspaces as Workspaces import qualified System.Taffybar.Widget.Workspaces as Workspaces
import System.Taffybar.WindowIcon (pixBufFromColor) import System.Taffybar.WindowIcon (pixBufFromColor)
import Text.Printf (printf) import Text.Printf (printf)
@@ -171,13 +170,25 @@ isPathCandidate name =
T.isInfixOf "/" name T.isInfixOf "/" name
|| any (`T.isSuffixOf` name) [".png", ".svg", ".xpm"] || any (`T.isSuffixOf` name) [".png", ".svg", ".xpm"]
workspaceCandidateInfo :: Text -> WorkspaceModel.WindowInfo
workspaceCandidateInfo name =
WorkspaceModel.WindowInfo
{ WorkspaceModel.windowIdentity = WorkspaceModel.HyprlandWindowIdentity "",
WorkspaceModel.windowTitle = "",
WorkspaceModel.windowClassHints = [name],
WorkspaceModel.windowPosition = Nothing,
WorkspaceModel.windowUrgent = False,
WorkspaceModel.windowActive = False,
WorkspaceModel.windowMinimized = False
}
workspaceIconFromCandidate :: Int32 -> Text -> TaffyIO (Maybe Gdk.Pixbuf) workspaceIconFromCandidate :: Int32 -> Text -> TaffyIO (Maybe Gdk.Pixbuf)
workspaceIconFromCandidate size name workspaceIconFromCandidate size name
| isPathCandidate name = | isPathCandidate name =
liftIO $ getPixbufFromFilePath (T.unpack name) liftIO $ getPixbufFromFilePath (T.unpack name)
| otherwise = | otherwise =
maybeTCombine maybeTCombine
(Hyprland.getWindowIconFromDesktopEntryByAppId size (T.unpack name)) (Workspaces.getWindowIconPixbufFromDesktopEntry size (workspaceCandidateInfo name))
(liftIO $ loadPixbufByName size name) (liftIO $ loadPixbufByName size name)
workspaceManualIconGetter :: Workspaces.WindowIconPixbufGetter workspaceManualIconGetter :: Workspaces.WindowIconPixbufGetter
@@ -559,7 +570,7 @@ mkSimpleTaffyConfig hostName backend cssFiles =
centerWidgets = [clockWidget], centerWidgets = [clockWidget],
endWidgets = endWidgetsForHost hostName, endWidgets = endWidgetsForHost hostName,
barLevels = Nothing, barLevels = Nothing,
barPosition = Top, barPosition = Bottom,
widgetSpacing = 0, widgetSpacing = 0,
barPadding = 4, barPadding = 4,
barHeight = ScreenRatio $ 1 / 33, barHeight = ScreenRatio $ 1 / 33,