2012-05-25 8 views
7

Me gustaría que mis programas engendren en la pantalla que estaba enfocada cuando se presionó su tecla no en la pantalla que está actualmente enfocada cuando termina de cargarse.XMonad: área de trabajo SpawnOn que tenía foco cuando se presionó la tecla spawn

Por qué: Mi configuración actual es Arch Linux + XMonad y la tengo funcionando en 6 monitores. He estado usando XMonad durante aproximadamente un año y mi único problema es con programas que tardan un poco en abrirse. Por ejemplo, la primera vez que arranco cromo tardan 3 segundos impares para cargar. Presiono mi enlace de clave para Chrome y luego voy a una pantalla diferente para hacer otra cosa. Pero cuando carga cromo se carga en la pantalla, actualmente estoy enfocado no en la pantalla que estaba enfocada en el momento en que se presionó el enlace de la tecla spawn.

Mis habilidades de haskell son bien ... inexistentes. He programado en Lisp antes y pasé mucho tiempo en C, python y JavaScript, así que estoy seguro de que puedo recogerlo si es necesario (así que tenga en cuenta las muestras de Haskell en las respuestas).

Gracias de antemano.

Respuesta

7

Encontré la respuesta a mi propia pregunta.

Primero se debe agregar a sus importaciones:

import XMonad.Actions.SpawnOn 

A continuación, en su función principal tienen algo como:

main = do 
xmonad $ defaultConfig 
    {  
     manageHook = myManageHooks <+> manageSpawn <+> manageDocks <+> manageHook defaultConfig 
     , startupHook = myStartupHook 
     , ETC..... 

La clave aquí fue la adición de la manageSpawn en la línea manageHook.

A continuación, reemplace sus spawn s con spawnHere:

, ((modMask, xK_w), spawn "chromium") 

se convierte en:

, ((modMask, xK_w), spawnHere "chromium") 
Cuestiones relacionadas