在 xmonad 中的特定工作区启动应用程序

use*_*896 13 xmonad haskell

我知道如何使用 manageHook 和 composeAll 将特定应用程序与特定工作区相关联。我正在寻找的是一种在特定工作区上生成应用程序的方法,即具有类型签名String -> workSpaceId -> X ()的函数,其示例用法类似于:

spawnToWorkspace "emacs" "2:code"
Run Code Online (Sandbox Code Playgroud)

gee*_*aur 9

更正确的(和现代的;我不认为 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

  • 这仍然有效吗?我在 xmonad 0.10 上并且使用 spawnOn 似乎仍然只是在当前工作区上生成应用程序...... (7认同)

use*_*896 5

好吧,实际上比我想象的要容易:

spawnToWorkspace :: String -> String -> X ()
spawnToWorkspace program workspace = do
                                      spawn program     
                                      windows $ W.greedyView workspace
Run Code Online (Sandbox Code Playgroud)