Arch Linux 下安装 dwm (平铺式窗口管理器)
suckless官网:suckless.org文章目录1. 安装 xorg + xorg-xinit + git + base-devel2. 安装yay3. 安装字体4. 安装终端模拟器stalacritty5. 克隆 dwm 源码6. 编译安装 dwm7. 使用 startx 启动 dwm8. dwm 配置config.h 文件源码说明外观配置标签栏的显示 + 软件的窗口规则添加命令 + 定义
suckless官网:suckless.org
文章目录
1. 安装 xorg + xorg-xinit + git + base-devel
sudo pacman -S xorg xorg-xinit base-devel git
2. 安装yay
yay
是可以安装AUR
中软件包的工具。
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
如果在安装yay
的过程中报以下错误,是因为GOPROXY
不支持所在的地区。
go build -trimpath -mod=readonly -modcacherw -ldflags '-X "main.yayVersion=10.2.2" -X "main.localePath=/usr/share/locale/" -linkmode=external' -buildmode=pie -o yay
go: github.com/Jguer/go-alpm/v2@v2.0.5: Get "https://proxy.golang.org/github.com/%21jguer/go-alpm/v2/@v/v2.0.5.mod": dial tcp 216.58.200.241:443: i/o timeout
make: *** [Makefile:112: yay] Error 1
==> ERROR: A failure occurred in build().
Aborting...
设置GOPROXY
以解决以上问题。
# 设置 GOPROXY
echo "export GOPROXY=https://goproxy.cn" >> ~/.profile
# 重新加载 .profile文件
source ~/.profile
3. 安装字体
sudo pacman -S ttf-fira-code noto-fonts-emoji wqy-microhei
yay -S ttf-symbola nerd-fonts-fira-code
4. 安装终端模拟器
st
文章地址:Arch Linux 下安装 st (终端模拟器)
alacritty
alacritty
有GPU
加速。
# 安装alacritty
sudo pacman -S alacritty
alacritty
的配置文件为:~/.config/alacritty/alacritty.yml
。
5. 克隆 dwm 源码
使用源码安装,每次修改源码
都需要重新编译安装
。
git clone https://git.suckless.org/dwm
如果使用的终端模拟器不是st
,需要修改config.def.h
文件中的以下代码:
/* 将其中的st修改为安装的终端模拟器 */
static const char *termcmd[] = { "st", NULL};
修改config.mk
文件。
# 修改 config.mk 文件
X11INC = /usr/X11R6/include X11INC = /usr/include/X11
->
X11LIB = /usr/X11R6/lib X11LIB = /usr/lib/X11
6. 编译安装 dwm
# 进入dwm目录
cd dwm
# 编译安装
sudo make clean install
7. 使用 startx 启动 dwm
# ~/.xinitrc文件本来是没有的,需要手动添加
vim ~/.xinitrc
# 在.xinitrc文件中添加以下代码
exec dwm
重启后,使用startx
命令启动dwm
。
startx
启动后,可以看到dwm
最原始的界面。
默认的MODKEY
是Alt
键。
MODKEY
键是可改变的,Mod1Mask
表示Alt
键,Mod4Mask
表示Window
键。
按下MODKEY
+Shift
+Enter
启动终端。
将以下代码添加到shell
的配置文件中,可以在登录后自动启动startx
。
# auto startx
if [ -z "${DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then
exec startx
fi
8. dwm 配置
每次编译安装都会根据config.def.h
文件产生config.h
文件。
所以可以通过config.def.h
文件配置dwm
。
每次修改源码都需要重新编译安装:
rm -rf config.h && sudo make clean install
config.def.h 文件源码说明
外观配置
修改以下代码以配置dwm
的字体
,颜色
等。
例:
将默认的蓝色配色
修改为紫色配置
。
标签栏的显示 + 软件的窗口规则
修改以下代码以配置dwm
标签栏的显示效果和软件的窗口规则。
窗口规则:软件打开的标签
,窗口是否浮动
等。
添加命令 + 定义快捷键
修改以下代码以配置dwm
的程序命令和快捷键。
例:
添加flameshot
截图命令和快捷键。
/* 添加命令 */
static const char *flameshot[] = { "flameshot", "gui", NULL};
/* 添加快捷键:mod+s */
{ MODKEY, XK_s, spawn, {.v = flameshot } },
9. dwm 补丁
通过补丁
为dwm
添加额外的功能。
补丁下载地址:https://dwm.suckless.org/patches/
打补丁
一般情况下,补丁文件都会说明是基于哪个版本制作出来的补丁。
例:
hide vacant tags
最新的补丁是基于dwm-6.2
制作出来的补丁。
使用git管理打补丁后的dwm。
在打补丁之前,可以创建一个指向该补丁版本的git分支。
# 创建版本指向6.2,分支命为dwm-hide_vacant_tags-6.2的git分支
git switch -c dwm-hide_vacant_tags-6.2 6.2
将补丁文件放在~/patches
目录下,通过patch
命令打补丁。
# 在"dwm-hide_vacant_tags-6.2"分支上打"dwm-hide_vacant_tags-6.2.diff"补丁。
patch < ~/patches/dwm-hide_vacant_tags-6.2.diff
# git提交修改
git commit -am "patch: dwm-hide_vacant_tags-6.2"
将dwm-hide_vacant_tags-6.2
分支合并到master
分支。
分支合并如果有冲突就解决冲突。
# 切换到"master"分支
git switch master
# 合并分支
git merge dwm-hide_vacant_tags-6.2
重新编译安装。
rm -rf config.h && sudo make clean install
安装完成后,发现只有标签1
下有程序运行,所以只显示标签1
,说明补丁成功了。
代码托管和官方代码同步
查看远程仓库地址
git remote -v
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o0OT93YO-1643042320869)(images/origin-to-suckless.png)]
发现origin
指向官方的仓库。
修改:将upstream
指向官方的仓库,origin
指向自己的仓库。
# 将"upstream"指向官方的仓库
git remote rename origin upstream
# 添加自己的仓库地址
git add remote origin <自己的仓库地址>
将配置好的dwm
推送到自己的远程仓库。
# 推送所有的分支和tags
git push origin --all && git push origin --tags
官方代码同步。
git pull upstream master
如果git pull
有冲突就解决冲突。
推荐补丁
透明补丁:alphasystray.diff
临时小窗口:dwm-scratchpad-6.2.diff
隐藏空标签:dwm-hide_vacant_tags-6.2.diff
窗口间距:dwm-vanitygaps-20190508-6.2.diff
自动启动脚本:dwm-autostart-20161205-bb3bd6f.diff
窗口全屏:dwm-actualfullscreen-20191112-cb3f58a.diff
状态栏显示多个窗口信息:dwm-awesomebar-20191003-80e2a76.diff
10. 状态栏右侧显示信息
使用xsetroot
命令可以在dwm
状态栏的右侧显示需要的信息。
# 使用xsetroot命令在状态栏右侧显示"hello dwm"
xsetroot -name "hello dwm"
配合dwm-autostart-20161205-bb3bd6f.diff
补丁和自定义脚本
可以在系统启动时显示需要的系统信息。
例:
系统启动时,在状态栏右侧显示系统时间。
打上dwm-autostart-20161205-bb3bd6f.diff
后,在dwm.c
文件中找到以下代码:
void
runAutostart(void) {
system("cd ~/scripts; ./autostart_blocking.sh")
system("cd ~/scripts; ./autostart.sh &")
}
可以修改为自定义脚本
的目录。
void
runAutostart(void) {
system("cd ~/dwm/scripts; ./autostart.sh &")
}
autostart.sh
脚本的内容如下:
#!/bin/sh
dwm_date () {
date '+%Y年%m月%d日 %a %H:%M'
}
while true
do
xsetroot -name "$(dwm_date)"
sleep 1
done
11. Arch Linux 美化 (st + dwm)
更多推荐
所有评论(0)