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


alacrittyGPU加速。

# 安装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最原始的界面。

默认的MODKEYAlt键。

MODKEY键是可改变的,Mod1Mask表示Alt键,Mod4Mask表示Window键。

按下MODKEY+Shift+Enter启动终端。
dwm
将以下代码添加到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-appearance
例:

将默认的蓝色配色修改为紫色配置
dwm-appearance-color-purple
dwm-appearance-purple

标签栏的显示 + 软件的窗口规则

修改以下代码以配置dwm标签栏的显示效果和软件的窗口规则。

窗口规则:软件打开的标签窗口是否浮动等。
dwm-tagging-rule

添加命令 + 定义快捷键

修改以下代码以配置dwm的程序命令和快捷键。
dwm-commands-key
例:

添加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-xsetroot
配合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

dwm-date-script

11. Arch Linux 美化 (st + dwm)


文章地址:Arch Linux 美化 (st + dwm)

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐