สารบัญ
DEAI เป็นเครื่องมือในการทำให้เดสก์ท็อป Linux ของคุณเป็นไปโดยอัตโนมัติ มันพยายามที่จะเปิดเผยเหตุการณ์ทั่วไปและอินเทอร์เฟซของระบบ Linux ไปยังภาษาสคริปต์เพื่อให้ผู้ใช้สามารถทำงานอัตโนมัติด้วยสคริปต์ที่ขับเคลื่อนด้วยเหตุการณ์ ตัวอย่างอาจเปลี่ยนความสว่างของหน้าจอด้วยเวลาของวันหรือการติดตั้งที่เก็บข้อมูลที่ถอดออกได้โดยอัตโนมัติ
เมื่อเปรียบเทียบกับการใช้สคริปต์เชลล์ DEAI เป็นเครื่องมือเดียวแทนที่จะเป็นคอลเลกชันของคำสั่งต่าง ๆ ที่สร้างขึ้นโดยคนที่แตกต่างกันดังนั้นจึงสอดคล้องกันมากขึ้น และการจัดการกิจกรรมด้วยอินเทอร์เฟซของ DEAI นั้นดีกว่าการอ่านและแยกวิเคราะห์เอาต์พุตข้อความจากคำสั่ง
!!!คำเตือน!!! DEAI กำลังอยู่ระหว่างการพัฒนาอย่างหนัก สิ่งต่าง ๆ อาจแตกหักหรืออาจใช้งานไม่ถูกต้อง หากคุณกำลังคิดเกี่ยวกับการสร้างปลั๊กอินสำหรับ DEAI โปรดพิจารณาสนับสนุนที่เก็บโดยตรงนี้หรือรอจนกว่า DEAI จะมีเสถียรภาพ นี่เป็นเพราะทั้ง API และ ABI ของ DEAI ได้รับการสรุป การเปลี่ยนแปลงใหม่ของ DEAI สามารถทำลายปลั๊กอินของคุณได้
DEAI ส่วนใหญ่มีการบันทึกไว้ที่นี่
นอกจากนี้ยังมีตัวอย่างบางส่วนที่ให้ไว้ที่นี่ หากคุณต้องการข้อมูลเพิ่มเติมคุณสามารถถามฉันได้
udev )dbus )xorg )lua )file )/path/to/deai module.method arguments...คำอธิบายโดยละเอียดเพิ่มเติมเกี่ยวกับวิธีการทำงานของบรรทัดคำสั่งการทำงานที่นี่
ตอนนี้ภาษาสคริปต์ที่รองรับเพียงอย่างเดียวคือ Lua ดังนั้นตัวอย่างจะให้ใน Lua
เปิดตัวโปรแกรม
-- "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 เช่น เต้านม เพื่อจัดการที่เก็บข้อมูลที่ถอดออกได้, Upower สำหรับการจัดการพลังงาน เห็นได้ชัดว่าการสนับสนุน DBUS เป็นสิ่งที่ต้องมี
เสียง: รองรับการปรับระดับปริมาตร ฯลฯ ผ่าน Alsa หรือ Pulseaudio
เครือข่าย: สนับสนุนกิจกรรมเครือข่ายและตอบสนองต่อพวกเขา ตัวอย่างเช่นเชื่อมต่อกับ VPN โดยอัตโนมัติหลังจากเปลี่ยนไปใช้ WiFi แบบเปิด
การจัดการพลังงาน: ตอบสนองต่อการเปลี่ยนแปลงสภาพแหล่งจ่ายไฟ ฯลฯ
ส่วนประกอบ UI: ช่วยให้คุณสร้างไอคอนถาดเมนู ฯลฯ เพื่อให้คุณสามารถโต้ตอบกับ DEAI โดยใช้ GUI
ภาษาเพิ่มเติม: สนับสนุนภาษาสคริปต์ที่ชื่นชอบของทุกคน!
และอีกมากมาย ... ถ้าคุณต้องการบางสิ่งเพียงแค่เปิดปัญหา