Arch KDE -> Hyprland
2024-11-10 14:12:24
KDE 上 Wayland 后天天给我 crash, 就直接换 Hyprland 了
1. 安装
- 在 Arch KDE(或现有桌面) 下
- yay hyprwayland-scanner-git
- yay hyprwayland-git
- [Optional] 可以在 console 用
hyprland
进桌面, 但是基本什么都干不了, cmd 下的 hyprland 不会接收到我的 Super 按键事件
2. 配置
- 先别急着用 sddm 进 hyprland, 在 Arch KDE(或现有桌面)下
- 创建或更改
~/.config/hypr/hyprland.conf
, 例子 hyprwm/Hyprland, 可以直接复制覆盖 - 确认好基本的设置比如
Super
key 是什么,terminal
有没有安装(默认是kitty
) 可能没有安装然后会导致开不了控制台基本就很难受 - 然后就可以进去边用边设
2.1 MONITORS
可以给显示器设置摆放位置和刷新率, 比如我放一个 AOC 在左边, 笔记本屏幕在右边
1 | ################ |
其中 monitor
的 description 可以在 hyprctl monitors
拿到. 尽量别设负数 position (虽然也能用), 会导致一些程序运行错误, 比如 hyprshot
.
2.2 MY PROGRAMS
可以设 terminal
回 konsole
2.3 Autostart
1 | ################# |
wl-paste
wl-clip-ersist
waybar
等需要额外安装, 用 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57background {
monitor =
# path = /home/me/someImage.png # only png supported for now
color = rgba(25, 20, 20, 1.0)
# all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
blur_passes = 0 # 0 disables blurring
blur_size = 7
noise = 0.0117
contrast = 0.8916
brightness = 0.8172
vibrancy = 0.1696
vibrancy_darkness = 0.0
}
input-field {
monitor =
size = 200, 50
outline_thickness = 3
dots_size = 0.33 # Scale of input-field height, 0.2 - 0.8
dots_spacing = 0.15 # Scale of dots' absolute size, 0.0 - 1.0
dots_center = false
dots_rounding = -1 # -1 default circle, -2 follow input-field rounding
outer_color = rgb(151515)
inner_color = rgb(200, 200, 200)
font_color = rgb(10, 10, 10)
fade_on_empty = true
fade_timeout = 1000 # Milliseconds before fade_on_empty is triggered.
placeholder_text = <i>Input Password...</i> # Text rendered in the input box when it's empty.
hide_input = false
rounding = -1 # -1 means complete rounding (circle/oval)
check_color = rgb(204, 136, 34)
fail_color = rgb(204, 34, 34) # if authentication failed, changes outer_color and fail message color
fail_text = <i>$FAIL <b>($ATTEMPTS)</b></i> # can be set to empty
fail_transition = 300 # transition time in ms between normal outer_color and fail_color
capslock_color = -1
numlock_color = -1
bothlock_color = -1 # when both locks are active. -1 means don't change outer color (same for above)
invert_numlock = false # change color if numlock is off
swap_font_color = false # see below
position = 0, -20
halign = center
valign = center
}
label {
monitor =
text = cmd[update:1000] echo "<span foreground='blue'>$(date)</span> "
text_align = center # center/right or any value for default left. multi-line text alignment inside label container
color = rgba(200, 200, 200, 1.0)
font_size = 25
font_family = Noto Sans
rotate = 0 # degrees, counter-clockwise
position = 0, 80
halign = center
valign = center
}
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
里- Jetbrain IDEs 可能在一些操作后, 比如
Ctrl shift L
格式化后失去指针(不会显示正在更改的光标也无法输入), 目测是格式化弹窗用enter
进行格式化而不是鼠标触发, 我一般用Super + C
弹出 IDE 的关闭确认弹窗然后取消就可以了 - Chrome 在跳弹窗的生活不会显示只会把 tab 冻结,用按住
SUPER
然后点一下 Chrome 就ok了
- Jetbrain IDEs 可能在一些操作后, 比如