KDE 上 Wayland 后天天给我 crash, 就直接换 Hyprland 了
1. 安装
- 在 Arch KDE(或现有桌面) 下
- pacman hyprwayland-scanner 或 yay hyprwayland-scanner-git
- pacman hyprland 或 yay hyprwayland-git
- [Optional] 可以在 console 用
hyprland
进桌面, 但是基本什么都干不了, cmd 下的 hyprland 不会接收到我的 Super 按键事件
2. 配置
- 先别急着用 sddm 进 hyprland, 在 Arch KDE(或现有桌面)下
- 创建或更改
~/.config/hypr/hyprland.conf
, 例子 hyprwm/Hyprland, 可以直接复制覆盖 - 确认好基本的设置比如
Super
key 是什么,terminal
有没有安装(默认是kitty
) 可能没有安装然后会导致开不了控制台基本就很难受(一般直接更改到你目前用的比如 konsole) - 然后就可以进去边用边设
2.1 MONITORS
可以给显示器设置摆放位置和刷新率, 比如我放一个 AOC 在左边, 笔记本屏幕在右边
1 | ################ |
其中 monitor
的 description 可以在 hyprctl monitors
拿到. 尽量别设负数 position (虽然也能用), 会导致一些程序运行错误, 比如 hyprshot
.
2.2 MY PROGRAMS
可以设 terminal
到你常用的
2.3 Autostart
1 | ################# |
wl-clipboard
wl-clip-ersist
waybar
hyprpolkitagent
等需要额外安装, 用pacman
或 yaywl-paste
可以用来管理复制的内容, 然后用快捷键比如Super + V
看历史fcitx
解决方法参考 hyprwm/Hyprland/discussions/421
2.4 INPUT
kb_options
可以用来设 compose key 比如kb_options = compose:ralt
follow_mouse
用来选鼠标交互方式, 比如鼠标1=hover
(放上去就选中窗口) 或者2=click
(点击选中)scroll_factor
设置滚动速度
2.5 ENV
1 | ############################# |
2.6 KEYBINDINGSS
大部分都是默认
1 | #################### |
bind
bindl
bindm
之类的大体上没有显著差别hyprshot
grimblast
playerctl
hyprlock
,swappy
等要额外安装- Arch 没有
lightctl
可以用acpi
代替, 参考 ejmastnak.com/tutorials/arch/backlight
2.7 Waybar - Status Bar
- 创建
~/.config/waybar/waybar.conf
- 上 Alexays/Waybar/wiki/Examples 找模板改, 我改的第三个, 配置如下
waybar.json
1 | // -*- mode: json -*- |
其中 pavucontrol
pamixer
得另外装style.css
1 | * { |
放在 ~/.config/waybar
下然后 exec-once
里启动
2.8 Hyprlock - screen Locker
- 创建
~/.config/hypr/hyprlock.conf
- 复制 wiki.hyprland.org/Hypr-Ecosystem/hyprlock 上 Widgets 下来, 比如
1 | background { |
2.9 Electron on wayland
本节为了解决一些 electron 应用不能复制之类的问题
参考:
- https://fcitx-im.org/wiki/Using_Fcitx_5_on_Wayland#Chromium_.2F_Electron
- https://github.com/fcitx/fcitx5/issues/996
- 如果遇到 chromium / electron 无法复制 -> 可以开
xeyes
看看是不是跑在 X11 下(用xeyes
), 要跑在 wayland 上就没问题. - 加
export ELECTRON_OZONE_PLATFORM_HINT=wayland
和export QT_QPA_PLATFORM=wayland
让 electron 和 qt 程序跑在 wayland 上 - 如果遇到 fcitx5 无法在 chromium / elctron 在 wayland 上输入, 需要加参数
--enable-features=UseOzonePlatform --ozone-platform=wayland --enable-wayland-ime
在启动的时候, 比如 chrome 和 vscode
2.10 Screen sharing
本节为了解决不能分享屏幕或者录屏之类的问题
参考:
- 文档1: https://wiki.hyprland.org/Useful-Utilities/Screen-Sharing/
- 文档2: https://wiki.hyprland.org/Useful-Utilities/Screen-Sharing/ 和 https://gist.github.com/brunoanc/2dea6ddf6974ba4e5d26c3139ffb7580
- https://github.com/hyprwm/xdg-desktop-portal-hyprland/issues/104
- 先按照文档1的安装
pipewire
和wireplumber
, 然后按照文档2的安装xdg-desktop-portal-hyprland
(可以卸载xdg-desktop-portal-wlr
如果有). - 根据文档2把
exec-once=dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
加进hyprland.conf
里
2.11 打开文件 KDE 提示的弹窗
本节为了解决 KDE 提示的弹窗是空白或者他不能根据文件后缀打开
参考: https://www.lorenzobettini.it/2024/05/fixing-the-empty-open-with-in-dolphin-in-hyprland/
- 安装
sudo pacman -S archlinux-xdg-menu
- 把
env = XDG_MENU_PREFIX,arch-
加到hyprland.conf
2.12 Jetbrain IDEs in wayland
在
wayland
上跑 Jetbrain IDEs
参考:
- https://youtrack.jetbrains.com/issue/JBR-3206/Native-Wayland-support#focus=Comments-27-9266459.0-0
- https://mvysny.github.io/idea-wayland/
- 把
-Dawt.toolkit.name=WLToolkit
加到help->custom VM options
里
2.13 Line In
如果想监听/playback主板的 LineIn 口(也就是 windows 上的 listern 功能) 可以用 pactl load-module module-loopback source=alsa_input.usb-Generic_USB_Audio-00.pro-input-1
.
其中 source 需要 pactl list short sources
然后找到 LineIn 的 sink, 不行的话可以每个都试一下.
取消监听是 pactl unload-module module-loopback
3. 遇到的未解决的问题
- Jetbrain IDEs 可能在一些操作后, 比如
Ctrl shift L
格式化后失去指针(不会显示正在更改的光标也无法输入), 目测是格式化弹窗用enter
进行格式化而不是鼠标触发, 我一般用Super + C
弹出 IDE 的关闭确认弹窗然后取消就可以了 - Chrome 在跳弹窗的时候不会显示 popup 只会把 tab 冻结,用按住
SUPER
然后点一下 Chrome 就ok了