Desktop-Anwendungen nutzen

Libertine ermöglicht die Nutzung von Standard-Desktop-Anwendungen in Ubuntu Touch.

Um Anwendungen zu starten, wird der Desktop Apps Scope benötigt, welcher im Open Store verfügbar ist. Zur Installation von Anwendungen wird, wie unten beschrieben, die Kommandozeile benutzt.

Container verwalten

Einen Container anlegen

The first step is to create a container where applications can be installed:

libertine-container-manager create -i CONTAINER-IDENTIFIER

Zusätzliche Optionen können hinzugefügt werden:

  • -n name als Name kann etwas nutzerfreundliches festgelegt werden
  • -t type der Typ kann entweder chroot oder lxc sein. Standard ist chroot und ist kompatibel mit jedem Gerät. Falls der Kernel des Geräts dies unterstützt, dann ist lxc empfehlenswert.

Der Erstellprozess kann einige Zeit in Anspruch nehmen, aufgrund der Größe des Containers (mehrere hundert Megabyte).

Bemerkung

Der create-Befehl oben kann aufgrund von apparmor-Restriktionen nicht direkt in der Terminal-App gestartet werden. Aber er lässt sich von einem anderen Gerät aus entweder über adb oder ssh. Alternativ lässt es sich in der Terminal-App ausführen, indem man eine SSH-Schleife nutzt mihilfe des Kommandos ssh localhost.

Container auflisten

To list all containers created run:

libertine-container-manager list

Einen Container zerstören

libertine-container-manager destroy -i CONTAINER-IDENTIFIER

Anwendungen verwalten

Once a container is set up, you can list the installed applications:

libertine-container-manager list-apps

Install a package:

libertine-container-manager install-package -p PACKAGE-NAME

Remove a package:

libertine-container-manager remove-package -p PACKAGE-NAME

Bemerkung

Falls es mehr als einen Container gibt, kann man die Option -i CONTAINER-IDENTIFIER angeben, den Container auszuwählen, auf den die Operation ausgeführt werden soll.

Dateien

Libertine-Anwendungen haben Zugriff auf diese Ordner:

  • Dokumente
  • Musik
  • Bilder
  • Downloads
  • Videos

Tips

Verzeichnisse

Für jeden Container werden zwei Verzeichnisse erstellt:

  • Ein Wurzelverzeichnis ~/.cache/libertine-container/CONTAINER-IDENTIFIER/rootfs/ und
  • ein Nutzerverzeichnis ~/.local/share/libertine-container/user-data/CONTAINER-IDENTIFIER/

Shell-Zugriff

There are 2 options for executing commands inside the container.

The first option is based on libertine-container-manager exec. It lets you run your commands as root. The drawback is that the container is not completely set up. So far we know that the folders mentioned above (Documents, Music, …) are not mounted i.e., the /home/phablet/ directory is empty. Likewise the directory referenced in TMPDIR is not available what may lead to problems with software that tries to create temporary files or directories. You may use this option e.g., for installing packages.

To execute a command you can use the following pattern:

libertine-container-manager exec -i CONTAINER-IDENTIFIER -c "COMMAND-LINE"

For example run:

libertine-container-manager exec -i CONTAINER-IDENTIFIER -c "apt-get --help"

To get a shell into your container as root run:

libertine-container-manager exec -i CONTAINER-IDENTIFIER -c "/bin/bash"

The second option is based on libertine-launch. It will execute your commands as user phablet in a completely set up container. So you may use this option to modify your files using installed packages.

To execute a command you can use the following pattern:

libertine-launch -i CONTAINER-IDENTIFIER COMMAND-LINE

For example run:

libertine-launch -i CONTAINER-IDENTIFIER ls -a

To get a shell as user phablet run:

DISPLAY= libertine-launch -i CONTAINER-IDENTIFIER /bin/bash

Bemerkung

Wenn bash auf diese Weise gestartet wird, erhält man keine spezielle Rückmeldung, dass man sich nun in einem Container befindet. Mithilfe von ls / lässt sich aber ermitteln, ob man sich in einem Container befindet. Die Auflistung von ls / ist unterschiedlich innerhalb und außerhalb.

Shortcuts

If you want, you can add aliases for command line tools. Add lines like the following ones to your ~/.bash_aliases:

alias git='libertine-launch -i CONTAINER-IDENTIFIER git'
alias screenfetch='libertine-launch -i CONTAINER-IDENTIFIER screenfetch'

Hintergrund

Ein Display Server koordiniert die Ein- und Ausgänge eines Betriebssystems. Die meisten Linux-Distributionen heutzutage nutzen den X Server. Ubuntu Touch nutzt aber nicht X, sondern einen neuen Display Server namens Mir. Das bedeutet, die Standard-X-Anwendungen sind nicht direkt kompatibel mit Ubuntu Touch. Eine Kompatibilitätsschicht namens XMir löst das. Libertine baut auf XMir auf, um Desktop-Anwendungen anzuzeigen.

Eine andere Herausforderung ist, dass Aktualisierungen für das Ubuntu Touch-System als OTA-Abbilder veröffentlicht werden. Als Konsequenz daraus hat man nur Leserechte auf das Wurzeldateisystem. Libertine stellt einen Container mit einem Dateisystem mit Schreib- und Leserechten zur Verfügung, um die Installation regulärer Linux-Desktop-Anwendungen zu ermöglichen.