Lancer des applications desktop

Libertine vous permet d’utiliser des applications desktop dans Ubuntu Touch.

To display and launch applications you need the Desktop Apps Scope which is available by swiping from the bottom of your device, and then tapping on the star. To install applications you need to use the commandline as described below.

Gérer les conteneurs

Créer un conteneur

La première étape est de créer un conteneur dans lequel les applications peuvent être installées:

libertine-container-manager create -i CONTAINER-IDENTIFIER

Vous pouvez ajouter des options supplémentaires comme:

  • -n name remplacer name par un nom facile à retenir à donner au conteneur
  • -t type type peut être à la fois chroot ou lxc. Celui par défaut est chroot et est compatible avec tous les périphériques. Si le noyau de votre périphérique le supporte, alors lxc est suggéré.

Le processus de création peut prendre un peu de temps à cause de la taille du container (quelques centaines de mégaoctets).

Note

La commande create montrée ci-dessus ne peut pas être lancée directement dans l’application terminal du fait de restrictions apparmor. Vous pouvez la lancer depuis un autre périphérique en utilisant soit une connexion adb soit une connexion ssh. Alternativement, vous pouvez la lancer depuis l’application terminal en utilisant une connexion ssh « loopback » en lançant la commande : ssh localhost.

Liste des conteneurs

Pour établir la liste de tous les conteneurs, lancez:

libertine-container-manager list

Détruire un conteneur

libertine-container-manager destroy -i CONTAINER-IDENTIFIER

Gérer les applications

Une fois qu’un conteneur est mis en place, vous pouvez lister les applications installées:

libertine-container-manager list-apps

Installer un paquet:

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

Supprimer un paquet:

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

Note

Si vous avez plus d’un conteneur ; alors vous pouvez utiliser l’option -i CONTAINER-IDENTIFIER pour spécifier pour quel conteneur vous voulez effectuer cette opération.

Fichiers

Les applications Libertine ont accès à ces dossiers :

  • Documents
  • Musique
  • Images
  • Téléchargements
  • Vidéos

Astuces

Emplacements

Pour chaque conteneur que vous créez, il y aura deux dossiers créés :

  • Un dossier racine ~/.cache/libertine-container/CONTAINER-IDENTIFIER/rootfs/ et
  • un dossier utilisateur ~/.local/share/libertine-container/user-data/CONTAINER-IDENTIFIER/

Accès Shell

Il existe deux options pour exécuter des commandes à l’intérieur d’un conteneur.

La première option est basée sur libertine-container-manager exec. Elle vous laisse exécuter votre commande en tant qu’administrateur. L’inconvénient est que le conteneur n’est pas complètement mis en place. Jusque-là, nous savons que les dossiers mentionnés ci-dessus (Documents, Music, …) ne sont pas montés c’est-à-dire que le répertoire /home/phablet/ est vide. De même, le répertoire référencé dans TMPDIR n’est pas disponible, ce qui peut poser des problèmes avec un logiciel qui essaye de créer des fichiers ou des répertoires temporaires. Vous pouvez utiliser cette option par exemple pour l’installation de paquets.

Pour exécuter une commande, vous pouvez utiliser le modèle suivant:

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

Par exemple, exécutez:

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

Pour obtenir un shell dans votre conteneur en tant que root lancer :

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

La seconde option est basée sur libertine-launch. Elle exécutera vos commandes en tant qu’utilisateur dans un conteneur complètement mis en place. Vous pouvez donc utiliser cette option pour modifier vos fichiers en utilisant les paquets installés.

Pour exécuter une commande, vous pouvez utiliser le modèle suivant:

libertine-launch -i CONTAINER-IDENTIFIER COMMAND-LINE

Par exemple, exécutez:

libertine-launch -i CONTAINER-IDENTIFIER ls -a

Pour obtenir une interface système en tant qu’utilisateur de phablet, lancez:

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

Note

Quand vous lancez bash de cette manière, vous n’aurez aucun retour confirmant que vous êtes à l’intérieur de ce conteneur. Vous pouvez cependant lancer ls / pour vérifier que vous êtes bien à l’intérieur de ce conteneur.

Accessing SD card

In order to access your SD-card or any other part of the regular filesystem from inside your libertine container you must create a bind mount.

In order to add a bind mount use:

libertine-container-manager configure -i CONTAINER-IDENTIFIER -b add -p /media/phablet/ID-OF-SD

You can also make deep links in case you only want parts of your SD-card available in the container. In this case just the entire path to the directory you want to bind mount:

libertine-container-manager configure -i CONTAINER-IDENTIFIER -b add -p /media/phablet/ID-OF-SD/directory/you/want

This will not allow the container access to any of the directories earlier in the path for anything other than accessing your mounted directory.

In order to use the SD-card as extra space for your container, make sure first to format it using ext4 or similar. There is a mis-feature in udisk2 that mounts SD-cards (showexec) that ensures only files ending in .bat, .exe or .com can be executed from the drive if it is (v)fat formatted. This has been changed in other distributions allowing any file to have execute priviliges, but not ubuntu. The reccomended workaround is to add a udev rule to control how to mount a card with a given id, but since the udev rules are on the read only port on touch, this is not possible.

Raccourcis

Si vous le souhaitez, vous pouvez ajouter des alias pour les outils en ligne de commande. Ajoutez des lignes comme les suivantes à votre fichier ~/.bash_aliases:

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

Arrière-plan

Un serveur d’affichage coordonne les entrées et les sorties d’un système d’exploitation. La plupart des distributions Linux utilisent de nos jours un serveur X. Ubuntu touch n’utilise pas de serveur X mais utilise un nouveau serveur d’affichage appelé Mir. Cela signifie que les applications standard X ne sont pas directement compatibles avec Ubuntu Touch. Une couche de compatibilité appelé XMir est nécessaire. Libertine utilise donc XMir pour afficher les applications de bureau.

Un autre défi est que les mises à jours d’Ubuntu Touch sont délivrées par des images OTA. En conséquence, le système de fichier racine est en lecture seule. Libertine met à disposition un conteneur avec un système de fichier en mode lecture et écriture pour permettre l’installation d’applications Linux traditionnelles pour poste de travail.