Hyprland
Hyprland 是一个独立的且使用 C++ 编写的平铺式 Wayland 合成器。 Hyprland 值得注意的功能包括动态平铺、选项卡窗口、整洁可读的 C++ 代码库,和提供窗口动画的自定义渲染器,窗口圆角,以及透明窗口上的 Dual-Kawase Blur。一般用法和配置在 Hyprland Wiki 中有详细文档介绍。
当你遇到输入法问题时,请查看故障排除。
安装
通过包管理器安装
安装 hyprland包
通过CMake编译安装
首先将 Git 仓库克隆到本地:
git clone --recursive https://github.com/hyprwm/Hyprland
其次切换到 Git 仓库目录:
cd Hyprland
最后编译安装:
make all && sudo make install
自 #6608 起,Hyprland 使用 aquamarine包 作为自己的渲染后端库。在此之前,它捆绑了它自己的 wlroots 版本,与wlroot-gitAUR类似。
- NVIDIA GPU 用户也应该在尝试启动Hyprland之前确保遵守上游的 NVIDIA 页面 Hyprland Wiki。如果不这么做,可能会导致很多错误,包括可能无法登录、窗口闪烁和 CPU 使用率较高。
- Hyprland 不支持使用 NVIDIA GPU,很多用户成功了,但如果一些东西出现了错误,那你只能靠你自己来修复了。
- 由于缺乏
seatd.service会导致Hyprland无法启动,请确保安装了 Polkit 软件,或者启动并启用seatd.service。 - 对于 Vmware/VirtualBox 用户,可能需要开启 3D 加速才可以正常运行 Hyprland
配置
配置是通过一个单一的Lua文件完成的,它通常在~/.config/hypr/hyprland.lua。若该文件不存在,hyprland 将会自动生成一个示例配置文件。你也可以将你的配置分为多个文件,并且使用Lua语言中的require()函数加载这些配置文件。默认生成的配置可见/usr/share/hypr/hyprland.lua。
hyprland.lua 文件包含配置设备(如键盘、鼠标、触控板、显示器)的指令,以及动画、装饰、布局等设置。你可以设置按键绑定、窗口规则以及在启动时执行命令。
在你保存配置文件时,配置都会自动重新加载。你可以使用 hyprctl reload 来重载以获得相同的效果。对于某些设置(尤其是输入设置),你可能需要重启你的 Hyprland 会话。
设置也可以使用 hyprctl 动态更改设置,但是这些设置不会保存
移除最上方的警告
请在~/.config/hypr/hyprland.lua中移除或使用#注释以下内容:
~/.config/hypr/hyprland.lua
autogenerated = 1
键盘
按键映射
Hyprland 默认使用 us 键盘布局,你可以使用hl.config() 函数来更改键盘布局:
~/.config/hypr/hyprland.lua
-- German Colemak layout
hl.config({
input = {
kb_layout = "de",
kb_variant = "colemak",
}
})
查看 Hyprland Wiki 以查看所有可用选项
us 布局的键盘则有必要更改按键映射
键入延迟和速率
虽然Xorg用户将习惯于在服务器级别定义此设置,在Wayland上,每个合成器都会自行处理:
~/.config/hypr/hyprland.lua
-- Repeat rate and delay
hl.config({
input = {
repeat_rate = 25,
repeat_delay = 600,
}
})
键盘背光
参见背光一文。
你可以在 Hyprland 中使用键盘亮度控制。
你可以尝试在 Hyprland 中控制键盘背光。安装 brightnessctl包 然后添加一个与其有关的按键绑定,随后使用 SUPER, FX 或 XF86KbdBrightness 替换 keyboard_brightness_* ,这取决于你的硬件是如何发出键盘背光的。
~/.config/hypr/hyprland.lua
-- Keyboard backlight
hl.bind("keyboard_brightness_up_shortcut", hl.dsp.exec_cmd("brightnessctl -d *::kbd_backlight set +33%"))
hl.bind("keyboard_brightness_down_shortcut", hl.dsp.exec_cmd("brightnessctl -d *::kbd_backlight set 33%-"))
此外,你还可以设置更改时弹出屏幕通知。
媒体按键
在Hyprland上有可能通过使用 XF86Audio 键盘按键和一个外部像 pavucontrol包 或者 pamixer包 和 playerctl 的应用程序使用键盘媒体按键控制媒体(翻译可能不准确,请参照下面英语)
通过 XF86Audio 按键在Hyprland中使用键盘的媒体控制键和启动一个像pavucontrol包、pamixer包和playerctl包的应用:
~/.config/hypr/hyprland.lua
-- Volume and Media Control
hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("pamixer -i 5"), { repeating = true })
hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("pamixer -d 5"), { repeating = true })
hl.bind("XF86AudioMicMute", hl.dsp.exec_cmd("pamixer --default-source -m"))
hl.bind("XF86AudioMute", hl.dsp.exec_cmd("pamixer -t"))
hl.bind("XF86AudioPlay", hl.dsp.exec_cmd("playerctl play-pause"))
hl.bind("XF86AudioPause", hl.dsp.exec_cmd("playerctl play-pause"))
hl.bind("XF86AudioNext", hl.dsp.exec_cmd("playerctl next"))
hl.bind("XF86AudioPrev", hl.dsp.exec_cmd("playerctl previous"))
当有更改时,也可以触发屏幕通知
鼠标
参见 Hyprland Wiki。
为了应用鼠标设备的配置选项,请像这样添加一个新类别:
~/.config/hypr/hyprland.lua
device {
name = 鼠标设备名称
# 针对鼠标的选项 ...
}
通过检查 hyprctl devices 的输出,可以轻松获得设备名称。
鼠标加速度/灵敏度
您可以使用下面所示配置控制鼠标加速度/灵敏度:
~/.config/hypr/hyprland.lua
device {
name = 鼠标设备名称
sensitivity = -0.5
}
将 -0.5 替换为你希望的鼠标加速度/灵敏度。
触摸板手势
作为 Wayland 合成器,Hyprland 完全支持触摸板手势(默认是禁用的)。你可以使用hl.gesture()函数启用:
~/.config/hypr/hyprland.lua
-- Enable touchpad gestures
hl.gesture({
fingers = 3,
direction = "horizontal",
action = "workspace"
})
查看 Hyprland Wiki 来获取所有可用的选项
显示设置
屏幕共享
查看屏幕共享。
作为一个兼容wlroots的合成器,Hyprland 可以利用 xdg-desktop-portal-wlr包 通过 XDG 桌面门户在一系列应用程序中启用屏幕录制。
Hyprland 还维护 xdg-desktop-portal-hyprland包,一个支持屏幕共享(包括选区功能)和窗口共享,全局快捷键,并且有一个图形选择其的工具。关于使用该工具在 Hyprland wiki 中有进一步的文档介绍。
值得注意的是,xdg-desktop-portal-hyprland 不包括一个文件选择器,用户可以安装 xdg-desktop-portal-gtk包。
设置屏幕分辨率
Hyprland 将会尝试去自动检测你的屏幕分辨率。不过在某些情况下它将会失败并默认为故障保护,通常是在存在多个屏幕或你有混合笔记本电脑的情况下。如果屏幕下所有的东西都很大,那么你需要设置你默认的显示器和分辨率
首先使用 hyprctl 找到你的默认显示器:
$ hyprctl monitors
Monitor eDP-1 (ID 0):
1920x1080@144.003006 at 0x0
description: Chimei Innolux Corporation 0x153C (eDP-1)
...
然后使用hl.monitor()函数配置你的显示器:
~/.config/hypr/hyprland.lua
-- Monitor details
hl.monitor({
output = "eDP-1",
mode = "1920x1080@144",
position = "0x0",
scale = 1,
})
此处的@144指的是屏幕的刷新率,1920x1080指的是分辨率。请替换为显示器所支持的刷新率和分辨率。
0x0 是一个用于多屏幕设置和最终设置的位置偏移,1 是屏幕缩放倍数。
更多信息可见Hyprland Wiki
设置GUI
nwg-displays包 是管理多显示器的 GUI 软件,支持 Hyprland. 它是nwg-shell的一部分,但并不依赖 nwg-shell,参阅 nwg-displays github 以获得更多信息。
亮度
安装 brightnessctl包 并添加以下内容:
~/.config/hypr/hyprland.lua
-- Screen brightness
hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("brightnessctl s +5%"))
hl.bind("XF86MonBrightnessDown", hl.dsp.exec_cmd("brightnessctl s 5%-"))
此外,还可以设置更改时弹出通知。
使用
请注意:确保您已正确安装与您主机相匹配的显卡驱动或 openvmtools 并启用3D加速
启动Hyprland
通用 Wayland 会话管理器(uwsm)
通用Wayland会话管理器 通过systemd 单元文件合成器和与其对应的配置好的软件和守护进程来使你通过systemctl控制它们。
当你选择 hyprland (uwsm-managed)时,Display manager 会启动一个带有uwsm的Hyprland。
在命令行解释器#登录 Shell使用以下脚本,你也可以在 getty 通过 uwsm 启动Hyprland:
if uwsm check may-start && uwsm select; then
exec systemd-cat -t uwsm_start uwsm start default
fi
if uwsm check may-start; then exec uwsm start hyprland.desktop fi
- 必须避免使用
hl.dsp.exit()调度器或直接终止 Hyprland 进程,因为这会干扰正常的关机进程。例如,使用uwsm stop或loginctl terminate-user ""来终止 Hyprland 并退出用户会话:
~/.config/hypr/hyprland.lua
hl.bind("SUPER + M", hl.dsp.exec_cmd("uwsm stop"))
- 不要在
hyprland.lua中配置环境变量,而是使用 “uwsm ”文件~/.config/uwsm/env来配置 uwsm 管理的所有图形会话(GTK、Qt、xcursor、...)的通用变量。...),以及~/.config/uwsm/env-hyprland用于 Hyprland 专属环境变量(例如HYPR*和AQ_*变量)。这些文件的格式为export KEY=VALUE,每行不加注释。如果使用多个 GPU,强烈建议将环境变量AQ_DRM_DEVICES置于env-hyprland内,以避免与其他合成器发生冲突。
终端
使用如下指令在 Getty 中启动 Hyprland:
$ start-hyprland
显示管理器
虽然从显示管理器中启动不是官方支持的,但是用户们报告成功在 GDM 、 SDDM 和其他的显示管理器中启动。hyprland包 中包含两个桌面项,并且所有 Hyprland AUR 包将会自动生成。
两种方法都提供相同的结果,加上或减去一些环境变量和服务。
自动登录
用户可以通过一个显示管理器或着在登录时采用 Xinit#Autostart X at login 中描述的方法进行自动登录
hyprctl 和 IPC
hyprctl 是一个命令行实用程序,随Hyprland一起安装,用于与显示服务器通信。它允许你向服务器发送命令(相当于配置文件中的命令,但语法略有不同)、设置关键词、发送询问和请求信息。请查看完整文档
Hyprland 还公开了 2 UNIX 套接字,以便通过代码或命令行实用程序控制和获取有关 Hyprland 的信息。这些套接字会广播焦点变化(窗口、工作区、监视器)、窗口/工作区创建等事件。
hyprctl 和 IPC 接口都在脚本中有效使用,对于复杂任务控制 Hyprland。
自动启动
在 Lua 配置文件中,你可以在hyprland.start事件监听器中执行命令以实现自动启动软件。
hyprland.lua 文件每次的更改。使用hl.on("hyprland.start", ...)事件确保了软件和守护进程仅仅在引导后启动一次,防止资源竞争情况或者多个实例在重载后同时运行。uwsm app中来使它被uwsm管理。例如:
~/.config/hypr/hyprland.lua
hl.on("hyprland.start", function ()
hl.exec_cmd("uwsm app -- mycommand --arg1 --arg2")
end)
hl.bind("SUPER + E", hl.dsp.exec_cmd("uwsm app -- pcmanfm-qt.desktop"))
设置环境变量
你可以使用hl.env()函数在hyprland.lua中设置环境变量,但是它的语法不同于在Unix shell中使用env命令
如果XDG_MENU_PREFIX变量未设置,KDE组件软件(如Dolphin、digiKam)可能会展示一个空的 使用……打开 菜单。设置这个来匹配一个已安装在/etc/xdg/menus/的菜单文件,如:
~/.config/hypr/hyprland.lua
hl.env("XDG_MENU_PREFIX", "gnome-")
使用plasma-作为plasma-applications.menu或者xfce-作为xfce-applications.menu。然后重构KDE服务缓存:
$ kbuildsycoca6 --noincremental
Hypr 生态
Hyprland 开发团队正在构建一个专门用于 Hyprland 的软件生态,这些工具将包括调度器,允许使用 hyprctl 而不是依赖脚本来控制它们。
目前,软件生态包括以下软件:
Hyprpaper
Hyprpaper 是一个壁纸工具,你可以安装 hyprpaper包 来使用它。
Hyprpicker
Hyprpicker 是一个用于在一个桌面中抓取一个颜色的工具,你可以安装 hyprpicker包 来使用它。该软件不需要其余配置。
Hypridle
Hypridle 是一个idle管理守护程序,你可以安装 hypridle包 来使用它。
Hyprlock
Hyprlock 是一个屏幕锁定管理器,你可以安装 hyprlock包 来使用它。
Hyprcursor
Hyprcursor 是一个处理屏幕光标的新格式,它在传统的方式上提升了很多,你可以安装 hyprcursor包 来使用它。
Hyprcursor 主题
光标主题可以使用 AUR 安装,以下是例子:
将现有的光标主题移植到 Hyprcursor,你可以参照上游 GitHub 仓库。
关于设置光标样式,你也可以查阅光标主题来设置。
XDG-Desktop-Portal-Hyprland
Hyprland 自己的实现的XDG Desktop Portal,与其他基于wlroots的合成器兼容,但是在使用Hyprland时额外提供一些功能。可安装xdg-desktop-portal-hyprland包
Hyprpolkitagent
Hyprpolkitagent 是一个 polkit 身份验证守护进程。图形用户界面应用程序需要使用它来请求提升权限。安装 hyprpolkitagent包 来使用它。
参见 Hyprland Wiki。
Hyprsunset
Hyprsunset 是提供蓝光滤镜的实用工具,通过 hyprsunset包 安装。
Hyprsysteminfo
Hyprsysteminfo 是一个获取系统信息的软件,与neofetchAUR和fastfetch包类似。你可以安装hyprsysteminfoAUR
技巧提示
文件管理器
在 Hyprland 环境下,如果需要图形化的文件管理功能,则需要一个兼容 Wayland 的外部应用程序。以 thunar包 为例,我们只需为其分配一个快捷键,操作如下:
~/.config/hypr/hyprland.lua
...
hl.bind("SUPER + E", hl.dsp.exec_cmd("thunar"))
...
应用程序启动器
在 Hyprland 环境下,如果需要启动应用程序,则需要一个兼容 Wayland 的外部应用程序。以 wofi包 软件包为例,我们只需为其分配一个快捷键,操作如下:
~/.config/hypr/hyprland.lua
...
hl.bind("SUPER + F", hl.dsp.exec_cmd("wofi --show drun"))
...
Idle
Hyprland 需要一个外部的 Wayland 兼容的 idle 管理守护进程。最普遍安装的是 hypridle包 和 hyprlock包。你可以使用如下的快捷键来手动锁定屏幕:
~/.config/hypr/hyprland.lua
...
hl.bind("SUPER + L", hl.dsp.exec_cmd("hyprlock"))
...
自动锁定屏幕和挂起
创建下面的文件:
~/.config/hypr/hyprland.lua
...
hl.bind("SUPER + L", hl.dsp.exec_cmd("hyprlock"))
...
这个文件必须是可执行的,然后运行它:
~/.config/hypr/hyprland.lua
-- enable hypridle at start
hl.on("hyprland.start", function()
...
hl.exec_cmd("hypridle")
...
end)
在超时期限后使用 DPMS 关闭屏幕
Hyprland 有一个内置的调度器来控制 DPMS 请求,不过不建议使用它作为一个直接按键绑定,这样做的结果是你不能打开重新打开你的屏幕,且需要你重新启动。
更改在上文的文件并将其更改为:
~/.config/hypr/hypridle.conf
general {
lock_cmd = pidof hyprlock || hyprlock
}
listener {
timeout = 300
on-timeout = loginctl lock-session
}
listener {
timeout = 600
on-timeout = hyprctl dispatch dpms off
on-resume = hyprctl dispatch dpms on
}
listener {
timeout = 900
on-timeout = systemctl suspend
}
状态栏
在 Hyprland 环境下,如果需要状态栏,则需要一个兼容 Wayland 的外部应用程序。以 waybar包 软件包为例,操作如下:
~/.config/hypr/hyprland.lua
-- enable status bar at start
hl.on("hyprland.start", function()
...
hl.exec_cmd("waybar")
...
end)
工作区总揽
waybar包 内置了适于这个功能的完全可自定义模块,支持Hyprland工作区自然地切换。
查看 waybar Wiki[1] 了解详情。
Polkit 认证
Polkit 认证需要使用外部身份验证代理。Hyprland 推荐使用hyprpolkitagent包 ,你也可以选择其他的Polkit
调用hyprpolkitagent包:
~/.config/hypr/hyprland.lua
-- enable polkit authentication agent at start
hl.on("hyprland.start", function()
...
hl.exec_cmd("systemctl --user start hyprpolkitagent")
...
end)
桌面壁纸
在 Hyprland 环境下,如果需要管理桌面壁纸,则需要一个兼容 Wayland 的外部应用程序。以 hyprpaper包 软件包为例,操作如下:
~/.config/hypr/hyprland.lua
-- enable hyprpaper at start
hl.on("hyprland.start", function()
...
hl.exec_cmd("hyprpaper")
...
end)
另外,hyprpaper包也需要一个配置文件来启用,创建一个文件,如下:
~/.config/hypr/hyprpaper.conf
wallpaper {
monitor = monitor
path = /home/me/amongus.png
fit_mode = cover
将monitor替换为你想设置壁纸的显示器,你可以通过hyprctl monitors来获取一个显示器列表。monitor也可以是空的,这样就可以应用规则到所有显示器。
随机壁纸脚本
创建以下脚本并确保其可执行:
~/.config/hypr/scripts/hyprpaper-random
#!/usr/bin/env bash WALLPAPER_DIR="$HOME/.config/hypr/wallpapers/" CURRENT_WALL=$(hyprctl hyprpaper listloaded) # Get a random wallpaper that is not the current one WALLPAPER=$(find "$WALLPAPER_DIR" -type f ! -name "$(basename "$CURRENT_WALL")" | shuf -n 1) # Apply the selected wallpaper hyprctl hyprpaper reload ,"$WALLPAPER"
接下来创建一个新目录来存储背景图片,类似于 ~/.config/hypr/wallpapers 的文件夹即可,并在其中放置任何你想要设置为的图片。
最后,当指定按键被按下时调用脚本:
~/.config/hypr/hyprland.lua
...
hl.bind("SUPER + R", hl.dsp.exec_cmd("~/.config/hypr/scripts/hyprpaper-random"))
...
屏幕通知
屏幕上对亮度和音量调整等操作显示通知的功能可以借助外部的通知服务程序来实现。这里我们以 mako包 为例。
更多屏幕通知软件请见桌面通知程序#独立通知,参阅桌面通知程序以获取媒体键通知的进一步说明。
脚本请见Mako#使用方法#媒体键通知
然后添加以下内容(或编辑任何现有绑定):
~/.config/hypr/hyprland.lua
-- Volume
hl.bind("XF86AudioRaiseVolume", hl.dsp.exec_cmd("~/.config/hypr/scripts/volume --inc"))
hl.bind("XF86AudioLowerVolume", hl.dsp.exec_cmd("~/.config/hypr/scripts/volume --dec"))
hl.bind("XF86AudioMicMute", hl.dsp.exec_cmd("~/.config/hypr/scripts/volume --toggle-mic"))
hl.bind("XF86AudioMute", hl.dsp.exec_cmd("~/.config/hypr/scripts/volume --toggle"))
屏幕背光通知
脚本请见Mako#使用方法#屏幕背光通知
然后添加以下内容(或者编辑任何现有的绑定):
~/.config/hypr/hyprland.lua
-- Screen brightness
hl.bind("XF86MonBrightnessUp", hl.dsp.exec_cmd("~/.config/hypr/scripts/backlight --inc"))
hl.bind("XF86MonBrightnessDown", hl.dsp.exec_cmd("~/.config/hypr/scripts/backlight --dec"))
键盘(Keyboard)语言通知
要运行此脚本, 你需要一个命令行 JSON 处理器 gojqAUR
脚本请见Mako#使用方法#键盘(Keyboard)语言通知
然后添加以下内容(或编辑任何现有的绑定):
~/.config/hypr/hyprland.lua
hl.device({
name = "at-translated-set-2-keyboard",
kb_layout = "us,ru,ua",
kb_variant = "lang",
kb_options = "grp:win_space_toggle",
})
-- Language
hl.bind("SUPER + SPACE", hl.dsp.exec_cmd("~/.config/hypr/scripts/lang"))
电源控制(Power control)
Hyprland 需要一个与 Wayland 兼容的外部应用程序来进行电源控制。 以 nwg-barAUR 为例,我们只需按如下方式进行绑定:
~/.config/hypr/hyprland.lua
...
hl.bind("SUPER + ESCAPE", hl.dsp.exec_cmd("nwg-bar"))
...
剪贴板(Clipboard)
Wayland 剪贴板行为会在关闭复制数据的应用程序时删除数据。其他桌面环境通过使用专用的剪贴板管理器来解决这一问题,而 Hyprland 上则有多种兼容的选择。更多信息,请参阅上游 Wiki。
本节将介绍 cliphist包,因为它支持复制图片和文本:
~/.config/hypr/hyprland.lua
hl.on("hyprland.start", function()
...
hl.exec_cmd("wl-paste --type text --watch cliphist store")
hl.exec_cmd("wl-paste --type image --watch cliphist store")
...
end)
然后创建一个绑定,以便在你选择的应用程序启动器中调用历史记录:
~/.config/hypr/hyprland.lua
...
hl.bind("SUPER + V", hl.dsp.exec_cmd("cliphist list | wofi --dmenu | cliphist decode | wl-copy"))
...
现在按下 Super+v 将打开一个包含剪贴板历史列表的 wofi 窗口。
启用/禁用设备
要启用 / 禁用设备(例如触摸板),首先使用:
$ hyprctl devices
来获取你的设备名称。 将这些代码行放入你的配置文件中(将替换为上面查询到的你的设备名称)以打开 / 关闭设备:
~/.config/hypr/hyprland.lua
hl.device({
name = "<device_name>"
enabled = {true/false}
})
要动态地打开 / 关闭设备,请使用 hyprctl:
$ hyprctl eval "hl.device({ name = '<device-name>', enabled = {true/false) })"
你也可以创建一个快捷键绑定,例如:
~/.config/hypr/hyprland.lua
...
hl.bind("SUPER + T", hl.dsp.exec_cmd([[hyprctl eval "hl.device({ name = 'logitech-g502-hero-gaming-mouse', enabled = false})"]]))
hl.bind("SUPER + SHIFT + T", hl.dsp.exec_cmd([[hyprctl eval "hl.device({ name = 'logitech-g502-hero-gaming-mouse', enabled = true})"]]))
...
独立的 dconf 配置文件
您可能不想污染其他基于 GTK 的桌面环境的配置,您可以使用一个独立的 dconf 配置文件。例如:
声明新的全局 dconf 配置文件:
/etc/dconf/profile/hyprland
user-db:hyprland
~/.config/hypr/hyprland.lua
...
hl.env("DCONF_PROFILE", "hyprland")
...
现在您可以使用 gsettings 而不影响其他桌面环境。
KDE Plasma 应用不跟随Qt主题
你已经设置了一个Qt主题,但是一些plasma应用可能不会跟随主题。你可以安装qt6ct-kdeAUR,并且选择一个KColorScheme或者通过在kdeglobals中添加如下配置以解决:
~/.config/kdeglobals
[UiSettings] ColorScheme=NameOfTheProfile
故障排除
Fcitx5 相关问题
无法输入
当你在任何时候输入中文时出现候选框不在输入框附近(如 QQ 等),而是漂移到 Waybar 的左上角,选择后也无法选词到输入框中,请在 Fcitx5 的配置页面中新建一个分组,选择键盘-英语(美国),然后再设置一个快捷键来轮回切换分组,切换后即可恢复正常
打开 Fcitx5 的配置页面你需要安装 fcitx5-configtool包。
切换英文时出现问题
当你在输入框中切换英文时,在 Waybar 左上角出现了输入法中文状态,且无法在输入框中输入英文,请重新启动 Fcitx5 以临时解决问题。
JetBrains 软件聚焦问题
JetBrains 软件(PyCharm,IntelliJ)会出现一个奇怪的聚焦问题,如:
- 无法将标签页从标签栏[2]拖动来实现分离,或者另一个标签页堆叠时无法更改焦点,亦或者一个标签页只要被你拖动过当前标签栏就会停止拖动状态。
- 自动弹出的窗口直到鼠标移动时才被聚焦。
通过在Hyprland配置文件中写入以下行以缓解该问题:
~/.config/hypr/hyprland.lua
hl.window_rule({
match = { xwayland = true },
no_initial_focus = true,
})