cwm
cwm 是一个 X11 窗口管理器,专注于不妨碍您的工作,以便您可以提高效率。它最初衍生自 evilwm,但代码库此后已从头开始重写。
cwm 是作为 OpenBSD 基础系统的一部分开发的。 也提供可在 Linux 上运行的“便携”版本。
安装
安装 以下软件包之一
配置
cmw 通过编辑 ~/.cwmrc
进行配置。 没有默认的 cwmrc
文件;所有默认设置(包括快捷键绑定)都在 conf.c 中定义。cwm(1) 列出了默认的快捷键绑定;cwmrc(5) 列出了所有配置指令。
您可以使用 unbind-key all
和 unbind-mouse all
删除所有默认快捷键绑定。
窗口组
cwm 缺少传统的“工作区”;相反,您可以将窗口分配给一个组。 这是一种更灵活的方法,因为可以同时显示两个或多个组,并且类似于或等同于许多平铺窗口管理器的workspace功能。
例如,可以将聊天/IRC 应用程序放入第 4 组,然后分配一个键来切换该组的可见性(bind-key <k> group-toggle 4
),以便除了可能正在显示的任何其他窗口/组之外,还显示该组。
您还可以使用 bind-key <k> group-only <n>
来仅显示来自该组的窗口,隐藏其他所有内容。
新窗口的默认设置是不将它们放入任何组,这意味着它们将始终显示(许多窗口管理器称之为“粘性”窗口)。 但是,通过使用 sticky yes
启用“粘性组模式”,窗口将默认分配给当前选定的组。 您还可以使用 autogroup
目录来自动分组窗口。
移动窗口
没有将窗口移动到预定义位置的操作;但是您可以使用 xdotool 来解决这个问题;将此 cwm-w-mv
脚本放入您的 PATH
#!/bin/sh # Move a window to the side of a screen. case "$1" in "left") xdotool getactivewindow windowmove 0 y ;; "top") xdotool getactivewindow windowmove x 0 ;; "right") screen_width=$(xwininfo -root | grep Width | cut -d: -f2 | tr -d ' ') win_width=$(xdotool getactivewindow getwindowgeometry --shell | grep WIDTH | cut -d= -f2) xdotool getactivewindow windowmove $(( $screen_width - $win_width )) y ;; "bottom") screen_height=$(xwininfo -root | grep Height | cut -d: -f2 | tr -d ' ') win_height=$(xdotool getactivewindow getwindowgeometry --shell | grep HEIGHT | cut -d= -f2) xdotool getactivewindow windowmove x $(( $screen_height - $win_height )) ;; *) echo "Unsupported: \"$1\"" exit 1 esac
然后在 cwm 中使用类似以下内容进行绑定
bind-key 4-h cwm-w-mv left # Move window to side of the screen. bind-key 4-j cwm-w-mv bottom bind-key 4-k cwm-w-mv top bind-key 4-l cwm-w-mv right bind-key 4-Left cwm-w-mv left bind-key 4-Down cwm-w-mv bottom bind-key 4-Up cwm-w-mv top bind-key 4-Right cwm-w-mv right
这将使 Mod4(“Windows 键”)加上 hjkl 或方向键将窗口移动到侧面。
参见
- OpenBSD 源代码
- 便携版本
- cwmrc 示例: [1]
- Absolute OpenBSD 包含 cwm 的介绍。