下图是freebsd吧的雪白的野蔷薇统计的freebsd上的一些窗口管理器,名称后面跟的数值表示“总大小/驻留内存大小”。
这对于选择占用系统资源最小的窗口管理器非常有参考意义。(2022/6/10)
本节学习目标是在FreeBS上安装dwm/i3wm、中文输入法以及某些常用软件。
dwm是Dynamic Window Manager,动态窗口管理器,据称是占用系统资源最少的窗口管理器。i3wm则是平铺窗口管理器。
手动设定无线网卡:
- 修改/etc/rc.conf文件,加入以下行:
wlans_iwm0="wlan0"
ifconfig_wlan0="WPA SYNCDHCP"
- 修改/etc/wpa_supplicant.conf文件,加入以下行:
network={
ssid="ssid"
psk="password"
}
- 重启网络接口
# service netif restart
新装系统,停掉sendmail,需要在/etc/rc.conf中加入以下行:
sendmail_enable="NONE"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"
重启后,内存占用10M左右(刚开机11M,后降至9036K)Active、728K Inact、103M Wired、25M Buf。
安装xorg和slim
xorg是X Window System的底层实现,它仅提供X Server,几乎所有的window manager都是基于xorg的。
slim是Simple Login Manager的缩写,即简单登录管理器。用来登录窗口管理器。理论上并不是必须的,也可以使用其他登录管理器,但这个是最小的。
# pkg install xorg slim
完成以上安装后需要修改/etc/rc.conf文件,加入以下两行:
dbus_enable="yes"
slim_enable="yes"
对于有些使用intel显卡的电脑,运行startx时会提示:
(EE)
Fatal server error:
(EE) Cannot run in framebuffer mode. Please specify busIDs for all framebuffer devices
(EE)
......
这可能需要另外安装drm-fbsd13-kmod(它同时会安装gpu-firmware-kmod),然后在/etc/rc.conf中加入kld_list="i915kms"。
或者安装xf86-video-intel,然后启动startx可以进入图形界面。
至于为什么xf86-video-intel可以替换内核加载i915kms,我就不是很清楚了。
安装完drm-fbsd13-kmod后有提示:
- For amdgpu: kld_list="amdgpu"
- For Intel: kld_list="i915kms"
- For radeonkms: kld_list="radeonkms"
启动dbus服务后Active变为9996K,启动slim服务后Active变为47M(由于需要ssh登录查看,故此数值需要减去1~2M)
关于NVIDIA显卡
此部分更新于2023年7月13日。
NVIDIA官网提供适配FreeBSD的显卡驱动,但此显卡依赖gtk3,所以要在安装完xorg后安装gtk3。否则在安装完驱动后执行startx时会提示:
shared object "libgtk-3.so.0" not found, required by "libnvidia-gtk3.so.535.54.03"
shared object "libnvidia-gtk3.so" not found, required by "nvidia-settings"
shared object "libgtk-x11-2.0.so.0" not found, required by "libnvidia-gtk2.so.535.54.03"
shared object "libnvidia-gtk2.so" not found, required by "nvidia-settings"
然后去官网下载对应型号的驱动。下载后解压:
tar zxf NVIDIA-FreeBSD-x86_64-535.54.03.tar.xz
然后进入解压的目录,运行:
# make && make install
安装完成后执行以下命令生成新的xorg配置文件:
# nvidia-xconfig
完成以上操作后,运行startx即可进入图形界面。
使用以下命令查GPU温度:
nvidia-smi -q -d TEMPERATURE
关于声卡
此部分更新于2023年7月14日
如果主板自带声卡,系统自动将主板后置音频输入/输出口作为默认接口。
使用命令cat /dev/sndstat可以查看当前系统有哪些音频设备:
% cat /dev/sndstat
Installed devices:
pcm0: <NVIDIA (0x0093) (HDMI/DP 8ch)> (play)
pcm1: <NVIDIA (0x0093) (HDMI/DP 8ch)> (play)
pcm2: <NVIDIA (0x0093) (HDMI/DP 8ch)> (play)
pcm3: <NVIDIA (0x0093) (HDMI/DP 8ch)> (play)
pcm4: <Realtek ALC1220 (Rear Analog 5.1/2.0)> (play/rec) default
pcm5: <Realtek ALC1220 (Front Analog)> (play/rec)
pcm6: <Realtek ALC1220 (Rear Digital)> (play)
No devices installed from userspace.
编辑/etc/sysctl.conf文件,加入以下行指定默认设备:
hw.snd.default_unit=n
其中n为设备编号,例如上面例子中前置音频口(Front Analog)对应的是pcm5,若要设置其为默认音频口,则n应写为5。
编辑完成后重启电脑使设置生效。
也可以用命令sysctl hw.snd.default_unit=n使立即生效默认音频口。
在/etc/sysctl.conf中加入以下行可以设置默认音量:
hw.snd.vpc_0db=75
也可以使用命令sysctl hw.snd.vpc_0db=75进行调整。
有些桌面系统(例如MATE、xfce)虽然有声音设置界面,但实际上并没有效果;而某些(例如kde、gnome)则有更强且能用的声音设置界面。
安装dwm或i3wm
使用以下命令安装dwm:
pkg install dwm dwmblocks
其中dwmblocks可以在屏幕右上角显示主机名和系统时间。
然后创建~/.xinitrc文件,并加入以下行:
dwm &
dwmblocks
以上实际上是告诉系统,使用slim登录后执行两条命名:dwm和dwmblocks,两条命令之间要加&符号。
此时启动dbus服务和slim服务就可以打开登录界面,登陆后远程用ssh登录,内存消耗为58M(Active值)。
使用以下命令安装i3wm:
# pkg i3 i3status dmenu
dmenu是为dwm设计的X11菜单应用,它不是i3wm依赖的包,需要单独安装。如果不安装的话,i3无法找到菜单管理器,按win+c将没有任何反应。
安装完成后需要创建并编辑~/.xinitrc文件,加入以下内容:
i3
然后启动dbus服务和slim服务打开登录界面,登陆后远程用ssh登录,内存消耗为60M(Active值)。
设置屏幕分辨率
在图形界面下(比如dwm或i3)打开终端,运行命令xrandr可以显示当前显示屏的分辨率以及可接受的分辨率:
hostname% xrandr
Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 16384 x 16384
HDMI-1 connected primary 1920x1080+0+0 (normal left inverted right x ax1s y ax1s) 708mm x 398mm
1920x1080 60.00*+ 50.00 59.94 30.00 25.00 24.00 29.97 23.98
1600x1200 60.00
1680x1050 59.95 59.88
......
DP-1 disconnected(normal left inverted right x ax1s y ax1s)
以上表示当前的分辨率为1920x1080,在HDMI-1接口连接了一个显示器。
如果要修改分辨率,可以在/usr/local/etc/X11/xorg.conf.d/中创建文件screen-resolution.conf,内容如下:
Section "Screen"
Identifier "Screen0"
Device "Card0"
SubSection "Display"
Modes "800x600"
EndSubSection
EndSection
如果仅针对某个用户设置分辨率,可以在该用户的~/.xinitrc文件中加入以下行:
xrandr --output HDMI-1 --mode 800x600
此行后面没有 & 符号。实测此行不能放在dbus-launch行后面,具体原因不知。建议将此行放在第一行。
双屏示例:
假设主屏接eDP-1接口,副屏接HDMI-1接口,副屏位于主屏右侧,竖置,可使用以下命令:
xrandr --output HDMI-1 --mode 1920x1080 --right-of eDP-1 --rotate left
执行后会在副屏创建一个竖直的“桌面”。
--mode 1920x1080设置副屏的分辨率(以横屏时为标准),可根据xrandr命令输出的信息确定显示屏支持的分辨率。
--right-of eDP-1表示副屏在主屏的右侧进行扩展,可用选项有:
- --left-of 另一个屏幕
在左侧扩展
- --right-of 另一个屏幕
在右侧扩展
- --above 另一个屏幕
在上面扩展
- --blow 另一个屏幕
在下面扩展
- --same-as 另一个屏幕
与另一个屏幕相同
--rotate left表示逆时针旋转90度。可用选项有:
- nomal
正常
- left
逆时针选择90度
- right
顺时针选择90度
- inverted
旋转180度
如果此时拔掉副屏的线或关闭副屏,原本在副屏的“桌面”不会自动回到主屏。
使用命令xrandr -o normal可回到初始状态,被扩展的“桌面”会回到主屏幕。即使副屏还在,也仅在主屏显示。
三屏及更多屏未实测,估计原理差不多。
安装中文输入法及中文字体
中文输入法选用fcitx5,中文字体选用花园明朝字体,安装命令如下:
pkg install fcitx5 fcitx5-configtool zh-fcitx5-chinese-addons hanazono-fonts-ttf
注意,如果仅安装fcitx5的话,配置工具fcitx5-configtool及中文输入法是没有的。
安装完成后,fcitx5会有提示如何启用输入法,对于csh,可以编辑~/.cshrc文件,加入以下行:
setenv LC_ALL zh_CN.UTF-8
setenv XMODIFIERS @im=fcitx
setenv GTK_IM_MODULE fcitx/xim
setenv QT_IM_MODULE fcitx
hanazono-fonts-ttf是一款基于日语的汉字字体,花园明朝字体,据称几乎收录了所有汉字字形(这一点百度贴吧雪白的野蔷薇验证过了)。缺点是字形以日本字形为准,有些字不符合中文书写规范。
中文字体还可以选择google开发的中文字体noto-sc;或文泉驿中文字体(wqy-fonts)。
另外,如果只装了花园明朝字体,dmenu的字体会比较大,看起里不是很舒服。noto和文泉驿随意装上一个即可解决。
设置启用中文输入法
要想启用中文输入法,需要在~/.xinitrc中加入以下行:
dbus-launch --exit-with-session fcitx5
如果仅仅加入fcitx5,则只有一些基本程序可以使用输入法,多数程序甚至包括fictx5-configtool都无法正常运行,会提示dbus未连接。
Cannot connect to Fcitx by Dbus, is Fcitx running?
登入系统后按Alt+p打开dmenu(对于i3,是win+d),输入fcitx5-configtool然后回车,就可以打开fcitx5的配置工具,使用它添加需要的输入法。
zh-fcitx5-chinese-addons带的中文输入法包括:自然码、五笔字型、五笔拼音、晚风、双拼、拼音、二笔、电报码、仓颉、冰蟾全息。
注意,上面一句加入~/.xinitrc时,需要在现有的最后一个命令后面添加&符号。
设置xterm显示中文
虽然st终端(dwm中使用Alt+Shift+Enter叫出;i3wm中使用win+Enter叫出)可以正常显示汉字,但是xterm默认情况下对汉字支持并不好,一些汉字会显示为虚线的方框,比如“测试”。
要解决这个问题,需要先创建一个文件~/.Xresources,内容如下:
xterm*faceName:DejaVu Sans Mono:pixelsize=12
其中DejaVu Sans Mono是系统自带的字体(位于/usr/local/share/fonts/dejavu目录中),可以用来显示汉字。也可以换成/usr/local/share/fonts/中的其他字体,但好像只有名称中包含Mono的字体才行。
pixelsize指定xterm中显示的字体大小。
然后在~/.xinitrc中加入一行:
xrdb -merge ~/.Xresources
完整的~/.xinitrc文件内容
对于dwm,完整的~/.xinitrc文件内容如下:
dwm &
dwmblocks &
xrdb -merge ~/.Xresources &
dbus-launch --exit-with-session fcitx5
对于i3wm,完整的~/.xinitrc文件内容如下:
i3 &
xrdb -merge ~/.Xresources &
dbus-launch --exit-with-session fcitx5
以上配置完成后,
若使用dwm, 则登录后内存占用86M Active, 6024K Inact, 228M Wired, 143M Buf
若使用i3wm,则登录后内存占用92M Active, 7132K Inact, 234M Wired, 148M Buf
以上,dwm似乎占优,但相差不多。
FreeBSD14中文输入法
由于FreeBSD14将sh作为root的默认shell环境,故以后创建账号时按默认选择sh。
如此,在设置中文输入法时仅需在~/.xinitrc前面加入以下行:
export LC_ALL=zh_CN.UTF-8
export XMODIFIERS='@im=fcitx'
export GTK_IM_MODULE=fcitx/xim
export QT_IM_MODULE=fcitx/xim
无需修改~/.shrc文件。
常用软件
经实测,文件管理器使用dolphin比较好,功能多。
办公软件似乎没什么可以挑的,就libreoffice,注意,FreeBSD下要安装zh_CN-libreoffice才会有中文界面。
网页编辑软件使用bluefish。
注意bluefish有个坑,它的“自动完成”的快捷键是CTRL+space,与中文输入法冲突。所以要修改成其他的。步骤如下:
菜单:编辑=》首选项
编辑器选项=》自动完成与参考文档
点击快捷键组合的Control+space按钮,然后设置成其他快捷键组合,比如Shift+空格(有些组合不可用,要多试)
然后按确定键即可。
浏览器则推荐使用chromium。几款号称轻量级的浏览器实际对比如下(dwm环境中测试):
midori 24个包 下载24M,装好129M b站打开一个视频,内存消耗在350~400M。关闭后内存恢复至97M。
falkon-qtonly 10个包 下载48M,装好171M b站打开一个视频,内存消耗在560~580M。关闭后内存恢复至134M。
firefox 3个包 下载57M,装好250M b站打开一个视频,内存消耗在670~710M。关闭后内存恢复至102M。
qutebrowser 50个包 下载80M,装好325M 不会用
falkon 45个包 下载81M,装好466M b站打开一个视频,内存消耗在510~530M。关闭后内存恢复至154M。
chromium 14个包 下载90M,装好339M b站打开一个视频,内存消耗在340~360M。关闭后内存恢复至86M。
虽然chromium安装包最大,但它对b站视频支持最好,且关闭后内存回收最到位。
3D建模软件blender,可设置为中文界面。
画图软件gimp,根据环境自动显示中文界面。
远程桌面客户端可用remmina-lite。
但它会新开窗口连接远程电脑,默认情况下会在remmina面板旁边新开一个窗口与面板并列,需要通过组合键Alt+Shift+[数字]将远程桌面移动到其他标签页。
python编程工具可以使用spyder3:
pkg install py38-spyder py38-chardet
使用spyder3打开它,会提示5.3.0版本可用,但没有对应的pkg包。
窗口半透明特效用compton实现,安装compton后,在当前用户的家目录.xinitrc中i3 &行后面加入一行compton &即可,例如:
i3 &
compton &
xrdb -merge ~/.Xresources &
dbus-launch --exit-with-session fcitx5
dwm常用组合键
dwm组合键 |
功效 |
Alt+Shift+Enter |
打开st终端 |
Alt+Shift+c |
关闭当前窗口 |
Alt+Shift+q |
退出当前登录freebsd中无效,会关闭dwmblocks而不会退出当前登录 |
Alt+D |
横向排列窗口 |
Alt+I |
纵向排列窗口 |
Alt+Enter |
窗口互换位置 |
Alt+num |
切换标签页 |
Alt+Shift+num |
将当前窗口移动到对应标签页 |
Alt+T |
平铺模式(默认) |
Alt+M |
单窗口模式(当前窗口最大化) |
Alt+F |
浮动模式(似乎无效) |
Alt+J/Alt+K |
在当前标签页中的窗口间切换 |
Alt+H/Alt+L |
改变窗口宽度 |
Alt+空格/Alt+Shift+空格 |
窗口切换 |
Ctrl+Alt+Fn(n=1~8) |
切换至字符终端 |
Ctrl+Alt+F9 |
回到dwm |
i3的$mod组合键图:
i3的Shift+$mod组合键图:
dwm中终端(xterm、st)复制粘贴的方法:
用鼠标左键选择要复制的文字(双击可选中一个单词),然后点击鼠标中键即可将选中的文字复制到当前光标所在位置。
v2ray
安装v2ray并将其加入rc.conf:
pkg install v2ray
sysrc v2ray_enable=yes
若此时启动v2ray服务会收到以下提示:
Starting v2ray.
panic: qtls.ClientHelloInfo doesn't match
goroutine 1 [running]:
github.com/marten-seemann/qtls-go1-15.init.0()
github.com/marten-seemann/qtls-go1-15/unsafe.go:20 +0x132
经查,需要下载最新版的v2ray:
fetch https://github.com/v2fly/v2ray-core/releases/download/v4.31.0/v2ray-freebsd-64.zip
解压缩到当前目录:
unzip v2ray-freebsd-64.zip
以root身份将对应的文件复制到对应的目录:
mv geoip.dat /usr/local/share/v2ray
mv geosite.dat /usr/local/share/v2ray
mv v2ctl /usr/local/bin/v2ctl
mv v2ray /usr/local/bin/v2ray
将config.json文件上传至/usr/local/etc/v2ray/中,覆盖掉原有的文件。
启动v2ray:
service v2ray start
由于chromium使用系统代理(也就是说它自己没有设置代理的地方),但是它又不支持在FreeBSD中设置系统代理,故需要在~/.cshrc中加入以下行:
setenv HTTP_PROXY 127.0.0.1:10809
setenv HTTPS_PROXY 127.0.0.1:10809
对于firefox,可以设置代理:
http&https: 127.0.0.1:10809
socks host: 127.0.0.1:10808
debian+dwm
最简安装debian,只选择ssh服务器和标准系统包。
安装过程中会默认使用DHCP获取IP地址,安装完成后需要修改/etc/network/interfaces文件,将对应网卡的ip改为固定:
allow-hotplub enp0s25 (此句原本就有)
auto enp0s25
iface enp0s25 inet static
address 192.168.5.161
netmask 255.255.240.0
gateway 192.168.15.245
然后运行一下命令重启网卡:ifdown enp0s25 && ifup enp0s25
以root账户登录,修改debian源:
sed -i 's/security.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
sed -i 's/-security//g' /etc/apt/sources.list
有些软件在bullseye中没有,需要将bullseye改为buster,或者添加一句。
另外,sources.list中有一句deb cdrom需要屏蔽掉。
最终此文件内容如下:
deb http://mirrors.ustc.edu.cn/debian bullseye main contrib
deb http://mirrors.ustc.edu.cn/debian buster main contrib
deb-src http://mirrors.ustc.edu.cn/debian bullseye main contrib
然后运行以下命令:
apt update && apt upgrade
完成以上操作后,安装sudo,并使用visudo将某用户添加进sudoer。
安装软件:
sudo apt install xorg dwm fonts-noto-cjk-extra fcitx5 fcitx5-chinese-addons chromium alsa-utils
然后重启,登录,运行startx即可进入dwm桌面环境。
注意事项:
- 如果不安装alsa-utils可能会没有声音。
- 登录后需要执行fcitx5-configtool配置添加中文输入法。
debian的xterm也面临着某些汉字无法显示的问题,可以修改/etc/X11/app-defaults/XTerm文件(全局生效),或者创建~/.Xdefaults文件(仅针对指定用户)。在文件中加入以下行:
xterm*faceName:DejaVu Sans Mono:antialias=True:pixelsize=18
因为DejaVu Sans Mono是随xorg一起装上的,所以并不需要安装其他字体。
如果要使用花园明朝字体,可以先安装它:
# apt install fonts-hanazono
使用命令fc-list可以列出当前系统中所有字体,例如:
root@X61s:~# fc-list
/usr/share/fonts/truetype/dejavu/DejaVuSerif-Bold.ttf: DejaVu Serif:style=Bold
/usr/share/fonts/truetype/dejavu/DejaVuSansMono.ttf: DejaVu Sans Mono:style=Book
/usr/share/fonts/truetype/fonts-japanese-mincho.ttf: HanaMinA,花園明朝A:style=Regular
/usr/share/fonts/opentype/noto/NotoSerifCJK-Bold.ttc: Noto Serif CJK SC:style=Bold
/usr/share/fonts/X11/Type1/c0649bt_.pfb: Bitstream Charter:style=Italic
/usr/share/fonts/opentype/noto/NotoSerifCJK-Bold.ttc: Noto Serif CJK TC:style=Bold
其中花园王朝A字体的名称可以用“HanaMinA”表示,也是用“花園明朝A”表示。
然后将上一句修改为:
xterm*faceName:花園明朝A:antialias=True:pixelsize=18
重新打开xterm即可生效。
另外,命令fc-match -v 花園明朝A可以查看指定字体的详细信息。
命令fc-cache -fv用来刷新/etc/fonts/fonts.conf列举出的字体路径,据说增加新字体时要用,实际上好像不需要。
slim的一些使用技巧
据说在登录界面的用户名框中输入以下特定单词可以实现特定功能:
console打开默认的终端(xterm)
halt关机
reboot重启
suspend休眠
exit退出到shell(实际上在FreeBSD环境下,只有此项有效)
回主站