自打入手mss(Maxtor Shared Storage Plus)以来,也算是个linux用户。不过这将近十年的时间里都没正经用过linux桌面,一方面是自己所需的大部分应用在ssh+网页界面的情况下都可以搞定,比如transmission、jellyfin、calibre-web等等;另一方面也是早期阶段linux的桌面有点复杂,浅尝辄止的试用阶段中也被搞崩过好几次。
最近一段时间没怎么打游戏,开了windows就是jupyter+vscode,正好又听说微软官方发布了vscode的arm版,就决定搞个raspberry pi好好跑下linux的桌面,折腾一通manjaro官方镜像的xfce、i3、bspwm之后,梳理一下思路,为下次继续折腾做准备。
平时使用的各种桌面环境集成程度比较高,在linux下,几个构成组件可以根据需要拆分组合运行。
桌面环境的构成组件
-
窗口管理:桌面环境最基础的组件,后续的组件一般由窗口管理程序引导运行。窗口管理的方式分为层叠和平铺:windows祖传的层叠,在win10以后通过win+左右方向键也可以快速平铺显示;不过作为平铺窗口管理器,指的一般都是没有最小化和窗口大小调整,所有程序最大化,新建程序后自动分屏,永远铺满整个屏幕,和安卓的多任务分屏类似。gnome、kde、xfce都是层叠,i3和bspwm是平铺窗口。
-
启动器:对windows来说就是桌面程序图标+快速启动+快捷键+开始菜单,第三方的搜索启动程序比如launchy和listary也有很多支持者,win10之后的win+s也能作为半个启动器使用。xfce的启动器和windows比较类似,i3和bspwm的启动器组合一般都是dmenu+常用程序快捷键。
-
状态栏:以windows为例,状态栏上会有开始按钮、快速启动、当前运行的程序标签、输入法、音量、网络、时间等等。而配合平铺窗口管理器的状态栏程序,示例配置中一般都只是工作区清单和一堆系统信息,其他都得另外实现和配置。i3打包程序里有个i3statusbar,也可以换其他的;bspwm可选项比较多,我用的是polybar。
-
通知:windows自然是有的,三大件也是有的。其他万一没有的得装dunst。
-
快捷键:windows的win键搭配有一整套快捷键组合程序,比如大家都离不开的win+d、win+e和alt+tab这些;i3wm自带了快捷键的响应,在自己的配置文件内可以编辑各项动作;继续简化的bspwm则需要另外的程序sxhkd来接管快捷键。顺便说一句,manjaro官网上的raspberry-pi-i3wm镜像的默认快捷键配置一团糟,甚至都把tmux的快捷键给搞乱了,记得避雷。
-
桌面:多屏幕、分辨率、壁纸、透明。平铺窗口管理器的工作区模式和多屏幕配合一般非常好;分辨率调整使用xrandr或者其gui程序arandr;不带壁纸设置的wm一般可以用feh来设置桌面;透明度设置是linux美化的重灾区,之前流行的compton已经没人维护,现在在更新的picom是它的一个fork。
-
常用基本程序:有一些程序过于习以为常,有时候会忘记它居然是得另外配的。
- 文件管理器 :平铺窗口管理器还是用些简单明快的thunar;或者使用cli的ranger。
- wifi连接:manjaro的xfce镜像带了nm-applet,或者用命令行的iw
- 蓝牙连接:blueman-applet。命令行连蓝牙就有点说不过去,对自己好一点。
- 电源:状态栏程序显示电源也是强项。
- 输入法:fcitx
bspwm的安装和配置过程
-
我用manjaro打包的xfce,默认用lightdm作为登录管理,抛开display manager的话,在x和wm安装完后也可以用
ctrl+alt+f1/f2/f3...
切换到对应的tty,命令行登录后自己用which bspwm
找出路径,然后startx /usr/bin/bspwm
来启动桌面。 -
安装bspwm、sxhkd
sudo pacman -S bspwm sxhkd
install -Dm755 /usr/share/doc/bspwm/examples/bspwmrc ~/.config/bspwm/bspwmrc
install -Dm644 /usr/share/doc/bspwm/examples/sxhkdrc ~/.config/sxhkd/sxhkdrc
默认配置下进去bspwm,只会看到一个黑乎乎的桌面,得按照上面的介绍继续挨个安装和配置组件。
- dmenu
安装dmenu自己或者它的一堆fork,sudo pacman -S dmenu
,sxhkd默认的配置是super+space
启动dmenu_run.
当然也可以用rofi。
-
终端和浏览器:
- sxhkd默认配置的终端是urxvt,如果想用其他的或者调整习惯快捷键记得修改配置文件的super+enter部分
- 浏览器装完后添加一个快捷键,比如alt+i到firefox之类,
-
polybar
polybar得通过aur安装,yay -S polybar
,拷贝默认配置,没有目录记得新建,cp /usr/share/doc/polybar/config ~/.config/polybar/
按照archwiki的建议,写个启动脚本,注意倒数第二行的mybar
指的是polybar的配置名称,如果先试用默认配置记得改成example
#!/bin/bash
# Terminate already running bar instances
killall -q polybar
# Wait until the processes have been shut down
while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done
# Launch Polybar, using default config location ~/.config/polybar/config
polybar mybar &
echo "Polybar launched..."
保存启动脚本chmod +x
,然后把这个脚本路径比如是 $HOME/.config/polybar/launch.sh
新建一行添加到bspwmrc里
这样进去后,桌面就有点样子了,其他的根据需要自己补上。