Arch 使用笔记
OHHH.从今天开始在虚拟机练习使用ArchLinux
11,22 2021
安装Linux
按照该 ArchLinux基础安装 教程进行安装
用户管理
增加用户
useradd -m -G wheel longjie
参数:
- -m 为该新用户创建自己的主目录
- -G 为该新用户加入用户组
为该新用户设置密码
passwd longjie
赋予sudo权限
将用户添加到Arch Linux中的sudoers list中
usermod -aG wheel longjie
参数:
- a 不删除其它已加入的用户组
- G 用户组
使用 vim /etc/sudoers
编辑sudoers文件
查找并取消注释以下行(只需删除 # 行首的符号)
%wheel ALL=(ALL) ALL
使用以下命令检验用户是否为具有sudo权限
sudo -lU longjie
输出:
User ostechnix is not allowed to run sudo on archlinux.
该用户尚未被允许执行管理任务User ostechnix may run the following commands on archlinux:(ALL) ALL
该用户允许执行管理任务
取消sudo权限及删除用户
从用户组中删除用户
gpasswd -d longjie wheel
如果您已将用户添加到 sudo 组中,您也需要将其从该组中删除。
gpasswd -d longjie sudo
删除用户及其该用户的主目录
userdel -r longjie
用户组管理
将用户加入用户组
usermod -aG 组名 longjie
查看用户所在组
groups longjie
删除用户组
groupdel 组名
DWM - 窗口管理器
以下所有过程都是以非root用户执行的,所以会需要用到
sudo
命令来提权操作。
安装DWM
安装Dwm必要依赖环境Xorg、Xorg-xinit和git工具
sudo pacman -S xorg xorg-xinit git
使用git克隆官方仓库的Dwm本体、st终端和dmenu程序启动菜单
git clone https://suckless.org/dwm
git clone https://suckless.org/st
git clone https://suckless.org/dmenu
分别进入上面三个包的目录并进行编译
cd ~/目录名 && sudo make clean install
复制Xorg的xinitrc文件到家目录
cp /etc/X11/xinit/xinitrc ~/.xinitrc
然后删除.xinitrc最后5行代码,并在最后加入 exec dwm
vim ~/.xinitrc
OK! 至此DWM安装完毕,输入 startx
即可进入DWM窗口管理器了。
初识DWM配置文件(config.h)
美化和配置DWM窗口管理器都是通过修改源码和配置文件(config.h)并编译来实现美化和配置。
config.def.h 是默认的配置文件,而 config.h 是编译后生成的配置文件。
基本上,都是通过各种组合快捷键来实现各种功能和操作。
sudo make clean install
编译后需要按 Alt + Shift + Q 来退出DEM,然后再输入startx
重新进入DWM。
以下是config.h的大致内容:
/* 有关版权和许可证详细信息,请参阅许可证文件。*/
/* 外观 */
static const unsigned int borderpx = 1; /* 窗口的边框像素 */
static const unsigned int snap = 32; /* 捕捉像素 */
static const int showbar = 1; /* 0 表示无条形 */
static const int topbar = 1; /* 0 表示底部栏 */
static const char *fonts[] = { "monospace:size=10" };
static const char dmenufont[] = "monospace:size=10";
static const char col_gray1[] = "#222222";
static const char col_gray2[] = "#444444";
static const char col_gray3[] = "#bbbbbb";
static const char col_gray4[] = "#eeeeee";
static const char col_cyan[] = "#005577";
static const char *colors[][3] = {
/* fg bg border */
[SchemeNorm] = { col_gray3, col_gray1, col_gray2 }, /* 工作空间没有被选中时候*/
[SchemeSel] = { col_gray4, col_cyan, col_cyan }, /* 工作空间被选中时候*/
};
/* 顶栏的标签 */
static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
static const Rule rules[] = {
/* xprop(1):
* WM_CLASS(STRING) = instance, class
* WM_NAME(STRING) = title
*/
/* class instance title tags mask isfloating monitor */
{ "Gimp", NULL, NULL, 0, 1, -1 },
{ "Firefox", NULL, NULL, 1 << 8, 0, -1 },
};
/* 布局 */
static const float mfact = 0.55; /* 主区域大小的比例 [0.05..0.95] */
static const int nmaster = 1; /* number of clients in master area */
static const int resizehints = 1; /* 1 means respect size hints in tiled resizals */
static const int lockfullscreen = 1; /* 1 will force focus on the fullscreen window */
static const Layout layouts[] = {
/* symbol arrange function */
{ "[]=", tile }, /* 堆叠模式 */
{ "><>", NULL }, /* 浮动模式 */
{ "[M]", monocle }, /* 既不是堆叠也不是浮动,每个应用按启动顺序叠加并以全屏显示,就像PS的图层那样 */
};
/* 按键定义 */
#define MODKEY Mod1Mask /* 定义所有组合快捷键的基础键MODKEY即键盘上Alt键,把Mod1Mask改为Mod4Mask即把Alt键改为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} },
/* helper for spawning shell commands in the pre dwm-5.0 fashion */
#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
/* 命令 */
static char dmenumon[2] = "0"; /* dmenucmd 的组件,在 spawn() 中操纵 */
static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, NULL };
static const char *termcmd[] = { "st", NULL };
static Key keys[] = {
/* modifier key function argument */
{ MODKEY, XK_p, spawn, {.v = dmenucmd } }, // Alt + p 打开dmenu菜单
{ MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } }, // Alt + Shift + Enter 打开st终端
{ MODKEY, XK_b, togglebar, {0} }, // Alt + B 隐藏顶栏
{ MODKEY, XK_j, focusstack, {.i = +1 } }, // Alt + J 切换窗口焦点
{ MODKEY, XK_k, focusstack, {.i = -1 } }, // Alt + k 同上
{ MODKEY, XK_i, incnmaster, {.i = +1 } }, // Alt + I 切换主区域比例
{ MODKEY, XK_d, incnmaster, {.i = -1 } }, // Alt + D 同上
{ MODKEY, XK_h, setmfact, {.f = -0.05} }, // Alt + H 更改主区域的宽度即大小
{ MODKEY, XK_l, setmfact, {.f = +0.05} }, // Alt + L 同上
{ MODKEY, XK_Return, zoom, {0} }, // Alt +
{ MODKEY, XK_Tab, view, {0} }, // Alt +
{ MODKEY|ShiftMask, XK_c, killclient, {0} }, // Alt + Shift + C 关闭程序
{ MODKEY, XK_t, setlayout, {.v = &layouts[0]} }, // Alt + T 切换布局为堆叠模式
{ MODKEY, XK_f, setlayout, {.v = &layouts[1]} }, // Alt + F 切换布局为浮动模式
{ MODKEY, XK_m, setlayout, {.v = &layouts[2]} }, // Alt + M 切换布局为不叠不浮模式
{ MODKEY, XK_space, setlayout, {0} }, // Alt +
{ MODKEY|ShiftMask, XK_space, togglefloating, {0} }, // Alt +
{ MODKEY, XK_0, view, {.ui = ~0 } }, // Alt +
{ MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } }, // Alt +
{ MODKEY, XK_comma, focusmon, {.i = -1 } }, // Alt +
{ MODKEY, XK_period, focusmon, {.i = +1 } }, // Alt +
{ MODKEY|ShiftMask, XK_comma, tagmon, {.i = -1 } }, // Alt +
{ MODKEY|ShiftMask, XK_period, tagmon, {.i = +1 } }, // Alt +
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)
{ MODKEY|ShiftMask, XK_q, quit, {0} }, // Alt + Shift + q 退出DWM
};
/* 按钮定义 */
/* click can be ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */
static Button buttons[] = {
/* click event mask button function argument */
{ ClkLtSymbol, 0, Button1, setlayout, {0} },
{ ClkLtSymbol, 0, Button3, setlayout, {.v = &layouts[2]} },
{ ClkWinTitle, 0, Button2, zoom, {0} },
{ ClkStatusText, 0, Button2, spawn, {.v = termcmd } },
{ ClkClientWin, MODKEY, Button1, movemouse, {0} },
{ ClkClientWin, MODKEY, Button2, togglefloating, {0} },
{ ClkClientWin, MODKEY, Button3, resizemouse, {0} },
{ ClkTagBar, 0, Button1, view, {0} },
{ ClkTagBar, 0, Button3, toggleview, {0} },
{ ClkTagBar, MODKEY, Button1, tag, {0} },
{ ClkTagBar, MODKEY, Button3, toggletag, {0} },
};
其它快捷键:
Crtl + Shift + C/V 复制/粘贴(可以在终端使用)
Ctrl + L 清空终端(与clear一样)
Ctrl + PageUP/PageDown 放大/缩小终端字号
美化/配置DWM
修改分辨率
查看分辨率设置
xrandr -g
修改分辨率
xrandr --output Virtual-1 --mode 分辨率(1920x1080) --rate 刷新率(60.00)
括号 () 内为我的配置
设置壁纸
安装feh
sudo pacman -S feh
设置壁纸
feh --bg-fill 图片目录/图片名
随机壁纸设置方式
feh --bg-fill --randomize 图片目录/*
启动项配置
把刚才那些设置命令都写进~/.xinitrc文件中,这样每次启动时都会自动设置好;
注意! 那些命令要写在 exec dwm
的前面!
sudo vim ~/.xinitrc
以下命令是要增加的内容: 井号 # 为注释,可以不写
# 设置分辨率
xrandr --output Virtual-1 --mode 1920x1080 --rate 60.00
# 设置壁纸
feh --bg-fill 图片目录/图片名
exec dwm
VirtualBox增强工具
安装VirtualBox客体机插件
sudo pacman -S virtualbox-guest-utils
启动VirtualBox内核模块
systemctl enable vboxservice.service
systemctl start vboxservice.service
第一行命令是系统启动后开启的程序
启动VirtualBox客体机全部服务
VBoxClient-all
字体
下载安装字体
sudo pacman -S wqy-microhei ttf-nerd-fonts-symbols
编辑config.h文件配置字体
sudo vim ~/dwm/config.h
在第8行的*font[]
增加以下内容:
{ "monospace:size=10",
"WenQuanYi Micro Hei:size=10;type=Regula;antialias=true;autohint=true",
"Symbols Nerd Font:pixelsize=14;type=2048-em;antialias=true;autohint=true" };
antialias 抗锯齿 | autohint 轮廓增强
查找已安装字体:
fc-list # 查看所有已安装的字体
fc-list | grep "WenQuanYi" # 将结果重定向到具体字体
编译修改后的配置文件并重启DWM,记得这是在dwm目录下进行的
sudo make clean install
按Alt + Shift + Q重启DWM,输入startx
重新进入DWM
Nerd字体图标的食用方法:
打开https://www.nerdfonts.com/cheat-sheet该网页即可查看各图标
找到要用的图标,有两种方法:
- 使用右下角的Unicode码,在要用的地方输入
\u + 编码
,例如:\uf303
该Unicode在Nred Font中是一个ArchLinux的图标- 直接复制图标,把鼠标移到图标并点击右上角的Icon即可复制
可以按照自己的想法,使用这些图标去美化顶栏的标签栏,更改后记得编译并重启DWM
状态栏配置
使用git克隆官方仓库的slstatus包
git clone https://git.suckless.org/slstatus
编译安装并写进.xinitrc文件
cd ~/slstatus && sudo make clean install
sudo vim ~/.xinitrc
依旧是在exec dwm
的前面加入exec slstatus &
,然后重启即可。
配置slstatus
这里我就不详细记了
(懒
以下是我的配置内容:
vstatic const struct arg args[] = {
/* 方法 格式 参数 */
/* function format argument */
{ ram_perc, "%s%% ", NULL },
{ cpu_perc, "%s%% ", NULL },
{ disk_free, "%s ", "/" },
{ run_command, "%s | ", "uname -r | awk -F \"-\" '{ print $1 }'"},
{ datetime, "%s", "%F %T" },
};
- 方法是上面提供的方法,但不限于上面提供的
- 格式使用的是C语言的格式化说明符
- 参数是指定的
开始使用
使用Alt + P打开dmenu程序启动菜单,输入要启动的程序名并回车即可启动
yay包管理
wget https://archlinuxstudio.github.io/ArchLinuxTutorial/res/yay-bin-11.1.0-1-x86_64.pkg.tar.zst
sudo pacman -U yay-bin-11.1.0-1-x86_64.pkg.tar.zst
Fcitx5输入法
安装Fcitx5
sudo pacman -S fcitx5-im #基础包组
sudo pacman -S fcitx5-chinese-addons #官方中文输入引擎
增加拼音键盘
通过dmenu输入fcitx5-configtool打开设置,在右边的搜索框里搜pinyin,找到pinyin选中并点击中间中部位置的向左按钮即可增加拼音键盘。
按Ctrl + Shift 或 Ctrl + Space 即可更换键盘