Démarrer des applications sur des espaces de travail spécifiques dans xmonad


13

Je sais comment associer des applications spécifiques à des espaces de travail spécifiques en utilisant manageHook et composeAll. Ce que je recherche, c'est un moyen de générer des applications sur des espaces de travail spécifiques, c'est-à-dire une fonction avec une signature de type String -> workSpaceId -> X ()dont l'exemple d'utilisation serait quelque chose comme:

spawnToWorkspace "emacs" "2:code"

Réponses:


9

La façon la plus correcte (et moderne; je ne pense pas que SpawnOn était dans le XMonad sorti à l'époque, beaucoup de bonnes choses n'étaient que dans les darcs) pour ce faire est de

import XMonad.Actions.SpawnOn

puis utilisez l'action

spawnOn "2:code" "emacs"

Voir http://xmonad.org/xmonad-docs/xmonad-contrib/XMonad-Actions-SpawnOn.html pour plus de détails.


6
Est-ce que cela fonctionne toujours? Je suis sur xmonad 0.10 et l'utilisation de spawnOn semble toujours générer l'application sur l'espace de travail actuel ...
bhh1988

5

D'accord, c'était en fait plus facile que je ne le pensais:

spawnToWorkspace :: String -> String -> X ()
spawnToWorkspace program workspace = do
                                      spawn program     
                                      windows $ W.greedyView workspace

1
C'est la seule solution qui semble fonctionner, il semble que spawnOnde XMonad-Contrib soit cassé avec les nouvelles versions de XMonad.
eazar001
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.