Manjaro Linux
目前我使用的发行版是Manjaro Linux,这个发行版基于 Arch 但是有图形化的安装界面对于新手更加的友好。使用这个发行版的好处是有大量的软件可以使用,其数量甚至超过 Ubuntu PPA,而且软件的更新速度非常快。当然也有很多不好的地方,不如很多软件包是个人维护的,最后可能就没人维护了。这种事情也常常发生。更新速度太快也可能会导致一些软件的 bug 被推送,比如我个人遇到过 ripgrep 的 bug。不过我个人的体验还是非常满意的,它的优点大大超过了它的缺点(做为桌面系统)。当然,我有了清华的源 https://mirror.tuna.tsinghua.edu.cn/ 来加快速度。
KDE
目前我使用的桌面环境是KDE,最开始转到KDE的原因是为了使用大佬的Emacs Application Framework,但是经过一段时间的使用后发现还是不太适合我个人的工作流,因此就放弃了。 但是在使用的过程中也发现了KDE环境有很多的优点,因此就一直使用了下来。使用平铺式 桌面环境的一个痛点在于很多软件的设计对于平铺桌面非常不友好。在KDE中可以避免这一 个烦恼。
对于我个人而言比较重要的配置有以下几点:
- 选择一个你比较喜欢的主题和图标,我个人的选择是 Breeze Dark,和它配套的图标。
- 选择字体,我使用的是 Source Han Sans CN
- 关闭一些不必要的桌面动画,比如切换虚拟桌面的动画,因为我经常切换虚拟桌面因此 动画会让我感到厌烦。
- 将虚拟桌面数量固定为4。选择4这个数字是因为我的键盘只有左Windows,因此同时按 Windows 和 4 就已经比较极限了。同时4个虚拟桌面的数量已经足够满足我的个人需求。
- 开机自启动。我有一个 zstart 程序来进行我需要的开机自启动。
- 键盘设置。使得 Caps Lock 变为 LControl。使用 Emacs 的都懂。通过 xcape 进行更 多的设置,在 zstart 中更多地进行介绍。
- 关闭 File Search。这点非常重要,由于KDE的文件搜索缓存引擎 Baloo 对于非拉丁语 系的支持非常不好,如果不关闭在搜索中文时就会一无所获,因此必须进行关闭。
- 设置快捷键。这点对我而言非常重要。我会选择直接覆盖默认的快捷键。Win + num,切 换虚拟桌面。 Win + Shift + num,移动窗口到虚拟桌面。 Win + m,最小化。 Win + 0,最大化。 Win + i,o,k,l,u,y,分别打开 Firefox, Okular, Konsole, Dolphin, Emacs, Zathura。这一点在 wmctrl 中会进一步介绍。 Win + p,运行命令 rofi -modi combi -combi-modi window,drun -show combi。而 Windows 键可以运行我自己的脚本 ZSelectWindow。Win + Left, Right,将窗口分配到左右半屏。Win + Up, Down,将桌面 分配到右上角,右下角。 Win + Shift + q 关闭窗口。
- KDE widget, global menu 类似 Mac 的效果使得软件有更好的体验,遗憾的是并不是所 有的软件都支持,如 Firefox(但是可以通过 firefox-ubuntu-bin 获得)。
KDE系软件
相比于 Gnome 而言确实 KDE 系的软件要好看不少。我个人比较常用的有以下几个:
- Konsole. 终端,使用内置的 Breath2 theme,同时使用字体 Source Code Pro 并开启 无限滚动,用了这个之后我就不再用 Tmux,通过 Control-Shift-C/V 进行复制粘贴非 常方便。当然也要对于快捷键进行一定的设置。
- Okular. Pdf, dvi 等文件的查看器。同时备注功能较为强大,但是选择文本的交互总是 让我感觉很难受,而且 Open in Tabs 在不同虚拟桌面中有问题。需要将以下文件放入 desktop 文件夹中,然后用 mimeopen 将默认程序设为这个。(依赖于 wmctrl)
- Dolphin. 文件管理器,可以选择单模式。
- Juk. 音乐播放器,和 KDE 整合较好。
- KOrganizer. 和 Org Agenda 配合使用,通过读取 iCalendar 文件提供日程提示。
- Latte Dock. Mac-like Dock. 可以自动隐藏,放于桌面左侧。
[Desktop Entry]
MimeType=image/vnd.djvu;image/vnd.djvu+multipage;application/epub+zip;application/x-mobipocket-ebook;application/pdf;application/x-gzpdf;application/x-bzpdf;application/x-wwf;
Terminal=false
Name=Okular_Unique
GenericName=Document Viewer
Comment=Universal document viewer
Exec=okular-unique %U
Icon=okular
Type=Application
InitialPreference=8
Categories=Qt;KDE;Graphics;Viewer;
X-KDE-Keywords=PDF, Portable Document Format
NoDisplay=true
其他软件
- Firefox / Chrome. 网页浏览,必须要有的插件是广告拦截 (我用的是 uBlock origin, 注意要开启 Filter Lists/Regions,Languages/CHN) 和 Auto Switch。
- Goldendict. 英语词典,可以自己添加词典,我使用的是网上下载的,常用的包括 New Oxford English-Chinese Dictionary,牛津高阶学习词典(OALD),牛津英语搭配词典, USE THE RIGHT WORD, WordNet 3.0 等。
- Zeal. 文档查询,与 Mac 的 Dash 相似。(实际上使用的就是相同的词典)
- Mega / Nutstore. 云盘用于同步,我用 Mega 同步较大量的文档,通过 Nutstore 同步 一些较小的配置。
- ZClock. 我个人编写的一个闹钟,每隔一段时间放音乐,提示你应该休息了。ZClock
- Thunderbird. 邮件管理。尝试过使用 Emacs 进行管理,但是弄不好多邮箱配置最后放 弃了。
- Emacs. 之后细讲。
- QT Creator. 用于开发 QT Application。虽然实际上我只写了一个 ZClock。
- fcitx, rime. rime 输入法,你值得拥有。
- Zathura. 另一个 pdf 查看器,小巧,快速,用于与 latex 相配合。
- Zotero 联合 Firefox 插件进行文献管理。
- flameshot。一个有用的截屏软件。
- psensor 一个监控 cpu 的软件。
- fsearch Linux 下的 Everything。
命令行程序
- wmctrl. 非常重要的命令行程序,通过它可以实现 RaiseOrRun 的效果,即 wmctrl -x -R ‘class_name’ || appname,其中 class name 可以通过 xprop 获得。
- git. 版本控制不用多说了。
- vim. 快。
- trojan. 详见https://manateelazycat.github.io/proxy/2020/02/10/trojan.html
- rcm. 用于管理小的配置文件,比如 .zshrc 等。可以通过 mkrc 将文件搜集到 ~/.dotfiles,并通过 rcup 进行恢复,而收集后的文件就可以通过 git 进行管理。
- texlive. 对于学术工作者而言非常重要。注意使用网上的脚本 latexindent-module-installer 进行必要的安装使得 latexindent perl 脚本可用。
- ripgrep. 快速的 grep,同时与 Emacs 等软件配合。
- zsh. 更加好用的 shell。可以参考我的 zshell 配置,并不是非常复杂。 其中 z.lua 使你可以快速地在文件夹间穿梭。
- fd. 快速的 find.
- fzf. 命令行结果选择工具,可以用于搜索历史等,非常方便。
- ZSelectWindow. 严格来说,它并不是命令行工具,它可以实现类似 Emacs 中 Avy 的 效果来切换窗口。不足之处是由于使用 python 编写速度不是很快。
- xcape. 另一个非常重要的程序,通过处理 X Windows 的指令使得键盘更加好用。我添 加的设置有将单击 Caps Lock 设置为 Escape,将单击 Alt_R 设置为 Ctrl + X,将单 击 Shift_R 设置为 Ctrl + C,将单击 Windows 设置为快捷键然后连接到
- pyenv. python 版本控制,非常不友好,几乎废弃。
- nvm. node.js 版本控制。
- you-get 用于下载视频。参考半自动化下载B站收藏夹视频
- atool 通用解压工具。
- sd https://github.com/chmln/sd sd 是 sed 的 Rust 替代品,提供了更为简单和符合直观的参数。
Python 相关
- black. 文件格式化程序,确保你的代码规范。
- magic-import. 智能 import.
- python-language-server. https://github.com/microsoft/python-language-server, 编译指令,当然因此我也需要 dotnet
cd python-language-server/src/LanguageServer/Impl
dotnet publish -c Release -r linux
C/C++ 相关
- cmake. C++ 构建工具。
- ccls. C++/C language server。
- clang. 其中 clang-tidy 用于查错,同时 clang-format 用于格式化代码。个人偏向于 使用 microsoft 格式,但是将缩进改为 4。