spectrwm

来自 ArchWiki

来自 spectrwm 网站

spectrwm 是一个用于 Xorg 的小型动态平铺窗口管理器。它尽量不碍事,以便宝贵的屏幕空间可以用于更重要的内容。它具有合理的默认设置,并且不需要学习任何语言来进行配置。它是由黑客为黑客编写的,并力求小巧、紧凑和快速。

Spectrwm 使用 C 语言编写,并通过文本配置文件进行配置。它以前被称为 scrotwm。

安装

安装 spectrwmAUR 软件包。

启动

使用 xinit 运行 spectrwm

配置

spectrwm~/.config/spectrwm/spectrwm.conf~/.spectrwm.conf 中查找用户配置文件。如果这些文件都不存在,它将打开 /etc/spectrwm.conf 中的全局配置文件。它还支持 XDG Base Directory 路径。

可选地,spectrwm 可以调用 baraction.sh(在用户的路径中),它应该将文本状态消息输出到 stdout 以用于状态栏。

注意: 您将需要为状态栏设置可用的字体。使用 fc-list 命令检查已安装的字体,并在本地配置文件中的 bar_font 字段中设置一个字体。例如
~/.spectrwm.conf
bar_font = xos4 Terminus:pixelsize=14

modkey(用于发出命令的主键)设置为 Mod4,通常是 Super 键。

还有一个屏幕锁定快捷键绑定,默认情况下它从 xlockmore 软件包调用 xlock

xscreensaver 也可用于屏幕保护和空闲一段时间后的电源管理以及屏幕锁定。

有关如何为 xtermxscreensaver 设置字体、颜色和其他设置的详细信息,请参阅 Xdefaults。运行 xscreensaver-demo 以选择动画(或空白)和显示电源管理(推荐)。

快捷键绑定

默认快捷键绑定位于 /etc/spectrwm/spectrwm_<<keyboard layout>>.conf 中。为了自定义快捷键绑定

  • 在您的 ~/.spectrwm.conf 中将 keyboard_mapping 设置为 /dev/null
  • /etc/spectrwm/spectrwm_<<keyboard layout>>.conf 的内容复制粘贴到您的 ~/.spectrwm.conf 的末尾。

多显示器 (Xinerama)

对于非 Xrandr 多显示器设置,创建区域以将总桌面区域拆分为每个显示器一个区域

region                = screen[1]:1280x1024+0+0
region                = screen[1]:1280x1024+1280+0

状态栏

要启用状态栏,请取消注释 /etc/spectrwm.conf(或 ~/.spectrwm.conf)中的这两个项目。默认情况下,它们被注释掉,并且状态栏被禁用。

bar_action              = baraction.sh
bar_delay               = 5

Bash 脚本

要测试状态栏,请将以下简单的 baraction.sh 放在您之前添加到 ~/.bashrc 文件中的 $PATH 中的 ~/scripts(或 ~/bin)目录中。

#!/bin/bash
# baraction.sh script for spectrwm status bar

SLEEP_SEC=5  # set bar_delay = 5 in /etc/spectrwm.conf
COUNT=0
#loops forever outputting a line every SLEEP_SEC secs
while :; do
	let COUNT=$COUNT+1
        echo -e "         Hello World! $COUNT"
        sleep $SLEEP_SEC
done

Modkey+Q 以重启 spectrwm,几秒钟后您应该在状态栏中看到输出。如果您在此阶段遇到问题,请确保脚本是可执行的,从命令行测试它,并检查您在 bar_action 中指定的路径/文件名。

以下是一些其他状态栏项目的想法:以太网、电子邮件通知、磁盘空间、挂载点、正在播放(mpc current)。

脚本也可能显示日期,在这种情况下,可以禁用内置时钟

clock_enabled     = 0

Conky

可以使用 Conky 而不是 bash 脚本。应在非图形模式下使用它,如下所示,以将文本字符串输出到 stdout,spectrwm 可以读取该字符串。首先安装 conky。没有必要安装精简版的 conky-cliAUR(尽管它也可以工作)。

~/.spectrwm.conf 中设置

bar_action = conky

然后在每个用户的 ~/.conkyrc 文件中放置例如

out_to_x no
out_to_console yes
update_interval 1.0
total_run_times 0
use_spacer none
TEXT
${time %R %a,%d-%#b-%y} |Mail:${new_mails} |Up:${uptime_short} |Temp:${acpitemp}C |Batt:${battery_short} |${addr wlan0} |RAM:$memperc% |CPU:${cpu}% | ${downspeedf wlan0}

备选状态栏

另一种选择是使用 dzen2 创建状态栏。这样做的好处是可以使用颜色甚至图标,但缺点是该栏未与 spectrwm 集成。因此,当前工作区编号和布局以及栏切换快捷键绑定不可用。“region”选项可用于保留所需的屏幕空间。

例如,要在屏幕顶部保留 14 像素

spectrwm.conf
bar_enabled             = 0
region                  = screen[1]:1024x754+0+14

(根据您的屏幕分辨率进行调整)。

然后,例如使用 i3status 提供信息

$ i3status | dzen2 -fn -*-terminus-medium-*-*-*-*-*-*-*-*-*-*-* &

Spectrwm 自己的栏仍然可以使用 Meta+b 启用和禁用。

截图

Spectrwm 具有执行名为 screenshot.sh 的脚本的功能,快捷键绑定为

  • Meta+s − 用于全屏截图
  • Meta+Shift+s − 用于单窗口截图

首先安装 scrot,然后将 spectrwm 软件包中提供的默认脚本复制到您的 $PATH 中的位置,例如

$ cp /usr/share/spectrwm/screenshot.sh ~/bin

屏幕锁定

默认情况下,锁定快捷键绑定 Mod+Shift+Delete 执行 xlock

program[lock]      = xlock

如果 xscreensaver 已经在运行,则另一种选择是使用

program[lock]      = xscreensaver-command -lock

使用 spectrwm

  • 为了节省空间,窗口标题栏不显示。窗口边框为一个像素宽。边框颜色会改变以指示焦点。
  • 布局是动态处理的,可以即时更改。有三种标准布局(堆叠算法):垂直、水平和最大化(在状态栏中指示为 [|][-][ ]
  • 有一个主区域(工作区域)的概念。任何窗口都可以切换为成为主窗口,然后将显示在主区域中。在垂直(水平)模式下,主区域是屏幕的左(上)部分。主区域的大小可以使用按键调整。默认情况下,主区域容纳一个窗口,但可以增加。
  • 排除主区域的区域称为堆叠区域。新窗口被添加到堆叠区域。默认情况下,堆叠区域在垂直(水平)模式下有一列(行),但可以增加。
  • 窗口可以移动到浮动层,即从平铺管理中移除。这对于不适合平铺的程序很有用。

一些与 Meta 一起使用的最有用快捷键绑定

  • Shift+Enter:打开终端
  • p:调用 dmenu(您可以在其中键入程序名称的开头并按 Enter
  • 10:选择工作区 1 到 10
  • Shift+1Shift+0:将窗口移动到工作区 1 到 10
  • RightLeft:选择下一个或上一个工作区
  • Shift+RightShift+Left:选择下一个或上一个屏幕
  • Space:循环切换布局(垂直、水平、最大化)
  • jk:向前或向后循环切换窗口
  • TabShift+Tab:与 Meta+jMeta+k 相同
  • Enter:将当前窗口移动到主区域
  • hl:增加或减小主区域的大小

高级堆叠(仍然伴随 Meta

  • ,.:增加或减少主区域中的窗口数量(默认为 1)
  • Shift+,Shift+.:在垂直(水平)模式下增加或减少堆叠区域中的列(行)数(默认为 1)
  • Shift+jShift+k:与下一个或上一个窗口交换窗口位置
  • t:在浮动和平铺之间切换

鼠标绑定

  • Mouseover:聚焦窗口
  • Meta+LeftClick+Drag:移动窗口(如果平铺则浮动)
  • Meta+RightClick+Drag:调整浮动窗口大小
  • Meta+Shift+RightClick+Drag:调整浮动窗口大小并保持居中

其他有用的绑定(伴随 Meta

  • x:关闭窗口
  • Shift+x:杀死窗口
  • b:隐藏或显示状态栏
  • q:重启 spectrwm(重置桌面并重新读取 spectrwm 配置,而无需停止正在运行的程序)
  • Shift+q:退出 spectrwm

故障排除

帮助,我登录后只看到一个空白屏幕

Shift+Super+Enter,将启动一个 xterm。有关其他默认快捷键绑定,请参阅 手册。另请检查您的配置文件。

为什么我的窗口在当前活动桌面以外的桌面中打开?

当前,窗口的 PID 用于确定新窗口的桌面。为了解决这个问题,例如对于终端,您通常可以传递一个参数以在新进程中打开终端。

帮助,运行 startx 后 Xorg 终止

确保安装了所有依赖项,例如 xlockmore

您也可以在另一个 xsession 中使用 Xephyr 对您的 xinitrc 进行故障排除。

参见

  • dmenu - 来自 dwm 开发者的简单应用程序启动器