【问题标题】:XMonad startup on different workspacesXMonad 在不同的工作空间启动
【发布时间】:2012-11-08 07:10:10
【问题描述】:

我想在 xmonad 启动时在不同的工作区启动一些应用程序(这很重要)。所以,我写了以下startupHook

startupApps :: [String]
startupApps = ["konsole", "emacs", "firefox", "gvim", "konsole"]

startupSpawn :: X ()
startupSpawn =  zipWithM_ id (map (spawnOn . show) [1..])  startupApps

但是,它会在第一个工作区中生成所有应用程序。这似乎是更普遍问题的一部分——如果我启动应用程序,它不是在实际启动时而是在加载时获得工作区。 所以,如果我在 WS1 上启动 firefox,然后切换到 WS2,firefox 将在 WS2 上生成。

不过,我能对我的意图做些什么呢?

【问题讨论】:

标签: haskell xmonad


【解决方案1】:

您可以使用manageHook 告诉 xmonad 将某些应用程序移动到某些桌面。

myManageHook = composeAll . concat $ [
    [ className =? "Firefox" --> doF (shiftToWs 2) ]
  , [ className =? "gvim" --> doF (shiftToWs 3) ]
  -- and so on
  ]

不过,classNames 可能会有所不同。

【讨论】:

  • 什么时候运行呢?它会在每个动作上运行吗?因为不能故意移动窗户会很烦人......
  • @NoonSilk:不,它只适用于您打开一个新窗口。之后你可以任意移动一个窗口。
  • 请注意,concat [[x],[y]] 等于 [x,y],所以示例有点混乱。
  • @MatveyAksenov:您说得有道理,但一定有充分的理由将其放入我的配置中。很奇怪。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多