Make xmobar workspaces clickable

Clicking a workspace switches to it; one visible on the other screen is
swapped onto the focused screen. xmobar uses UnsafeXMonadLog so the
click actions are kept.
This commit is contained in:
Daniele Fucini
2026-10-10 19:39:04 +02:00
parent 2877d5f026
commit b64ea797bf
3 changed files with 7 additions and 5 deletions
+2 -2
View File
@@ -51,9 +51,9 @@ Config { overrideRedirect = True
] 600
, Run Com "/home/fuxino/.config/xmobar/pactl_volume.sh" [] "pactl_volume" 10
, Run Com "/home/fuxino/.config/xmobar/ens_brief.sh" [] "ens_brief" 18000
, Run XMonadLog
, Run UnsafeXMonadLog
]
, sepChar = "%"
, alignSep = "}{"
, template = "  | %XMonadLog% } %uptime% | %multicpu% %coretemp% | %memory% |  %kbd% { <action=`/home/fuxino/.config/xmobar/ens_brief.sh week`>%LZIB% <fc=#565f89>·</fc> %ens_brief%</action> | %pactl_volume% | %date% "
, template = "  | %UnsafeXMonadLog% } %uptime% | %multicpu% %coretemp% | %memory% |  %kbd% { <action=`/home/fuxino/.config/xmobar/ens_brief.sh week`>%LZIB% <fc=#565f89>·</fc> %ens_brief%</action> | %pactl_volume% | %date% "
}
+2 -2
View File
@@ -52,9 +52,9 @@ Config { overrideRedirect = True
, Run XPropertyLog "_XMONAD_TRAYPAD"
, Run Com "/home/fuxino/.config/xmobar/pactl_volume.sh" [] "pactl_volume" 10
, Run Com "/home/fuxino/.config/xmobar/ens_brief.sh" [] "ens_brief" 18000
, Run XMonadLog
, Run UnsafeXMonadLog
]
, sepChar = "%"
, alignSep = "}{"
, template = "  | %XMonadLog% } %uptime% | %multicpu% %coretemp% | %memory% |  %kbd% { <action=`/home/fuxino/.config/xmobar/ens_brief.sh week`>%LZIB% <fc=#565f89>·</fc> %ens_brief%</action> | %pactl_volume% | %date% %_XMONAD_TRAYPAD% "
, template = "  | %UnsafeXMonadLog% } %uptime% | %multicpu% %coretemp% | %memory% |  %kbd% { <action=`/home/fuxino/.config/xmobar/ens_brief.sh week`>%LZIB% <fc=#565f89>·</fc> %ens_brief%</action> | %pactl_volume% | %date% %_XMONAD_TRAYPAD% "
}
+3 -1
View File
@@ -21,6 +21,7 @@ import XMonad.Layout.Spiral
import XMonad.Layout.Tabbed
import XMonad.Layout.ThreeColumns
import qualified XMonad.StackSet as W
import XMonad.Util.ClickableWorkspaces
import XMonad.Util.EZConfig
import qualified XMonad.Util.Hacks as Hacks
import XMonad.Util.Loggers
@@ -32,6 +33,7 @@ main :: IO ()
main =
xmonad
. ewmhFullscreen
. setEwmhSwitchDesktopHook W.greedyView
. ewmh
. dynamicEasySBs myStatusBars
. addRandrChangeHook (spawn myScreenHotplug)
@@ -186,7 +188,7 @@ myStatusBars :: ScreenId -> X StatusBarConfig
myStatusBars (S i) = do
nScreens <- gets (length . W.screens . windowset)
let rc = if nScreens > 1 && i /= 1 then "xmobarrc_hdmi" else "xmobarrc_laptop"
pure $ statusBarProp ("xmobar -x " ++ show i ++ " ~/.config/xmobar/" ++ rc) (pure myXmobarPP)
pure $ statusBarProp ("xmobar -x " ++ show i ++ " ~/.config/xmobar/" ++ rc) (clickablePP myXmobarPP)
myXmobarPP :: PP
myXmobarPP =