Dans cet article, on va décrire la mise en place d'une station vidéo pour salon. Quelques contraintes sont à respecter :
- On utilise autant que possible les outils intégrés par défaut au système.
- On limite l'utilisation des ressources, il faut que ça soit rapide et fonctionnel sur des ordinateurs peu puissants.
- On doit pouvoir afficher une liste des vidéos disponibles sur la station vidéo.
- On garde en mémoire les fichiers déjà lus pour les repérer par une couleur différente (pratique pour les sériesvores)
- Si on insère une clé USB ou disque dur externe, les fichiers présents dessus doivent être lus automatiquement.
Matériel
J'ai récupéré un ordinateur chez un *cash du coin. C'est pas le moins cher, mais ça permet d'éviter de laisser un ordinateur aller en déchetterie.
J'y ajoute un mini clavier sans fil. C'est tip top ces trucs, et ça contient une batterie donc très facile à recharger par USB.
Installer OpenBSD
Ça, c'est fastoche, ça prend quelques minutes. On crée un utilisateur qu'on nommera pour l'exemple "watcher".
On prévoit quand même quelques optimisations au niveau du système de fichier en activant les softdeps :
sed -i 's/rw,/rw,softdep,/g' /etc/fstab
Et on prépare l'installation de futurs paquets :
echo https://ftp.fr.openbsd.org/pub/OpenBSD > /etc/installurl
Enfin, on met à jour en lançant
syspatch
Vous voudrez peut-être réduire le temps d'attente au démarrage :
echo "set timeout 1" > /etc/boot.conf
Pour augmenter les performances graphiques, on peut aussi ajouter cette ligne dans /etc/sysctl.conf
machdep.allowaperture=1
Configurer l'autologin
On se sert de xenodm, le gestionnaire de connexion par défaut sous OpenBSD.
Afin d'automatiquement lancer la session de l'utilisateur configuré lors de l'installation, on suit les recommandations du wiki, à savoir éditer /etc/X11/xenodm/xenodm-config
et ajouter :
DisplayManager._0.autoLogin: watcher
On crée un fichier ~/.xsession
pour l'utilisateur qui contiendra ces lignes :
xsetroot -solid black &
# son au max
mixerctl outputs.master=255,255
lutecium Videos/ &
cwm
Nous verrons ensuite à quoi correspond ce "lutecium".
Remarquez qu'on utilise un gestionnaire de fenêtres intégré à OpenBSD, pas besoin de l'installer.
Pensez à rendre ce fichier exécutable :
chmod +x ~/.xsession
Reste à activer xenodm :
rcctl enable xenodm && rcctl start xenodm
Chargement des langues et utf-8
Certaines applications en ont besoin, alors on précise dans le fichier ~/.profile de l'utilisateur ces lignes :
LC_CTYPE="fr_FR.UTF-8"
LC_MESSAGES="fr_FR.UTF-8"
LC_ALL='fr_FR.UTF-8'
LANG='fr_FR.UTF-8'
export LC_CTYPE LC_MESSAGES LC_ALL LANG
export ENV=$HOME/.kshrc
Permettre l'extinction
On édite le fichier /etc/doas.conf
pour permettre à l'utilisateur d'éteindre la machine en utilisant doas
sans entrer de mot de passe :
cat /etc/doas.conf
permit nopass :wheel cmd /sbin/shutdown
permit nopass :wheel cmd /sbin/reboot
Installation de l'interface
La plupart du temps, c'est kodi qu'on installe. Sauf que je le trouve extrêmement lourd et plein de fonctionnalités qui ne me sont pas du tout utiles. Notez que si vous avez des alternatives à proposer, je suis preneur ;).
J'ai donc codé un petit truc, qui certes ne paie pas de mine mais fait ce que je veux : afficher mes fichiers et retenir lesquels ont déjà été vus. Ça s'appelle lutecium et ça ressemble à ça :
(ne faîtes pas attention aux exemples, c'était des tests...)
Notez que on pourrait très bien utiliser ranger ou encore noice dans un terminal, mais ça ne garde pas une trace des épisodes déjà vus.
Pour m'en servir, il me faut python3, la bibliothèque tkinter, et un lecteur de vidéos (mpv).
pkg_add -z python-tkinter-3* mpv
ln -s /usr/local/bin/python3.6 /usr/local/bin/python3
Ensuite, j'installe lutecium dans /usr/local/bin :
ftp -o /usr/local/bin/lutecium http://dev.yeuxdelibad.net/tk-tools/Lu/lutecium
chmod +x /usr/local/bin/lutecium
Et voilà, on peut choisir sa vidéo avec le clavier.
Récupérer les vidéos
Là, c'est chacun sa façon de faire.
Certains feront un montage NFS, d'autres une synchronisation... Pour ma part je fais un peu les deux :
Dans /etc/fstab :
192.168.1.2:/mnt/data/ /home/watcher/NFS nfs rw,nodev,nosuid,soft,noatime 0 0
Ensuite, ajout d'une tâche cron :
crontab -e
@hourly /usr/local/bin/rsync -az --delete /mnt/NFS/ /home/watcher/Videos/
Lecture automatique si on insère une clé USB
Afin de lancer une lecture automatique des fichiers présents sur, par exemple, une clé USB insérée, j'utilise hotplugd.
pkg_add fuse hotplug-diskmount
rcctl enable hotplugd
On complète ensuite le fichier /etc/hotplug/attach
:
#!/bin/sh
DEVCLASS=${1}
DEVNAME=${2}
LOGIN="watcher"
MOUNTPOINT=/home/${LOGIN}/usb
case "${DEVCLASS}" in
2)
mkdir -p -m 1777 "${MOUNTPOINT}"
mount -o nodev,nosuid,noatime /dev/"${DEVNAME}"i "${MOUNTPOINT}"
su "${LOGIN}" -c "mpv --alang=en,fr --slang=fr --save-position-on-quit --fullscreen --keep-open=no \\"${MOUNTPOINT}\\"/*"
;;
esac
On oublie pas le chmod +x /etc/hotplug/attach
. ;)
Vous pouvez faire de même avec un script "detach" :
cat /etc/hotplug/detach
#!/bin/sh
DEVCLASS=$1
DEVNAME=$2
case $DEVCLASS in
2)
/sbin/umount "/mnt/${DEVNAME}"
exit 0
;;
esac
exit 0
Bien qu'on puisse faire nettement moins spécifique comme configuration, avec celle-ci ça fonctionne bien et je sais exactement où sont montées les clés USB. À chaque fois qu'une d'entre elle est branchée, hop ça lit tout ce qui est dessus.
§
Mot de la fin
Ça sera tout pour cette petite présentation. Le clavier est petit, mais me permet de modifier le volume du son, faire pause, accélérer... Tout ce qu'il me faut en fait ;)
Vos idées et suggestions sont les bienvenues, je suis certain qu'on peut améliorer tout ça ;)
Original post of Thuban.Votez pour ce billet sur Planet Libre.