Hyprland: یکپارچهسازی پیشرفته، اشتراکگذاری صفحه و بهینهسازی
پس از آشنایی با نصب و پیکربندی پایه در مقالهٔ قبل، اکنون به سراغ قابلیتهایی میرویم که Hyprland را از یک کامپوزیتور ساده به یک محیط دسکتاپ کامل و کارآمد تبدیل میکنند. در این بخش، مدیریت پیشرفتهٔ مانیتورها، پیکربندی صفحهکلید برای زبانهای مختلف، حل مشکل اشتراکگذاری صفحه در برنامههای XWayland و ت
آخرین بهروزرسانی: ۲۲ آبان ۱۴۰۵ · نسخهٔ ۱ · ۳ بازدید
این مقاله مستندات رسمی Arch Linux نیست؛ برای موارد حساس به ArchWiki مراجعه کنید.
Hyprland: یکپارچهسازی پیشرفته، اشتراکگذاری صفحه و بهینهسازی

پس از آشنایی با نصب و پیکربندی پایه در مقالهٔ قبل، اکنون به سراغ قابلیتهایی میرویم که Hyprland را از یک کامپوزیتور ساده به یک محیط دسکتاپ کامل و کارآمد تبدیل میکنند. در این بخش، مدیریت پیشرفتهٔ مانیتورها، پیکربندی صفحهکلید برای زبانهای مختلف، حل مشکل اشتراکگذاری صفحه در برنامههای XWayland و تکنیکهای بهینهسازی مصرف باتری و عملکرد را بررسی خواهیم کرد.
---
مدیریت پیشرفتهٔ چند مانیتور (Positioning)
در مقالهٔ قبلی، تنظیمات پایهٔ مانیتور را دیدیم. اما در چیدمانهای چند مانیتوری، موقعیتدهی دقیق اهمیت زیادی پیدا میکند. Hyprland از سیستم مختصات مجازی برای چیدمان مانیتورها استفاده میکند و هیچ دو مانیتوری نباید روی هم افتادگی داشته باشند؛ در صورت تداخل، هشدار داده میشود و مانیتور ثبت نمیشود.
نکتهٔ کلیدی: محاسبهٔ موقعیت با رزولوشن مقیاسشده
موقعیت (position) بر اساس رزولوشن مقیاسشده و تبدیلشده محاسبه میشود. برای مثال، اگر یک مانیتور 4K با مقیاس 2 را در سمت چپ یک مانیتور 1080p قرار دهید، باید موقعیت مانیتور دوم را 1920x0 تنظیم کنید (زیرا 3840 تقسیم بر 2 برابر 1920 است). اگر مانیتور 90 درجه چرخیده باشد، از 1080x0 استفاده کنید.
هشدار مقیاس نامعتبر: مقیاس باید رزولوشن شما را به طور تمیز (بدون اعشار) تقسیم کند. مثلاً1920×1080 / 1.5 = 1280×720معتبر است، اما1920×1080 / 1.4 = 1371.4286×771.42857نامعتبر است و هشدار "Invalid scale" نمایش داده میشود.
موقعیتهای خودکار (Auto Positions)
Hyprland میتواند چیدمان مانیتورها را خودکار مدیریت کند:
| موقعیت | توضیح |
| :--- | :--- |
| auto | Hyprland تصمیم میگیرد (به طور پیشفرض هر مانیتور جدید را سمت راست مانیتورهای موجود قرار میدهد) |
| auto-right / auto-left / auto-up / auto-down | قرار دادن مانیتور در جهت مشخص، نسبت به گوشهٔ بالا-چپ مانیتورهای دیگر |
| auto-center-right / auto-center-left / auto-center-up / auto-center-down | مانند حالت قبل، اما محاسبه از مرکز مانیتور انجام میشود، نه گوشهٔ بالا-چپ |
نکته: اگر برای اولین خروجی در چیدمان، یک جهت خاص (مثلاًauto-right) مشخص کنید، نادیده گرفته میشود و آن مانیتور در مختصات(0,0)قرار میگیرد.
مثالهای عملی
دو مانیتور کنار هم (DP-2 در سمت راست DP-1):
hl.monitor({ output = "DP-1", mode = "1920x1080@120Hz", position = "0x0", scale = 1 })
hl.monitor({ output = "DP-2", mode = "1920x1080@120Hz", position = "1920x0", scale = 1 })
استفاده از موقعیت منفی (DP-2 در سمت چپ DP-1):
hl.monitor({ output = "DP-1", mode = "1920x1080@120Hz", position = "0x0", scale = 1 })
hl.monitor({ output = "DP-2", mode = "1920x1080@120Hz", position = "-1920x0", scale = 1 })
قرار دادن DP-2 در بالای DP-1:
hl.monitor({ output = "DP-1", mode = "1920x1080@120Hz", position = "0x0", scale = 1 })
hl.monitor({ output = "DP-2", mode = "1920x1080@120Hz", position = "0x-1080", scale = 1 })
---
چیدمان صفحهکلید و پشتیبانی از زبانهای مختلف (Keyboard Layouts)
Hyprland از XKB برای مدیریت چیدمان صفحهکلید استفاده میکند و امکان تعریف چندین چیدمان و جابهجایی بین آنها را فراهم میسازد.
تنظیم چند چیدمان با کلید میانبر
میتوانید چند چیدمان را تعریف کرده و با یک کلید میانبر بین آنها سوئیچ کنید:
hl.config({
input = {
kb_layout = "us,cz", -- چیدمان اول: آمریکایی، دوم: چکی
kb_variant = ",qwerty", -- واریانت برای چیدمان دوم
kb_options = "grp:alt_shift_toggle", -- سوئیچ با Alt+Shift
}
})
نکتهٔ مهم: kb_variant به ازای هر چیدمان تنظیم میشود، بنابراین تعداد و ترتیب واریانتها باید با چیدمانها مطابقت داشته باشد.
رفتار بایندها با چیدمانهای غیر QWERTY
به طور پیشفرض، بایندها بر اساس اولین چیدمان تعریفشده در بخش input عمل میکنند. برای مثال، اگر چیدمانها us,ua باشد، بایند "SUPER + A" بر اساس چیدمان us عمل میکند. اگر ترتیب ua,us باشد، باید از نام سیمبل چیدمان سیریلیک استفاده کنید (مثلاً "SUPER + Cyrillic_ef").
برای تغییر این رفتار و فعالسازی بایندها بر اساس سیمبل تایپشده (صرفنظر از چیدمان فعال)، میتوانید resolve_binds_by_sym را فعال کنید:
hl.config({
input = {
resolve_binds_by_sym = 1,
}
})
بایند ورکاسپیس در چیدمانهای غیر QWERTY (مثال AZERTY)
در چیدمان فرانسوی AZERTY، اعداد 0-9 بدون فشردن SHIFT قابل دسترسی نیستند. بنابراین بایندهای ورکاسپیس نباید از اعداد استفاده کنند. به جای آن، از نام سیمبلهای بدون مودیفایر استفاده کنید:
-- به جای این (که در AZERTY کار نمیکند):
-- hl.bind(mainMod .. " + 1", hl.workspace(1))
-- از این استفاده کنید:
hl.bind(mainMod .. " + ampersand", hl.workspace(1))
برای یافتن نام صحیح سیمبلها، میتوانید از فایل /usr/share/X11/xkb/rules/base.lst استفاده کنید:
grep -i 'persian' /usr/share/X11/xkb/rules/base.lst
grep 'grp:.*toggle' /usr/share/X11/xkb/rules/base.lst
سوئیچ چیدمان با hyprctl
برای کنترل بیشتر، میتوانید یک کلید میانبر به دستور hyprctl switchxkblayout متصل کنید:
hl.bind("SUPER + K", hl.dsp.exec_cmd("hyprctl switchxkblayout all next"))
---
اشتراکگذاری صفحه (Screen Sharing)
اشتراکگذاری صفحه در Wayland از طریق PipeWire انجام میشود. Hyprland از این طریق با پورتال xdg-desktop-portal-hyprland یکپارچه میشود.
پیشنیازها
ابتدا باید بستههای لازم را نصب و سرویسها را فعال کنید:
sudo pacman -S pipewire wireplumber xdg-desktop-portal-hyprland
systemctl --user enable --now pipewire wireplumber xdg-desktop-portal-hyprland
مشکل اشتراکگذاری در برنامههای XWayland (Discord، Skype و…)
اگر برنامهٔ اشتراکگذاری صفحه شما تحت XWayland اجرا میشود (مانند Discord یا Skype)، آن برنامه فقط میتواند پنجرههای دیگر XWayland را ببیند و نمیتواند کل صفحه یا یک پنجرهٔ Wayland را به اشتراک بگذارد.
راهحل: استفاده از xwaylandvideobridge که توسط تیم KDE توسعه یافته است.
yay -S xwaylandvideobridge-git
پس از نصب، باید قوانین پنجرهٔ مناسب را اضافه کنید تا پنجرهٔ اصلی برنامه به درستی پنهان شود (زیرا Hyprland از روش پیشفرض آن پشتیبانی نمیکند):
hl.window_rule({
name = "xwayland-video-bridge-fixes",
match = { class = "xwaylandvideobridge" },
no_initial_focus = true,
no_focus = true,
no_anim = true,
no_blur = true,
max_size = {1, 1},
opacity = 0.0,
})
تنظیم نرخ فریم اشتراکگذاری
میتوانید حداکثر نرخ فریم (FPS) جلسهٔ اشتراکگذاری را در فایل ~/.config/hypr/xdph.conf محدود کنید:
screencopy {
max_fps = 60
}
مقدار 0 به معنای بدون محدودیت است.
---
بهینهسازی عملکرد و مصرف باتری (Performance & Battery Life)
Hyprland به طور پیشفرض از افکتهای بصری زیبایی استفاده میکند، اما این افکتها میتوانند مصرف باتری لپتاپ را افزایش دهند. در ادامه چند تکنیک عملی برای متعادل کردن زیبایی و کارایی آورده شده است.
۱. غیرفعال کردن افکتهای پرمصرف
سادهترین و مؤثرترین راه برای کاهش مصرف باتری، غیرفعال کردن Blur (شفافیت) و Shadow (سایه) است:
hl.config({
decoration = {
blur = { enabled = false },
shadow = { enabled = false },
}
})
این دو افکت بیشترین بار را روی GPU ایجاد میکنند و غیرفعال کردن آنها تأثیر محسوسی در مصرف باتری دارد.
۲. استفاده از مقیاس صحیح (اجتناب از مقیاس کسری)
مقیاس کسری (Fractional Scaling) در Wayland هنوز کامل نیست و میتواند باعث استفادهٔ بالای GPU یا احساس کندی شود. اگر با چنین مشکلاتی مواجه شدید، مقیاس را به یک عدد صحیح (مثلاً 1 یا 2) تغییر دهید:
hl.monitor({
output = "",
mode = "preferred",
position = "auto",
scale = 2,
})
۳. رفع لگ و افت فریم روی iGPU اینتل با TLP
اگر از TLP روی لپتاپ اینتل استفاده میکنید، تنظیمات پیشفرض آن ممکن است برای iGPU خیلی محافظهکارانه باشند و باعث لگ شوند. در فایل /etc/tlp.conf، مقادیر INTEL_GPU_MIN_FREQ_ON_AC و/یا INTEL_GPU_MIN_FREQ_ON_BAT را کمی افزایش دهید (مثلاً از 300 به 500):
INTEL_GPU_MIN_FREQ_ON_AC=500
INTEL_GPU_MIN_FREQ_ON_BAT=500
این تغییر میتواند لگ را به طور قابلتوجهی کاهش دهد یا کاملاً برطرف کند.
۴. استفاده از gamescope برای بهبود عملکرد بازیها
اگر بازیها (بهویژه بازیهای Proton/Steam) عملکرد ضعیفی داشتند، اجرای آنها از طریق gamescope معمولاً مشکلات Wayland/Hyprland را برطرف میکند:
sudo pacman -S gamescope
سپس بازی را از طریق Steam با پارامتر اجرایی gamescope -- %command% اجرا کنید.
---
منابع و لینکهای مرتبط
- موقعیتدهی مانیتورها: https://wiki.hypr.land/0.57.0/configuring/core/monitors/positioning/
- چیدمان صفحهکلید: https://wiki.hypr.land/0.57.0/configuring/core/binds/keyboard-layouts/
- اشتراکگذاری صفحه: https://wiki.hypr.land/useful-utilities/screen-sharing/
- xdg-desktop-portal-hyprland: https://wiki.hypr.land/hypr-ecosystem/user/xdg-desktop-portal-hyprland
- xwaylandvideobridge (AUR): https://aur.archlinux.org/packages/xwaylandvideobridge-git
- متغیرهای محیطی Hyprland: https://wiki.hypr.land/Configuring/Environment-variables/
---
این مقاله بر اساس مستندات رسمی Hyprland (نسخههای 0.56 تا 0.57) گردآوری شده و برای جامعهٔ ARCHIHA تهیه شده است. آخرین بهروزرسانی: نوامبر 2026.