فكرة: صفحة ويب تأخذ تنسيقها من ملف سمة جنوم3

نشره عبدالرحيم الفاخوري في

 

الفكرة باختصار:

منذ سمعت أول مرة عن انتقال جنوم3 إلى جافاسكربت و css (قبل صدور جنوم3 بزمن)، فكرت في إمكانيّة أن تتفاعل الصفحات مع سطح المكتب أكثر ، وكيف ستتيح هذه التقنية آفاق مستقبلية كثيرة للحوسبة السحابية وكسر الحاجز (المهترئ) بين تطبيقات الويب وتطبيقات سطح المكتب، وكيف يمكن لهذا جنباً إلى جنب مع تقنيات تشغيل تطبيقات gtk3 عبر المتصفح (والتي قرأنا عنها منذ مدّة) أن تحقق ذلك.

 

قمت بعمل فكرة مبسطة جدًّا عنها، وهي صفحة تأخذ ألوانها من ملفات css لسمة جنوم3، وذلك باستدعائها ملفات سمة جنوم3 كسمة للصفحة، بعد التلاعب بهذه السمة لتناسب الصفحة، لتشكّل نموذجاً أوليًّا يعرض إمكانيّة تنفيذ ذلك، وتحويل هذا من أمر نظري (خيال علمي) إلى واقع.
بسّطت الفكرة أكثر ليسهل تطبيقها، ولم أنشرها لأنها ما زالت تفتقر لمثال (نموذج عملي) أعرضه معها؛ فقمت بتبسيطها أكثر إلى أن وصلت إلى:

عمل صفحة ويب بتصميم يطابق تماماً شكل جنوم شل الأساسيّ والعناصر فيها تستخدم classes بنفس أسماء تلك المستخدمة في ملفات css لجنوم 3 لتقليل عدد الترجمات/التحويلات إلى أدنى ما يمكن!

بقي أمر واحد، وهو توفير إضافة وصفحة تقوم بهذا الغرض لأعرضها كمثال عملي أثبت فيه إمكانيّة تطبيق هذا المشروع .... (راجع العنوان الفرعي: "ماذا فعلت؟" في نهاية الموضوع)

تحولت هذه الفكرة إلى حلم ثم إلى هوَس تمكنت مؤخّراً من السيطرة عليه Laughing
 

 

الجانب العملي:

يجب أن نحصل على صفحة يتغير لونها تبعاً للون السمة الخاصة بسطح المكتب دون أدنى تفاعل من المستخدم. يقوم المستخدم بتغيير سمة سطح المكتب إلى اللون الأحمر فيصير لون الصفحة أحمر؛ ثم يقوم بتغييرها للأصفر، فيتغير لون الصفحة للأصفر، وهكذا ...
 

 

تقنيًّا:

أولاً: كيف ستصل الصفحة إلى ملفات السمة في جنوم3؟


لا يمكن للصفحة ولا لجافاسكربت الوصول إلى ملفات على الجهاز، وذلك لأنها تعمل داخل ما يشبه الـsandbox يمنعها من عمل ذلك لأسباب أمنيّة.
ما الحلول البديلة؟

لا يمكن استخدام لغات تعمل جهة الخادم، لأنها لا تستدعي ملفات من عند العميل، بل تتعامل مع الملفات التي على الخادم فقط؛ مما يعني أنها لن تقرأ السمة لدى العميل. يعني ببساطة: php لا تصلح لهذا العمل!

ما الحلّ إذاً؟

نحتاج طريقة للوصول إلى الملفات جهة العميل وإيصالها/محتواها للصفحة وﻷكواد جافاسكربت لتتولى المهمة من هناك؛ لكن كيف؟

الحلّ الأمثل هنا هو استخدام إضافات المتصفّح.


سيأتي شخص ويسأل: هل يمكن لإضافات المتصفح الوصول إلى تلك الملفات؟

الجواب: رأيت إضافات تتيح إنشاء والتعديل على ملفات، بل وعمل أكثر من ذلك بكثير. إضافات التورنت أكبر مثيل على ذلك!


الاستنتاج: يمكننا استخدام إضافة للمتصفح للوصول إلى الملفات، ثم تمرير ما تحصل عليه لكود جافاسكربت داخل الصفحة للاستتفادة منه وتعديله بما ينسب ثم الاعتماد على الناتج النهائي كسمة للصفحة.


ثانياً: تعامل الصفحة مع سمة النظام:

أ. لن تكون الـclasses المستخدمة في الموقع بنفس أسماء الـclasses الموجودة في سطح المكتب، لكن يمكن استخدام هذه لتلك. فمثلاً:
لديك في جنوم شل شريط علوي، ومعظم المواقع تستخدم هكذا أشرطة أيضاً، والأمر نفسه يتعلّق باللون الأساسيّ للخلفيّة ولون الخط ...إلخ.

ماذا إذا احتجنا للون جديد؟ يمكننا إضافته بالاعتماد على كود rgb الذي يشبه هذا #f1bc12 والمستخدم مسبقاً في السمة، ثم التعديل عليه رقميًّا. هذا الكود يعتمد على أرقام ست عشرية، يمكن جمعها وطرحها. ماذا عن إضافة 030303 إلى الرقم السابق لتفتيحه قليلاً؟

 

ب. ماذا إذا كانت أسماء الـclasses مختلفة؟ أو إذا كانت هناك classes بنفس الاسم لها أماكن لا يصلح لها هذا اللون أو أنها مستخدمة لغرض آخر؟
يمكن الالتفاف على هذا بالاعتماد على الإضافة وكود كود جافاسكربت من الموقع أو ملف خاص يخبر الإضافة بالتعامل مع هذا الملف بطريقة معينة.

 

 

الجانب الأمنيّ:

يعني وصول الإضافة للملفات تشكيل تهديد أمني، ويتوجّب إيجاد حلّ لهذا، ويكون الحل كالآتي:

1. نقوم في البداية بجعل الإضافة تقرأ الملفات دون الكتابة عليها (قراءة فقط!) وذلك لمنعها من إنشاء ملفات والتعديل عليها في النظام، وذلك لتفادي وجود مواقع تقوم مستقبلاً باستغلال هذه الإضافة للتعديل على الملفات، وما يتبع ذلك من مخاطر أمنيّة.

2. نحصر عملها في مسارات (أماكن) معيّنة، وهي المسارات الخاصّة بالسمات والمظهر، ونمنعها من الوصول إلى الأماكن الأخرى في الجهاز، كسجلات النظام والتطبيقات الأخرى وملفات الإعداد والملفات الخاصة بالمستخدم.

3. نقوم بتفحّصها عدّة مرّات، وتكرار ذلك دوريًّا وكلما دعت الضرورية للتأكد من خلوها من ثغرات buffer-overflow و remote-code-excution وحتى ثغرات denial-of-service.

 

آفاق مستقبليّة:

أزور عدداً من المواقع كل يوم، وكل واحد منها يستخدم ألوان تختلف عن غيره. التنقل بين هذه الألوان أمر غير مريح.

تخيل وجود مواقع عديدة تعتمد هذه التقنية؟

ستصير عند فتحك إحدى هذه الصفحات تجدها بنفس لون سمة مكتبك، وعند انتقالك لصفحة أخرى من موقع آخر يستخدم هذه التقنية فستجدها بنفس اللون أيضاً.
 

 

آفاق تلي الآفاق:

دمج صفحات الويب بسطح المكتب لتصير جزءً منها، الحوسبة السحابيّة وتطبيقاتها؛ التعامل مع الصفحات العادية كما لو كانت مصممة خصيصاً لبيئتك مهما كانت الواجهة التي تستخدمها ...إلخ
 

 

ماذا فعلت؟


فكرت بتعلم البرمجة وتصميم صفحات الويب وعمل إضافات المتصفح لتنفيذ هذا المشروع، لكني وجدت من الأفضل البحث عن شخص معدّ مسبقاً للقيام بذلك.

قمت بالبحث عن مطوري الويب في مجتمع لينكس العربي، وكذلك عن مطوري تطبيقات سطح المكتب، ووجدت أن أكثر شخص مناسب لهذا هو mahioo-geek الذي اضطر لاحقاً ولأسباب شخصية ما زلت أجهلها أن يتركنا.

كان اتصالي به في فترة قبل تركه العالم الافتراضي بحوالي أسبوعين (وتحديداً في 10 يونيو/حزيران) وذلك عبر المحادثة الفوريّة، وقمت بإطلاعه على الفكرة وشرحته لها، والتقنيات التي أرغب باستخدامها، وسبب اختار هذه التقنيات دون غيرها (الجزء اللازم من المحادثة موجود في الملف النصي في المرفقات). قام لاحقاً بإرسال ملف مضغوط لي يحوي ما كتبه من إضافة وصفحة. لم تتح لي فرصة لأجرّبها قبل انقطاع اتصالي به. قمت بتجربتها لاحقاً، وعلى الرغم من أنها لم تعمل بالشكل المطلوب، إلا أني أبقيت عليها وذلك لأنها قطعت شوطاً لا بأس به في ذلك (تصميم صفحة وإنشاء نموذج أولي للإضافة)، وهاهو الملف المضغوط في المرفقات كما هو.
 

 

ماذا الآن؟

أحتاج شخصاً يقوم بإكمال المشروع والخروج بنموذج عمليّ على تلك التقنيّة، وذلك لعدم قدرتي على ذلك؛ وسأكون في الخدمة في حال الحاجة لأيّة استفسارات أو تطويرات أو تعليقات على الفكرة.

 


المرفقات:

نصّ المحادثة هنا.

الملف المضغوط هنا.