![在xmonad中,如何綁定鍵盤快速鍵來聚焦特定應用程式?](https://rvso.com/image/109426/%E5%9C%A8xmonad%E4%B8%AD%EF%BC%8C%E5%A6%82%E4%BD%95%E7%B6%81%E5%AE%9A%E9%8D%B5%E7%9B%A4%E5%BF%AB%E9%80%9F%E9%8D%B5%E4%BE%86%E8%81%9A%E7%84%A6%E7%89%B9%E5%AE%9A%E6%87%89%E7%94%A8%E7%A8%8B%E5%BC%8F%EF%BC%9F.png)
例如,我想綁定Mod+ Shift+m將我帶到類名為“Emacs”的窗口,這樣我就可以立即切換到該應用程序,無論我在哪個工作區以及我正在關注哪個窗口。
答案1
https://stackoverflow.com/a/50427647/1663462
module WindowFinder where
import XMonad
import qualified XMonad.StackSet as W
import Control.Monad
import Data.Bool (bool)
findWindows :: String -> X [Window]
findWindows name = do
withWindowSet $ (\ws -> do
forM (W.allWindows ws)
(\w -> do
s <- withDisplay $ \d -> fmap resClass . liftIO $ getClassHint d w
return $ bool [] [w] (s == name) :: X [Window]
) >>= return . join
)
導入上述模組後,您可以設定以下鍵綁定:
, ((modm, xK_c), do
win' <- findWindows "Chromium"
when (length win' > 0)
(windows $ W.focusWindow $ head win')
)