Hyprland - Arch Linux 中文维基

跳转到内容

# Hyprland

来自 Arch Linux 中文维基

相关文章

- 窗口管理器
- Wayland

本文或本节内容已经过时。

原因： v0.55 引入并且推荐使用 Lua 进行配置。上游Hyprland wiki 已经迁移，并且将会在未来的版本中移除对`hyprland.conf`的支持。 (在Talk:Hyprland#Lua讨论)
翻译状态：

- 本文（或部分内容）译自 Hyprland，最近一次同步于 2026-07-27，若英文版本有所更改，则您可以帮助同步与翻译更改的内容。
- 您可以在 ArchWiki 的对应页面找到本文翻译的原始修订历史。
- 本文可能与英文原文存在出入。

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

## 配置

注意：在上游Hyprland Wiki 中详细解释了下文列出的大部分选项（以及更多选项）。自从0.55版本后，Hyprland 已经更换为使用Lua配置，并且弃用了旧的自定义语法。

配置是通过一个单一的`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 以查看所有可用选项

注意：Hyprland 将会覆盖 locale 定义，如果你不使用 `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。

注意：其实你选择Hyprland也是可以的，只不过pid不同，如果你想为hyprland(uwsm-managed)设置变量，请在uwsm配置文件夹中创建env-Hyprland文件

在命令行解释器#登录 Shell使用以下脚本，你也可以在 getty 通过 uwsm 启动Hyprland：

    if uwsm check may-start && uwsm select; then
        exec systemd-cat -t uwsm_start uwsm start default
    fi

注意：

- `uwsm check may-start`检查是否可以启动 wayland 会话，尤其是在登录 shell运行的情况下。不过，仍应避免在 `.bashrc` 或其他非登录 shell profile 中使用。请确保这个代码片段放置在你的profile文件最底端，这是因为执行该代码片段将会屏蔽该文件的剩余部分。
- Hyprland 不再推荐启动一个带有uswm的会话，因为这被视为实验性的并且是为明白其含义的高级用户和怪人使用的。

提示：如果你希望绕过合成器选择菜单，并且直接运行Hyprland，你可以在你的登录 shell中运行如下代码：

    if uwsm check may-start; then
      exec uwsm start hyprland.desktop
    fi

警告： 如果您选择通过“uwsm”启动 Hyprland，则应相应调整配置。特别是：

- 必须避免使用 `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` 内，以避免与其他合成器发生冲突。

请阅读Hyprland Wiki 中的相关页面以了解有关使用 uwsm 配置的更多信息。

#### 终端

使用如下指令在 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 会自动解析 `hyprland.lua` 文件每次的更改。使用`hl.on("hyprland.start", ...)`事件确保了软件和守护进程仅仅在引导后启动一次，防止资源竞争情况或者多个实例在重载后同时运行。
提示：如果你通过通用Wayland会话管理器(uwsm)启动Hyprland，并且你想在开机时运行的软件提供一个systemd单元，那么你可以启用它来在Hyprland启动后自动启动该单元。另外，你也可以将那个软件作为参数传递到`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命令

详见Hyprland Wiki。

如果`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 生态

警告：以下所提及的部分软件仍在开发，有 bug 都是在意料之中的。因此，完整的说明和示例会被略去，直到它足够稳定以成为稳定版。关于使用说明，参见上游 Wiki。

Hyprland 开发团队正在构建一个专门用于 Hyprland 的软件生态，这些工具将包括调度器，允许使用 hyprctl 而不是依赖脚本来控制它们。

目前，软件生态包括以下软件：

### Hyprpaper

Hyprpaper 是一个壁纸工具，你可以安装 hyprpaper包 来使用它。

### Hyprpicker

Hyprpicker 是一个用于在一个桌面中抓取一个颜色的工具，你可以安装 hyprpicker包 来使用它。该软件不需要其余配置。

### Hypridle

Hypridle 是一个idle管理守护程序，你可以安装 hypridle包 来使用它。

### Hyprlock

Hyprlock 是一个屏幕锁定管理器，你可以安装 hyprlock包 来使用它。

### Hyprcursor

Hyprcursor 是一个处理屏幕光标的新格式，它在传统的方式上提升了很多，你可以安装 hyprcursor包 来使用它。

#### Hyprcursor 主题

提示：如果你安装了 hyprcursor 并且没有安装一个主题，它将会使用你之前的光标设置

光标主题可以使用 AUR 安装，以下是例子：

- sweet-cursors-hyprcursor-gitAUR

- nordzy-hyprcursorsAUR

- xcursor-pro-hyprcursorAUR

- hyprcursor-dracula-kde-gitAUR

将现有的光标主题移植到 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 的特定列表可在上游 Wiki 找到。

### 文件管理器

在 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"))
    ...

提示：你可以通过修改数值（以秒为单位）来调整无操作时的锁屏超时时间。300 是 5 分钟，600 是 10 分钟等等。

这个文件必须是可执行的，然后运行它：

    ~/.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,
     })

## 参见

- Hyprland 网站
- 官方文档
- Hyprland Github 仓库页面
- Community-maintained 工具、插件和扩展程序列表
- SolDoesTech Github 仓库——Hyprland 快速安装脚本（含 Hyprland 配置文件）

分类：​

- 使用“模板:过时”标记的页面或章节
- Wayland 合成器

Hyprland
添加话题