Original Link: 手把手带你打造一个媲美 macOS 的 Linux 生产力系统 | 国光
Stop envying macOS’s exquisite interface; Linux can also achieve such refined and smooth interactive experiences. What are you waiting for!? Quickly make Linux your primary system~
Foreword
In the past month, I have installed many Linux distributions and deeply experienced them. I have tried Arch Linux and Kali Linux, used the radical Hyprland desktop as well as the traditional GNOME, and also the flashy DDE. In the end, I honestly chose Kubuntu 24.04:
![]()
The main reasons for choosing Kubuntu 24.04 are:
- Based on Ubuntu LTS 24.04 version, it is stable and has a relatively low learning threshold.
- Kubuntu comes with KDE 5 desktop, which currently has strong extensibility.
- KDE6 desktop is not compatible with Latte Dock, losing the essence of mimicking MacOS.
![]()
System Installation
This installation uses a dual-boot scheme, which I recommend if your hard drive is large enough, since gaming still requires Windows system!
It is recommended to select the default [English language] first, then select [Normal mode] installation, since we intend to use it as the main system:
![]()
Disk partitioning is critical. If you are dual-booting, it is recommended to manually partition the disk:
![]()
From my 2TB hard drive, I allocated over 800GB for Linux installation. The specific disk partition details are as follows:
![]()
Finally, here is a summary overview of my overall settings:
![]()
Basic Preparation
Update Sources
# Switch to root user
sudo -i
# Backup existing sources list
mv /etc/apt/sources.list /etc/apt/sources.list.bak
# Add USTC mirror source for Ubuntu 24.04
echo "deb https://mirrors.ustc.edu.cn/ubuntu/ noble main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb https://mirrors.ustc.edu.cn/ubuntu/ noble-security main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb https://mirrors.ustc.edu.cn/ubuntu/ noble-updates main restricted universe multiverse" >> /etc/apt/sources.list
echo "deb https://mirrors.ustc.edu.cn/ubuntu/ noble-backports main restricted universe multiverse" >> /etc/apt/sources.list
# Refresh and check speed
apt update
Basic Tools
With updated sources, install some essential tools for geeks:
# Classic essentials
sudo apt install curl wget git vim
# netstat for network outbound analysis
sudo apt install net-tools
# traceroute for path tracing
sudo apt install traceroute
Chinese Input
First, install related dependencies for Chinese language environment:
sudo apt install fcitx5-frontend-gtk2 fonts-arphic-ukai fonts-arphic-uming fonts-noto-cjk-extra language-pack-zh-hans libreoffice-help-zh-cn libreoffice-l10n-zh-cn
Then change the language to: [Simplified Chinese]
![]()
After changing, restart or log out to apply. Manually add the [Pinyin] input method:
![]()
Since Sogou Input Method does not yet support Fcitx5 input framework officially, we can’t roll back to Fcitx4 just for an input method:
![]()
Here I referenced this article: fcitx5_customizer — an optimization script making Fcitx5 more user-friendly for Simplified Chinese users
You only need a single command to optimize our Fcitx5 input method:
# Run online and use recommended config
curl -sSL https://www.debuggerx.com/fcitx5_customizer/fcitx5_customizer.sh | bash -s -- recommend
You can configure it further according to your preferences:
![]()
Later, we can improve the input method skin in settings:
![]()
I recommend using the minimalist and elegant Dracula skin. With this configuration, our built-in input method has become very smooth — who needs Sogou Input Method anymore!
Language Environment
Manually edit the locale file to ensure it’s all Chinese:
sudo vim /etc/default/locale
Edit content as follows:
LANG=zh_CN.UTF-8
LC_ADDRESS=zh_CN.UTF-8
LC_IDENTIFICATION=zh_CN.UTF-8
LC_MEASUREMENT=zh_CN.UTF-8
LC_MONETARY=zh_CN.UTF-8
LC_NAME=zh_CN.UTF-8
LC_NUMERIC=zh_CN.UTF-8
LC_PAPER=zh_CN.UTF-8
LC_TELEPHONE=zh_CN.UTF-8
LC_TIME=zh_CN.UTF-8
Switching Desktop Environment
Kubuntu 24.04 comes with KDE 5 defaulting to the X11 desktop protocol, which is really a relic from the 1980s. Although compatibility is decent, times have changed. We need to embrace the Wayland protocol to enjoy smoother desktop experience, better touchpad gesture support, finer HiDPI display scaling details, better support for high-res and high refresh rate monitors, and more elegant and efficient desktop workflow…
So let’s directly start installation:
sudo apt install plasma-workspace-wayland
After installation, reboot and upon next login choose the Wayland session at the bottom left of the login screen. You can then experience a much smoother Linux desktop.
Input Compatibility
Resolve Warnings
When using Wayland protocol, Fcitx penguin input method raises warnings:
![]()
Following the prompt, set as instructed:
![]()
After logout or reboot, a new warning appears:
![]()
Detected GTK_IM_MODULE and QT_IM_MODULE set and Wayland input frontend is working properly. It is recommended not to set GTK_IM_MODULE and QT_IM_MODULE to use the Wayland input frontend. For more info see https://fcitx-im.org/wiki/Using_Fcitx_5_on_Wayland#KDE_Plasma
According to official advice, this happens because Kubuntu globally sets these environment variables to maintain compatibility with X11 applications:
$ env |grep fcitx
GTK_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
SDL_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
Fcitx5’s official position is that these three variables do not need to be set:
GTK_IM_MODULE & QT_IM_MODULE & SDL_IM_MODULE
Applications running in XWayland compatibility mode only need:
XMODIFIERS=@im=fcitx
For applications like chromium/electron, it is recommended to start with these parameters:
--enable-features=UseOzonePlatform --ozone-platform=wayland --enable-wayland-ime
Thus, the fix is to manually unset these three environment variables:
# Switch to root user
sudo -i
# Override /etc/environment variables
echo "unset GTK_IM_MODULE" >> ~/.profile
echo "unset QT_IM_MODULE" >> ~/.profile
echo "unset SDL_IM_MODULE" >> ~/.profile
This resolves the Wayland warning.
Application Optimization
After this setting, applications natively friendly with Wayland input method, such as Firefox browser, should have input methods working at their best. However, some conservative apps show noticeable cursor and panel offset with input method, so they still require manually adding the environment variables back.
For example, for the Typora app I’m using to write this article, find the Typora icon in the application menu, right-click “Edit Application,” and manually add back these variables:
GTK_IM_MODULE=fcitx SDL_IM_MODULE=fcitx QT_IM_MODULE=fcitx
![]()
This makes the input method work optimally in Typora.
For other apps with input issues, you can imitate this approach.
Usage Tips
Common shortcuts for fcitx5 input method on Linux:
| Shortcut Combination | Description |
|---|---|
Space |
Switch input method |
| Left Shift | Temporarily switch input method |
Some users might find that temporarily switching input with Left Shift sometimes doesn’t work, but sometimes it does. After several days of testing, I found this rule:
In the application where you want to input, first manually switch the input method using Ctrl + Space, then Left Shift works properly. The experience afterward is as smooth as on Windows.
Operation Optimization
To do the job well, first sharpen the tools. Before optimizing basic operations, let’s learn the default KDE5 keyboard shortcuts and touchpad gestures:
Keyboard Shortcuts
KDE comes with many efficient shortcuts. Here are the ones I often use:
| Shortcut | Description |
|---|---|
| Super (Windows key) | Open application menu |
| F11 | Fullscreen application |
| Super + W or Top-left hot corner | Open all workspace views |
| Super + E | Open file manager |
| Super + L | Lock screen |
| Ctrl + Alt + Del | Open logout menu |
| Super + D or Ctrl + F12 | Show desktop |
| Alt + Tab | Switch to next window |
| Alt + Shift + Tab | Switch to previous window |
| Ctrl + Super + Left/Right Arrow | Switch workspace left/right |
| Alt + Space | Open KRunner search |
| Ctrl + Alt + T | Open default terminal |
| Super + Arrow keys | Move window up/down/left/right |
| Alt + F4 | Close current window |
| Super + PgUp | Maximize window |
| Super + PgDn | Minimize window |
| Super + Plus | Partial screen magnifier zoom-in |
| Super + Minus | Partial screen magnifier zoom-out |
| PrtSc | Invoke Spectacle full-screen screenshot |
| Super + PrtSc | Invoke Spectacle window screenshot |
| Shift + Super + PrtSc | Invoke Spectacle area screenshot |
Touchpad Gestures
As a laptop user, touchpad gestures are essential. Here are the basic KDE5 gestures:
| Gesture | Description |
|---|---|
| Two-finger tap | Right-click |
| Two-finger scroll | Scroll page up/down |
| Three-finger horizontal scroll | Switch workspace |
| Four-finger horizontal scroll | Switch workspace |
| Four-finger swipe up | Open all workspace views |
| Four-finger swipe down | Show all windows in current workspace |
| Four-finger pinch | Open all workspace and window views |
macOS-style Enhancements
If you are an experienced macOS user, you can gradually align mouse and touchpad to macOS work style:
![]()
Touchpad settings details:
![]()
Numeric Keypad
If your laptop has a built-in numeric keypad, it’s recommended to enable it in settings:
![]()
Keyboard Response
[Settings] - [Input Devices] - [Keyboard] allows you to increase cursor movement speed to make moving the cursor over long commands smoother:
![]()
Proxy Tools
To do things well, first sharpen the tools. In the domestic environment, using proxy tools is essential for elegantly configuring your Linux system. Hence after the basic configuration, I start directly on proxy configuration topics.
“Watt Toolkit” is an open-source, cross-platform, free, and multifunctional Steam toolbox. On the surface, it’s a game accelerator, but it also proxies sites like Github and other common foreign websites. Official site: https://steampp.net
The official automated installation script makes installation very convenient:
curl -sSL https://steampp.net/Install/Linux.sh | bash
Choose the default path to create corresponding shortcuts:
![]()
Manually grant write permission to our hosts file:
sudo chmod a+w /etc/hosts
So you can start acceleration directly. The principle is modifying the hosts file:
![]()
However, accessing Github still gives certificate-related issues:
![]()
We follow the official solution: Linux Certificate Import Tutorial
Locate the local certificate folder:
![]()
Import it directly into Firefox browser:
![]()
Then you can elegantly access Github using Firefox:
![]()
Clash Verge
Official project: GitHub - clash-verge-rev/clash-verge-rev: A modern GUI client based on Tauri, designed to run in Windows, macOS and Linux for tailored proxy experience
Download the latest deb package from release and install using gdebi:
# Directly install with gdebi
sudo gdebi clash-verge_1.7.7_amd64.deb
# But got a warning
This package cannot be installed
Dependency is not satisfiable: libwebkit2gtk-4.0-37
According to official docs, Ubuntu 24.04 requires additional libwebkit2gtk and libjavascriptcoregtk dependencies. Download and install the corresponding versions according to architecture.
sudo gdebi libjavascriptcoregtk-4.0-18_2.43.3-1_amd64.deb
sudo gdebi libwebkit2gtk-4.0-37_2.43.3-1_amd64.deb
If you encounter tricky network problems later, try enabling Clash’s Tun mode for simpler and more thorough proxying:
![]()
Shadowsocks Electron
The classic old resource is still retained in the Starfire Store: spk://store/network/shadowsocks-electron
I tested SSR subscription link parsing normally. If worried about Clash exposing your IP, you can try this:
![]()
proxychains4
A command line proxy tool on Linux, also commonly used in intranet penetration:
sudo apt install proxychains4
Config file path is:
sudo vim /etc/proxychains4.conf
Test proxy effect:
proxychains4 curl https://www.google.com
```# Fruit-themed Beautification
## Kvantum
Kvantum is a highly customizable open-source theme engine specifically designed for Qt-based applications. It allows users to define and apply complex themes through SVG (Scalable Vector Graphics) files to change the appearance of applications.
Installation is also quite simple:
sudo add-apt-repository ppa:papirus/papirus
sudo apt update
sudo apt install qt5-style-kvantum qt5-style-kvantum-l10n qt5-style-kvantum-themes
## WhiteSur-kde
Since the appearance style after macOS Big Sur is basically similar, we leveraged the [WhiteSur-kde](https://github.com/vinceliuice/WhiteSur-kde) project this time. Installation is also straightforward:
git clone GitHub - vinceliuice/WhiteSur-kde: MacOS big sur theme for kde plasma
cd WhiteSur-kde
./install.sh
Then just select the theme we just installed in the settings. Guoguang personally prefers a dark theme:

This basically forms a prototype of the appearance:

## WhiteSur-icon-theme
For a more realistic look, we need to install macOS-related icon themes. Installation is also quite simple:
git clone GitHub - vinceliuice/WhiteSur-icon-theme: MacOS Big Sur style icon theme for linux desktops
cd WhiteSur-icon-theme
./install.sh
After configuration, enable this icon theme in settings. The overall effect is already very close to macOS:

## Mouse Cursor Style
For the mouse cursor style, Guoguang recommends: [Capitaine Cursors](https://store.kde.org/p/1148692). The r4 version is more friendly to high-resolution screens and KDE, so the final choice is the `capitaine-cursors-light-r4.tar.gz` cursor style version:

## Latte Dock
Another appearance feature of macOS is the Dock. Fortunately, KDE5 has the famous [Latte Dock](https://github.com/KDE/latte-dock). Installation is also quite straightforward:
sudo apt install latte-dock
However, using it directly after installation is somewhat lacking in details:

Then right-click on Latte Dock, select [Configure Latte Dock] - [Layout Editor], find the bottom-right [Import] - [Import from KDE Store]. This time we use the WhiteSur latte appearance style matching our theme:

The overall effect is as follows:

## Widgets Recommendation
### Widget Overview
### Widget Optimization
* **Window Title Applet**
Below is a setting detail closer to macOS:

* **Control Centre**
Download the https://github.com/Prayag2/kde_controlcentre/releases/download/0.1.0/kde_controlcentre0.1.0.tar.gz file from Github, then manually install via command line:
kpackagetool5 -i kde_controlcentre0.1.0.tar.gz
* **CatWalk**
Since there are already other plugins that can display CPU usage, for a cleaner interface, I only recommend using the cat icon here:

* **Resources Monitor - fork**
The default font size of this visual performance monitor is too small. It is recommended to set it a bit larger yourself:

* **Netspeed Widget**

## Right Sidebar
With Latte Dock, we can achieve a sidebar effect similar to macOS. First, make sure to install the [Latte SideBar Button](https://store.kde.org/p/1365044) plugin, which enables the sidebar.
### Add Panel
First, edit the current Latte Dock configuration to manually add a [spaced-aligned] [empty panel] on the [right side]:

### Panel Behavior
Find the panel you just added with the mouse, right-click [Edit Panel], keep the type as the default [Panel], then enable [Dock to top] and [Dock to bottom], then choose [Auto-hide sidebar], and check the options you like as needed:

### Panel Appearance
Guoguang’s tuning parameters for this part are as follows:

### Panel Effects
It is recommended to install the [Dash To Panel] task indicator decoration:

### Panel Widgets
After extensive testing, Guoguang’s final sidebar layout order from top to bottom is: [HTML Clock](https://store.kde.org/p/1473016) - Calendar - Performance monitoring data
First add the [HTML Clock](https://store.kde.org/p/1473016) widget, then set the layout to the comprehensive style as shown in the image above, then enable "Colorize this applet":

Next, add a system built-in calendar widget below. It is not recommended to enable "Colorize this applet" on the calendar:

Finally, add the applet grouping below:

Here, Guoguang has dragged and added CPU usage, memory usage, and network speed into the applet grouping respectively. It is not recommended to enable "Colorize this applet". Other details are all line charts. Whether to show titles or specific sensors is up to personal preference.
* **CPU Load**

* **Memory Usage**

* **Network Monitoring**

## Overall Effect
### Kvantum
First, select [kvantum] in Application Style:

Then open [Kvantum Manager], select the macOS style [WhiteSurDark] theme via [Change / Delete Theme], then click [Apply Theme]:

Next, enable all possible effects in [Configure Current Theme]:

### Layout Arrangement
The overall top menu bar layout from left to right is as follows:
[Kpple Menu](https://store.kde.org/p/1384156)-[Window Title](https://store.kde.org/p/1274218)- Global Menu - Panel Spacer - Virtual Desktop Switcher -[Fokus](https://store.kde.org/p/1308861)-[Translator](https://store.kde.org/p/1395666)-[CatWalk](https://store.kde.org/p/2055225)-[Thermal Monitor](https://store.kde.org/p/2070765)-[Power Monitor](https://store.kde.org/p/1466838)-[Resources Monitor - fork](https://store.kde.org/p/1527636)- Network Speed -[Netspeed Widget](https://store.kde.org/p/998895)- System Tray - Clipboard - Audio Volume - Bluetooth - Network - Battery and Brightness - Search -[Control Centre](https://github.com/Prayag2/kde_controlcentre)- Digital Clock -[Ltte SideBar Button](https://store.kde.org/p/1365044)
For the system tray, Guoguang suggests hiding everything that can be hidden. What we need can be individually added to the menu bar. The system tray should focus solely on tray-related tasks:

### Appearance Details
* [Global Theme] - [WhiteSur-dark]
* [Global Theme] - [Application Style] - [kvantum]
* [Global Theme] - [Plasma Look and Feel] - [WhiteSur Dark Apple]
* [Global Theme] - [Window Decorations] - [Sweet-Dark-transparent](https://store.kde.org/p/1286856)
* [Global Theme] - [Colors] - [WhiteSurDark]
* [Global Theme] - [Icons] - [WhiteSur-dark]
* [Global Theme] - [Cursors] - [Capitaine Cursors Light]
* [Global Theme] - [Splash Screen] - [Orchis-dark]
* [Global Theme] - [Boot Splash] - [apple-mac-plymouth]
### Desktop Effects
This is Guoguang's recommendation: enable all effects that are acceptable:

The window transparency needs to be set separately, which improves the overall blur aesthetics a bit:

# System Enhancements
## Driver Improvement
By default, for this laptop (Machinery Revolution Infinite 15X), there is no domestic Ethernet card driver under Linux. Fortunately, the official website provides a download link for the driver:
[Ethernet Chip - Motorcomm Semiconductor Ltd.](https://www.motor-comm.com/product/ethernet-control-chip)

The driver installation is simple; install dependencies for compiling the driver, then just run the script:
Switch to root
sudo -i
Run driver installation script
./yt_nic_install.sh

## Screenshot Enhancement
Kubuntu’s default Spectacle screenshot tool is decent, but not as powerful and smooth as [Snipaste](https://zh.snipaste.com/). The only thing to note is that many default shortcuts of this screenshot software conflict with KDE desktop shortcuts, so you need to set your own shortcuts to avoid conflicts:

## Mouse Enhancement
In the Discover store, install [Piper], which facilitates easy custom management of our mouse so that side buttons can be fully utilized:

## Categorization and Grading
The built-in KDE application classification does not satisfy Guoguang's needs. It is recommended to re-classify applications using KDE's own [KDE Menu Editor]:

## Traffic Monitoring
[OpenSnitch](https://github.com/evilsocket/opensnitch) is an interactive GNU/Linux application firewall, inspired by Little Snitch.
Install daemon
sudo gdebi opensnitch_1.6.6-1_amd64.deb
Enable daemon on boot
sudo systemctl enable --now opensnitch.service
Install graphical interface
sudo gdebi python3-opensnitch-ui_1.6.6-1_all.deb
This allows you to have full visibility of all application network traffic:

This feeling is the true Linux experience: I want to know all traffic clearly:

## File Transfer
No need to envy Apple’s AirDrop ecosystem. With the open-source project [localsend](https://github.com/localsend/localsend), we can easily achieve this. Installation is simple; just download the deb package from the [official website](https://localsend.org/zh-CN/download?os=linux):
sudo gdebi LocalSend-1.15.4-linux-x86-64.deb

## Code Server
## Installation Guide
Download the latest deb package directly from the official project’s [Release](https://github.com/coder/code-server/releases) page and install:
sudo gdebi code-server_4.93.1_amd64.deb
The default configuration is stored at:
cat ~/.config/code-server/config.yaml
Start Code Server directly with:
code-server
## CrossOver
### Installation Overview
If you really plan to use Linux as your main system and do not want to run some essential .exe programs in a virtual machine, you can check out [CrossOver](https://www.codeweavers.com/). It offers about a two-week trial, enough for you to experience:

If you are accustomed to it, consider buying an official activation code for around 80 RMB on secondary markets. If after purchase the activation fails due to registration issues, you can manually download the license file from the official website and place it under the following directory in CrossOver:
/opt/cxoffice/etc

### Software Comparison
Below is a comparison between Audacity running through CrossOver and the official AppImage version. It shows that the paid CrossOver is really worth it:

On the left is the paid CrossOver, on the right is the official AppImage version. It can be seen that the CrossOver experience is very close to Windows, much more refined.
## Software Performance
Here are some screenshots of software working well under CrossOver:
* **NetEase Cloud Music**

* **Notepad++**

* **ResourceHacker**

### Firefox Portable Penetration Version

## Command Environment
The default bash shell is too plain, so it is recommended to use the zsh shell environment. Kali Linux now defaults to the zsh shell environment, which truly supports more plugins and can improve our command input efficiency.
Install zsh
sudo apt install zsh
Change default shell to zsh
chsh -s /bin/zsh
Install oh-my-zsh
sh -c “$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)”
Log out or reboot for zsh to take effect as the default shell.
Recommended classic plugins for zsh installation:
Quick directory switching
sudo apt install autojump
Auto-suggest next commands
git clone GitHub - zsh-users/zsh-autosuggestions: Fish-like autosuggestions for zsh $ZSH_CUSTOM/plugins/zsh-autosuggestions
Command syntax checking
git clone GitHub - zsh-users/zsh-syntax-highlighting: Fish shell like syntax highlighting for Zsh. $ZSH_CUSTOM/plugins/zsh-syntax-highlighting
Enable these plugins in `~/.zshrc`:
plugins=(git autojump zsh-autosuggestions zsh-syntax-highlighting)
Additional `~/.zshrc` configurations:
Disable URL backslash escaping
DISABLE_MAGIC_FUNCTIONS=“true”
Disable automatic updates in oh-my-zsh
zstyle ‘:omz:update’ mode disabled
Careful users will notice that switching to root still shows the bash shell, which can be a bit uncomfortable for perfectionists.
Let's also configure the zsh shell for the root user. First, manually set zsh as the default shell for root:
Switch to root
sudo -i
Set root user’s default shell to zsh
chsh --shell /bin/zsh
Then switch back to the normal user and create symbolic links to link the zsh configuration from our normal user's home:
sudo ln -s $HOME/.oh-my-zsh /root/.oh-my-zsh
sudo ln -s $HOME/.zshrc /root/.zshrc
This should basically work well, but you may still see some warning messages:

Add this line in `~/.zshrc` to suppress the warning:
ZSH_DISABLE_COMPFIX=“true”
Now our root user can smoothly use zsh:

## Command Beautification
### Font Installation
To ensure the icons in the fancy configurations below display properly, we recommend setting up your terminal fonts ahead of time.
Icon font download link: [Nerd Fonts - Iconic font aggregator, glyphs/icons collection, & fonts patcher](https://www.nerdfonts.com/font-downloads)

Actually, downloading the first one, 【0xProtoNerdFont】, already has pretty good effect. Of course, you can try more fonts yourself.
Font installation is simple—right-click on the font and install it as a 【system font】:

### Terminal Configuration
The built-in schemes are read-only and cannot be edited, so we need to create our own configuration scheme:

Just configure it based on your preference. Here, I only emphasize configuring the font we just installed:

### Fancy Decorations
This time I'm using my previous project: https://github.com/sqlsec/fastfetch
Fastfetch is a tool similar to [neofetch](https://github.com/dylanaraps/neofetch), used for fetching system info and displaying it beautifully. It is mainly written in C language, with performance and customizability in mind. This project is a Fastfetch plugin mainly integrating Pokémon display and other playful images, currently only tested on Linux and macOS.
First, install Fastfetch:
sudo add-apt-repository ppa:zhangsongcui3371/fastfetch
sudo apt update
sudo apt install fastfetch
Then install the Pokémon for terminal:
git clone Phoney badger / pokemon-colorscripts · GitLab
cd pokemon-colorscripts
sudo ./install.sh
Test if it works
pokemon-colorscripts -r --no-title
Import our configuration:
Backup original config (if this fails, no default config exists)
mv $HOME/.config/fastfetch $HOME/.config/fastfetch.bak
Enter .config directory
cd $HOME/.config
Download, unzip, then delete
wget https://github.com/sqlsec/fastfetch/releases/download/v0.1/fastfetch-for-Linux.zip
unzip fastfetch-for-Linux.zip && rm fastfetch-for-Linux.zip
The final fancy fastfetch effect looks like this:

If you want the root user also to use the fancy fastfetch, you can create a symbolic link to the config folder in the normal user's home:
sudo ln -s $HOME/.config/fastfetch /root/.config/fastfetch
To have a different random Pokémon appear every time you open zsh, manually append this to the zsh configuration:
echo “pokemon-colorscripts -r --no-title” >> ~/.zshrc
### Theme Beautification
#### Download and Install Theme
This time we use the famous powerlevel10k theme. First, git clone the theme into our theme directory:
git clone --depth=1 GitHub - romkatv/powerlevel10k: A Zsh theme ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
Enable the new theme in `~/.zshrc`:
ZSH_THEME=“powerlevel10k/powerlevel10k”
#### Theme Configuration Wizard
Reload the zsh terminal to automatically enter the powerlevel10k theme configuration wizard:
zsh
Answer y or n according to the prompts. Here are some questions from the wizard:
Does this look like a diamond (rotated square)?
Does this look like a diamond (rotated square)?
Does this look like a lock?
Does this look like a lock?
Does this look like an upwards arrow?
Does this look like an upwards arrow?
Do all these icons fit between the crosses?
Do all these icons fit between the crosses?
After the questions, select a prompt style. I definitely chose the coolest Rainbow style:

For encoding, it is recommended to use a more standard and advanced Unicode encoding:

Other settings can be customized to your liking; I won't list them one by one:

If you accidentally misconfigure during this process, you can run:
p10k configure
to redo the configuration wizard.
#### Fix Warning Issues
After configuring the theme and reloading zsh, you may find warning messages:

It turns out our config has problems here:

Manually edit the `.p10k.zsh` configuration file:

The final effect of our command line terminal is as follows:

# Remote Environment
## Penetration Tool
This chapter mainly uses ZeroTier to build a penetration environment. This is my personal productivity setup; friends can learn about it but don't have to copy it exactly.
First, we need to use the [xubiaolin/docker-zerotier-planet: One-minute private ZeroTier-planet service deployment (github.com)](https://github.com/xubiaolin/docker-zerotier-planet) project to build our own ZeroTier relay server. Each of our private servers has its own corresponding planet file; using different planet files connects to different ZeroTier services.
First, install the official ZeroTier client locally:
curl -s https://install.zerotier.com | sudo bash
After installation, enable autostart and join the network directly:
Enable zerotier startup
systemctl enable zerotier-one.service
Backup official planet file
sudo mv /var/lib/zerotier-one/planet /var/lib/zerotier-one/planet.bak
Download and replace your planet
xxxxxxx omitted here xxxxxxxx
Start zerotier service
systemctl start zerotier-one.service
We use the Docker version for the other client:
docker run --name zerotier-one --device=/dev/net/tun --net=host --cap-add=NET_ADMIN --cap-add=SYS_ADMIN -v /home/x-x/Documents/Tools/zerotier:/var/lib/zerotier-one --restart=always -d zerotier/zerotier
Set `/home/x-x/Tools/zerotier/` to your own local folder.
Because two ZeroTier client ports conflict, only one can run at a time, so we need to manually change the Docker port to another port:
vim /var/lib/zerotier-one/local.conf
Here I changed it to port 9333:

After configuration, you can use two different ZeroTier planets simultaneously:

## SSH Server
Kubuntu only has an SSH client by default, so if you want to remotely control this machine from other devices, you need to install the SSH server:
Install SSH Server
sudo apt install openssh-server
Enable SSH service at startup
sudo systemctl enable ssh.service
# Virtual Environment
## QEMU-KVM
QEMU is the native virtualization solution on Linux and the experience is very smooth. Installing it on Ubuntu is also simple:
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients cinst bridge-utils virt-manager virt-viewer
Enable startup and start the libvirt service:
sudo systemctl enable libvirtd
sudo systemctl start libvirtd
Add the current user to `libvirt` and `kvm` groups to manage without root privileges:
sudo usermod -aG libvirt (whoami) sudo usermod -aG kvm (whoami)
Reboot to apply changes.
Open the virtual system manager using `virt-manager`. The GUI is easy to operate, and we can create our own Windows virtual machine.

Manually add a SATA CDROM device type, and set the source path to our system image:

In the boot menu, check the CD image we just added, then reboot to install the system directly:

To improve the VM performance and user experience, we also need to install virtio drivers (similar to VMware tools).
Official virtio download at: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/
Download the latest virtio-win.iso, then mount it to the VM and run 【virtio-win-guest-tools.exe】 to install:

## Docker
On Ubuntu, you can easily install Docker using the official automatic installation script:
Automatic install script
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
Add current user to docker group
sudo groupadd docker
sudo usermod -aG docker whoami
Reboot to apply changes
reboot
Verify Docker version output
docker version
After Docker installation, let’s prepare to install Docker Compose. First, check the latest stable version on the [official project](https://github.com/docker/compose/releases), then manually download and set executable permissions:
Download version 2.29.7 (latest at time of writing)
sudo curl -L “https://github.com/docker/compose/releases/download/v2.29.7/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose
Set executable permission
sudo chmod +x /usr/local/bin/docker-compose
Check Docker-compose version
$ docker-compose version
Docker Compose version v2.29.7
Finally, configure Docker to start automatically on boot:
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
## Waydroid
### Installation Guide
[Waydroid](https://waydro.id/) uses Linux namespaces (user, pid, uts, net, mount, ipc) to run a complete Android system in a container and provides Android applications on any GNU/Linux-based platform (arm, arm64, x86, x86_64).
Import repo source
curl https://repo.waydro.id | sudo bash
Install waydroid
sudo apt install waydroid -y
By default, click Next; before clicking Download, it is recommended to enable TUN mode in Clash to download and install:

### Display Interface
The default displayed interface looks a bit bulky and uncomfortable. We can modify the Hyprland configuration file to customize the startup interface size:
waydroid prop set persist.waydroid.width 480
waydroid prop set persist.waydroid.height 900
Restart waydroid to take effect:
waydroid session stop
If you want to move the window, use Super + mouse to drag.
### ARM Translation
Although this emulator is very smooth, by default, it cannot run ARM APKs, and there are few native x86 apps in China, so it is still necessary to install the ARM-related translation dependencies.
Clone project
git clone GitHub - casualsnek/waydroid_script: Python Script to add OpenGapps, Magisk, libhoudini translation library and libndk translation library to waydroid !
cd waydroid_script
Use pyenv virtual environment 3.8.20
pyenv local 3.8.20
Update pip to the latest version
python -m pip install --upgrade pip -i Simple Index
Install dependencies related to the script
python -m pip install -r requirements.txt -i Simple Index
Run the script:
sudo -i
python main.py
Here are my options for the CLI graphical interface for your reference:

Now you can normally open the commonly used apps:

### Basic Usage
Shut down the current session
waydroid session stop
Restart the waydroid service
sudo systemctl restart waydroid-container.service
### Development Testing
Install adb development tool
apt install adb
Install apk package
waydroid app install /xxx/xxx/xx.apk
Connect via adb using IP (check locally)
adb connect 192.168.x.x:5555
Manually install BP certificate:
Convert BP certificate
openssl x509 -inform DER -in cacert.der -out cacert.pem
Calculate BP certificate hash
cert_hash=$(openssl x509 -subject_hash_old -in cacert.pem | head -1)
Create certificate folder
sudo mkdir -p /var/lib/waydroid/overlay/system/etc/security/cacerts/
Import certificate
sudo cp cacert.pem /var/lib/waydroid/overlay/system/etc/security/cacerts/${cert_hash}.0
Alternatively, you can also directly import the certificate by using the [waydroid_script](https://github.com/casualsnek/waydroid_script) project:
sudo python3 main.py install mitm --ca-cert cacert.pem
Then manually set the emulator's local proxy:
adb shell settings put global http_proxy “ip:port”
To cancel the proxy, use the following commands:
adb shell settings delete global global_http_proxy_host
adb shell settings delete global global_http_proxy_port
adb shell settings delete global http_proxy
Now you can test packet capture normally.
## Genymotion
### Basic Installation
Genymotion download and installation is simple; just directly [download from the official website](https://www.genymotion.com/product-desktop/download/) the corresponding installation package (default installs in the current directory, prepare the directory in advance):
chmod +x genymotion-3.7.1-linux_x64.bin
./genymotion-3.7.1-linux_x64.bin
Remember to register the corresponding account, although it is the free version:

On the surface, root permission is not supported to be enabled:

But actually, manually entering adb shows you can still directly switch to the root user:

### ARM Translation
Although this emulator is very smooth, by default, it cannot run ARM APKs, and there are few native x86 apps in China, so it is still necessary to install the ARM-related translation dependencies.
This translation uses the https://github.com/niizam/Genymotion_A11_libhoudini project. Below are some operations details:
Open the Android 11 emulator, then operate directly in the command line below:
Enter adb, switch to root user, and mount the system root directory as read-write
adb shell
su
mount -o rw,remount /
Write content
echo ‘ro.product.cpu.abilist=x86_64,x86,arm64-v8a,armeabi-v7a,armeabi
ro.product.cpu.abilist32=x86,armeabi-v7a,armeabi
ro.product.cpu.abilist64=x86_64,arm64-v8a
ro.vendor.product.cpu.abilist=x86_64,x86,arm64-v8a,armeabi-v7a,armeabi
ro.vendor.product.cpu.abilist32=x86,armeabi-v7a,armeabi
ro.vendor.product.cpu.abilist64=x86_64,arm64-v8a
ro.odm.product.cpu.abilist=x86_64,x86,arm64-v8a,armeabi-v7a,armeabi
ro.odm.product.cpu.abilist32=x86,armeabi-v7a,armeabi
ro.odm.product.cpu.abilist64=x86_64,arm64-v8a
ro.dalvik.vm.native.bridge=libhoudini.so
ro.enable.native.bridge.exec=1
ro.enable.native.bridge.exec64=1
ro.dalvik.vm.isa.arm=x86
ro.dalvik.vm.isa.arm64=x86_64
ro.zygote=zygote64_32’ | tee -a /system/build.prop >> /system/vendor/build.prop
Download system.zip from the official [Release](https://github.com/niizam/Genymotion_A11_libhoudini/releases) page, drag it directly into the emulator, and confirm flashing according to the prompt:

After flashing is completed, restart the emulator directly.
Now you can normally open the commonly used apps:

# Development Environment
## Git
If you want to use GitHub to collaborate on projects, GitHub will show the corresponding commit avatar based on our local Git configuration:
Configure email
➜ git config --global user.email “xxxxx@xxx.com”
Configure username
➜ git config --global user.name “Guoguang”
The reason why the two commit records in the middle below have no avatars is that the email above is not configured:

## Java
Whether it is the [Oracle JDK](https://www.oracle.com/hk/java/technologies/downloads/) or the OpenJDK that comes with Linux, we can install them all by ourselves; the more the better. With [jenv](https://github.com/jenv/jenv), we can switch between them flexibly.
* [**OracleJDK - JDK8**](https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html)
The classic JDK8 definitely needs to be installed:
Extract to /usr/lib/ directory
sudo tar -zxvf jdk-8u411-linux-x64.tar.gz -C /usr/lib/
Edit /etc/profile configuration file
sudo vim /etc/profile
Add the following content at the end:
JAVA_HOME=/usr/lib/jdk1.8.0_411
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
export PATH JAVA_HOME CLASSPATH
Reload the configuration file to take effect:
Reload the configuration file
source /etc/profile
Verify if installed successfully
java -version
* [**OracleJDK - JDK17**](https://www.oracle.com/hk/java/technologies/downloads/#java17)
Download the deb package from the official website and install directly
sudo gdebi jdk-17_linux-x64_bin.deb
Default installation path is
/usr/lib/jvm/jdk-17.0.12-oracle-x64/
* [**OracleJDK - JDK21**](https://www.oracle.com/hk/java/technologies/downloads/#java21)
Download the deb package from the official website and install directly
sudo gdebi jdk-21_linux-x64_bin.deb
Default installation path is
/usr/lib/jvm/jdk-21.0.4-oracle-x64/
* [**OracleJDK - JDK23**](https://www.oracle.com/hk/java/technologies/downloads/#java23)
Download the deb package from the official website and install directly
sudo gdebi jdk-23_linux-x64_bin.deb
Default installation path is
/usr/lib/jvm/jdk-23-oracle-x64/
* OpenJDK series
Path: /usr/lib/jvm/java-8-openjdk-amd64/
sudo apt install openjdk-8-jdk
Path: /usr/lib/jvm/java-11-openjdk-amd64/
sudo apt install openjdk-11-jdk
Path: /usr/lib/jvm/java-17-openjdk-amd64/
sudo apt install openjdk-17-jdk
Path: /usr/lib/jvm/java-21-openjdk-amd64/
sudo apt install openjdk-21-jdk
Although we can use the system default:
update-alternatives --config java
to switch the system-wide default Java version simply and efficiently, it does not support project directory-level Java version management:

At this time, we can consider the more flexible `jenv`, which can manage and switch Java versions globally, per user, and per project.
Installing jenv is not complicated:
Clone the project
git clone GitHub - jenv/jenv: Manage your Java environment ~/.jenv
Manually append zshrc configuration file
echo ‘export PATH=“$HOME/.jenv/bin:PATH"' >> ~/.zshrc echo 'eval "(jenv init -)”’ >> ~/.zshrc
Here are the basic usages:
View current Java version
jenv version
Manually add local Java Home paths
jenv add /usr/lib/jdk1.8.0_411/
jenv add /usr/lib/jvm/jdk-17.0.12-oracle-x64/
jenv add /usr/lib/jvm/jdk-21.0.4-oracle-x64/
jenv add /usr/lib/jvm/jdk-23-oracle-x64/
jenv add /usr/lib/jvm/java-8-openjdk-amd64/
jenv add /usr/lib/jvm/java-11-openjdk-amd64/
jenv add /usr/lib/jvm/java-17-openjdk-amd64/
jenv add /usr/lib/jvm/java-21-openjdk-amd64/
List all versions currently manageable by jenv
jenv versions
global global setting, generally not recommended to change global setting
➜ jenv global
shellSession settings only affect the current shell session
➜ jenv shell
Unset shell session setting
➜ jenv shell --unset
local setting only affects the current folder
➜ jenv local
## Cargo
Cargo is the [Rust](https://www.rust-lang.org/) [*package manager*](https://doc.rust-lang.org/cargo/appendix/glossary.html#package-manager). Cargo downloads dependencies of Rust packages, compiles your packages, creates distributable packages, and uploads them to [crates.io](https://crates.io/)
Installing on Ubuntu is also quite simple:
curl https://sh.rustup.rs -sSf | sh
## Redis
Set up redis server
docker run --name redis-server -p 6379:6379 -d redis:7.2
Install redis client
sudo apt install redis-tools
## Python
Mainly using the pyenv project to manage our Python versions, project address: https://github.com/pyenv/pyenv
For specific usage please refer to the official documentation, here I only briefly record a few points:
Install pyenv
curl https://pyenv.run | bash
Manually edit the .zshrc configuration file and append at the end:
export PYENV_ROOT=“$HOME/.pyenv”
[[ -d $PYENV_ROOT/bin ]] && export PATH=“$PYENV_ROOT/bin:PATH"
eval "(pyenv init -)”
Simple pyenv usage:
List installed Python versions
➜ pyenv versions
Check current Python version
➜ pyenv version
List installable versions
➜ pyenv install -l
Install and uninstall pypy3.8-7.3.11
➜ pyenv install pypy3.8-7.3.11
➜ pyenv uninstall pypy3.8-7.3.11
Version switching is indeed convenient, installed versions are all under `~/.pyenv/versions` directory:
global setting (usually not recommended to change global setting)
➜ pyenv global
shell session setting (only affects current shell session)
➜ pyenv shell
unset shell session setting
➜ pyenv shell --unset
local setting (only affects current folder)
➜ pyenv local
The priority hierarchy for pyenv global, local, shell is: shell > local > global
If warnings appear when installing common Python versions via pyenv, manually install common dependencies:
sudo apt install -y
build-essential
libbz2-dev
libssl-dev
libreadline-dev
libsqlite3-dev
zlib1g-dev
libncurses5-dev
libncursesw5-dev
libffi-dev
liblzma-dev
tk-dev
uuid-dev
libgdbm-dev
libgdbm-compat-dev
If root user also needs to use pyenv, you can link the normal user's home `.pyenv` folder configuration with a symbolic link:
sudo ln -s $HOME/.pyenv /root/.pyenv
## Node.js
I personally don't use Node.js much, mainly to run Hexo blog and write knowledge points using Gitbook. Because Node.js versions are rather chaotic, here mainly manage configuration via nvm.
Install nvm
➜ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
Append the following configuration to .zshrc (if exists, no need to duplicate)
export NVM_DIR=“$HOME/.nvm”
[ -s “$NVM_DIR/nvm.sh” ] && . “$NVM_DIR/nvm.sh”
[ -s “$NVM_DIR/bash_completion” ] && . “$NVM_DIR/bash_completion”
Check version info
➜ zsh
➜ nvm --version
0.40.3
Check current node version
➜ nvm version
Install latest stable node
➜ nvm install stable
List all remote available versions
➜ nvm ls-remote
Install specified version
➜ nvm install v18.20.4
➜ nvm install
List all installed versions
➜ nvm ls
Uninstall specified version
➜ nvm uninstall
Switch to specified node version
➜ nvm use
Show current version
➜ nvm current
## MySQL
To avoid interfering with the host environment, it is recommended to use Docker to run MySQL server:
docker run --name mysql -e MYSQL_ROOT_PASSWORD=P@ssw0rd -d -p 3306:3306 mysql:8.0.39-debian
Install mysql client:
sudo apt install mysql-client
## Hexo
A fast, simple, and powerful blogging framework:
Install hexo
npm install hexo-cli -g
Hexo basic commands
➜ hexo clean # Clear cache
➜ hexo g # Generate static files
➜ hexo s # Start Hexo service
## MkDocs
[MkDocs](https://github.com/mkdocs/mkdocs) is an elegant documentation writing tool, very convenient to install using Python:
Install mkdocs
➜ pip install mkdocs
Install material theme
➜ pip install mkdocs-material
## JetBrains
For JetBrains series, just download professional flagship versions from the official website:
Create shortcut for pycharm
sudo ln -s /home/x-x/Documents/Softs/pycharm-2024.2.3/bin/pycharm /usr/local/bin/pycharm
Create shortcut for idea
sudo ln -s /home/x-x/Documents/Softs/idea-IU-242.23339.11/bin/idea /usr/local/bin/idea
Then create menu application icons ourselves:

As a security professional, there's really no need to look for pirated cracked resources online. We can use fingerprints from legit servers to find many official servers online:

Just activate directly:

# Security Environment
Due to limited time and energy, this section only lists some typical security tools, which can be gradually improved and built into your own security system during work and practice.
## Host Discovery
Install nmap and ncat
sudo apt install nmap ncat
Install faster scanner masscan
sudo apt install masscan
Use ARP protocol to discover IPv4 hosts on local network and fingerprint them
sudo apt install arp-scan
➜ arp-scan --localnet
Interface: en0, type: EN10MB, MAC: c8:89:f3:b3:24:1d, IPv4: 10.1.1.180
Starting arp-scan 1.10.0 with 256 hosts (GitHub - royhills/arp-scan: The ARP Scanner)
10.1.1.1 00:0c:29:7c:19:2f VMware, Inc.
10.1.1.10 a0:36:9f:89:ad:30 Intel Corporate
10.1.1.11 00:0c:29:b1:fa:11 VMware, Inc.
10.1.1.100 00:11:32:fa:6e:7c Synology Incorporated
10.1.1.218 a8:a1:59:9f:57:aa ASRock Incorporation
10.1.1.128 ec:4d:3e:86:cb:2e Beijing Xiaomi Mobile Software Co., Ltd
10.1.1.199 78:11:dc:7d:d5:9a XIAOMI Electronics,CO.,LTD
Fast and efficient port scanner written in Go
➜ brew install naabu
## SQL Injection
sqlmap is sufficient
sudo apt install sqlmap
## Directory Scanning
dirsearch is sufficient
sudo apt install dirsearch
If running directly causes an error:
➜ dirsearch
/usr/lib/python3/dist-packages/dirsearch/dirsearch.py:23: DeprecationWarning: pkg_resources is deprecated as an API. See Package Discovery and Resource Access using pkg_resources - setuptools 80.9.0 documentation
from pkg_resources import DistributionNotFound, VersionConflict
URL target is missing, try using -u
This is because of conflict with the Ubuntu builtin Python. Don't worry, we can globally switch Python version via pyenv:
pyenv global 3.8.8
## File Analysis
binwalk, a CTF MISC tool
sudo apt install binwalk
## Mobile Security
Install adb
sudo apt install android-platform-tools-base
## Password Cracking
Password cracking utility
sudo apt install hashcat
Classic UNIX password cracking tool
sudo apt install john
Essential WiFi security tool
sudo apt install aircrack-ng
## Traffic Analysis
wireshark, essential for blue team forensics
sudo apt install wireshark
Wireshark under Wayland protocol using KDE global menu plugin shows menu abnormally. Make it run under x11 mode manually by adding the following environment variables:
QT_QPA_PLATFORM=xcb GTK_IM_MODULE=fcitx SDL_IM_MODULE=fcitx QT_IM_MODULE=fcitx
This makes Wireshark work normally.
## Audio Analysis
Audacity is a classic audio analysis software, can be installed via system's Discover store. If it doesn't open after installation, try switching the source and try again:

Proof of successful running screenshot:

## Compression Analysis
We can directly install ARCHPR, a classic archive cracking tool, from the Spark Store:

Currently works well under Wine environment:

## JADX
[JADX](https://github.com/skylot/jadx) can easily analyze Jar and Android APK. After installing Java, you can open it directly:

Let's manually create a shortcut for JADX for easier next opening:

## Yakit
[Yakit](https://github.com/yaklang/yakit) is indeed a pretty good domestic security software worth trying. Linux installation is quite simple, just download the packaged AppImage from [Release](https://github.com/yaklang/yakit/releases).

It currently works well on Linux:

## Goby
[Goby](https://gobysec.net/) is also a nice domestic scanner, works smoothly on Linux:

Just install via official script:
curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > msfinstall &&
chmod 755 msfinstall &&
./msfinstall
First run requires initialization:
➜ msfconsole
** Welcome to Metasploit Framework Initial Setup **
Please answer a few questions to get started.
Would you like to use and setup a new database (recommended)? y

It seems not many domestic users play Metasploit Pro. Here's some related [resources](https://www.sqlsec.com/download/Metasploit_Pro+Crack_Ubuntu_Debian.zip) packaged by me for self-use. After installation, manually run some cracking scripts in Creak:

Since this Pro starts somewhat slowly, make sure the related services run normally after each boot:
sudo systemctl list-units --type=service --all|grep metasploit

Then visit in browser:
Set up user info on first use. It's a bit complicated, so make sure to remember it well:

It's basically a graphical MSF interface; the official provides some automated scanning functions:

Of course, Metasploit Pro also comes with msfconsole. Comparing them, Pro indeed has many additional auxiliary testing modules:

## Burp Suite
First download the latest Pro installer from [BP official website](https://portswigger.net/burp/releases):

chmod +x burpsuite_pro_linux_v2024_8_1.sh
./burpsuite_pro_linux_v2024_8_1.sh
Just accept all defaults and install:

If it is the GUI version, you can install all in default paths first:

Download the latest [keygen](https://github.com/h3110w0r1d-y/BurpLoaderKeygen) and copy to BP installation directory:
mv BurpLoaderKeygen_v1.17.jar ~/BurpSuitePro
Run the keygen directly:
~/BurpSuitePro/jre/bin/java -jar ~/BurpSuitePro/BurpLoaderKeygen_v1.17.jar
Click `Run`, enter the license, and then select **Manual Activation**:

For convenience of future use, directly modify `~/BurpSuitePro/BurpSuitePro.vmoptions` by adding the following parameters:
–add-opens=java.base/java.lang=ALL-UNNAMED
–add-opens=java.base/java.lang=ALL-UNNAMED
–add-opens=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED
–add-opens=java.base/jdk.internal.org.objectweb.asm.tree=ALL-UNNAMED
–add-opens=java.base/jdk.internal.org.objectweb.asm.Opcodes=ALL-UNNAMED
-javaagent:BurpLoaderKeygen_v1.17.jar
-noverify
# Software Resources
## Teach a Man to Fish
### Discover
`Discover` is the graphical software management tool for the KDE Plasma desktop environment, supporting multiple software package formats and sources, including Snap packages. For the first use, it is recommended to also install the Flatpak package backend, so that we can later use Discover to search, install, and manage applications from Flatpak sources (such as Flathub).

When using Discover for the first time to install some resources like snap, there may be issues with garbled Chinese characters:

Restarting some applications will fix the garbled characters, but a few applications may still have this problem. Overall, the KDE built-in Discover software center is indeed not very suitable for Chinese users.
### Kylin Resources
Domestic promotion and popularization of trusted computing (Xinchao) systems is vigorous, so we can also freely get commonly used software packaged by the Kylin system, simply download the corresponding deb packages and install them.
Download address for resources: https://software.openkylin.top/openkylin/yangtze/pool/all/
This method was shared by the commenter **like**:

### Spark Store
The Spark App Store is built domestically, designed specifically for Linux users, aiming to solve the Linux ecosystem's problem of scattered and hard-to-get applications.
Official website: https://www.spark-app.store/
Installation method: download the latest deb package from the official project's [release page](https://gitee.com/spark-store-project/spark-store/releases) and install it with:
sudo gdebi spark-store_4.3.0-fix5.1_amd64.deb

## System Enhancements
### Application Overview
| Software Name | Installation Method | Description |
| --------------------------- | ------------------- | ----------------------------- |
| PCManFM-Qt File Manager | Discover Store | A simpler file manager |
| Files | Discover Store | Another minimalist file manager |
| Piper | Discover Store | Mouse side button customization |
| Nautilus scripts manager | Discover Store | Default GNOME file manager |
## Download Tools
| Software Name | Installation Method | Description |
| ---------------- | ------------------------------------------------- | ---------------------------- |
| Motrix | [Spark Store](https://spk//store/network/motrix) | A good multi-threaded downloader |
| Thunder | [Kylin Resources](https://software.openkylin.top/openkylin/yangtze/pool/all/) | Minimalist version of Thunder downloader |
| Aliyun Drive | [Spark Store](https://spk//store/network/com.aliyundrive.spark) | Works well under Wine environment |
| Baidu Netdisk | [Spark Store](https://spk//store/network/baidunetdisk) | Official Baidu Cloud client for Linux surprisingly available |
| Tianyi Cloud | [Spark Store](https://spk//store/network/com.cloud.21cn) | The third-tier cloud storage also has a Linux client |
| Quark Netdisk | [Spark Store](https://spk//store/network/cn.quarkclouddrive.spark) | Currently a decent domestic cloud storage experience |
| Lanzou Cloud | [Spark Store](https://spk//store/network/com.lanzou.spark) | Seems not very profitable, could shut down anytime |
## Browsers
### Application Overview
| Browser Name | Installation Method | Description |
| ---------------- | ------------------------------------------------ | ---------------------------------- |
| Chromium | [Spark Store](https://spk//store/network/chromium-linux) | Open-source version of Chrome |
| Google Chrome | [Spark Store](https://spk//store/network/google-chrome-stable) | Always top-tier in browsers |
| Microsoft Edge | [Spark Store](https://spk//store/network/microsoft-edge-stable) | Edge browser has developed well recently |
| Vivaldi | [Spark Store](https://spk//store/network/vivaldi-stable) | A rather personalized Chromium-based browser |
| Yandex Browser | [Official Download](https://browser.yandex.com/) | Russian browser, also Chromium-based |
| Deepin Browser | [Spark Store](https://spk//store/network/org.deepin.browser) | Deepin browser based on Linglong app repackaging |
| Tor Browser | [Spark Store](https://spk//store/network/org.torbrowser.spark) | Essential for dark web threat intelligence |
### Experience Optimization
The built-in FireFox browser works perfectly under KDE's Wayland mode, supports two-finger pinch zoom and Chinese input method, but Chrome and Edge still require some configuration.
* **FireFox**
The pre-installed Firefox conflicts with our theme style, so we need to customize the appearance:
git clone GitHub - vinceliuice/WhiteSur-firefox-theme: Mac OS Safari theme for Firefox on Linux
cd WhiteSur-firefox-theme
./install.sh

* **Google Chrome**
cat /usr/share/applications/google-chrome.desktop|grep Exec
Exec=/usr/bin/google-chrome-stable --enable-features=UseOzonePlatform --ozone-platform=wayland --ozone-platform-hint=auto --enable-wayland-ime %U
Exec=/usr/bin/google-chrome-stable --enable-features=UseOzonePlatform --ozone-platform=wayland --ozone-platform-hint=auto --enable-wayland-ime
Exec=/usr/bin/google-chrome-stable --incognito --enable-features=UseOzonePlatform --ozone-platform=wayland --ozone-platform-hint=auto --enable-wayland-ime
* **Chromium**
cat /usr/share/applications/chromium-linux.desktop |grep Exec
Exec=/usr/bin/chromium-linux --enable-features=UseOzonePlatform --ozone-platform=wayland --ozone-platform-hint=auto --enable-wayland-ime %U
* **Microsoft Edge**
cat /usr/share/applications/microsoft-edge.desktop| grep Exec
Exec=/usr/bin/microsoft-edge-stable --enable-features=UseOzonePlatform --ozone-platform=wayland --ozone-platform-hint=auto --enable-wayland-ime %U
Exec=/usr/bin/microsoft-edge-stable --enable-features=UseOzonePlatform --ozone-platform=wayland --ozone-platform-hint=auto --enable-wayland-ime
Exec=/usr/bin/microsoft-edge-stable --inprivate --enable-features=UseOzonePlatform --ozone-platform=wayland --ozone-platform-hint=auto --enable-wayland-ime
* **Yandex Browser**
cat /usr/share/applications/yandex-browser.desktop| grep Exec
Exec=/usr/bin/yandex-browser-beta --enable-features=UseOzonePlatform --ozone-platform=wayland --ozone-platform-hint=auto --enable-wayland-ime %U
Exec=/usr/bin/yandex-browser-beta --enable-features=UseOzonePlatform --ozone-platform=wayland --ozone-platform-hint=auto --enable-wayland-ime
Exec=/usr/bin/yandex-browser-beta --incognito --enable-features=UseOzonePlatform --ozone-platform=wayland --ozone-platform-hint=auto --enable-wayland-ime
* **Vivaldi Browser**
cat /usr/share/applications/vivaldi-stable.desktop| grep Exec
Exec=/usr/bin/vivaldi-stable --enable-features=UseOzonePlatform --ozone-platform=wayland --ozone-platform-hint=auto --enable-wayland-ime %U
Exec=/usr/bin/vivaldi-stable --new-window --enable-features=UseOzonePlatform --ozone-platform=wayland --ozone-platform-hint=auto --enable-wayland-ime
Exec=/usr/bin/vivaldi-stable --incognito --enable-features=UseOzonePlatform --ozone-platform=wayland --ozone-platform-hint=auto --enable-wayland-ime
## Office & Social
### Application Overview
| Software Name | Installation Method | Description |
| ------------- | ------------------------------------------------ | ----------------------------------------- |
| QQ | [Official Download](https://im.qq.com/linuxqq/index.shtml) | Tencent's Linux version of QQ is quite good |
| WeChat | [Spark Store](https://spk//store/chat/store.spark-app.wechat-linux-spark) | Tencent WeChat now also has a Linux version |
| Feishu | [Spark Store](https://spk//store/chat/bytedance-feishu-stable) | ByteDance product, works great under Wayland protocol |
| DingTalk | [Spark Store](https://spk//store/chat/com.alibabainc.dingtalk) | DingTalk also has quite high market share |
| Tencent Meeting | [Spark Store](https://spk//store/chat/wemeet) | Office software, can live without but not without it |
| Telegram | Discover Store | Essential for dark web threat intelligence monitoring |
### Experience Optimization
* **WeChat**
If your screen resolution is very high, the Linux WeChat interface is somewhat small. We need to manually add the scaling variable to improve the user experience. The following sets the interface scale to 1.5 times:
QT_SCALE_FACTOR=1.5
Also, Fcitx5's Chinese input was found to be not working properly, so we need to manually edit WeChat's launch icon properties:
sudo vim ~/.local/share/applications/store.spark-app.wechat-linux-spark.desktop
The modified content should be:
Exec=env QT_SCALE_FACTOR=1.5 GTK_IM_MODULE=“fcitx” QT_IM_MODULE=“fcitx” SDL_IM_MODULE=“fcitx” /opt/apps/store.spark-app.wechat-linux-spark/files/launch.sh
This way, our WeChat usage experience is basically no different from that on Windows.
* **Tencent Meeting**
Tencent Meeting refuses to open under the Wayland protocol and pops up a warning:

Edit Tencent Meeting's launch script:
sudo vim /opt/wemeet/wemeetapp.sh
Manually locate the conditional statement checking the Wayland protocol, and above it add the following lines to force the application to use the X11 display protocol:
export XDG_SESSION_TYPE=x11
export QT_QPA_PLATFORM=xcb
unset WAYLAND_DISPLAY

Similarly, Tencent Meeting on high-resolution screens is also small and does not support Chinese input. We manually adjust the scaling by adding the following environment variables:
QT_SCALE_FACTOR=1.5 GTK_IM_MODULE=fcitx QT_IM_MODULE=fcitx SDL_IM_MODULE=fcitx

However, due to Wayland security issues under X11 working environment, Tencent Video currently cannot capture shared screens. So if you really need to share screens with Tencent Video, it’s better to use a virtual machine, or try the very powerful Feishu instead!
## Document & Office
### Application Overview
| Software Name | Installation Method | Description |
| ------------- | -------------------------------- | ---------------------------------- |
| Typora | [Official Download](https://typora.io/#linux) | Typora is GuoGuang's main tool for writing Markdown |
| WPS Office | [Spark Store](https://spk//store/office/wps-office) | WPS Office is quite clean and smooth on Linux |
### Experience Optimization
* **Typora**
As mentioned before, Typora has issues with Chinese input under Wayland. We can manually add the following environment variables:
GTK_IM_MODULE=fcitx SDL_IM_MODULE=fcitx QT_IM_MODULE=fcitx
* **WPS Office**
WPS Office shows missing fonts:

We can download fonts from this project: https://github.com/dv-anomaly/ttf-wps-fonts and find these ttf fonts, then right-click and select [Install].
Similarly, WPS's Chinese input also has issues. We manually add the following environment variables:
GTK_IM_MODULE=fcitx QT_IM_MODULE=fcitx SDL_IM_MODULE=fcitx

## Productivity
### Application Overview
|Software Name|Installation Method|Description|
| --- | --- | --- |
|Planify|[Flathub](https://flathub.org/apps/io.github.alainm23.planify)|Minimalist and visually appealing todolist|
|Super Productivity|[Official Project](https://github.com/johannesjo/super-productivity)|Similar to Windows To Do|
## Code Development
### Application Overview
|Software Name|Installation Method|Description|
| --- | --- | --- |
|Visual Studio Code|[Official Download](https://code.visualstudio.com/docs/?dv=linux64_deb)|Possibly the most powerful code editor currently|
|Sublime Text|[Official Download](https://www.sublimetext.com/download)|Lightweight code editor|
|PyCharm|[Official Download](https://www.jetbrains.com/pycharm/download/?section=linux)|A real integrated development environment (IDE)|
|IDEA|[Official Download](https://www.jetbrains.com/zh-cn/idea/download/?section=linux)|A real integrated development environment (IDE)|
|Navicat Premium Lite|[Official Download](https://www.navicat.com.cn/download/navicat-premium-lite)|Navicat's official free version, sufficient for most needs|
|Tiny RDM|[Official Download](https://redis.tinycraft.cc/)|Open-source and visually appealing Redis client|
### Experience Optimization
* **Visual Studio Code**
Visual Studio Code has issues with Chinese input; we can manually add the following environment variables:
GTK_IM_MODULE=fcitx SDL_IM_MODULE=fcitx QT_IM_MODULE=fcitx
* **Sublime Text**
The default Sublime Text 4180 is a trial version, but we can easily crack it. Locate the executable path as:
/opt/sublime_text/sublime_text
Use the online website, [https://hexed.it](https://hexed.it/), open the file, select the sublime_text executable from the previous step, and in the search bar enter
80 79 05 00 0F 94 C2
Replace with:
C6 41 05 01 B2 00 90

Re-export and replace the original sublime_text to successfully crack:

Here is the cracked sublime_text file for version 4180: [sublime_text](https://www.sqlsec.com/download/sublime_text)
If you are using Sublime Text with the global menu plugin under KDE5, the title will not display properly. This is due to it working under the Wayland protocol. This BUG probably won't be fixed in the current KDE5 version, so we can manually specify the x11 environment variable:
GDK_BACKEND=x11 GTK_IM_MODULE=fcitx SDL_IM_MODULE=fcitx QT_IM_MODULE=fcitx
Also remember to disable Sublime's auto-update:

## Virtual Remote
### Application Overview
|Software Name|Installation Method|Description|
| --- | --- | --- |
|KRDC|Built-in KDE|KDE’s built-in RDP remote client, but requires manual optimization|
|Remmina|[Official Installation](https://remmina.org/how-to-install-remmina/#ubuntu)|Remmina is currently among the top-tier Linux remote tools|
|VirtualBox|[Official Installation](https://www.virtualbox.org/wiki/Linux_Downloads)|Open-source and free virtualization solution on Linux|
|Docker Desktop|[Official Installation](https://docs.docker.com/desktop/install/linux/ubuntu/)|Graphical Docker container management|
|Terminus|[Official Download](https://termius.com/download/linux)|A very visually appealing remote tool|
|MobaXterm (Wine)|[Spark Store](https://spk//store/development/net.mobatek.mobaxterm)|Popular remote tool on Windows|
|Tabby|[Spark Store](https://spk//store/development/tabby-terminal)|Open-source visually appealing terminal|
### Experience Optimization
* **KRDC**
By default, KRDC does not work properly under the Wayland display protocol. The latest KRDC may have fixed this issue, but our Kubuntu 24.04 KDE5 KRDC version is too old:

But we can edit the application and force KRDC to run using the X11 protocol:

XDG_SESSION_TYPE=x11 QT_QPA_PLATFORM=xcb
This allows KRDC to work normally:

* **Remmina**
Ubuntu 24.04’s default Remmina version is not very new, so the interface is not in Chinese initially. According to the official documentation, you can manually add the ppa repository and install the latest Remmina version to get the Chinese interface:
sudo apt-add-repository ppa:remmina-ppa-team/remmina-next
sudo apt update
sudo apt install remmina remmina-plugin-rdp remmina-plugin-secret
## Media Design
### Application Overview
|Software Name|Installation Method|Description|
| --- | --- | --- |
|ImageMagick|Discover Store|ImageMagick is a classic image processing tool on Linux|
|Gimp|[Spark Store](https://spk//store/image_graphics/gimp-spark)|GIMP is a powerful image editing software|
|Adobe PhotoShop CS6|[Spark Store](https://spk//store/image_graphics/com.photoshopcs6.deepin)|Although this PhotoShop is a bit old, it’s still usable|
|Image Viewer|Discover Store|Supports viewing and exporting macOS ICNS format icons directly|
### Experience Optimization
* **Activate PhotoShop**
1. Back up the default amtlib.dll file located at ~/.deepinwine/Deepin-CS6/drive_c/Program Files/Adobe/Adobe Photoshop CS6/amtlib.dll
2. Download the [amtlib.dll file with registration info](https://storage.deepin.org/thread/20230808113052649_amtlib.dll%EF%BC%88PS-CS6%E6%BF%80%E6%B4%BB%E6%9B%BF%E6%8D%A2%E6%96%87%E4%BB%B6%EF%BC%89.zip?_gl=1*naabbj*_ga*MTAyNTQ2ODcyNS4xNzI3OTQwNjEw*_ga_QHZ7DPPD2D*MTcyNzk0MDYxMC4xLjAuMTcyNzk0MDYxMC4wLjAuMA..) and replace the above directory file to complete the crack and activation.

## Audio & Video Entertainment
### Application Overview
|Software Name|Installation Method|Description|
| --- | --- | --- |
|Steam|[Spark Store](https://spk//store/games/steam-launcher)|There are still quite a few Linux games on Steam|
|NetEase Cloud Music|[Spark Store](https://spk//store/music/netease-cloud-music)|The Spark Store version is easy to install, but daily recommendations don’t work properly|
|YesPlayMusic|[Official Project](https://github.com/qier222/YesPlayMusic/releases)|Highly visually appealing third-party NetEase Cloud Music player|
|PotPlayer|[Spark Store](https://spk//store/video/org.potplayer.spark)|Excellent video player ported from Windows|
|VLC Media Player|`apt install vlc`|Classic open-source media player|
|MPV Media Player|`apt install mpv`|Minimalist and powerful media player on Linux|
|OBS Studio|`apt install obs-studio`|Very powerful live streaming and video recording professional software|
### Experience Optimization
* **NetEase Cloud Music image-20241011163009383**
If your screen resolution is very high, the Linux version of NetEase Cloud Music interface might appear a bit small. We need to manually add a scaling environment variable to optimize the user experience. Below shows scaling the interface 1.5 times:
QT_SCALE_FACTOR=1.5
Find the application menu, edit NetEase Cloud Music’s launcher, and add the above environment variable manually.
Since NetEase Cloud does not maintain the Linux official client, theoretically password login cannot work properly. However, scan code login is supported; aside from personalized recommendations not working properly, other features seem to work normally:
