gsoc

GitHub page for my GSoc Project

This project is maintained by rptr

LibreOffice Appliances project (GSoC 2019)

Links

Kanban board
OLD Kanban board
Project repository
Building LibreOffice for ARMv7 with QEMU
Latest builds
Websocket Impress Remote server
Websocket Impress Remote client library
Impress Remote for LibreSign

Student contact

  • wasmus@zom.bi
  • cbilt on #libreoffice-dev

Mentor contact

  • thb@libreoffice.org
  • thorsten and sweetshark on #libreoffice-dev

Final Report

This is a from-scratch project created separately from the LibreOffice source.

This program is meant to run on a single-board computer connected to a TV screen displaying LibreOffice Impress presentations automatically. There is a “conference” mode, where users can upload presentations, select them to be played and then control the presentation with the Impress Remote. For this the JavaScript/ browser version of the Impress Remote was created as part of the GSOC project. There is also a “digital signage” mode where presentations are displayed automatically after being uploaded and looped indefinitely.

The original project proposal and plan can be found here: https://docs.google.com/document/d/1FZKM2I_5Fc2ENsLxlMmkWTo6GJaS8_QHiYEERIVxVfY/edit

Work done:

Screenshot of the control panel

Screenshot of the browser Impress Remote

What you can do with it:

  • Users can upload their Impress presentations which will be started and displayed on the screen
  • They can either let this happen automatically in a “signage” mode or control it manually with e.g. the Impress Remote in “conference” mode

Please refer to the readme in the LibreSign repository for instructions on how to use this project: https://github.com/LibreOffice/libresign

Things to do:

The original project plan was rather modest, so some things were planned and added as we went along during the summer. We’ve also come up with features that might be added in the future. Here’s what’s left on the Kanban board,

  • Switching between conference and sign mode
  • Checking for uploaded file validity
  • Going through TODOs I added while writing the code
  • Writing some documentation on PyUNO on the TDF wiki

If you have any suggestions for additions you can e-mail me or send in a pull request with changes to the WISHLIST in the main repository (https://github.com/LibreOffice/libresign).

Future:

I hope people will find a use for this and that someone might even add to it. I intend to fix any kind of problem with it in the future and would love to add any reasonable features which might be wanted.

Week 12

It’s been a while since my last blog post, quite a bit has happened now and the project is starting to turn into a complete product.

Documentation has been written now, for using and developing the program. The main documentation is the readme in the main repo (https://github.com/LibreOffice/libresign) and there are readmes for the other three repos as well (see links above).

It should give some meat on the bones for anyone wanting to contribute and also instructions for anyone wanting to use this project. It should be as easy as running these commands in a terminal:

install python, pip pip install libresign libresign

The user interface for the web control panel was a bunch of buttons all summer, but now I’ve turned it into something somewhat nicer. It’s not my strongest point, but I’m trying to and want to make it fancy and responsive.

The last few weeks I also spent a lot of time on the browser Impress Remote which is pretty decent now. It installs as part of the libresign PyPI package but I’ll make it run as a standalone application as well, although I’m not sure if anyone would use it like that.

Report 8 9

The last two weeks were spent on the new JavaScript Impress Remote. Focusing on functionality over design and graphics.

The new Impress Remote is run together with the LibreSign program and allows the user to access a website from which they can control the presentations. This is modelled after the existing Impress Remote and the goal is to get it as close as possible to it in terms of looks, functionality and ease of use. Although the JS Impress Remote is possibly easier to use since it doesn’t require any installation for the end user.

Here’s a video demo showing LibreSign running on a Raspberry Pi in “conference mode” with the JS Impress Remote on the laptop, not of great quality: https://www.youtube.com/watch?v=MQcZ5B0jgE0

Bumps

What happened lately: the lid hinges of my laptop broke for the second time, so I decided to buy a new (used) laptop. As always I didn’t back up my files properly (installed new OS on same disk), so had some transition issues.

Apparently I hadn’t saved my username+password for the Wekan board, so I’ve created a new one:

[https://kanban.zom.bi/b/YLJTHZ6JCmTQGQDKm/new-appliances-project-libreoffice-gsoc-2019]

This is the old one:

[https://kanban.zom.bi/b/jzXN7d4qS4nRw3fYP/appliances-project-libreoffice-gsoc-2019]

Right now I’m doing some JavaScript front-end stuff. I decided to use React partially for selfish reasons (good opportunity/ reason to finally learn some proper web front-end stuff which I would never otherwise do) and also because I want to create a proper and nice product.

Specifically, it’s from the JavaScript Impress Remote, basically the Impress Remote in the browser. It’ll require one to run a server beforehand so it’s not as easily installed as the Android/ iPhone remotes, but it’s intended to be used with the LibreSign project.

Also obviously doing the backend and so on for this.

Really need to record a video demo of LibreSign soon. It doesn’t look too bad if the presentation itself is well-made :)

Report 5

I managed to sort out the blog not building. The problem was a case of incorrect syntax in the _config.yml on this site.

I passed the evaluation and I’ll be here for another two months by the looks of it. We’ve now got a working program which starts and control LibreOffice just like planned, however it is quite rough and the next two months will be spent making it smoother and better-looking mainly, I reckon. Apart from any other work my mentors might throw at me. :)

  • Start and stop LibreOffice.
  • Load and close documents in LibreOffice.
  • Start and transition slideshows.
  • Website control panel has additional functionality for controlling the playlist and slideshows.
  • Some minor additions and fixes such as making the informational screen look alright and display the correct information.

I’ve also run into problems with LibreOffice:

  • Some slides (usually ones with heavy content?) give me a black screen when running LibreOffice (libreoffice-fresh from archlinuxarm) on my Raspberry Pi 3 B+ – this is quite disconcerting but might simply be due to my ancient LCD screen which needs about an hour to warm up before it works (backlight issues?), although it seems really strange. If anyone has a Raspberry Pi and feels like replicating this that would be great!

Right now I’m making some simple example presentations to use while testing the program, just to have something half-decent and realistic to look at. I have some polishing/ tweaking to do on the existing program as well.

Rasmus

Report 4

I’m making progress with interfacing with LibreOffice, I can now start and run slideshows, which is what the project is about at its core.

I’ll update with a screenshot/ photos of the project running on my Raspberry Pi as soon as possible.

Below is my report for week 4

These last two weeks I’ve been stuck on integrating my program with LibreOffice (mentioned in previous report), but I’ve finally figured out how to get it to work and am now back on track. I’m about two days behind schedule but I’ll catch up now the problem’s solved.

Originally this was going to be done with Impress Remote Protocol, but URP/ UNO seemed like a better choice, so we agreed to go for that. The coming weeks (5-7) were supposed to be spent adding features and doing other work related to the IRP server, I’m not sure how valid this is now and will discuss it with my mentor.

Spent most days on

  • Trying different configurations, settings to connect to LibreOffice properly with UNO. Ideally it should work with any standard LibreOffice installation(?).
  • Wrote scripts to test in isolation from my main program
  • Reading up on UNO on https://wiki.openoffice.org/wiki
  • Got it working and added a new “unoremote” interface to my program, presentations can be opened, closed, etc according to the user-curated playlist. This was basically all I was trying to do.

Rasmus

Good News

I finally managed to build LibreOffice for armv7 and I have LibreOfficeDev on my TV screen right now. There’s a link to build instructions above and I’ll update it with the autogen flags I used. They’re somewhat arbitrary but yeah.

Now the stage is set for this week’s/ next week’s work of controlling LibreOffice from Python, and also the additions needed in LO’s source code to actually make things work properly.

(y)

P.S. I am aware that this site is incredibly ugly, I’ll fix it soon.

Report 1

Report Week 1

  • Started week working on building LO on ARM
  • Did some brief research on Python/ web frameworks/ web servers / web libraries
    • In the plan I only mentioned Python+BaseHTTPServer (original idea) but decided there’s no need to waste time
  • Have a main program running incl. web server
  • Showing the presentation playlist which user can interact with
  • Receiving requests from the website

Project repository: https://github.com/rptr/libresign