xmonad에서 키보드 단축키를 바인딩하여 특정 응용 프로그램에 집중하는 방법은 무엇입니까?

xmonad에서 키보드 단축키를 바인딩하여 특정 응용 프로그램에 집중하는 방법은 무엇입니까?

예를 들어 바인딩 Mod++를 사용하면 클래스 이름이 "Emacs"인 창으로 이동하여 현재 있는 작업 공간과 초점을 맞추고 있는 창에 관계없이 즉시 해당 응용 프로그램으로 전환할 수 있습니다 Shift.m

답변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')
          )

관련 정보