كيفية إنشاء سمة تبدو وكأنها وحدة باستخدام API Scripting Desktop Plasma

ربما تكون البلازما واحدة من أكثر بيئات سطح المكتب قابلية للتكوين حولها. مع مطوري Plasma 5 أرادوا جعل التهيئة أسهل وأكثر وضوحًا من أي وقت مضى من خلال تطبيق القاعدة "بسيطة بشكل افتراضي وقوية عند الحاجة". لتحقيق ذلك ، وُلد مفهوم الشكل والمظهر البلازما.

تتيح لك مظاهر الشكل والمظهر في البلازما (L&F) تغيير شكل سطح المكتب الخاص بالبلازما ببضع نقرات. إن أبسط طريقة لإنشاء المظهر والشكل هي استخدام الأداة المساعدة المسماة Look and Feel Explorer ، كما هو موضح في الوثائق الرسمية. يجب عليك أيضا التحقق من هذا الفيديو التعليمي.

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

هيا بنا نبدأ.

باختصار ، تتيح لك البرمجة النصية لسطح المكتب التحكم والتفاعل مع واجهة مستخدم Plasma shell عبر JavaScript مثل API. يمكنك استخدام مربع حوار البرمجة النصية التفاعلية لاختبار البرامج النصية الخاصة بك.

qdbus org.kde.plasmashell / PlasmaShell org.kde.PlasmaShell.showInteractiveConsole

كما تعلم ، يوجد داخل سمة L&F (محتويات / تخطيط) ملف يسمى org.kde.plasma.desktop-layout.js يتحكم في إعداد البلازما الخاص بك. إذا كنت تستخدم Look and Feel Explorer ، فسيتم إنشاء هذا الملف ومحتواه تلقائيًا.

تحتاج أولاً إلى إنشاء بنية حزمة L&F مناسبة مع جميع الملفات التي تحتاجها وحفظها في:

/home/[yourusername]/.local/share/plasma/look-and-feel/

يمكنك استخدام Look and Feel Explorer أو تعديل سمة موجودة مثل United. افتح التالي org.kde.plasma.desktop-layout.js في محرر النصوص المفضل لديك. أنا أستخدم Kate (محرر النصوص الافتراضي في Plasma). في بداية الملف الخاص بك تحتاج إلى إضافة:

فار البلازما = getApiVersion (1)

حسنًا ، فلنقم الآن بإنشاء لوحة بلازما جديدة في الجزء العلوي من الشاشة:

لوحة = بلازما جديدة
panel.location = "top"

أضف خاصية الارتفاع للوحة (gridUnit * 2 هي القيمة الافتراضية المستخدمة في البلازما)

لوحة. الارتفاع = شبكة وحدة * 2

بمجرد أن يكون لديك لوحة لامعة جديدة يمكنك إضافة بعض الحاجيات.

للحصول على قائمة عناصر واجهة المستخدم المثبتة محليًا (على سبيل المثال من متجر KDE) ، قم بما يلي:

kpackagetool5 - قائمة - نوع البلازما / بريمج

للحصول على قائمة بجميع الأدوات المصغّرة المثبتة (على مستوى النظام):

kpackagetool5 - قائمة - نوع البلازما / بريمج - العالمية

بمجرد أن يكون لديك قائمة من الأدوات المصغّرة المثبتة ، يمكنك استخدام طريقة panel.addWidget لإضافتها إلى اللوحة العليا.

panel.addWidget ( "org.kde.plasma.appmenu")
panel.addWidget ( "org.kde.plasma.panelspacer")
panel.addWidget ( "org.kde.plasma.systemtray")
panel.addWidget ( "org.kde.plasma.digitalclock")

وهنا النتيجة:

تحتاج إلى إضافة فاصل آخر على الجانب الأيسر من appmenu (وإلا سيتداخل appmenu مع اللوحة اليمنى). أنت بحاجة أيضًا إلى برنامج صغير لمحوّل المستخدم على الجانب الأيمن من الساعة الرقمية. لنبدأ مع الفاصل:

var spacer = panel.addWidget ("org.kde.plasma.panelspacer")

الآن لدينا قائمة عالمية تقع في وسط لوحة. وذلك لأن الفاصل الافتراضي يشغل كل المساحة المتاحة في لوحة. تحتاج إلى تغيير ذلك عن طريق تعيين قيمة التوسيع إلى false. يمكنك استخدام الخاصية currentConfigGroup وطريقة WriteConfig لتعديل ملف التكوين.

/home/.config/plasma-org.kde.plasma.desktop-appletsrc.

var spacer = panel.addWidget ("org.kde.plasma.panelspacer")
spacer.currentConfigGroup = ["التكوين" ، "عام"]
spacer.writeConfig ("التوسعة" ، خطأ)

بعد ذلك ، ستقوم بإضافة USwitch (https://store.kde.org/p/1194339/) ، التطبيق الصغير لمحوّل المستخدم الذي يشبه الوحدة ، من متجر KDE.

تحتاج إلى إضافته كتبعية لموضوع L&F الخاص بك. إذا كنت تريد معرفة كيفية القيام بذلك ، تحقق من هذا البرنامج التعليمي. بمجرد إضافتها إلى اللوحة ، تعرض USwitch اسم المستخدم الكامل افتراضيًا. ومع ذلك ، نريد أن نظهر رمزًا ، تمامًا كما في Unity. والخبر السار هو أن USwitch يقدم مثل هذا الخيار: تحتاج فقط إلى تغييره باستخدام البرمجة النصية لسطح المكتب البلازما. بينما يتم توثيق معظم الإعدادات (مفاتيح التكوين) التي تقدمها الأدوات الذكية ، إلا أن هذا ليس هو الحال مع تطبيقات الواجهة الخارجية. إن أبسط طريقة للحصول على هذه المعلومات هي فتح plasma-org.kde.plasma.desktop-appletsrc في كيت ، انتقل إلى إعدادات USwitcher وتغييرها إلى أيقونة إظهار فقط. أغلق إعدادات النافذة وستحصل على شيء مثل هذا

انقر فوق عرض الفرق لرؤية مفاتيح التكوين التي تم تغييرها.

var uswitcher = panel.addWidget ("org.kde.plasma.uswitcher")
uswitcher.currentConfigGroup = ["التكوين" ، "عام"]
uswitcher.writeConfig ("showName" ، خطأ)
uswitcher.writeConfig ("showSett" ، صحيح)

الآن يجب أن يبدو org.kde.plasma.desktop-layout.js كما يلي:

فار البلازما = getApiVersion (1)
/ / إنشاء لوحة أعلى
لوحة = بلازما جديدة
panel.location = "top"
لوحة. الارتفاع = شبكة وحدة * 2
/ / أضف الحاجيات إلى اللوحة العلوية
var spacer = panel.addWidget ("org.kde.plasma.panelspacer")
// اجعل الفاصل الأول غير قابل للتوسيع بشكل افتراضي
spacer.currentConfigGroup = ["التكوين" ، "عام"]
spacer.writeConfig ("التوسعة" ، خطأ)
// Appmenu
panel.addWidget ( "org.kde.plasma.appmenu")
// فاصل
panel.addWidget ( "org.kde.plasma.panelspacer")
// علبة النظام
panel.addWidget ( "org.kde.plasma.systemtray")
// ساعة حائط
panel.addWidget ( "org.kde.plasma.digitalclock")
// USwitch https://store.kde.org/p/1194339/
var uswitcher = panel.addWidget ("org.kde.plasma.uswitcher")
uswitcher.currentConfigGroup = ["التكوين" ، "عام"]
uswitcher.writeConfig ("showName" ، خطأ)
uswitcher.writeConfig ("showSett" ، صحيح)

لنقم بإنشاء اللوحة اليمنى ...

فار leftpanel = بلازما جديدة
leftpanel.location = "يسار"
leftpanel.height = gridUnit * 3.2

... وإضافة قاذفة ملء الشاشة والاختصار الافتراضي:

var menu = leftpanel.addWidget ("org.kde.plasma.kickerdash")
menu.currentConfigGroup = ["اختصارات"]
menu.writeConfig ("عام" ، "Alt + F1")

يمكنك الآن إضافة مدير مهام يستند إلى الرموز:

leftpanel.addWidget ( "org.kde.plasma.icontasks")

أضف عنصر واجهة مستخدم Windows Button الحالي من KDE Store (https://store.kde.org/p/1181039/) وقم بتغيير إعداداته لإظهار شبكة سطح المكتب افتراضيًا:

var windows = leftpanel.addWidget ("com.github.zren.presentwindows")
windows.currentConfigGroup = ["التكوين" ، "عام"]
windows.writeConfig ( "clickCommand"، "ShowDesktopGrid")

أضف سلة المهملات:

leftpanel.addWidget ( "org.kde.plasma.trash")

أنت موجود تقريبًا وتحتاج فقط إلى إصلاح اللوحات المتداخلة ...

leftpanel.offset = panel.height

... وأزل صندوق أدوات سطح المكتب

var activityId = activityIds [0]
فار النشاط = desktopById (activityId)
activity.currentConfigGroup = ["عام"]
activity.writeConfig ("showToolbox" ، خطأ)

يجب أن تبدو صفحة org.kde.plasma.desktop-layout.js النهائية كما يلي:

فار البلازما = getApiVersion (1)
var activityId = activityIds [0]
فار النشاط = desktopById (activityId)
/ / إزالة أدوات سطح المكتب
activity.currentConfigGroup = ["عام"]
activity.writeConfig ("showToolbox" ، خطأ)
// إنشاء اللوحة العلوية
لوحة = بلازما جديدة
panel.location = "top"
panel.alignment = "اليسار"
لوحة. الارتفاع = شبكة وحدة * 2
/ / أضف الحاجيات إلى اللوحة العلوية
var spacer = panel.addWidget ("org.kde.plasma.panelspacer")
/ / اجعل الفاصل الأول غير قابل للتوسيع بشكل افتراضي
spacer.currentConfigGroup = ["التكوين" ، "عام"]
spacer.writeConfig ("التوسعة" ، خطأ)
// Kickerdash
panel.addWidget ( "org.kde.plasma.appmenu")
// فاصل
panel.addWidget ( "org.kde.plasma.panelspacer")
//علبة النظام
panel.addWidget ( "org.kde.plasma.systemtray")
//ساعة حائط
panel.addWidget ( "org.kde.plasma.digitalclock")
// USwitch https://store.kde.org/p/1194339/
var uswitcher = panel.addWidget ("org.kde.plasma.uswitcher")
uswitcher.currentConfigGroup = ["التكوين" ، "عام"]
uswitcher.writeConfig ("showName" ، خطأ)
uswitcher.writeConfig ("showSett" ، صحيح)
// إنشاء اللوحة اليسرى
 
فار leftpanel = بلازما جديدة
leftpanel.location = "يسار"
leftpanel.height = gridUnit * 3.2
leftpanel.offset = panel.height
/ / أضف الحاجيات إلى اللوحة اليمنى
var menu = leftpanel.addWidget ("org.kde.plasma.kickerdash")
/ / أضف الاختصار الافتراضي إلى قائمة kickerdash
menu.currentConfigGroup = ["اختصارات"]
menu.writeConfig ("عام" ، "Alt + F1")
// Icontasks
leftpanel.addWidget ( "org.kde.plasma.icontasks")
// الحاضر زر ويندوز https://store.kde.org/p/1181039/
var windows = leftpanel.addWidget ("com.github.zren.presentwindows")
// تبديل شبكة سطح المكتب
windows.currentConfigGroup = ["التكوين" ، "عام"]
windows.writeConfig ( "clickCommand"، "ShowDesktopGrid")
//قمامة، يدمر، يهدم
leftpanel.addWidget ( "org.kde.plasma.trash")

لا تزال أنت هناك؟ آمل أنك لم تشعر بالملل أكثر من اللازم ؛)

ومع ذلك ، إذا كنت تريد كل العمل المنجز من أجلك ، يمكنك تنزيل United من متجر KDE أو من GitHub. أضفت أيضًا وثائق إلى ويكي كيدي الرسمية.

يستخدم هذا الموضوع أيضًا:

-اللون مخطط (أجواء) الذي أدلى به تشيتشوفو
https://store.kde.org/p/1001434/

موضوع البلازما (الوحدة الجوية) الذي أدلى به DARKBEASTOFPREY
https://store.kde.org/p/998797

- بلازمويد
زر ويندوز الحالي الذي أدلى به ZREN
https://store.kde.org/p/1181039/

USwitch بواسطة DIVINAE
https://store.kde.org/p/1194339/