Tabla de contenido
DeAI es una herramienta para automatizar su escritorio de Linux. Intenta exponer eventos e interfaces comunes de un sistema Linux para secuencias de comandos, para permitir a los usuarios automatizar tareas con scripts basados en eventos. El ejemplo podría estar cambiando el brillo de la pantalla con hora del día o de montaje automáticamente de montaje/desmontaje de almacenamiento extraíble.
En comparación con el uso de scripts de shell, DEAI es una herramienta única, en lugar de una colección de diferentes comandos creados por diferentes personas, por lo que es más consistente. Y el manejo de eventos con la interfaz de Deai es mucho más agradable que leer y analizar la salida de texto de los comandos.
!!!¡¡¡Advertencia!!! Deai está actualmente bajo un gran desarrollo. Las cosas pueden romperse o no funcionar correctamente. Si está pensando en crear complementos para DEAI, considere contribuir directamente a este repositorio o esperar hasta que DEAI sea estable. Esto se debe a que ni la API ni el ABI de Deai han sido finalizados. Los nuevos cambios en Deai podrían romper sus complementos.
La mayoría de Deai está documentado aquí
También se dan algunos ejemplos aquí. Si necesita más información, puede preguntarme
udev )dbus )xorg )lua )file )/path/to/deai module.method arguments...Una explicación más detallada de cómo funcionan los argumentos de la línea de comandos se puede encontrar aquí
En este momento, el único lenguaje de secuencias de comandos compatible es Lua, por lo que los ejemplos serán en Lua.
Lanzamiento de programas
-- "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 )Temporizador establecido
di . event : timer ( 10 ): on ( " elapsed " , function ()
print ( " Time flies! " )
end )Cambiar/establecer variables de entorno
di . os . env [ " PATH " ] = " /usr "Mira los cambios de archivo
(Vea esto para todas las señales posibles)
watcher = di . file : watch ({ " . " })
watcher : on ( " open " , function ( dir , filepath )
print ( dir , filepath )
end )Conectarse a xorg
-- Connect to Xorg is the first step to get X events
xc = di . xorg : connect ()
-- You can also use :connect_to(DISPLAY)Establecer XRDB
-- Assuming you have connected to X
xc . xrdb = " Xft.dpi: t 192 n "X enlace de llave
(Vea esto para más información)
-- Map ctrl-a
xc . key : new ({ " ctrl " }, " a " , true ): on ( " pressed " , function ()
-- do something
end )Recibir notificaciones para nuevos dispositivos de entrada
xc . xinput : on ( " new-device " , function ( dev )
print ( dev . type , dev . use , dev . name , dev . id )
-- do something about the device
end )Cambiar las propiedades del dispositivo de entrada
(Vea esto para más información)
-- 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
endRecibir una notificación cuando cambie la resolución, o cuando se conecte un nuevo monitor, etc.
(Vea esto para más información)
-- 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 )Ajustar la luz de fondo
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 Soporte de DBUS: muchas de las interfaces ahora están expuestas a través de DBUS, como UDISKS para administrar el almacenamiento extraíble, la votante para la administración de energía. Entonces, obviamente, el apoyo de DBUS es imprescindible.
Audio: soporte Ajustar volúmenes, etc., a través de Alsa o PulseAudio
Red: Soporte para eventos de red y reaccione a ellos. Por ejemplo, conecte automáticamente a VPN después de cambiar a un WiFi abierto.
Gestión de energía: reacciona a los cambios de condición de la fuente de alimentación, etc.
Componentes de UI: le permite crear íconos de bandeja, menús, etc. para que pueda interactuar con Deai usando una GUI.
Más idiomas: ¡ apoya los idiomas de secuencias de comandos favoritos de todos!
Y más ... si quieres algo, solo abre un problema.