[英]Xmonad - Spawn a program silently on specified monitor and workspace?
如何在不专注于它的情况下静默地在特定显示器和特定工作空间上启动程序,就像按Mod + Shift + n
时所做的那样? 以下方法的问题
className =? "ProgramClass" --> doShift ( workspaces !! n ),
是它不仅将 window 移动到工作区,还打开了一个工作区,这是我宁愿避免的。 spawnOn
本质上是一样的。
这是我目前的配置
这里评论太长了。 我还没有测试解决方案:
doShift
没有将工作空间更改为文档,问题是新的 window 是直接在新工作空间中打开的。 我认为您应该定义ManageHook
并执行它:
-- neccesary imports
import XMonad.ManageHook
import qualified XMonad.StackSet as W
-- creates a new ManageHook
openSilent :: WorkspaceId -> ManageHook
openSilent tows = do
fromws <- liftX $ return . W.currentTag . windowset =<< get -- get the current ws tag
wid <- ask -- get opened windowId
doF $ W.view fromws . W.insertUp wid . W.view tows
-- | | |- move focus to "to" workspace
-- | |- insert window
-- |- move focus back to "from" workspace
钩子应该像常规一样使用
className =? "ProgramClass" --> openSilent "workspaceName"
好的,我的问题是XMonad.Hooks.EwmhDesktops
从配置中删除后doShift
可以正常工作而不会窃取我的注意力,并将项目移动到专用工作区而不激活它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.