最近一段时间我成功把所有 Apple 的设备替换掉了,中间踩了不少坑,如果你也打算将设备切换到 Linux 和 Android,那这篇文章能作为一些问题的解决方案索引。
# Arch Linux
设备选择:联想小新 14 AMD 5800H,内存 16G 有点小,建议自行更换 AX200 网卡。
选择 Arch 主要是因为除了安装麻烦一些,其他都太友好了,尤其是 pacman 和 aur。 使用 Arch 可以让自己始终保持可以安装到最新的包。
这里安装 aur 使用的是 yay (opens new window)。
如果你需要相关的安装教程,建议参考 Arch Linux 安装使用教程 - ArchTutorial - Arch Linux Studio (opens new window)。
# 软件使用
我选择了 KDE 全家桶,整体上使用起来还好。
以下为我在 Linux 上使用的部分软件:
- Konsole - 终端
- Ferdi - 类似 Web 转 App 的应用,我加入了 Telegram 和 Discord
- Telegram 的原生 Qt 版本体验我感觉一般
- Zotero - 文献管理,准确说我用来标注查阅书籍、课件等等
- 我没有使用它的同步服务,我直接将全部内容移动到 Nextcloud 进行同步
- 使用 Nextcloud 同步时应当忽略
*.sqlite-journal
文件
- Okular - 查看 pdf
# 解决中文字体在 hidpi 的渲染
参见:Linux 下的字体调校指南 (opens new window)。
配置完成后,更新特殊应用,比如 code - oss 设置 terminal.integrated.fontFamily
为 monospace
。
# 奇怪的粘手问题
设置 - 输入设备 - 触摸板 - 取消勾选轻触拖拽。
# Code - OSS
当使用开源版本的 VSCode 时,会因为授权无法使用 C/C++ 插件,这里选择 clangd 替代即可。
# LineageOS
设备选择:
- 红米 k30s:LCD 屏幕,LineageOS 官方更新比较频繁
- 小米平板 4:可能是唯一一款带 LTE 的小尺寸平板,xda 有非官方版的 LineageOS
- Nvidia Shield TV:只能刷入 LineageOS 17,不过也够用了,建议用原版系统,LineageOS 似乎没适配配套的遥控器
# 通知推送
使用 MIUI Push Framework,为了让更多的 App 可以使用,你需要写入一些参数,miui_push_device_fake (opens new window) 供参考。 另外在这套方案下还可以在冻结 App 后继续收到通知。
# 冻结应用
我选择:雹(Hail) (opens new window)。
# 相机
我在 xda 上寻找了使用 Google 相机的方法,另外我关闭了 Google 相机的网络权限。
# 输入法
使用 Gboard 同时关闭对应的网络权限。
# F-Droid 上其他应用清单
- Bromite - 隐私加强的浏览器作为备用
- Ultrasonic - 使用 navidrome 作为音乐后端播放音乐
- DeepL
- Nextcloud
- Telegram FOSS
- Jellyfin
- Tasks.org - 任务管理,后端使用 Nextcloud
- Material Files - 很棒的文件管理,包含 Root 文件管理,搭配 Sui 使用
- DAVx5 - 联系人同步,后端 Nextcloud
- Gadgetbridge - 同步小米手环
- VLC
- Forecastie - 天气
- Gerometric Weather - 天气
- Aurora Stuore - Play 商店替代,我没有使用 GMS 和 microG
- App Manager
- Librera Reader - 看 pdf
- Gotify - 接收各种通知,比如 NAS 任务通知
- Termux
- Droid-ify - F-Droid 非官方商店
- openScale - 连接体脂秤
- OAndBackupX - 应用备份(包含数据)
- AccA - 充电到 80%
- RCX - 基于 Rclone 实现的客户端,非常棒
- Kore - Kodi 远程控制
# 访问内网
之前我曾写过一篇 tproxy 的使用,这里提到了如何用 ss 解决上网以及访问家里内网的方案。 但更合适的解决方案是使用 WireGuard,这样每个设备都会拥有一个 wg 的 IP 网段,可以在各种网络环境下将连接到 wg 的设备看做在一个 wg 内网下。 这有一个非常重要的使用场景:手机 4G、PC 连接非家庭 Wifi,二者可以继续使用 KDE Connect 做设备协作。
这里我的 PC、手机不是一直在内网或外网的情况下,需要频繁切换 wg 的开关状态。 我分别写了两个自动切换的控制。
# Linux 根据网络自动切换 WireGuard 开关
参考代码如下:
➜ ~ cat /etc/NetworkManager/dispatcher.d/50-wg0.sh
#!/bin/sh
interface_=$1
status_=$2
case $status_ in
up)
if [[ "$interface_" == "wlan0" ]]; then
if [[ "$CONNECTION_ID" == "wifi_name" && "wifi_connection_uuid" ]]; then
wg-quick down wg0
else
wg-quick up wg0
fi
fi
;;
down)
if [[ "$interface_" == "wlan0" ]]; then
wg-quick down wg0
fi
;;
esac
思路很简单,利用 NetworkManager 的切换回调,当连接 Wifi 为内网时,关闭 wg,其他场景(连接到其他 Wifi、断开 Wifi)均断开 wg。
# Android 根据网络切换 WireGuard 开关
可以使用 Tasker、Automate、Automation 等软件写自动化任务,(可能是我使用姿势不对?)可靠性不够,经常出现没有打开的问题。
为此,我写了一个 Magisk 模块,通过 ip monitor
监听 wlan0
的 ip 变化进行切换,详细参见:WireGuard AutoConnect for Android (opens new window) 。
这里应该有更好的解决方案,不过上面的 Magisk 模块对我来说已经可以做到稳定切换的能力。
# 多设备协作
使用 KDE Connect 即可,可以完成剪切板同步、简单的文件或浏览网页分享,还有通知、远程控制等等。 不过 Android 目前限制了后台访问剪切板的能力,我使用 Clipboard Whitelist (opens new window) 解决该问题。 当两个设备不在一个安全的同一网络下,设备仍然可以同时,参见上述的 WireGuard 相关内容。
# DLNA 投屏
iOS 设备在这里投屏体验可能较差,经常找不到投屏目标,我不清楚原因。
在 Android TV 上安装 Kodi 打开 DLNA、Airplay 投屏即可。
# 浏览器
Linux 上我选择 ungoogled-chromium,Android 上使用 Kiwi Browser。 上面两个都可以安装 Chrome Extensions,我使用 chromium-web-store (opens new window) 安装更新 ungoogled-chromium 的 Chrome Extensions。 书签同步选择:floccus bookmarks sync(同步后端使用 Nextcloud)。
由于 ungoogled-chromium 安装时间比较长,可以使用以下参数解决 sudo 授权超时问题:
sudo yay -Syu --sudoloop
。
# 备份
虽然写在了靠后的位置,但实际上这是相当重要的内容,使用任何系统、软件都可能在预想不到的时候出现不可用的情况,所以备份是重中之重。 我选择了 restic 对 Linux 进行全盘备份,使用 Automatic restic Backups using Native OS Task Schedulers (opens new window) 完成定时备份的能力。
后端我选择了 restic server 部署在群晖上。
另外还可以使用 snapper + btrfs 进行每小时的快照备份。
在群晖上的备份我选择了官方的 Hyper Backup + restic 备份到公有云,restic 支持后端存储非常多,这里我选择了性价比很高的 B2 backblaze。
# 密码管理
Bitwarden 客户端加上 vaultwarden 作为后端保存数据。 记得做好备份,另外配置上有一些需要注意的地方,参见:升级群晖到 7.0 版本的 HTTPS 和 Vaultwarden 配置方案 (opens new window) 。
# 邮箱
客户端选择如下: Linux:KMail Android:K-9 Mail
另外我使用 OpenPGP 加密邮件搭配 simplelogin 注册账户。
在 KMail 上设置调整:
- 外观 - 信件预览面板 - 勾选在信件列表旁现实信件预览面板
# Anki
背单词神器,后端使用 anki-sync-server-rs 部署,参见:使用 anki-sync-server-rs 部署自己的 anki 同步服务 (opens new window)。
# RSS 相关
- rsshub:为更多网站添加 RSS 支持
- miniflux:RSS 阅读器同步&拉取服务(包含 Web),类似 Inoreader
- NewsFlash:Linux 上的 RSS 阅读器,支持直接 miniflux 登录
- News(F-Droid):Android 上的 RSS 阅读器,同样支持 miniflux 登录
- wallabag:稍后读
- flowerss-bot:RSS 即时通知