وقتی یه Theme کمکم تبدیل شد به خونه: Leenium
من Theme زیاد عوض کردم. احتمالاً بیشتر از چیزی که واقعاً لازم بوده.
Catppuccin، Tokyo Night، Night Owl، Dracula و کلی Theme دیگه که بعضیهاشون واقعاً هم خوبن و هنوزم دوستشون دارم. مشکل این نبود که این Themeها بد طراحی شده بودن یا رنگهای خوبی نداشتن؛ اتفاقاً بعضیهاشون از نظر طراحی خیلی بهتر از چیزی بودن که من میتونستم از صفر تصور کنم.
مشکل خیلی سادهتر بود: هیچکدوم دقیقاً چیزی نبودن که من میخواستم.
یکی Background ـش برای من زیادی روشن بود، یکی بیش از حد به خاکستری میزد، یکی رنگهایی داشت که وقتی چند ساعت به کد نگاه میکردم زیادی به هم نزدیک به نظر میرسیدن، یکی Function و Variable رو طوری از هم جدا میکرد که من دوست نداشتم و یکی هم تقریباً همهچیزش خوب بود، جز همان دو سه چیزی که بعد از مدتی دقیقاً تبدیل میشدن به تنها چیزهایی که میدیدم.
احتمالاً اگه فقط بحث سلیقه بود، مثل همیشه یه Theme دیگه پیدا میکردم و داستان تموم میشد. ولی برای من یه مسئله دیگه هم وسط بود: چشمهام.
به خاطر آستیگماتیسم شدید و قوز قرنیه، خوندن متن برای مدت طولانی همیشه برای من راحت نیست. مخصوصاً وقتی چند رنگ نزدیک به هم کنار هم قرار میگیرن و چشمم باید مدام زور بزنه تا تفاوت بینشون رو تشخیص بده. چیزی که برای یه نفر ممکنه یه Palette نرم و هماهنگ به نظر برسه، برای من بعد از چند ساعت میتونه تبدیل بشه به مجموعهای از کاراکترهایی که باید برای جدا کردنشون از هم انرژی مصرف کنم.
و فکر میکنم داستان Leenium تقریباً از همینجا شروع شد.
نه با این تصمیم که «میخوام یه Theme بسازم و Publish کنم»، نه با فکر ساختن یه Brand، نه حتی با این ایده که یه روز قرار باشه Bootloader و Firefox و YouTube من هم همین رنگها رو داشته باشن.
فقط میخواستم وقتی Neovim رو باز میکنم، چیزی که میبینم برای خودم درست باشه.
اول قرار نبود پروژهای وجود داشته باشه
شروع ماجرا تا جایی که یادمه از Neovim بود.
با Themeهای مختلف کار میکردم و تقریباً همیشه یه جای کار برای من میلنگید. مثلاً میگفتم Background خوبه، ولی دلم میخواد Function این رنگ نباشه. یا String باید واضحتر باشه. Comment زیادی به Background نزدیکه. Keyword باید سریعتر به چشم بیاد. بعضی رنگها هم بهتنهایی قشنگ بودن، ولی وقتی چند ساعت پشت سر هم بهشون نگاه میکردم، دیگه آنقدرها هم قشنگ نبودن.
اینجا یه تفاوت مهم وجود داره که قبلاً زیاد بهش فکر نکرده بودم: Theme فقط چیزی نیست که Screenshot ـش قشنگ باشه.
یه Coding Theme قراره ساعتها جلوی چشم آدم باشه. قراره باهاش دنبال Bug بگردی، Function رو از Variable تشخیص بدی، Comment رو ناخودآگاه کنار بذاری، Error رو سریع ببینی و وسط یه فایل چندصد خطی بفهمی ساختار کد کجاست.
یعنی رنگ اینجا فقط Decoration نیست؛ بخشی از Interface بین چشم تو و اطلاعاته.
برای همین شروع کردم به تغییر دادن چیزها. نه بر اساس یه تئوری عجیب Color Science و نه با این ادعا که میدونم «بهترین Palette برای برنامهنویسی» چیه. بیشتر بر اساس چیزی که خودم میدیدم و چیزی که چشم خودم باهاش راحتتر بود.
این باید تیرهتر باشه.
این دوتا باید از هم فاصله بیشتری داشته باشن.
Function رو میخوام سریع تشخیص بدم.
این رنگ روی این Background زیادی گمه.
این یکی بعد از مدتی چشممو اذیت میکنه.
کمکم از دل همین تغییرهای کوچک، چیزی بیرون اومد که وقتی Neovim رو باز میکردم، دیگه احساس نمیکردم دارم با Theme یه نفر دیگه کنار میام.
همهچیز سر جایی بود که من انتظار داشتم باشه.
و همین برای شروع کافی بود.
تستی که اصلاً قرار نبود تست باشه
یه بار بعد از چیزی حدود دوازده، سیزده ساعت کد نوشتن، متوجه یه چیز شدم.
من هنوز از Theme خسته نشده بودم.
این برای من عجیب بود، چون معمولاً بعد از چند ساعت کار مداوم، جدا از خود خستگی، یه جایی حس میکردم دیگه نمیخوام به Editor نگاه کنم. چشمم خسته میشد، رنگها آزاردهندهتر میشدن و ناخودآگاه دلم میخواست از صفحه فاصله بگیرم.
ولی این بار حواسم جمع شد که چنین حسی ندارم.
نمیخوام از این تجربه یه نتیجه پزشکی دربیارم یا بگم Leenium قراره مشکل چشم کسی رو حل کنه؛ چنین ادعایی نه علمیـه و نه چیزی که من بتونم ثابتش کنم. ممکنه بخشی از این تجربه صرفاً به سلیقه خودم، Contrast مورد علاقهم یا هزار عامل دیگه مربوط بوده باشه.
ولی برای خود من یه تأیید مهم بود.
چیزی که ساخته بودم، حداقل برای من کار میکرد.
و دقیقاً همینجا بود که یه سؤال خیلی طبیعی به وجود اومد:
خب، اگه توی Neovim خوبه، چرا فقط Neovim؟
و اینجا اوضاع از کنترل خارج شد
مرحله بعدی VS Code بود.
Palette رو بردم اونجا، Syntax Highlighting رو تنظیم کردم، رنگ Interface رو باهاش هماهنگ کردم و سعی کردم همون چیزی که توی Neovim میدیدم، تا جایی که محیط اجازه میده توی VS Code هم وجود داشته باشه.
بعد یادم افتاد که من فقط از VS Code و Neovim استفاده نمیکنم.
OpenCode چی؟
خب، برای اونم Theme درست کردم.
بعد یه جایی داشتم با Git کار میکردم و احتمالاً همون بخش معیوب مغزم که تا اینجا باعث این داستان شده بود گفت:
«خب... اینم میتونه Leenium باشه.»
بعد رسیدم به Firefox.
بعد Hyprland.
بعد Omarchy.
و فکر کنم دقیقاً وقتی Leenium رو روی محیط Hyprland و Theme خود Omarchy پیاده کردم، دیگه مشخص شد که این پروژه قرار نیست فقط یه Color Scheme برای Code Editor باقی بمونه.
چون حالا وقتی از Editor بیرون میاومدم، Theme تموم نمیشد.
همون زبان بصری هنوز اونجا بود.
اگه قراره همهجا باشه، پس واقعاً همهجا
از یه جایی به بعد شروع کردم به نگاه کردن به نرمافزارهایی که هر روز استفاده میکنم و تقریباً برای تکتکشون یه سؤال داشتم:
«میشه اینم Leenium بشه؟»
جواب، به طرز خطرناکی، بیشتر مواقع «آره» بود.
روی Mail Server سلفهاست خودم CSS رو تغییر دادم تا Interface اون هم با Leenium هماهنگ بشه. بعد رفتم سراغ Jellyfin؛ سرویسی که خودم Host میکنم و طبیعتاً وقتی اختیار CSS ـش دست خودمه، چه دلیلی داشت ظاهرش یه دنیای کاملاً متفاوت باشه؟
بعد Stylus وارد ماجرا شد و اینجا دیگه عملاً در باز شد. وقتی میتونی CSS سایتهایی که هر روز میبینی رو Override کنی، ناگهان Theme دیگه محدود به نرمافزارهایی نیست که رسماً از Theme سفارشی پشتیبانی میکنن.
YouTube میتونه Leenium باشه. ChatGPT میتونه Leenium باشه. Search Engine هایی که استفاده میکنم میتونه Leenium باشه.
سایتهایی که ساعتها داخلشون وقت میگذرونم هم میتونن به همون محیطی تبدیل بشن که بقیه سیستمم هست.
حتی خود Firefox هم فقط به یه CSS شخصی روی سیستم من محدود نموند و Theme ـش رو Publish کردم. چند نفر از دوستام بعداً گفتن نسخه Chrome ـش رو هم بساز، ولی اونجا تقریباً واکنشم این بود:
نه. نه نه نه. همینجا خوبه.
جدا از اینکه برای Developer Account کروم باید پول پرداخت میکردم، من اساساً علاقهای نداشتم برای مرورگری که خودم دوست ندارم وارد اون مسیر بشم. قرار هم نبود Leenium تبدیل بشه به پروژهای که به هر قیمتی باید روی هر Platform ممکن حضور داشته باشه.
اصل ماجرا هنوز همون بود: چیزی که خودم استفاده میکنم.
حتی قبل از Desktop
یه نکته بامزه اینه که این ماجرا در نهایت حتی به جایی رسید که هنوز Desktop کامل بالا نیومده.
Bootloader من Theme لینیوم داره.
Plymouth که هنگام Boot میبینمش، ظاهر Leenium داره.
Omarchy با Leenium بالا میاد.
Hyprland همون زبان بصری رو ادامه میده و بعد Terminal، Editor، Browser و سرویسهایی که داخل Browser باز میکنم دوباره همون دنیا رو ادامه میدن.
یعنی از لحظهای که سیستم رو روشن میکنم تا وقتی وسط یه Function در Neovim هستم یا شب Jellyfin رو باز میکنم، قرار نیست هر بار وارد یه دنیای بصری کاملاً متفاوت بشم.
این موضوع از بیرون شاید کمی وسواسگونه به نظر برسه.
و خب...
احتمالاً هست.
ولی یه دلیل وجود داره که هنوز از انجام دادنش خسته نشدم.
Theme برای من فقط «رنگ» نیست
وقتی یه محیط رو هر روز استفاده میکنی، کمکم یه مدل ذهنی ازش میسازی. بدون اینکه آگاهانه فکر کنی میدونی Error چه شکلیه، Comment کجا گم میشه، Function چطور خودش رو از بقیه جدا میکنه، Border کجاست، Surface از Background چقدر فاصله داره و کدوم قسمت Interface قراره توجهت رو بگیره.
این چیزها بهتنهایی خیلی کوچیکن، ولی وقتی صدها بار در روز باهاشون تعامل داری، دیگه کوچیک نیستن.
به نظرم این همون جاییه که Leenium برای من از یه Theme جدا شد.
من دیگه فقط دنبال این نبودم که «همهچیز یکرنگ باشه». چیزی که برام جذاب شده بود قابل پیشبینی بودن محیط بود.
وقتی یه Application جدید رو Leenium میکنم، هدفم صرفاً این نیست که Background اون هم همون Hex Code بقیه جاها باشه. میخوام وقتی واردش میشم، منطق بصریش برام آشنا باشه. بفهمم چی مهمه، چی Secondary ـه، چی Muted ـه، Border کجاست و کدوم رنگ قرار است توجهم را بگیرد.
یه جور Vocabulary بصری که لازم نیست هر بار از اول یادش بگیرم.
شاید برای همین بهترین تعریفی که الان میتونم برای Leenium پیدا کنم، «Theme» نیست.
Leenium برای من بیشتر شبیه خونهست.
نه به خاطر اینکه همهجاش قشنگه یا فکر میکنم بهترین Color Palette دنیاست. خونه رو هم به این خاطر خونه نمیدونی که بهترین معماری دنیا رو داره.
خونهست چون میشناسیش.
میدونی کلید برق کجاست. توی تاریکی هم میتونی مسیرت رو پیدا کنی. لازم نیست برای برداشتن یه لیوان فکر کنی کابینت کدوم طرفه. چیزها دقیقاً جایی هستن که انتظار داری باشن و همین آشنایی یه بخشی از بار ذهنی رو از دوشت برمیداره.
Leenium هم کمکم برای من همین شد.
وقتی بقیه هم وارد خونه شدن
جالب اینجاست که Leenium از اول برای بقیه ساخته نشده بود، ولی کمکم چند نفر دیگه هم شروع کردن به استفاده ازش.
Theme مربوط به Omarchy رو بعضی از آدمهایی که میشناسم نصب کردن. همین اتفاق برای Plymouth و Limine افتاد. Themeهای VS Code و Neovim رو برای دوستام فرستادم و چند نفرشون گفتن که هنوز دارن ازشون استفاده میکنن.
تعدادشون هم قرار نیست عدد عجیبوغریبی باشه. درباره میلیونها Download حرف نمیزنیم؛ شاید در بعضی قسمتهای این اکوسیستم بیست نفر، شاید کمتر یا بیشتر. راستش حتی نمیدونم همه کسانی که گفتن استفاده میکنن هنوز واقعاً استفاده میکنن یا نه.
ولی همین قسمت برای من جذابه.
چیزی که از یه مشکل کاملاً شخصی شروع شده بود ــ «من با این رنگها راحت نیستم» ــ حالا روی سیستم چند نفر دیگه هم زندگی میکنه.
بدون اینکه از اول قرار بوده Product باشه.
چرا اصلاً اسمش Leenium شد؟
شاید چیزی که بیشتر از همه Leenium رو برای من جالب میکنه همین مسیریه که طی کرده.
اول یه سری رنگ بود برای اینکه Neovim خودم رو قابل تحملتر کنم. بعد تبدیل شد به Theme. بعد یه Palette مشخص پیدا کرد. بعد رفت داخل VS Code و OpenCode. بعد Desktop رو گرفت. بعد Browser رو گرفت. بعد رسید به سرویسهای سلفهاست، سایتها، Bootloader و حتی لحظهای که Linux هنوز کامل بالا نیومده.
و حالا یه صفحه مستقل هم داره که Palette و پیادهسازیهاش اونجا جمع شدن.
ولی هنوز وقتی بهش نگاه میکنم، حس نمیکنم دارم درباره یه «محصول» حرف میزنم.
بیشتر شبیه اینه که طی زمان، محیط دیجیتالیای که هر روز ساعتها داخلش زندگی میکنم رو ذرهذره به شکلی درآوردم که خودم بهتر میفهممش.
شاید این همون چیزیه که همیشه از Linux و Self-hosting و قابل تغییر بودن نرمافزار برام جذاب بوده. اینکه مجبور نیستی همیشه چیزی رو دقیقاً همونطوری که تحویلت دادن قبول کنی. گاهی میتونی یه Config رو تغییر بدی، گاهی CSS رو Override کنی، گاهی یه Plugin بنویسی و بعضی وقتها هم داستان از تغییر رنگ چندتا Function در Neovim شروع میشه و چند وقت بعد میبینی Bootloader ـت هم همون رنگیه.
نه چون لازم بوده.
صرفاً چون میشده.
و شاید همین بهترین توضیح برای کل Leenium باشه.
من یه Theme نساختم چون دنیا به یه Dark Theme دیگه نیاز داشت. دنیا احتمالاً همین الان هم بیشتر از حد لازم Dark Theme داره.
من Leenium رو ساختم چون هر روز ساعتهای زیادی داخل این محیطها زندگی میکنم و دلم میخواست اون محیط، به جای اینکه چیزی باشه که فقط ازش استفاده میکنم، جایی باشه که میشناسمش.
یه جایی که وقتی واردش میشم، لازم نیست دوباره باهاش آشنا بشم.
یه چیزی شبیه خونه.
دیدگاهها
اولین نفری باشید که دیدگاه میگذارد.