تغییر پوسته Emacs با بسته color-theme

·

3 min read

اولین روشی که برای این کار با آن آشنا شدم‌، فایلی به اسم ‎[.Xdefaults](softpanorama.org/Xwindows/Configuration/xde.. "xdefaults on sofpanaroma") در پوشه‌ی خانگی بود که از قرار آرگومان‌هایی علاوه بر نمونه‌هایی که خواهیم دید برای کنترل نمایش دیگر نرم‌افزار‌ها نظیر xterm نیز در خود دارد‌. برای استفاده از این روش کافیست این فایل را با ویرایشگر باز کرده‌، و خطوطی به صورت زیر به آن اضافه کنیم‌:

Emacs.background: ivory

Emacs.foreground: MidnightBlue

که رنگ پس زمینه‌، و رنگ نوشته‌ها را تعیین می‌کند‌. اما مشکل این روش جدای از چندان ایمکسی نبودن‌، وابسته بودن به محیط X است که چندان محیط یک‌پارچه‌ای برای ایمکس در ترمینال و X ارائه نمی‌کند‌. (‌البته شاید هم بکند که من نمی‌دادنم‌) به هر حال در صورت علاقه به آشنایی با این روش می‌توانید + و + را مطالعه کنید‌.

استفاده از ‎.emacs

روش بعدی استفاده از ویژگی‌های خود ایمکس است‌. در این روش کافیست تنظیماتی به شکل زیر را به فایل ‎.emacs موجود در پوشه‌ی خانگیتان وارد کنید‌:

(set-face-foreground 'default "blue")

(set-face-background 'default "green")

ویژگی‌های دیگری نیز از این دست نظیر زیر‌خط‌ها و ... موجودند‌. برای این که به تنظیمات نمایش هر بخش از نوشته دست یابید‌، کافیست نشانگر را به آن‌جا برده و M-x describe-face را وارد کنید‌. اطلاعات کاملی در مورد نمایش آن بخش به شما نشان داده خواهد شد که می‌توانید با توجه به سلیقه‌ی خود آن رو تغییر دهید‌.

جدای از تعریف مستقیم نام رنگ‌ها به صورت red, blue و ... می‌توان از نام Hex رنگ‌ها نیز استفاده کرد. (‌البته توجه داشته باشید که ترمینال شما باید از میزان رنگ متناسب پشتیبانی کند)

معرفی color-theme

خوب تا این‌جای کار با روش‌های تغییر ساختار رنگ پوسته‌ی ایمکس آشنا شدیم‌. اما خوب بالاغیرتا کار طاقت فرساییست که بخواهیم برای تمامی حالات یک پوسته‌ی ایمکس (‌آن هم با این همه قابلیت‌) رنگ‌بندی متناسبی پیدا کنیم‌. این‌جاست که طبق معمول (‌در دنیای آزاد) بسته‌ای به نام [color-theme](gna.org/projects/color-theme "color theme official page") با پنجاه پوسته رنگ پیش‌فرض که قابلیت تغییر نیز دارند در دسترس شماست‌. برای [نصب آن](emacswiki.org/emacs-en/ColorTheme#toc1 "colortheme on emacs wiki") کافیست پس از [دانلودش‌،](download.gna.org/color-theme "download emacs color theme") استخراجش کرده‌، و فایل color-theme.el و پوشه‌ی themes را به یکی از شاخه‌های موجود در load-path‌تان وارد کنید‌. اگر نمی‌دانید load-path چیست [این‌جا](emacswiki.org/emacs-en/LoadPath "loadpath on emacs wiki") را مطالعه کنید‌، برای محکم کاری هم می‌توانید از دستورات زیر بهره ببرید‌:

wget http://download.gna.org/color-theme/color-theme-6.6.0.tar.gz

mkdir ~/.emacs.d

mkdir ~/.emacs.d/color-theme

tar -xvf color-theme-6.6.0.tar.gz

cd color-theme-6.6.0.tar.gz

mv color-theme.el ~/.emacs.d/color-theme

mv themes ~/.emacs.d/color-theme

vim ~/.emacs

و در آخر خطوط زیر را به فایل اضافه کرده و آن را ذخیره کنید‌:

(require 'color-theme)

(color-theme-initialize)

(color-theme-robin-hood)

که در این‌جا پوسته‌ای به نام robin-hood را انتخاب کردیم‌. (‌برای کسب اطلاعات کامل‌تر در این زمینه می‌توانید به این صفحه رجوع کنید‌). خوب پوسته‌های این بسته چندان چنگی به دل نمی‌زد‌.

جستجوی بعدی مرا به [این صفحه](slinky.imukuppi.org/zenburnpage "zenburn page") رساند‌. معرفی‌نامه‌ی پوسته‌ای به اسم zenburn (‌که قبلا [افتخار آشنایی](shahinism.com/blog/1391/01/10/%db%8c%da%a9-.. "یک پوسته برای مدیر پنجره Awesome") با آن را روی Awesome wm داشتم) که ار قرار اولین بار برای Vi منتشر شده و الان توسط دوست‌دارانش برای بسیاری دیگر از نرم‌افزار‌ها توسعه داده شده‌. (‌در آینده در مورد نحوه‌ی استفاده از آن در باقی نرم‌افزار‌ها هم خواهم نوشت‌).

خوب برای بهره برداری از این پوسته روی emacs به این صورت عمل می‌کنیم‌:

git clone https://github.com/dbrock/zenburn-el.git

mkdir ~/.emacs.d/color-theme/themes/zenburn

mv zenburn-el/zenubrn.el ~/.emacs.d/color-theme/themes/zenuburn

vim ~/.emacs

و کلا به جای خطوط اضافه شده‌ی قبلی‌، خطوط زیر را اضافه می‌کنیم‌:

(add-to-list 'load-path "~/.emacs.d/color-theme/")

(load-file "~/.emacs.d/color-theme/themes/zenburn-el/zenburn.el")

(zenburn)

و حالا با اجرای ایمکس از رنگ‌بندی جدید لذت می‌بریم‌:

البته طبق معمول اگر جایی چیزی نا خوشایند بود می‌توان دستکاری و بهترش کرد‌.

نکته‌: من هنوز در مورد ویرایشگر‌های Vi و Emacs بسیار آماتور هستم‌ و ممکن است در میان آموزش‌های این‌چنینی اشتباهاتی رخ داده باشد‌. (‌کلا نمی‌خواهم ترس از اشتباه جلوی این‌چنین نوشتنم را بگیرد‌) لذا از تمامی دوستانی که دستی بر آتش دارند دعوت می‌کنم در بهتر شدن این نوشتار‌ها یاری‌ام کنند ;-)