我知道如何使用 manageHook 和 composeAll 将特定应用程序与特定工作区相关联。我正在寻找的是一种在特定工作区上生成应用程序的方法,即具有类型签名String -> workSpaceId -> X ()的函数,其示例用法类似于:
spawnToWorkspace "emacs" "2:code"
Run Code Online (Sandbox Code Playgroud)
更正确的(和现代的;我不认为 SpawnOn 当时在发布的 XMonad 中,很多好东西只在 darcs 中)这样做的方法是
import XMonad.Actions.SpawnOn
Run Code Online (Sandbox Code Playgroud)
然后使用动作
spawnOn "2:code" "emacs"
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅http://xmonad.org/xmonad-docs/xmonad-contrib/XMonad-Actions-SpawnOn.html。
好吧,实际上比我想象的要容易:
spawnToWorkspace :: String -> String -> X ()
spawnToWorkspace program workspace = do
spawn program
windows $ W.greedyView workspace
Run Code Online (Sandbox Code Playgroud)