Daftar isi
DEAI adalah alat untuk mengotomatisasi desktop Linux Anda. Ia mencoba untuk mengekspos peristiwa umum dan antarmuka sistem Linux untuk menulis bahasa, untuk memungkinkan pengguna mengotomatisasi tugas dengan skrip yang digerakkan oleh peristiwa. Contohnya dapat mengubah kecerahan layar dengan waktu-hari, atau secara otomatis memasang/tidak menghitung penyimpanan yang dapat dilepas.
Dibandingkan tidak seperti menggunakan skrip shell, DEAI adalah alat tunggal, bukan kumpulan perintah berbeda yang dibuat oleh orang yang berbeda, sehingga lebih konsisten. Dan menangani acara dengan antarmuka DEAI jauh lebih baik daripada membaca dan mengurai output teks dari perintah.
!!!Peringatan!!! DEAI saat ini sedang dalam pengembangan berat. Hal -hal mungkin rusak atau mungkin tidak berfungsi dengan benar. Jika Anda berpikir untuk membuat plugin untuk DEAI, silakan pertimbangkan berkontribusi langsung ke repositori ini, atau tunggu sampai DEAI stabil. Ini karena API maupun ABI DEAI tidak diselesaikan. Perubahan baru pada DEAI dapat merusak plugin Anda.
Sebagian besar deai didokumentasikan di sini
Ada juga beberapa contoh yang diberikan di sini. Jika Anda membutuhkan informasi lebih lanjut, Anda dapat bertanya kepada saya
udev )dbus )xorg )lua )file )/path/to/deai module.method arguments...Penjelasan yang lebih rinci tentang cara kerja argumen baris perintah dapat ditemukan di sini
Saat ini satu -satunya bahasa skrip yang didukung adalah Lua, jadi contohnya akan diberikan di Lua.
Meluncurkan program
-- "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 )Atur timer
di . event : timer ( 10 ): on ( " elapsed " , function ()
print ( " Time flies! " )
end )Ubah/mengatur variabel lingkungan
di . os . env [ " PATH " ] = " /usr "Tonton Perubahan File
(Lihat ini untuk semua sinyal yang mungkin)
watcher = di . file : watch ({ " . " })
watcher : on ( " open " , function ( dir , filepath )
print ( dir , filepath )
end )Terhubung ke xorg
-- Connect to Xorg is the first step to get X events
xc = di . xorg : connect ()
-- You can also use :connect_to(DISPLAY)Atur XRDB
-- Assuming you have connected to X
xc . xrdb = " Xft.dpi: t 192 n "X Binding Kunci
(Lihat ini untuk informasi lebih lanjut)
-- Map ctrl-a
xc . key : new ({ " ctrl " }, " a " , true ): on ( " pressed " , function ()
-- do something
end )Dapatkan diberitahu untuk perangkat input baru
xc . xinput : on ( " new-device " , function ( dev )
print ( dev . type , dev . use , dev . name , dev . id )
-- do something about the device
end )Ubah Properti Perangkat Input
(Lihat ini untuk informasi lebih lanjut)
-- 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
endDapatkan pemberitahuan ketika resolusi berubah, atau ketika monitor baru terhubung, dll.
(Lihat ini untuk informasi lebih lanjut)
-- 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 )Sesuaikan lampu latar
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 Dukungan DBUS: Banyak antarmuka sekarang diekspos melalui DBUS, seperti UDisks untuk mengelola penyimpanan yang dapat dilepas, Upower untuk manajemen daya. Jadi jelas dukungan DBUS adalah suatu keharusan.
Audio: Dukungan Volume Sesuaikan, dll., Melalui ALSA atau Pulseaudio
Jaringan: Dukungan untuk acara jaringan dan bereaksi terhadapnya. Misalnya, secara otomatis terhubung ke VPN setelah beralih ke wifi terbuka.
Manajemen Daya: Bereaksi terhadap perubahan kondisi catu daya, dll.
Komponen UI: Memungkinkan Anda membuat ikon baki, menu, dll. Jadi Anda dapat berinteraksi dengan DEAI menggunakan GUI.
Lebih Banyak Bahasa: Dukung Bahasa Scripting Favorit Semua Orang!
Dan lebih banyak ... jika Anda menginginkan sesuatu, cukup buka masalah.