انتقل إلى المحتوى

إنشاء سمتك الخاصة

يمكنك إضافة سماتك الخاصة إلى ~/.config/omaros/themes. ما عليك سوى نسخ إحدى السمات الموجودة كأساس (انظر في /usr/share/omaros/themes)، ثم عدّلها بما يسرّك. طالما أن سمتك داخل ذلك المجلد، فستُضمّن في قائمة اختيار السمة.

الملف الرئيسي الذي يجب تعديله هو colors.toml. يعرّف هذا مجموعة الألوان التي تُستخدم بعد ذلك لإنشاء تكوينات للطرفية (Foot/Alacritty/Ghostty/Kitty) وbtop وChromium وHyprland وNeovim وHelix وVSCode وObsidian، وقشرة OmarOS بأكملها (الشريط العلوي والقائمة والإشعارات وOSD وشاشة القفل).

يمكنك أيضًا استخدام تطبيق Aether المضمّن لإنشاء سمة جديدة باستخدام واجهة رسومية جميلة للعب بالألوان والبحث عن الخلفيات. ما عليك سوى بدئه من شبكة التطبيقات على Super + Alt + Space.

ما يمكن أن تحتويه سمة مثبّتة

يمكن أن تحتوي السمة التي تكتبها بنفسك في ~/.config/omaros/themes على كل ما تريد — إنه جهازك وملفك، ويطبّق OmarOS كل ذلك.

تحتفظ السمة التي تثبّتها من مستودع شخص آخر باستخدام omaros theme install بكل ما هو لون، وتفقد الملفات القليلة التي ستشغّل كودًا على جهازك: أي ملف .lua، وتكوينات الطرفية (alacritty.toml وfoot.ini وghostty.conf وkitty.conf)، وvscode.json. إن hyprland.lua في السمة هو Lua يشغّله مركّبك عند تسجيل الدخول، ويُسمّي تكوين الطرفية البرنامج الذي تبدأه طرفيتك، ويُسمّي vscode.json ملحق VSCode لتثبيته. يجب أن يغيّر تثبيت سمة شخص ما مظهر سطح المكتب الخاص بك، لا ما يشغّله أبدًا.

كل شيء آخر لا يزال يعمل تمامًا كما كتبه مؤلف السمة — btop.theme وchromium.theme وhelix.toml وicons.theme وshell.toml، والخلفيات والمعاينات كلها محفوظة. فقط ما أُسقط يُعاد إنشاؤه من colors.toml على جهازك.

يميز OmarOS بين الاثنين من خلال ما إذا كانت السمة لديها مستودع git الخاص بها بداخلها، وهو ما يتركه omaros theme install عندما يستنسخ. لذا تظل السمة التي كتبتها ملكك، والسمة التي سحبتها من الإنترنت تظل ألوانًا.

الوضع الفاتح

إذا كنت تصنع سمة وضع فاتح، فعيّن mode = "light" في أعلى ملف colors.toml الخاص بك. ثم سيُقرن تلقائيًا بالوضع الفاتح لجميع التطبيقات. (الطريقة القديمة المتمثلة في إسقاط ملف فارغ يسمى light.mode في جذر سمتك لا تزال تعمل أيضًا.)

ألوان الأيقونات

إذا كنت ترغب في مطابقة ألوان أيقونات مدير الملفات مع سمتك، فأضف ملفًا يسمى icons.theme مع اسم مجموعة الأيقونات التي تريد استخدامها. افتراضيًا، الخيارات هي: Yaru Yaru-blue Yaru-dark Yaru-magenta Yaru-olive Yaru-prussiangreen Yaru-purple Yaru-red Yaru-sage Yaru-wartybrown Yaru-yellow.

صورة فتح القفل

ستُدرج السمات المزوّدة بصور unlock.png وpreview-unlock.png تحت النمط > فتح القفل. يجب أن يكون unlock.png الخاص بك يُفضّل أن يكون png شفافًا. ويمكنك إنشاء صورة المعاينة باستخدام omaros plymouth preview.

تسمية التطبيقات التي لا يغطيها OmarOS

إذا كنت تستخدم تطبيقًا غير موجود في تلك القائمة، يمكنك تعليم OmarOS تسميته بنفسك بقالب. ضع ملفًا في ~/.config/omaros/themed/ مسمى باسم التكوين الذي يولّده بالإضافة إلى امتداد .tpl، واكتب التكوين مع {{ background }} و{{ foreground }} و{{ accent }} و{{ red }} و{{ color0 }} حتى {{ color15 }}، وبقية لوحة الألوان كعناصر نائبة. في كل مرة تبدّل فيها السمات، يُعاد إنشاء الملف بألوان تلك السمة.

يوجد alacritty.toml.tpl.sample معلّق بالكامل في ذلك المجلد للنسخ منه — فهو يسرد كل متغير يمكنك استخدامه، بالإضافة إلى المعدّلات _strip و_rgb للتطبيقات التي تريد ألوانها من دون # أو كـ RGB عشري. تأخذ قوالبك الأولوية على قوالب OmarOS الخاصة، لذا يمكنك أيضًا استخدام هذا لتجاوز كيفية تسمية تطبيق مدمج.

توزيع سمتك

إذا كنت تريد توزيع سمتك حتى يتمكن الآخرون من استخدامها، فعليك وضعها على خادم git عام، مثل GitHub. ثم يمكن للأشخاص تثبيتها باستخدام تثبيت > النمط > السمة في قائمة OmarOS باستخدام ذلك URL. يُوصى بأن تتبع اصطلاح التسمية omaros-[themename]-theme، لأن السمة ستظهر بشكل صحيح على هيئة [themename] فقط في قائمة اختيار السمة بعد التثبيت.

يصبح [themename] المتبقي هذا اسم دليل السمة، لذا يجب أن يكون اسمًا يمكن لـ OmarOS تداوله بأمان: يجب أن يبدأ بحرف أو رقم أو شرطة سفلية، ويمكن أن يحتوي الباقي على حروف وأرقام و. و_ و+ و-. تُحوّل الأحرف الكبيرة إلى صغيرة لك، لكن أي شيء آخر — مسافة أو علامة اقتباس أو حرف غير إنجليزي — يُرفض في وقت التثبيت بدلًا من تحويله إلى اسم دليل. لذا فإن omaros-tokyo-night-theme وomaros-flexoki_light-theme وomaros-c++-theme كلها تُثبّت بشكل جيد.

تذكّر أنه بمجرد تثبيته من مستودع، يُسقط أي .lua أو تكوين طرفية أو vscode.json يشحنه، لذا لا تبنِ السمة حول تلك.