Manjaro Linux 迁移记

使用 Arch Linux 已经有一年多的时间了。最开始的时候为了装 Arch Linux 走了很多弯路,到目前为止,Arch Linux 我应该装的次数有超过十次了,有几次是帮同学装的。在我的带动下,有两个小伙伴也跟我着我用了好长时间的 Arch Linux。

为什么我说我装 Arch Linux 的次数不下十次,是因为我自己中间曾经因为这或那的原因装了其他的,比如因为想玩游戏装回 Windows,因为想换花样装了 OpenSUSE 或者 Ubuntu 或者 Manjaro,因为想换桌面就重装(KDE,GNOME,XFCE 我都来来回回换了几次,WM 也试过一次不过不习惯),因为想用苹果就装了黑苹果,因为想搞双系统又重装。但次次,我坚持不到两天就装回来了。

所以 Arch Linux 吸引我的地方到底在哪里?我概述为以下几点:

  1. 滚动更新。一条命令,保证你的所有软件和内核都是最新的。
  2. Arch Linux Wiki。Arch Linux 的 Wiki 是所有 Linux 发行版中最牛逼的,没有之一。
  3. AUR。Arch Linux 是所有 Linux 发行版中包数量最多的,AUR 允许用户自己打包上传。同时 AUR 和官方源的包都保持着最新。往往一个新的包出来,没过几天就可以从 AUR 下载到了,比如网易云音乐,最开始还没有 Linux 版本(我因为这一点重装了几次。。。),后来 Deepin 打包之后,好像没几天就有人上传 AUR 了。另外,比如 Node.js 更新版本了,也是没几天,Arch 官方源就更新了,毕竟 Arch Linux 的源只是上游的简单打包。
  4. 可定制化。在 Arch Linux 中,桌面我尝试过 KDE,GNOME,XFCE。输入法框架尝试过 IBUS 和 Fcitx,文件格式我尝试过 EXT4 和 Btrfs。Arch Linux 只是一个比较纯净的 GNU/Linux,没有一堆默认项,允许你自由选择安装。

但是,Arch Linux 并不是完美的,他也是有不尽人意的地方:

  1. 包更新过于激进。Arch Linux 源和 AUR 源的包更新速度很快,但是最新的并不一定稳定。这中间,我遇到过因为包版本更新导致问题的次数已经不少了。比如 Node.JS 更新导致 npm install 出错(这个好像是 Node.JS 问题,后来又有更新就修复了),比如 SDDM 更新导致主题失效从而无法进入 SDDM,还有不明原因导致 Redsocks 无法停止(后来我回滚了,过几天又升级又没事了)等等。
  2. 过于原始。这里的原始意思是,Arch Linux 本身提供的只是一个很基础的东西,很多东西都要自己去安装。因为这点,我一开始在显卡,蓝牙,声卡都踩了很多坑,有时候就算解决了也并不太完美。想使用前置摄像头发现用不了,想连接手机发现 MTP 没法用等等。

考虑到这些,我开始觉得之前曾经尝试过的 Manjaro 是一个不错的选择。所以我最近开始迁移到 Manjaro 的使用上来。并想趁这个机会,打造一个完美的个人桌面系统,我期望最终达到的效果如下:

  1. 基于 KDE 桌面,使用一些简单的美化措施,达到界面美观的效果。
  2. 使用全局菜单。
  3. 基于 Wine 较完美运行微信,QQ 以及迅雷(迅雷是为了解决 ED2K 的下载)。
  4. 系统功能齐全,工作正常,包括蓝牙,MTP 等。

第二点,使用全局菜单,其实之前我是没有弄这个的,这次迁移 Manjaro 才开始研究。涉及到很多问题,这中间踩了很多坑,最后终于比较完美的解决了,包括 GTK,QT 的程序以及像 Firefox 这个菜单非基于 GTK/QT 的,都已经成功实现了全局菜单了。为达到 Firefox 的全局菜单,我折腾了很久,我后面会说下需要怎么做。

这次迁移,可以说是一次强迫症偏执狂的捣鼓之旅。我想把毕生所学的精华都罗列在这篇文章中。我安装的是 Manjaro 的 Testing 版本,建议安装这个版本,两个版本我都试过了,反而是 stable 版本问题比较多。

Linux 软件篇

首先介绍下我现在使用的一些 Linux 包吧。通过 AUR 或者官方仓库都可以直接安装。

此处不介绍软件的配置。另外包名可能有打错的地方,如果遇到了,自己按关键字搜索下来安装就好。

这里使用的是 yaourt 来安装,但此处不再推荐,建议使用 yay。

  • Shadowsocks / Redsocks / Iptables / PcapDNSProxy

    yaourt -S shadowsocks redsocks-git pcap-dnsproxy-git
    

    前面写过一篇文章,就是基于这四个东西,实现网络层(TCP)的代理,国内流量(中国 IP 地址白名单)不走代理直接请求,其余流量通过 Iptables 转发给 redsocks 并进一步转发给 shadowsocks。Pcap-DNSProxy 则是用来解决 DNS 污染的。

    后面两个带 -git 的其实是 AUR 的包,如果下载缓慢或者由于网络问题经常出错,可以先安装 proxychains-ng 用代理去下载安装。

  • dropbox

    yaourt -S dropbox
    

    Dropbox 我之前是每次都装的,现在偏好 Google Drive,可惜人家没有 Linux 客户端,虽然 KDE 可以用 kio-gdrive,但是我 KDE 的 Google 帐号一直没法登上去。

  • zsh / oh-my-zsh

    yaourt -S zsh oh-my-zsh-git
    

    终端就这一套了。

  • wqy-microhei / wqy-zenhei

    yaourt -S wqy-microhei wqy-zenhei
    

    Manjaro 字体已经处理的不错了,但是还是装多这两个字体吧。

  • studio-3t / dbeaver / medis

    yaourt -S studio-3t dbeaver medis
    

    分别是 MongoDB,MySQL 等关系型数据库,Redis 的管理 GUI。Medis 是基于 Electron 构建的,我之前一直用的是 fastonsql,但是 Manjaro 搜不到该包好像。

  • typora

    yaourt -S typora
    

    我最开始用 Arch Linux 的时候,这货和网易云音乐,作为我在 Windows 经常使用的产品,都是没有 Linux 版本的,但后来推出后,AUR 很快就有人上传了。Typora 是写 Markdown 首选软件。

  • wireshark-qt / telegram-desktop / netease-cloud-music / firefox / chromium / vscode / virtualbox / wiznote

    yaourt -S wireshark-qt telegram-desktop netease-cloud-music firefox chromium visual-stuido-code-bin virtualbox wiznote
    

    WireShark 抓包用。网易云音乐这个必须装了。Firefox 和 Chromium 我个人更喜欢 Firefox 些,平时都用它。Wiznote 是为知笔记,众多笔记软件中我挑它是因为只有它有 Linux 客户端。

  • enpass

    yaourt -S enpass
    

    密码管理器。为什么不是 lastpass,onepass 等,因为他们都没有 Linux 客户端呀。

  • deepin-wechat / deepin-wine-tim / deepin-wine-thunderspeed

    yaourt -S deepin-wechat deepin-wine-tim deepin-wine-thunderspeed
    

    这三个就屌了,在 Linux 运行 Windows 版本的微信,TIM 以及迅雷。都比较完美了。

  • docker / docker-compose / kitematic

    yaourt -S docker docker-compose kitematic
    

    本地使用 MySQL,Redis 之类的我一般都不直接装,而是通过 Docker。Kitematic 是 Docker 应用管理,界面不错,也挺好用的。

  • mailspring / nylas

    yaourt -S mailspring
    

    邮件管理器。界面很美观,功能也强大。

  • gitkraken

    yaourt -S gitkraken
    

    管理 Git 的,类似 SourceTree。基于 Electron。

  • aria2-fast

    yaourt -S aria2-fast
    

    突破线程限制的 Aria2。配合 Firefox 的 Aria2 插件就很完美了~

  • deluge / uget

    yaourt -S deluge uget
    

    前者是下 BT 的,后者常规下载(支持 Aria2)。我其实现在都没装,我都用 Aria2,Firefox 装一个 Aria2 的插件来下载。然后 ED2K 就用 WIne 迅雷。

  • kio-gdrive

    yaourt -S kio-gdrive
    

    让 dolphin 支持 Google Drive,经测试 manjaro stable 版本添加帐号报错了,testing 反倒没问题。

  • libreoffice / wps

    yaourt -S libreoffice wps-office
    

    前者 Manjaro 已经自带了。WPS 我并没有装,但可以试试,毕竟手机上也是用 WPS。

  • playonlinux

    yaourt -S playonlinux
    

    如果想玩 Wine 的话,可以用这个。我尝试了安装 OFFICE2013(据说可以),但没成功0.0。

  • deepin-screenshot

    yaourt -S deepin-screenshot
    

    Deepin 截图炒鸡好用。可以在设置里面添加下快捷键配置。这个截图和 QQ 截图类似都可以检测应用边框。不过可惜的一点是没有上传到网络的功能,GNOME 自带的截图我记得是可以自动上传图床的。

  • latte-dock

    yaourt -S latte-dock
    

    如果想要 Dock 栏的,非安装这个软件不可了。

  • fcitx / fcitx-googlepinyin

    yaourt -S fcitx fcitx-sogoupinyin fcitx-im kcm-fcitx
    

    IBus 没怎么使用,Fcitx 一直用感觉挺好的。也可以装搜狗输入法~。记得要配置 Xprofile。

  • Redshift

    yaourt -S redshift
    

    对自己眼睛好一点,我安装了一个 KDE 插件叫 Redshift-Control,他依赖这个,没装的话运行不了。作用就是调节色温了,晚上屏幕暖一点,不那么刺眼。

KDE 全局菜单配置(WIP)

这是一个看似很简单但实际操作起来很复杂的东西。要做到全局菜单,则要求应用菜单有一套特殊的通信协议可以将其菜单挪到全局显示。但是 GTK 和 QT 的通信协议不一致,导致在 KDE 简单配置全局菜单之后部分 GTK 应用的菜单不生效。另外,Firefox 和 LibreOffice 也跟前面两者不一致。在 Ubuntu 下,Firefox 有专门针对 Ubuntu 的 Patch 使其可以在 Unity 桌面显示全局菜单。

这次全局菜单我也是第一次配置,中间也踩了很多坑。这里的记录只是一次粗糙的印象,不保证按照下面操作可以成功使用,等有空了我再在虚拟机里面重新操作试一下。

只针对使用 KDE 桌面而言。

  1. 右键桌面 - 添加部件 - 全局菜单

  2. 安装一堆包。

    yaourt -S appmenu-gtk-module gmenu-dbusmenu-proxy-git libdbusmenu-glib libdbusmenu-gtk2 libdbusmenu-gtk3
    

    特别注意这个包 gmenu-dbusmenu-proxy-git 在 AUR 和 Manjaro 源是搜不到的,他本身是一个在 Plasma 5.13 合进来的包,所以我们只能自己去下载安装。安装的时候可能会出现 solid 包版本旧的问题,这是由于 Manjaro 的 stable 包慢于 Arch,Arch 官方仓库其实已经更新到最新版本了,可以自己去 Arch 下载 PKG 自己安装更新。

  3. 适配 Firefox 和 LibreOffice

    上面都搞定之后,大部分 GTK 菜单也正常挪到全局了。但是 Firefox 不行,LibreOffice 可能不行。解决方法也是有的,对于 LibreOffice 只要在 .xprofile 中加入下面这一行:

    export SAL_USE_VCLPLUGIN=gtk
    

    至于 Firefox 就比较麻烦了,因为 Firefox 的菜单使用 GTK 主题,但是不基于 GTK。Mozilla 对此专门给 Ubuntu 的 Unity 进行了打包以支持全局菜单。官方源的 Firefox 是不能显示全局菜单的。

    那怎么办呢,AUR 里面有两个包,一个是 firefox-ubuntu,一个是 firefox-kde-opensuse,这两个都是用了补丁的。但前者我安装之后运行不了。后者可以运行,所以装后面这个就可以了(但是我第一次装后面这个,发现菜单还是没有,后面装又有了。。。不知道是第一次出了什么问题还是说之后我某次操作潜移默化的影响了。。。)。

    但是源里面并没有 firefox-kde-opensuse 的语言包下载,这个只能自己在 Firefox 里面安装语言包,并打开 about:config 配置 intl.locale.requested = zh-CN,重新打开就阔以了。

其他关于 KDE 的使用技巧

  1. 关闭 KDE-Wallet。我说为什么 WIFI 密码总是要输入两次,原来是这货搞得鬼,再者感觉根本不需要这个东西。

  2. 主题

    直接撸这个就好了。具体查看 GitHub 文档说明。

    yaourt -S adapta-kde kvantum-theme-adapta adapta-gtk-theme
    

    参考 https://github.com/PapirusDevelopmentTeam/adapta-kde

  3. 禁用 KDE 面板阴影:参考此处

  4. 部件推荐:

    • Resource Monitor 显示 CPU 和内存情况
    • Netspeed Widget 显示网速
    • 颜色拾取器 取色
    • Redshift-Control 前面已经提了,控制屏幕色温
  5. 配置 Sysctl

    kernel.sysrq = 1
    

    这个的作用是启用 SysRq(Magic System Request),它可以在系统挂起,大多数服务无法响应的情况下,在保证磁盘数据安全的情况下进行重启。按键顺序需要注意,I 是发送的 SIGKILL 信号,相对而言没有什么延迟,但 S 和 U 则与磁盘有关,可能需要一定时间。推荐的按法是:

    R - 1 秒(把键盘设置为 ASCII 模式)
    E - 30 秒(向除 init 以外所有进程发送 SIGTERM 信号)
    I - 10 秒(向除 init 以外所有进程发送 SIGKILL 信号)
    S - 5 秒(磁盘缓冲区同步)
    U - 5 秒(重新挂载为只读模式)
    B (立即重启系统)
    

    感兴趣可以看下这篇文章 利用 SysRq 键排除和诊断系统故障

Firefox 扩展推荐

  • AdBlock / uBlock Origin

    去广告

  • Wappalyzer

    显示网站所使用的技术栈

  • Who is Hosting this Website

    显示网站的 IP,地址,主机商等信息,以及对应 IP 的 Whois 信息等

  • Web Developer

    一些实用的开关

  • Stylish / Greasemonkey

    自定义样式和插入自定义脚本到网站

  • Country Flags & IP Whois

    显示这个网站所属的国家以及 IP Whois 信息,比较特别的是他可以显示在搜索栏里面的右侧

  • Aria2 下载器集成组件

    取代内置的下载器,结合 Aria2-Fast 多线程下载

  • Header Editor

    可以管理浏览器请求,编辑请求头和响应头,重定向等

  • Octotree

    GitHub 代码文件树

  • Proxy SwitchyOmega

    代理,虽然已经代理了全部的国外流量,但难免可能有遗漏,多加一个影响不大

  • AgentX

    自定义 UA

  • Chrome Store Foxified

    让你可以在 Firefox 中使用 Chrome 的插件

  • EverSync

    同步书签

  • Gesturefy

    鼠标手势

  • pakku

    Bilibili 弹幕过滤

  • Personal Blocklist

    屏蔽在 Google 搜索中出现某一个网站

  • HTTPS Everywhere

    自动使用 HTTPS 连接访问站点