spectrwm
来自 spectrwm 网站
- spectrwm 是一个用于 Xorg 的小型动态平铺窗口管理器。它尽量不碍事,以便宝贵的屏幕空间可以用于更重要的内容。它具有合理的默认设置,并且不需要学习任何语言来进行配置。它是由黑客为黑客编写的,并力求小巧、紧凑和快速。
Spectrwm 使用 C 语言编写,并通过文本配置文件进行配置。它以前被称为 scrotwm。
安装
启动
使用 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 也可用于屏幕保护和空闲一段时间后的电源管理以及屏幕锁定。
有关如何为 xterm 和 xscreensaver 设置字体、颜色和其他设置的详细信息,请参阅 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
)1
到0
:选择工作区 1 到 10Shift+1
到Shift+0
:将窗口移动到工作区 1 到 10Right
或Left
:选择下一个或上一个工作区Shift+Right
或Shift+Left
:选择下一个或上一个屏幕Space
:循环切换布局(垂直、水平、最大化)j
或k
:向前或向后循环切换窗口Tab
或Shift+Tab
:与Meta+j
或Meta+k
相同Enter
:将当前窗口移动到主区域h
或l
:增加或减小主区域的大小
高级堆叠(仍然伴随 Meta
)
,
或.
:增加或减少主区域中的窗口数量(默认为 1)Shift+,
或Shift+.
:在垂直(水平)模式下增加或减少堆叠区域中的列(行)数(默认为 1)Shift+j
或Shift+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 进行故障排除。
参见
- spectrwm - spectrwm 官方网站