Top
下图是freebsd吧雪白的野蔷薇统计的freebsd上的一些窗口管理器,名称后面跟的数值表示“总大小/驻留内存大小”。
这对于选择占用系统资源最小的窗口管理器非常有参考意义。(2022/6/10) 本节学习目标是在FreeBS上安装dwm/i3wm、中文输入法以及某些常用软件。
dwm是Dynamic Window Manager,动态窗口管理器,据称是占用系统资源最少的窗口管理器。i3wm则是平铺窗口管理器。

手动设定无线网卡:
  1. 修改/etc/rc.conf文件,加入以下行:
  2. wlans_iwm0="wlan0"
    ifconfig_wlan0="WPA SYNCDHCP"
  3. 修改/etc/wpa_supplicant.conf文件,加入以下行:
  4. network={
    	ssid="ssid"
    	psk="password"
    }
  5. 重启网络接口
  6. # 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后有提示:
启动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表示副屏在主屏的右侧进行扩展,可用选项有: --rotate left表示逆时针旋转90度。可用选项有:

如果此时拔掉副屏的线或关闭副屏,原本在副屏的“桌面”不会自动回到主屏。
使用命令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桌面环境。

注意事项:
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环境下,只有此项有效)

    回主站