Linux 桌面避坑大礼包
今天把几篇分散的 Linux 桌面”硬核配置”笔记合并成一篇,覆盖五个高频场景:
- Ubuntu 从 GNOME 切换到 KDE Plasma
- Rclone 挂载 Proton Drive 并通过 Systemd 自动重启
- SSH 私钥
bad permissions权限修复 - Fcitx5 中文输入法彻底重装与排障
- 开发环境全家桶部署(按语言生态分类)
目录
- 一、Ubuntu 切换 KDE 并清理 GNOME
- 二、Rclone 挂载 Proton Drive 自动重启
- 三、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
- 候选框不显示:
sudo apt install fcitx5-frontend-gtk2 fcitx5-frontend-gtk3 fcitx5-frontend-qt5
-
只有英文,没有中文选项:
打开Fcitx5 Configuration,把Pinyin或Wubi加入当前输入法列表。 -
美化主题:
将主题放到~/.local/share/fcitx5/themes/。
五、开发环境部署(全家桶分类版)
这一节给你一套 Linux 桌面可长期维护的”开发环境全家桶”,并按生态分类,方便跳转。
开发环境目录
- 5.1 基础能力(必装)
- 5.2 Python(uv / pyenv / poetry)
- 5.3 Node.js(fnm / pnpm)
- 5.4 Bun
- 5.5 Go
- 5.6 Rust
- 5.7 Ruby(rbenv / bundler)
- 5.8 Java(SDKMAN)
- 5.9 PHP(Composer)
- 5.10 C/C++(GCC / CMake / Clang)
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 桌面环境最常见也最容易”卡住”的五类问题。
尤其注意: 修改输入法环境变量后必须注销或重启,否则配置不会生效。