Ubuntu 24.04 配置 Hyprland 桌面¶
Before Everything
笔者的科研需求导致不能像 Arch User 一样, 天天踩脚踏板滚动更新, 因此只能使用最稳定的ubuntu
但是ubuntu GNOME的审美实在难评...
因此采用的配置方式是: Ubuntu 24.04LTS + Hyprland 桌面管理
笔者的配置完全基于国光的 Ubuntu Hyprland 桌面优化记录进行, 向大佬致敬!
因此, 本文并不是对参考文章的“复读机”, 而是根据不同的需求, 提出了更多的解决方式
入门的建议:
- 先看国光的 Ubuntu Hyprland 桌面优化记录, 进行基础配置
- 再看本文, 进行更多高度客制化的配置
- 显示器问题
- CLI连网问题
- Nvidia驱动带来的问题
Hyprland Installation
本次使用的 https://github.com/JaKooLit/Ubuntu-Hyprland 项目来辅助我们一键安装, 亲测非常非常方便, 后面总结的一堆配置文件/快捷键也都是基于这个框架下的. 因此, 车速很快, 要么全部跟上全文; 要么别跟, 完全自定义 :)
| Bash | |
|---|---|
1 2 3 4 5 6 7 | |
后续就是一系列 yes / no 的客制化选项了, 建议严格跟着这份教程走: 国光的 Ubuntu Hyprland 桌面优化记录
快捷指令汇总 (无它, 唯手熟尔)
常用快捷指令汇总:
| 指令 | 作用 |
|---|---|
reboot |
重启电脑 |
poweroff |
关机 |
nmcli device wifi connect "WIFI_NAME" password "PSWD" |
连接无线网 |
upower -e |
查看所有电源设备 |
upower -i DEVICE_NAME |
查看电源电量 |
hyprctl reload |
重新加载hyprland桌面 |
waybar & |
加载出来一个waybar菜单栏 (连招会加载多个, 因此一般先 kill 再 waybar &) |
sudo dpkg -i [NAME].deb |
系统软件安装 |
常用配置文件汇总:
| 配置文件 | 作用 |
|---|---|
~/.config/hypr/UserConfigs/UserKeybinds.conf |
配置快捷键 |
~/.config/hypr/UserConfigs/Startup_Apps.conf |
配置启动项 |
~/.config/hypr/hyprland.conf |
hyprland配置“中枢”, 所有“子配置”的集中地点 |
/usr/share/applications/NAME.desktop |
桌面快捷方式的定义配置 |
常用快捷键汇总:
(1) 窗口类
| 快捷键 | 功能描述 |
|---|---|
Esc |
关闭当前 App |
Super + Q |
关闭活跃的窗口 |
Super + Shift + Q |
Kill 掉活跃的窗口 |
Super + Shift + F |
窗口全屏 |
Super + Shift + 数字 |
将当前窗口移动到对应的工作区 |
Super + Alt + B |
更换 Waybar 布局 |
Super + Ctrl + B |
更换 Waybar 样式 |
Super + Shift + S / PrtSc |
区域截图 |
(2) 启动器与文件
| 快捷键 | 功能描述 |
|---|---|
Super + 回车 |
打开 Kitty 终端 |
Super + D |
打开 App 启动器 (rofi/wofi) |
Super + S |
打开 Google 搜索 (上端waybar) |
Super + W |
打开 壁纸选择器 |
(3) 系统工具
| 快捷键 | 功能描述 |
|---|---|
Super + H |
打开快捷键帮助页面 |
Super + Shift + N |
打开通知中心 |
Super + Alt + E |
打开 rofi 表情包 |
Super + Alt + V |
剪贴板管理 (历史记录) |
Ctrl + Alt + P |
打开电源窗口 (wlogout) |
在终端里连网¶
使用 nmcli, 这是一个非常强大的linux下的CLI网络管理工具
一般网络: 输入密码连接即可
(1) 确保 NetworkManager 正常工作
| Bash | |
|---|---|
1 2 3 4 | |

(2) 检查网络设备 [网口]
| Bash | |
|---|---|
1 | |

(3) 扫描所有可用的 wifi
| Bash | |
|---|---|
1 | |

(4) 连接到wifi
- SSID: 网络名称
- 密码: 无需多言
注意这两个都需要用 " 包裹起来
| Bash | |
|---|---|
1 | |
(5) 检查当前连接情况
| Bash | |
|---|---|
1 | |
(6) 断开网络连接
注意这里是“连接级”的断开, 而不是“网口级”的断开
二者的区别在于,“连接级断开”不会影响网口本身, 如果此时有其他可用的、更高优先级的自动连接, NetManager可能会立即尝试连接到那个网络上
| Bash | |
|---|---|
1 | |

特殊内网: 需要认证
这部分内容, 很适用于在校园网/实验室内网/机房内网等需要认证的场景
笔者以在校园网 XJTU_STU 的步骤来演示:
- 像上述步骤一样, 正常连网
- 在浏览器里输入网关URL, 进行身份认证
- 学号
- 密码
(1) 正常连网
| Bash | |
|---|---|
1 2 3 4 | |


(2) 浏览器身份认证
在进行完上述步骤后, 在浏览器里输入 10.6.18.2 (在网管群里了解的)

连接即可上网:

外接显示器¶
ee29addd52b7734123dae0b9ebc9fd31 众所周知, 给 hyprland 外接显示器会遇见各种各样的问题, 比如: 画面缩放 / 分辨率 / 位置 ...
它可不像 ubuntu GNOME / MacOS 里, 在settings里, 自由"对齐"两个显示框的位置
在 hyprland 里, 需要自行修改monitor配置文件, 下面我们展开!
最基础配置¶
(1) 识别你的显示器名称
| Bash | |
|---|---|
1 | |

记住相应显示屏的名称, 比如我这里:
- 电脑本身:
eDP-1 - 外接显示器:
DP-3
(2) 编辑 hyprland.conf 配置文件
| Bash | |
|---|---|
1 | |
在里面新增相应的内容 (按需求加入), 具体格式如下文:
| Text Only | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
上述配置完美对应笔者的桌面摆设需求:

在这之后, 重新加载 hyprland:
| Bash | |
|---|---|
1 | |
永不熄屏¶
鉴于壁纸实在太漂亮了, 很多时候开着屏幕, 啥也不干, 盯着壁纸也是一种极大的享受
同时, 也想给路过的同学装装b, "btw, I use hyprland"
因此, "永不熄屏" 成为笔者的需求
做法很简单:
(1) 来到 ~/.config/hypr/UserConfigs/Startup_Apps.conf

(2) 注释掉 exec-once = hypridle 这一行即可

现在, 你的电脑就“永不熄屏”了!
原理也特别简单:
hypridle 是 Hyprland 官方的空闲管理守护进程。它的工作就是检测电脑是否空闲,然后在一定时间后执行操作(比如熄屏或启动 hyprlock 锁屏)
要实现“永不熄屏”,只需要阻止它启动就行
多设备屏幕切换带来的wayland消失问题¶
由于笔者一个显示器要接入多台设备,因此采用了 kvm switching hub 来进行屏幕切换管理

花了笔者200大洋, 大出血, 心痛ing
但这会带来一个问题:
在屏幕“再次切回”hyprland设备时, 顶部和底部的菜单栏, 即: wayland. 就会消失不见了
就像这样:

这可甚是令人头疼啊 ...
由于这个问题过于常见且频繁(我的设备经常切换屏幕)
解决方式很简单, 把 waybar 重启即可, 但总感觉打开CLI进行这个步骤显得不那么优雅...
笔者的解决办法是: 将 kill -q waybar; waybar & 包装成一个键盘快捷键 SUPER shift B:
(0) 原理: 为什么采用 kill -q waybar; waybar & 即可
killall -q waybar:-q(quiet) 会“安静地”杀掉所有名为 waybar 的进程- 如果 waybar 没在运行, 它也不会报错
;: 无论上一条命令是否成功, 都执行下一条waybar &:&符号会在后台启动 waybar, 这样你就可以关闭终端, waybar 也会继续运行
(1) 写一个 waybar 重启 relaunch_waybar.sh 脚本
新建脚本:
| Bash | |
|---|---|
1 | |
写入内容:
| Bash | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
赋予执行权限:
| Bash | |
|---|---|
1 | |
(2) 修改启动项, 更稳定
| Bash | |
|---|---|
1 | |
找到 exec-once = waybar 这一行, 修改成:
| Text Only | |
|---|---|
1 2 | |

(3) 当触发快捷键时, 会自动调用 relaunch_waybar.sh 脚本
打开"用户自定义按键"配置文件
| Bash | |
|---|---|
1 | |
在文件的末尾,添加一个新的绑定 SUPER + shift + b:
| Bash | |
|---|---|
1 2 | |

刷新 hyprland 即可:
| Bash | |
|---|---|
1 | |
Nvidia带来的一系列问题¶
Google Chrome 闪退¶
本质: Nvidia 图形驱动错误
(1) 现象:
在super+d中,我可以打开其他app,比如clash、wechat
但是点击chrome就是没有反应。什么问题?
(2) 报错信息:
在终端中测试启动命令:
| Bash | |
|---|---|
1 2 3 | |
报错:
| Text Only | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 | |
问题锁定:
libva error: /usr/lib/x86_64-linux-gnu/dri/nvidia_drv_video.so init failedtrace trap (core dumped)
本质原因:
当前我们在使用 NVIDIA 显卡。当 Google Chrome 启动时,它会默认尝试在 Wayland 模式下运行,并试图初始化硬件视频加速(VA-API)
NVIDIA 驱动在 Wayland 下的硬件加速初始化失败了(init failed)
这个失败非常严重,直接导致整个 Chrome 进程崩溃(core dumped)
这是一个在 Wayland + NVIDIA + Chrome 组合下非常经典的问题. that's why we always say "fuck u nvidia"
(3) 解决方式: 使用XWayland兼容层
强制使用 X11 模式!
| Bash | |
|---|---|
1 | |
Chrome 窗口现在应该能立即成功打开了
(4) 永久解决: 改变桌面图标的执行命令
我们总不能每次都从终端输入命令吧...
需要把这个 --ozone-platform=x11 标志永久地写入 Chrome 的快捷方式(.desktop 文件)中
| Bash | |
|---|---|
1 2 3 4 5 | |
添加 --ozone-platform=x11 标志:
在这个文件里,你需要找到所有以 Exec= 开头的行
通常有 3 行, 一个用于常规启动, 一个用于匿名模式, 一个用于带配置文件的启动
| Text Only | |
|---|---|
1 2 3 4 5 6 7 | |

将它们每个都加上 X11 的标志:
| Text Only | |
|---|---|
1 2 3 4 5 6 7 | |
QQMusic 打不开¶
本质: 沙盘应用, 与nvidia驱动产生冲突
(1) 现象:
| Bash | |
|---|---|
1 | |
(2) 根本原因:
QQ Music 使用的 Electron 框架与 Wayland/XWayland 之间的兼容性问题
QQ Music (Linux版) 是一个 Electron 应用!
Electron 应用在 Wayland 环境下运行时,有两种模式:
- XWayland 模式:通过 XWayland 兼容层运行
- 这是最稳定、最推荐的方式
- 原生 Wayland 模式:直接在 Wayland 上运行
- 这需要较新版本的 Electron,且 QQ Music 目前没有适配好 (2025-1106)
Electron 的 GPU 进程默认运行在沙箱中, 以便与系统隔离. 在 Hyprland 这样的 Wayland 环境下,这个沙箱与你的(可能是 NVIDIA 或某些 Mesa)驱动程序、XWayland 之间产生了冲突!
(3) 解决方式
| Bash | |
|---|---|
1 2 3 4 | |
(4) 永久解决: 改变桌面图标的执行命令
| Bash | |
|---|---|
1 2 3 4 | |
找到 Exec=qqmusic %U 这一行:
修正为 Exec=qqmusic --ozone-platform=x11 --disable-gpu-sandbox %U:
现在看起来就 everything works well 了 :))
