就像许多其他人一样,我试图在启动时在特定的 Xmonad 工作区上生成一个程序。
这是我xmonad.hs
应该在工作区 4 上启动 Firefox:
import XMonad
import XMonad.Actions.SpawnOn
myStartupHook :: X()
myStartupHook = spawnOn "4" "/usr/bin/firefox"
main :: IO()
main = xmonad $ defaultConfig {
modMask = mod4Mask,
startupHook = myStartupHook,
}
但是,在启动时,Firefox 在工作区 1 而不是 4 上启动。根据这个 Reddit 线程,我需要做的就是manageSpawn
在此代码中的某个位置添加。这是我尝试过的:
import XMonad
import XMonad.Actions.SpawnOn
myStartupHook :: X()
myStartupHook = spawnOn "4" "/usr/bin/firefox"
main :: IO()
main = xmonad $ defaultConfig {
modMask = mod4Mask,
startupHook = manageSpawn <+> myStartupHook,
}
但我收到以下错误:Couldn't match type Query (base-4.13.0.0:Data.Semigroup.Internal.Endo WindowSet) with X () Expected type: X () Actual type: ManageHook
. spawnOn的文档也不是很有帮助。
我需要添加什么才能xmonad.hs
在工作区 4 上启动 Firefox?
您应该设置
manageSpawn
为manageHook而不是startupHook。这是在工作xmonad.hs
区 4 上生成 Firefox 的工作: