Table des matières
Deai est un outil pour automatiser votre bureau Linux. Il essaie d'exposer des événements communs et des interfaces d'un système Linux aux langages de script, pour permettre aux utilisateurs d'automatiser les tâches avec des scripts pilotés par des événements. L'exemple pourrait modifier la luminosité de l'écran avec l'heure de la journée, ou un stockage amovible de montage / ininstruction automatique.
Contrairement à l'utilisation de scripts shell, Deai est un seul outil, plutôt qu'une collection de commandes différentes créées par différentes personnes, donc c'est plus cohérent. Et la gestion des événements avec l'interface de Deai est beaucoup plus agréable que la lecture et l'analyse de la sortie de texte des commandes.
!!!Avertissement!!! Deai est actuellement en cours de développement intense. Les choses peuvent se casser ou ne pas fonctionner correctement. Si vous songez à créer des plugins pour Deai, veuillez envisager de contribuer directement à ce référentiel ou attendre que Deai soit stable. En effet, ni l'API ni l'ABI de Deai n'ont été finalisés. De nouvelles modifications à Deai pourraient briser vos plugins.
La plupart de Deai est documenté ici
Il y a aussi quelques exemples donnés ici. Si vous avez besoin de plus d'informations, vous pouvez me demander
udev )dbus )xorg )lua )file )/path/to/deai module.method arguments...Une explication plus détaillée de la façon dont les arguments de ligne de commande fonctionnent peuvent être trouvés ici
À l'heure actuelle, le seul langage de script pris en charge est Lua, donc les exemples seront donnés dans Lua.
Programmes de lancement
-- "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 )Régler la minuterie
di . event : timer ( 10 ): on ( " elapsed " , function ()
print ( " Time flies! " )
end )Modifier / définir les variables d'environnement
di . os . env [ " PATH " ] = " /usr "Regarder les modifications du fichier
(Voir ceci pour tous les signaux possibles)
watcher = di . file : watch ({ " . " })
watcher : on ( " open " , function ( dir , filepath )
print ( dir , filepath )
end )Connectez-vous à Xorg
-- Connect to Xorg is the first step to get X events
xc = di . xorg : connect ()
-- You can also use :connect_to(DISPLAY)Définir XRDB
-- Assuming you have connected to X
xc . xrdb = " Xft.dpi: t 192 n "X liaisons clés
(Voir ceci pour plus d'informations)
-- Map ctrl-a
xc . key : new ({ " ctrl " }, " a " , true ): on ( " pressed " , function ()
-- do something
end )Être informé des nouveaux dispositifs d'entrée
xc . xinput : on ( " new-device " , function ( dev )
print ( dev . type , dev . use , dev . name , dev . id )
-- do something about the device
end )Modifier les propriétés du périphérique d'entrée
(Voir ceci pour plus d'informations)
-- 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
endSoyez averti lorsque la résolution change ou lorsque le nouveau moniteur est connecté, etc.
(Voir ceci pour plus d'informations)
-- 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 )Ajuster le rétroéclairage
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 Prise en charge des DBU: de nombreuses interfaces sont désormais exposées via DBU, telles que les UDISK pour gérer le stockage amovible, en haut pour la gestion de l'alimentation. Donc, évidemment, le support DBUS est un must.
Audio: support ajuster les volumes, etc., via Alsa ou Pulseaudio
Réseau: Prise en charge des événements réseau et réagissez-y. Par exemple, connectez-vous automatiquement à VPN après le passage à un WiFi ouvert.
Gestion de l'alimentation: réagit aux modifications des conditions d'alimentation, etc.
Composants de l'interface utilisateur: vous permet de créer des icônes de plateau, des menus, etc. afin que vous puissiez interagir avec DEAI à l'aide d'une GUI.
Plus de langues: Soutenez les langues de script préférées de tout le monde!
Et plus ... si vous voulez quelque chose, ouvrez simplement un problème.