Slides:

Video:
apt-get update && apt-get upgrade
sudo shutdown -r now
4. Install deps:
apt-get install busybox cryptsetup dropbear-initramfs lvm2
5. Prepare partition:
cryptsetup -v -y --cipher aes-xts-plain64 --key-size 256 luksFormat <newroot>
cryptsetup -v luksOpen <newroot> sdcard
mkfs.ext4 /dev/mapper/sdcard
cryptsetup luksClose /dev/mapper/sdcard
6. Configure partition in the system:
check blkid | grep crypto_LUKS
open /etc/crypttab and add:
sdcard <newroot> none luks,initramfs
open /etc/fstab and replace original root partition with:
/dev/mapper/sdcard / ext4 defaults 0 1
open /boot/cmdline.txt and replace existing partition config with:
root=/dev/mapper/sdcard cryptdevice=<newroot>:sdcard
also add at the end of the same file dhcp configuration:
ip=:::::eth0:dhcp
7. Configure early decryption:
echo 'DROPBEAR_OPTIONS="-RFEsjk -c /bin/cryptroot-unlock"' > /etc/dropbear-initramfs/config
echo "CRYPTSETUP=y" >> /etc/cryptsetup-initramfs/conf-hook
8. Fix issue with short timeout for decryption:
sed -i 's/^TIMEOUT=.*/TIMEOUT=100/g' /usr/share/cryptsetup/initramfs/bin/cryptroot-unlock
9. Configure early remote access over SSH:
touch /boot/ssh
echo '<your_public_ssh_key>' > /etc/dropbear-initramfs/authorized_keys
10. Copy files from original root partition to the new encrypted partition.
11. Generate initramfs:
sudo mkinitramfs -o /boot/initramfs.gz
echo "initramfs initramfs.gz" >> /boot/config.txt
12. Reboot and try to connect remotely. Configs for ssh:
Host pi
HostName <ip>
User user
PreferredAuthentications password
Host pi-enable
HostName <ip>
User root
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
IdentityFile ~/.ssh/<your_public_ssh_key>
In the desktop suite we have the sidebar which is a context dependant feature improving user performance eg. in chart editing. Unfortunately it's not the perfect UI for a mobile clients, so the new concept is to tunnel the UI description to the browser and create native widgets there. I did some prototyping work in this area and I can see first results:
As we can see all basic widgets and layout are preserved. All sections are visible, it will be possible to create an UI where user will see only one section at time for better mobile experience. Complex controls like color selectors are not available yet (I'm going to use our color selector present in the toolbar). The development takes place in the feature branch.
Szymon Kłos showing how to debug conveniently 💪 #collaboraonline #libreoffice #libreofficeonline @LibOCon #debug pic.twitter.com/EXrqk0WvCM
— Collabora Office (@CollaboraOffice) 13 września 2019
Recently my LibreOffice work is mostly focused on the Online. It's nice to see how it is growing with new features and has better UI. But when I was working on improving toolbars (eg. folding menubar or reorganization of items) I noticed one annoying thing from the developer perspective. After every small change, I had to restart the server to provide updated content for the browser. It takes few seconds for switching windows, killing old server then running new one which requires some tests to be passed.
Last week during the Hack Week funded by Collabora Productivity I was able to work on my own projects. It was a good opportunity for me to try to improve the process mentioned above.
I've heard previously about browsersync so I decided to try it out. It is a tool which can automatically reload used .css and .js files in all browser sessions after change detection. To make it work browsersync can start proxy server watching files on the original server and sending events to the browser clients if needed.
What is the advantage? Developer tools in the browser are not good enough?
Disadvantages
To integrate browsersync I needed to do some build system changes. First, all static files are served from 'loleaflet/dist' directory. These files are not the original sources but copies. I modified the Makefiles to create symlinks instead if the browsersync is activated. Thanks to that we can modify sources tracked by git and proxy can detect changes.
To try it out on your own:
make cleannpm install -g browser-sync--enable-browsersync argumentLOOL_SERVE_FROM_FS=1 make runmake sync-[writer|calc|impress]In the video below you can see how it works:
Next step will be to allow browsersync usage with cloud storage integrations like richdocuments, I noticed also some issues with access from other devices (app is still using original server for some resources).
sudo bluetoothctl
power on
agent on
scan on
pair <MAC>
Then: sudo killall rfcomm
sudo rfcomm connect /dev/rfcomm0 <MAC> 1