Índice
O DEAI é uma ferramenta para automatizar sua área de trabalho do Linux. Ele tenta expor eventos e interfaces comuns de um sistema Linux a linguagens de scripts, para permitir que os usuários automatizem tarefas com scripts orientados a eventos. O exemplo pode estar alterando o brilho da tela com o horário de dia ou montando/desmontar automaticamente o armazenamento removível.
Comparado ao contrário do uso de scripts de shell, o DEAI é uma ferramenta única, em vez de uma coleção de comandos diferentes criados por pessoas diferentes, por isso é mais consistente. E o manuseio de eventos com a interface do DEAI é muito melhor do que a leitura e análise de saída de texto dos comandos.
!!!Aviso!!! A DEAI está atualmente sob desenvolvimento pesado. As coisas podem quebrar ou podem não funcionar corretamente. Se você está pensando em criar plugins para o DEAI, considere contribuir diretamente para este repositório ou aguarde até que o DEAI seja estável. Isso ocorre porque nem a API nem a ABI de DEAI foram finalizados. Novas alterações no DEAI podem quebrar seus plugins.
A maior parte do DEAI está documentada aqui
Existem também alguns exemplos apresentados aqui. Se você precisar de mais informações, você pode me perguntar
udev )dbus )xorg )lua )file )/path/to/deai module.method arguments...Uma explicação mais detalhada de como os argumentos da linha de comando podem ser encontrados aqui
No momento, a única linguagem de script suportada é Lua, então os exemplos serão fornecidos em Lua.
Programas de lançamento
-- "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 )Defina o temporizador
di . event : timer ( 10 ): on ( " elapsed " , function ()
print ( " Time flies! " )
end )Alterar/definir variáveis de ambiente
di . os . env [ " PATH " ] = " /usr "Assistir alterações no arquivo
(Veja isso para todos os sinais possíveis)
watcher = di . file : watch ({ " . " })
watcher : on ( " open " , function ( dir , filepath )
print ( dir , filepath )
end )Conecte -se ao Xorg
-- Connect to Xorg is the first step to get X events
xc = di . xorg : connect ()
-- You can also use :connect_to(DISPLAY)Definir xrdb
-- Assuming you have connected to X
xc . xrdb = " Xft.dpi: t 192 n "X Chaves de chave
(Veja isso para obter mais informações)
-- Map ctrl-a
xc . key : new ({ " ctrl " }, " a " , true ): on ( " pressed " , function ()
-- do something
end )Ser notificado para novos 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 )Alterar as propriedades do dispositivo de entrada
(Veja isso para obter mais informações)
-- 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
endSeja notificado quando a resolução mudar, ou quando o novo monitor estiver conectado, etc.
(Veja isso para obter mais informações)
-- 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 )Ajuste a luz de fundo
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 Suporte ao DBUS: Muitas das interfaces agora estão expostas via DBUs, como o UDISKS para gerenciar o armazenamento removível, para o gerenciamento de energia. Então, obviamente, o suporte a DBUS é um obrigatório.
Áudio: Ajuste o suporte de volumes, etc., via ALSA ou PULSEAUDIO
Rede: Suporte para eventos de rede e reaja a eles. Por exemplo, conecte -se automaticamente à VPN depois de alternar para um wifi aberto.
Gerenciamento de energia: reage às mudanças na condição de fonte de alimentação, etc.
Componentes da interface do usuário: permite criar ícones de bandeja, menus etc. para que você possa interagir com o DEAI usando uma GUI.
Mais idiomas: apoie os idiomas de script favoritos de todos!
E mais ... se você quiser algo, basta abrir um problema.