osaet/content/posts/dwm-st-installation-patches.md
yarnom f0b50d13ea feat: add admin publishing workflow and yar theme
Add Go/Postgres admin APIs, Angular admin UI, manual build flow, asset uploads, markdown import/export, configurable slug generation, and the Yar reading theme. Exclude local docs and generated development artifacts from version control.
2026-06-01 15:48:04 +08:00

118 lines
4.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
id: 9e345b0f-802d-4083-a9c8-1636e98b8f27
slug: dwm-st-installation-patches
title: dwm 和 st 的安装及补丁
summary: ""
status: published
tags: []
cover: ""
version: 1
slug_source: manual
slug_locked: true
published_at: "2023-05-05T15:59:30+08:00"
created_at: "2023-05-05T15:59:30+08:00"
updated_at: "2026-01-07T18:11:27+08:00"
---
## 前言
得益于近些日子在学校深入学习了很多关于 Linux 的知识,加之之前也多次重装过 Arch ,这些因素综合起来后,这一次的系统安装可以说颇为顺畅,之前因无法理解的地方而导致难以下手的操作,所赖知识见长,逐渐克服且熟练了起来。
本次为了更加深入地去学习 Linux ,所以放弃了像 Gnome 这样简单易用的桌面环境, 而是使用像 DWM 这样更简单的窗口管理器,虽然是自找麻烦,但我也乐在其中,我会在本文中简略地记录下折腾的过程。
## DWM 和 st 的安装
事实上安装 DWM 非常的简单,自需要从 suckless 官网下载源码文件即可。
```bash
$ git clone git://git.suckless.org/dwm
$ cd dwm
$ make
# sudo make install
```
编译安装后,我这里是通过 xrog 的 `.xinitrc` 从 tty 终端使用 `startx` 命令启动的:
```bash
exec dwm
```
启动之后的第一眼就是简陋目前还什么都干不了因为我甚至还没安装终端suckless 也提供了一个 xrog 下的终端实现,叫 `st`
通过魔法键回到 tty ps.当然也可以通过快捷键:`Alt` `+` `Shift` `+` `Q` 退出 dwm ),通过 tty 的终端去下载 st 源码。
同样也是通过源码安装:
```bash
$ git clone https://git.suckless.org/st
$ cd st
$ make
# sudo make install
```
编译安装完后在dwm便应该通过`Alt` `+` `Shift` `+` `Enter` 组合键启动 `st` 管终端。但是毫无疑问,也是十分简陋,甚至字体小到无法看清……
不过问题不大,我学过 C ,源码文件是能看懂的,首先就是修改了字体大小,顺带一提我还通过 pacman 包管理下载了 [ttf-fira-code] 字体。
首先来修改一下 dwm 的字体和其大小:
```c
# dwm > config.h
static const char *fonts[] = { "Fira Code:size=14" };
static const char dmenufont[] = "Fira Code:size=14";
```
保存后通过 `sudo make clean install` 命令安装即可
接着修改 st 终端的字体和大小:
```c
# st > config.h
static char *font = "Fira Code:style=Bold:pixelsize=23:antialias=true:autohint=true";
```
保存后通过 `sudo make clean install` 命令安装即可
这样修改完后,便好看很多了。
## 安装 dmenu
这个就是 suckless 的程序托盘?
总之,安装后,可以快速打开程序,也是蛮好的,这个就没有使用源码安装了,不过听说它也有很多好玩之处,之后再研究吧,总之 dmenu 通过包管理器安装:
```bash
$ sudo pacman -S dmenu
```
## 给 dwm 打补丁
Dwm 目前其实足够我使用了, 这里就打一个透明补丁: 「 [alpha.diff](https://dwm.suckless.org/patches/alpha/dwm-alpha-20201019-61bb8b2.diff
) 」
```bash
$ wget https://dwm.suckless.org/patches/alpha/dwm-alpha-20201019-61bb8b2.diff
$ patch p1 < dwm-alpha-20201019-61bb8b2.diff
```
通过 `patch` 命令 把补丁打进去即可,之前我都没怎么用过这个 patch 命令,用多了其实也还好,出现错误了,手动去修改源文件即可。
## 给 st 打补丁
这里打了好几个补丁:
- 「 [st-alpha-20220206-0.8.5.diff](https://st.suckless.org/patches/alpha/st-alpha-20220206-0.8.5.diff) 」 这是改变st透明度的补丁。
- 「 [st-scrollback-20210507-4536f46.diff](https://st.suckless.org/patches/scrollback/st-scrollback-20210507-4536f46.diff) 」这是让 st 终端支持回滚(按键支持)
- 「 [st-scrollback-mouse-20220127-2c5edf2.diff](https://st.suckless.org/patches/scrollback/st-scrollback-mouse-20220127-2c5edf2.diff) 」这是回滚的鼠标滚轮支持(ps.需要先安装scrollback 补丁)
也是一样地通过 `patch` 命令打进去,这里就不再赘述了。
## 安装 picom
这是一个合成管理器,可以给窗口管理器带来需要效果,比如透明、阴影,上面的透明补丁也需要它的安装才能真正起作用。
```bash
$ sudo pacman -S picom
```
安装完后,编辑 ` ~/.xinitrc ` 文件,进程让它以 Daemon后台 的形式运行。
```bash
compton -b
```
(未完待续)