Запускайте приложения на определенных рабочих пространствах в xmonad

13

Я знаю, как связать определенные приложения с конкретными рабочими пространствами, используя manageHook и composeAll. То, что я ищу, - это способ порождения приложений в определенных рабочих пространствах, то есть функция с сигнатурой типа String -> workSpaceId -> X (), пример использования которой будет выглядеть примерно так:

spawnToWorkspace "emacs" "2:code"
user63896
источник

Ответы:

9

Более правильный (и современный; я не думаю, что SpawnOn был в выпущенном тогда XMonad, очень много хороших вещей было только в darcs), способ сделать это -

import XMonad.Actions.SpawnOn

а затем использовать действие

spawnOn "2:code" "emacs"

См. Http://xmonad.org/xmonad-docs/xmonad-contrib/XMonad-Actions-SpawnOn.html для получения подробной информации.

geekosaur
источник
6
Это все еще работает? Я нахожусь на xmonad 0.10, и использование spawnOn по-прежнему просто порождает приложение в текущем рабочем пространстве ...
bhh1988
5

Хорошо, это было на самом деле проще, чем я думал:

spawnToWorkspace :: String -> String -> X ()
spawnToWorkspace program workspace = do
                                      spawn program     
                                      windows $ W.greedyView workspace
user63896
источник
1
Это единственное решение, которое, кажется, работает, кажется, что spawnOnот XMonad-Contrib сломан с более новыми версиями XMonad.
eazar001