Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell Xmonad:将每个物理屏幕上的dwm样式的工作区与循环功能结合起来_Haskell_Xmonad_Multiple Monitors - Fatal编程技术网

Haskell Xmonad:将每个物理屏幕上的dwm样式的工作区与循环功能结合起来

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

我的问题对于在哈斯凯尔学过一点的人来说应该是小菜一碟:

我想使用类似dwm的多线程设置:每个物理屏幕都有自己的一组工作空间。没有自动交换窗口或焦点或任何东西。 这是由扩展XMonad.Layout.IndependentScreens()提供的,该扩展工作正常

但是我同样希望使用XMonad.Actions.CycleWS()提供的循环函数,它本身也可以很好地工作

事实上,当我在工作区中循环时,会出现:Screen1 WS1 Screen2 WS1 Screen1 WS2 Screen2 WS2等

循环功能必须包装在独立的布局功能中。正如我所说,这可能非常简单,但我对Haskell知之甚少,无法理解

这两个扩展都有很好的文档记录,所以对于你们中的一些人来说,这应该是一个简单的扩展


谢谢你的帮助

我想主要的技巧是构建一个
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不起作用,但这并不重要)。你能把你的评论作为答复发出去吗?这样我就可以接受了谢谢!该死,我累了,你把它贴出来作为回答…:-)很抱歉