2013-07-03 4 views
5

Im은 haskell과 xmonad를 막 시작합니다. 창이 열리지 않으면 어떤 키 입력도 dmenu를 시작하도록 구성하는 방법을 궁금합니다. 예를 들어, 빈 화면이 있고 "firefox"를 입력하기 시작하면 dmenu가 내 "firefox"로 시작합니다.Haskell dmenu 키 누름시 자동 실행

단단하게 중요하지만 올바른 방향으로 약간의 포인터를 얻을 수있는 경우 :

+0

@closevoter의 xmonad 정품 하스켈 구성 (서면)입니다. 말 그대로 윈도우 시스템을 프로그래밍하십시오. 당신은 haskell을 쓰지 않고 xmonad를 설정할 수 없다. 그것은 프로그래밍입니다. – AndrewC

답변

2

을 그것은 흥미로운 아이디어가 좋은 것입니다! 잠시 동안 'f'키만 매핑한다고 가정 해 봅시다. 내 마음에 오는 접근 방식은 어떤 창이 열려 있는지 확인하는 함수에 키를 매핑하는 것입니다. 열려있는 창이없는 경우 dmenu를 시작하고 방금 입력 한 문자 (즉 'f')로 미리 채 웁니다. 열려있는 다른 창이있는 경우 일반적으로 수행 할 키를 원하는대로 수행합니다.

main = xmonad $ blah blah blah 
      `additionalKeys` 
       [ 
        ((0, xK_f), multiMapKey f someAction) 
        -- other mappings 
       ] 


multiMapKey :: Char -> X() -> X() 
multiMapKey c someAction = 
    if ?a window is open? 
    then launch dmenu with c already entered 
    else someAction 

주 :

  1. 나는 윈도우가 이미 열려 있는지 확인하는 방법을 몰라,하지만 난 당신이 xmonad 또는 xmonad-있는 contrib 패키지에 이것에 대한 기능을 찾을 수 있습니다 의심 .
  2. 이미 입력 한 문자로 dmenu를 시작하는 방법을 모르겠습니다. 어쩌면 XMonad.Util.Dmenu에 뭔가 도움이 될 것입니다.
  3. 매핑하려는 각 키에 대해 additionalKeys에 별도의 항목이 있어야한다고 생각합니다. 26 개의 알파벳 키만 매핑하면 충분할 것입니다. Xmonad의 내장에 대한 자세한 학습을위한

, 나는 jekor의 비디오를 권장합니다 part 1part 2