Оглавление
DEAI - это инструмент для автоматизации вашего рабочего стола Linux. Он пытается разоблачить общие события и интерфейсы системы Linux на языки сценариев, чтобы пользователи могли автоматизировать задачи с помощью сценариев, управляемых событиями. Примером может быть изменение яркости экрана с временем дня или автоматически монтаж/установка съемного хранения.
По сравнению в отличие от использования сценариев оболочки, DEAI представляет собой единый инструмент, а не набор различных команд, созданных разными людьми, поэтому он более последовательна. И обработка событий с интерфейсом Deai намного приятнее, чем чтение и анализ текста из команд.
!!!Предупреждение!!! Deai в настоящее время находится в тяжелом развитии. Вещи могут сломаться или не сработать правильно. Если вы думаете о создании плагинов для DEAI, пожалуйста, рассмотрите возможность внести непосредственный вклад в этот репозиторий или подождите, пока Deai стабилен. Это потому, что ни API, ни ABI DEAI не были завершены. Новые изменения в Deai могут сломать ваши плагины.
Большая часть Deai здесь задокументирована
Здесь также приведены несколько примеров. Если вам нужна дополнительная информация, вы можете спросить меня
udev )dbus )xorg )lua )file )/path/to/deai module.method arguments...Более подробное объяснение того, как здесь можно найти аргументы командной строки, можно найти здесь
Прямо сейчас единственным поддерживаемым языком сценариев является Lua, поэтому примеры будут приведены в Lua.
Запуск программ
-- "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 )Установить таймер
di . event : timer ( 10 ): on ( " elapsed " , function ()
print ( " Time flies! " )
end )Изменить/установить переменные среды
di . os . env [ " PATH " ] = " /usr "Смотреть изменения файла
(См. Это для всех возможных сигналов)
watcher = di . file : watch ({ " . " })
watcher : on ( " open " , function ( dir , filepath )
print ( dir , filepath )
end )Подключитесь к Xorg
-- Connect to Xorg is the first step to get X events
xc = di . xorg : connect ()
-- You can also use :connect_to(DISPLAY)Установить xrdb
-- Assuming you have connected to X
xc . xrdb = " Xft.dpi: t 192 n "X Ключевые привязки
(См. Это для получения дополнительной информации)
-- Map ctrl-a
xc . key : new ({ " ctrl " }, " a " , true ): on ( " pressed " , function ()
-- do something
end )Получите уведомление о новых устройствах ввода
xc . xinput : on ( " new-device " , function ( dev )
print ( dev . type , dev . use , dev . name , dev . id )
-- do something about the device
end )Изменить свойства устройства ввода
(См. Это для получения дополнительной информации)
-- 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
endПолучите уведомление при изменении разрешения или при подключении нового монитора и т. Д.
(См. Это для получения дополнительной информации)
-- 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 )Отрегулировать подсветку
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: Многие интерфейсы теперь выставлены через DBU, такие как Udisks для управления съемным хранилищем, Upower для управления питанием. Так что, очевидно, поддержка DBUS является обязательной.
Аудио: поддержка регулировки объемов и т. Д., Через ALSA или PulseAudio
Сеть: поддержка сетевых событий и реагировать на них. Например, автоматически подключитесь к VPN после переключения на открытый Wi -Fi.
Управление питанием: реагирует на изменения условий питания и т. Д.
Компоненты пользовательского интерфейса: позволяет создавать значки для лоток, меню и т. Д., чтобы вы могли взаимодействовать с DEAI, используя графический интерфейс.
Больше языков: поддержите все любимые языки сценариев!
И еще ... если вы хотите чего -то, просто откройте проблему.