[Homeros] I: Linux Journal о Luwrain

Michael Pozhidaev msp на altlinux.ru
Вт Июл 7 23:14:18 MSK 2015


"Nikita" writes:

> команды, например, просто установка приложения Luwrain для Facebook
> сможет добавить туда команду для быстрого изменения статуса в
> соц. сети, или ты гвоздями прибил туда десяток команд?

Значит, сейчас будут некоторые подробности дизайна Luwrain. В ядре
Luwrain есть два понятия shortcut и Command. Shortcut - это имя приложения плюс набор
параметров переменной длины. Приложение может быть запущено только по
указанию имени shortcut. Запустить приложение без этого может только
ядро. Роль shortcut - идентифицировать приложение, скажем, чтобы можно
было бы давать ассоциации разным типам файлов. В коде есть своего рода
фабрика, которая берёт имя shortcut и параметры, а на выходе даёт
полностью подготовленный экземпляр интерфейса
org.luwrain.core.Application, который проходит дальнейший цикл запуска
приложения.

Вместе с каждым shortcut идёт экземпляр command. Идти ему там - не
строгое правило, но своего рода хороший тон. Задача command - описать
некоторое действие в системе со следующими правилами:

1. Действие безконтекстное. То есть может быть вызвано в любой момент
времени при любом состоянии системы.

2. Command (в отличие от shortcut) параметров не имеет.

Основной набор пунктов главного меню задаётся списком command, можно
найти в реестре по пути /org/luwrain/main-menu/content. Alt+x даёт
возможность просто вызвать любой из известных command. На command
назначаются и глобальные горячие клавиши. Их можно найти в реестре по
пути /org/luwrain/global-keys. Пока соблюдаем традицию, что если command
по имени совпадает с некоторым shortcut, то он просит ядро запустить
приложение, описываемое этим shortcut, без каких-либо параметров.  Но в
целом возможности command довольно широки. Там есть системные, которые
подразумевают доступ в ядро системы, но и полномочия сторонних весьма
широки. Малость спорный момент - позволять ли command открывать
диалоговые окна. Пока это разрешено только системным command. Например,
quit запрашивает подтверждение на выход.

Shortcut и Command - это классы Java. Поставляются вместе с расширениями
luwrain. Расширение Luwrain - это jar-файл, манифест которого содержит
специальную запись о том, что есть классы, которые должны быть загружены
как расширения. Полномочия расширений пока уточняются, как зафиксируем,
я выложу на сайт, но Shortcut и Command там будут уже точно. Все
приложения идут как расширения. Их можно видеть как файлы
luwrain-app-*.jar. 

Язык каких-нибудь кастомных скриптов будет точно. Это неизбежно. Понятно
дело, возможность создавать свои Shortcut и Command там должна быть. С
вероятностью две трети это будет Java Script. Есть нерешённые вопросы,
которые обсуждаются:

1. Должна ли поддержка скриптов быть в ядре или её можно поставлять как
расширение. Есть свои плюсы и минусы.

2. Круг задач, которые могут выполнять скрипты. Например, можно ли им
давать доступ к файловой системе? Это вопрос безопасности. Если люди
будут скачивать скрипты из сети, а они будут шариться по файлам, это
как-то не очень хорошо. С самими расширениями, я надеюсь, будет проще,
потому что в Java есть SecurityManager, который может менять набор
допустимых операций. То есть как только управление переходит в
расширение, так у нас должна быть возможность зарубить файлы, сокеты и
т. д.  Пользователь сможет в Панели управления сам выбирать, какие
полномочия дать расширению.

-- 
Michael Pozhidaev. Tomsk, Russia.
Russian info page: http://www.marigostra.ru/
English info page: http://www.marigostra.com/


Подробная информация о списке рассылки Homeros