Ubuntu 开发环境+桌面美化完整配置文档
适配需求:默认终端为 fish(美化),开发环境手动切换到 bash 安装/运行
前置准备:设置 fish 为默认终端
# 安装 fish
sudo apt update && sudo apt install -y fish
# 将 fish 设置为系统默认终端(核心需求)
chsh -s /usr/bin/fish
# 验证默认终端(重启终端后执行,输出应为 /usr/bin/fish)
echo $SHELL
安装必要依赖(fish/bash 均可执行)
安装开发工具及基础依赖
sudo apt update && sudo apt upgrade -y
sudo apt install -y gcc make cmake curl perl wget git wmctrl sassc
安装 GNOME 优化工具与扩展管理器
sudo apt install -y gnome-tweaks gnome-shell-extension-manager
安装右键打开文件资源管理器的管理员模式
sudo apt -y install nautilus-admin
安装系统备份工具 Timeshift(可选)
sudo apt install timeshift
安装必要软件(fish/bash 均可执行)
手动下载安装包
安装下载的 deb 包
cd ~/下载
sudo apt install -y ./ulauncher_5.15.15_all.deb
sudo apt install -y ./Hiddify-Debian-x64.deb
配置 Ulauncher 快捷键
打开系统设置 → 键盘 → 自定义快捷键,添加配置:
名称:
ulauncher命令:
ulauncher-toggle快捷键:
Ctrl+空格
Hiddify 开启 Tun 模式
tun 模式就是将此计算机的所有应用都走代理服务器,终端也能走代理
查看 Hiddify 安装路径:
which hiddify以管理员模式打开应用:
sudo -E /usr/bin/hiddify配置密钥:
https://raw.githubusercontent.com/shaoyouvip/free/refs/heads/main/all.yaml#all程序内设置:
双击 Hiddify 图标打开程序,选择当前节点的 VPN 模式
点击配置,修改 TUN 实现方式为
System,点击重置
验证配置:
ping google.com
GNOME 桌面基础设置(fish/bash 均可执行)
启用多任务热区
打开系统设置 → 多任务,启动热区和激活屏幕边缘
安装指定 GNOME 扩展
通过 GNOME 扩展管理器安装以下扩展:
Burn My Windows(窗口动画,当前已关闭)
clipboard history(剪贴板历史记录)
Compiz alike magic lamp effect(Compiz 风格窗口最小化动画)
Compiz windows effect(Compiz 风格窗口效果)
Coverflow Alt-Tab(封面式窗口切换)
Dash 2 DockAnimated(Dock 栏)
Space-Bar(工作区管理)
Tiling Shell(窗口平铺管理)
User Themes(自定义 GTK 主题)
Vitals(系统状态监控:CPU / 内存 / 网速等)
Hide-top-bar(全屏时隐藏顶部状态栏)
配置 Burn My Windows 扩展
配置为:TV Effect
配置 dash 2 dockanimated 扩展
进入扩展设置界面:
Style→App Indicator Style→Running Indicator Style设置为Dots(圆点样式)General→Autohide只保留Autohide Icons
配置 Vitals
开启
高精度和面板位置靠左修改
Icon style为GNOME
安装主题(fish/bash 均可执行)
清理原有主题
进入文件资源管理器 → 右键进入管理员模式 → 打开目录 admin:///usr/share/themes → 仅保留 Yarn 主题
安装 WhiteSur-wallpapers 壁纸
mkdir -p /home/lkh/app && cd /home/lkh/app
git clone https://github.com/vinceliuice/WhiteSur-wallpapers.git
cd WhiteSur-wallpapers && sudo ./install-gnome-backgrounds.sh
sudo ./install-wallpapers.sh
安装 GNOME-macOS-Tahoe 主题
cd /home/lkh/app
sudo apt update && sudo apt install flatpak -y
git clone https://github.com/kayozxo/GNOME-macOS-Tahoe --depth=1
cd GNOME-macOS-Tahoe && ./install.sh --help
./install.sh
执行 ./install.sh 后出现选择菜单:
Choose:
> Install: Light
Install: Dark
Install: Both
Generate: All accent variants
1 Generate: Specific accent variant
2 Install generated accent variants into ~/.themes
3 Install libadwaita override
4 Install Extras (icons/wallpapers/cursors/ulauncher/GDM)
Uninstall themes
Force reload theme (clear cache)
Help
Exit
配置 GNOME 外观(优化工具)
打开优化软件 → 外观,进行以下设置:
光标、图标:选择
MacTahoe-darkShell、过时应用程序:选择
Tahoe-light
修复终端等应用标题栏为白色问题
mkdir -p ~/.config/gtk-3.0
gedit ~/.config/gtk-3.0/gtk.css
在 gtk.css 中添加以下内容:
/* 全局标题栏(未聚焦+聚焦)的背景色+文字色 */
headerbar, .titlebar {
background-color: #2c2c2c; /* 标题栏背景色(深灰色) */
color: #ffffff; /* 标题栏文字色(白色) */
background-image: none; /* 取消默认渐变/图片背景 */
}
/* 聚焦时的标题栏(单独设置更醒目) */
window:checked headerbar, window:checked .titlebar {
background-color: #3a3a3a; /* 聚焦时的背景色(稍浅的深灰) */
}
安装 Ulauncher-Liquid-Glass 主题
mkdir -p ~/.config/ulauncher/user-themes/
cd ~/.config/ulauncher/user-themes/
git clone https://github.com/kayozxo/ulauncher-liquid-glass.git
cd ulauncher-liquid-glass && ./install.sh
记得在 Ulauncher 设置中开启
Launch at Login,并切换到该主题
切换 GNOME-macOS-Tahoe 深浅主题(可选)
cd /home/lkh/app/GNOME-macOS-Tahoe && ./install.sh -l -la # 浅色模式
cd /home/lkh/app/GNOME-macOS-Tahoe && ./install.sh -d -la # 暗色模式
sudo reboot now
终端美化(仅 fish 环境生效)
# 安装 oh-my-posh
sudo wget https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/posh-linux-amd64 -O /usr/local/bin/oh-my-posh
sudo chmod +x /usr/local/bin/oh-my-posh
# 安装Nerd字体
mkdir -p $HOME/.local/share/fonts
wget https://github.com/ryanoasis/nerd-fonts/releases/download/v3.2.1/FiraCode.zip -O $HOME/下载/firacode.zip
unzip $HOME/下载/firacode.zip -d $HOME/.local/share/fonts
fc-cache -f -v
sudo apt install gnome-tweaks -y
# 去优化工具中设置终端字体为 FiraCode Nerd Font Mono Retina,大小为11
# 配置oh-my-posh主题
mkdir ~/.poshthemes
cd /home/lkh/下载
wget https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/themes.zip -O ~/.poshthemes/themes.zip
unzip ~/.poshthemes/themes.zip -d ~/.poshthemes
chmod u+rw ~/.poshthemes/*.json
rm ~/.poshthemes/themes.zip
# 配置fish主题(仅fish生效)
sed -i '1i oh-my-posh init fish --config $HOME/.poshthemes/montys.omp.json | source' $HOME/.config/fish/config.fish
# 配置终端颜色
bash -c "$(wget -qO- https://git.io/vQgMr)"
# 选择72号颜色,设置为默认主题后重启终端
配置 fish 欢迎语(打字机效果)
在 fish 终端中执行以下代码:
# 优化版打字机函数(兼容中文字符、数字、符号,确保完整打印)
function typewriter
set text $argv[1]
set delay (if test $argv[2]; echo $argv[2]; else; echo 0.01; end)
# 改用Fish原生的string split(兼容中文字符/数字/符号,避免拆分乱码)
for char in (string split "" $text)
stdbuf -o0 printf "%s" "$char"
sleep $delay
end
printf "\n"
end
# 精细化中文时间感知型欢迎函数(显示具体时分秒+秒级判断)
function fish_greeting
# 1. 获取当前时间(小时、分钟、秒,转换为总秒数用于时段判断)
set hour (date "+%H") # 24小时制:00-23
set minute (date "+%M") # 00-59
set second (date "+%S") # 00-59
set total_sec (math "$hour * 3600 + $minute * 60 + $second")
# 2. 获取带具体时分秒的完整日期
set today (date "+%Y年%m月%d日 %H:%M:%S %A")
# 3. 初始化时段相关变量
set greet "" # 时段问候语
set color_main "" # 主配色(用户名、日期+时间)
set color_tip "" # 提示语配色(场景提醒)
set tip "" # 场景化提醒文案
# 4. 秒级精细化时段判断(24小时制)
if test $total_sec -ge 41400 -a $total_sec -lt 48600 # 11:30:00 - 13:30:00(午间休息)
set greet "中午好"
set color_main (set_color --bold yellow)
set color_tip (set_color --bold magenta)
set tip "吃饭了么?如果没有就休息一下,去吃午饭吧~ 🥪"
else if test $total_sec -ge 21600 -a $total_sec -lt 41400 # 06:00:00 - 11:30:00(早晨)
set greet "早上好"
set color_main (set_color --bold cyan)
set color_tip (set_color --bold yellow)
set tip "新的一天开始啦!元气满满地开启今日任务吧~ ☀️"
else if test $total_sec -ge 48600 -a $total_sec -lt 64800 # 13:30:00 - 18:00:00(下午)
set greet "下午好"
set color_main (set_color --bold blue)
set color_tip (set_color --bold blue)
set tip "继续保持好状态,加油完成接下来的任务吧! 💪"
else if test $total_sec -ge 64800 -a $total_sec -lt 82800 # 18:00:00 - 23:00:00(晚间)
set greet "晚上好"
set color_main (set_color --bold green)
set color_tip (set_color --bold green)
set tip "放松下来,愉快地享受晚间的时光吧~ ✨"
else if test $total_sec -ge 82800 -a $total_sec -lt 86400 # 23:00:00 - 24:00:00(熬夜时段)
set greet "夜深啦"
set color_main (set_color --bold red)
set color_tip (set_color --bold red)
set tip "现在已经很晚咯!别熬啦,早点休息才能养足精神~ 😴"
else # 00:00:00 - 06:00:00(深夜时段)
set greet "深夜好"
set color_main (set_color --bold purple)
set color_tip (set_color --bold red)
set tip "这个时间应该好好睡觉啦!快放下电脑,补充睡眠吧~ 🌙"
end
set color_reset (set_color normal) # 重置终端默认样式
# 5. 打字机输出
typewriter "$greet,$color_main$USER$color_reset!" 0.01
typewriter "欢迎回来!今天是 $color_main$today$color_reset。" 0.01
typewriter "$color_tip$tip$color_reset" 0.01
typewriter ""
end
# 保存函数(永久生效)
funcsave typewriter
funcsave fish_greeting
exec fish
开机启动界面替换(fish/bash 均可执行)
解压到
~/下载目录,进入vortex-ubuntu文件夹执行:sudo chmod +x install && sudo ./install
配置适配 Flatpak 的软件(fish/bash 均可执行)
以安装壁纸软件 Hidamari 为例:
sudo apt update && sudo apt install flatpak -y
sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
sudo flatpak remote-modify flathub --url=https://mirror.sjtu.edu.cn/flathub
# 安装Hidamari
flatpak install -y flathub io.github.jeffshee.Hidamari
# 验证配置
flatpak remotes --show-details
# 启动软件
flatpak run io.github.jeffshee.Hidamari
动态壁纸软件 Hanabi(fish/bash 均可执行)
安装 Hanabi GNOME 扩展
# 查看GNOME版本
gnome-shell --version
cd /home/lkh/下载
# 根据GNOME版本选择对应分支
# GNOME 49(实验性)
git clone https://github.com/jeffshee/gnome-ext-hanabi.git -b gnome-49
# GNOME 45 及以后版本
# git clone https://github.com/jeffshee/gnome-ext-hanabi.git
# GNOME 44 及更早版本
# git clone https://github.com/jeffshee/gnome-ext-hanabi.git -b legacy
# 安装依赖
sudo apt update
sudo apt -y install meson ninja-build pkg-config libglib2.0-dev libgtk-4-dev
sudo apt install libgtk-4-media-gstreamer
sudo apt install -y gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav
# 安装扩展
cd /home/lkh/下载/gnome-ext-hanabi && ./run.sh install
删除自带的火狐浏览器(fish/bash 均可执行)
# 检查snap版本
snap list | grep firefox
# 检查执行路径
which firefox
# 卸载snap包
sudo snap remove firefox
# 彻底清除snap配置
sudo snap remove --purge firefox
# 删除无效符号链接
sudo rm -f /usr/bin/firefox
# 删除个人配置
rm -rf ~/.mozilla/firefox
rm -rf ~/.cache/mozilla
# 删除系统级配置
sudo rm -rf /etc/firefox /etc/mozilla/firefox
# 清理依赖
sudo apt autoremove -y
# 彻底卸载apt包
sudo apt purge "firefox" "firefox-locale-*" "firefox-esr*" -y
# 验证卸载结果
snap list | grep firefox # 无输出=无残留
which firefox # 无输出=无程序
dpkg -l | grep firefox # 无输出=无apt包
firefox --version # 提示command not found=卸载完成
开发环境配置(必须手动切换到 bash 终端执行)
⚠️ 核心提醒:以下所有步骤需先执行
exec bash切换到 bash 终端,安装完成后可执行exec fish切回默认的 fish 终端
第一步:手动切换到 bash 终端
# 从 fish 切换到 bash(临时,仅当前终端生效)
exec bash
# 验证是否切换成功(输出应为 /bin/bash)
echo $0
# 或者
ps -p $$
第二步:安装常用软件(bash 终端执行)
cd /home/lkh/下载
sudo apt install -y ./obsidian_1.10.6_amd64.deb
sudo apt install -y ./google-chrome-stable_current_amd64.deb
sudo apt install -y ./code_1.107.1-1765982436_amd64.deb
# 配置 VSCode 终端为 bash(永久生效)
# 打开 VSCode → 设置 → 搜索 "terminal.integrated.defaultProfile.linux" → 选择 "bash"
第三步:VSCode 配置 C++(bash 终端执行)
安装插件:
Ayu Mirage Bordered、汉化插件、C/C++、Coder Runner安装编译调试工具:
sudo apt-get update sudo apt-get install gcc g++ gdb修复 Coder Runner 执行报错:
按
CTRL+,打开设置,搜索code-runner.executorMap修改 cpp 配置:
// 原配置 "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt", // 修改后 "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && ./$fileNameWithoutExt",
配置 tasks. json(构建):
在项目.vscode/tasks.json中添加:{ "version": "2.0.0", "tasks": [ { "label": "构建C++文件", "type": "shell", "command": "g++", "args": [ "-g", "main.cpp", "-o", "main" ], "group": { "kind": "build", "isDefault": true }, "problemMatcher": ["$gcc"], "detail": "将main.cpp编译为main" } ] }配置 launch. json(调试):
在项目.vscode/launch.json中添加:{ "version": "0.2.0", "configurations": [ { "name": "(gdb) 启动", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/main", "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": false, "MIMode": "gdb", "preLaunchTask": "构建C++文件", "setupCommands": [ { "description": "启用gdb的漂亮输出", "text": "-enable-pretty-printing", "ignoreFailures": true }, { "description": "将反汇编风味设置为Intel", "text": "-gdb-set disassembly-flavor intel", "ignoreFailures": true } ] } ] }
第四步:VSCode 配置 Python(bash 终端执行)
检查并安装基础环境:
# 检查Python版本 python3 --version # 检查pip pip3 --version # 安装pip(若未安装) sudo apt update && sudo apt install python3-pip -y # 统一python命令 sudo apt install python-is-python3创建并激活虚拟环境(bash 终端执行):
# 安装虚拟环境工具 sudo apt install python3.12-venv -y # 在项目目录创建虚拟环境 python3 -m venv .venv # bash 版本激活脚本(核心:仅在 bash 中生效) . /home/lkh/Document/Python/.venv/bin/activate验证虚拟环境(bash 终端执行):
# 查看前缀(有(.venv)则激活成功) echo $VIRTUAL_ENV # 或检查python路径 which python
第五步:安装 NVM(Node. js 版本管理,bash 终端执行)
# 校验是否在 bash 环境(非 bash 则退出)
if [ "$SHELL" != "/bin/bash" ]; then
echo "请先执行 exec bash 切换到 bash 终端!"
exit 1
fi
sudo apt update && sudo apt upgrade
sudo apt install curl
# 安装NVM
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
# 检查配置是否已存在,避免重复追加
if ! grep -q "NVM_DIR" ~/.bashrc; then
cat << 'EOF' >> ~/.bashrc
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
EOF
fi
# 生效配置(仅 bash 生效)
source ~/.bashrc
# 安装Node.js
nvm list available
nvm install 22.20.0
node --version
# 验证:bash 中可执行 node,fish 中需先执行 bash -c "source ~/.bashrc && node --version"
第六步:安装 Rust(bash 终端执行)
# 校验是否在 bash 环境(非 bash 则退出)
if [ "$SHELL" != "/bin/bash" ]; then
echo "请先执行 exec bash 切换到 bash 终端!"
exit 1
fi
sudo apt update && sudo apt install -y build-essential curl
# 检查配置是否已存在,避免重复追加
if ! grep -q "RUSTUP_UPDATE_ROOT" ~/.bash_profile; then
# 配置阿里云镜像
echo 'export RUSTUP_UPDATE_ROOT=https://mirrors.aliyun.com/rustup/rustup' >> ~/.bash_profile
echo 'export RUSTUP_DIST_SERVER=https://mirrors.aliyun.com/rustup' >> ~/.bash_profile
fi
# 加载镜像配置(仅 bash 生效)
source ~/.bash_profile
# 安装Rust
curl --proto '=https' --tlsv1.2 -sSf https://mirrors.aliyun.com/repo/rust/rustup-init.sh | sh
# 选择默认选项1即可
# 生效配置(仅 bash 生效)
. "$HOME/.cargo/env"
# 验证安装
rustc --version
cargo --version
# 检查配置文件是否已存在,避免重复覆盖
if [ ! -f "$HOME/.cargo/config.toml" ]; then
mkdir -p $HOME/.cargo && cat << 'EOF' > $HOME/.cargo/config.toml
[registry]
index = "https://github.com/rust-lang/crates.io-index"
[source.crates-io]
replace-with = 'aliyun'
[source.aliyun]
registry = "sparse+https://mirrors.aliyun.com/crates.io-index/"
EOF
fi
# 更新rustup(可选)
rustup self update
第七步:安装 Java(SDKMAN,bash 终端执行)
# 校验是否在 bash 环境(非 bash 则退出)
if [ "$SHELL" != "/bin/bash" ]; then
echo "请先执行 exec bash 切换到 bash 终端!"
exit 1
fi
# 安装SDKMAN
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
# 验证安装
sdk version
# 查看可用Java版本
sdk list java
# 安装示例(毕昇JDK 17)
sdk install java 17.0.17-bisheng
# 验证安装
java -version
javac -version
# 检查配置是否已存在,避免重复追加
if ! grep -q "sdkman-init.sh" ~/.bashrc; then
# 持久化SDKMAN环境(仅 bash 生效)
echo 'export SDKMAN_DIR="$HOME/.sdkman"' >> ~/.bashrc
echo '[[ -s "$HOME/.sdkman/bin/sdkman-init.sh" ]] && source "$HOME/.sdkman/bin/sdkman-init.sh"' >> ~/.bashrc
fi
# 生效配置(仅 bash 生效)
source ~/.bashrc
修复 VSCode Coder Runner 执行 Java 报错:
按
CTRL+,打开设置,搜索code-runner.executorMap修改 java 配置:
// 原配置 "java": "cd $dir && javac $fileName && java $fileNameWithoutExt", // 修改后 "java": "cd $dir && /home/lkh/.sdkman/candidates/java/current/bin/javac $fileName && /home/lkh/.sdkman/candidates/java/current/bin/java $fileNameWithoutExt",
第八步:切回 fish 终端(开发环境安装完成后)
# 从 bash 切回默认的 fish 终端
exec fish
# 验证是否切回(输出应为 /usr/bin/fish)
echo $SHELL
安装其他常用软件(fish/bash 均可执行)
cd /home/lkh/下载
# 安装微信
sudo dpkg -i WeChatLinux_x86_64.deb
# 修复依赖(若报错)
sudo apt-get -f install
# 安装WPS
sudo dpkg -i wps-office_12.1.2.23578.AK.preread.sw_542488_amd64.deb
sudo apt-get -f install
# 安装Motrix
sudo dpkg -i Motrix_1.8.19_amd64.deb
sudo apt-get -f install
核心使用总结
默认终端:系统默认是
fish,日常使用(美化、基础命令)直接用即可;开发环境操作:
安装/运行 NVM/Rust/SDKMAN/Python 虚拟环境 → 先执行
exec bash切换到 bash;操作完成后 → 执行
exec fish切回默认终端;VSCode 终端已强制配置为 bash,无需手动切换;
关键保障:
bash的配置(.bashrc/.bash_profile)仅在 bash 环境生效,不会被 fish 解析;fish 的美化配置(欢迎语、主题)仅在 fish 环境生效,不影响开发环境;
所有开发环境脚本都加了 bash 环境校验,非 bash 执行会提示切换,避免报错。
关键点回顾
系统默认终端设为
fish,满足美化需求;开发环境必须在
bash终端安装/运行,通过exec bash手动切换,完成后用exec fish切回;VSCode 终端强制配置为 bash,确保开发工具运行环境一致;
所有脚本都加了环境校验,避免跨终端执行导致的配置冲突/语法错误。
安装并使用 openclaw ollama
Ventoy 系统扩容交换内存
# 1. 停止当前 4GB 交换文件
sudo swapoff /swap.img
# 2. 删除旧交换文件
sudo rm -f /swap.img
# 3. 创建 16GB 交换文件(耗时1-2分钟,勿中断)
sudo fallocate -l 16G /swap.img
# 4. 设置权限(系统安全要求)
sudo chmod 600 /swap.img
# 5. 格式化并启用新交换文件
sudo mkswap /swap.img
sudo swapon /swap.img
# 6. 验证交换内存扩容成功(看到 16Gi 即完成)
free -h
swapon --show
首先安装 ollama
curl -fsSL https://ollama.com/install.sh | sh
然后拉取模型,我们目前的设备为 16 G 运行内存和 4 G 交换内存
所以使用模型
# 1. 拉取模型(如果只运行没拉取,会自动下载,也可手动拉取)
ollama pull qwen2.5-coder:14b
# 2. 查看已下载的模型(确认存在)
ollama list
# 输出里能看到 qwen2.5-coder:14b 即成功
# 3. 测试代码生成
ollama run qwen2.5-coder:14b
# 输入:"你好,这是我们第一次见面,你能用C++打印一行祝福语么?"
# 能生成完整且正确回答,说明模型正常。
然后去安装 openclaw
curl -fsSL https://openclaw.ai/install.sh | bash
使用模型:ollama/qwen2.5-coder:14b
启动命令:ollama launch openclaw