جدول المحتويات
DEAI هي أداة لأتمتة سطح مكتب Linux الخاص بك. إنه يحاول فضح الأحداث والواجهات الشائعة لنظام Linux للغات البرمجة النصية ، لتمكين المستخدمين من أتمتة المهام مع البرامج النصية التي تعتمد على الأحداث. قد يكون المثال يغير سطوع الشاشة مع وقت اليوم ، أو تخزين قابلة للإزالة تلقائيًا/غير قابل للإزالة.
مقارنةً باستخدام البرامج النصية Shell ، تعد DEAI أداة واحدة ، بدلاً من مجموعة من الأوامر المختلفة التي أنشأها أشخاص مختلفين ، لذلك فهي أكثر اتساقًا. والتعامل مع الأحداث مع واجهة DEAI أجمل بكثير من قراءة وتجميل إخراج النص من الأوامر.
!!!تحذير!!! DEAI حاليا تحت التنمية الثقيلة. قد تنكسر الأشياء أو قد لا تعمل بشكل صحيح. إذا كنت تفكر في إنشاء مكونات إضافية لـ DEAI ، فيرجى النظر في المساهمة مباشرة في هذا المستودع ، أو الانتظار حتى يكون DEAI مستقرًا. هذا لأنه لم يتم الانتهاء من واجهة برمجة التطبيقات أو ABI من DEAI. تغييرات جديدة على DEAI يمكن أن تكسر الإضافات الخاصة بك.
تم توثيق معظم DEAI هنا
هناك أيضا بعض الأمثلة الواردة هنا. إذا كنت بحاجة إلى مزيد من المعلومات ، يمكنك أن تسألني
udev )dbus )xorg )lua )file )/path/to/deai module.method arguments...يمكن العثور على شرح أكثر تفصيلاً لكيفية عمل وسيطات سطر الأوامر هنا
في الوقت الحالي ، فإن لغة البرمجة النصية المدعومة الوحيدة هي لوا ، وبالتالي فإن الأمثلة ستكون في لوا.
إطلاق البرامج
-- "di" is how you access deai functionality in lua
-- "di.spawn" refers to the "spawn" module
-- "run" is the method that executes program
p = di . spawn : run ({ " ls " , " -lh " })
p : on ( " stdout_line " , function ( line )
print ( " output: " , line )
end )
p : on ( " exit " , function ()
-- This tells deai to exit
di : quit ()
end )ضبط مؤقت
di . event : timer ( 10 ): on ( " elapsed " , function ()
print ( " Time flies! " )
end )تغيير/تعيين متغيرات البيئة
di . os . env [ " PATH " ] = " /usr "مشاهدة تغيير الملف
(انظر هذا للحصول على جميع الإشارات الممكنة)
watcher = di . file : watch ({ " . " })
watcher : on ( " open " , function ( dir , filepath )
print ( dir , filepath )
end )الاتصال بـ Xorg
-- Connect to Xorg is the first step to get X events
xc = di . xorg : connect ()
-- You can also use :connect_to(DISPLAY)تعيين XRDB
-- Assuming you have connected to X
xc . xrdb = " Xft.dpi: t 192 n "x مفاتيح الارتباطات
(انظر هذا لمزيد من المعلومات)
-- Map ctrl-a
xc . key : new ({ " ctrl " }, " a " , true ): on ( " pressed " , function ()
-- do something
end )يتم إخطارها بأجهزة الإدخال الجديدة
xc . xinput : on ( " new-device " , function ( dev )
print ( dev . type , dev . use , dev . name , dev . id )
-- do something about the device
end )تغيير خصائص جهاز الإدخال
(انظر هذا لمزيد من المعلومات)
-- Assuming you get a dev from an "new-device" event
if dev . type == " touchpad " then
-- For property names, see libinput(4)
dev . props [ " libinput Tapping Enabled " ] = { 1 }
end
if dev . name == " <<<Some touchscreen device name here>>> " then
-- Map your touchscreen to an output, if you use multiple
-- monitors, you will understand the problem.
M = compute_transformation_matrix ( touchscreen_output )
dev . props [ " Coordinate Transformation Matrix " ] = M
endالحصول على إخطار عندما يتغير الدقة ، أو عند توصيل شاشة جديدة ، إلخ.
(انظر هذا لمزيد من المعلومات)
-- Note: RandR support is not quite done
xc . randr : on ( " view-change " , function ( v )
-- A "view" is a rectangular section of the X screen
-- Each output (or monitor) is connected to one view
for _ , o in pairs ( v . outputs ) do
-- But each view might be used by multiple outputs
print ( o . name )
end
end )ضبط الإضاءة الخلفية
for _ , o in pairs ( xc . randr . outputs ) do
-- Backlight must be set with an integer, math.floor is required here
o . backlight = math.floor ( o . max_backlight / 2 )
end دعم DBUS: يتم الآن تعرض الكثير من الواجهات عبر DBUS ، مثل uDisks لإدارة التخزين القابل للإزالة ، والارتقاء لإدارة الطاقة. من الواضح أن دعم DBUS أمر لا بد منه.
الصوت: دعم ضبط أحجام ، وما إلى ذلك ، عبر ALSA أو Pulseaudio
الشبكة: دعم أحداث الشبكة والرد عليها. على سبيل المثال ، الاتصال تلقائيًا بـ VPN بعد التبديل إلى شبكة WiFi المفتوحة.
إدارة الطاقة: يتفاعل مع تغييرات حالة إمداد الطاقة ، إلخ.
مكونات واجهة المستخدم: تتيح لك إنشاء أيقونات الدرج والقوائم وما إلى ذلك حتى تتمكن من التفاعل مع DEAI باستخدام واجهة المستخدم الرسومية.
المزيد من اللغات: دعم لغات البرمجة النصية المفضلة لدى الجميع!
وأكثر ... إذا كنت تريد شيئًا ، فما عليك سوى فتح مشكلة.