跳至內容

Hyprland

出自 Arch Linux 中文维基

本文或本節內容已經過時。

原因: v0.55 引入並且推薦使用 Lua 進行配置。上游Hyprland wiki 已經遷移,並且將會在未來的版本中移除對hyprland.conf的支持。 (在Talk:Hyprland#Lua討論)

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, FXXF86KbdBrightness 替換 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 或者 pamixerplayerctl 的應用程式使用鍵盤媒體按鍵控制媒體(翻譯可能不準確,請參照下面英語)

通過 XF86Audio 按鍵在Hyprland中使用鍵盤的媒體控制鍵和啟動一個像pavucontrolpamixerplayerctl的應用:

~/.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 stoploginctl 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

顯示管理器

雖然從顯示管理器中啟動不是官方支持的,但是用戶們報告成功在 GDMSDDM 和其他的顯示管理器中啟動。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 安裝,以下是例子:

將現有的光標主題移植到 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 是一個獲取系統信息的軟體,與neofetchAURfastfetch類似。你可以安裝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 管理守護進程。最普遍安裝的是 hypridlehyprlock。你可以使用如下的快捷鍵來手動鎖定屏幕:

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

參見