2012-06-11 2 views
10

내 세션을 시작할 때 다른 작업 공간 (터미널은 1, Firefox는 2, 피치는 3)과 같은 다양한 프로그램을 시작하도록 xmonad.hs을 구성하려고합니다.XMonad가 지정된 작업 공간에서 시작할 때 프로그램을 생성합니다

나는 이미 XMonad.Actions.SpawnOn으로 보였지만, 공통 m()spawnOnX()와 반환하지으로 나는 main = do ...에서 사용할 수 없습니다.

X -monad를 가져와 IO()과 함께 반환하는 기능이 있습니까? 아니면 다른 해결 방법이 있습니까?

+0

X는 Monad의 인스턴스이므로'X()'는'm()'과 함께 작동합니다 -'X()'액션과 함께 do 표기법을 사용할 수 있습니다. – amindfv

답변

8

일반적인 방법은 X() 동작을 취하는 매번 시작시마다 수행하는 startupHook을 사용하는 것입니다. 예.

main = xmonad $ defaultConfig 
    { startupHook = do 
     spawnOn "workspace1" "program1" 
     … 
     spawnOn "workspaceN" "programN" 
    } 
+1

"Terminal" "Web" "Chat"등의 함수에 따라 작업 공간을 호출했지만 spawnOn 함수의 인수로 이러한 이름을 전달하는 것은 특정 프로그램 (예 : 일식)에서는 작동하지 않습니다. 현재 각 응용 프로그램에 대해 Manage Hooks (className =)와 같은 설정으로이 문제를 해결하고 있습니다. "firefox"-> doF (W.shift (customWorkspaces !! 1)) 그리고 일반 산란으로 산란 – salbeira

+4

참고'spawnOn'은 xmonad-contrib 패키지에 있습니다. – amindfv

+1

{startupHook = do spawnOn "workspace2 ""emacs " }하지만 프로그램은 로그인 후 첫 번째 작업 영역에서 시작되거나 xmonad를 다시 시작하면 현재 작업 영역에서 시작됩니다. –