首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

XMonad:如何使用manageHook?

XMonad 是一个基于 Haskell 编写的动态窗口管理器,它允许用户通过编写配置文件来自定义窗口管理行为。其中,manageHook 是 XMonad 的一个重要配置选项,它用于定义窗口的管理规则。

在 XMonad 中,manageHook 是一个函数,它接受一个窗口管理器状态作为输入,并返回一个新的状态。通过在 manageHook 中定义规则,可以控制窗口的布局、位置、大小以及其他行为。

使用 manageHook 需要了解以下几个关键概念:

  1. 窗口属性(Window Attributes):每个窗口都有一些属性,如窗口类别、标题、应用程序名称等。可以使用 manageHook 来根据这些属性来管理窗口。
  2. 窗口管理规则(Manage Rules):通过在 manageHook 中定义规则,可以根据窗口属性来决定窗口的管理方式。规则可以基于窗口类别、标题、应用程序名称等进行匹配,并指定相应的管理动作。
  3. 管理动作(Manage Actions):管理动作是在匹配到符合规则的窗口时执行的操作。常见的管理动作包括浮动窗口、将窗口放置到指定的工作区、设置窗口的布局等。

下面是一个示例,展示如何使用 manageHook 来管理窗口:

代码语言:haskell
复制
import XMonad
import XMonad.Hooks.ManageHelpers

myManageHook :: ManageHook
myManageHook = composeAll
    [ className =? "Firefox" --> doShift "web" -- 将 Firefox 窗口放置到名为 "web" 的工作区
    , className =? "Gimp" --> doFloat -- 将 Gimp 窗口设为浮动窗口
    , isDialog --> doCenterFloat -- 将对话框设为居中浮动窗口
    , title =? "VLC media player" --> doFullFloat -- 将 VLC 窗口设为全屏浮动窗口
    ]

main :: IO ()
main = xmonad $ def
    { manageHook = myManageHook <+> manageHook def
    -- 其他配置项...
    }

在上面的示例中,我们使用了 XMonad.Hooks.ManageHelpers 模块提供的一些辅助函数,如 className、title 和 isDialog,来匹配窗口的属性。根据匹配结果,我们执行了不同的管理动作,如 doShift、doFloat、doCenterFloat 和 doFullFloat。

这只是 manageHook 的一个简单示例,你可以根据自己的需求编写更复杂的规则和管理动作。

推荐的腾讯云相关产品:腾讯云服务器(CVM)和腾讯云容器服务(TKE)。腾讯云服务器提供了强大的计算能力和稳定的网络环境,适用于部署和运行 XMonad。腾讯云容器服务则提供了便捷的容器编排和管理功能,可用于部署和管理 XMonad 相关的容器化应用。

腾讯云服务器(CVM)产品介绍链接:https://cloud.tencent.com/product/cvm

腾讯云容器服务(TKE)产品介绍链接:https://cloud.tencent.com/product/tke

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

窗口管理器 xmonad 教程

根据本文,读者可以从零开始配置并使用 xmonadxmonad 的所有操作都通过键盘,只适合命令行的重度用户。如果你喜欢鼠标和图形界面,xmonad 不适合你。...xmonad 一直是最受欢迎的前三名,它使用 Haskell 语言编写,是世界上使用人数最多的 Haskell 软件。它的特点就是极简化,性能高。...xmonad 提供一个功能键,称为mod键(modifier 的缩写),所有操作都要使用这个键,默认为alt键,但是一般会把它改掉,比如改成Windows键,具体修改方法请看后文。...xmonad 启动后,默认处于1号工作区 。 如果要将一个窗口移到不同的工作区,先用mod + j或mod + k,将其变成焦点窗口,然后使用mod + shift + 6,就将其移到了6号工作区。...使用多显示器时,每个显示器会分配到一个工作区。默认情况下,1号工作区显示在主显示器,2号工作区显示在第二个显示器。

2.1K110

Emacs 系列(一):抛掉一切,投入 Emacs 和 org 模式的怀抱

我必须承认,在使用了几十年的 vim 后, 我被 Emacs 吸引了。 长期以来,我一直对如何组织安排事情感到沮丧。...它的网站上写着,“你可以用纯文本来记录你的生活:你可以用 org 模式来记笔记,处理待办事项,规划项目和使用快速有效的纯文本系统编写文档。”...一个小花絮:我又在使用离线 IMAP 了!我甚至在很久以前就用过 GNUS。...用一个 Emacs 进程来管理 我以前也经常使用 Emacs,那时,Emacs 是一个“大”的程序(现在显示电源状态的小程序占用的内存要比 Emacs 多)。...我喜欢用 Mod-p(一个 xmonad 中 dzen 菜单栏的快捷方式,但是在大多数传统的桌面环境中该功能的快捷键是 Alt-F2)来启动程序(LCTT 译注:xmonad 是一种平铺桌面;dzen

80310

如何使用 ArrayPool

如果不停的 new 数组,可能会造成 GC 的压力,因此在 aspnetcore 中推荐使用 ArrayPool 来重用数组,本文将介绍如何使用 ArrayPool。...ArrayPool 的使用非常简单,只需要调用它的静态方法 Rent 即可。Rent 方法有两个参数,第一个参数是数组的长度,第二个参数是数组的最小长度。...需要注意的是,在使用完数组后,必须将其归还到池中,否则该数组将一直占用池中的内存,导致内存泄漏。使用场景一个典型的场景是在高吞吐量的网络应用程序中,例如 Web 服务器或消息队列服务器中。...使用 ArrayPool 可以通过池化内存缓解这种情况。这样,当需要分配数组时,可以从池中获取可用的数组而不是分配新的数组,从而减少垃圾回收的压力。一旦使用完毕,将数组返回到池中,以便可以重复使用。...在这种情况下,可以使用 ArrayPool 来池化内存,以便在每个请求处理期间重复使用相同的缓冲区。这将减少内存分配和垃圾回收的开销,从而提高服务器的性能和吞吐量。

5K00

如何使用bcftools

chatGPT很方便的解决 当然了,如何提问,就需要一点点背景知识啦, 比如知道什么是变异位点,什么是过滤,然后就可以很简单的两个提问即可: 先让chatGPT介绍一下bcftools工具,来龙去脉了解一下...统计信息: 使用bcftools可以生成有关变异的统计信息,例如不同变异类型的计数、变异频率等。 基因型比较: 您可以使用bcftools比较不同样本之间的基因型,识别共享或不同的变异。...注释: 尽管bcftools本身不提供注释功能,但可以与其他工具(如VEP或Annovar)一起使用,以为变异添加注释信息。...bcftools的过滤变异的用法涉及到使用子命令bcftools filter,并提供适当的过滤条件。...可以使用逻辑运算符(如&&和||)来连接条件。

1.2K10

如何使用 ArrayPool

如果不停的 new 数组,可能会造成 GC 的压力,因此在 aspnetcore 中推荐使用 ArrayPool 来重用数组,本文将介绍如何使用 ArrayPool。...ArrayPool 的使用非常简单,只需要调用它的静态方法 Rent 即可。Rent 方法有两个参数,第一个参数是数组的长度,第二个参数是数组的最小长度。...需要注意的是,在使用完数组后,必须将其归还到池中,否则该数组将一直占用池中的内存,导致内存泄漏。 使用场景 一个典型的场景是在高吞吐量的网络应用程序中,例如 Web 服务器或消息队列服务器中。...使用 ArrayPool 可以通过池化内存缓解这种情况。这样,当需要分配数组时,可以从池中获取可用的数组而不是分配新的数组,从而减少垃圾回收的压力。一旦使用完毕,将数组返回到池中,以便可以重复使用。...在这种情况下,可以使用 ArrayPool 来池化内存,以便在每个请求处理期间重复使用相同的缓冲区。这将减少内存分配和垃圾回收的开销,从而提高服务器的性能和吞吐量。

21710

如何使用RSS

虽然我不是这方面的专业人士,但是我相信你只要耐心读完这篇文章,你就会基本搞懂RSS以及它的使用方法。 ? 二、 在解释RSS是什么之前,让我先来打一个比方。...一个使用者,要想及时掌握的互联网上出现的最新信息,有办法吗? 答案是没有办法,他只有一个网站一个网站的打开,去看有什么最新内容,就好比每天都必须去每一个系里走一遍,看有什么最新讲座。...我要说,哪怕你只是一个网络的初级或最单纯的使用者,与你发生关系的网站数量也在急剧增加,因为Blog出现了。...RSS阅读器多种多样,大致分为两种,一种是桌面型的,需要安装;另一种是在线型,直接使用浏览器进行阅读。 四 在浏览器中订阅RSS,就必须先知道RSS的地址。一般来说,各个网站的首页都会用显著位置标明。

2.9K40

菜鸟如何使用Hanlp

后来发现结果并不好,需要一遍一遍筛选【第一个标准筛选出80%的数据,然后制定第二个标准,继续筛选,然后制定第三个标准筛选,等等等等】 自己用了一下结巴分词,感觉对于人名,地名,机构名,只是泛泛地使用了一下...于是转而使用hanlp分词 但是hanlp分词的缺点是只有在java上可以用,但是java一向又是我的弱项。...所以在这里写一篇博客从头至尾叙述一下怎么样使用hanlp 而且,小胖胖把我的电脑锁在北师图书馆柜子里了。...我工作没有电脑可用,于是使用小胖的电脑,也就是说,所有的基本变量都需要我自己来配来下,因此也相当于是从一张白纸到使用hanlp的过程。...TestHanlp { public static void main(String[] args) { System.out.println(HanLP.segment("你好,欢迎使用

53030

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券