Inhaltsverzeichnis
DEAI ist ein Werkzeug, um Ihren Linux -Desktop zu automatisieren. Es versucht gemeinsame Ereignisse und Schnittstellen eines Linux-Systems in Scripting-Sprachen auszusetzen, damit Benutzer Aufgaben mit ereignisgesteuerten Skripten automatisieren können. Beispiel könnte darin bestehen, die Bildschirmhelligkeit mit Tageszeit zu ändern oder automatisch ein abnehmbares Speicher zu steigern.
Im Gegensatz zur Verwendung von Shell -Skripten ist DEAI eher ein einzelnes Tool als eine Sammlung verschiedener Befehle, die von verschiedenen Personen erstellt wurden. Es ist also konsistenter. Die Handhabung von Ereignissen mit DEAIs Oberfläche ist viel schöner als das Lesen und Parsen von Textausgaben von Befehlen.
!!!Warnung!!! DEAI befindet sich derzeit unter starker Entwicklung. Die Dinge können brechen oder funktionieren möglicherweise nicht richtig. Wenn Sie über das Erstellen von Plugins für DEAI nachdenken, sollten Sie einen direkten Beitrag zu diesem Repository in Betracht ziehen, oder warten Sie, bis die DEAI stabil ist. Dies liegt daran, dass weder die API noch die Abi von DEAI abgeschlossen wurden. Neue Änderungen an DEAI könnten Ihre Plugins brechen.
Der größte Teil von DEAI ist hier dokumentiert
Hier sind auch einige Beispiele angegeben. Wenn Sie weitere Informationen benötigen, können Sie mich fragen
udev -Plugin)dbus Plugin)xorg -Plugin)lua -Plugin)file -Plugin)/path/to/deai module.method arguments...Eine detailliertere Erklärung, wie die Befehlszeilenargumente funktioniert
Derzeit ist Lua die einzige unterstützte Skriptsprache, sodass die Beispiele in Lua geben werden.
Startprogramme
-- "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 )Timer einstellen
di . event : timer ( 10 ): on ( " elapsed " , function ()
print ( " Time flies! " )
end )Umgebungsvariablen ändern/festlegen
di . os . env [ " PATH " ] = " /usr "Beobachten Sie Dateienänderungen
(Sehen Sie dies für alle möglichen Signale)
watcher = di . file : watch ({ " . " })
watcher : on ( " open " , function ( dir , filepath )
print ( dir , filepath )
end )Verbindung zu Xorg herstellen
-- Connect to Xorg is the first step to get X events
xc = di . xorg : connect ()
-- You can also use :connect_to(DISPLAY)Setzen Sie XRDB
-- Assuming you have connected to X
xc . xrdb = " Xft.dpi: t 192 n "X Schlüsselbindungen
(Weitere Informationen finden Sie in diesem)
-- Map ctrl-a
xc . key : new ({ " ctrl " }, " a " , true ): on ( " pressed " , function ()
-- do something
end )Lassen Sie sich für neue Eingabegeräte benachrichtigen
xc . xinput : on ( " new-device " , function ( dev )
print ( dev . type , dev . use , dev . name , dev . id )
-- do something about the device
end )Eingabegeräteeigenschaften ändern
(Weitere Informationen finden Sie in diesem)
-- 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
endAchten Sie bei der Änderung der Auflösung oder wenn der neue Monitor angeschlossen ist, usw.
(Weitere Informationen finden Sie in diesem)
-- 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 )Hintergrundbeleuchtung einstellen
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 -Unterstützung: Viele der Schnittstellen werden jetzt über DBUs ausgesetzt, z . DBUS -Unterstützung ist also offensichtlich ein Muss.
Audio: Support -Einstellvolumina usw. über ALSA oder Pulsaudio
Netzwerk: Unterstützung für Netzwerkveranstaltungen und reagieren Sie auf sie. Stellen Sie beispielsweise nach dem Umschalten auf ein offenes WLAN automatisch eine Verbindung zu VPN her.
Stromverwaltung: Reagiert auf Änderungen der Stromversorgungszustände usw.
UI -Komponenten: Ermöglicht Ihnen die Erstellung von Tablettsymbolen, Menüs usw., damit Sie mit einer GUI mit DEAI interagieren können.
Weitere Sprachen: Unterstützen Sie die Lieblingssprachen aller beliebtesten Skriptsprachen!
Und mehr ... wenn Sie etwas wollen, öffnen Sie einfach ein Problem.