This post is an AI translation of the Chinese original. If there are any discrepancies, the Chinese version takes precedence.
I used Ubuntu Desktop for a long time before this, because of snap. I thought it was convenient. But as the saying goes, what makes you also breaks you. One time when I was using VSCode I hit some kind of permission or whatever issue, and after searching I found out snap apps are all sandboxed, environment-isolated and all that. In the end I thought, well, Ubuntu’s frequent upgrades kept breaking my USB webcam driver anyway, so why not switch to something that stably supports apt? After searching around, the consensus was that Mint is basically Ubuntu with snap removed and no aggressive upgrades. So I switched to Linux Mint, and I’ve been on it ever since.
This post records what I do with a fresh Mint to turn it into a productive tool, and the apps I use.
Cleanup, updates, theme
First, remove ubuntu-pro-client.
It’s that “cloud management” component in Ubuntu that keeps popping notifications. You don’t need it in Mint either. Look up the command, purge it, and the world gets a lot quieter.
Second, old kernels.
The longer you use the system, the more kernels pile up and /boot gets tight. I usually check which kernel is currently in use first, then sudo apt remove the old ones, and sudo apt autoremove to clean up dependencies. The space you save is pretty noticeable.
Third, the theme. I’m using the Mint-Y-Dark-Aqua theme with Mint-Y-Sand icons now. You can switch them in “System Settings -> Themes”. The dark UI is comfortable at night.
Input method
If you need a Chinese input method, this is probably the most annoying part after installing Mint. I went back and forth several times on this.
On Linux there are two layers to input methods: the framework and the engine. The framework handles global switching, the candidate window, hotkeys and so on; the engine is what actually turns your pinyin into words. The framework is the shell, the engine is what’s inside it.
The road I took: first fcitx + Google Pinyin, then I felt it wasn’t good enough and tried Sogou, which required a pile of Qt dependencies and wasn’t very stable. In the end I purged everything and settled on fcitx5.
In practice, it’s just installing these packages:
sudo apt install fcitx5 fcitx5-chinese-addons fcitx5-frontend-gtk3 fcitx5-frontend-qt5 fcitx5-configtool
sudo apt install fcitx5-mozc fonts-noto-cjk
Then run im-config to switch the input method framework to fcitx5, and restart your session. fonts-noto-cjk is the Noto CJK font family; Chinese text will look much better once it’s installed.
fcitx5-mozc is a Japanese input engine. I installed it because I occasionally type Japanese; skip that line if you don’t need it. fcitx5 is stable now and the candidate window experience is good. I wouldn’t recommend going down the Sogou road of installing a bunch of dependencies again.
Daily software
The system itself is enough for daily use, but as a productivity machine you still need to fill in a few apps.
WPS Office
There’s an official Linux version. Download the .deb from the official site and install it with sudo apt install ./xxx.deb. Its compatibility with Office documents and Chinese font rendering are much more comfortable than LibreOffice on Linux. It covers spreadsheets, presentations and PDF, so for daily work you barely need to go back to Windows.
Because of my job, I write a lot of PPTs. So far, for the decks that don’t need advanced PPT features, WPS’s PPT function is completely sufficient.
Without WPS, productivity on any Linux desktop would drop by at least 30%.
WeChat
There’s an official native Linux version now, also installed from a .deb. After install you just scan the QR code to log in; messages and file transfer work normally. This was unthinkable in the past — a few years ago you could only run it in Wine and it crashed constantly.
Feishu (Lark)
The biggest reason I use Feishu is that it’s friendly to individuals, and it also makes it easy to set up work groups with clients and colleagues outside the company’s Teams. And then there’s the unbeatable notification bot feature, which is incredibly convenient. The Linux version is a .deb you download from the official site. Messaging, cloud docs and meetings all work in the desktop version.
MarkText A local Markdown editor, WYSIWYG, great for taking notes and writing documents. Lots of people use note apps these days, but I still like this kind of pure local Markdown editor — you manage the files yourself and that feels reliable.
Actually I’m a paying Typora user, but I really can’t be bothered to bind it to this system. For now MarkText plus VSCode is good enough.
Tabby
A terminal emulator, installed from a .deb on the official site. Multiple tabs, SSH connection management, and command autocompletion. I mostly use it to manage my various SSH configs. Since I switched to an SSD it doesn’t start slowly, so that’s acceptable.
Oh My Zsh
This isn’t really software, more of a terminal enhancement setup. First sudo apt install zsh, then install Oh My Zsh with the command on its official site and set zsh as your default shell. After that you get autocompletion, syntax highlighting and a friendlier prompt.
The main reason I use it is that it looks nice — things like git hints — and the syntax sugar is convenient. I’m just used to it.
Trilium Notes
A hierarchical notes app where you can nest notes layer by layer, great for building up a knowledge base that keeps getting deeper. Download the .deb from the GitHub release.
Small productivity tools
AppImageLauncher First, what is an AppImage? It’s kind of like portable software on Windows: a single file that carries its own runtime. No install, just run it; delete the file and it’s uninstalled. Lots of Linux software ships AppImage builds, especially those that don’t want to make installers for every distro.
But running bare AppImages has a pain point: files get scattered in Downloads, you can’t remember which is which, and there’s no app-menu entry. AppImageLauncher solves this. After installing it, when you double-click an AppImage it asks whether to “integrate and run”. If you say yes, it moves the file into ~/Applications/, adds it to your app menu with an icon, and you can uninstall it via right-click when you don’t need it.
Snipaste (screenshot tool) and Navicat (database management) on my machine are managed this way, and the experience is almost identical to installing a system package.
gTile
I want to call this one out, because it solves a pain point in multi-window tiling.
Cinnamon’s built-in tiling only does simple splits like left-half/right-half; for custom layouts you need a tool. gTile is a Cinnamon extension. After enabling it in “System Settings -> Extensions”, press Super+g (i.e. win+g) and a grid pops up over the current window. You click the area you want it to occupy, and the window is arranged at that position and size.
The part I find handiest is combining it with the touchpad: with gestures enabled in settings, swiping left, right or up with two fingers quickly snaps the window to the corresponding half of the screen. When I’m writing code or looking something up during the day, switching windows is noticeably more efficient.
Sunlogin (AweSun)
A remote control app with a Linux version, installed from a .deb on the official site. After installing you can register a systemd service to keep it running in the background, so when you’re away you can connect from the phone app to view the desktop and work with files remotely — roughly the same experience as remote control on Windows.
The main reason I use it: my company’s computers have RDP blocked, but Sunlogin slipped through. At home I mainly use the Mint desktop, but sometimes I need to open the work computer to check email, so Sunlogin naturally took that role. It’s just for convenience.
Finally
This post will be updated from time to time, as much as possible.