迁移到 Linux - 日志 3

衔接

由于修改论文,所以博客更新中断。现在继续更新,现在已经从树莓派迁移到正经的 x86 PC 上面了。也安装了 Fedora 38 Sway 的版本。

配制

基本配置采用了 Fedora 38 Sway 版本的配置,因为这个配置比我之前字迹配置的要好看一些。

Sway 配制

采用的 Sway 配置和相关使用的软件。然后另一件事情是将配置文件拆分成了多个文件。创建一个 config.d 文件夹,把官方的配置都放进去。 然后默认的 config 文件就变成了:

# include configs:

include "${XDG_CONFIG_HOME:-$HOME/.config}/sway/config.d/*.conf"

然后我把相关的配置分成了若干个部份,按照现在比较流行的序号-名称的方式进行命名:

序号 名称 说明
00 00-variables.conf 用来配置变量的,比如 $mod 这个 logo key
10 10-xwayland-conf 配置 xwayland 的,当然这个里面目前就一个 xwayland enable
20 20-output.conf 配置显示器显示屏输出的,后面细说
20 21-background.conf 配置桌面背景的
30 30-bindings*.conf 默认的按键按照个人喜好修改了一下,然后按照个人喜好再拆分一下
50 50-statusbar.conf 配置 sway status bar,须要安装 waybar
50 50-swayidle.conf 配置 锁屏页面
50 50-titlebar.conf 窗口的 title bar,配置字体和 title bar 的行为
60 60-rules-*.conf 官方自带的一些配置,就直接复制过来了
90 90-autostart.conf 自动启动的相关内容,须要啥添加啥
99 99-others.conf 其他的内容

这些配置,通过 manual page 就可以查到,man 5 sway。这里的 5 千万不能忘记,因为还存在一个 man 1 sway

显示器/屏输出配置

官方由详细的说明,参考 man 5 sway-output

实际上可以不进行配置,但是吧,这个默认的配置,还是有问题,比如桌面的位置和大小和方相。

我这里用到了几个配置 (其中 {DIS} 是显示器的名子,下面解释如何查看):

命令 解释
output {DIS} pos {x} {y} 将显示器的位置(左上角的位置),设定道执行的坐标 {x}{y} 这两个位置
output {DIS} transform {r} 将显示器的屏幕进行旋转角度 {r}
output {DIS} scale {s} 将显示器进行缩放(类似 windows 的那个),比例是 {s} (这里不是百分比)
output {DIS} resolution {w}x{h}@{f}Hz 这个是指定屏幕分辨率与刷新率的,例如 1920x1080
workspace {NUM} output {DIS} 将工作区绑定到指定的指定的显示器上

对于这个位置的设定,这个简单来说就是把所有的显示器平铺在一个位置上,然后进行相关的操作,而这个位置,就是当显示器的左上角,而右下脚则是,左上角架上显示器的宽高。

要获得屏幕相关的信息的话,就需要通过命令 swaymsg -t get_outputs 来获取相关信息,那个 Output DP-1 这种输出中, DP-1 就是那个 {DIS}

对于桌面背景的话,可以通过 output {DIS} bg /path/to/image fill 来设置一个估定的图片,这里面 {DIS} 可以是通配符 * 。 或者使用 SWWW 这样的软件配置“‘动态‘桌面壁纸”。

锁屏和自动黑屏

锁屏采用 swaylock 进行锁屏,但是希望锁屏之后,屏幕能够自动黑屏,就需要特定的操作。

首先通过按键绑定一个特定的按键作为锁屏的操作。

bindsym $mod+Shift+h exec ${HOME}/.config/sway/script.d/lockscreen

然后这个 lockscreen 脚本则是用来锁屏的,如下:

#!/bin/bash

swayidle -w \
        timeout 10 'swaymsg "output * dpms off"' \
           resume 'swaymsg "output * dpms on"'  &
swaylock -c 151525

kill %%

首先,swayidle 这个是用来等待的,在锁屏 10 秒之后,在执行 swaymsg "output * dpms off" 将显示器关闭,然后在鼠标有动作的时候,来执行 swaymsg "output * dpms on" 将显示器开启。(当然,如果输入错密码或者没有输入的话, 10 秒之后,还是会关闭屏幕。

然后 swaylock 来进行锁屏。

最后,如果将这个解锁的话,则将 swayidle 关闭,防止屏幕再次被关闭。

SWWW 配制

首先须要安装 SWWW 这个软件。然后要写一串代码(脚本):

首先需要把先前的 SWWW 的进程都杀掉,并把缓存给清理一下。

pkill -O 10 swww_init
rm -rf $HOME/.cache/swww/*

然后再初始化 swww

swww init

接着循环更新桌面背景,通过 swww query 。 首先是一个 while 的无限的循环,循环每次完成之后,再有一个 sleep 来作为延时。 然后通过 for 循环给每个屏幕设置对应的背景。

while true; do
    for output in `swww query | awk -F: '{print $1}'`; do
        IMG=$(shuf -n1 -e `cat $HOME/.config/backgrouds.list`)
        echo Display $output "$IMG"
        swww img -o $output "$IMG"
    done
    sleep $INTERVAL
done

$HOME/.config/backgrouds.list 这个是一个所包含的图片的列表,然后 shuf 则是用来随机挑选图片的。

Waybar 配制

Waybar 的配置涉及到两个地方。一个是 sway 本身,还有一个是 waybar。

首先须要配置 Sway :

bar {
    position top
    font JetBrainsMono Nerd Font 18, FontAwesome5Free, IonicIcons 14

    swaybar_command waybar

    colors {
        statusline #ffffff
        background #323232
        inactive_workspace #32323200 #32323200 #5c5c5c
    }
}

这里配置了 “bar”的位置、字体、使用 waybar 作为 sway bar 还有颜色。

然后就需要配置 waybar, 这里我采用的 fedora 默认的配置。效果还行。

WezTerm 配制

不建议使用,因为对于输入法的支持不好。当前无法使用输入法。(我现在一直用 konsole 进行替代,毕竟有 wayland 还有输入法)。

输入法配制 (Fcitx 5)

这个按照网上有一的一些教程安装就好了,把 fcitx 5 和相关框架的“插件”安装好,然后在配置 XX_IM_MODULE 啥的成为 fcitx 就行。

很多软件对于 wayland 下输入发的支持并不好,所以建议使用 xwayland 方式来运行,或者使用其他支持的较好的软件。

Wayland 带来的问题 与妥协

主要还是输入法,只能在 输入法+xwayland 或者没有输入法+wayland 二者中来选择。

剩下的就是各种各样的 bug 了,所以还是建议使用 fedora 这样相对激进一些的发行版,修 bug 会快一些(当然,制造 bug 也会更快)。