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"
user63896
la source

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.

geekosaure
la source
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
user63896
la source
1
C'est la seule solution qui semble fonctionner, il semble que spawnOnde XMonad-Contrib soit cassé avec les nouvelles versions de XMonad.
eazar001