Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.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 从特定类的窗口中删除边框_Haskell_Xmonad - Fatal编程技术网

Haskell 从特定类的窗口中删除边框

Haskell 从特定类的窗口中删除边框,haskell,xmonad,Haskell,Xmonad,我正在尝试编写一个非常类似的布局修改器,它允许我根据windows的类名属性删除边框。除了在X monad中执行的允许基于过滤的逻辑之外,代码主要基于。到目前为止,我得到的代码是: {-#语言灵活实例} {-#语言MultiParamTypeClasses} {-#语言不可判定实例} 模块XMonad.Layout.ExcludeBorders,其中 进口管制 导入数据.幺半群 导入XMonad 导入XMonad.Layout.LayoutModifier 导入XMonad.StackSet隐藏

我正在尝试编写一个非常类似的布局修改器,它允许我根据windows的类名属性删除边框。除了在X monad中执行的允许基于过滤的逻辑之外,代码主要基于。到目前为止,我得到的代码是:

{-#语言灵活实例}
{-#语言MultiParamTypeClasses}
{-#语言不可判定实例}
模块XMonad.Layout.ExcludeBorders,其中
进口管制
导入数据.幺半群
导入XMonad
导入XMonad.Layout.LayoutModifier
导入XMonad.StackSet隐藏(过滤器)
设置顺序::[Window]->Dimension->X()
西布斯堡=
使用display$\d->mapM\uw(\w->io$setWindowBorderWidth d w bw)ws
数据排除a=
排除边界
[a]
推导(等式、读取、显示)
excludeBorders::p->LA->ModifiedLayout(excludeBorders p)LA
excludeBorders qs=ModifiedLayout(excludeBorders qs[])
实例(显示p,读取(排除p窗口),排除p)=>
LayoutModifier(不包括边框)窗口,其中
unhook(ExcludeBorders\u p s)=asks(borderWidth.config)>>=setbs
redoLayout(不包括边界p_s)mst wrs=do
ws不包括p wset mst wrs)
新订单ws 0
返回(wrs,仅$EXCLUDEPWS)
类不包括p,其中
不包括:
P
->窗台
->可能(堆栈窗口)
->[(窗口,矩形)]
->X[窗口]
数据排除属性=
ExcludeClassName字符串
推导(等式、读取、显示)
实例不包括[ExcludeProp],其中
不包括qs\u wset mst\u wrs=
翻转过滤器项(集成“mst)$\w->
fmap(getAny.mconcat)。
sequenceA。映射(fmap Any.flip runQuery w.toQuery)$
qs
toQuery::ExcludeProp->Query Bool
toQuery(排除类名s)=类名=?s
可在布局挂钩中使用,如下所示:

excludeBorders[ExcludeClassName“Krunner”,ExcludeClassName“plasmashell”]
不幸的是,它没有达到预期的效果,或者根本没有任何效果。。由于对编写布局修改器一无所知,我不确定自己做错了什么,也许我误解了
redoLayout
函数的工作原理。任何指点都将不胜感激



编辑:一些进一步的测试表明,这可能是KDE/plasma窗口的一个特点和/或我的配置有问题,而不是与我的代码有关。

结果表明,除了不考虑浮动窗口外,主逻辑没有问题。更改
排除
实例如下:

实例排除[ExcludeProp],其中
不包括qs wset mst\U wrs=
让ws=integrate'mst++[w |(w,|)
fmap(getAny.mconcat)。
sequenceA.map(fmap Any.flip runQuery w.toQuery)$
qs

使其适用于我的用例。

似乎最近已将此功能添加到XMonad.Layout.NoBorders模块中:

用于发送HasBorder消息的ManageHook:

className=?“foo”-->hasBorder True