Hyprland — کامپوزیتور تایلینگ Wayland
آموزش نصب و پیکربندی Hyprland در Gentoo: نصب با ~amd64، hyprland.conf، keybindings، window rules، waybar و XWayland.
Hyprland یک کامپوزیتور پویا و تایلینگ برای Wayland است که روی کتابخانهٔ wlroots ساخته شده و با انیمیشنهای نرم، pipeline رندرینگ مدرن و پیکربندی بهسبک i3/sway، تجربهای جذاب برای کاربران پیشرفته فراهم میکند. در Gentoo، Hyprland بهصورت testing موجود است و نیاز به ~amd64 keyword دارد.
Hyprland چیست؟
Hyprland یک مدیر پنجرهٔ tiling است (مانند i3 یا sway) اما ویژگیهای مدرن بیشتری دارد:
| ویژگی | Hyprland | Sway | i3 (X11) |
|---|---|---|---|
| پروتکل | Wayland | Wayland | X11 |
| پایه | wlroots (فورک شده) | wlroots | X11 |
| انیمیشن | بله (نرم) | محدود | خیر |
| صفحههای چندگانه | بله (پویا) | بله | بله |
| blur/rounded corners | بله | خیر | خیر |
| پیکربندی | متنی (live reload) | متنی | متنی |
| بلوغ | در حال توسعه | پایدار | بسیار پایدار |
ماهیت testing
Hyprland بهطور فعال در حال توسعه است و ممکن است در بهروزرسانیها تغییرات breaking داشته باشد. برای محیط تولید پایدار، Sway گزینهٔ مطمئنتری است. همیشه پیش از بهروزرسانی، release notes را بخوانید.
نصب Hyprland
افزودن keyword testing
# /etc/portage/package.accept_keywords/hyprland
gui-wm/hyprland ~amd64
gui-libs/hyprlang ~amd64
dev-libs/hyprutils ~amd64
gui-libs/aquamarine ~amd64
dev-cpp/hyprutils ~amd64نصب بستههای اصلی
# نصب Hyprland
emerge --ask gui-wm/hyprland
# خروجی:
# [ebuild N ] gui-wm/hyprland-0.42.0
# [ebuild N ] gui-libs/hyprlang-0.5.2
# [ebuild N ] gui-libs/aquamarine-0.4.2
# [ebuild N ] dev-libs/hyprutils-0.2.1
# [ebuild N ] dev-libs/wayland-1.22.0
# [ebuild N ] gui-libs/wlroots-0.17.0
# ...
# نصب ابزارهای جانبی (پیشنهادی)
emerge --ask gui-wm/hyprpaper # والپیپر
emerge --ask gui-wm/hypridle # مدیریت idle
emerge --ask gui-wm/hyprlock # قفل صفحه
emerge --ask x11-misc/wofi # launcher
# یا جایگزین: gui-apps/fuzzel
emerge --ask gui-apps/waybar # نوار وضعیت
emerge --ask gui-libs/xdg-desktop-portal-hyprland # اشتراک صفحهترمینال پیشنهادی
Hyprland با ترمینالهای مدرن Wayland بهتر کار میکند:
# Kitty (سریع، GPU accelerated)
emerge --ask x11-terms/kitty
# یا foot (سبکتر)
emerge --ask gui-apps/footپیشنیازها: logind یا seatd
Hyprland به یک مدیر seat نیاز دارد. اگر از systemd استفاده میکنید، systemd-logind کافی است. با OpenRC باید elogind و seatd را نصب کنید:
# OpenRC
emerge --ask sys-auth/elogind sys-auth/seatd
rc-update add elogind default
rc-update add seatd default
rc-service seatd start
# افزودن کاربر به گروه seat
gpasswd -a username seatپیکربندی اولیه
پیکربندی Hyprland در ~/.config/hypr/hyprland.conf قرار دارد:
mkdir -p ~/.config/hypr
cp /etc/hypr/hyprland.conf ~/.config/hypr/hyprland.conf
nano ~/.config/hypr/hyprland.confیک پیکربندی حداقلی نمونه:
# ~/.config/hypr/hyprland.conf
# === مانیتور ===
monitor=,preferred,auto,1
# برای مانیتور خاص:
# monitor=eDP-1,1920x1080@60,0x0,1
# === اجرای خودکار در شروع ===
exec-once = waybar
exec-once = hyprpaper
exec-once = hypridle
exec-once = /usr/libexec/xdg-desktop-portal-hyprland
# === متغیرهای محیطی ===
env = XCURSOR_SIZE,24
env = QT_QPA_PLATFORM,wayland
env = XDG_SESSION_TYPE,wayland
# === برنامههای پیشفرض ===
$terminal = kitty
$menu = wofi --show drun
$browser = firefox
# === کلیدهای مودیفایر ===
$mainMod = SUPER
# === کلیدهای میانبر ===
bind = $mainMod, Return, exec, $terminal
bind = $mainMod, D, exec, $menu
bind = $mainMod, Q, killactive,
bind = $mainMod SHIFT, E, exit,
bind = $mainMod, F, fullscreen,
bind = $mainMod, Space, togglefloating,
# حرکت بین workspaceها
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
# انتقال پنجره به workspace
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
# حرکت بین پنجرهها
bind = $mainMod, h, movefocus, l
bind = $mainMod, l, movefocus, r
bind = $mainMod, k, movefocus, u
bind = $mainMod, j, movefocus, dبارگذاری زنده
Hyprland بهمحض ذخیره فایل hyprland.conf، تغییرات را اعمال میکند. نیازی به ریبوت یا راهاندازی مجدد نیست. برای تست سینتکس:
hyprctl reloadWindow Rules
Window Rules رفتار پنجرهها را برای برنامههای خاص تعریف میکنند:
# پنجره شناور برای wofi
windowrule = float,^(wofi)$
windowrule = center,^(wofi)$
# پنجره شناور برای firefox picture-in-picture
windowrulev2 = float, title:^(Picture-in-Picture)$
# عدم شفافیت برای ترمینال
windowrule = opacity 0.95,^(kitty)$
# اضافه کردن به workspace خاص
windowrule = workspace 2,^(firefox)$
# حذف شکستن پنجره (noanim)
windowrule = noanim,^(wofi)$پیکربندی Waybar
Waybar نوار وضعیت مدرن برای Wayland است. پیکربندی در فایلهای ~/.config/waybar/config و ~/.config/waybar/style.css قرار دارد:
mkdir -p ~/.config/waybar
cp /etc/xdg/waybar/config ~/.config/waybar/
cp /etc/xdg/waybar/style.css ~/.config/waybar/یک پیکربندی نمونه:
{
"layer": "top",
"position": "top",
"height": 30,
"modules-left": ["hyprland/workspaces"],
"modules-center": ["hyprland/window"],
"modules-right": ["pulseaudio", "network", "cpu", "memory", "battery", "clock", "tray"],
"hyprland/workspaces": {
"format": "{icon}",
"on-click": "activate"
},
"clock": {
"format": "{:%H:%M %d/%m}"
},
"cpu": {
"format": "CPU {usage}%"
}
}اجرای Hyprland
# از TTY (با مدیر نشست elogind)
Hyprland
# یا با SDDM/GDM (اگر نصب هستند): نشست Hyprland را در صفحه لاگین انتخاب کنید
# برای اجرای خودکار با startx:
echo "exec Hyprland" > ~/.xinitrcابزارهای خط فرمان Hyprland
# لیست پنجرهها
hyprctl clients
# لیست workspaceها
hyprctl workspaces
# لیست مانیتورها
hyprctl monitors
# اجرای دستور در پیکربندی
hyprctl dispatch exec kitty
# تغییر workspace
hyprctl dispatch workspace 2
# بستن پنجره فعال
hyprctl dispatch killactive
# بارگذاری مجدد پیکربندی
hyprctl reloadXWayland
برای اجرای برنامههای X11، XWayland بهطور خودکار نصب میشود:
# بررسی
pgrep -a Xwayland
# 1234 Xwayland :0 -rootless -listen 4 -listen 5 -wm 6 ...
# برای پنجرهای که روی XWayland اجرا میشود:
hyprctl clients | grep "xwayland"محدودیتهای XWayland در Hyprland
پنجرههای XWayland ممکن است روی HiDPI کمی تار باشند یا انیمیشنهای آنها با نسخهٔ Wayland-native تفاوت داشته باشد. در صورت امکان از نسخهٔ Wayland-native برنامهها استفاده کنید.
خطاهای رایج
۱. Hyprland اجرا نمیشود — خطای seat
[CRITICAL] m_sWLRBackend could not be created!
Aquamarine: No backend was successfully initializedدلیل: seatd فعال نیست یا کاربر در گروه مناسب نیست. راهحل:
# بررسی سرویس seatd
systemctl status seatd
# یا در OpenRC:
rc-service seatd status
# افزودن کاربر به گروهها
gpasswd -a username seat
gpasswd -a username video
gpasswd -a username input
# خروج و ورود مجدد (یا reboot)۲. صفحه سیاه با NVIDIA
EGL_BAD_ALLOC: failed to create swapchainدلیل: NVIDIA Wayland نیاز به nvidia-drm.modeset=1 و درایور جدید دارد. راهحل:
# پارامتر کرنل
GRUB_CMDLINE_LINUX="nvidia-drm.modeset=1"
# در /etc/default/grub، سپس:
grub-mkconfig -o /boot/grub/grub.cfg
# متغیرهای محیطی در hyprland.conf
env = WLR_NO_HARDWARE_CURSORS,1
env = LIBVA_DRIVER_NAME,nvidiaبرای جزئیات کامل به آموزش NVIDIA مراجعه کنید.
۳. wofi/waybar اجرا نمیشوند
cannot connect to displayدلیل: اجرای مستقیم پیش از Hyprland، یا نبود متغیرهای Wayland. راهحل:
# بررسی متغیرها
echo $WAYLAND_DISPLAY
# wayland-0
# باید از exec-once در hyprland.conf اجرا شوند، نه از .xinitrc
# در پیکربندی Hyprland:
# exec-once = waybarخلاصه و مرحله بعد
Hyprland یک کامپوزیتور مدرن، سریع و قابل سفارشیسازی است که برای کاربرانی که به دنبال تجربهٔ tiling window manager با انیمیشنهای نرم هستند ایدهآل است. نصب آن در Gentoo با ~amd64 keyword و پیکربندی متنی ساده انجام میشود. Waybar، wofi و kitty ترکیب کاملی از دسکتاپ را فراهم میکنند.
برای آشنایی با مفاهیم Wayland، آموزش Wayland را ببینید. برای تنظیم درایور گرافیک، NVIDIA یا AMD را مطالعه کنید. اگر به دنبال دسکتاپ کامل با تجربهٔ کاربری سنتی هستید، GNOME یا KDE Plasma را در نظر بگیرید.
این صفحه در تاریخ ۱ تیر ۱۴۰۵ بهروزرسانی شده است.