2012-06-11 7 views
10

Estoy tratando de configurar mi xmonad.hs para que cuando inicie mi sesión inicie una serie de diferentes programas en diferentes espacios de trabajo (como Terminal en 1, Firefox en 2, Pidgin en 3).XMonad spawn programas al inicio en el espacio de trabajo especificado

Ya he mirado en el XMonad.Actions.SpawnOn, sino como spawnOn regresa con un X() y no con un común m() no puedo usarlo en main = do ....

¿Hay una función que toma un X -monad y vuelve con IO() o hay alguna otra solución?

+0

X es una instancia de Monad, por lo que 'X()' funciona con 'm()' - puede usar la notación do con acciones 'X()'. – amindfv

Respuesta

8

La manera común es usar startupHook que toma la acción X() y lo realiza en cada inicio. P. ej.

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

Llamé a mis espacios de trabajo según su función "Terminal" "Web", "Chat", etc., pero pasar estos nombres como argumentos para la función spawnOn no funciona con ciertos programas (como eclipse). Actualmente estoy trabajando en ello con la configuración de Manage Hooks para cada aplicación, como className =? "Firefox" -> doF (W.shift (customWorkspaces! 1)) y generando un spawn normal – salbeira

+4

Nota 'spawnOn' es del paquete xmonad-contrib – amindfv

+1

Tengo {startupHook = do spawnOn" workspace2 "" emacs " }, pero el programa acaba de iniciarse en el primer espacio de trabajo después del inicio de sesión, o el espacio de trabajo actual si reinicio xmonad. –

Cuestiones relacionadas