Xmonad - 在指定的监视器和工作区上静默生成程序?
Xmonad - Spawn a program silently on specified monitor and workspace?
如何在特定监视器和特定工作区上静默启动程序而不专注于它,有点像按 Mod + Shift + n
时所做的那样?以下方法的问题
className =? "ProgramClass" --> doShift ( workspaces !! n ),
是它不仅将 window 移动到工作区,它还会打开一个工作区,我宁愿避免这样做。 spawnOn
本质上是一样的。
这是我现在的config
这里的评论太长了。我还没有测试解决方案:
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
可以正常工作而不会窃取我的注意力,并且可以在不激活它的情况下将项目移动到专用工作区。
如何在特定监视器和特定工作区上静默启动程序而不专注于它,有点像按 Mod + Shift + n
时所做的那样?以下方法的问题
className =? "ProgramClass" --> doShift ( workspaces !! n ),
是它不仅将 window 移动到工作区,它还会打开一个工作区,我宁愿避免这样做。 spawnOn
本质上是一样的。
这是我现在的config
这里的评论太长了。我还没有测试解决方案:
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
可以正常工作而不会窃取我的注意力,并且可以在不激活它的情况下将项目移动到专用工作区。