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

در مقالات پیشین از آرچی ها قوانین پنجره، دیسپچرها و بایندها را بررسی کردیم. اکنون به سه قابلیت پیشرفته میپردازیم که تجربهٔ روزمرهٔ Hyprland را به سطح بالاتری میبرند: گروهبندی پنجرهها برای مدیریت تبمانند، بهینهسازی عملکرد و مصرف باتری برای اجرای روانتر و قوانین پیشرفتهٔ ورکاسپیس برای چیدمان دقیقتر صفحههای کاری.
---
گروهبندی پنجرهها (Window Groups)
گروهبندی پنجرهها به شما اجازه میدهد چندین پنجره را در یک «تب» جمع کنید؛ دقیقاً مانند کانتینر تبدار در i3wm. گروه فضای یک پنجرهٔ واحد را اشغال میکند و با یک بایند میتوانید بین اعضای گروه جابهجا شوید.
فعالسازی و تنظیمات گروه در Lua
از نسخهٔ 0.55 به بعد، تنظیمات گروه از طریق hl.config() و با دستهٔ group انجام میشود. توجه: استفاده از hl.group({...}) بهتنهایی خطا میدهد؛ باید از ساختار hl.config({ group = { ... } }) استفاده کنید.
hl.config({
group = {
auto_group = true, -- پنجرههای جدید به طور خودکار به گروه فعال اضافه شوند
insert_after_current = true, -- پنجرهٔ جدید بعد از پنجرهٔ فعلی قرار گیرد، نه انتهای گروه
merge_groups_on_drag = true, -- امکان کشیدن یک گروه داخل گروه دیگر
focus_removed_window = true, -- پس از خارج کردن پنجره از گروه، روی آن فوکوس شود
}
})
گزینهٔ auto_group به طور پیشفرض true است؛ یعنی هر پنجرهٔ جدیدی که باز میشود، در صورت وجود یک گروه فعال و قفلنشده، به آن اضافه میشود.
نوار گروه (Groupbar)
Hyprland یک نوار بصری (Groupbar) بالای پنجرههای گروهبندیشده نمایش میدهد که نام و وضعیت هر تب را نشان میدهد.
hl.config({
group = {
groupbar = {
enabled = true,
height = 14,
font_size = 10,
render_titles = true,
scrolling = true, -- اسکرول در نوار گروه، تب فعال را عوض کند
gradients = true,
stacked = false, -- اگر true باشد، نوار به صورت عمودی نمایش داده میشود
}
}
})
بایندهای ضروری برای مدیریت گروه
دیسپچرهای گروه از طریق hl.dsp.group.* در دسترس هستند.
| دیسپچر | عملکرد |
| :--- | :--- |
| hl.dsp.group.toggle() | تبدیل پنجرهٔ فعال به گروه یا خارج کردن آن از حالت گروه |
| hl.dsp.group.next() | رفتن به تب بعدی در گروه |
| hl.dsp.group.prev() | رفتن به تب قبلی در گروه |
| hl.dsp.group.active({ index = 2 }) | فعالسازی تب با شمارهٔ مشخص (از ۱ شروع میشود) |
بایندهای پیشنهادی برای گروه:
-- ایجاد یا حذف گروه
hl.bind("SUPER + G", hl.dsp.group.toggle())
-- جابهجایی بین تبهای گروه
hl.bind("SUPER + Tab", hl.dsp.group.next())
hl.bind("SUPER + SHIFT + Tab", hl.dsp.group.prev())
-- خارج کردن پنجرهٔ فعال از گروه
hl.bind("SUPER + SHIFT + G", hl.dsp.window.move_out_of_group())
قوانین پنجره و گروه
در قوانین پنجره (hl.window_rule)، میتوانید از فیلد group برای کنترل رفتار گروه استفاده کنید. مقادیر رایج عبارتاند از barred (پنجره به گروه اضافه نشود) و deny (پنجره اصلاً گروهبندی نشود).
-- جلوگیری از اضافه شدن پنجرههای خاص به گروه خودکار
hl.window_rule({
match = { class = "^(pavucontrol)$" },
group = "barred",
})
---
بهینهسازی عملکرد و مصرف باتری
Hyprland به طور پیشفرض از افکتهای بصری زیبایی استفاده میکند، اما این افکتها میتوانند بر مصرف باتری و عملکرد سیستم تأثیر بگذارند. در ادامه تکنیکهای رسمی برای متعادل کردن زیبایی و کارایی آورده شده است.
غیرفعال کردن افکتهای پرمصرف
مؤثرترین راه برای کاهش مصرف باتری، غیرفعال کردن Blur (شفافیت) و Shadow (سایه) است. این دو افکت بیشترین بار را روی GPU ایجاد میکنند.
hl.config({
decoration = {
blur = { enabled = false },
shadow = { enabled = false },
}
})
استفاده از مقیاس صحیح (اجتناب از مقیاس کسری)
مقیاس کسری (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% اجرا کنید.
---
قوانین پیشرفتهٔ ورکاسپیس (Workspace Rules)
قوانین ورکاسپیس به شما امکان میدهند رفتارهای مخصوص یک ورکاسپیس خاص را تعریف کنید؛ از فاصلههای صفر برای حالت تمرکز گرفته تا مقید کردن یک ورکاسپیس به یک مانیتور مشخص.
انتخابگرهای ورکاسپیس (Workspace Selectors)
Hyprland از انتخابگرهای پیشرفته برای هدفگیری ورکاسپیسهای موجود پشتیبانی میکند. این انتخابگرها به شما اجازه میدهند قوانین را بر اساس ویژگیهای پویا (مانند تعداد پنجرهها یا وضعیت تمامصفحه) اعمال کنید.
| انتخابگر | توضیح |
| :--- | :--- |
| r[2-4] | ورکاسپیسهایی با ID در بازهٔ ۲ تا ۴ |
| w[t1] | ورکاسپیسهایی که فقط یک پنجرهٔ کاشیشده دارند |
| w[tv1] | ورکاسپیسهایی با یک پنجرهٔ کاشیشدهٔ قابل مشاهده |
| f[1] | ورکاسپیسهایی که حالت maximize دارند |
| s[false] | ورکاسپیسهای عادی (غیر special) |
| m[DP-1] | ورکاسپیسهای مقید به مانیتور DP-1 |
مثال: ورکاسپیس تمرکز با فاصلهٔ صفر
hl.workspace_rule({
workspace = "3",
gaps_in = 0,
gaps_out = 0,
no_border = true,
no_rounding = true,
decorate = false,
})
مثال: مقید کردن ورکاسپیس به مانیتور
hl.workspace_rule({
workspace = "1",
monitor = "DP-1",
default = true, -- ورکاسپیس پیشفرض مانیتور DP-1 باشد
})
hl.workspace_rule({
workspace = "6",
monitor = "HDMI-A-1",
default = true,
})
مثال: اجرای خودکار یک برنامه هنگام ایجاد ورکاسپیس خالی
hl.workspace_rule({
workspace = "5",
on_created_empty = "exec [float] firefox",
})
نکته: درon_created_empty، میتوانید از سینتکس[float]یا سایر قوانین پنجره درون براکت استفاده کنید تا پنجرهٔ اجراشده با آن ویژگیها باز شود.
مثال: “Smart Gaps” با استفاده از انتخابگرها
این الگو باعث میشود وقتی فقط یک پنجره در ورکاسپیس باز است، فاصلهها و حاشیهها به طور خودکار حذف شوند تا فضای بیشتری برای آن پنجره فراهم شود.
hl.workspace_rule({
workspace = "w[tv1]",
gaps_in = 0,
gaps_out = 0,
})
hl.window_rule({
match = { float = false, workspace = "w[tv1]" },
border_size = 0,
})
---
منابع و لینکهای مرتبط
- متغیرها و تنظیمات گروه: https://wiki.hypr.land/Configuring/Basics/Variables/
- دیسپچرهای گروه: https://wiki.hypr.land/Configuring/Dispatchers/
- قوانین پنجره (فیلد group): https://wiki.hypr.land/Configuring/Window-Rules/
- بهینهسازی عملکرد: https://wiki.hypr.land/Configuring/Advanced-and-Cool/Performance/
- قوانین ورکاسپیس: https://wiki.hypr.land/Configuring/Basics/Workspace-Rules/
مطالب مرتبط در سایت آرچی ها
- ویکی سایت آرچی ها: https://archiha.ir/wiki
- صفحه اصلی سایت آرچی ها: https://archiha.ir
---
این مقاله بر اساس مستندات رسمی Hyprland (نسخههای 0.55 تا 0.57) گردآوری شده و برای جامعهٔ ARCHIHA تهیه شده است. آخرین بهروزرسانی: نوامبر 2026.