ubuntu24.04 安装
随便说说
玩debian 系的发行版半年多了,期间折腾过 ubuntu24+gnome, linux mint22 xfce, debain12 + gnome,i3 等等感觉linux 的桌面发行版越来越棒了,用来作为开发机器,国产软件支持度慢慢上来了,我最终选择了 ubuntu24 + gnome+移除snap 和 debian12 + gnome,因为软件兼容性感觉最好,还有gnome 风格像mac,个人不喜欢 windows 的UI风格和交互。
期间使用linux mint 时候,有一次mint 升级,导致 钉钉直接不能使用了,遂卸载了。
感觉linux 很好玩,可以定制很多东西, 就是浪费时间,不过这一过程还是能学到很多东西的,最近在自己的vps debian os上搭建东西,感觉也比较顺畅。
感觉自己的linux 开发环境折腾的也差不多了,后面应该不太用折腾了。或者升级版本的时候还需要折腾把,哈哈
我从windows 到 macos 都是开箱即用, 自由度比较少,很多时候不用选择,因为也没得选择。当我去折腾 linux 的时候,开始感觉迷茫,痛苦,感觉很多东西都没有,不能开箱即用,然后可以玩的东西又太多了,论坛也是到处打架。然后自己各个方面折腾尝试下,最后整合出一套属于自己的玩具把,还是蛮有意思的。或者说当我们面对可选择方向多的时候就拼命快速尝试,然后找到一个适合自己的,而不是彷徨和痛苦。
最重要一点, 现在有ai,在学习理解新东西的时候,速度确实上来了
灵活的网络
感觉这是作为开发和折腾linux 的基本功把。
timeshift
重要的事情说三遍,linux 桌面版 一定要 timeshift 备份 备份 备份
sudo apt install timeshift
图形化界面配置即可
timeshift 恢复
- ubuntu usb 安装程序
- 开启菜单选择 try or install 。。
- 安装 timeshift
- 图像化界面恢复即可
常用软件
同时在尝试debian12 gnome,ubuntu和debian很多都是通用的,debian12
- 需要灵活的网络
- 我的配置 config
mise - node、java 等sdk 管理工具
thefuck-好用的命令行提示工具
yazi-命令行文件浏览器
tldr-替代man命令行手册
- tldr: too long, don’t read , 官方文档太长了,不要读了,给你常用案例
maple font nf cn-特别好用的编程字体
Vimium C: 一款非常好用的 vim mode chrome 插件, 比vimium插件更强大
cursor 安装并使用
官网下载 cursor.appimage 文件, 然后通过下面的appLauncher 工具启用
会遇到两个问题:
1. 安装后不能启动,沙箱机制问题,wayland 会有这个问题
需要在 desktop 文件中
nvim ~/.local/share/applications/appimagekit_bb7c0f6e1d92651f70e5c5262b64bf05-Cursor.desktop
# 在文件中这一行,添加 --no-sandbox 不使用沙箱
Exec=/home/kyle/Applications/Cursor-1.2.1-x86_64_2e4d89c2624eb13f05ac4745c5a1070a.AppImage %F --no-sandbox
2. cursor 启动后, cursor zsh命令行 很多环境变量不能访问
比如我的就是 mise 不能访问,导致很多sdk 不能访问,现在完美了
在cursor 配置文件中添加如下即可
terminal.integrated.profiles.linux": {
"zsh": {
"path": "zsh",
"args": ["-c", "exec zsh --login"],
"overrideName": true
}
},
"terminal.integrated.defaultProfile.linux": "zsh",
"terminal.integrated.inheritEnv": true
fcitx5
安装后诊断 命令:
fcitx5-diagnose
这个输入法真的好用,尤其是自带的拼音中文输入法
sudo apt update
sudo apt install fcitx5 fcitx5-chinese-addons fcitx5-frontend-gtk3 fcitx5-frontend-qt5 fcitx5-frontend-qt6
sudo apt install fcitx5-configtool
sudo apt install fonts-noto-cjk # 安装字体
swayland 中 配置环境变量
mkdir -p ~/.config/environment.d
vim ~/.config/environment.d/env.conf
添加如下 数据
GTK_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
QT_IM_MODULE=fcitx
x11 中,编辑or 创建 ~/.xprofile
export GTK_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export QT_IM_MODULE=fcitx
export GLFW_IM_MODULE=ibus # 尤其这行 关键, 不然kitty 可能不能响应输入法
拼音简体和繁体切换快捷键取消,因为被其他软件占用了

设置开机自动启动

主题安装
推荐这个主题 https://github.com/tonyfettes/fcitx5-nord, 主题选不好,输入的时候会有遮挡
flameshot
sudo apt install flameshot

我的这个笔记本老 N 卡,用的x11 , 所以配置 flameshot gui ,在wayland 上不一样
obsidian
遇到了git 同步问题如下

在仓库命令行 git pull 并输入用户名和密码后, 执行下面的命令,存储用户名和密码
git config --global credential.helper store
然后回到 obsidian ,就可以git 操作不报错了
obsidian 图床配置
image auto upload plugin + picgo app
之前使用剪贴板 图片上传到obsidian 总是会报错,最后测试下来是 picgo app问题

oh zsh (命令行自动提示)
sudo apt update
sudo apt install zsh
# 安装 Oh My Zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# 安装 zsh-autosuggestions 和 zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-autosuggestions.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
添加插件
vim ~/.zshrc
plugins=(sudo git zsh-autosuggestions zsh-syntax-highlighting zsh-completions)
非常建议使用 powerlevel10k 主题,据说性能贼高
安装地址 https://github.com/romkatv/powerlevel10k?tab=readme-ov-file#installation
重新加载 Zsh 配置
source ~/.zshrc
chrome-gnome-shell 安装
通过chrome浏览器安装 gnome-shell extension 时候,点击install 不生效

先要执行下面的命令
sudo apt install chrome-gnome-shell # 对于基于 Debian 的系统
ubuntu 移除 snap 脚本
#!/bin/bash
# Ubuntu Snap 完全移除脚本
# 适用于 Ubuntu 24.04 GNOME 桌面
# 作者:Claude AI 助手
set -e # 遇到错误时停止执行
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# 日志函数
log_info() {
echo -e "${BLUE}[INFO]${NC} $1"
}
log_success() {
echo -e "${GREEN}[SUCCESS]${NC} $1"
}
log_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# 检查是否为 root 用户
check_root() {
if [[ $EUID -eq 0 ]]; then
log_error "请不要以 root 用户运行此脚本,脚本会在需要时提示输入密码"
exit 1
fi
}
# 检查 Ubuntu 版本
check_ubuntu_version() {
if ! command -v lsb_release &> /dev/null; then
log_warning "无法检测 Ubuntu 版本,继续执行..."
return
fi
local version=$(lsb_release -rs)
log_info "检测到 Ubuntu 版本: $version"
if [[ "$version" < "20.04" ]]; then
log_warning "此脚本主要针对 Ubuntu 20.04+ 测试,您的版本可能存在兼容性问题"
read -p "是否继续?(y/N): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
exit 1
fi
fi
}
# 备份重要数据提醒
backup_reminder() {
log_warning "重要提醒:删除 snap 包可能会删除应用数据!"
echo "请确保您已备份以下位置的重要数据:"
echo "- ~/snap/ (用户数据)"
echo "- Firefox 书签和设置 (如果使用 snap 版本)"
echo "- 其他 snap 应用的数据"
echo
read -p "是否已备份重要数据?(y/N): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
log_info "请先备份数据,然后重新运行脚本"
exit 1
fi
}
# 检查 snap 是否已安装
check_snap_installed() {
if ! command -v snap &> /dev/null; then
log_success "snap 未安装或已被移除"
return 1
fi
return 0
}
# 显示已安装的 snap 包
show_installed_snaps() {
log_info "当前已安装的 snap 包:"
snap list 2>/dev/null || log_warning "无法列出 snap 包"
echo
}
# 移除所有 snap 包
remove_all_snaps() {
log_info "开始移除所有 snap 包..."
# 获取所有已安装的 snap 包(排除 snapd 和 core)
local snaps=$(snap list 2>/dev/null | awk 'NR>1 && $1!="snapd" && $1!="core" && $1!="core18" && $1!="core20" && $1!="core22" && $1!="bare" {print $1}' | sort -r)
if [[ -z "$snaps" ]]; then
log_info "没有找到需要移除的用户 snap 包"
else
for snap_pkg in $snaps; do
log_info "移除 snap 包: $snap_pkg"
sudo snap remove --purge "$snap_pkg" 2>/dev/null || log_warning "移除 $snap_pkg 失败,可能已被移除"
done
fi
# 移除 core snap 包
local core_snaps="core22 core20 core18 bare core snapd"
for core_snap in $core_snaps; do
if snap list 2>/dev/null | grep -q "^$core_snap "; then
log_info "移除核心 snap: $core_snap"
sudo snap remove --purge "$core_snap" 2>/dev/null || log_warning "移除 $core_snap 失败"
fi
done
}
# 停止 snap 服务
stop_snap_services() {
log_info "停止 snap 相关服务..."
local services=(
"snapd.service"
"snapd.socket"
"snapd.seeded.service"
"snap-*"
)
for service in "${services[@]}"; do
if systemctl is-active --quiet "$service" 2>/dev/null; then
log_info "停止服务: $service"
sudo systemctl stop "$service" 2>/dev/null || true
fi
done
# 禁用服务
sudo systemctl disable snapd.service 2>/dev/null || true
sudo systemctl disable snapd.socket 2>/dev/null || true
sudo systemctl disable snapd.seeded.service 2>/dev/null || true
}
# 卸载 snapd
uninstall_snapd() {
log_info "卸载 snapd 包..."
# 移除 snapd 及相关包
sudo apt purge -y snapd gnome-software-plugin-snap 2>/dev/null || true
sudo apt autoremove -y 2>/dev/null || true
log_success "snapd 已卸载"
}
# 清理残留文件
cleanup_snap_files() {
log_info "清理 snap 相关文件和目录..."
local directories=(
"/var/snap"
"/var/lib/snapd"
"/var/cache/snapd"
"/usr/lib/snapd"
"/snap"
"$HOME/snap"
)
for dir in "${directories[@]}"; do
if [[ -d "$dir" ]]; then
log_info "删除目录: $dir"
if [[ "$dir" == "$HOME/snap" ]]; then
rm -rf "$dir" 2>/dev/null || log_warning "删除 $dir 失败"
else
sudo rm -rf "$dir" 2>/dev/null || log_warning "删除 $dir 失败"
fi
fi
done
# 清理 systemd 单元文件
log_info "清理 systemd 单元文件..."
sudo find /etc/systemd/system -name "snap-*" -delete 2>/dev/null || true
sudo find /etc/systemd/system -name "*snapd*" -delete 2>/dev/null || true
sudo systemctl daemon-reload 2>/dev/null || true
log_success "残留文件清理完成"
}
# 防止 snap 重装
prevent_snap_reinstall() {
log_info "配置防止 snap 自动重装..."
# 方法1: 使用 apt-mark hold
log_info "将 snapd 设置为 hold 状态..."
sudo apt-mark hold snapd 2>/dev/null || true
# 方法2: 创建 APT 偏好设置
log_info "创建 APT 偏好设置文件..."
sudo tee /etc/apt/preferences.d/no-snap.pref > /dev/null << 'EOF'
Package: snapd
Pin: release a=*
Pin-Priority: -10
Package: gnome-software-plugin-snap
Pin: release a=*
Pin-Priority: -10
EOF
# 方法3: 创建虚拟包 (可选)
read -p "是否创建虚拟 snapd 包以彻底防止重装?(y/N): " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
create_dummy_snapd_package
fi
log_success "防重装配置完成"
}
# 创建虚拟 snapd 包
create_dummy_snapd_package() {
log_info "创建虚拟 snapd 包..."
# 检查是否已安装 equivs
if ! command -v equivs-build &> /dev/null; then
log_info "安装 equivs..."
sudo apt update && sudo apt install -y equivs
fi
# 创建临时目录
local temp_dir=$(mktemp -d)
cd "$temp_dir"
# 创建控制文件
cat > snapd << 'EOF'
Package: snapd
Version: 999.999.999
Maintainer: Snap Removal Script <noreply@localhost>
Architecture: all
Description: Dummy package to prevent snapd installation
This is a dummy package created to prevent the installation
of snapd and related snap packages.
EOF
# 构建并安装虚拟包
equivs-build snapd
sudo dpkg -i snapd_999.999.999_all.deb
sudo apt-mark hold snapd
# 清理临时文件
cd - > /dev/null
rm -rf "$temp_dir"
log_success "虚拟 snapd 包创建完成"
}
# 安装 Firefox 替代版本
install_firefox_alternative() {
log_info "检查是否需要安装 Firefox 替代版本..."
if ! command -v firefox &> /dev/null; then
read -p "是否安装 Mozilla PPA 版本的 Firefox?(y/N): " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
log_info "添加 Mozilla PPA 并安装 Firefox..."
sudo add-apt-repository -y ppa:mozillateam/ppa
sudo apt update
sudo apt install -y firefox
# 设置优先级
sudo tee /etc/apt/preferences.d/mozilla-firefox > /dev/null << 'EOF'
Package: firefox*
Pin: release o=LP-PPA-mozillateam
Pin-Priority: 1001
EOF
log_success "Firefox 安装完成"
fi
else
log_info "Firefox 已安装,跳过"
fi
}
# 验证移除结果
verify_removal() {
log_info "验证 snap 移除结果..."
# 检查 snap 命令
if command -v snap &> /dev/null; then
log_warning "snap 命令仍然存在"
return 1
fi
# 检查 snapd 服务
if systemctl is-active --quiet snapd.service 2>/dev/null; then
log_warning "snapd 服务仍在运行"
return 1
fi
# 检查挂载点
if mount | grep -q "/snap"; then
log_warning "仍有 snap 挂载点"
return 1
fi
# 检查进程
if pgrep -f snap &> /dev/null; then
log_warning "仍有 snap 相关进程"
return 1
fi
log_success "snap 已完全移除"
return 0
}
# 显示完成信息
show_completion_info() {
echo
echo "=================================="
log_success "Snap 移除脚本执行完成!"
echo "=================================="
echo
echo "已完成的操作:"
echo "✓ 移除所有 snap 包"
echo "✓ 卸载 snapd"
echo "✓ 清理残留文件"
echo "✓ 配置防止自动重装"
echo
echo "注意事项:"
echo "• 建议重启系统以确保所有更改生效"
echo "• 如需安装软件,推荐使用 apt、flatpak 或 AppImage"
echo "• 定期检查 snap 是否被意外重装"
echo
echo "检查命令:"
echo "• snap list (应该提示命令不存在)"
echo "• systemctl status snapd (应该提示服务不存在)"
echo
read -p "是否现在重启系统?(y/N): " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
log_info "正在重启系统..."
sudo reboot
fi
}
# 主函数
main() {
echo "Ubuntu Snap 完全移除脚本"
echo "========================="
echo
check_root
check_ubuntu_version
if ! check_snap_installed; then
log_success "系统中没有安装 snap,无需移除"
exit 0
fi
backup_reminder
show_installed_snaps
echo "即将执行以下操作:"
echo "1. 移除所有 snap 包"
echo "2. 停止 snap 服务"
echo "3. 卸载 snapd"
echo "4. 清理残留文件"
echo "5. 防止自动重装"
echo "6. 可选:安装 Firefox 替代版本"
echo
read -p "是否继续?(y/N): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
log_info "用户取消操作"
exit 0
fi
echo
log_info "开始移除 snap..."
remove_all_snaps
stop_snap_services
uninstall_snapd
cleanup_snap_files
prevent_snap_reinstall
install_firefox_alternative
if verify_removal; then
show_completion_info
else
log_warning "移除过程中可能存在问题,请检查上述警告信息"
fi
}
# 脚本入口
main "$@"
appimage 文件管理 AppImageLauncher
比如cursor 就可以使用这个软件来管理,最近更新了,效果还行,更新软件的时候需要自己手动处理下

idea 解压安装
在官网下载 idea.tar.gz 文件
tar -xvzf ideaUI.tar.gz
sudo mv idea-IU-* /opt/idea
sudo chmod +x /opt/idea/bin/idea.sh
命令行执行 /opt/idea/bin/idea.sh 命令后, 打开idea 后, 可以通过idea 创建桌面快捷方式

apple 字体
根据参考地址即可实现,效果很棒棒
maple-font
ping-fang
inter-font
apple-emoji
后续问题排查

突然发现字体有点丑,排查确定是monospace 字体渲染
fonts.conf 配置
<match>
<test name="family">
<string>monospace</string>
</test>
<edit binding="strong" mode="prepend" name="family">
<string>Maple Mono NF</string>
<string>Maple Mono NF CN</string>
<string>Apple Color Emoji</string>
</edit>
</match>
执行检测命令后
❯ fc-match monospace
AppleColorEmoji.ttf: "Apple Color Emoji" "Regular"
显然,字体没用Maple Mono
修改如下:
不同版本的字体文件,有些字体名称有变更导致的
<match>
<test name="family">
<string>monospace</string>
</test>
<edit binding="strong" mode="prepend" name="family">
<string>Maple Mono</string>
<string>Apple Color Emoji</string>
</edit>
</match>
修改后,明显舒服多了

类 i3wm 配置
参考这个视频
这是我使用的最简扩展了

workspace 整体效果
- 顶部左上角显示workspace indicator
- 右侧是 application indicator
- 下面就是某个workspace区域了
just perfection 用来关闭动画, 不然切换头晕

space bar 显示顶部workspace 编号

switcher 是一款类似 ulauncher 快速打开程序
tactile 窗口布局工具 super + T
在debian12中 sudo nvim问题
sudo nvim 的时候 总是不走 ~/ .config/nvim 中的配置
问题原因
普通用户的 nvim 配置在:~/.config/nvim/
使用 sudo nvim 时,~ 指向 /root/,所以会查找 /root/.config/nvim/
root 用户通常没有配置,所以使用默认设置
解决方案
sudo -E nvim filename
我的常用快捷键修改
自定义全局快捷键
alt+shift+a
- name: flameshot
- command: `/bin/sh -c “flameshot gui” > /dev/null &
修改系统快捷键
switch applications
- alt + tab
- 因为我是多workspace 修改成这个快捷键后就可以,在多workspace 中快乐切换了 app 了
close window:
- alt+q
alt + space 被 switcher 扩展占用了,一定要 Disabled 掉

下面是我不再经常使用的东西了
ibus-rime
添加 universe 源
https://packages.ubuntu.com/noble/amd64/ibus-rime/download
已经弃用, 现在使用 fcitx5
这个要依赖上一步, 不然可能可能找不到ibus-rime相应到包
sudo apt install ibus-rime
雾凇输入法
添加搜狗字典库
搜狗官方下载相关词库
https://gaoweix.com/im-dict-converter/
执行如下命令添加词库即可
kyle@kyle-MS-7D42:~/Downloads$ rime_dict_manager -i luna_pinyin 生活常用成语大全.dict.yaml
imported 216 entries.
kyle@kyle-MS-7D42:~/Downloads$ rime_dict_manager -i luna_pinyin 计算机词汇大全【官方推荐】.dict.yaml
Albert 全局搜索
安装 总是失败,推荐使用 aptitude
sudo apt install aptitude
sudo aptitude install albert
sudo apt autoremove
sudo apt clean
字体使用apple 字体[弃用]
依赖 gnome-tweaks
https://github.com/fefelixa/macfonts 这个地址也有apple字体
mkdir -p Fonts
cd Fonts
wget https://github.com/sahibjotsaggu/San-Francisco-Pro-Fonts/raw/master/SF-Pro-Display-Black.otf
wget https://github.com/sahibjotsaggu/San-Francisco-Pro-Fonts/raw/master/SF-Pro-Display-Bold.otf
sudo mkdir -p /usr/share/fonts/opentype
sudo cp *.otf /usr/share/fonts/opentype/
sudo fc-cache -f -v

capsLock 映射成 ctrl
依赖 gnome-tweaks
qq music
ulauncher
在官网 可以通过 deb 或者 apt 安装
设置alt+space 启动快捷键
快捷键特殊处理, 根据网站 配置,安装下相应插件

方法2:
- 先取消 alt + space 系统快捷键

nodejs 和 java 版本管理工具
asdf官网
之前使用的是nvm + jenv ,现在尝试下新工具
在安装java 时候一定要注意精确版本号,不然可能不会找不到
jdk版本号查看网站
设置Alt + Q关闭程序
命令行执行 gsettings set org.gnome.desktop.wm.keybindings close "@as []"
命令行再执行 gsettings set org.gnome.desktop.wm.keybindings close "['<Alt>q']"
恢复默认设置 gsettings reset org.gnome.desktop.wm.keybindings close
屏幕放缩
我的屏幕是 需要1.25 倍才能看得正好,不然会很小
sudo apt install gnome-tweaks- 打开如下图,配置即可。 需要注意 有时候屏幕文字不清晰是上面这个 Antialiasing 配置问题。

远程仓库同步配置文件夹
因为文件夹已经存在
- .config 文件夹
git init git remote add origin <remoteurl>git pull origin master
安装微软雅黑字体
最想安装到是apple 字体, 但是安装了几个后并不能在web上很好到显示, 故折中方案 雅黑字体
微软雅黑
kdeconnect ios 与linux 共享粘贴版
sudo apt update
sudo apt install kdeconnect
ios 上安装对应软件即可
后续待安装
switcher extension 和 fcitx5 遮挡问题[不弄了]
apple 字体[上面已解决]
inter 字体修改为 apple 字体尝试下,感觉网页英文有时候显示怪怪的
zram [不弄了]
一台电脑完美实现,但是没有总结出启用规律,还把公司电脑直接跪了,幸好timeshift 备份了。 明天去看看怎么恢复把
更多推荐

所有评论(0)