Archlinux + Dwm 配置流程
本着学习C的态度来了解dwm,本身作为一个i3wm的追崇者,与dwm会擦出怎么样的火花呢?
下载安装dwm
archlinuxcn源配置
编辑/etc/pacman.conf文件,添加bfsu的archlinuxcn源
sudo vim /etc/pacman.conf
---------------------------------------------
[archlinuxcn]
Server = https://mirrors.bfsu.edu.cn/archlinuxcn/$arch
sudo pacman -Sy archlinuxcn-keyring
安装dwm所需要的基本包
sudo pacman -S xorg xorg-xinit feh pcmanfm compton xfce4-terminal
下载dwm
可以建立单独的目录用于管理dwm相关的配置,也可以像我一样直接把相关的仓库放在家目录下
git clone https://git.suckless.org/dwm
git clone https://git.suckless.org/st
git clone https://git.suckless.org/dmenu
首次编译dwm并配置启动dwm
分别进入到自己克隆的这三个仓库中执行:
sudo make clean install
# 需要注意的是在这个仓库下操作需要使用sudo权限
配置xinit来启动dwm:
首先将xinit的配置文件拷贝一份到家目录下:
cp /etc/X11/xinit/xinitrc .xinitrc
然后编辑.xinitrc文件:
删除掉最后五行,这五行我们不会用到,直接删除即可,然后在最后加上exec dwm,上图:

配置dwm
快捷键更改
尤其对于i3wm的老用户来说,这个太必要了。比如我更习惯用win+q去关闭窗口、习惯用alt+enter来打开终端等等,这些都是需要配置的。
首先进入dwm仓库,编辑config.h文件:
cd dwm
sudo vim config.h
-------------------------------------------
// 首先找到 key definitions ,我个人比较习惯设置两个mod键,
// win键更趋向于一些窗口管理
// alt键更趋向于一些动作
/* key definitions */
#define MODKEY1 Mod1Mask // alt键
#define MODKEY Mod4Mask //win键
#define TAGKEYS(KEY,TAG) \
{ MODKEY, KEY, view, {.ui = 1 << TAG} }, \
{ MODKEY|ControlMask, KEY, toggleview, {.ui = 1 << TAG} }, \
{ MODKEY|ShiftMask, KEY, tag, {.ui = 1 << TAG} }, \
{ MODKEY|ControlMask|ShiftMask, KEY, toggletag, {.ui = 1 << TAG} },
上图:

更改几个常用的快捷键,涉及关闭窗口、打开终端、退出dwm
static const Key keys[] = {
/* modifier key function argument */
/* 打开dmenu win + p */
{ MODKEY, XK_p, spawn, {.v = dmenucmd } },
/* 打开终端 Alt + Enter */
{ MODKEY1, XK_Return, spawn, {.v = termcmd } },
{ MODKEY, XK_b, togglebar, {0} },
{ MODKEY, XK_j, focusstack, {.i = +1 } },
{ MODKEY, XK_k, focusstack, {.i = -1 } },
{ MODKEY, XK_i, incnmaster, {.i = +1 } },
{ MODKEY, XK_d, incnmaster, {.i = -1 } },
{ MODKEY, XK_h, setmfact, {.f = -0.05} },
{ MODKEY, XK_l, setmfact, {.f = +0.05} },
{ MODKEY, XK_Return, zoom, {0} },
{ MODKEY, XK_Tab, view, {0} },
/* 关闭当前聚焦的窗口 win + p */
{ MODKEY, XK_q, killclient, {0} },
{ MODKEY, XK_t, setlayout, {.v = &layouts[0]} },
{ MODKEY, XK_f, setlayout, {.v = &layouts[1]} },
{ MODKEY, XK_m, setlayout, {.v = &layouts[2]} },
{ MODKEY, XK_space, setlayout, {0} },
{ MODKEY|ShiftMask, XK_space, togglefloating, {0} },
{ MODKEY, XK_0, view, {.ui = ~0 } },
{ MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } },
{ MODKEY, XK_comma, focusmon, {.i = -1 } },
{ MODKEY, XK_period, focusmon, {.i = +1 } },
{ MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } },
{ MODKEY|ShiftMask, XK_period, tagmon, {.i = +1 } },
TAGKEYS( XK_1, 0)
TAGKEYS( XK_2, 1)
TAGKEYS( XK_3, 2)
TAGKEYS( XK_4, 3)
TAGKEYS( XK_5, 4)
TAGKEYS( XK_6, 5)
TAGKEYS( XK_7, 6)
TAGKEYS( XK_8, 7)
TAGKEYS( XK_9, 8)
/* 退出dwm win + shfit + c */
{ MODKEY|ShiftMask, XK_c, quit, {0} },
/* klelee's volume config */
{ MODKEY, XK_F1, spawn, SHCMD("amixer sset Master toggle") },
{ MODKEY, XK_F2, spawn, SHCMD("amixer sset Master 5%- ") },
{ MODKEY, XK_F3, spawn, SHCMD("amixer sset Master 5%+ ") },
/* 截屏 需要安装flameshot */
{ MODKEY1, XK_p, spawn, SHCMD("flameshot gui") },
{ MODKEY, XK_minus, setgaps, {.i = -1 } },
{ MODKEY, XK_equal, setgaps, {.i = +1 } },
{ MODKEY|ShiftMask, XK_equal, setgaps, {.i = 0 } },
};
上图:可能还有一些配置项下面图片没有highlight,但是后面会说到

设置默认终端为xfce4-terminal,这玩意儿是真的好用呀!!!
同样是编辑config.h,找到commands模块,修改termcmd的值为xfce4-terminal即可:
/* commands */
static const char *dmenucmd[] = { "dmenu_run", "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, NULL };
static const char *termcmd[] = { "xfce4-terminal", NULL };
上图:

设置壁纸和透明度
可乐有一个background的仓库,直接克隆使用,可乐yyds
mkdir ~/Pictrues # 新装的archlinux是没有home下对应的这些目录的,需要重新建立
cd ~/Pictures
git clone https://gitlink.org.cn/klelee/background.git
cd background && rm -rf README.md
那么第一步,好看的图片有了,接下来设置启动的时候随机选择一张好看的图片作为壁纸:
vim .xinitrc
-----------------------------------------
......
# 在exec dwm之前添加
compton -b # 这个是设置透明的
feh --bg-fill --randomize ~/Pictures/background/* # 这个是设置随机壁纸的哦
......
exec dwm
配置中文输入法
Archlinux安装配置fcitx5 可乐yyds
安装俩常用的软件
sudo pacman -S yay # 不要问我为什么不用paru
# 个人习惯用edge,如果你不喜欢就装chrome
yay -S microsoft-edge-stable-bin visual-studio-code-bin
yay -S google-chrome
Tag样式配置
也就是每一个workspace的标签样式,首先需要安装图标字体,让系统能够显示图标:
sudo pacman -S ttf-nerd-fonts-symbols-2048-em
然后刚刚安装的浏览器就派上用场了(那安装vscode是干嘛的?问就是怕你不会用vim),浏览器进入nerd-fonts的官网 ,进来之后大概长这个样子,然后点击中间的icons:

接下来在这里输入,你想要的图标,比如:terminal,然后选一个喜欢的图标,点击图标右上角弹出的Icon,就成功的将当前图标复制到剪贴板了

然后,不管你用vim还是vscode打开dwm/config.h文件,把你的图标复制到这个位置哦:

然后退出重新编译,再次进入dwm的时候,图标就变了呢
字体配置
上面配置完图标会不会觉得图标很虚,看着看着就觉的字体也很虚?没错,是你的字体太小了,哈哈哈。然后,不管你用vim还是vscode打开dwm/config.h文件,编辑下面的这个数组:
static const char *fonts[] = { "monospace:size=12",
"WenQuanYi Micro Hei:size=12:type=Regular:antialias=true:autohint=true",
"Symbols Nerd Font:pixelsize=16:type=2048-em:antialias=true:autohint=true"}; // 这里没有换行昂,如果你看到换行了,说明你屏幕和你一样小
状态栏配置
先安装这个模块需要的包:sudo pacman -S alsa-utils alsa-firmware
然后克隆suckless搞的状态栏:git clone https://git.suckless.org/slstatus
先进行一些简单的配置吧:
cd slstatus
vim config.h
--------------------------------
static const struct arg args[] = {
/* function format argument */
// { run_command, " %s|", "uname -r | awk -F \"-\" '{print $1}'" },
{ disk_free, "dsk %s|", "/" },
{ cpu_perc, "cpu %s%%|", NULL },
{ ram_perc, "mem %s%%|", NULL },
{ run_command, "vol %s|", "amixer sget Master | awk -F \"[][]\" '/Left:/{print $2}'" },
{ run_command, "spk %s| ", "amixer sget Capture | awk -F \"[][]\" '/Left:/{print $2}'" },
{ datetime, "%s", "%b_%d %T" },
};
以上进行了一下简单的配置,也可以使用nerd fonts图标来替换上述提到的dsk、cpu、mem、vol等。
然后,重新编译sudo make clean install
设置slstatus自动启动
vim .xinitrc
---------------------------
# 在exec dwm的上一行添加
exec slstatus
重新进入dwm之后生效
音量调节
上面状态栏只是能显示音量了(也有可能不能显示,哈哈哈),但是还不能调节音量,接下来进行配置
不管你用vim还是vscode打开dwm/config.h文件,在下面的数组中添加下面几行:然后就可以使用F1进行静音和取消静音了,分别用F2和F3来降低音量和升高音量
static const Key keys[] = {
/* modifier key function argument */
... ...
/* 退出dwm win + shfit + c */
{ MODKEY|ShiftMask, XK_c, quit, {0} },
/* klelee's volume config */
{ MODKEY, XK_F1, spawn, SHCMD("amixer sset Master toggle") },
{ MODKEY, XK_F2, spawn, SHCMD("amixer sset Master 5%- ") },
{ MODKEY, XK_F3, spawn, SHCMD("amixer sset Master 5%+ ") },
... ...
};
这部分可能会遇到问题,比如这个时候你的默认音响不对,那么Master就不能使用。我就懒得写在这里面了,遇到问题要多百度,嘿嘿:amixer: Unable to find simple control 'Master',0
电源管理
我的方案简单粗暴:直接安装xfce4-power-manager
安装:sudo pacman -S xfce4-power-manager
自动启动:
vim .xinitrc
--------------------------------
# 在exec slstatus的上一行添加:
xfce4-power-manager &
重启生效,后面可以使用xfce4-power-manager -c来打开它的配置UI,里面的配置大家都认识,不认识的查牛津字典
状态条颜色配置
不管你用vim还是vscode打开dwm/config.h文件,找到下面这几行,对着改你喜欢的颜色:颜色表 <---- 点击挑色
static const char col_gray1[] = "#9b95c9"; // 状态条底色
static const char col_gray2[] = "#444444"; // 当static const unsigned int borderpx不为0时,非活动窗口外边框颜色
static const char col_gray3[] = "#bbbbbb"; // 当前非活动的title字体颜色
static const char col_gray4[] = "#eeeeee"; // 当前活动的title字体颜色
static const char col_cyan[] = "#f391a9"; // title底色
static const char *colors[][3] = {
/* fg bg border */
[SchemeNorm] = { col_gray3, col_gray1, col_gray2 },
[SchemeSel] = { col_gray4, col_cyan, col_cyan },
};
截图
安装flameshot ,一款神级截图软件
sudo pacman -S flameshot
不管你用vim还是vscode打开dwm/config.h文件,# 在static const Key keys[] 中添加下面这条,后面的截图使用alt+p
static const Key keys[] = {
/* modifier key function argument */
... ...
/* 截屏 需要安装flameshot */
{ MODKEY1, XK_p, spawn, SHCMD("flameshot gui") },
... ...
};
系统托盘解决方案
dwm的系统托盘需要打补丁来解决,但是目前版本给的补丁直接合进去一般都会报错,不是和不进去就是合进去编译报错。因此你有两种选择:
- 解决编译报错
- 手动合入
我选择2
下载补丁:https://dwm.suckless.org/patches/systray/dwm-systray-6.3.diff
diff文件可以用vscode打开,方便复制。对比dwm/config.h 和 dwm/dwm.c 比较差异,然后复制粘贴就可以了。
Archlinux + Dwm 配置流程的更多相关文章
- QT特供 CGAL配置流程(基于QT5+VS2015)
最近做的QT项目涉及计算几何库,需要用到CGAL,其配置着实麻烦,而且相互关联的软件也存在版本兼容一类的问题,在这里就对其配置流程做一些整理说明,以便后来者能够少些烦恼.(注:以下使用Win10作说明 ...
- 转载-Linux下svn搭建配置流程
Linux下svn搭建配置流程 一. 源文件编译安装.源文件共两个,为: 1. 下载subversion源文件 subversion-1.6.1.tar.gz http://d136 ...
- Archlinux 安装配置指导 2015-05-24
因为用的Linode VPS的系统是Archlinux的,想在本地弄个系统做测试用,这样比较方便.然后发现自己在6年前做的一个Archlinux 安装配置Flash,好怀念的赶脚. 时过进迁,没想到A ...
- win10下vagrant+centos7 rails虚拟开发机配置流程
此文写于2017.8.21 在写本文前,笔者已经尝试了多种其他的替代方法,例如wmware虚拟机安装kylin.然而发现总是还有各种问题.经大佬指点安装了virtualbox + vagrant.于是 ...
- HI3531的DDR3配置流程
DDR3 初始化配置流程 系统上电之后,必须先完成DDR3 SDRAM 的初始化操作,系统才能访问DDR3 SDRAM.在进行初始化之前需要注意以下几点: 对DDR3 SDRAM 进行上电操作时,需要 ...
- Linux下双网卡Firewalld的配置流程
实验室拟态存储的项目需要通过LVS-NAT模式通过LVS服务器来区隔内外网的服务,所以安全防护的重心则落在了LVS服务器之上.笔者最终选择通过firewalld放行端口的方式来实现需求,由于firew ...
- Java采用RSA加密及解密技术的有关Maven项目的配置流程:
第一步: 获得RSA公钥私钥(秘钥格式:PKCS#8 ,测试使用的是无私钥密码的) 公钥: -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4G ...
- xampp+vscode开发php的配置流程
一.所需文件 1.xampp集成服务器(个人使用7.1.7)https://www.apachefriends.org/download.html 2.vscode https://code.visu ...
- GPON介绍及华为OLT网关注册配置流程(转)
原文地址:https://blog.csdn.net/zhouzxi/article/details/79244862 一.GPON介绍 1.GPON简介 随着技术的发展,光纤变得“便宜又好用”,因此 ...
随机推荐
- 【C++】实现D3D9 的 Inline hook
[C++]实现D3D9 的 Inline hook 简单介绍一下HOOK原理: 函数调用的过程大致是 先push 参数 进去,再执行 call 函数地址 ,进入函数.此时将所调用的函数的前五个字节 ...
- 【Java】学习路径55-练习:制作一个聊天室(多线程、UDP、双向传输数据)
创建四个类,实现双向聊天的功能. 接收线程: import java.io.IOException; import java.net.*; public class ReceiveThread imp ...
- 自定义View3-水波纹扩散(仿支付宝咻一咻)实现代码、思想
PS:自定义view篇-水波纹实现 效果:水波纹扩散 场景:雷达.按钮点击效果.搜索等 实现:先上效果图,之前记得支付宝有一个咻一咻,当时就是水波纹效果,实现起来一共两步,第一画内圆,第二画多个外圆, ...
- 踩坑之旅:配置 ROS 环境
以下内容为本人的著作,如需要转载,请声明原文链接微信公众号「englyf」https://www.cnblogs.com/englyf/p/16660252.html 最近在学习机器人相关的导航算法, ...
- KingbaseES V8R6C5 通过securecmdd工具手工脚本部署集群
案例说明: 对于KingbaseES V8R6C5版本在部集群时,需要建立kingbase.root用户在节点间的ssh互信,如果在生产环境禁用root用户ssh登录,则通过ssh部署会失败:V8R6 ...
- CMU 15-445 Project 0 实现字典树
原文链接:https://juejin.cn/post/7139572163371073543 项目准备 代码.手册 本文对应 2022 年的课程,Project 0 已经更新为实现字典树了.C++1 ...
- 第六章:Django 综合篇 - 9:序列化 serializers
Django的序列化工具让你可以将Django的模型'翻译'成其它格式的数据.通常情况下,这种其它格式的数据是基于文本的,并且用于数据交换\传输过程. 一.序列化数据 Django为我们提供了一个强大 ...
- 5.使用nexus3配置npm私有仓库
当我们运行前端项目的时候,常常在解决依赖的时候会加上一个参数npm install --registry=https://registry.npm.taobao.org将源指定为淘宝的源,以期让速度加 ...
- 5_项目实战MyShop
一. 网上商城 1.1 商城类别 B2B 商家对商家 B2C 商家对客户 C2C 客户对客户 O2O 线上线下相结合 1.2 商城常见模块 后台常见功能模块 商品管理 包括后台商品库存管理, 上货, ...
- python运行以及入门语法基础
pycharm下载与使用 1.pycharm官网下载(直接到pycharm下载地址) http://www.jetbrains.com/pycharm/download/#section=window ...