cwm

出自 ArchWiki

cwm 是一个 X11 窗口管理器,专注于不妨碍您的工作,以便您可以提高效率。它最初衍生自 evilwm,但代码库此后已从头开始重写。

cwm 是作为 OpenBSD 基础系统的一部分开发的。 也提供可在 Linux 上运行的“便携”版本。

安装

安装 以下软件包之一

  • cwmAUR - 最新发布。
  • cwm-gitAUR - 主分支最新提交。

配置

cmw 通过编辑 ~/.cwmrc 进行配置。 没有默认的 cwmrc 文件;所有默认设置(包括快捷键绑定)都在 conf.c 中定义。cwm(1) 列出了默认的快捷键绑定;cwmrc(5) 列出了所有配置指令。

您可以使用 unbind-key allunbind-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 或方向键将窗口移动到侧面。

参见