更新于

Linux 桌面避坑大礼包


今天把几篇分散的 Linux 桌面”硬核配置”笔记合并成一篇,覆盖五个高频场景:

  • Ubuntu 从 GNOME 切换到 KDE Plasma
  • Rclone 挂载 Proton Drive 并通过 Systemd 自动重启
  • SSH 私钥 bad permissions 权限修复
  • Fcitx5 中文输入法彻底重装与排障
  • 开发环境全家桶部署(按语言生态分类)

目录


一、Ubuntu 切换 KDE 并清理 GNOME

警告: 卸载默认桌面环境有风险,操作前请先备份重要数据。

1) 安装 KDE Plasma

先更新软件源:

sudo apt update

按需选择安装包:

# 标准版(推荐)
sudo apt install kubuntu-desktop

# 最小化版
sudo apt install kde-plasma-desktop

# 完整版
sudo apt install kde-full

安装过程中如提示选择显示管理器,请选 sddm。完成后重启:

reboot

登录界面选择 Plasma (X11)Plasma (Wayland) 进入 KDE。

2) 卸载 GNOME(可选)

先确认默认显示管理器为 SDDM:

sudo dpkg-reconfigure sddm

基础清理(推荐):

sudo apt remove ubuntu-desktop gnome-shell
sudo apt remove gdm3
sudo apt autoremove --purge

深度清理(高风险,务必审阅删除列表):

sudo apt purge ubuntu-desktop ubuntu-desktop-minimal ubuntu-session "gnome-*"
sudo apt purge nautilus gdm3 yaru-theme-*
sudo apt autoremove --purge

重启前做防失联检查:

sudo apt install konsole plasma-nm

二、Rclone 挂载 Proton Drive 自动重启

1) 常见报错

手动挂载:

rclone mount n: ~/ProtonDrive --vfs-cache-mode full --allow-other --daemon

若出现:

allow_other only allowed if 'user_allow_other' is set in /etc/fuse.conf

修复:

sudo sed -i 's/#user_allow_other/user_allow_other/' /etc/fuse.conf

2) Systemd 托管(开机自启 + 崩溃重启)

创建服务文件:

sudo nano /etc/systemd/system/rclone-proton.service

写入配置(按你的用户名改路径):

[Unit]
Description=Rclone Mount ProtonDrive (Auto-restart)
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=ub
Group=ub
ExecStart=/usr/bin/rclone mount n: /home/ub/ProtonDrive \
  --vfs-cache-mode full \
  --dir-cache-time 24h \
  --vfs-cache-max-size 10G \
  --vfs-cache-max-age 1h \
  --log-level INFO \
  --log-file /home/ub/rclone-proton.log
Restart=always
RestartSec=10
ExecStop=/usr/bin/fusermount3 -u /home/ub/ProtonDrive

[Install]
WantedBy=default.target

启用服务:

sudo systemctl daemon-reload
sudo systemctl enable rclone-proton.service
sudo systemctl start rclone-proton.service

常用命令:

systemctl status rclone-proton.service
df -h | grep Proton
tail -f ~/rclone-proton.log

三、SSH 私钥 bad permissions 修复

跨系统复制 ~/.ssh 后常见权限错乱。SSH 对私钥权限要求极严,过宽会直接拒绝。

1) 修复目录权限

chmod 700 ~/.ssh

2) 修复私钥权限(最关键)

chmod 600 ~/.ssh/id_ed25519_work

如有其他私钥,也建议统一到 600

chmod 600 ~/.ssh/id_rsa ~/.ssh/id_ed25519 2>/dev/null

3) 修复公钥与配置权限

chmod 644 ~/.ssh/*.pub
chmod 644 ~/.ssh/known_hosts
chmod 644 ~/.ssh/config

4) 验证

ssh -T git@github.com

如果你有多账号,可用 ~/.ssh/config 按 Host 分开密钥,避免串号。


四、Fcitx5 中文输入法彻底重装

在 Ubuntu/Debian 中,输入法失效(图标消失、无法输入中文、候选框不显示)很常见。以下是完整重装方案。

为什么选 Fcitx5

相比 Fcitx4 与 IBus,Fcitx5 在性能、UI 和 Wayland 支持上更现代。

1) 清理旧环境

sudo apt purge fcitx4* ibus* -y
sudo apt autoremove -y

2) 安装核心组件

sudo apt update
sudo apt install fcitx5 fcitx5-chinese-addons fcitx5-frontend-gtk3 fcitx5-frontend-qt5 fcitx5-config-qt -y

3) 配置环境变量(关键)

sudo nano /etc/environment

在末尾添加:

GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
SDL_IM_MODULE=fcitx

4) 切换默认输入法框架

im-config -n fcitx5

5) 自动化脚本(可选)

保存为 reinstall-fcitx5.sh

#!/bin/bash

echo "开始重装 Fcitx5 输入法..."

# 1. 清理
sudo apt purge fcitx4* ibus* -y && sudo apt autoremove -y

# 2. 安装
sudo apt install fcitx5 fcitx5-chinese-addons fcitx5-config-qt -y

# 3. 设置默认框架
im-config -n fcitx5

# 4. 提示手动步骤
echo "------------------------------------------------"
echo "安装完成!"
echo "请手动检查 /etc/environment 是否包含 fcitx 变量。"
echo "请重启电脑以使环境变量生效。"
echo "------------------------------------------------"

FAQ

  1. 候选框不显示:
sudo apt install fcitx5-frontend-gtk2 fcitx5-frontend-gtk3 fcitx5-frontend-qt5
  1. 只有英文,没有中文选项:
    打开 Fcitx5 Configuration,把 PinyinWubi 加入当前输入法列表。

  2. 美化主题:
    将主题放到 ~/.local/share/fcitx5/themes/


五、开发环境部署(全家桶分类版)

这一节给你一套 Linux 桌面可长期维护的”开发环境全家桶”,并按生态分类,方便跳转。

开发环境目录

5.1 基础能力(必装)

先确认 Snap 可用:

snap version

建议统一把用户级二进制路径加到 shell:

cat >> ~/.zshrc <<'EOF'
export PATH="$HOME/.local/bin:$HOME/bin:$PATH"
EOF
source ~/.zshrc

5.2 Python(uv / pyenv / poetry)

uv(优先):

snap find uv
sudo snap install astral-uv --classic || curl -LsSf https://astral.sh/uv/install.sh | sh
uv --version

pyenv(多版本 Python):

curl https://pyenv.run | bash
cat >> ~/.zshrc <<'EOF'
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
EOF
source ~/.zshrc
pyenv --version

poetry(项目依赖管理):

curl -sSL https://install.python-poetry.org | python3 -
poetry --version

5.3 Node.js(fnm / pnpm)

fnm(Node 版本管理):

snap find fnm
sudo snap install fnm --classic || curl -fsSL https://fnm.vercel.app/install | bash
cat >> ~/.zshrc <<'EOF'
eval "$(fnm env --use-on-cd)"
EOF
source ~/.zshrc
fnm install --lts
node -v

pnpm

corepack enable
corepack prepare pnpm@latest --activate
pnpm -v

5.4 Bun

snap find bun
sudo snap install bun-js --classic || curl -fsSL https://bun.sh/install | sh
bun --version

5.5 Go

snap find go
sudo snap install go --classic
go version

可选环境变量:

cat >> ~/.zshrc <<'EOF'
export GOPATH="$HOME/go"
export PATH="$GOPATH/bin:$PATH"
EOF
source ~/.zshrc

5.6 Rust

snap find rustup
sudo snap install rustup --classic || curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env" 2>/dev/null || true
rustc --version
cargo --version

5.7 Ruby(rbenv / bundler)

Ruby(Snap 快速可用):

snap find ruby
sudo snap install ruby --classic
ruby -v

rbenv(需要多版本切换时):

curl -fsSL https://github.com/rbenv/rbenv-installer/raw/main/bin/rbenv-installer | bash
cat >> ~/.zshrc <<'EOF'
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
EOF
source ~/.zshrc
rbenv --version

Bundler:

gem install bundler
bundle -v

5.8 Java(SDKMAN)

curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install java 21.0.1-open
java -v

5.9 PHP(Composer)

PHP(Snap):

snap find php
sudo snap install php --classic
php -v

Composer:

php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
sudo mv composer.phar /usr/local/bin/composer
composer -V

5.10 C/C++(GCC / CMake / Clang)

snap find cmake
sudo snap install cmake --classic
sudo snap install gcc --classic
sudo snap install clang --classic
cmake --version
gcc --version
clang --version

结语

这篇合集覆盖了 Linux 桌面环境最常见也最容易”卡住”的五类问题。
尤其注意: 修改输入法环境变量后必须注销或重启,否则配置不会生效。