gpt4 book ai didi

xmonad - 用于指示 XMobar (XMonad) 中布局的图标

转载 作者:行者123 更新时间:2023-12-02 09:54:36 25 4
gpt4 key购买 nike

我知道 XMobar 支持位图图标,并且我能够配置它们。不过,我还想使用图标来指示当前的 XMonad 布局,但 XMobar 从 XMonad 的 stdin 上获取它。而且我无法找到一种方法来传递位图图标而不是常规符号。

那么如何传递图标而不是符号来指示 XMobar 中的 XMonad 布局呢?

我当前的配置部分与布局相关:

defaultLayouts = smartBorders(avoidStruts(
renamed [Replace "R"] (ResizableTall 1 (3/100) (1/2) [])
||| renamed [Replace "R!"] (Mirror (ResizableTall 1 (3/100) (1/2) []))
||| renamed [Replace "F"] (noBorders Full)
||| renamed [Replace "#"] (Grid)
||| renamed [Replace "3C"] (ThreeColMid 1 (3/100) (3/4))
||| renamed [Replace "O"] (Circle)))

chatLayout = renamed [Replace "Chat"]
$ avoidStruts $ withIM (0.2) isPidgin
$ reflectHoriz $ withIM (0.2) isSkype (Grid)
where
isSkype = (Title "zoresvit - Skype™")
isPidgin = (Title "Buddy List")

fullLayout = renamed [Replace "F"] $ avoidStruts $ noBorders $ (Full)
myLayouts = onWorkspace "η" chatLayout $ defaultLayouts

main = do
xmproc <- spawnPipe "xmobar ~/.xmobarrc"
xmonad $ withUrgencyHook NoUrgencyHook $ defaultConfig {
borderWidth = myBorderWidth
, focusedBorderColor = myFocusedBorderColor
, handleEventHook = fullscreenEventHook
, layoutHook = myLayouts
, manageHook = manageHook defaultConfig
<+> composeAll myManagementHooks
<+> manageDocks
, modMask = myModMask
, normalBorderColor = myNormalBorderColor
, startupHook = do
spawn "~/.xmonad/startup_hook.sh"
, terminal = myTerminal
, workspaces = myWorkspaces
, logHook = dynamicLogWithPP $ xmobarPP {
ppOutput = hPutStrLn xmproc
, ppCurrent = xmobarColor solarizedGreen "" . wrap myCurrentWSLeft myCurrentWSRight
, ppHidden = xmobarColor solarizedBase0 ""
, ppHiddenNoWindows = xmobarColor solarizedBase02 ""
, ppLayout = xmobarColor solarizedCyan ""
, ppTitle = xmobarColor solarizedBase1 "" . shorten myTitleLength
, ppUrgent = xmobarColor solarizedRed "" . wrap myUrgentWSLeft myUrgentWSRight
, ppVisible = xmobarColor solarizedBase01 "" . wrap myVisibleWSLeft myVisibleWSRight
}
} `additionalKeys` myKeyBindings

最佳答案

作为替代建议,您可以更改 XMonad 显示布局标题的方式。首先,换行

      , ppLayout = xmobarColor solarizedCyan ""

阅读

      , ppLayout = xmobarColor solarizedCyan "" . myLayoutPrinter

然后,在文件中的某个位置添加以下函数:

myLayoutPrinter :: String -> String
myLayoutPrinter "Full" = "<icon=layout_full.xbm/>"
myLayoutPrinter "Tall" = "<icon=layout_tall.xbm/>"
myLayoutPrinter "Mirror Tall" = "<icon=layout_mirror_tall.xbm/>"
myLayoutPrinter x = x

显然,您需要自定义您使用的布局的名称以及图标名称。

理论上,如果您想要真正华丽并为每个布局赋予自己的颜色,您甚至可以更进一步。实际上,您可以将 ppLayout 行简化为

      , ppLayout = myLayoutPrinter

将自定义颜色添加到 myLayoutPrinter

myLayoutPrinter :: String -> String
myLayoutPrinter "Full" = xmobarColor "red" "" "<icon=layout_full.xbm/>"
myLayoutPrinter "Tall" = xmobarColor "green" "" "<icon=layout_tall.xbm/>"
myLayoutPrinter "Mirror Tall" = xmobarColor "blue" "" "<icon=layout_mirror_tall.xbm/>"
myLayoutPrinter x = xmobarColor "white" "" x

关于xmonad - 用于指示 XMobar (XMonad) 中布局的图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24291566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com