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

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

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

spawnToWorkspace "emacs" "2:code"

答案1

更正确(也是更现代的;我不认为 SpawnOn 当时在发布的 XMonad 中,很多好东西只在 darcs 中)的方法是

import XMonad.Actions.SpawnOn

然后使用动作

spawnOn "2:code" "emacs"

http://xmonad.org/xmonad-docs/xmonad-contrib/XMonad-Actions-SpawnOn.html了解详情。

答案2

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

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

答案3

为了geekosaur 的回答为了工作,您还需要告诉 XMonad 使用以下设置来管理 Spawns manageHook

xmonad $ def
{
  ...
  , ...
  , manageHook = manageSpawn <+> manageHook def
  , ...
}

包含此设置后spawnOn应该可以按预期工作。

相关内容