- Lua 100%
| appl/explain | text-helper fixes for overflow and clipping | |
| ctrl/explain | add message history tracking / playback | |
| LICENSE | Initial commit | |
| README.md | add message history tracking / playback | |
explain
This is a simple presentation tool for driving a12-web server/client API development. It is mostly usable in its current state and the remaining features are of the more experimental nature.
The online feature is currently that the first client to ever authenticate to the appl gets 'presenter' permissions. This means that the slide they are currently on gets forwarded to other participants and they automatically navigate to that slide. They can pause and navigate between the slides and resume automatically, as well as chat/comment.
Planned Changes
There are a handful of features that this tool is driving the development of.
-
A 'tag wall' as a (initially empty) slide that they get to add a single short comment or image to. The purpose there is to drive the server side scripting API to let it compose and synthesise a dynamic image that then synchs to clients as needed.
-
Accessibility such that there is alt-text provided for the slides themselves, as well as navigation of the table of contents and participation in the chat.
-
Let the presenter provide a media source that gets broadcasted to other participants and composed on top of the other slides. This gets complicated as it involves the server side offloading transcoding, buffering, broadcasting and distribution over any unified linked other directory servers (for load balancing).
-
'Presenter only' server side hosted content that isn't to be shared. This acts as a test and demo of showing privilege separation in content access.
-
Voluntary decomposition, let chat and presenter media popout into their own embedded overlays which would let the outer window manager map them into own windows.
-
Slide-tagged chat messages / user-list.
Part of #3 also includes a tool for the 'durden' desktop appl specifically, `tools/composition' which lets you define advanced composition templates much like streamer tools like OBS would. This can be populated with the output of webcams, local software and audio/video sources dynamically and have its output shared into the 'explain' appl window.
Use
The appl works offline first, simply point arcan to run it:
arcan /path/to/checkout/appl/explain
For the presentation mode and online features, you need a directory server setup.
See the main arcan repository doc/directory.md for further instructions, but it
boils down to creating a config.lua (a config.lua.example should be included in
the share/arcan folder of your installation) and copying the appl and ctrl to
the paths pointed to by config.paths.appl and config.paths.appl_server.
Then you start the server:
arcan-net -c config.lua
You should then be able to use arcan-net to access it:
arcan-net --ident myname my.host explain
Creating your own presentation
The presentation format is very straightforward.
Put the slides (as PNG) that you want to show as sequentially numbered files in the 'slides' subdirectory along with a toc.lua file:
appl/explain/slides
1.png
2.png
...
toc.lua
The contents of the toc.lua must be a valid lua script that returns a table with the following fields:
return {
-- r,g,b triplet of background colour that will be used for padding background = {127, 127, 127},
-- will be used for UI elements like the table of contents text = "\f,18\#ffffff", text_highlight = "\f,18\#aa0000", border = {146, 82, 36},
-- number of slides in the presentation count = 32, alt_text = { [1] = "Description of the contents of the first slide" },
-- slides that will be quick-navigatable through the table of contents labels = { [1] = "Introduction", [3] = "Setting the Scene", } }