【发布时间】:2019-10-05 09:57:24
【问题描述】:
我正在尝试编写一个 xmonad.hs,它在启动时会在某些工作区上启动一些应用程序。其中一些应用程序(例如,atop)将在终端中运行(urxvt 是我的首选)。
这已被问过几次,例如here、here,并在XMonad FAQ 上被间接提及。
但是,这些依赖于:
使用来自
XMonad.Actions.SpawnOn的spawnOn,哪个平面不起作用(以urxvt和xclock为例进行测试);它被发送到当前工作区。使用
spawn prog >> windows $ greedyView <workspace>,这有点工作,但有主要的时间问题 - 例如,如果你连续运行两个,使用不同的工作区,两个 progs 最终都在后一个工作区。 FWIW,我尝试使用 threaddelay 来辅助;它没有任何明显的区别,即使产生之间有 10 秒的延迟(我记得 threadDelay 以微秒为单位,因此使用了 10000000)。依赖于对程序使用通用挂钩 - 这意味着无论何时我启动它们,它们都会被发送到给定的工作区。那不是我想要的。我只是希望它们在启动时放置在那里。
令我惊讶的是,API 不允许我启动一个应用程序,然后给我一个对该应用程序/窗口的引用(可能会超时);以便我可以放心地将该应用程序/窗口发送到工作区。
任何帮助将不胜感激。
【问题讨论】:
-
看来
spawnOn正是您所需要的。我只想调查为什么这不起作用。可能会问另一个问题并提供 MVCE (stackoverflow.com/help/reprex)? -
你能发布你的代码吗?
标签: haskell x11 window-managers xmonad