2021-04-25

Trying out helloSystem on rockpro64

Preparing the image

  • Download FreeBSD 13 for the board: https://www.freebsd.org/where/
  • Burn the image onto micro SD card (Use Balena Etcher or Disk Image Writer in Gnome)
  • Place the card into the board and power it up
  • Wait for some time. It might take a while for the OS to start booting. There should a while LED indicator once FreeBSD is starting to boot.
  • Default FreeBSD credentials freebsd / freebsd and root / root

Configure the system

From now on this guide mostly follows the official one for the raspberry pi.

Log into the system with root and run the script:

#!/bin/sh

set -e

uzip=

echo "Installing dependencies..."
pkg install -y xorg xterm nano openbox curl

pkg install -y -U git-lite cmake pkgconf qt5-qmake qt5-buildtools qt5-concurrent qt5-quickcontrols qt5-quickcontrols2 kf5-kdbusaddons kf5-kwindowsystem libdbusmenu-qt5

if [ -e "/usr/local/bin/launch" ]; then
  echo "launch is already installed."
else
  echo "Installing launch..."
  rm -r launch || true
  git clone https://github.com/helloSystem/launch
  mkdir -p launch/build
  cd launch/build/
  cmake ..
  make -j4
  #./launch
  make install
  cd ../../
fi

if [ -e "/usr/local/bin/Menu" ]; then
  echo "Menu is already installed."
else
  echo "Installing Menu..."
  rm -r Menu || true
  git clone https://github.com/helloSystem/Menu
  mkdir -p Menu/build
  cd Menu/build
  cmake ..
  make -j4
  make install
  ln -s /usr/local/bin/menubar /usr/local/bin/Menu # Workaround for the 'launch' command to find it
  cd ../../
fi

if [ -e "/usr/local/bin/Filer" ]; then
  echo "Filer is already installed."
else
  echo "Installing Filer..."
  rm -r Filer || true
  git clone https://github.com/helloSystem/Filer
  mkdir -p Filer/build
  cd Filer/build/
  pkg install -y -U libfm
  cmake ..
  make -j4
  make install
  ln -s /usr/local/bin/filer-qt /usr/local/bin/Filer # Workaround for the 'launch' command to find it
  cd ../../
fi

if [ -e "/usr/local/bin/Dock" ]; then
  echo "Dock is already installed."
else
  echo "Installing Dock..."
  rm -r Dock || true
  git clone https://github.com/helloSystem/Dock
  mkdir -p Dock/build
  cd Dock/build
  cmake ..
  make -j4
  make install
  ln -s /usr/bin/cyber-dock /usr/local/bin/Dock 
  cd ../../
fi

if [ -e "/usr/local/etc/xdg/stylesheet.qss" ]; then
  echo "QtPlugin is already installed."
else
  echo "Installing QtPlugin..."
  rm -r QtPlugin || true
  git clone https://github.com/helloSystem/QtPlugin
  mkdir -p QtPlugin/build
  cd QtPlugin/build/
  pkg install -y -U libqtxdg
  cmake ..
  make -j4
  make install
  cp ../stylesheet.qss /usr/local/etc/xdg/
  cd ../../
fi

if [ -d "/usr/local/share/icons/elementary-xfce" ]; then
  echo "System icons are already installed."
else
  echo "Installing system icons..."
  pkg install -y -U wget
  wget -c -q http://archive.ubuntu.com/ubuntu/pool/universe/x/xubuntu-artwork/xubuntu-icon-theme_16.04.2_all.deb
  tar xf xubuntu-icon-theme_16.04.2_all.deb
  tar xf data.tar.xz
  mkdir -p "${uzip}"/usr/local/share/icons/
  mv ./usr/share/icons/elementary-xfce "${uzip}"/usr/local/share/icons/
  mv ./usr/share/doc/xubuntu-icon-theme/copyright "${uzip}"/usr/local/share/icons/elementary-xfce/
  sed -i -e 's|usr/share|usr/local/share|g' "${uzip}"/usr/local/share/icons/elementary-xfce/copyright
  rm "${uzip}"/usr/local/share/icons/elementary-xfce/copyright-e
fi

if [ -e "/usr/local/share/fonts/TTF/C059-Roman.ttf" ]; then
  echo "System fonts are already installed."
else
  echo "Installing system fonts..."
  wget -c -q https://github.com/ArtifexSoftware/urw-base35-fonts/archive/20200910.zip
  unzip -q 20200910.zip
  mkdir -p "${uzip}/usr/local/share/fonts/TTF/"
  cp -R urw-base35-fonts-20200910/fonts/*.ttf "${uzip}/usr/local/share/fonts/TTF/"
  rm -rf urw-base35-fonts-20200910/ 20200910.zip
fi


wget "https://raw.githubusercontent.com/helloSystem/hello/master/branding/computer-hello.png" -O "${uzip}"/usr/local/share/icons/elementary-xfce/devices/128/computer-hello.png

url="https://raw.githubusercontent.com/helloSystem/ISO/experimental/settings/packages.hello"
echo "Fetching packages from $url..."

# Install all uncommented packages
curl -fsS $url | egrep -v '^#' | while read line ; do
  echo "Installing: $line..."
  pkg install -y -U $line || echo "[error] $line cannot be installed"
done

echo "Enabling automount..."
service devd restart

if [ -d "ISO" ]; then
  echo "Overlays are already installed."
else
  echo "Installing overlays..."
  git clone https://github.com/helloSystem/ISO
  cp -Rfv ISO/overlays/uzip/hello/files/ /
  cp -Rfv ISO/overlays/uzip/localize/files/ /
  cp -Rfv ISO/overlays/uzip/openbox-theme/files/ /
  cp -Rfv ISO/overlays/uzip/mountarchive/files/ /
fi

echo "Enabling dbus and avahi..."
service dbus enable
service dbus start
service avahi-daemon enable
service avahi-daemon start

echo "Dependencies installed."

Save this script to /usr/local/bin/start-hello or other directory in the PATH: start-hello script

Unfortunately, I couldn't run helloSystem Xorg session so I had to install fluxbox and run though it.

setenv QT_QPA_PLATFORMTHEME panda
pkg install -y fluxbox
echo startfluxbox > ~/.xinitrc
startx

# Then open an xterm with right-mouse click and run
start-hello

helloSystem on rockpro64

Changes from the original guide

  • Install curl
  • Install git before installing launch
  • Not starting launch when building it
  • Install qt5-concurrent, qt5-quickcontrols, qt5-quickcontrols2
  • Copy stylesheet.qss from parent directory
  • Symlink cyber-dock from /usr/bin/cyber-dock
  • Had to install fluxbox and run start-hello from that session
  • setenv QT_QPA_PLATFORMTHEME panda before running the Xorg
  • Set uzip variable

Misc

Taking a screenshot

pkg install -y scrot
scrot screenshot.png