task-color(5) User Manuals task-color(5)

task-color - راهنمای رنگ‌آمیزی برای مدیر وظایف خط فرمانی Taskwarrior

باید اشاره کرد که Taskwarrior از این موضوع آگاه است که خروجی آن به یک ترمینال ارسال می‌شود، یا به یک فایل، یا از طریق یک پایپ (لوله). هنگامی که خروجی Taskwarrior به ترمینال می‌رود، نمایش رنگی مطلوب است، اما دستور زیر را در نظر بگیرید:

$ task list > file.txt

آیا واقعاً می‌خواهیم تمام آن کدهای کنترلی رنگ در فایل ذخیره شوند؟ Taskwarrior فرض می‌کند که شما چنین چیزی نمی‌خواهید و هنگام تولید خروجی، به طور موقت رنگ را روی 'off' (خاموش) تنظیم می‌کند. این امر خروجی دستور زیر را توضیح می‌دهد:

$ task show | grep '^color '
color                        off

صرف‌نظر از اینکه مقدار تنظیمات چه باشد، همواره 'off' برمی‌گرداند، چرا که خروجی به یک پایپ ارسال شده است.

اگر آن کدهای رنگی را می‌خواهید، می‌توانید با تنظیم متغیر _forcecolor روی on، این رفتار را بازنویسی (override) کنید، مانند زیر:

$ task config _forcecolor on
$ task config | grep '^color '
color                        on

یا با بازنویسی موقت آن به این صورت:

$ task rc._forcecolor=on config | grep '^color '
color                        on

برنامه Taskwarrior فرمانی به نام 'color' دارد که تمام رنگ‌هایی را که قادر به نمایش آن‌هاست نشان می‌دهد. این دستور را امتحان کنید:

$ task color

خروجی این دستور را نمی‌توان در صفحه راهنمای man بازتولید کرد، اما شما باید مجموعه‌ای از نمونه‌های رنگی را مشاهده کنید. تعداد رنگ‌هایی که می‌بینید به توانایی برنامه ترمینال شما در رندر کردن آن‌ها بستگی دارد.

شما باید دست‌کم رنگ‌های پایه (Basic) و جلوه‌ها (Effects) را ببینید - اگر چنین است، از پشتیبانی ۱۶ رنگ برخوردار هستید. اگر ترمینال شما از ۲۵۶ رنگ پشتیبانی کند، متوجه آن خواهید شد!

پشتیبانی پایه از رنگ‌ها از طریق رنگ‌های نام‌گذاری‌شده فراهم می‌شود:

black, red, blue, green, magenta, cyan, yellow, white

رنگ پیش‌زمینه (برای متن) به سادگی به عنوان یکی از رنگ‌های بالا مشخص می‌شود، یا اینکه اصلاً مشخص نمی‌شود تا از رنگ پیش‌فرض متن ترمینال استفاده شود.

رنگ پس‌زمینه با استفاده از کلمه 'on' و یکی از رنگ‌های بالا تعیین می‌شود. چند نمونه:

green                 # متن سبز، رنگ پس‌زمینه پیش‌فرض
green on yellow       # متن سبز، پس‌زمینه زرد
on yellow             # رنگ متن پیش‌فرض، پس‌زمینه زرد

این رنگ‌ها می‌توانند با پررنگ کردن (bold) پیش‌زمینه یا روشن‌تر کردن (bright) پس‌زمینه بیشتر تغییر داده شوند. چند نمونه:

bold green
bold white on bright red
on bright cyan

ترتیب کلمات اهمیتی ندارد، بنابراین موارد زیر معادل یکدیگر هستند:

bold green
green bold

اما کلمه 'on' مهم است - رنگ‌های قبل از 'on' مربوط به پیش‌زمینه، و رنگ‌های پس از 'on' مربوط به پس‌زمینه هستند.

ویژگی دیگری به نام 'underline' (زیرخط) نیز وجود دارد که می‌توان از آن استفاده کرد:

underline bold red on black

و همچنین یک ویژگی به نام 'inverse' (وارون):

inverse red

برنامه Taskwarrior فرمانی دارد که به شما در تجسم این ترکیب‌های رنگی کمک می‌کند. این دستور را امتحان کنید:

$ task color underline bold red on black

می‌توانید از این دستور برای مشاهده نحوه کارکرد ترکیب‌های مختلف رنگ استفاده کنید. همچنین علاوه بر نمونه درخواستی، نمونه‌هایی از رنگ‌های نمایش داده‌شده مانند موارد بالا را نیز مشاهده خواهید کرد.

برخی ترکیب‌ها بسیار زیبا و برخی بسیار ناخوشایند به نظر می‌رسند. برای نمونه، برنامه‌های مختلف ترمینال نسخه‌های اندکی متفاوت از 'red' (قرمز) را پیاده‌سازی می‌کنند، بنابراین ممکن است بین سیستم‌های مختلف تفاوت‌های غیرمنتظره‌ای مشاهده کنید. روشنایی صفحه‌نمایش شما نیز یک عامل مؤثر است.

استفاده از ۲۵۶ رنگ از همان الگو پیروی می‌کند، اما نام‌ها متفاوت هستند و برخی رنگ‌ها را می‌توان به روش‌های گوناگونی مشخص کرد. نخستین روش، استفاده از شماره ترتیبی رنگ (color ordinal) است، که به این صورت است:

color0
color1
color2
...
color255

این کار به شما امکان دسترسی به همه ۲۵۶ رنگ را می‌دهد، اما کمک چندانی به انتخاب رنگ نمی‌کند. این محدوده ترکیبی از ۸ رنگ پایه (color0 تا color7)، سپس ۸ نسخه روشن‌تر (color8 تا color15)، بعد یک بلوک ۲۱۶ تایی از رنگ‌ها (color16 تا color231)، و در نهایت یک بلوک ۲۴ تایی از رنگ‌های خاکستری (color232 تا color255) است.

بلوک بزرگ ۲۱۶ رنگی (۶×۶×۶ = ۲۱۶) یک مکعب رنگ را نشان می‌دهد که می‌توان از طریق مقادیر RGB از ۰ تا ۵ برای هر جزء رنگی به آن دسترسی داشت. مقدار ۰ یعنی عدم وجود آن مؤلفه رنگی و مقدار ۵ یعنی بیشترین شدت آن مؤلفه رنگی. برای نمونه، قرمز روشن به این صورت مشخص می‌شود:

rgb500

و قرمز تیره‌تر به صورت زیر خواهد بود:

rgb300

توجه داشته باشید که این سه رقم نشان‌دهنده مقادیر سه مؤلفه هستند، بنابراین در این مثال، ۵، ۰ و ۰ نشان‌دهنده red=5، green=0 و blue=0 هستند. ترکیب قرمز پررنگ با سبز صفر و آبی صفر، رنگ قرمز را تولید می‌کند. به همین ترتیب، آبی و سبز عبارتند از:

rgb005
rgb050

نمونه دیگر - زرد روشن - ترکیبی از قرمز روشن و سبز روشن است بدون مؤلفه آبی، بنابراین زرد روشن به این شکل آدرس‌دهی می‌شود:

rgb550

یک صورتی ملایم به صورت زیر آدرس‌دهی می‌شود:

rgb515

با اجرای دستور زیر بررسی کنید که آیا با این نام‌گذاری موافقید:

$ task color black on rgb515

شاید متوجه شوید که بلوک بزرگ رنگی در قالب ۶ مربع نمایش داده می‌شود. تمام رنگ‌های مربع اول مقدار قرمز ۰ دارند. تمام رنگ‌های مربع ششم مقدار قرمز ۵ دارند. در هر مربع، آبی از ۰ تا ۵ از چپ به راست، و سبز از ۰ تا ۵ از بالا به پایین تغییر می‌کند. عادت کردن به این الگو به کمی زمان نیاز دارد.

همچنین می‌توان به بلوک ۲۴ تایی رنگ‌های خاکستری به صورت gray0 تا gray23، در یک طیف پیوسته از سیاه تا سفید دسترسی داشت.

اگر از ۱۶ رنگ استفاده کنید و آن را در یک ترمینال ۲۵۶ رنگ مشاهده کنید، مشکلی پیش نمی‌آید. اگر عکس این عمل را انجام دهید، یعنی رنگ‌های ۲۵۶ تایی تعیین کنید و در یک ترمینال ۱۶ رنگ نمایش دهید، ناامید و شاید حتی شوکه شوید.

نوعی نگاشت محدود رنگ وجود دارد - برای نمونه، اگر این ترکیب را تعیین کنید:

red on gray3

شما در حال ترکیب مشخصات ۱۶ رنگ و ۲۵۶ رنگ هستید. Taskwarrior رنگ red را به color1 نگاشت کرده و ادامه می‌دهد. توجه داشته باشید که red و color1 دقیقاً یک تن رنگی یکسان نیستند.

همچنین توجه کنید که هنگام کار با ۲۵۶ رنگ، ویژگی‌های bold یا bright وجود ندارند، اما همچنان ویژگی underline در دسترس است.

اگر این دستور را اجرا کنید، Taskwarrior نمونه‌هایی از تمام رنگ‌های تعریف‌شده مورد استفاده در فایل taskrc. یا تم شما را نمایش خواهد داد:

$ task color legend

این دستور نمونه‌ای از هر یک از رنگ‌ها را ارائه می‌دهد تا بتوانید جلوه آن‌ها را بدون نیاز به ایجاد مجموعه‌ای از وظایف که معیارهای هر قانون را برآورده می‌کنند، مشاهده نمایید.

برنامه Taskwarrior از قوانین رنگ‌آمیزی پشتیبانی می‌کند. این‌ها مقادیر پیکربندی هستند که یک رنگ و شرایط استفاده از آن رنگ را تعیین می‌کنند. به عنوان مثال، بیایید چند وظیفه اضافه کنیم:

$ task add project:Home priority:H pay the bills               (1)
$ task add project:Home            clean the rug               (2)
$ task add project:Garden          clean out the garage        (3)

می‌توانیم یک قانون رنگ اضافه کنیم که برای تمام وظایف موجود در پروژه Home از پس‌زمینه آبی استفاده کند:

$ task config color.project.Home 'on blue'

ما از علامت نقل‌قول در اطراف 'on blue' استفاده می‌کنیم زیرا از دو کلمه تشکیل شده است، اما نمایانگر یک مقدار در فایل taskrc. است. حال فرض کنید می‌خواهیم برای تمام کارهای مربوط به نظافت، از رنگ متن زرد پررنگ (bold yellow) استفاده کنیم:

$ task config color.keyword.clean 'bold yellow'

اکنون چه اتفاقی برای وظیفه ۲ می‌افتد که هم متعلق به پروژه Home است (پس‌زمینه آبی) و هم یک وظیفه نظافتی است (پیش‌زمینه زرد پررنگ)؟ رنگ‌ها با یکدیگر ترکیب می‌شوند و وظیفه به صورت "bold yellow on blue" نمایش داده می‌شود.

همان‌طور که نشان داده شد، قوانین رنگ را می‌توان بر اساس پروژه و کلمات کلیدی توضیحات، و همچنین بر اساس اولویت (یا عدم وجود اولویت)، وضعیت فعال بودن، موعد سررسید یا سررسید گذشته (overdue)، داشتن برچسب یا داشتن یک برچسب خاص (که شاید کاربردی‌ترین قانون باشد) یا تکرارشونده بودن وظیفه اعمال کرد.

امکان ایجاد ترکیبی بسیار رنگارنگ از قوانین وجود دارد. با پشتیبانی از ۲۵۶ رنگ، می‌توان آن رنگ‌ها را ملایم و مکمل یکدیگر ساخت، اما بدون دقت کافی، ممکن است آشفتگی بصری ایجاد شود. مراقب باشید!

در چنین مواردی، استفاده از گزینه 'rule.color.merge=no' را برای غیرفعال کردن ترکیب رنگ‌ها در نظر بگیرید.

تقدم و اولویت قوانین رنگ توسط متغیر پیکربندی 'rule.precedence.color' تعیین می‌شود، که به طور پیش‌فرض شامل موارد زیر است:

deleted,completed,active,keyword.,tag.,project.,overdue,scheduled,due.today,due,blocked,blocking,recurring,tagged,uda.

این‌ها صرفاً همان قوانین رنگ هستند که پیشوند '.color' از آن‌ها حذف شده است. قانون 'color.deleted' بالاترین تقدم و 'color.uda.' کمترین تقدم را دارد.

قانون کلیدواژه که در اینجا به صورت '.keyword' نشان داده شده با یک الگوی عام (wildcard) مطابقت دارد، به این معنی که معادل '*color.keyword.' یا به عبارت دیگر تمام قوانین کلمات کلیدی است.

همچنین 'color.project.none'، 'color.tag.none' و 'color.uda.priority.none' به طور خاص برای نمایش داده‌های ناموجود وجود دارند.

برنامه Taskwarrior از تم‌ها (Themes) پشتیبانی می‌کند. مفهوم واقعی این ویژگی آن است که به دلیل امکان گنجاندن فایل‌های دیگر در فایل taskrc.، می‌توان مجموعه‌های متفاوتی از قوانین رنگ را فراخوانی کرد.

برای درک بهتر اینکه یک تم رنگی چگونه به نظر می‌رسد، سعی کنید این ورودی را به فایل taskrc. خود اضافه نمایید:

include dark-256.theme

می‌توانید از هر یک از تم‌های استاندارد Taskwarrior استفاده کنید:

dark-16.theme
dark-256.theme
dark-blue-256.theme
dark-gray-256.theme
dark-green-256.theme
dark-red-256.theme
dark-violets-256.theme
dark-yellow-green.theme
light-16.theme
light-256.theme
solarized-dark-256.theme
solarized-light-256.theme
dark-default-16.theme
dark-gray-blue-256.theme
no-color.theme

به یاد داشته باشید اگر از ترمینالی با پس‌زمینه تیره استفاده می‌کنید، با استفاده از یک تم تیره (dark theme) نتایج بهتری مشاهده خواهید کرد.

همچنین می‌توانید با اجرای دستور زیر ببینید که تم چگونه وظایف مختلف را رنگ‌آمیزی می‌کند:

$ task color legend

حتی بهتر است تم اختصاصی خود را بسازید و به اشتراک بگذارید. ما با کمال میل فایل‌های تم را در نشانی https://taskwarrior.org میزبانی خواهیم کرد.

حق نشر (C) 2006 - 2021 متعلق به T. Babej, P. Beckingham, F. Hernandez.

برنامه Taskwarrior تحت شرایط مجوز MIT توزیع می‌شود. برای اطلاعات بیشتر https://www.opensource.org/licenses/mit-license.php را ببینید.

task(1), taskrc(5), task-sync(5)

برای اطلاعات بیشتر درباره Taskwarrior به منابع زیر مراجعه فرمایید:

وب‌سایت رسمی در
https://taskwarrior.org
مخزن رسمی کد منبع در
https://github.com/GothenburgBitFactory/taskwarrior
تماس با پروژه از طریق رایانامه
<support@GothenburgBitFactory.org>

باگ‌های Taskwarrior را می‌توانید به بخش ردیابی مشکلات در نشانی زیر گزارش کنید:
https://github.com/GothenburgBitFactory/taskwarrior/issues
2016-02-24 task 3.5.0