보면 XMonad의있는 contrib 패키지 , 당신은 찾을 XMonad.Actions.WindowGo
수출하는 다음 함수를 :
runOrRaiseMaster :: String -> Query Bool -> X ()
실행 하려면 프로그램의 문자열 인수가 필요합니다 ( 예 : "firefox"). X11 속성을 통해 이미 실행 중인지 확인하는 데 사용되는 부울 쿼리입니다 (className =? "Firefox")
( 예 : 변형 XMonad.Actions.WindowGo
페이지 는 맨 위 참조 ).
그래서, 당신이 필요로하는 모든 바인드하는 것입니다 runOrRaiseMaster "firefox" (className =? "Firefox")
당신이 원하는 키에 대한 설명XMonad.Doc.Extending
을 통해,
((modMask, xK_f ), runOrRaiseMaster "firefox" (className =? "Firefox"))
Data.Map
구성 의 키 바인딩 의 일부로 (세부 사항은 설정 방법에 따라 다릅니다 (예 : 전체, 키 바인딩 추가xmonad.hs
참조 )).
주 에는 진정한 의미가 없다는 것을 창 최대화 XMonad에서가. 설명대로 설정하면 다음과 같이 Mod4+ f동작합니다.
- 클래스 명 일치 "파이어 폭스"와 윈도우가 있다면, 그것은 초점을 맞 춥니 다 하고 마스터로 설정 , 즉, 최근에 따라 레이아웃 이 될 것 큰 창
- 창이 일치하지 않으면 Firefox가 생성 되고 master로 설정됩니다 .
선택하여 에뮬레이트 할 수 있습니다 극대화 Full
호출 한 후 레이아웃을 runOrRaiseMaster
, 여기에 설명 된대로 :
("M-<F1>", sendMessage $ JumpToLayout "Full")
(이 예제는 XMonad.Util.EZConfig
더 쉬운 키 바인딩 정의를 허용 함 을 보여줍니다 )
이 두 가지를 결합 하는 것도 가능합니다. 둘 다 유형 X ()
, 즉 X Monad에 있습니다. 사용 >>
유형 인 (확인 :t (>>)
의 ghci
)
(>>) :: Monad m => m a -> m b -> m b
우리는 (runOrRaiseMaster "firefox" (className =? "Firefox")) >> (sendMessage $ JumpToLayout "Full")
두 X ()
가지 유형의 유형을 조합하여 가지고 X ()
있으므로 키에 바인딩 될 수 있습니다.
편집 )
코드 줄에 누락>>
편집 2- modm
> modMask
.
Edit3 이것은 xmonad.hs
잘 작동합니다.
( 하스켈에게 좋은 유익을 배우는 것은 어떻습니까? )