| urxvt-background(1) | RXVT-UNICODE | urxvt-background(1) |
نام (NAME)
background - مدیریت پسزمینه پایانه
خلاصه دستور (SYNOPSIS)
urxvt --background-expr 'background expression'
--background-border
--background-interval seconds
راهنمای سریع و دمدستی (QUICK AND DIRTY CHEAT SHEET)
بارگذاری یک تصویر jpeg دلخواه و چیدمان کاشیوار پسزمینه با آن، بدون تغییر مقیاس یا هر کار دیگر:
load "/path/to/img.jpg"
مشابه حالت قبل، اما استفاده از بازتاب/حالت آینهای بهجای چیدمان کاشیوار:
mirror load "/path/to/img.jpg"
بارگذاری یک تصویر و تغییر مقیاس آن بهطوری که پنجره پایانه را دقیقاً پر کند:
scale keep { load "/path/to/img.jpg" }
پیادهسازی شبهشفافیت (pseudo-transparency) با استفاده از یک root pixmap با تراز مناسب بهعنوان پسزمینه پنجره:
rootalign root
مشابه حالت قبل، اما نگهداری یک نسخه ماتشده:
rootalign keep { blur 10, root }
این افزونه پسزمینه ترمینال را با ایجاد تصویری در پشت متن مدیریت میکند که جایگزین رنگ پسزمینه عادی میشود.
این کار با ارزیابی یک عبارت Perl انجام میشود که تصویر را در حین اجرا (on the fly) محاسبه میکند؛ برای مثال با گرفتن تصویر پسزمینه ریشه (root) یا بارگذاری یک فایل.
در حالی که تمام توان و امکانات Perl در دسترس است، عملگرها به گونهای طراحی شدهاند که تا حد امکان ساده باشند.
برای مثال، جهت بارگذاری یک تصویر و مقیاسبندی آن به اندازه پنجره، میتوانید از دستور زیر استفاده کنید:
urxvt --background-expr 'scale keep { load "/path/to/mybg.png" }'
یا به عنوان یک منبع X (X resource) مشخص شود:
URxvt.background.expr: scale keep { load "/path/to/mybg.png" }
مبانی عملکرد (THEORY OF OPERATION)
در هنگام راهاندازی، درست پیش از آنکه پنجره برای نخستین بار نگاشت (map) شود، عبارت ارزیابی میشود و باید یک تصویر تولید کند. سپس تصویر در صورت لزوم گسترش مییابد تا کل پنجره ترمینال را پوشش دهد و به عنوان pixmap پسزمینه تنظیم میشود.
اگر تصویر حاوی یک کانال آلفا (alpha channel) باشد، در حالتهای نمایشی (visuals) که از کانالهای آلفا پشتیبانی میکنند (برای مثال برای یک مدیر ترکیب یا compositing manager) بدون تغییر استفاده خواهد شد. در سایر حالتهای نمایشی، رنگ پسزمینه ترمینال برای جایگزینی هرگونه شفافیت استفاده میشود.
هنگامی که عبارت به طور مستقیم یا غیرمستقیم به اندازه پنجره، موقعیت، pixmap ریشه، یا یک تایمر وابسته باشد، به خاطر سپرده میشود. در غیر این صورت، حذف خواهد شد.
اگر هر یک از پارامترهایی که عبارت به آنها وابسته است تغییر کند (هنگامی که پنجره جابهجا شده یا اندازه آن تغییر کند؛ هنگامی که pixmap ریشه با تصویر دیگری جایگزین شده و پسزمینه ریشه تغییر یابد؛ یا هنگامی که تایمر منقضی شود)، عبارت مجدداً ارزیابی خواهد شد.
برای نمونه، عبارتی مانند "scale keep { load "$HOME/mybg.png" }" تصویر را به اندازه پنجره مقیاسبندی میکند، بنابراین به اندازه پنجره وابسته است و با هر بار تغییر اندازه ترمینال دوباره ارزیابی میشود، اما برای مثال با جابهجا شدن پنجره مجدداً اجرا نخواهد شد. این تضمین میکند که تصویر همیشه ترمینال را پر میکند، حتی پس از تغییر اندازه آن.
عبارتها (EXPRESSIONS)
عبارتها همان عبارتهای معمولی Perl هستند؛ در واقع، آنها بلوکهای Perl به شمار میروند - به این معنی که میتوانید از چندین خط و دستور استفاده کنید:
scale keep {
again 3600;
if (localtime now)[6]) {
return load "$HOME/weekday.png";
} else {
return load "$HOME/sunday.png";
}
}
این عبارت درونی یکبار در هر ساعت (و همچنین هر زمان که اندازه پنجره ترمینال تغییر کند) ارزیابی میشود. این عبارت sunday.png را در روزهای یکشنبه و weekday.png را در سایر روزها به عنوان پسزمینه تنظیم میکند.
خوشبختانه، انتظار میرود بیشتر عبارتها بسیار سادهتر باشند و به دانش اندکی از Perl نیاز داشته باشند.
به طور اساسی، شما همیشه با تابعی شروع میکنید که یک شیء تصویر «تولید» میکند، مانند "load" که یک تصویر را از دیسک بارگذاری میکند، یا "root" که تصویر پسزمینه پنجره ریشه را بازمیگرداند:
load "$HOME/mypic.png"
مسیر معمولاً به صورت یک رشته درون گیومه مشخص میشود (قوانین دقیق آن را میتوان در صفحه راهنمای perlop یافت). بخش $HOME در ابتدای رشته به دایرکتوری خانگی گسترش مییابد.
سپس یک یا چند اصلاحکننده یا عبارت پالاینده (فیلتر) را در ابتدای آن قرار میدهید، مانند "scale":
scale load "$HOME/mypic.png"
درست مانند یک عبارت ریاضی شامل توابع، باید این عبارتها را از راست به چپ بخوانید؛ چرا که ابتدا "load" ارزیابی میشود و نتیجه آن آرگومان تابع "scale" خواهد شد.
بسیاری از عملگرها همچنین پارامترهایی را پیش از تصویر ورودی میپذیرند که رفتار آن را تغییر میدهند. برای مثال، "scale" بدون هیچ آرگومان اضافی، تصویر را به اندازه پنجره ترمینال مقیاسبندی میکند. اگر یک آرگومان اضافی مشخص کنید، از آن به عنوان ضریب مقیاس استفاده میکند (برای به دست آوردن درصد در ۱۰۰ ضرب کنید):
scale 2, load "$HOME/mypic.png"
این کار تصویر را با ضریب ۲ (۲۰۰٪) بزرگ میکند. همانطور که میبینید، اکنون "scale" دو آرگومان دارد: 2 و عبارت "load"، در حالی که "load" تنها یک آرگومان دارد. آرگومانها با کاما از یکدیگر جدا میشوند.
عملگر scale همچنین دو آرگومان میپذیرد که به عنوان ضرایب جداگانه برای ابعاد افقی و عمودی عمل میکنند. برای مثال، عبارت زیر عرض تصویر را نصف و ارتفاع آن را دو برابر میکند:
scale 0.5, 2, load "$HOME/mypic.png"
اگر این عبارتها را امتحان کنید، ممکن است با مقداری کندی مواجه شوید؛ زیرا هر بار که اندازه ترمینال تغییر میکند، تصویر PNG دوباره بارگذاری شده و مقیاسبندی میشود. مقیاسبندی معمولاً سریع (و اجتنابناپذیر) است، اما بارگذاری تصویر میتواند بسیار زمانبر باشد. اینجاست که "keep" به کار میآید:
scale 0.5, 2, keep { load "$HOME/mypic.png" }
عملگر "keep" تمام دستورات درون آکولادها را تنها یکبار اجرا میکند، مگر زمانی که تشخیص دهد ممکن است نتیجه تغییر کند. در سایر موارد، آخرین مقدار محاسبه شده توسط بلوک آکولاد را بازمیگرداند.
این بدان معناست که "load" تنها یکبار اجرا میشود که آن را بسیار سریعتر میکند، اما همچنین به این معنی است که حافظه بیشتری مصرف میشود؛ زیرا تصویر بارگذاریشده باید همیشه در حافظه نگهداری شود. در این عبارت، به احتمال زیاد این مصالحه ارزشش را دارد.
اما بازگردیم به جلوهها: جلوههای دیگری به جز مقیاسبندی نیز به آسانی در دسترس هستند؛ برای مثال، میتوانید تصویر را به جای تغییر اندازه، کاشیکاری (tile) کنید تا کل پنجره را پر کند:
tile keep { load "$HOME/mypic.png" }
در واقع، تصاویری که توسط "load" بازگردانده میشوند به طور پیشفرض در حالت "tile" هستند، بنابراین عملگر "tile" تا حدودی زائد است.
یک جلوه رایج دیگر، قرینهسازی یا آینهای کردن (mirror) تصویر است تا لبههای یکسان مماس با یکدیگر قرار گیرند:
mirror keep { load "$HOME/mypic.png" }
عبارت متداول دیگر برای پسزمینه به صورت زیر است:
rootalign root
این عبارت ابتدا یک تصویر لحظهای (snapshot) از پسزمینه صفحه نمایش تهیه کرده و سپس آن را به گوشه بالا سمت چپ صفحه منتقل میکند (برخلاف گوشه بالا سمت چپ پنجره ترمینال) - نتیجه، شفافیت کاذب (pseudo-transparency) است: تصویر ثابت به نظر میرسد، در حالی که پنجره روی صفحه جابهجا میشود..SS "مشخصات رنگ (COLOUR SPECIFICATIONS)" هر گاه یک عملگر انتظار یک «رنگ» را داشته باشد، میتوان آن را به یکی از دو روش مشخص کرد: یا به صورت یک رشته با مشخصات رنگ X11، مانند:
"red" # named colour "#f00" # simple rgb "[50]red" # red with 50% alpha "TekHVC:300/50/50" # anything goes
یا به عنوان یک ارجاع آرایه با یک، سه یا چهار مؤلفه:
[0.5] # 50% gray, 100% alpha [0.5, 0, 0] # dark red, no green or blur, 100% alpha [0.5, 0, 0, 0.7] # same with explicit 70% alpha
نهانسازی و حساسیت (CACHING AND SENSITIVITY)
از آنجا که برخی عملیات (مانند "load" و "blur") ممکن است زمان زیادی ببرند، نهانسازی (caching) نتایج میتواند برای عملکردی روان بسیار حیاتی باشد. همچنین نهانسازی میتواند برای کاهش مصرف حافظه نیز مفید باشد؛ برای نمونه هنگامی که یک تصویر توسط "load" نهانسازی شود، میتواند میان چندین پنجرهٔ ترمینال در حال اجرا در urxvtd به اشتراک گذاشته شود.
"keep { ... }" نهانسازی
مهمترین روش برای نهانسازی عملیاتهای سنگین، استفاده از "keep { ... }" است. عملگر "keep" بلوکی از چندین عبارت محصور در "{}" را دریافت کرده و مقدار بازگشتی را در حافظه نگه میدارد.
یک عبارت میتواند نسبت به رویدادهای خارجی گوناگون، مانند تغییر اندازه یا جابهجایی پنجره، تغییرات پسزمینهٔ ریشه (root) و تایمرها «حساس» (sensitive) باشد. تنها با استفاده از عبارتی (مانند "scale" بدون پارامتر) که به مقادیر متغیر خاصی (که «متغیرها» نامیده میشوند) وابسته است، یا با استفادهٔ مستقیم از آن متغیرها، عبارت نسبت به این رویدادها حساس خواهد شد - برای نمونه، استفاده از "scale" یا "TW" عبارت را نسبت به اندازهٔ ترمینال و در نتیجه نسبت به رویدادهای تغییر اندازه حساس میسازد.
هنگامی که چنین رویدادی رخ دهد، "keep" بهطور خودکار ارزیابی مجدد کل عبارت را با مقدار جدید عبارت فراخوانی میکند.
"keep" بیشترین کاربرد را برای عملیاتهای سنگین مانند "blur" دارد:
rootalign keep { blur 20, root }
این دستور یکبار یک رونوشت ماتشده از پسزمینهٔ ریشه ایجاد میکند و در فراخوانیهای بعدی، تنها آن را با ریشه تراز میکند (root-aligns). از آنجا که "blur" معمولاً بسیار کُند و "rootalign" بسیار سریع است، این کار حافظهٔ اضافی را (برای pixmap ماتشدهٔ نهانسازیشده) با سرعت مبادله میکند (عملیات blur تنها زمانی که ریشه تغییر کند تکرار میشود).
"load" نهانسازی
عملگر "load" بهخودیخود تصاویر را در حافظه نگه نمیدارد، اما تا زمانی که تصویر همچنان در حافظه باقی مانده باشد، "load" بهجای بارگیری مجدد آن از دیسک، از همان تصویر درونحافظه استفاده خواهد کرد.
این بدان معناست که این عبارت:
keep { load "$HOME/path..." }
نه تنها تصویر را در حافظه نهانسازی میکند، بلکه دیگر نمونههای ترمینال نیز که برای "load" کردن آن تلاش میکنند میتوانند از آن رونوشت درونحافظه استفاده مجدد کنند.
مرجع (REFERENCE)
سوئیچهای خط فرمان (COMMAND LINE SWITCHES)
- --background-expr perl-expression
- عبارت Perl مورد نظر را جهت ارزیابی مشخص میکند.
- --background-border
- بهطور
پیشفرض،
عبارت
تصویری
ایجاد
میکند که
تمام پنجره
را پر کرده
و روی
حاشیهها و
هر ناحیهٔ
دیگر،
مانند نوار
پیمایش (scrollbar)
را
بازنویسی
میکند.
مشخص کردن این پرچم، رفتار را به گونهای تغییر میدهد که تصویر تنها جایگزین پسزمینهٔ ناحیهٔ نویسهها شود.
- --background-interval seconds
- از آنجا که
برخی
عملیات در
افزونهٔ
زیربنایی XRender
میتوانند
کارساز X
شما (X-server) را
برای مدتی
طولانی
مسدود
کنند، این
افزونه
حداقل زمان
مشخصی را
بین
بهروزرسانیها
اعمال
میکند که
بهطور
معمول حدود
0.1 ثانیه است.
اگر میخواهید بهروزرسانیها را در دفعات بیشتری انجام دهید، میتوانید این بازهٔ ایمنی را با استفاده از این سوئیچ کاهش دهید..SS "تأمینکنندهها/تولیدکنندهها (PROVIDERS/GENERATORS)" این توابع با بارگذاری تصویر از دیسک، دریافت آن از صفحه ریشه (root screen) یا صرفاً با تولید آن، یک تصویر فراهم میکنند. از این توابع بهعنوان نقطه شروع برای دستیابی به تصویری که بتوانید با آن کار کنید استفاده میشود.
- load $path
- تصویر
موجود در
$path
دادهشده
را
بارگذاری
میکند.
تصویر روی
حالت
کاشیکاری
صفحهای (plane tiling
mode) تنظیم
میشود.
اگر تصویر از قبل در حافظه باشد (برای نمونه به این دلیل که نمونه دیگری از ترمینال از آن استفاده میکند)، نسخه درون حافظه بهجای آن بازگردانده میشود.
- load_uc $path
- بارگذاری بدون حافظه موقت (uncached) - مشابه load، اما تصویر را در حافظه موقت ذخیره نمیکند؛ بدین معنی که همیشه دوباره از سیستم فایل بارگذاری میشود، حتی اگر نسخه دیگری از آن در همان زمان در حافظه موجود باشد.
- root
- نقشه
پیکسلی
پنجره ریشه
(root window pixmap) را
بازمیگرداند؛
یعنی، در
حالت
مطلوب،
همان تصویر
پسزمینه
صفحهنمایش
شما.
این تابع عبارت شما را به ریشه حساس (root sensitive) میکند؛ بدین معنی که با تغییر تصویر پسزمینه (bg)، عبارت دوباره ارزیابی خواهد شد.
- solid $colour
- solid $width, $height, $colour
- یک تصویر
جدید ایجاد
کرده و آن
را کاملاً
با رنگ
دادهشده
پر میکند.
تصویر روی
حالت
کاشیکاری
تنظیم
میشود.
اگر $width و $height حذف شوند، یک تصویر 1x1 ایجاد میکند که برای پسزمینههای یکدست یا استفاده در جلوههای پالایشی (filtering effects) مفید است.
- clone $img
- یک رونوشت دقیق از تصویر را بازمیگرداند. این تابع زمانی مفید است که بخواهید چندین رونوشت از یک تصویر داشته باشید تا جلوههای متفاوتی را روی آنها اعمال کنید.
- merge $img ...
- هر تعداد
تصویر را
دریافت
کرده و
آنها را با
یکدیگر
ادغام
میکند، و
یک تصویر
واحد شامل
همه آنها
پدید
میآورد.
حالت
کاشیکاری
تصویر نخست
بهعنوان
حالت
کاشیکاری
تصویر حاصل
استفاده
میشود.
این تابع هنگامی که یک عبارت چندین تصویر را بازمیگرداند بهطور خودکار فراخوانی میشود.
حالتهای کاشیکاری (TILING MODES)
عملگرهای زیر حالت کاشیکاری یک تصویر را تغییر میدهند؛ یعنی روشی که پیکسلهای خارج از ناحیه تصویر هنگام استفاده از آن ترسیم میشوند.
- tile $img
- کل صفحه را
با تصویر
کاشیکاری
میکند و
این تصویر
جدید را
بازمیگرداند
- یا به
عبارت
دیگر،
رونوشتی از
تصویر را در
حالت
کاشیکاری
صفحهای
بازمیگرداند.
مثال: بارگذاری یک تصویر و کاشیکاری آن روی پسزمینه، بدون تغییر اندازه. فراخوانی "tile" غیرضروری است زیرا "load" از قبل بهطور پیشفرض در حالت کاشیکاری قرار دارد.
tile load "mybg.png"
- mirror $img
- مشابه tile،
اما هر بار
که از یک
نسخه جدید
استفاده
میکند
تصویر را
بازتاب
میدهد
(آینهای
میکند)،
بهگونهای
که لبههای
بالایی
همیشه با
لبههای
بالایی،
لبههای
راست همیشه
با لبههای
راست و به
همین ترتیب
مماس شوند
(در
کاشیکاری
عادی،
لبههای چپ
همیشه به
لبههای
راست و بالا
همیشه به
لبههای
پایین
میرسند).
مثال: بارگذاری یک تصویر و بازتاب دادن آن روی پسزمینه، که از ایجاد لبههای تند و شکسته در مرزهای تصویر جلوگیری میکند، به بهای آینهای شدن خود تصویر.
mirror load "mybg.png"
- pad $img
- تصویری را
دریافت
کرده و آن
را طوری
تغییر
میدهد که
تمام
پیکسلهای
خارج از
محدوده
تصویر شفاف
شوند. این
حالت بیش از
همه زمانی
مفید است که
میخواهید
تصویری را
روی تصویر
دیگر یا رنگ
پسزمینه
قرار دهید،
در حالی که
تمام
پیکسلهای
پسزمینه
خارج از
تصویر
دستنخورده
باقی
بمانند.
مثال: بارگذاری یک تصویر و نمایش آن در گوشه بالا سمت چپ. باقی فضا «خالی» رها میشود (شفاف یا هر رفتاری که کامپوزیتور شما در حالت آلفا دارد، در غیر این صورت رنگ پسزمینه).
pad load "mybg.png"
- extend $img
- تصویر را با
استفاده از
نزدیکترین
پیکسل در
ناحیه
بیرونی
تصویر، در
سرتاسر
صفحه
امتداد
میدهد. این
حالت
عمدتاً
هنگامی
مفید است که
از
عملیاتهای
پالایشی
پیچیدهتر
استفاده
میکنید و
میخواهید
پیکسلهای
خارج از
تصویر
مقادیری
یکسان با
پیکسلهای
نزدیک به
لبه داشته
باشند.
مثال: صرفاً جهت کنجکاوی، این سازوکار امتداد پیکسلها چگونه کار میکند؟
extend move 50, 50, load "mybg.png" توابع زیر دادههای متغیری مانند ابعاد پنجره ترمینال را ارائه میدهند. آنها متغیرهای (پِرل-) نیستند، بلکه صرفاً مقادیری را برمیگردانند که تغییر میکنند. بیشتر آنها عبارت شما را نسبت به برخی از رویدادها حساس میکنند؛ برای مثال استفاده از "TW" (عرض ترمینال) به این معنی است که با تغییر اندازه ترمینال، عبارت شما دوباره ارزیابی میشود. - TX
- TY
-
مختصات X و Y پنجره ترمینال را برمیگردانند (پنجره ترمینال بهطور پیشفرض کل پنجره است، و در حالت border-respect تنها ناحیه نویسهها را شامل میشود). استفاده از این توابع عبارت شما را نسبت به جابهجاییهای پنجره حساس میکند. این توابع عمدتاً برای تراز کردن تصاویر با پنجره ریشه (root window) مفید هستند. مثال: بارگذاری یک تصویر و تراز کردن آن بهگونهای که گویی به پسزمینه مهار شده است (راستی، این دقیقاً همان کاری است که "rootalign" انجام میدهد): move -TX, -TY, keep { load "mybg.png" } - TW
- TH
- عرض ("TW") و
ارتفاع
("TH")
پنجره
ترمینال را
برمیگردانند
(پنجره
ترمینال
بهطور
پیشفرض کل
پنجره است،
و در حالت border-respect
تنها ناحیه
نویسهها
را شامل
میشود).
استفاده از این توابع عبارت شما را نسبت به تغییر اندازه پنجره حساس میکند.
این توابع عمدتاً برای مقیاسبندی تصاویر یا برش (clip) تصاویر به اندازه پنجره جهت صرفهجویی در حافظه مفید هستند.
مثال: پسزمینه صفحه نمایش را بگیرید، آن را به اندازه پنجره برش دهید، کمی آن را مات (blur) کنید، با موقعیت پنجره تراز نمایید و به عنوان پسزمینه استفاده کنید.
clip move -TX, -TY, keep { blur 5, root } - FOCUS
- یک مقدار
بولی
برمیگرداند
که نشان
میدهد آیا
پنجره
ترمینال
فوکوس
صفحهکلید
را در
اختیار
دارد یا
خیر؛ در
صورتی که
داشته
باشد،
مقدار true
برمیگرداند.
استفاده از این تابع عبارت شما را نسبت به تغییرات فوکوس حساس میکند.
یک مورد استفاده رایج، محو کردن (fade) تصویر پسزمینه هنگام از دست رفتن فوکوس ترمینال است، که اغلب همراه با گزینه خط فرمان "-fade" استفاده میشود. در واقع، تابعی ویژه دقیقاً برای همین کاربرد وجود دارد: "focus_fade".
مثال: استفاده از دو تصویر پسزمینه کاملاً متفاوت، بسته به اینکه پنجره فوکوس دارد یا خیر.
FOCUS ? keep { load "has_focus.jpg" } : keep { load "no_focus.jpg" } - now
- زمان کنونی
را به صورت
ثانیههای
(کسری) از
مبدأ زمان
یونیکس (epoch)
برمیگرداند.
استفاده از این عبارت، عبارت شما را نسبت به زمان حساس نمیکند، اما دو تابع بعدی این کار را انجام میدهند.
- again $seconds
- هنگامی که
از این تابع
استفاده
میشود،
عبارت پس از
$seconds ثانیه
دوباره
ارزیابی
خواهد شد.
مثال: بارگذاری یک تصویر و چرخاندن آن بر اساس ساعت روز (مانند عقربه ساعتشمار یک ساعت). این تصویر هر دقیقه بهروزرسانی میشود.
again 60; rotate 50, 50, (now % 86400) * -72 / 8640, scale keep { load "myclock.png" } - counter $seconds
- مشابه "again" است، اما یک مقدار شمارنده افزایشی نیز برمیگرداند که از 0 شروع میشود؛ این مقدار ممکن است برای برخی از جلوههای پویانمایی ساده مفید باشد..SS "عملگرهای تغییر شکل (SHAPE CHANGING OPERATORS)" عملگرهای زیر شکل، اندازه یا موقعیت تصویر را تغییر میدهند.
- clip $img
- clip $width, $height, $img
- clip $x, $y, $width, $height, $img
- تصویر را به
مستطیل
مشخصشده
برش میزند
(clip میکند).
اگر مستطیل
خارج از
محدودهٔ
تصویر باشد
(مثلاً
هنگامی که
$x یا $y
منفی هستند)
یا مستطیل
از تصویر
بزرگتر
باشد، حالت
کاشیکاری
(tiling mode) نحوهٔ پر
شدن
پیکسلهای
اضافی را
تعیین
میکند.
اگر $x و $y مشخص نشده باشند، مقدار 0 برای هر دو در نظر گرفته میشود.
اگر $width و $height مشخص نشده باشند، اندازهٔ پنجره در نظر گرفته خواهد شد.
مثال: بارگذاری یک تصویر، تار کردن (blur) آن و برش زدنش به اندازهٔ پنجره برای صرفهجویی در حافظه.
clip keep { blur 10, load "mybg.png" } - scale $img
- scale $size_factor, $img
- scale $width_factor, $height_factor, $img
- تصویر را بر
اساس ضرایب
ارائهشده
در جهتهای
افقی ($width) و
عمودی ($height)
مقیاسبندی
میکند.
اگر تنها یک ضریب داده شود، برای هر دو جهت استفاده میشود.
اگر هیچ ضریبی داده نشود، تصویر را بدون حفظ نسبت تصویر به اندازهٔ پنجره مقیاسبندی میکند.
- resize $width, $height, $img
- اندازهٔ تصویر را دقیقاً به $width در $height پیکسل تغییر میدهد.
- fit $img
- fit $width, $height, $img
- تصویر را بدون تغییر نسبت ابعاد، در $width و $height مشخصشده یا اندازهٔ ترمینال میگنجاند. این بدان معناست که تصویر تا جایی کوچک یا بزرگ میشود که کل آن در ناحیهٔ مشخصشده جا بگیرد، که احتمالاً حاشیههایی باقی خواهد گذاشت.
- cover $img
- cover $width, $height, $img
- مشابه "fit" است، اما تصویر را تا جایی کوچک یا بزرگ میکند که تمام ناحیه پوشانده شود؛ بنابراین به جای احتمال باقی ماندن حاشیهها، دادههای تصویری را که جا نمیشوند برش میدهد.
- move $dx, $dy, $img
- تصویر را به
اندازهٔ
$dx پیکسل
در جهت افقی
و $dy
پیکسل در
جهت عمودی
جابهجا
میکند.
مثال: جابهجا کردن تصویر به اندازهٔ ۲۰ پیکسل به سمت راست و ۳۰ پیکسل به سمت پایین.
move 20, 30, ...
- align $xalign, $yalign, $img
- تصویر را بر
اساس یک
ضریب تراز
میکند -
مقدار 0
بدین
معناست که
تصویر به
لبهٔ چپ یا
بالا منتقل
میشود
(برای $xalign
یا $yalign)،
مقدار 0.5
یعنی
دقیقاً در
مرکز قرار
میگیرد و
مقدار 1
یعنی به
لبهٔ راست
یا پایین
مماس
میشود.
مثال: حذف هرگونه حاشیهٔ قابل مشاهده در اطراف تصویر، قرار دادن آن در مرکز به صورت عمودی و انتقال آن به سمت راست.
align 1, 0.5, pad $img
- center $img
- center $width, $height, $img
- تصویر را
وسطچین
میکند،
یعنی مرکز
تصویر به
مرکز
پنجرهٔ
ترمینال (یا
کادر
مشخصشده
توسط $width و
$height در
صورت ارائه)
منتقل
میشود.
مثال: بارگذاری یک تصویر و قرار دادن آن در مرکز.
center keep { pad load "mybg.png" } - rootalign $img
- تصویر را
بهگونهای
جابهجا
میکند که
به جای
پنجره، به
صفحهٔ
نمایش
چسبیده به
نظر برسد.
این کار
جلوهٔ وجود
ناحیهای
بزرگتر را
در پشت
پنجره
ایجاد
میکند. این
دستور
دقیقاً
معادل "move -TX,
-TY" است،
یعنی تصویر
را به گوشهٔ
بالا و چپ
صفحهٔ
نمایش
منتقل
میکند.
مثال: بارگذاری تصویر پسزمینه، قرار دادن آن در حالت آینهای و تراز کردن آن با ریشه (root).
rootalign keep { mirror load "mybg.png" }مثال: گرفتن پسزمینهٔ صفحهٔ نمایش و تراز کردن آن، که تا زمانی که پنجره جلوی سایر پنجرهها نباشد، جلوهٔ شفافیت ایجاد میکند.
rootalign root
- rotate $center_x, $center_y, $degrees, $img
- تصویر را در
جهت
عقربههای
ساعت به
اندازهٔ
$degrees درجه،
حول نقطهٔ
واقع در
$center_x و
$center_y (که به
عنوان
ضریبی از
عرض/ارتفاع
تصویر مشخص
شده است)
میچرخاند.
مثال: چرخش ۹۰ درجهای تصویر حول مرکز آن.
rotate 0.5, 0.5, 90, keep { load "$HOME/mybg.png" } عملگرهای زیر پیکسلهای تصویر را تغییر میدهند. - tint $color, $img
-
تصویر را با رنگ دادهشده تهرنگ میزند. مثال: اعمال تهرنگ قرمز به تصویر. tint "red", load "rgb.png"
مثال: همان مورد، اما با تعیین رنگ از طریق مؤلفهها.
tint [1, 0, 0], load "rgb.png"
- shade $factor, $img
- تصویر را با ضریب دادهشده سایهدار (shade) میکند.
- contrast $factor, $img
- contrast $r, $g, $b, $img
- contrast $r, $g, $b, $a, $img
- کنتراست (contrast)
تصویر را
تنظیم
میکند.
حالت اول یک $factor واحد را روی قرمز، سبز و آبی اعمال میکند، حالت دوم ضریبهای جداگانهای را برای هر کانال رنگی به کار میبرد، و حالت آخر کانال آلفا را نیز شامل میشود.
مقادیر بین 0 تا 1 کنتراست را کاهش میدهند و مقادیر بزرگتر از 1 کنتراست را افزایش میدهند.
به دلیل محدودیتهای موجود در اکستنشن پایهای XRender، کاهش کنتراست روشنایی را نیز کم میکند، در حالی که در حال حاضر افزایش کنتراست باعث افزایش روشنایی نیز میشود.
- brightness $bias, $img
- brightness $r, $g, $b, $img
- brightness $r, $g, $b, $a, $img
- روشنایی (brightness)
یک تصویر را
تنظیم
میکند.
حالت اول یک $bias واحد را روی قرمز، سبز و آبی اعمال میکند، حالت دوم بایاسهای جداگانهای را برای هر کانال رنگی به کار میبرد، و حالت آخر کانال آلفا را نیز در بر میگیرد.
مقادیر کمتر از 0 روشنایی را کاهش میدهند، در حالی که مقادیر بزرگتر از 0 آن را افزایش میدهند. محدودهٔ کاربردی از -1 تا 1 است - اولی منجر به تصویری سیاه و دومی منجر به تصویری سفید میشود.
به دلیل رفتارهای خاص در اکستنشن پایهای XRender، بایاسهای کمتر از صفر میتوانند بسیار کند باشند.
همچنین میتوانید عملگر آزمایشی(!) "muladd" را امتحان کنید.
- muladd $mul, $add, $img # EXPERIMENTAL
- ابتدا
پیکسلها
را در $mul
ضرب کرده،
سپس با $add
جمع میکند.
این عملگر
میتواند
برای
پیادهسازی
همزمان
روشنایی و
کنتراست،
با دامنه
مقادیر
وسیعتری
نسبت به
عملگرهای
کنتراست و
روشنایی
استفاده
شود.
به دلیل باگهای متعدد در پیادهسازیهای XRender، همچنین ممکن است باعث ایجاد تعدادی ناهنجاریهای بصری (artifacts) شود.
مثال: افزایش کنتراست با ضریب $c بدون تغییر بیش از حد روشنایی تصویر.
muladd $c, (1 - $c) * 0.5, $img
- blur $radius, $img
- blur $radius_horz, $radius_vert, $img
- تصویر را با
محوکردن
گاوسی با
شعاع
(تقریبی)
$radius پیکسل
تار میکند.
شعاعها را
میتوان به
صورت
جداگانه
نیز مشخص
کرد.
تار کردن تصویر اغلب بسیار کند است، حداقل در مقایسه با سایر عملگرها. شعاعهای محوکردن بزرگتر نیز از موارد کوچکتر کندتر هستند، بنابراین اگر نمیخواهید صفحهنمایش شما برای مدتهای طولانی قفل شود، آزمایش را با مقادیر کم برای شعاع (<5) شروع کنید.
- focus_fade $img
- focus_fade $factor, $img
- focus_fade $factor, $color, $img
- هنگام از
دست رفتن
فوکوس،
تصویر را با
ضریب (و رنگ)
مشخصشده
کمرنگ/محو
(fade) میکند
(مشابه
گزینههای
خط فرمان
"-fade"/"-fadecolor"
که مقادیر
پیشفرض را
برای
"factor" و
$color نیز
ارائه
میدهند).
برخلاف
"-fade"،
مقدار $factor
یک مقدار
حقیقی است
نه مقداری
درصدی (یعنی
0..1، نه 0..100).
مثال: انجام عملکرد درست هنگام درخواست focus fading.
focus_fade load "mybg.jpg"; هر چیزی که در هیچیک از دستهبندیهای دیگر جای نگرفت، حتی پس از اعمال زور و بستن چشمانمان.
- keep { ... }
-
این عملگر یک بلوک کد را به عنوان آرگومان دریافت میکند؛ یعنی یک یا چند دستور که درون آکولاد محصور شدهاند. ترفند کار در این است که این بلوک کد تنها زمانی ارزیابی میشود که نتیجه تغییر کند - در سایر فراخوانیها، "keep" صرفاً تصویری را که قبلاً محاسبه کرده بود بازمیگرداند (بله، این عملگر فقط باید برای تصاویر استفاده شود). یا به عبارت دیگر، "keep" نتیجهٔ بلوک کد را کَش (حافظه موقت) میکند تا نیازی به محاسبه مجدد آن نباشد. این قابلیت میتواند برای جلوگیری از تکرار عملیاتهای کند بسیار مفید باشد - برای مثال، اگر عبارت پسزمینه شما پسزمینه ریشه (root) را بگیرد، آن را مات کند و سپس همتراز با ریشه (root-align) سازد، با هر جابهجایی یا تغییر اندازهٔ پنجره، مجبور خواهد بود پسزمینه ریشه را دوباره مات کند. مثال دیگر "load" است که میتواند بسیار کند باشد. در واقع، خود urxvt کل عبارت را درون نوعی بلوک "keep" محصور میکند تا فقط در صورت نیاز مجدداً ارزیابی شود. قرار دادن ماتسازی درون یک بلوک "keep" تضمین میکند که ماتکردن فقط یک بار انجام گیرد، در حالی که "rootalign" همچنان با هر جابهجایی پنجره اجرا میشود. rootalign keep { blur 10, root }
این پرسش باقی میماند که در صورت تغییر پسزمینه ریشه، چگونه ارزیابی مجدد بلوک را اجبار کنیم: اگر عبارت درون بلوک به رویدادی حساس باشد (مانند تغییرات پسزمینه ریشه، تغییرات هندسهٔ پنجره)، در صورت نیاز بهطور خودکار مجدداً ارزیابی خواهد شد.
تنظیمات قدیمی تصویر پسزمینه (OLD BACKGROUND IMAGE SETTINGS)
این افزونه همچنین از گزینهها/منابع قدیمی و دنبالههای OSC برای تنظیم تصویر پسزمینه پشتیبانی میکند. این تنظیمات منسوخ شدهاند و در نسخههای آینده حذف خواهند شد.
گزینهها و منابع (OPTIONS AND RESOURCES)
- -pixmap file[;oplist]
- backgroundPixmap: file[;oplist]
- از فایل تصویری مشخصشده به عنوان پسزمینه پنجره استفاده میکند و همچنین به طور اختیاری فهرستی از عملیاتها را که با دونقطه (:) از هم جدا شدهاند برای تغییر آن مشخص میسازد. توجه داشته باشید که ممکن است هنگام استفاده از گزینهٔ خط فرمان نیاز باشد نویسهٔ ";" را نقلقول کنید، زیرا ";" معمولاً در شلها یک فرانویسه (metacharacter) است. عملیاتهای پشتیبانیشده عبارتند از:
- WxH+X+Y
- مقیاس و موقعیت را تنظیم میکند. "W" / "H" مقیاس افقی/عمودی (درصد) را مشخص میکنند و "X" / "Y" مرکز تصویر را تعیین میکنند (درصد). مقیاس 0 تغییر مقیاس را غیرفعال میکند.
- op=tile
- چیدمان کاشیوار (تکرارشونده) را فعال میکند
- op=keep-aspect
- هنگام تغییر مقیاس، نسبت ابعاد تصویر را حفظ میکند
- op=root-align
- از موقعیت پنجرهٔ ترمینال نسبت به پنجرهٔ ریشه به عنوان آفست تصویر استفاده میکند و پسزمینه پنجره ریشه را شبیهسازی مینماید
تنظیم پیشفرض مقیاس و موقعیت "100x100+50+50" است. همچنین، میتوان از مجموعهای از الگوهای از پیش تعریفشده برای دستیابی به متداولترین پیکربندیها استفاده کرد:
- style=tiled
- تصویر بدون تغییر مقیاس، کاشیوار چیده میشود. معادل با 0x0+0+0:op=tile
- style=aspect-stretched
- تصویر برای پر کردن کل پنجره با حفظ نسبت ابعاد کشیده شده و در مرکز قرار میگیرد. معادل با 100x100+50+50:op=keep-aspect
- style=stretched
- تصویر برای پر کردن کل پنجره کشیده میشود. معادل با 100x100
- style=centered
- تصویر بدون تغییر مقیاس در مرکز قرار میگیرد. معادل با 0x0+50+50
- style=root-tiled
- تصویر بدون تغییر مقیاس و با استفاده از موقعیتیابی «root» کاشیوار چیده میشود. معادل با 0x0:op=tile:op=root-align
اگر چندین الگو مشخص شود، آخرین مورد اعمال خواهد شد. توجه داشته باشید که یک الگو تمام تنظیمات مقیاس، موقعیت و عملیاتها را لغو میکند.
اگر به همراه شبهشفافیت (pseudo-transparency) استفاده شود، تصویر مشخصشده با استفاده از آمیزش آلفا (alpha-blending) روی پسزمینه شفاف ترکیب خواهد شد.
- -tr|+tr
- transparent: boolean
- فعال/غیرفعال کردن شبهشفافیت با استفاده از پیکسمپ ریشه (root pixmap) به عنوان پسزمینه.
- -tint colour
- tintColor: colour
- اعمال تهرنگ (tint) با رنگ دادهشده روی پسزمینهٔ شفاف. توجه داشته باشید که تهرنگ سیاه تصویری کاملاً سیاه ایجاد میکند، در حالی که تهرنگ سفید تصویر را بدون تغییر میگذارد.
- -sh number
- shading: number
- تیرهتر کردن (0 .. 99) یا روشنتر کردن (101 .. 200) پسزمینهٔ شفاف. مقدار 100 به معنای عدم اعمال سایهروشن است.
- -blr HxV
- blurRadius: HxV
- اعمال ماتسازی گاوسی با شعاع مشخصشده بر روی پسزمینه شفاف. اگر یک عدد منفرد مشخص شود، شعاعهای عمودی و افقی یکسان در نظر گرفته میشوند. تنظیم یکی از شعاعها روی 1 و دیگری روی یک عدد بزرگ جلوههای جالبی بر روی برخی پسزمینهها ایجاد میکند. حداکثر مقدار شعاع 128 است. شعاع افقی یا عمودی برابر با 0 ماتسازی را غیرفعال میکند..SS "توالیهای OSC (OSC sequences)" این افزونه به توالیهای OSC زیر واکنش نشان خواهد داد. توجه داشته باشید که این افزونه در حال حاضر هنگام استفاده از این موارد بهطور خودکار بارگذاری نمیشود، بنابراین برای اینکه urxvt آنها را شناسایی کند، باید افزونهٔ "background" را فعال کنید. یک راه برای دستیابی به این هدف، استفاده از آرگومان خط فرمان "--background-expr ''" یا مشخص کردن یک منبع خالی "URxvt.background.expr:"> است.
- "ESC ] 705 ; Pt ST" تغییر رنگ تهرنگ پسزمینه شفاف به "Pt".
- "ESC ] 20 ; Pt ST" تغییر/پرسوجوی پارامترهای تصویر پسزمینه: مقدار "Pt" میتواند یکی از دستورهای زیر باشد:
- "?"
- نمایش مقیاس و موقعیت در عنوان
- ";WxH+X+Y"
- تغییر مقیاس و/یا موقعیت
- "FILE;WxH+X+Y"
- تغییر تصویر پسزمینه
| 2025-10-24 | 9.31 |