شیل پلگ انز¶
OmarOS ڈیسک ٹاپ omaros-shell نامی ایک ہی طویل المدت Quickshell عمل کے طور پر چلتا ہے، اور اسکرین پر آپ کو تقریباً جو کچھ بھی نظر آتا ہے وہ اس کے اندر ایک پلگ ان ہے۔ بار ایک پلگ ان ہے۔ اس سے گرنے والے پینل، فل اسکرین اوورلیز جیسے ایموجی منتخب کنندہ اور کلپ بورڈ مینیجر، خود OmarOS مینو، لاک اسکرین، پولکٹ ڈائیلاگ، اور بے سر خدمات جو آپ کی بیٹری دیکھتی ہیں اور رات کو آپ کی اسکرین کو گرم کرتی ہیں، بھی وैसे ही ہیں۔
یہ محض نفاذ کی تفصیل نہیں ہے। اس کا मतलब है کہ آپ ڈیسک ٹاپ کے ٹکڑوں کو بند کر سکتے ہیں، انہیں بدل سکتے ہیں، یا OmarOS کے سورس کی ایک بھی سطر کو چھوئے بغیر اپنا بنا سکتے ہیں।
پہلی پارٹی پلگ انز OmarOS کے ساتھ آتی ہیں اور $OMAROS_PATH/shell/plugins/ میں رہتی ہیں। جو کچھ بھی آپ خود شامل کرتے ہیں — آپ کے ذاتی تجربات، یا کوئی ایسی چیز جو آپ کو GitHub پر मिली ہو — وہ ~/.config/omaros/plugins/ میں રહે ہے। دونوں کو آغاز کے وقت اسی طریقے سے دریافت کیا جاتا ہے، لیکن بلٹ ان قابل اعتماد شیل انٹرفیس प्राप्त کرتے ہیں جبکہ تیسری پارٹی پلگ انز کو ان کی ذاتی سروس اور زندگی چکر تک محدود انٹرفیس मिलता ہے। بلٹ ان کے کلون صرف اصل رویے کے لیے درکار ماخذ کے لیے خاص ترتیب اور UI کال رکھتے ہیں।
یہ دیکھنا کہ آپ کے پاس کیا ہے¶
یہ دریافت شدہ ہر پلگ ان کو اس کی آئی ڈی، apakah یہ فعال ہے، آیا یہ پہلی پارٹی ہے یا تیسری پارٹی، اس کی اقسام، اور اس کے ڈسپلے نام کے ساتھ پرنٹ کرتا ہے। اگر آپ اسے کسی اور چیز کو کھلا رہے ہیں تو --json شامل کریں।
پلگ ان آئی ڈی نیم اسپیس رکھتی ہیں। بلٹ ان سب omaros. سے شروع ہوتی ہیں — omaros.clock، omaros.network، omaros.notifications — اور یہ نیم اسپیس محفوظ ہے، لہٰذا تیسری پارٹی پلگ ان کبھی اس کا دعوی نہیں کر سکتی۔
انہیں آن اور آف کرنا¶
یا مینو استعمال کریں: سیٹ اپ > پلگ انز میں فعال کریں، غیر فعال کریں، شامل کریں، کلون کریں، اور ہٹائیں موجود ہیں، ہر ایک منتخب کنندہ کے ساتھ جو صرف وہی پلگ انز پیش کرتا ہے جو اس عمل کے لیے معقول ہیں।
فعال شدہ حالت ~/.config/omaros/shell.json میں ذخیرہ کی جاتی ہے، اور قاعدہ پلگ انز کی دو اقسام کے لیے قدرے مختلف ہے। تیسری پارٹی پلگ ان بالکل اسی وقت فعال ہوتی ہے جب اس کی آئی ڈی اس فائل میں کہیں ظاہر ہو — کسی بار لے آؤٹ اندراج کے طور پر، plugins[] میں اندراج کے طور پر، یا bar.id کے طور پر। پہلی پارٹی پلگ انز جو بار ویجیٹ نہیں ہیں، وہ الٹ طریقے سے ہیں: یہ بطور ڈیفالٹ آن ہوتی ہیں اور صرف disabledPlugins[] میں درج ہونے سے بند ہوتی ہیں।
مکمل بار پلگ ان میں بالکل بھی آف حالت نہیں ہوتی۔ ہمیشہ بالکل ایک بار ہوتی ہے، لہٰذا آپ اسے کسی اور کو فعال کر کے بدلتے ہیں। بار ویجیٹ کی جگہ کا تعین اوپری بار میں بیان کیا گیا ہے।
git سے پلگ ان شامل کرنا¶
تیسری پارٹی پلگ ان صرف ایک git ریپو ہے جس کی جڑ میں manifest.json ہو।
اس سے پہلے کہ یہ کچھ کرے، یہ آپ کو واضح طور پر بتاتا ہے کہ پلگ انز آپ کے طویل المدت شیل عمل کے اندر من مانا، غیر سینڈ باکس شدہ کوڈ کے طور پر چلتی ہیں، آپ کو URL دکھاتا ہے، اور تصدیق طلب کرتا ہے। اسے سنجیدگی سے لیں। تیسری پارٹی پلگ ان انٹرفیس براہِ راست توثیق خدمات کو ظاہر نہیں کرتا، اور تبدیلی بار صرف ترتیب شدہ غیر توثیق UI کے لیے محدود صلاحیتیں प्राप्त کرتی ہے। بصری پلگ انز اب بھی شیل کے QML سین کو شیئر کرتی ہیں اور عام پیرنٹ آبجیکٹس پر قدم بڑھا سکتی ہیں، جبکہ تمام پلگ ان کوڈ اس ہر چیز کے ساتھ چلتا ہے جس تک آپ کا صارف اکاؤنٹ پہنچ سکتا है। توثیق کی حالت ان خدمات کو قابل رسائی ہوسٹ آبجیکٹ تابعداری کے باہر رکھ کر الگ سے محفوظ کی जाती ہے। صرف وہ ریپو شامل کریں جنہیں آپ چلانے پر تیار ہیں، اور انہیں فعال کرنے سے پہلے پڑھیں।
تبدیلی بار انسٹال شدہ ویجیٹ رینڈر کر سکتی ہے، لیکن وہاں سروس کی پشت پر مبنی تیسری پارٹی ویجیٹ کم कार्यक्षमता رکھ سکتے ہیں کیونکہ بار کو کسی دوسرے پلگ ان کی زندہ سروس آبجیکٹ کی درخوااست کرنے کی اجازت نہیں ہے। اگر ایسی ویجیٹ کو اپنی ساتھی سروس کی ضرورت ہو تو بلٹ ان omaros.bar کی طرف واپس جائیں।
پھر یہ ریپو کو اسٹیجنگ ڈائریکٹری میں کلون کرتا ہے، مینیفیسٹ کو توثیق کرتا है، اگر کوئی دوسری پلگ ان پہلے ہی اس آئی ڈی کا دعوی کر چکی ہو تو انسٹال سے انکار کرتا है، اور اسے ~/.config/omaros/plugins/<id>/ میں منتقل کرتا है। --enable کے بغیر یہ پوچھتا ہے کہ کیا آپ ابھی اسے آن چاہتے ہیں، اور آپ نہ کہہ کر پہلے کوڈ پڑھ سکتے ہیں۔ یہ پلگ ان سے کبھی کچھ نہیں چلاتا، کبھی انسٹال ہک نہیں چلاتا، اور کبھی sudo نہیں مانگتا — یہ فائلیں کلون کرتا ہے، مینیفیسٹ جانچتا ہے، اور IPC کے ذریعے ایک بٹ کو الٹ کرتا ہے।
اپ ڈیٹ فی اسی چیک آؤٹ کو تیز آگے پل کرنے کا نام ہے:
بغیر آئی ڈی کے یہ آپ کے پاس موجود ہر git زیر انتظام پلگ ان کو اپ ڈیٹ کرتا ہے। یہ اسے لاگو کرنے سے پہلے آپ کو ڈف دکھاتا ہے، اگر آپ کے پاس مقامی تبدیلیاں ہوں جن کو تیزی سے آگے نہ بڑھایا جا سکے تو اپ ڈیٹ سے انکار کرتا ہے، اور اگر نیا ورژن توثیق میں ناکام ہو جائے تو واپس لوٹتا है।
ہٹانا پہلے پلگ ان کو غیر فعال کرتا ہے، پھر اگر یہ git چیک آؤٹ ہے تو اسے حذف کر دیتا ہے (ریپو اب بھی اپ اسٹریم ہے) یا اگر یہ سم لنک ہے تو اسے ان لنک کر دیتا ہے। git ریپو کے بغیر دست ساختہ پلگ ان فولڈر کو مکمل طور پر حذف کرنے کی بجائے پلگ انز ڈائریکٹری کے اندر وقت مہر شدہ بیک اپ میں منتقل کر دیا جاتا ہے।
بلٹ ان کو ترمیم کرنے کے لیے کلون کرنا¶
یہ میرا پسندیدہ حصہ ہے। اگر آپ بلٹ ان ویجیٹ کے رویے کا طریقہ تبدیل کرنا چاہتے ہیں تو $OMAROS_PATH کے تحت فائلوں میں ترمیم نہ کریں — یہ پیکیج سے تعلق رکھتی ہیں اور اگلا اپ ڈیٹ انہیں مٹا دے گا। اس کی جگہ اسے کلون کریں:
یہ پوری پلگ ان کو ~/.config/omaros/plugins/omar.clock میں کاپی کر देता है (آپ کا صارف نام، میرا نہیں)، اسے "میری گھڑی" کا نام دیتا ہے، اسے فعال کرتا ہے، اور شیل کو بلٹ ان سے آپ کی نقل کی طرف منتقل کر دیتا ہے — موجودہ بار ویجیٹ کی جگہ اور ترتیبات برقرار رکھتے ہوئے। --edit شامل کریں تاکہ نئی ڈائریکٹری فوراً آپ کے $EDITOR میں کھلے، یہی مینو کا سیٹ اپ > پلگ انز > پلگ ان کلون کریں آپ کے لیے کرتا ہے।
صارف نام کا لاحقہ آپ کے کلون کی آئی ڈی کو آپ کی رکھتا ہے، لہٰذا اسے بانٹنے سے کسی اور سے ٹکراؤ نہیں ہوتا। اصل بلٹ ان آئی ڈی پر کی گئی کالز آپ کے کلون کی طرف بھیجی جاتی ہیں، لہٰذا جس بھی چیز نے omaros.clock کا حوالہ دیا ہو اسے اپ ڈیٹ کرنے की आवश्यकता نہیں ہے। اور اگر آپ اس میں गड़बड़ कर लें تو omaros plugin remove omar.clock بلٹ ان کو واپس کر دیتا है।
~/.config/omaros/plugins/ کے تحت کہیں بھی فائل محفوظ کرنے سے پلگ ان کوڈ خودکار طور پر دوبارہ لوڈ ہو جاتا ہے، لہٰذا آپ ایڈیٹر کو کھلا چھوڑ کر اپنی تبدیلیوں کو آتے ہوئے دیکھ سکتے ہیں।
اپنا خود کا لکھنا¶
پلگ ان manifest.json اور کچھ QML والی ڈائریکٹری ہے। مینیفیسٹ schemaVersion: 1، آئی ڈی، name، version، ایک یا زیادہ kinds، اور ہر قسم کے لیے QML فائل کی طرف اشارہ کرتا ہوا entryPoints آبجیکٹ اعلان کرتا ہے:
| قسم | یہ کیا ہے |
|---|---|
bar-widget |
ایک اجزاء جسے فعال بار کسی حصے میں رکھ سکتی ہے |
panel |
پائیدار یا طلب کردہ تیرتی ہوئی ونڈو |
overlay |
فل اسکرین اوورلیز |
menu |
طلب کردہ مینو سطح |
service |
UI کے بغیر بے سر سنگلٹن |
bar |
مکمل بار جو بلٹ ان کی جگہ لیتی ہے |
پلگ ان ایک ہی وقت میں کئی اقسام کا اعلان کر سکتی ہے — میڈیا پلگ ان service بھی ہے اور bar-widget بھی। بار ویجیٹ کو اضافی barWidget بلاک ملتا ہے جس میں ڈسپلے نام، زمرہ، اختیاری defaultSection، اور allowMultiple ہوتا ہے، جو بتاتا है کہ آیا بار پر ایک سے زیادہ رکھنا معقول ہے یا نہیں। زیادہ تر ویجیٹ اسے false پر مقرر کرتے ہیں؛ اسپیسرز اور اشارے اسے true پر مقرر کرتے ہیں।
کچھ بھی شائع کرنے سے پہلے اسے جانچیں:
یہ وہی جانچیں چلاتا ہے جو لوڈ کے وقت شیل کرتا ہے: اسکیما ورژن، مطلوبہ فیلڈز، ایسی آئی ڈی جو محفوظ نہیں، داخلی مقامات جو محفوظ رشتہ راستے ہوں اور اصل میں موجود ہوں، ہر اس قسم کے لیے داخلی مقام جس کا آپ نے دعوی کیا ہو، اور فولڈر کے اندر کہیں بھی سم لنک نہ ہو।
پلگ ان ڈویلپمنٹ کے لیے، شیل حوالہ اور پہلی پارٹی پلگ ان کیٹلاگ دیکھیں।
اپنی تخلیق کو دنیا کے ساتھ بانٹنا¶
جب آپ کوئی ایسی چیز بنا لیں جو آپ کو پسند ہو، تو اسے عوامی git ریپو میں ڈالیں। یہی مکمل تقسیم کا طریقہ کار ہے — پھر کوئی بھی آپ کے URL کے خلاف omaros plugin add چلا کر اسے سیکنڈوں میں چلا سکتا ہے।