Skip to content
I'm Shuo
Go back

Switching from Ubuntu Desktop to Linux Mint: Common Setup Notes

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

  1. 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.

  1. Clean up 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.

  1. Change 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 Sogou because it didn’t feel good enough — but that pulled in a pile of Qt dependencies and wasn’t very stable, so I wiped it all clean in the end. What I finally settled on is fcitx5 + Rime: fcitx5 as the framework, Rime for Chinese, and mozc stays for Japanese.

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-rime rime-data-luna-pinyin rime-data-double-pinyin
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-series CJK font; Chinese text renders much better with it installed.

Next open fcitx5-configtool and add Rime to the input method group (alongside the existing pinyin and Japanese entries) — restart if it prompts you to. The first switch to Rime needs a deployment, so lagging a beat is normal. Wait until a build/ directory shows up under ~/.local/share/fcitx5/rime/.

One gotcha: don’t edit ~/.config/fcitx5/profile while fcitx5 is running — it’ll get overwritten by the in-memory config on exit. If you want to edit it by hand, quit the process first with fcitx5-remote -e, then start it again after.

Rime defaults to Luna Pinyin with Simplified output. Hit Ctrl+/ to toggle Simplified/Traditional, or press F4 for the schema menu — your choice sticks. To pin Traditional (luna_pinyin_tw) or add double pinyin, put it in ~/.local/share/fcitx5/rime/default.custom.yaml:

patch:
  schema_list:
    - schema: luna_pinyin_tw

After editing, hit “Redeploy” on the Rime tray icon to apply.

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 pretty stable now and the candidate window experience is good. I wouldn’t bother with the Sogou route of piling on 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.

  1. 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%.

  1. 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.

  1. 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.

  1. 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.

  1. 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.

  1. 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.

  1. 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

  1. 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.

  1. 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.

  1. Sunlogin (AweSun) RustDesk

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.

Sunlogin kept nagging me with popups to upgrade to a paid plan, and honestly its feature set felt a bit bloated for what I needed. Conveniently, RustDesk also supports desktop Linux. So I set up a relay service on my home homelab to handle local remote desktop.

The main reason: my company’s computers blocked RDP, but Sunlogin RustDesk slipped through the cracks. At home I mainly use my Mint desktop, but sometimes I need to open my work machine to check emails, so Sunlogin RustDesk naturally took the spot. It’s just for convenience.

Finally

This post will be updated from time to time, as much as possible.


This post is licensed under CC BY-NC-SA 4.0. Please credit the author and include a link back when sharing.

Share this post:

Previous Post
Presales / Solution Architect Notes (1): What Does Presales Actually Do? Is Writing Bidding Proposals Hard?
Next Post
A Few Thoughts: Is This an Industry Winter?