Haskell Xmonad:将每个物理屏幕上的dwm样式的工作区与循环功能结合起来
我的问题对于在哈斯凯尔学过一点的人来说应该是小菜一碟: 我想使用类似dwm的多线程设置:每个物理屏幕都有自己的一组工作空间。没有自动交换窗口或焦点或任何东西。 这是由扩展XMonad.Layout.IndependentScreens()提供的,该扩展工作正常 但是我同样希望使用XMonad.Actions.CycleWS()提供的循环函数,它本身也可以很好地工作 事实上,当我在工作区中循环时,会出现:Screen1 WS1 Screen2 WS1 Screen1 WS2 Screen2 WS2等 循环功能必须包装在独立的布局功能中。正如我所说,这可能非常简单,但我对Haskell知之甚少,无法理解 这两个扩展都有很好的文档记录,所以对于你们中的一些人来说,这应该是一个简单的扩展Haskell Xmonad:将每个物理屏幕上的dwm样式的工作区与循环功能结合起来,haskell,xmonad,multiple-monitors,Haskell,Xmonad,Multiple Monitors,我的问题对于在哈斯凯尔学过一点的人来说应该是小菜一碟: 我想使用类似dwm的多线程设置:每个物理屏幕都有自己的一组工作空间。没有自动交换窗口或焦点或任何东西。 这是由扩展XMonad.Layout.IndependentScreens()提供的,该扩展工作正常 但是我同样希望使用XMonad.Actions.CycleWS()提供的循环函数,它本身也可以很好地工作 事实上,当我在工作区中循环时,会出现:Screen1 WS1 Screen2 WS1 Screen1 WS2 Screen2 WS2
谢谢你的帮助 我想主要的技巧是构建一个
WSType
,通知CycleWS您只对与当前物理工作区显示在同一屏幕上的物理工作区感兴趣。下面是你将如何做到这一点
isOnScreen :: ScreenId -> WindowSpace -> Bool
isOnScreen s ws = s == unmarshallS (tag ws)
currentScreen :: X ScreenId
currentScreen = gets (screen . current . windowset)
spacesOnCurrentScreen :: WSType
spacesOnCurrentScreen = WSIs (isOnScreen <$> currentScreen)
我还没有测试过它,但它至少会进行类型检查。;-) 我想主要的技巧是构建一个
WSType
,通知CycleWS您只对与当前物理工作区显示在同一屏幕上的物理工作区感兴趣。下面是你将如何做到这一点
isOnScreen :: ScreenId -> WindowSpace -> Bool
isOnScreen s ws = s == unmarshallS (tag ws)
currentScreen :: X ScreenId
currentScreen = gets (screen . current . windowset)
spacesOnCurrentScreen :: WSType
spacesOnCurrentScreen = WSIs (isOnScreen <$> currentScreen)
我还没有测试过它,但它至少会进行类型检查。;-) 嗨,丹尼尔,非常感谢!这看起来很有希望。现在,他告诉我“不在范围内”——标签、屏幕、当前的错误。这可能是因为我没有加载模块吗?@mat可能
tag
、screen
和current
来自XMonad.StackSet
(有些人将其作为W
导入,因此可能W.tag
等适用于您)和()
可以替换为`fmap`
而无需导入任何内容,或者可以从控件导入。Applicative
。是的,这看起来不错。我现在没时间测试,也许今晚。但它似乎奏效了。我会回来的。事实上,我只是测试了它——它工作了!我使用了“W.”限定,并导入了Control.Applicative
(fmap不起作用,但这并不重要)。你能把你的评论作为答复发出去吗?这样我就可以接受了谢谢!该死,我累了,你把它贴出来作为回答…:-)对不起,丹尼尔,非常感谢!这看起来很有希望。现在,他告诉我“不在范围内”——标签、屏幕、当前的错误。这可能是因为我没有加载模块吗?@mat可能tag
、screen
和current
来自XMonad.StackSet
(有些人将其作为W
导入,因此可能W.tag
等适用于您)和()
可以替换为`fmap`
而无需导入任何内容,或者可以从控件导入。Applicative
。是的,这看起来不错。我现在没时间测试,也许今晚。但它似乎奏效了。我会回来的。事实上,我只是测试了它——它工作了!我使用了“W.”限定,并导入了Control.Applicative
(fmap不起作用,但这并不重要)。你能把你的评论作为答复发出去吗?这样我就可以接受了谢谢!该死,我累了,你把它贴出来作为回答…:-)很抱歉