{"id":526,"date":"2021-03-11T18:33:40","date_gmt":"2021-03-11T17:33:40","guid":{"rendered":"http:\/\/crudelis.fr\/site\/sblog\/?p=526"},"modified":"2022-04-27T00:53:15","modified_gmt":"2022-04-26T22:53:15","slug":"un-media-center-htpc-dans-mon-salon","status":"publish","type":"post","link":"https:\/\/crudelis.fr\/site\/sblog\/2021\/03\/un-media-center-htpc-dans-mon-salon\/","title":{"rendered":"Un media center (HTPC) dans mon salon"},"content":{"rendered":"<p>Las de devoir changer de source entre mon Kodi (sur un raspberry pi) et le d\u00e9codeur TV de mon FAI et circonspect quand \u00e0 l'arriv\u00e9e in\u00e9luctable d'un d\u00e9codeur Android TV, j'ai finalement d\u00e9cid\u00e9 de tout r\u00e9unir dans une seule source, un Home Theater Personal Computer (HTPC).<br \/>\nDe cette mani\u00e8re, plus de probl\u00e8me avec le d\u00e9codeur de mon FAI qui surveille mes activit\u00e9s, m'\u00e9coute et change l'acc\u00e8s \u00e0 ses services au gr\u00e9 de ses partenariats.<\/p>\n<p>A moi un ordinateur performant et \u00e9volutif qui sera en mesure de servir tout mes m\u00e9dias et services sans que j'en perde le contr\u00f4le.<\/p>\n<p>Sommaire:<\/p>\n<ul>\n<li><a href=\"#Le-materiel\" data-type=\"internal\">Le mat\u00e9riel<\/a><\/li>\n<li><a href=\"#Configuration-du-BIOS\" data-type=\"internal\">Configuration du BIOS<\/a><\/li>\n<li><a href=\"#Installation-du-systeme-Kubuntu\" data-type=\"internal\">Installation du syst\u00e8me (Kubuntu<\/a><\/li>\n<li><a href=\"#Acces-SSH\" data-type=\"internal\">Acc\u00e8s SSH<\/a><\/li>\n<li><a href=\"#Configuration-initiale-de-l'interface\" data-type=\"internal\">Configuration initiale de l'interface<\/a>\n<ul>\n<li><a href=\"#Resolution-decran\" data-type=\"internal\">R\u00e9solution d'\u00e9cran<\/a><\/li>\n<li><a href=\"#Frequence-de-rafraichissement-de-ecran\" data-type=\"internal\">Fr\u00e9quence de rafra\u00eechissement de l'\u00e9cran<\/a><\/li>\n<li><a href=\"#Largeur-des-barres-de-defilement\" data-type=\"internal\">Largeur des barres de d\u00e9filement<\/a><\/li>\n<li><a href=\"#Bords-de-lecran\" data-type=\"internal\">Bords de l'\u00e9cran<\/a><\/li>\n<li><a href=\"#Verrouillage-apres-sortie-de-veille\" data-type=\"internal\">Verrouillage apr\u00e8s sortie de veille<\/a><\/li>\n<li><a href=\"#Veille-et-hibernation\" data-type=\"internal\">Veille et hibernation<\/a><\/li>\n<li><a href=\"#Configuration-de-la-telecommande\" data-type=\"internal\">Configuration de la t\u00e9l\u00e9commande<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#Adaptation-de-l'interface-pour-un-HTPC\" data-type=\"internal\">Adaptation de l'interface pour un HTPC<\/a>\n<ul>\n<li><a href=\"#La-barre-doutil-principale\" data-type=\"internal\">La barre d'outil principale<\/a><\/li>\n<li><a href=\"#Le-bureau\" data-type=\"internal\">Le bureau<\/a>\n<ul>\n<li><a href=\"#Lancement-rapide-sur-bureau-dedie\" data-type=\"internal\">Lancement rapide sur bureau d\u00e9di\u00e9<\/a><\/li>\n<li><a href=\"#Deplacer-lindication-de-changement-de-volume-qui-se-trouve-en-plein-milieu-de-lecran\" data-type=\"internal\">D\u00e9placer l'indication de changement de volume qui se trouve en plein milieu de l'\u00e9cran<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#Configuration-audio\" data-type=\"internal\">Configuration audio<\/a>\n<ul>\n<li><a href=\"#Stereo-ou-Surround\" data-type=\"internal\">St\u00e9r\u00e9o ou Surround<\/a><\/li>\n<li><a href=\"#Audio-pass-through\" data-type=\"internal\">Audio pass-through<\/a><\/li>\n<li><a href=\"#Le-probleme-des-voix-inaudibles\" data-type=\"internal\">Le probl\u00e8me des voix inaudibles<\/a><\/li>\n<li><a href=\"#Lorsque-le-son-nest-pas-utilise-le-HTPC-produit-daffreux-bruits\" data-type=\"internal\">Lorsque le son n'est pas utilis\u00e9, le HTPC produit d'affreux bruits<\/a><\/li>\n<li><a href=\"#Decalage-entre-le-son-et-limage\" data-type=\"internal\">D\u00e9calage entre le son et l'image<\/a><\/li>\n<li><a href=\"#Son-haute-fidelite\" data-type=\"internal\">Son haute fidelit\u00e9<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#Configuration-de-limage\" data-type=\"internal\">Configuration de l'image<\/a>\n<ul>\n<li><a href=\"#1080-2160-et-upscaling\" data-type=\"internal\">1080, 2160 et upscaling<\/a><\/li>\n<li><a href=\"#Motion-interpolation\" data-type=\"internal\">Motion interpolation<\/a><\/li>\n<li><a href=\"#Mode-FilmMaker\" data-type=\"internal\">Mode FilmMaker<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#Service-Kodi\" data-type=\"internal\">Service: Kodi<\/a>\n<ul>\n<li><a href=\"#Configuration-de-fenetres-KDE-pour-Kodi\" data-type=\"internal\">Configuration de fen\u00eatres KDE pour Kodi<\/a><\/li>\n<li><a href=\"#Forcer-les-montages-NFS-au-demarrage\" data-type=\"internal\">Forcer les montages NFS au d\u00e9marrage<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#Service-Netflix\" data-type=\"internal\">Service: Netflix<\/a>\n<ul>\n<li><a href=\"#Netflix-Profil-Firefox\" data-type=\"internal\">Profil Firefox<\/a><\/li>\n<li><a href=\"#Netflix-DRM\" data-type=\"internal\">DRM<\/a><\/li>\n<li><a href=\"#Netflix-Faciliter-la-navigation-sans-molette\" data-type=\"internal\">Faciliter la navigation sans molette<\/a><\/li>\n<li><a href=\"#Netflix-en-page-daccueil\" data-type=\"internal\">Netflix en page d'accueil<\/a><\/li>\n<li><a href=\"#Netflix-Modules-complementaires-pour-Firefox\" data-type=\"internal\">Modules compl\u00e9mentaires pour Firefox<\/a><\/li>\n<li><a href=\"#Netflix-Optimisation-de-Firefox\" data-type=\"internal\">Optimisation de Firefox<\/a><\/li>\n<li><a href=\"#Netflix-Desactivation-de-lacceleration-materielle\" data-type=\"internal\">D\u00e9sactivation de l'acc\u00e9l\u00e9ration mat\u00e9rielle<\/a><\/li>\n<li><a href=\"#Netflix-Resoudre-les-problemes-de-screen-tearing\" data-type=\"internal\">R\u00e9soudre les probl\u00e8mes de screen tearing<\/a><\/li>\n<li><a href=\"#Configuration-de-fenetres-KDE-pour-Netflix\" data-type=\"internal\">Configuration de fen\u00eatres KDE pour Netflix<\/a><\/li>\n<li><a href=\"#Les-raccourcis-Netflix\" data-type=\"internal\">Les raccourcis Netflix<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#Service-Live-TV\" data-type=\"internal\">Service: Live TV<\/a>\n<ul>\n<li><a href=\"#VLC_Live_TV\" data-type=\"internal\">VLC<\/a>\n<ul>\n<li><a href=\"#Fixer-les-sauts-dimages\" data-type=\"internal\">Fixer les sauts d'images<\/a><\/li>\n<li><a href=\"#Configuration-de-fenetres-KDE-pour-VLC\" data-type=\"internal\">Configuration de fen\u00eatres KDE pour VLC<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#Molotov-TV\" data-type=\"internal\">Molotov TV<\/a>\n<ul>\n<li><a href=\"#Configuration-de-fenetres-KDE-pour-molotov\" data-type=\"internal\">Configuration de fen\u00eatres KDE pour Molotov<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#Service-Replay-TV\" data-type=\"internal\">Service: Replay TV<\/a>\n<ul>\n<li><a href=\"#Replay-Profil-Firefox\" data-type=\"internal\">Profil Firefox<\/a><\/li>\n<li><a href=\"#Replay-Faciliter-la-navigation-sans-molette\" data-type=\"internal\">Faciliter la navigation sans molette<\/a><\/li>\n<li><a href=\"#Replay-Page-daccueil-Firefox-par-defaut\" data-type=\"internal\">Page d'accueil Firefox par d\u00e9faut<\/a><\/li>\n<li><a href=\"#Replay-Modules-complementaires-pour-Firefox\" data-type=\"internal\">Modules compl\u00e9mentaires pour Firefox<\/a><\/li>\n<li><a href=\"#Replay-Optimisation-de-Firefox\" data-type=\"internal\">Optimisation de Firefox<\/a><\/li>\n<li><a href=\"#Replay-Desactivation-de-lacceleration-materielle\" data-type=\"internal\">D\u00e9sactivation de l'acc\u00e9l\u00e9ration mat\u00e9rielle<\/a><\/li>\n<li><a href=\"#Replay-Configuration-de-la-page-daccueil-de-Firefox\" data-type=\"internal\">Configuration de la page d'accueil de Firefox<\/a><\/li>\n<li><a href=\"#Configuration-de-fenetres-KDE-pour-le-Replay-TV-sur-Firefox\" data-type=\"internal\">Configuration de fen\u00eatres KDE pour le Replay TV sur Firefox<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#Service-Youtube\" data-type=\"internal\">Service: Youtube<\/a>\n<ul>\n<li><a href=\"#Youtube-Profil-Firefox\" data-type=\"internal\">Profil Firefox<\/a><\/li>\n<li><a href=\"#Youtube-Faciliter-la-navigation-sans-molette\" data-type=\"internal\">Faciliter la navigation sans molette<\/a><\/li>\n<li><a href=\"#Youtube-Page-daccueil-Firefox-par-defaut\" data-type=\"internal\">Page d'accueil Firefox par d\u00e9faut<\/a><\/li>\n<li><a href=\"#Youtube-Modules-complementaires-pour-Firefox\" data-type=\"internal\">Modules compl\u00e9mentaires pour Firefox<\/a><\/li>\n<li><a href=\"#Youtube-Optimisation-de-Firefox\" data-type=\"internal\">Optimisation de Firefox<\/a><\/li>\n<li><a href=\"#Youtube-Desactivation-de-lacceleration-materielle\" data-type=\"internal\">D\u00e9sactivation de l'acc\u00e9l\u00e9ration mat\u00e9rielle<\/a><\/li>\n<li><a href=\"#Youtube-Configuration-de-la-page-daccueil-de-Firefox\" data-type=\"internal\">Configuration de la page d'accueil de Firefox<\/a><\/li>\n<li><a href=\"#Configuration-de-fenetres-KDE-pour-Youtube\" data-type=\"internal\">Configuration de fen\u00eatres KDE pour Youtube<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#Service-Firefox-tout-usage\" data-type=\"internal\">Service: Firefox tout usage<\/a>\n<ul>\n<li><a href=\"#Firefox-Profil-Firefox\" data-type=\"internal\">Profil Firefox<\/a><\/li>\n<li><a href=\"#Firefox-Faciliter-la-navigation-sans-molette\" data-type=\"internal\">Faciliter la navigation sans molette<\/a><\/li>\n<li><a href=\"#Firefox-Modules-complementaires-pour-Firefox\" data-type=\"internal\">Modules compl\u00e9mentaires pour Firefox<\/a><\/li>\n<li><a href=\"#Firefox-Optimisation-de-Firefox\" data-type=\"internal\">Optimisation de Firefox<\/a><\/li>\n<li><a href=\"#Firefox-Desactivation-de-lacceleration-materielle\" data-type=\"internal\">D\u00e9sactivation de l'acc\u00e9l\u00e9ration mat\u00e9rielle<\/a><\/li>\n<li><a href=\"#Configuration-de-fenetres-KDE-pour-Firefox\" data-type=\"internal\">Configuration de fen\u00eatres KDE pour Firefox<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#Service-MPD\" data-type=\"internal\">Service: MPD<\/a>\n<ul>\n<li><a href=\"#Configuration-de-MPD\" data-type=\"internal\">Configuration de MPD<\/a><\/li>\n<li><a href=\"#MPD-et-PulseAudio\" data-type=\"internal\">MPD et PulseAudio<\/a><\/li>\n<li><a href=\"#Suspendre-la-mise-en-veille-tant-que-la-musique-est-jouee\" data-type=\"internal\">Suspendre la mise en veille tant que la musique est jou\u00e9e<\/a><\/li>\n<li><a href=\"#Configuration-de-fenetres-KDE-pour-MPD\" data-type=\"internal\">Configuration de fen\u00eatres KDE pour MPD<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#Backup-automatique\" data-type=\"internal\">Backup automatique<\/a>\n<ul>\n<li><a href=\"#Reveil-du-HTPC-pour-le-backup\" data-type=\"internal\">R\u00e9veil du HTPC pour le backup<\/a><\/li>\n<li><a href=\"#Planification-du-backup\" data-type=\"internal\">Planification du backup<\/a><\/li>\n<li><a href=\"#Empecher-la-mise-en-veille-durant-le-backup\" data-type=\"internal\">Emp\u00eacher la mise en veille durant le backup<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2 id=\"Le-materiel\">Le mat\u00e9riel<\/h2>\n<p>Ma configuration initiale est simple et peut \u00eatre adapt\u00e9 selon les besoins.<\/p>\n<ul>\n<li>Pour l'\u00e9cran, je dispose d'une TV de 55 pouces en 4K.<\/li>\n<li><del>Le son est servi par une barre de son avec caisson de basse Yamaha YAS-207.<\/del><\/li>\n<li>J'ai finalement migr\u00e9 vers un ensemble 5.1 Cabasse Eole servi par un ampli Denon AVR-X2700H<\/li>\n<\/ul>\n<p>Le HTPC en lui-m\u00eame est construit sur plusieurs \u00e9l\u00e9ments.<\/p>\n<ul>\n<li>Le bo\u00eetier<\/li>\n<\/ul>\n<p>Un SilverStone Milo ML04 de faible encombrement avec suffisamment d'a\u00e9ration pour laisser respirer la configuration. Tr\u00e8s important \u00e9tant donn\u00e9 que l'ensemble va se trouver dans un espace r\u00e9duit d\u00e9di\u00e9 du meuble TV.<\/p>\n<p>Ce bo\u00eetier dispose \u00e9galement d'un emplacement pour un lecteur Blu-ray.<\/p>\n<ul>\n<li>La carte m\u00e8re<\/li>\n<\/ul>\n<p>Une carte m\u00e8re simple, une ASRock H410M\/AC qui dispose d'une sortie HDMI, de Wifi et de Bluetooth.<\/p>\n<ul>\n<li>Le processeur<\/li>\n<\/ul>\n<p>Un Intel Core i5-10400 avec un chipset graphique Intel UHD Graphics 630 int\u00e9gr\u00e9 pour g\u00e9rer la sortie vid\u00e9o.<\/p>\n<p>En l'\u00e9tat, ce couple processeur\/carte m\u00e8re permet de sortir de la 4k \u00e0 30Hz. Th\u00e9oriquement suffisant pour regarder des films en 24 images par secondes. Mais ces processeurs ne sont pas stables pour de la vid\u00e9o 4k.<\/p>\n<p>Tr\u00e8s important \u00e9galement, ce processeur a un TDP de 65W seulement, ce qui permet d'\u00e9viter de surchauffer. Le refroidissement de l'ensemble \u00e9tant un point cl\u00e9. Le HTPC ne doit pas ventiler trop bruyamment.<\/p>\n<ul>\n<li>La carte graphique<\/li>\n<\/ul>\n<p>Le processeur n'\u00e9tant pas capable de fournir de la 4k sans saccades, j'ai ajout\u00e9 une carte graphique simple, une MSI GeForce GT 1030 2GH LP OC.<\/p>\n<p>Son atout est le support de l'HDMI 2.0b, le support jusqu'\u00e0 4k@60Hz, de mani\u00e8re fluide..., et un refroidissement passif, donc parfaitement silencieuse.<\/p>\n<ul>\n<li>Les autres composants\n<ul>\n<li>8 Go de RAM Corsair, avec radiateur, pour faire tourner l'ensemble.<\/li>\n<li>Une alimentation silencieuse 80PLUS, un meilleur rendement \u00e9tant synonyme de moins de d\u00e9perdition de chaleur.<\/li>\n<li>Un SSD de 120Go. Pas de bruit m\u00e9canique et de peu de chaleur d\u00e9gag\u00e9e.<\/li>\n<li>Et 2 ventilateur PWM pour refroidir l'ensemble.<br \/>\nC'est un peu plus cher, mais \u00e7a permet \u00e0 la carte m\u00e8re de r\u00e9guler la vitesse des ventilateurs en fonction de la temp\u00e9rature. Donc moins de bruit quand ce n'est pas n\u00e9cessaire.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"http:\/\/crudelis.fr\/site\/sblog\/wp-content\/uploads\/sites\/3\/2020\/12\/DSC_0390.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/crudelis.fr\/site\/sblog\/wp-content\/uploads\/sites\/3\/2020\/12\/DSC_0390-1024x724.jpg\" width=\"90%\" height=\"90%\"\/><\/a><figcaption>L'ensemble des composants du HTPC<\/figcaption><\/figure>\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"http:\/\/crudelis.fr\/site\/sblog\/wp-content\/uploads\/sites\/3\/2020\/12\/DSC_0391-e1609426499709.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/crudelis.fr\/site\/sblog\/wp-content\/uploads\/sites\/3\/2020\/12\/DSC_0391-e1609426499709.jpg\" width=\"90%\" height=\"90%\"\/><\/a><\/figure>\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/crudelis.fr\/site\/sblog\/wp-content\/uploads\/sites\/3\/2021\/01\/DSC_0394.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/crudelis.fr\/site\/sblog\/wp-content\/uploads\/sites\/3\/2021\/01\/DSC_0394.jpg\" width=\"90%\" height=\"90%\"\/><\/a><figcaption>Le HTPC compl\u00e8tement assembl\u00e9<\/figcaption><\/figure>\n<p>Le meilleur pour la fin, une t\u00e9l\u00e9commande Rii Mini i25 Wireless, un 3 en 1 clavier\/souris\/t\u00e9l\u00e9commande m\u00e9dia.<br \/>\nIndispensable pour utiliser son HTPC depuis le canap\u00e9.<\/p>\n<p>Tout l'int\u00e9r\u00eat c'est que ce genre de t\u00e9l\u00e9commande se comporte comme un clavier\/souris sans fil avec des touches multim\u00e9dia. C'est donc compatible avec n'importe quel ordinateur sans besoin de configuration suppl\u00e9mentaire.<\/p>\n<h2 id=\"Configuration-du-BIOS\">Configuration du BIOS<\/h2>\n<p>De l\u00e9g\u00e8res customisations du BIOS vont \u00eatre n\u00e9cessaire pour tirer tout le parti de notre HTPC.<\/p>\n<ul>\n<li><strong>Ventilateurs en Silent Mode<\/strong><\/li>\n<\/ul>\n<p>Premi\u00e8rement, la vitesse des ventilateurs du ch\u00e2ssis, les 2 ventilateurs PWM doivent extraire la chaleur hors de la carcasse, mais en limitant le bruit. Nous allons donc r\u00e9gler ces 2 ventilateurs en <em>Silent Mode<\/em>.<br \/>\n\u00c7a n'emp\u00eachera pas les ventilateurs de suivre la mont\u00e9e en temp\u00e9rature, simplement ils seront moins enclins \u00e0 s'agiter si ce n'est pas n\u00e9cessaire.<\/p>\n<p>Nous allons laisser toutefois le ventilateur du processeur en <em>Standard Mode<\/em> pour ne pas affecter ses performances.<\/p>\n<ul>\n<li><strong>D\u00e9marrage sur USB<\/strong><\/li>\n<\/ul>\n<p>Nous allons \u00e9galement activer <em>USB Keyboard\/Remote Power<\/em> et <em>Legacy USB port<\/em> pour permettre la sortie de veille depuis une t\u00e9l\u00e9commande.<\/p>\n<blockquote><p>\n  Il s'av\u00e8re que Rii Mini i25 Wireless n'est pas capable de r\u00e9veiller la machine, tandis que le Mini Wireless Keyboard K01+ (de la m\u00eame marque) en est parfaitement capable.<br \/>\n  Un fait bien \u00e9trange que je suis incapable d'expliquer...<\/p>\n<p>  Dans ce cas de figure, faute d'une t\u00e9l\u00e9commande conciliante, je vous conseille une application Wake On Lan \u00e0 installer sur un smartphone.\n<\/p><\/blockquote>\n<ul>\n<li><strong>R\u00e9veil sur alarme RTC<\/strong><\/li>\n<\/ul>\n<p>Afin de supporter la sortie de veille ou le d\u00e9marrage sur l'horloge RTC, qui nous servira aux backups. Nous allons configurer <em>RTC Alarm Power On<\/em> sur <em>By OS<\/em>.<\/p>\n<h2 id=\"Installation-du-systeme-Kubuntu\">Installation du syst\u00e8me (Kubuntu)<\/h2>\n<p>Bien entendu chacun est libre d'installer la distribution et l'interface de son choix, ma pr\u00e9f\u00e9rence va \u00e0 Kubuntu pour plusieurs raisons<\/p>\n<ul>\n<li>J'ai l'habitude de travailler sous Debian avec l'interface KDE !<\/li>\n<li>Ubuntu permet d'avoir un support large en cas de probl\u00e8me et est r\u00e9guli\u00e8rement mis \u00e0 jour.<\/li>\n<li>Du fait que KDE soit hautement configurable, c'est une interface qui va pouvoir \u00eatre soumises \u00e0 de nombreuses modifications pour \u00eatre pratique \u00e0 utiliser dans le cadre d'un HTPC.<\/li>\n<\/ul>\n<p><em>Notons toutefois que toutes les explications qui suivront tiendrons compte d'une interface de bureau KDE sous Ubuntu.<\/em><\/p>\n<p>Je ne vais pas d\u00e9tailler ici l'installation de Kubuntu, qui est particuli\u00e8rement simple, si n\u00e9cessaire ubuntu-fr propose une <a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/doc.ubuntu-fr.org\/installation\">documentation<\/a>.<\/p>\n<p>Le seul <strong>point important<\/strong> lors de l'installation est de veiller \u00e0 pr\u00e9voir une partition swap de taille sup\u00e9rieure \u00e0 la m\u00e9moire vive install\u00e9e dans le HTPC. Sans cela, le HTPC ne sera pas en mesure de se mettre en hibernation lorsqu'il ne sera pas utilis\u00e9.<br \/>\nPour notre cas, le swap sera de 10Go.<\/p>\n<p>Je conseille \u00e9galement d'activer l'ouverture de session automatique, pour plus de confort.<\/p>\n<h2 id=\"Acces-SSH\">Acc\u00e8s SSH<\/h2>\n<p>C'est tout \u00e0 la fois une \u00e9tape tout \u00e0 fait optionnelle et pourtant indispensable de mon point de vue.<br \/>\nSi l'objectif d'un HTPC n'est certainement pas d'\u00eatre utilis\u00e9 via SSH, il est ind\u00e9niable qu'un vrai clavier est irrempla\u00e7able pour les op\u00e9rations de maintenance et m\u00eame certaines commandes qui vont suivre.<\/p>\n<p>Kubuntu ne dispose pas d'un serveur SSH par d\u00e9faut, nous allons donc installer le paquet <em>ssh<\/em>.<\/p>\n<pre><code class=\"language-bash \">sudo apt install ssh\n<\/code><\/pre>\n<p>Des configurations suppl\u00e9mentaires sont disponible dans <em>\/etc\/ssh\/ssd_config<\/em> mais pas indispensable, pour ma part je modifie toujours le port par d\u00e9faut.<\/p>\n<p>Rien de plus \u00e0 faire pour pouvoir profiter \u00e0 tout moment d'un acc\u00e8s SSH ind\u00e9pendant de l'interface graphique du HTPC.<\/p>\n<h2 id=\"Configuration-initiale-de-l'interface\">Configuration initiale de l'interface<\/h2>\n<h6 id=\"Resolution-decran\"><\/h6>\n<h3>- <strong>R\u00e9solution d'\u00e9cran<\/strong><\/h3>\n<p>La premi\u00e8re bonne nouvelle \u00e0 la fin de l'installation c'est que Ubuntu g\u00e8re nativement et automatiquement la r\u00e9solution 4k sans besoin de configurer quoi que soit.<br \/>\nToutefois, \u00e0 30Hz, la d\u00e9synchronisation avec la fr\u00e9quence des vid\u00e9os se remarque beaucoup plus. Il devient donc n\u00e9cessaire de conna\u00eetre la fr\u00e9quence de rafra\u00eechissement des vid\u00e9os pour s'y conformer.<\/p>\n<p>Les sources 4k sont encore rares, pour faciliter la lecture de vid\u00e9o sur Firefox ou \u00e9viter une charge de travail trop importante en upscaling, nous pourrions d\u00e9cider de rester en 1920\u00d71080 60Hz pour l'usage courant et basculer en 4k seulement quand n\u00e9cessaire.<\/p>\n<p>Cela a toutefois des cons\u00e9quences inattendues en raison d'un <a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/bugs.kde.org\/show_bug.cgi?id=423600\">bug KDE<\/a>, la configuration DPI de sddm (l'\u00e9cran de login) va \u00eatre appliqu\u00e9e au bureau plasma.<br \/>\nPour faire simple, les ic\u00f4nes et le texte risquent d'\u00eatre tout petits et illisibles. Et les widgets vont \u00eatre d\u00e9plac\u00e9 \u00e0 chaque ouverture de session, ce qui est tr\u00e8s aga\u00e7ant...<\/p>\n<p>Pour corriger ce probl\u00e8me, il faut conna\u00eetre la configuration DPI de la session plasma.<\/p>\n<pre><code class=\"language-bash \">xdpyinfo | grep -B2 resolution\n<\/code><\/pre>\n<p>Pour ma part, la session plasma est \u00e0 96 dpi.<br \/>\nPuis forcer sddm \u00e0 utiliser la m\u00eame configuration.<\/p>\n<pre><code class=\"language-bash \">sudo nano \/etc\/sddm.conf.d\/kde_settings.conf\n<\/code><\/pre>\n<pre><code class=\"\">[X11]\nServerArguments=-dpi 96\nEnableHiDPI=true\n\n[Wayland]\nEnableHiDPI=true\n<\/code><\/pre>\n<pre><code class=\"language-bash \">sudo nano \/usr\/share\/sddm\/scripts\/Xsetup\n<\/code><\/pre>\n<pre><code class=\"\">xrandr --dpi 96\n<\/code><\/pre>\n<p>Si toutefois nous souhaitons garder une r\u00e9solution de 3840\u00d72160, il nous faudra augmenter l'\u00e9chelle globale pour que l'interface ne soit pas trop petite.<br \/>\nToutefois, c'est tentant je sais, mais <strong>n'utilisez jamais une \u00e9chelle qui ne soit pas un nombre entier !!! Pas de 125, 150 ou 175.<\/strong><br \/>\n<strong>Ceci s'appelle du \"fractional scaling\", c'est encore r\u00e9cent et \u00e7a provoquera d'affreux lags sur les vid\u00e9os fullscreen.<\/strong><\/p>\n<h6 id=\"Frequence-de-rafraichissement-de-ecran\"><\/h6>\n<h3>- <strong>Fr\u00e9quence de rafra\u00eechissement de l'\u00e9cran<\/strong><\/h3>\n<p>Si l'\u00e9cran est configur\u00e9 en 2160@30, soit la r\u00e9solution 4k disponible en 30Hz. Nous pouvons parfois \u00eatre confront\u00e9 \u00e0 des probl\u00e8mes de synchronisation entre le taux de rafra\u00eechissement et la fr\u00e9quence des vid\u00e9os, visible en particulier sur les travelling.<br \/>\nDans ce cas, il peut \u00eatre pr\u00e9f\u00e9rable d'avoir un taux de rafra\u00eechissement plus proche de celui de la vid\u00e9o.<\/p>\n<p>Ce param\u00e8tre peut \u00eatre modifi\u00e9 dans:<\/p>\n<p><em>Configuration du syst\u00e8me > Affichage et \u00c9cran > Configuration de l'affichage > Taux de rafra\u00eechissement<\/em><\/p>\n<p>Toutefois, et afin de garder davantage de flexibilit\u00e9, nous allons nous permettre le luxe de changer le taux de rafra\u00eechissement en fonction de nos activit\u00e9s.<br \/>\nDans le panneau de configuration pr\u00e9c\u00e9dent, nous avons pu constater les taux de rafra\u00eechissement disponible pour notre \u00e9cran. Avec cet \u00e9cran et ce chipset graphique, je dispose de 24, 25 ou 30 Hz pour une r\u00e9solution 4k et jusqu'\u00e0 120Hz pour 1080.<\/p>\n<blockquote><p>\n  Le nombre d'images par seconde d\u00e9pend de la source.<br \/>\n  - 24 FPS correspond au standard du cin\u00e9ma. De nombreuses s\u00e9ries am\u00e9ricaines utilisent \u00e9galement cette fr\u00e9quence pour le rendu cin\u00e9ma qu'elle procure.<br \/>\n  - 25 FPS est la fr\u00e9quence des formats PAL et SECAM utilis\u00e9s \u00e0 la t\u00e9l\u00e9vision, notamment fran\u00e7aise et dans une grande partie du monde.<br \/>\n  - 30 FPS est la fr\u00e9quence du format NTSC pour la t\u00e9l\u00e9vision, essentiellement am\u00e9ricaine et japonaise.<\/p>\n<p>  On peut trouver une r\u00e9partition des formats utilis\u00e9 de par le monde sur cette <a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/thumb\/0\/0d\/PAL-NTSC-SECAM.svg\/1280px-PAL-NTSC-SECAM.svg.png\">carte de Wikipedia<\/a>.\n<\/p><\/blockquote>\n<p>Pour changer la fr\u00e9quence de rafra\u00eechissement de l'\u00e9cran simplement et rapidement, nous allons cr\u00e9er des raccourcis rapide dans la barre d'outil principale en cr\u00e9ant un <em>Composant graphique<\/em> (Widget) <em>Lancement rapide<\/em> dans lequel nous allons glisser des fichiers <em>desktop<\/em>.<\/p>\n<p>Pour ce faire, nous allons <em>Cr\u00e9er un nouveau > Lien vers une application<\/em>.<br \/>\nDans le champs <em>Commande :<\/em> nous ajouterons<\/p>\n<pre><code class=\"\">xrandr --size 3840x2160 --rate 24\n<\/code><\/pre>\n<p>ou<\/p>\n<pre><code class=\"\">xrandr --size 1920x1080 --rate 60\n<\/code><\/pre>\n<p>Et ainsi de suite pour chaque taux de rafra\u00eechissement dont nous souhaitons disposer rapidement.<\/p>\n<p>Pour v\u00e9rifier le taux de rafra\u00eechissement et son bon fonctionnement, nous pourrons nous tourner vers ce site: <a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/anydesk.com\/benchmark\/framerate.html\">Framerate Benchmark<\/a>.<\/p>\n<p>Pour \u00e9viter ce d\u00e9sagr\u00e9ment, le plus simple est d'opter pour une r\u00e9solution 4k@60<\/p>\n<h6 id=\"Largeur-des-barres-de-defilement\"><\/h6>\n<h3>- <strong>Largeur des barres de d\u00e9filement<\/strong><\/h3>\n<p>En utilisant une air mouse sans molette de d\u00e9filement, les barres de d\u00e9filement tendent \u00e0 devenir un outil indispensable... Heureusement KDE permet de changer la taille des barres de d\u00e9filement (les ascenseurs).<\/p>\n<p>Ce param\u00e8tre se trouve dans <em>Configuration du syst\u00e8me > Apparence des applications<\/em><br \/>\nEn choisissant un <em>style d'application<\/em>, il est possible de le configurer.<br \/>\nParmi les styles par d\u00e9faut, seul le style <em>Oxygen<\/em> permet de changer la largeur des barres de d\u00e9filement.<\/p>\n<p>Toutefois, en ce qui concerne les applications utilisant gtk (tel Firefox), ce param\u00e8tre sera ignor\u00e9. Pour pallier ce d\u00e9faut, nous allons modifier les barres de d\u00e9filement gtk.<\/p>\n<pre><code class=\"language-bash \">nano $HOME\/.config\/gtk-3.0\/gtk.css\n<\/code><\/pre>\n<p>Et ajouter \u00e0 la suite:<\/p>\n<pre><code class=\"language-css \">.scrollbar.vertical slider,\nscrollbar.vertical slider {\nmin-width: 15px;\n}\n<\/code><\/pre>\n<h6 id=\"Bords-de-lecran\"><\/h6>\n<h3>- <strong>Bords de l'\u00e9cran<\/strong><\/h3>\n<p>Sauf \u00e0 \u00eatre particuli\u00e8rement habile avec une air mouse, je conseille vivement de d\u00e9sactiver les actions en bord d'\u00e9cran.<\/p>\n<p>Ce param\u00e8tre se trouve dans <em>Configuration du syst\u00e8me > Comportement de l'espace de travail > Bords de l'\u00e9cran<\/em><\/p>\n<h6 id=\"Verrouillage-apres-sortie-de-veille\"><\/h6>\n<h3>- <strong>Verrouillage apr\u00e8s sortie de veille<\/strong><\/h3>\n<p>Par d\u00e9faut, kubuntu verrouille la session apr\u00e8s la sortie de veille. Ce n'est pas le comportement souhait\u00e9.<\/p>\n<p>Ce param\u00e8tre se trouve dans <em>Configuration du syst\u00e8me > Verrouillage de l'\u00e9cran > Apr\u00e8s le r\u00e9veil<\/em><\/p>\n<h6 id=\"Veille-et-hibernation\"><\/h6>\n<h3>- <strong>Veille et hibernation<\/strong><\/h3>\n<p>Il n'est pas souhaitable que le HTPC reste toujours allum\u00e9, dans le m\u00eame temps nous souhaitons qu'il soit rapidement op\u00e9rationnel.<br \/>\nPour cela nous allons utiliser la mise en veille et l'hibernation sur le long terme.<\/p>\n<p>Avant toutefois de param\u00e9trer l'hibernation, il va \u00eatre n\u00e9cessaire de l'activer dans ubuntu. (Pour une raison \u00e9trange, l'hibernation n'est pas possible par d\u00e9faut dans ubuntu...)<\/p>\n<blockquote><p>\n  Les informations qui suivent sont tir\u00e9es du tuto <a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/doc.ubuntu-fr.org\/tutoriel\/activer_hibernation\">Comment activer l'hibernation<\/a>.\n<\/p><\/blockquote>\n<p>Installons tout d'abord le paquet <em>pm-utils<\/em> pour obtenir la commande d'hibernation.<\/p>\n<pre><code class=\"language-bash \">sudo apt install pm-utils\n<\/code><\/pre>\n<p>Nous allons ensuite cr\u00e9er le fichier <em>\/etc\/polkit-1\/localauthority\/50-local.d\/com.ubuntu.enable-hibernate.pkla<\/em><\/p>\n<pre><code class=\"language-bash \">sudo nano \/etc\/polkit-1\/localauthority\/50-local.d\/com.ubuntu.enable-hibernate.pkla\n<\/code><\/pre>\n<p>Et y ajouter le code suivant<\/p>\n<pre><code class=\"\">[R\u00e9active hiberner par d\u00e9faut dans upower]\nIdentity=unix-user:*\nAction=org.freedesktop.upower.hibernate\nResultActive=yes\n\n[R\u00e9active hiberner par d\u00e9faut dans logind]\nIdentity=unix-user:*\nAction=org.freedesktop.login1.hibernate;org.freedesktop.login1.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hibernate-ignore-inhibit\nResultActive=yes\n<\/code><\/pre>\n<p>Et enfin red\u00e9marrer le HTPC.<\/p>\n<p>A pr\u00e9sent nous pouvons faire usage de l'hibernation dans notre HTPC.<\/p>\n<p>Ce param\u00e8tre se trouve dans <em>Configuration du syst\u00e8me > Gestion de l'\u00e9nergie > \u00c9conomie d'\u00e9nergie<\/em><\/p>\n<ul>\n<li><em>> Suspendre la session<\/em><\/li>\n<\/ul>\n<p>Nous allons choisir une mise en veille automatique apr\u00e8s un temps raisonnable d'inactivit\u00e9.<br \/>\nCela permettra de ne pas garder le HTPC inutilement allum\u00e9 si il n'est pas utilis\u00e9.<\/p>\n<ul>\n<li><em>> En veille, hiberner apr\u00e8s une certaine p\u00e9riode d'inactivit\u00e9<\/em><\/li>\n<\/ul>\n<p>Ceci va permettre de placer le HTPC en hibernation suite \u00e0 la mise en veille pour ainsi \u00e9conomiser le courant.<br \/>\nLa p\u00e9riode d'inactivit\u00e9 avant hibernation est de 3 heures par d\u00e9faut, cette valeur par d\u00e9faut peut \u00eatre modifi\u00e9e dans le fichier <em>\/etc\/systemd\/sleep.conf<\/em><\/p>\n<p>Cette \"p\u00e9riode d'inactivit\u00e9\" doit \u00eatre comprise comme p\u00e9riode de veille du HTPC. Ce d\u00e9lai s'ajoute donc \u00e0 celui pr\u00e9c\u00e9dent la mise en veille.<\/p>\n<ul>\n<li><em>> Prise en charge des \u00e9v\u00e8nements de boutons<\/em><\/li>\n<\/ul>\n<p>Nous allons rester coh\u00e9rent et demander une mise en hibernation imm\u00e9diate lors de l'appui sur le bouton power.<\/p>\n<h6 id=\"Configuration-de-la-telecommande\"><\/h6>\n<h3>- <strong>Configuration de la t\u00e9l\u00e9commande<\/strong><\/h3>\n<p>KDE permet de changer les raccourcis de pratiquement tout \u00e9l\u00e9ment de l'interface.<\/p>\n<p>Ces param\u00e8tres se trouvent dans <em>Configuration du syst\u00e8me > Raccourcis<\/em><\/p>\n<p>La t\u00e9l\u00e9commande ne disposant pas de touche F4, il nous faudra aller chercher la croix en haut \u00e0 droite des fen\u00eatres pour esp\u00e9rer les fermer.<br \/>\nPour pallier cet aga\u00e7ant d\u00e9faut, nous allons utiliser un autre raccourci clavier.<br \/>\nJ'ai choisi la combinaison Ctrl+Back<\/p>\n<p>Ce raccourci se trouve dans <em>> Raccourcis globaux > Kwin > Fermer une fen\u00eatre<\/em><\/p>\n<p>On peut noter \u00e9galement que le bouton d'extinction de la t\u00e9l\u00e9commande est en r\u00e9alit\u00e9 un bouton de mise en veille. Cela ne pose pas de probl\u00e8me puisque la mise en veille suivi de l'hibernation est pr\u00e9f\u00e9rable.<br \/>\nSi nous souhaitions toutefois changer ce raccourci, il se trouve dans <em>> Raccourcis globaux > Gestion de l'\u00e9nergie<\/em><\/p>\n<p>Et puisque qu'\u00e0 l'\u00e9tape suivante nous allons configurer des bureaux virtuels et d\u00e9dier le premier au dashboard principal, nous allons configurer le bouton Home de la t\u00e9l\u00e9commande pour qu'il m\u00e8ne directement \u00e0 ce bureau.<\/p>\n<p><em>> Raccourcis globaux > Kwin > Passer au bureau 1<\/em><\/p>\n<p>De m\u00eame pour faciliter la navigation entre les bureaux, nous pouvons sacrifier les touches PgUp et PgDn pour passer respectivement au bureau pr\u00e9c\u00e9dent et suivant.<\/p>\n<p><em>> Raccourcis globaux > Kwin > Passer au bureau pr\u00e9c\u00e9dent<\/em><br \/>\n<em>> Raccourcis globaux > Kwin > Passer au bureau suivant<\/em><\/p>\n<h2 id=\"Adaptation-de-l'interface-pour-un-HTPC\">Adaptation de l'interface pour un HTPC<\/h2>\n<p>Bien que la t\u00e9l\u00e9commande choisie dispose d'un clavier et d'une air mouse, force est de constater qu'il ne s'agit pas d'un ordinateur avec une interface clavier\/souris habituelle. Nous souhaitons une interface simple \u00e0 utiliser avec une t\u00e9l\u00e9commande, plus proche de ce qu'on peut attendre d'un HTPC.<\/p>\n<p>Mon choix se porte sur une interface en multi-bureaux avec des bureaux d\u00e9di\u00e9s \u00e0 chaque activit\u00e9 et un bureau principal servant \u00e0 la navigation.<\/p>\n<h6 id=\"La-barre-doutil-principale\"><\/h6>\n<h3>- <strong>La barre d'outil principale<\/strong><\/h3>\n<p>La barre d'outil principale au bas de l'\u00e9cran est relativement importante, pour les notifications notamment. Nous pourrions nous en passer \u00e9ventuellement.<br \/>\nJ'ai fais le choix de la garder.<\/p>\n<p>Si on fait le choix de garder cette barre d'outils, il est toutefois pr\u00e9f\u00e9rable d'agrandir sa taille pour avoir une meilleure visibilit\u00e9.<br \/>\nPour ce faire, un clic droit sur la barre d'outils permet d'acc\u00e9der \u00e0 sa configuration.<\/p>\n<p><em>> Modifier tableau de bord...<\/em><\/p>\n<p>Ensuite, nous allons remplacer le menu principal, le Lanceur d'applications par un menu plus facile \u00e0 utiliser sans souris.<\/p>\n<p>Un clic droit sur le Lanceur d'application permet de s\u00e9lectionner <em>Afficher les Alternatives...<\/em> Nous choisirons <em>Tableau de bord des applications<\/em> en remplacement.<\/p>\n<h6 id=\"Le-bureau\"><\/h6>\n<h3>- <strong>Le bureau<\/strong><\/h3>\n<p>Le bureau va se pr\u00e9senter comme le coeur de notre interface de navigation.<br \/>\nPour commencer, nous allons utiliser une vue principale de type <em>Bureau<\/em> au lieu de <em>Vue de dossier<\/em> pour \u00e9viter les interf\u00e9rences de divers fichiers dans le dossier.<\/p>\n<p>Ensuite nous allons ajouter un ensemble de <em>Composants graphiques<\/em> (Widgets) pour constituer l'interface et avoir un monitoring simple sur l'activit\u00e9 du HTPC.<\/p>\n<ul>\n<li>Gestionnaire de bureaux<\/li>\n<\/ul>\n<p>Pour le confort de l'interface, le choix se fait sur 8 bureaux en 4 lignes.<\/p>\n<p><em>Configuration du syst\u00e8me > Comportement de l'espace de travail > Bureaux virtuels<\/em><\/p>\n<p>Le widget lui-m\u00eame sera configur\u00e9 pour afficher le <em>Nom du bureau<\/em> et <em>Afficher le bureau<\/em> lorsqu'il sera s\u00e9lectionn\u00e9.<br \/>\nAvec cette configuration, nous disposons d'un moyen simple de changer d'activit\u00e9 en cliquant simplement sur le bureau souhait\u00e9.<\/p>\n<ul>\n<li>Lancement rapide<\/li>\n<\/ul>\n<p>Ce widget va nous servir \u00e0 avoir un acc\u00e8s rapide sur nos services.<\/p>\n<p>Ce faisant, nous pourrons ais\u00e9ment d\u00e9marrer Kodi ou Netflix depuis le bureau.<\/p>\n<ul>\n<li>Surveillance de la temp\u00e9rature<\/li>\n<\/ul>\n<p><a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/store.kde.org\/p\/1408433\/\">Thermal Monitor<\/a> est un widget qui n'est pas install\u00e9 par d\u00e9faut, il est toutefois tr\u00e8s simple de l'ajouter \u00e0 KDE en cliquant sur <em>Obtenir de nouveaux composants graphiques<\/em>.<\/p>\n<p>Ce widget nous permettra de garder un oeil sur la temp\u00e9rature du HTPC.<\/p>\n<ul>\n<li>Tableau de bord des applications<\/li>\n<\/ul>\n<p>Pour terminer, nous allons ajouter un second Tableau de bord des applications pour avoir un acc\u00e8s rapide \u00e0 l'aide de la souris si n\u00e9cessaire.<\/p>\n<p>La configuration de l'interface est \u00e0 pr\u00e9sent termin\u00e9e et pr\u00eate pour un usage d\u00e9di\u00e9 \u00e0 un HTPC.<\/p>\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/crudelis.fr\/site\/sblog\/wp-content\/uploads\/sites\/3\/2021\/02\/Screenshot_20210211_013742.png\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/crudelis.fr\/site\/sblog\/wp-content\/uploads\/sites\/3\/2021\/02\/Screenshot_20210211_013742.png\" width=\"90%\" height=\"90%\"\/><\/a><figcaption>Mon HTPC sur ma TV 4k<\/figcaption><\/figure>\n<h6 id=\"Lancement-rapide-sur-bureau-dedie\"><\/h6>\n<h3>- <strong>Lancement rapide sur bureau d\u00e9di\u00e9<\/strong><\/h3>\n<p>Le widget de lancement rapide abrite donc nos diff\u00e9rents services, mais afin d'\u00e9viter de devoir se placer sur le bureau correspondant pour ouvrir les services correspondants nous allons modifier les lanceurs de ces services.<\/p>\n<p>L'objectif est simple, s'assurer que le service n'est pas d\u00e9j\u00e0 actif, pour ne pas le dupliquer, d\u00e9marrer le service sur son bureau puis se placer sur le bureau correspondant.<br \/>\nLe script nous permettra \u00e9galement d'utiliser la r\u00e9solution et la fr\u00e9quence de rafra\u00eechissement id\u00e9ale pour chaque usage.<\/p>\n<p>Tout d'abord, nous allons installer le paquet <em>wmctrl<\/em> pour changer de bureau en ligne de commande.<\/p>\n<pre><code class=\"language-bash \">sudo apt install wmctrl\n<\/code><\/pre>\n<p>Ensuite nous allons cr\u00e9er un script qui sera le hub de tous les d\u00e9marrages de services.<\/p>\n<blockquote><p>\n  Quelques explications sur ce script:<\/p>\n<ul>\n<li><em>start_app<\/em> est la fonction qui se charge du d\u00e9marrage de l'application, ainsi que de la surveillance de celle-ci.<br \/>\n  Le premier argument est l'application \u00e0 ex\u00e9cuter.<br \/>\n  Le second la chaine de caract\u00e8re \u00e0 surveiller dans la liste des processus pour savoir si l'application est d\u00e9j\u00e0 en cours.<\/p>\n<\/li>\n<li>\n<p><em>screen_config<\/em> permet de choisir, selon l'application, la r\u00e9solution d'\u00e9cran \u00e0 utiliser, 1080 ou 2160 ainsi que la fr\u00e9quence de rafra\u00eechissement de l'\u00e9cran \u00e0 utiliser.<br \/>\n  Ces param\u00e8tres pourront n\u00e9anmoins \u00eatre modifi\u00e9s avec les raccourcis cr\u00e9\u00e9s pr\u00e9alablement.<\/p>\n<\/li>\n<li>\n<p><em>move_to_desktop<\/em> est la fonction qui va se charger de basculer l'affichage courant sur le bureau voulu.<\/p>\n<\/li>\n<li>\n<p><em>sound_profile<\/em> permet, selon l'application, de basculer entre le mode surround 5.1 et st\u00e9r\u00e9o.<br \/>\n  Il permet \u00e9galement de d\u00e9finir un d\u00e9lai de latence pour le son.<br \/>\n  C'est aussi une forme de failsafe pour \u00e9viter que pulseaudio bascule sur un mode par d\u00e9faut si l'ampli n'\u00e9tait pas allum\u00e9 au d\u00e9marrage.<\/p>\n<\/li>\n<li>\n<p><em>sound_config<\/em> est utilis\u00e9 pour basculer entre diff\u00e9rentes configuration PulseAudio.<br \/>\n  Cela permet d'avoir des r\u00e9glages PulseAudio diff\u00e9rent selon les applications et de changer \u00e0 la vol\u00e9e en d\u00e9marrant un nouveau service.<br \/>\n  La fonction prend en argument le nom du fichier de configuration \u00e0 utiliser.<\/p>\n<\/li>\n<li>\n<p><em>screensaver_config<\/em> permet \u00e9ventuellement d'utiliser xscreensaver pour certaines applications, la musique en particulier ou de le d\u00e9sactiver.<br \/>\n  La fonction prend en argument le nom du fichier de configuration \u00e0 utiliser. Ou <code>disable<\/code> pour ne pas utiliser de screensaver.<\/p>\n<\/li>\n<\/ul>\n<\/blockquote>\n<pre><code class=\"language-bash \">#!\/bin\/bash\n\n# Get the path of this script\nscript_dir=\"$(dirname \"$(realpath \"$0\")\")\"\n\n# Take as first argument the name of the service to run\n\nservice_to_start=$1\nfreq_change=1\nsound_change=1\n\nmove_to_desktop ()\n{\n    local desktop=$(( $1 - 1 ))\n    # Move to the indicated desktop\n    wmctrl -s $desktop\n}\n\ncheck_app_is_running ()\n{\n    local binary=\"$1\"\n    ps -aux | grep --word-regexp \"$binary\" | grep --invert-match grep &gt; \/dev\/null\n}\n\nstart_app ()\n{\n    local app=\"$1\"\n    local binary=\"$2\"\n\n    if ! check_app_is_running \"$binary\"\n    then\n        echo \"Run $app\"\n        nohup $app &gt; \/dev\/null 2&gt;&amp;1 &amp;\n    else\n        echo \"$app is already running\"\n        # Do not change the framerate back if the app is already running.\n        freq_change=0\n        sound_change=0\n    fi\n}\n\nstart_firefox_profile ()\n{\n    local profile=$1\n    start_app \"firefox -P $profile --no-remote\" \"\/usr\/lib\/firefox\/firefox -P $profile\"\n}\n\nscreen_config ()\n{\n    local size=$1\n    local framerate=$2\n    if [ \"$size\" == \"FHD\" ]\n    then\n        size=1920x1080\n    else # UHD\n        size=3840x2160\n    fi\n    if [ $freq_change -eq 1 ]\n    then\n        xrandr --size $size --rate $framerate\n    fi\n}\n\nsound_profile ()\n{\n    local profile=$1\n    local latency=$2\n    if [ \"$profile\" == \"surround\" ]\n    then\n        profile=5.1\n    else # stereo\n        profile=Stereo\n    fi\n\n    if [ $sound_change -eq 1 ]\n    then\n        # Get the (first) available profile\n        # Gives something like output:hdmi-surround\n        local profile_name=$(pacmd list-cards | grep \"[^&lt;]output:\" | grep --invert-match \"available: no\" \\\n        | grep --max-count=1 \"$profile\" | awk '{ print $1 }' | cut -d: -f1,2)\n        # Get the (first) index of the sound card\n        # Gives usually 0\n        local card_index=$(pacmd list-cards | grep --max-count=1 index | awk '{ print $2 }')\n\n        # Set the profile to use\n        pactl set-card-profile $card_index $profile_name\n\n        # Set the default latency in ms\n        \"$script_dir\/Latency.sh\" $latency 1\n    fi\n}\n\nsound_config () {\n    local type=\"$1\"\n    # Check the current config\n    if [ \"$(md5sum \/etc\/pulse\/daemon.conf | awk '{print $1}')\" != \"$(md5sum $HOME\/Ressources\/pulse_${type} | awk '{print $1}')\" ]\n    then\n        # Do change the PulseAudio config only if not already in use.\n        cp $HOME\/Ressources\/pulse_${type} \/etc\/pulse\/daemon.conf\n        pulseaudio --kill; sleep 2; pulseaudio --start\n    fi\n}\n\nscreensaver_config () {\n    local type=\"$1\"\n    if [ \"$type\" == \"disable\" ]\n    then\n        xscreensaver-command --exit\n    else\n        cp $HOME\/Ressources\/xscreensaver_${type} $HOME\/.xscreensaver\n        xscreensaver-command --restart\n        xscreensaver -nosplash &amp;\n    fi\n}\n\n## List of services to run with this script\n\ncase $service_to_start in\n    # Kodi\n    Kodi)\n        echo \"Start Kodi\"\n        start_app kodi \/usr\/bin\/kodi\n        screen_config UHD 24\n        move_to_desktop 2\n        sound_profile surround 0\n        screensaver_config disable\n        sound_config Movie\n        ; ;\n\n    # Netflix\n    Netflix)\n        echo \"Start Netflix\"\n        start_firefox_profile Netflix\n        screen_config FHD 60\n        move_to_desktop 3\n        sound_profile surround 0\n        screensaver_config disable\n        sound_config Movie\n        ; ;\n\n    # Molotov TV\n    Molotov)\n        echo \"Start Molotov\"\n        start_app $HOME\/Ressources\/molotov.AppImage molotov.AppImage\n        screen_config FHD 25\n        move_to_desktop 4\n        sound_profile surround 0\n        screensaver_config disable\n        sound_config Movie\n        ; ;\n\n    # VLC TV\n    VLC_TV)\n        echo \"Start VLC for TV\"\n    # Kill VLC which stay stuck...\n    killall -SIGKILL vlc\n        start_app \"\/usr\/bin\/vlc --started-from-file $HOME\/Ressources\/FreeboxTV.m3u \\\n--fullscreen --playlist-tree --no-playlist-autostart --no-random --repeat --config $HOME\/Ressources\/vlc_tvrc\" \\\n\"\/usr\/bin\/vlc.*$HOME\/Ressources\/FreeboxTV.m3u\"\n        screen_config FHD 25\n        move_to_desktop 4\n        sound_profile surround 0\n        screensaver_config disable\n        sound_config Movie\n        ; ;\n\n    # Replay TV\n    Replay)\n        echo \"Start Replay TV\"\n        start_firefox_profile ReplayTV\n        screen_config FHD 25\n        move_to_desktop 5\n        sound_profile surround 0\n        screensaver_config disable\n        sound_config Movie\n        ; ;\n\n    # Youtube\n    Youtube)\n        echo \"Start Youtube\"\n        start_firefox_profile Youtube\n        screen_config FHD 60\n        move_to_desktop 6\n        sound_profile surround 0\n        screensaver_config disable\n        sound_config Movie\n        ; ;\n\n    # Firefox\n    Firefox)\n        echo \"Start Firefox\"\n        start_firefox_profile FreeBrowsing\n        screen_config FHD 60\n        move_to_desktop 7\n        sound_profile surround 0\n        screensaver_config disable\n        sound_config Movie\n        ; ;\n\n    # MPD + GUI client\n    Music)\n        echo \"Start MPD client\"\n        start_app cantata \/usr\/bin\/cantata\n        screen_config FHD 60\n        move_to_desktop 7\n        sound_profile surround 0\n        screensaver_config Music\n        sound_config Music\n        ; ;\n\n    *)\n        echo \"Service not recognized...\"\n        ; ;\nesac\n<\/code><\/pre>\n<blockquote>\n<p>ATTENTION: Il faut utiliser 2 points-virgules \u00e0 la suite sans espace. Mais WordPress ne supporte pas la syntaxe...\n<\/p><\/blockquote>\n<p>Pour exploiter facilement ce script, nous allons \u00e0 pr\u00e9sent cr\u00e9er des raccourcis sous forme de fichier <em>desktop<\/em>.<br \/>\nPour ce faire, nous allons <em>Cr\u00e9er un nouveau > Lien vers une application<\/em>.<\/p>\n<p>Dans le champs <em>Commande :<\/em> nous ajouterons<\/p>\n<pre><code class=\"\">\/bin\/bash '\/home\/$USER\/Launcher\/Launcher.sh' Kodi\n<\/code><\/pre>\n<p>Et ainsi de suite pour chaque service souhait\u00e9.<\/p>\n<p>Toutefois, \u00e0 ce stade l'application ne d\u00e9marre pas sur le bureau souhait\u00e9 d'elle m\u00eame. Pour y parvenir nous allons forcer le placement de l'application \u00e0 l'aide de la configuration des fen\u00eatres de KDE.<\/p>\n<p><em>Configuration du syst\u00e8me > Gestion des fen\u00eatres > R\u00e8gles de la fen\u00eatre<\/em><\/p>\n<p>Si toutes les r\u00e8gles sp\u00e9cifiques se trouve ici, pour en cr\u00e9er de nouvelles il est pr\u00e9f\u00e9rable, quand cela est possible, de le faire directement depuis la fen\u00eatre concern\u00e9e pour pr\u00e9-remplir les champs de d\u00e9tection de la fen\u00eatre concern\u00e9e.<\/p>\n<p><em>Clic droit sur l'ic\u00f4ne de l'application en haut \u00e0 gauche de la fen\u00eatre > Actions suppl\u00e9mentaires > Configure Special Window Settings<\/em><\/p>\n<p>De tr\u00e8s nombreux param\u00e8tres sont disponible et dans certains cas le param\u00e8tre <em>Plein \u00e9cran<\/em> peut \u00eatre int\u00e9ressant. Toutefois, nous allons nous int\u00e9resser uniquement au param\u00e8tre <em>Bureau<\/em> qui sera r\u00e9gl\u00e9 sur <em>Appliquer initialement<\/em> sur le bureau souhait\u00e9.<\/p>\n<p>De cette mani\u00e8re nous allons forcer le d\u00e9marrage de chaque service sur son bureau d\u00e9di\u00e9.<\/p>\n<p>Pour simplifier l'usage, je proposerais chaque fois un fichier .kwinrule \u00e0 importer.<\/p>\n<h6 id=\"Deplacer-lindication-de-changement-de-volume-qui-se-trouve-en-plein-milieu-de-lecran\"><\/h6>\n<h3>- <strong>D\u00e9placer l'indication de changement de volume qui se trouve en plein milieu de l'\u00e9cran<\/strong><\/h3>\n<p>Il est utile, mais particuli\u00e8rement aga\u00e7ant au milieu de l'image !<\/p>\n<p>Nous pouvons le supprimer compl\u00e8tement:<br \/>\n<em>Configuration du syst\u00e8me > Comportement de l'espace de travail > Affiche un retour visuel lors des changements d'\u00e9tat<\/em><\/p>\n<p>Ou alors nous pouvons le d\u00e9placer et le modifier en suivant les indications de <a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/web.archive.org\/web\/20181027025528\/https:\/\/www.reddit.com\/r\/kde\/comments\/9j57z2\/fixing_the_awful_volumebrightness_osd_size\/\">koneko-nyaa sur reddit<\/a> afin d'obtenir quelque chose comme \u00e7a.<\/p>\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"http:\/\/crudelis.fr\/site\/sblog\/wp-content\/uploads\/sites\/3\/2021\/01\/DSC_0394-1.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/crudelis.fr\/site\/sblog\/wp-content\/uploads\/sites\/3\/2021\/01\/DSC_0394-1.jpg\" width=\"90%\" height=\"90%\"\/><\/a><\/figure>\n<p>Nous allons explorer cette solution en choisissant de placer l'OSD au centre de l'\u00e9cran en haut, l\u00e0 o\u00f9 il n'y aura pas de sous-titres \u00e0 g\u00eaner.<\/p>\n<p>Pour ce faire, nous allons d'abord modifier l'emplacement de l'OSD dans le fichier <em>osd.qml<\/em><\/p>\n<pre><code class=\"language-bash \">sudo nano \/usr\/share\/plasma\/look-and-feel\/org.kde.breeze.desktop\/contents\/osd\/Osd.qml\n<\/code><\/pre>\n<p>Et ajouter apr\u00e8s la ligne <em>outputOnly: true<\/em> du bloc <em>PlasmaCore.Dialog<\/em> les lignes suivantes:<\/p>\n<pre><code class=\"\">    flags: Qt.X11BypassWindowManagerHint | Qt.FramelessWindowHint\n    x: Math.round((Screen.desktopAvailableWidth - width) \/ 2)\n    y: Math.round(Screen.height\/50)\n<\/code><\/pre>\n<p>Ensuite, nous allons modifier le look de l'OSD pour le remplacer par quelque chose de plus discret.<br \/>\nNous changeons de fichier pour <em>osdItem.qml<\/em><\/p>\n<pre><code class=\"language-bash \">sudo nano \/usr\/share\/plasma\/look-and-feel\/org.kde.breeze.desktop\/contents\/osd\/OsdItem.qml\n<\/code><\/pre>\n<p>Dans lequel nous allons modifier 4 sections.<br \/>\nTout d'abord, dans le bloc <em>Item<\/em>, apr\u00e8s la ligne <em>property QtObject rootItem<\/em>, nous allons supprimer les lignes <em>height<\/em> et <em>width<\/em> et les remplacer par:<\/p>\n<pre><code class=\"\">    property int iconWidth: units.iconSizes.medium\n    property int progressBarWidth: Math.round(Screen.width\/1000)*100\n    height: iconWidth\n    width: iconWidth*2 + progressBarWidth + Math.round(Screen.width\/1000)*4\n<\/code><\/pre>\n<p>Ensuite, dans le bloc <em>PlasmaCore.IconItem<\/em>, nous allons remplacer <em>height<\/em> et <em>width<\/em> par :<\/p>\n<pre><code class=\"\">        height: parent.height\n        width: iconWidth\n<\/code><\/pre>\n<p>Puis, dans le bloc <em>PlasmaComponents.ProgressBar<\/em>, apr\u00e8s la ligne <em>id: progressBar<\/em>, nous ajoutons:<\/p>\n<pre><code class=\"\">        width: progressBarWidth\n        height: parent.height\n        x: iconWidth\n<\/code><\/pre>\n<p>Il sera \u00e9galement n\u00e9cessaire de supprimer le bloc <em>anchors<\/em><\/p>\n<p>Enfin, pour terminer, dans le bloc <em>PlasmaExtra.Heading<\/em>, nous pourrons ajouter sous <em>id: label<\/em> les lignes suivantes:<\/p>\n<pre><code class=\"\">        height: parent.height\n        width: rootItem.showingProgress ? iconWidth + Math.round(Screen.width\/1000)*4 : progressBarWidth  + iconWidth\n        x: rootItem.showingProgress ? iconWidth + progressBarWidth + 10 : iconWidth\n<\/code><\/pre>\n<p>Remplacer les lignes <em>visible<\/em>, <em>text<\/em> et <em>maximumLineCount<\/em> par:<\/p>\n<pre><code class=\"\">        visible: true\n        text: rootItem.showingProgress ? rootItem.osdValue : (rootItem.osdValue ? rootItem.osdValue : \"\")\n        maximumLineCount: 1\n<\/code><\/pre>\n<p>Et supprimer le bloc <em>anchors<\/em> ainsi que les lignes <em>wrapMode<\/em> et <em>textFormat<\/em>.<\/p>\n<p>Pour confirmer les changements, un r\u00e9d\u00e9marrage de <em>plasmashell<\/em> est n\u00e9cessaire:<br \/>\n<strong>Attention, n'executez pas cette derni\u00e8re commande depuis SSH, plasmashell ne pourra pas d\u00e9marrer sans display !<\/strong><\/p>\n<pre><code class=\"language-bash \">killall plasmashell; kstart5 plasmashell\n<\/code><\/pre>\n<p>Nous voil\u00e0 \u00e0 pr\u00e9sent avec un OSD discret et non invasif.<\/p>\n<p>Penser \u00e0 faire une copie de ces 2 fichiers, les mises \u00e0 jour pourraient les remplacer sans avertissement.<\/p>\n<p>Les 2 fichiers, <em>osd.qml<\/em> et <em>osdItem.qml<\/em> devraient \u00eatre ainsi:<\/p>\n<pre><code class=\"\">\/\/ \/usr\/share\/plasma\/look-and-feel\/org.kde.breeze.desktop\/contents\/osd\/Osd.qml\n\nimport QtQuick 2.0\nimport QtQuick.Window 2.2\nimport org.kde.plasma.core 2.0 as PlasmaCore\nimport org.kde.plasma.components 2.0 as PlasmaComponents\nimport org.kde.plasma.extras 2.0 as PlasmaExtra\n\nPlasmaCore.Dialog {\n    id: root\n    location: PlasmaCore.Types.Floating\n    type: PlasmaCore.Dialog.OnScreenDisplay\n    outputOnly: true\n\n    flags: Qt.X11BypassWindowManagerHint | Qt.FramelessWindowHint\n    x: Math.round((Screen.desktopAvailableWidth - width) \/ 2)\n    y: Math.round(Screen.height\/50)\n\n    \/\/ OSD Timeout in msecs - how long it will stay on the screen\n    property int timeout: 1800\n    \/\/ This is either a text or a number, if showingProgress is set to true,\n    \/\/ the number will be used as a value for the progress bar\n    property var osdValue\n    \/\/ Icon name to display\n    property string icon\n    \/\/ Set to true if the value is meant for progress bar,\n    \/\/ false for displaying the value as normal text\n    property bool showingProgress: false\n\n    mainItem: OsdItem {\n        rootItem: root\n    }\n}\n<\/code><\/pre>\n<pre><code class=\"\">\/\/ \/usr\/share\/plasma\/look-and-feel\/org.kde.breeze.desktop\/contents\/osd\/OsdItem.qml\n\nimport QtQuick 2.0\nimport org.kde.plasma.core 2.0 as PlasmaCore\nimport org.kde.plasma.components 2.0 as PlasmaComponents\nimport org.kde.plasma.extras 2.0 as PlasmaExtra\nimport QtQuick.Window 2.2\n\nItem {\n    property QtObject rootItem\n    property int iconWidth: units.iconSizes.medium\n    property int progressBarWidth: Math.round(Screen.width\/1000)*100\n    height: iconWidth\n    width: iconWidth*2 + progressBarWidth + Math.round(Screen.width\/1000)*4\n\n    \/\/  \/--------------------\\\n    \/\/  |      spacing       |\n    \/\/  | \/----------------\\ |\n    \/\/  | |                | |\n    \/\/  | |      icon      | |\n    \/\/  | |                | |\n    \/\/  | |                | |\n    \/\/  | \\----------------\/ |\n    \/\/  |      spacing       |\n    \/\/  | [progressbar\/text] |\n    \/\/  |      spacing       |\n    \/\/  \\--------------------\/\n\n    PlasmaCore.IconItem {\n        id: icon\n        height: parent.height\n        width: iconWidth\n\n        source: rootItem.icon\n    }\n\n    PlasmaComponents.ProgressBar {\n        id: progressBar\n        width: progressBarWidth\n        height: parent.height\n        x: iconWidth\n\n        visible: rootItem.showingProgress\n        minimumValue: 0\n        maximumValue: 100\n\n        value: Number(rootItem.osdValue)\n    }\n\n    PlasmaExtra.Heading {\n        id: label\n\n        height: parent.height\n        width: rootItem.showingProgress ? iconWidth + Math.round(Screen.width\/1000)*4 : progressBarWidth  + iconWidth\n        x: rootItem.showingProgress ? iconWidth + progressBarWidth + 10 : iconWidth\n        visible: true\n        text: rootItem.showingProgress ? rootItem.osdValue : (rootItem.osdValue ? rootItem.osdValue : \"\")\n        maximumLineCount: 1\n        elide: Text.ElideLeft\n        minimumPointSize: theme.defaultFont.pointSize\n        fontSizeMode: Text.HorizontalFit\n    }\n}\n<\/code><\/pre>\n<h2 id=\"Configuration-audio\">Configuration audio<\/h2>\n<p>Le son est, avec l'image, l'un des points essentiels d'un HTPC, lorsqu'il s'agit de regarder des films en DTS ou Dolby Digital il n'est pas souhaitable d'avoir une qualit\u00e9 mp3 en sortie d'enceintes.<br \/>\nCe n'est toutefois pas toujours aussi simple qu'il peut le sembler.<\/p>\n<h6 id=\"Stereo-ou-Surround\"><\/h6>\n<h3>- <strong>St\u00e9r\u00e9o ou Surround<\/strong><\/h3>\n<p>Lorsqu'il s'agit de regarder des films, il est bien souvent pr\u00e9f\u00e9rable d'opter pour un son surround, que ce soit 5.1 ou 7.1, pour la simple raison que c'est en g\u00e9n\u00e9ral le format d'origine du son pour le cin\u00e9ma.<br \/>\nEn effet, les versions 2.0 ne sont, en g\u00e9n\u00e9ral, qu'une r\u00e9duction st\u00e9r\u00e9o du mix multi-canal d'origine.<\/p>\n<p>Pourtant, il n'est pas toujours simple de b\u00e9n\u00e9ficier d'un son 5.1 correct en sortie de son HTPC. Il y a plusieurs cas de figure \u00e0 consid\u00e9rer:<\/p>\n<ul>\n<li>Pas de barre de son ou d'ampli Hi-fi<br \/>\nQue ce soit les enceintes int\u00e9gr\u00e9es de la TV ou de simples enceintes st\u00e9r\u00e9o, il peut \u00eatre pr\u00e9f\u00e9rable de garder un son st\u00e9r\u00e9o.<br \/>\nAutrement les enceintes pourraient ignorer les canaux suppl\u00e9mentaires et nous risquerions de perdre une partie des donn\u00e9es.<\/p>\n<p>Dans ce cas de figure, il est pr\u00e9f\u00e9rable que le HTPC se charge lui m\u00eame du downmix 5.1 vers 2.0 afin d'\u00eatre s\u00fbr de ne rien perdre en route.<\/p>\n<\/li>\n<li>Barre de son ou ampli Hi-fi en HDMI ARC via la TV<br \/>\nLorsque la TV envoi le signal audio via HDMI ARC, il est fort probable que le signal soit tronqu\u00e9 ou downmix\u00e9 vers 2.0 en raison des capacit\u00e9s de la TV.<br \/>\nDans ce cas, il sera n\u00e9cessaire de passer le son en pass-through.<br \/>\nM\u00eame dans ce cas, certaines TV peut ne pas transmettre le .1, le canal LFE du caisson de basse. Dans ce cas, il peut \u00eatre utile de passer par un downmix 5.0, voir cet article: <a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/crudelis.fr\/site\/sblog\/2021\/04\/downmix-5-1-vers-5-0-avec-pulseaudio\/\">Downmix 5.1 vers 5.0 avec PulseAudio<\/a>.<\/li>\n<li>\n<p>Barre de son ou ampli Hi-fi en 5.1 branch\u00e9 en direct<br \/>\nLa meilleure configuration, une connection directe entre le HTPC et le dispositif audio 5.1, de pr\u00e9f\u00e9rence en HDMI ou une autre connexion num\u00e9rique \u00e0 d\u00e9faut.<\/p>\n<p>Ce type de configuration est \u00e0 privil\u00e9gier car il nous permettra de passer le signal audio directement, sans conversion, entre le HTPC et le r\u00e9cepteur audio 5.1.<\/p>\n<\/li>\n<\/ul>\n<blockquote>\n<p>Afin de s'assurer du bon fonctionnement de l'installation, en particulier le routage du caisson de basse, il est utile d'avoir un moyen fiable de tester l'audio.<\/p>\n<p>  Dans le cas d'une configuration 2.0 avec pass-through, il faudra utiliser une source contenant des canaux audio rout\u00e9s en 5.1, on peut trouver ce genre de contenu sur <a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/www2.iis.fraunhofer.de\/AAC\/multichannel.html\">fraunhofer<\/a>.<\/p>\n<p>  Dans le cas d'une configuration 5.1 sans pass-through, nous pouvons utiliser le test de canaux propre \u00e0 Linux.<br \/>\n  <code>speaker-test --channels 5 --nloops 1 --test wave; speaker-test --channels 6 --speaker 6 --test pink<\/code><br \/>\n  Cela permettra d'identifier chaque canaux successivement, et en particulier le caisson de basse.<br \/>\n  Il est \u00e9galement ais\u00e9 de placer cette commande dans un raccourci en fichier <em>desktop<\/em> si n\u00e9cessaire.\n<\/p><\/blockquote>\n<h6 id=\"Audio-pass-through\"><\/h6>\n<h3>- <strong>Audio pass-through<\/strong><\/h3>\n<p>L'audio pass-through est une option disponible sur divers lecteurs multim\u00e9dia, via pulseaudio pour Linux et sur certaines TV. Cette option permet de faire passer le signal audio au r\u00e9cepteur suivant sans traiter le signal.<br \/>\nMais qu'est-ce que cela signifie v\u00e9ritablement ?<\/p>\n<p>Pour bien comprendre ce qu'est l'audio pass-through, il faut bien comprendre comment fonctionne la chaine audio.<\/p>\n<p>Lorsque nous regardons une vid\u00e9o, le son est encapsul\u00e9 dans le conteneur multim\u00e9dia, de la m\u00eame mani\u00e8re que la vid\u00e9o, le son est encod\u00e9 et compress\u00e9 avec un codec audio.<br \/>\nAvant de pouvoir \u00eatre lu sur les enceintes, le son doit passer par 2 \u00e9tapes:<br \/>\n- Premi\u00e8rement le son doit \u00eatre d\u00e9cod\u00e9, c'est \u00e0 dire que le son compress\u00e9 doit \u00eatre interpr\u00e9t\u00e9 \u00e0 l'aide du codec correspondant pour obtenir une version num\u00e9rique non compress\u00e9e brute.<br \/>\n- Ensuite, le son d\u00e9compress\u00e9 doit \u00eatre converti de son format num\u00e9rique \u00e0 un format analogique qui sera m\u00e9caniquement interpr\u00e9t\u00e9 par les enceintes.<br \/>\nC'est le r\u00f4le du convertisseur, le DAC.<\/p>\n<p>L'audio pass-through intervient sur la premi\u00e8re \u00e9tape, si un \u00e9l\u00e9ment de notre installation utilise pass-through, il ne d\u00e9codera pas le signal audio et enverra le signal dans sa version compress\u00e9e et encod\u00e9e au r\u00e9cepteur suivant.<br \/>\nIl faut bien comprendre donc que le premier \u00e9l\u00e9ment de la chaine qui n'utilise pas pass-through sera celui qui se chargera de d\u00e9coder l'audio.<br \/>\nCela signifie 2 choses:<br \/>\nSi on imagine la configuration suivante: HTPC > TV > Ampli Hi-fi<br \/>\n- Si le HTPC n'utilise pas pass-through, il se chargera du d\u00e9codage et la TV et l'ampli recevront tout deux un signal audio num\u00e9rique d\u00e9compress\u00e9 et d\u00e9cod\u00e9 de type PCM.<br \/>\n- Si nous souhaitons que l'ampli se charge du d\u00e9codage audio, le HTPC et la TV devront \u00eatre configur\u00e9s pour utiliser pass-through afin de transmettre le signal audio compress\u00e9 et encapsul\u00e9 dans son codec jusqu'\u00e0 l'ampli. Ce dernier pourra alors d\u00e9coder le signal.<\/p>\n<p><strong>Mais alors pourquoi utiliser ou non pass-through ? Et quel int\u00e9r\u00eat cela peut pr\u00e9senter ?<\/strong><\/p>\n<p>Il faut bien comprendre que le d\u00e9codage du signal de son format encod\u00e9 au format PCM est une op\u00e9ration informatique sans conversion.<br \/>\nCela signifie que l'\u00e9l\u00e9ment de la chaine est soit capable de le faire (il dispose du codec ad\u00e9quat pour le faire), soit il n'en est pas capable. Il ne peut pas \"mal\" le faire.<\/p>\n<p>Les seules exceptions \u00e0 ce qui vient d'\u00eatre dit sont les suivantes:<br \/>\n- Si votre HTPC est configur\u00e9 en 2.0, le d\u00e9codage audio fera \u00e9galement intervenir un dowmix pour r\u00e9duire le signal \u00e0 2 canaux au lieu de 6.<br \/>\nDe m\u00eame pour un signal 7.1 et un HTPC configur\u00e9 en 5.1<br \/>\n- Les TV ont la facheuse tendance \u00e0 \u00eatre configur\u00e9 en st\u00e9r\u00e9o, quel que soit le r\u00e9cepteur audio raccord\u00e9. Ce faisant, le signal est syst\u00e9matiquement downmix\u00e9, voir tronqu\u00e9.<\/p>\n<p>Il est important \u00e9galement de consid\u00e9rer que certains formats peuvent avoir des difficult\u00e9s \u00e0 \u00eatre envoy\u00e9 en pass-through.<br \/>\nEt \u00e9galement, plus probl\u00e9matique, le pass-through a tendance \u00e0 monopoliser la carte son, ce qui peut parfois poser des difficult\u00e9s si plus d'un lecteur mutim\u00e9dia sont utilis\u00e9s. En particulier si le lecteur pr\u00e9c\u00e9dent n'a pas lib\u00e9r\u00e9 la carte son apr\u00e8s usage.<\/p>\n<p>La question d'utiliser pass-through d\u00e9pend donc de votre mat\u00e9riel et de la configuration de votre installation.<br \/>\nVoil\u00e0 quelques exemples:<\/p>\n<ul>\n<li>HTPC performant et capable de supporter le d\u00e9codage de la vid\u00e9o et de l'audio sans saturer le processeur.<br \/>\nPas de pass-through sur le HTPC, il d\u00e9code tout et envoi un signal d\u00e9compress\u00e9 pr\u00e8s \u00e0 \u00eatre converti par les enceintes.<\/li>\n<li>HTPC peu performant pour lequel le d\u00e9codage audio demande trop de ressources.<br \/>\nOn pr\u00e9ferera utiliser pass-through et d\u00e9l\u00e9guer le d\u00e9codage \u00e0 l'ampli pour soulager le HTPC.<\/li>\n<li>TV en HDMI ARC, optique ou autre connectique entre le HTPC et l'ampli.<br \/>\nLe pass-through sur la TV n'est pas forc\u00e9ment fiable !<br \/>\nToutefois, si la TV recoit un signal PCM sur 6 canaux, il y a de forte chance qu'elle le r\u00e9duise \u00e0 une st\u00e9r\u00e9o sans rien demander...<\/p>\n<p>Mon conseil en la mati\u00e8re, \u00e9vitez de passer le signal \u00e0 travers la TV !<\/p>\n<\/li>\n<li>Ampli disposant d'une am\u00e9lioration du signal lors du d\u00e9codage.<br \/>\nCertains ampli Hi-fi propose une am\u00e9lioration du signal lors du d\u00e9codage, pour en profiter on pr\u00e9fera donc laisser l'ampli se charger du d\u00e9codage pour b\u00e9n\u00e9ficier de ses am\u00e9liorations.<br \/>\nOn utilisera donc pass-through sur le HTPC.<\/li>\n<li>Ampli raccord\u00e9 en analogique sur le HTPC ou la TV<br \/>\nC'est une configuration d\u00e9conseill\u00e9e, en effet d\u00e8s lors qu'une connection analogique intervient, cela signifie que la conversion analogique a \u00e9t\u00e9 effectu\u00e9e par le HTPC ou la TV.<br \/>\nConfier la conversion analogique \u00e0 la TV est sans aucun doute une tr\u00e8s mauvaise id\u00e9e...<br \/>\nQuand au HTPC, sauf \u00e0 disposer d'une excellente carte son, il est peu probable qu'il dispose d'un DAC de meilleure qualit\u00e9 que les multiples DAC de l'ampli.<\/li>\n<\/ul>\n<blockquote>\n<p>En l'\u00e9tat actuel, PulseAudio 13 sur Ubuntu 20.04, PulseAudio n'est pas capable d'op\u00e9rer correctement un signal en Pass-Through sans perdre des canaux en surround...<br \/>\n  Dans le m\u00eame temps, PulseAudio ne se contente pas de d\u00e9coder le signal, il le remixe pour s'adapter au mapping des canaux actuels.<br \/>\n  L'usage de <code>enable-remixing = no<\/code> provoque \u00e9galement la perte de canaux en surround...<\/p>\n<p>  Globalement, PulseAudio est une \u00e9pine dans le pied pour un usage en haute fid\u00e9lit\u00e9...\n<\/p><\/blockquote>\n<h6 id=\"Le-probleme-des-voix-inaudibles\"><\/h6>\n<h3>- <strong>Le probl\u00e8me des voix inaudibles<\/strong><\/h3>\n<p>La probl\u00e8me le plus commun pour quiconque a d\u00e9j\u00e0 regard\u00e9 un film en 5.1 sur une installation 2.0 ou une barre de son frontale supportant un son surround.<br \/>\nLes voix sont inaudibles...<\/p>\n<p>Ce probl\u00e8me est li\u00e9 au downmix 5.1 vers 2.0, qu'il soit fait par le HTPC ou la barre de son. En effet, les dialogues sont le plus souvent uniquement sur le canal middle du 5.1, or lors du downmix, les canaux suppl\u00e9mentaires sont additionn\u00e9s sur gauche et droite, r\u00e9sultant en un niveau sonore beaucoup plus \u00e9lev\u00e9 pour tous les effets sonores autre que les dialogues.<\/p>\n<p>En r\u00e9alit\u00e9, ce ne sont donc pas les voix qui sont trop faibles, mais bien les autres sons qui sont trop forts car tous rassembl\u00e9s sur seulement 2 canaux !<\/p>\n<p>Pour rem\u00e9dier \u00e0 ce probl\u00e8me, une solution simple, \u00e0 condition de ne pas utiliser pass-through sur le HTPC, est de configurer ce dernier en 5.1 puis de remonter de 2 \u00e0 3db le canal middle.<br \/>\nCela peut \u00eatre fait \u00e0 l'aide de l'utilitaire <a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/doc.ubuntu-fr.org\/pavucontrol\">PAVUControl<\/a>.<\/p>\n<h6 id=\"Lorsque-le-son-nest-pas-utilise-le-HTPC-produit-daffreux-bruits\"><\/h6>\n<h3>- <strong>Lorsque le son n'est pas utilis\u00e9, le HTPC produit d'affreux bruits<\/strong><\/h3>\n<p>Un son violent, comme un \u00e9norme d\u00e9chirement au milieu du silence alors qu'aucun son n'\u00e9tait jou\u00e9 sur le HTPC.<br \/>\nPour les habitu\u00e9s, cela ressemble \u00e0 un appareil d\u00e9branch\u00e9 d'un ampli encore allum\u00e9. Et pour cause, c'est exactement ce qui se passe.<\/p>\n<p>Ce bruit affreux est tout simplement un pic de tension qui se produit lorsqu'un appareil est d\u00e9branch\u00e9.<\/p>\n<p>Le probl\u00e8me vient de l'\u00e9conomie d'\u00e9nergie de la carte son qui, lorsqu'elle n'est pas utilis\u00e9e, est tout simplement \u00e9teinte.<br \/>\nCe n'est pas un probl\u00e8me avec des enceintes d'ordinateurs, mais avec un syst\u00e8me amplifi\u00e9 \u00e7a devient un r\u00e9el probl\u00e8me pour les oreilles ainsi que pour l'ampli qui n'appr\u00e9cient gu\u00e8re l'agression soudaine.<\/p>\n<p>Pour d\u00e9sactiver l'\u00e9conomie d'\u00e9nergie, il y a deux choses \u00e0 faire:<\/p>\n<ul>\n<li>D\u00e9sactiver l'\u00e9conomie d'\u00e9nergie du c\u00f4t\u00e9 du driver.<br \/>\nPour une carte son intel \u00e7a se situe ici:<br \/>\n<em>\/sys\/module\/snd_hda_intel\/parameters\/power_save<\/em><br \/>\nUn 0 \u00e0 la place de 1 suffira \u00e0 d\u00e9sactiver l'\u00e9conomie d'\u00e9nergie.<\/li>\n<li>D\u00e9sactiver l'\u00e9conomie d'\u00e9nergie du c\u00f4t\u00e9 de pulseaudio<br \/>\nDans le fichier de configuration <em>\/etc\/pulse\/default.pa<\/em>, commenter la ligne <em>load-module module-suspend-on-idle<\/em> pour d\u00e9sactiver l'\u00e9conomie d'\u00e9nergie.<\/li>\n<\/ul>\n<p>Apr\u00e8s red\u00e9marrage, nous ne devrions plus subir ses aggressions sonores soudaines.<\/p>\n<h6 id=\"Decalage-entre-le-son-et-limage\"><\/h6>\n<h3>- <strong>D\u00e9calage entre le son et l'image<\/strong><\/h3>\n<p>M\u00eame si le son et l'image arrivent en m\u00eame temps, le temps de traitement de l'information peut diff\u00e9rer et un d\u00e9calage peut se produire entre l'image et le son.<br \/>\nCe ph\u00e9nom\u00e8ne particuli\u00e8rement d\u00e9sagr\u00e9able peut facilement \u00eatre corrig\u00e9 avec Kodi ou VLC, en revanche Netflix, Youtube ou d'autres lecteurs vid\u00e9o ne proposent tout simplement aucune solution !<\/p>\n<p>Pulseaudio permet d'appliquer un d\u00e9calage de latence en millisecondes sur le son pour le retarder. Cela permet de d\u00e9caler le son, ind\u00e9pendamment du lecteur utilis\u00e9 pour corriger un son en avance sur l'image.<\/p>\n<p>L'application du d\u00e9calage de latence (Latency offset) peut se faire depuis l'onglet <em>Advanced<\/em> de l'utilitaire <a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/doc.ubuntu-fr.org\/pavucontrol\">PAVUControl<\/a> sur le p\u00e9riph\u00e9rique de sortie audio utilis\u00e9.<br \/>\nPour un usage rapide il est \u00e9galement possible d'utiliser la commande <em>pactl set-port-latency-offset<\/em>.<\/p>\n<p>Pour en simplifier l'usage, j'utilise ce script qui permet d'augmenter, de r\u00e9duire ou de remettre \u00e0 z\u00e9ro la latence audio sur pulseaudio.<\/p>\n<pre><code class=\"language-bash \">#!\/bin\/bash\n\n# Get as first argument the latency in ms\nlatency=$(( $1 * 1000 ))\nforce_value=${2:-0}\n\n# Get the (first) index of the sound card\n# Gives usually 0\ncard_index=$(pacmd list-cards | grep --max-count=1 index | awk '{ print $2 }')\n\n# Get the current port\n# Gives something like hdmi-output-1\nport_name=$(pacmd list | grep \"active port\" | sed 's\/.*&lt;\\(.*\\)&gt;.*\/\\1\/')\n\n# Get the current latency on this port\ncurrent_latency=$(pacmd list | grep --max-count=1 $port_name \\\n    | grep --extended-regexp --only-matching \"latency offset -?[[:digit:]]* usec\" | awk '{ print $3 }')\n\n# Modify the latency\n# If force_value is set, set the input value directly.\n# Otherwise add to the current latency\nif [ $force_value -eq 0 ]\nthen\n    latency=$(( $current_latency + $latency ))\nfi\n# Even though pactl allows it, there's no way to have a negative latency\nif [ $latency -lt 0 ]\nthen\n    latency=0\nfi\n\n\n# Set the default latency\npactl set-port-latency-offset $card_index $port_name $latency\n<\/code><\/pre>\n<p>Pour exploiter ce script, nous allons cr\u00e9er des raccourcis rapide dans la barre d'outil principale en cr\u00e9ant un <em>Composant graphique<\/em> (Widget) <em>Lancement rapide<\/em> dans lequel nous allons glisser des fichiers <em>desktop<\/em>.<\/p>\n<p>Pour ce faire, nous allons <em>Cr\u00e9er un nouveau > Lien vers une application<\/em>.<br \/>\nDans le champs <em>Commande :<\/em> nous ajouterons<\/p>\n<pre><code class=\"\">Exec=\/bin\/bash '\/home\/$USER\/Launcher\/Latency.sh' 0 1\n<\/code><\/pre>\n<p>Pour la remise \u00e0 z\u00e9ro de la latence.<\/p>\n<pre><code class=\"\">Exec=\/bin\/bash '\/home\/$USER\/Launcher\/Latency.sh' 5\n<\/code><\/pre>\n<p>Pour augmenter de 5 millisecondes la latence.<\/p>\n<pre><code class=\"\">Exec=\/bin\/bash '\/home\/$USER\/Launcher\/Latency.sh' -5\n<\/code><\/pre>\n<p>Pour r\u00e9duire de 5 millisecondes la latence.<\/p>\n<h6 id=\"Son-haute-fidelite\"><\/h6>\n<h3>- <strong>Son haute fidelit\u00e9<\/strong><\/h3>\n<p>Dans le cas d'une barre de son de qualit\u00e9 ou d'un ampli Hi-Fi, le HTPC doit \u00eatre en mesure de fournir un son parfait, \u00e0 la hauteur des sources utilis\u00e9es.<\/p>\n<p>La configuration initiale de PulseAudio, le serveur son, est orient\u00e9 vers les performances, pas la qualit\u00e9 audio.<br \/>\nIl est donc pr\u00e9f\u00e9rable de reconfigurer PulseAudio pour en tirer le meilleur. Le post <a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/crudelis.fr\/site\/sblog\/2021\/07\/son-haute-fidelite-sur-linux-avec-pulseaudio\/\">Son haute fid\u00e9lit\u00e9 sur Linux avec PulseAudio<\/a> d\u00e9taille les r\u00e9glages \u00e0 op\u00e9rer pour b\u00e9n\u00e9ficier d'un son de qualit\u00e9 avec PulseAudio.<\/p>\n<h2 id=\"Configuration-de-limage\">Configuration de l'image<\/h2>\n<h6 id=\"1080-2160-et-upscaling\"><\/h6>\n<h3>- <strong>1080, 2160 et upscaling<\/strong><\/h3>\n<p>Comme expliqu\u00e9 pr\u00e9c\u00e9demment, Ubuntu g\u00e8re nativement la r\u00e9solution 4k. Il nous \u00eates donc possible de profiter de cette r\u00e9solution.<br \/>\nToutefois, un point non abord\u00e9 est la probl\u00e9matique de l'upscaling.<\/p>\n<p>En effet, si la r\u00e9solution est fix\u00e9e \u00e0 3840\u00d72160, la lecture de vid\u00e9o 4k ne posera aucune difficult\u00e9, en revanche, la lecture de vid\u00e9o 1080 va demander plus de travail.<br \/>\nCela pour une raison simple, une vid\u00e9o 1080 n'a pas une r\u00e9solution suffisante pour \u00eatre affich\u00e9e correctement sur l'ensemble de l'\u00e9cran. Elle doit \u00eatre upscal\u00e9e pour remplir l'\u00e9cran.<br \/>\nC'est \u00e0 dire tout simplement que la vid\u00e9o va \u00eatre agrandie et corrig\u00e9e pour que l'image ne soit pas pixelis\u00e9e.<\/p>\n<p>Notre HTPC ne devrait pas avoir de probl\u00e8me \u00e0 effectuer ce travail puisqu'il est d\u00e9j\u00e0 capable de traiter des vid\u00e9o 4k. Mais il nous faut garder en t\u00eate que c'est une charge de travail suppl\u00e9mentaire sur le GPU et donc une production de chaleur suppl\u00e9mentaire.<\/p>\n<blockquote><p>\n  Si votre HTPC pr\u00e9sente des difficult\u00e9es et surchauffe alors que vous ne jouez que des vid\u00e9os 1080, la question peut raisonnablement se poser de d\u00e9l\u00e9guer le travail d'upscaling \u00e0 la TV qui en g\u00e9n\u00e9ral fera un tr\u00e8s bon boulot sur cet aspect.<\/p>\n<p>  L'utilisation du GPU peut \u00eatre surveill\u00e9e avec <a class=\"wp-editor-md-post-content-link\" href=\"http:\/\/manpages.ubuntu.com\/manpages\/trusty\/man1\/intel_gpu_top.1.html\">intel_gpu_top<\/a>.\n<\/p><\/blockquote>\n<p>La charge d'op\u00e9rer l'upscaling revient \u00e0 la machine qui dispose de la r\u00e9solution 4k. Ce sera donc le HTPC si il est configur\u00e9 avec une r\u00e9solution 2160, ou la TV si le HTPC est en 1080.<\/p>\n<blockquote><p>\n  En revanche, si le HTPC est configur\u00e9 en 1080 et que vous jouez des vid\u00e9os 4k, l'image sera downscal\u00e9e \u00e0 1080 par le HTPC, puis upscal\u00e9e \u00e0 nouveau \u00e0 2160 par la TV.<br \/>\n  L'image finale ne sera toutefois pas l'\u00e9quivalent de la source 4k, le downscale aura d\u00e9truit de mani\u00e8re irr\u00e9versible une partie de l'image...\n<\/p><\/blockquote>\n<p>En cas de doute, un bon moyen de s'assurer de la r\u00e9solution de l'\u00e9cran est d'utiliser les <em>Stats for nerds<\/em> de Youtube, accessible par un clic droit sur n'importe quelle vid\u00e9o.<br \/>\nEn particulier avec cette vid\u00e9o permettant de v\u00e9rifier la r\u00e9solution 4k: <a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/www.youtube.com\/watch?v=T-U40Feg2wA\">4KUHD Scaling Test<\/a>.<\/p>\n<p>Les informations \u00e0 surveiller sont alors, <em>Viewport \/ Frames<\/em> pour la r\u00e9solution effectivement affich\u00e9e \u00e0 l'\u00e9cran et <em>Current \/ Optimal Rez<\/em> pour la r\u00e9solution de la source actuelle jou\u00e9e.<\/p>\n<p>On peut aussi utiliser le raccourci <em>o<\/em> dans Kodi pour conna\u00eetre la r\u00e9solution du m\u00e9dia jou\u00e9, ainsi que <em>z<\/em> pour la r\u00e9solution actuellement affich\u00e9e \u00e0 l'\u00e9cran.<\/p>\n<h6 id=\"Motion-interpolation\"><\/h6>\n<h3>- <strong>Motion interpolation<\/strong><\/h3>\n<p>Motion interpolation, nomm\u00e9 Auto Motion Plus, Motionflow, AquoMotion, ClearFrame, Smooth Motion ou encore TruMotion ou Clear Motion Drive sont un effet de lissage des mouvements introduit dans les TV r\u00e9cente permettant d'attendre des fr\u00e9quences de 120Hz.<\/p>\n<p>Le principe de fonctionnement en est relativement simple, un film contient 24 images par secondes, la technique de motion interpolation consiste a cr\u00e9er des images suppl\u00e9mentaires qui vont s'intercaller entre chacune des 24 images pour produire 120 images par secondes.<\/p>\n<p>Cette technique permet de produire des images beaucoup plus fluides, en particulier sur les mouvements rapides en \u00e9vitant une saccade de l'image.<\/p>\n<p>Pour un match de foot, c'est parfait, le ballon d\u00e9crira un mouvement rectiligne beaucoup plus fluide.<br \/>\nEn revanche, lorsqu'il s'agit d'interpr\u00e9ter et de pr\u00e9voir le mouvement de nombreux objets, une explosion par exemple, cela devient beaucoup plus difficile et bien moins pr\u00e9cis...<\/p>\n<p>En particulier, le motion interpolation cr\u00e9er le fameux effet soap opera, ou effet cam\u00e9scope. Cette d\u00e9sagr\u00e9able impression que votre s\u00e9rie am\u00e9ricaine favorite ou votre film ressemble \u00e0 Amour gloire et beaut\u00e9 ou Les Feux de l'amour.<\/p>\n<p>L'industrie du cin\u00e9ma utilise des cam\u00e9ras capturant 24 images par secondes, autant dire clairement qu'extrapoler de nouvelles images inexistantes \u00e0 l'origine est une insulte au travail cin\u00e9matographique et encore plus lorsque le rendu final est ainsi alt\u00e9r\u00e9.<\/p>\n<blockquote><p>\n  Certains diront que c'est une question de pr\u00e9f\u00e9rences personnelles, je dirais que si nous souhaitons voir un film, on devrait le voir \u00e0 24 images par secondes et dans les conditions les plus proches possible de ce que le r\u00e9alisateur a souhait\u00e9 cr\u00e9er.<br \/>\n  <strong>Il est innaceptable de garder ce mode activ\u00e9 pour regarder un film ou une s\u00e9rie de qualit\u00e9 !<\/strong><\/p>\n<p>  La preuve en image: <a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/www.youtube.com\/watch?v=B_dE6HPIAJM\">Soap Opera Effect in Slow Motion<\/a>\n<\/p><\/blockquote>\n<p>Les TV modernes disposent de nombreux r\u00e9glages d'image, qui sont en g\u00e9n\u00e9ral des modifications apport\u00e9es \u00e0 l'image source.<br \/>\nSi il est clair que le r\u00e9glage de motion interpolation devrait toujours \u00eatre d\u00e9sactiv\u00e9, soyez \u00e9galement prudent avec le mode <em>Auto Low Latency Mode<\/em> (Instant Game Response chez LG) qui peut provoquer des scintillements et des sauts d'images.<\/p>\n<blockquote><p>\n  Et si votre barre de son ou ampli est branch\u00e9 en HDMI ARC, ne pas oublier de d\u00e9sactiver tout les traitements sur l'entr\u00e9e HDMI concern\u00e9e, ce n'est pas utile et \u00e7a perturbe le signal !\n<\/p><\/blockquote>\n<h6 id=\"Mode-FilmMaker\"><\/h6>\n<h3>- <strong>Mode FilmMaker<\/strong><\/h3>\n<p>Parmis tout les r\u00e9glages disponibles sur les TV modernes, il en est un qui est une b\u00e9n\u00e9diction au milieu de la d\u00e9cadence.<br \/>\nLe mode FilmMaker est le r\u00e9glage ultime du cin\u00e9file qui d\u00e9sactive tout les autres, y compris le motion interpolation.<\/p>\n<p>Ce mode permet avant tout de d\u00e9sactiver tout les traitements sur l'image et param\u00e8tre la colorim\u00e9trie, la balance des blancs et les contrastes pour obtenir une image la plus proche possible d'un rendu cin\u00e9ma.<\/p>\n<p>Le proc\u00e9d\u00e9 est toutefois r\u00e9cent, disponible seulement sur les TV \u00e0 partir de 2020, il est donc fort probable qu'il faille attendre encore un peu avant de disposer de contenus sur notre HTPC contenant les metadata n\u00e9cessaire pour ajuster le mode FilmMaker.<\/p>\n<p>En attendant, m\u00eame sans ajustements sp\u00e9cifiques au contenu, le mode FilmMaker permet d\u00e9j\u00e0 d'obtenir une image beaucoup plus proche d'une qualit\u00e9 cin\u00e9ma.<\/p>\n<p>Voir cette image de Bram Stoker's Dracula, de Francis Ford Coppola, avec 3 mode diff\u00e9rents.<br \/>\n<em>Ce sont toutefois des photos, qui ne respectent donc pas la v\u00e9ritable image. Mais cela permet d'avoir une id\u00e9e de la diff\u00e9rence.<\/em><\/p>\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"http:\/\/crudelis.fr\/site\/sblog\/wp-content\/uploads\/sites\/3\/2021\/02\/Standard-mode.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/crudelis.fr\/site\/sblog\/wp-content\/uploads\/sites\/3\/2021\/02\/Standard-mode.jpg\" width=\"90%\" height=\"90%\"\/><\/a><figcaption>Mode Standard<\/figcaption><\/figure>\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"http:\/\/crudelis.fr\/site\/sblog\/wp-content\/uploads\/sites\/3\/2021\/02\/Cinema-mode.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/crudelis.fr\/site\/sblog\/wp-content\/uploads\/sites\/3\/2021\/02\/Cinema-mode.jpg\" width=\"90%\" height=\"90%\"\/><\/a><figcaption>Mode Cinema<\/figcaption><\/figure>\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"http:\/\/crudelis.fr\/site\/sblog\/wp-content\/uploads\/sites\/3\/2021\/02\/Filmmaker-mode-1.jpg\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/crudelis.fr\/site\/sblog\/wp-content\/uploads\/sites\/3\/2021\/02\/Filmmaker-mode-1.jpg\" width=\"90%\" height=\"90%\"\/><\/a><figcaption>Mode FilmMaker<\/figcaption><\/figure>\n<p>Plus d'information sur le mode FilmMaker sur <a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/www.son-video.com\/guide\/filmmaker-mode\">Son-Vid\u00e9o.com<\/a>.<\/p>\n<h2 id=\"Service-Kodi\">Service: Kodi<\/h2>\n<p>L'installation de Kodi est des plus simple, il suffit d'installer le paquet <em>kodi<\/em>.<\/p>\n<pre><code class=\"language-bash \">sudo apt install kodi\n<\/code><\/pre>\n<p>Avant de s'int\u00e9resser \u00e0 la configuration de Kodi, nous allons lui donner mati\u00e8re \u00e0 travailler en lui donnant acc\u00e8s \u00e0 une source de m\u00e9dias.<br \/>\nLes m\u00e9dias sont stock\u00e9s sur un autre support dot\u00e9 d'une plus grande capacit\u00e9, en l'occurrence un serveur et partag\u00e9s sur le r\u00e9seau local via un partage NFS.<\/p>\n<p>Premi\u00e8re \u00e9tape, nous allons ajouter le support NFS.<\/p>\n<pre><code class=\"language-bash \">sudo apt install nfs-common\n<\/code><\/pre>\n<p>Ensuite nous cr\u00e9ons le dossier qui va accueillir le montage r\u00e9seau.<\/p>\n<pre><code class=\"language-bash \">sudo mkdir -p \/media\/media_kodi\n<\/code><\/pre>\n<p>Puis nous allons effectuer un premier montage r\u00e9seau afin de v\u00e9rifier que le montage fonctionne correctement.<\/p>\n<pre><code class=\"language-bash \">sudo mount --types nfs --read-only 192.168.1.XXX:\/media\/data\/source_media_pour_kodi \/media\/media_kodi\/\n<\/code><\/pre>\n<p>Afin de p\u00e9r\u00e9niser ce montage NFS, nous allons ajouter cette ligne au fstab.<\/p>\n<pre><code class=\"language-bash \">sudo nano \/etc\/fstab\n<\/code><\/pre>\n<pre><code class=\"\">192.168.1.XXX:\/media\/data\/source_media_pour_kodi \/media\/media_kodi\/       nfs     auto  0  0\n<\/code><\/pre>\n<p>A pr\u00e9sent que Kodi est install\u00e9 et fonctionnel, nous pouvons nous int\u00e9resser \u00e0 sa configuration.<br \/>\nLa configuration par d\u00e9faut est globalement correcte, sauf \u00e0 des r\u00e9glages personnels de l'interface et des commandes.<br \/>\nToutefois il nous faut ajouter la source de m\u00e9dias:<\/p>\n<p><em>> M\u00e9dias > M\u00e9diath\u00e8que > Vid\u00e9os > Ajouter une source de vid\u00e9os...<\/em><br \/>\nNous allons chercher nos sources de m\u00e9dias et leur donner un nom.<br \/>\nPuis choisir la cat\u00e9gorie du dossier pour que les m\u00e9dias soient \u00e0 la bonne place dans l'interface de Kodi.<\/p>\n<p>Dans le cas o\u00f9 nous utilisons une r\u00e9solution 2160@30Hz, le respect de la fr\u00e9quence d'image de la vid\u00e9o devenant importante, il est int\u00e9ressant de laisser Kodi se charger de l'op\u00e9ration, puisqu'il dispose de l'information.<br \/>\nKodi est en effet capable d'ajuster le taux de rafraichissement de l'\u00e9cran.<\/p>\n<p><em>> Lecteur > Vid\u00e9os > Ajuster le taux de rafra\u00eechissement d'affichage<\/em><\/p>\n<p>Si ce n'est pas encore suffisant, il est \u00e9galement possible de synchroniser la lecture de la vid\u00e9o pour se c\u00e2ler tr\u00e8s exactement sur la fr\u00e9quence de l'\u00e9cran d\u00e9j\u00e0 ajust\u00e9e.<\/p>\n<p><em>> Lecteur > Vid\u00e9os > Synchroniser la lecture avec l'affichage<\/em><\/p>\n<h6 id=\"Configuration-de-fenetres-KDE-pour-Kodi\"><\/h6>\n<h3>- <strong>Configuration de fen\u00eatres KDE pour Kodi<\/strong><\/h3>\n<p>Le fichier .kwinrule pour Kodi est le suivant:<\/p>\n<pre><code class=\"\">[Kodi]\nDescription=Kodi\ndesktop=2\ndesktoprule=2\nwmclass=kodi\nwmclasscomplete=false\nwmclassmatch=1\n<\/code><\/pre>\n<h6 id=\"Forcer-les-montages-NFS-au-demarrage\"><\/h6>\n<h3>- <strong>Forcer les montages NFS au d\u00e9marrage<\/strong><\/h3>\n<p>Dans le cas o\u00f9 la connexion r\u00e9seau prend un peu de temps, il est possible que les montages NFS ne soient pas effectu\u00e9s correctement.<br \/>\nDans ce cas, au d\u00e9marrage de Kodi, nous nous confrontons au risque de voir Kodi nettoyer sa base de donn\u00e9es de tout les m\u00e9dias innaccessibles et de ne pas pouvoir jouer quoi que ce soit.<\/p>\n<p>Pour rem\u00e9dier \u00e0 cet inconv\u00e9nient, le plus simple est de forcer les montages NFS peu apr\u00e8s le d\u00e9marrage.<br \/>\nUne simple t\u00e2che cron est suffisante<\/p>\n<pre><code class=\"language-bash \">sudo nano \/etc\/cron.d\/auto_mount\n<\/code><\/pre>\n<pre><code class=\"\"># Force a mount after boot to be sure all NFS directory are mounted\n@reboot root sleep 10; mount -a\n<\/code><\/pre>\n<h2 id=\"Service-Netflix\">Service: Netflix<\/h2>\n<p>Netflix ne proposant pas d'application native pour Linux, nous allons utiliser Firefox pour obtenir Netflix.<br \/>\nLe principal d\u00e9faut ici est que Netflix sur Firefox ne permet pas de profiter du flux 4K. Esp\u00e9rons que cela soit corrig\u00e9 avec le temps...<\/p>\n<blockquote><p>\n  Il faut noter toutefois que Netflix diffuse en 24, 25 ou 30 FPS selon les sources. Ce qui oblige \u00e0 changer r\u00e9guli\u00e8rement de fr\u00e9quence de rafra\u00eechissement si le maximum disponible est de 30Hz.<\/p>\n<p>  Pour connaitre le fr\u00e9quence d'une vid\u00e9o Netflix, le raccourci Ctrl+Alt+Shift+D donne toutes les infos techniques, dont le frame rate.\n<\/p><\/blockquote>\n<h6 id=\"Netflix-Profil-Firefox\"><\/h6>\n<h3>- <strong>Profil Firefox<\/strong><\/h3>\n<p>Afin de param\u00e9trer Firefox pour un usage optimal avec Netflix, nous allons utiliser un profil d\u00e9di\u00e9.<\/p>\n<pre><code class=\"language-bash \">firefox --ProfileManager\n<\/code><\/pre>\n<p>Puis nous cr\u00e9ons un profile nomm\u00e9 <em>Netflix<\/em>. Le nom importe peu en r\u00e9alit\u00e9, tant qu'il correspond au nom de profil dans le script <em>Launcher.sh<\/em><\/p>\n<p>Pour d\u00e9marrer Firefox avec ce profil:<\/p>\n<pre><code class=\"language-bash \">firefox -P Netflix --no-remote\n<\/code><\/pre>\n<p>A pr\u00e9sent que nous avons un profil d\u00e9di\u00e9, nous allons le configurer de mani\u00e8re ad\u00e9quat.<\/p>\n<h6 id=\"Netflix-DRM\"><\/h6>\n<h3>- <strong>DRM<\/strong><\/h3>\n<p>Netflix utilise des DRM, il faut donc autoriser Firefox \u00e0 les lire.<\/p>\n<p>Activer le param\u00e8tre<br \/>\n<em>> Pr\u00e9f\u00e9rences > G\u00e9n\u00e9ral> Lire le contenu prot\u00e9g\u00e9 par des DRM<\/em><\/p>\n<h6 id=\"Netflix-Faciliter-la-navigation-sans-molette\"><\/h6>\n<h3>- <strong>Faciliter la navigation sans molette<\/strong><\/h3>\n<p>Naviguer dans la page peut s'av\u00e9rer aga\u00e7ant sans une molette, et m\u00eame si nous ne pourrons pas faire compl\u00e8ment l'impasse sur la souris, nous pouvons faciliter le d\u00e9filement avec les touches haut\/bas.<\/p>\n<p>D\u00e9sactiver les param\u00e8tres<br \/>\n<em>> Pr\u00e9f\u00e9rences > G\u00e9n\u00e9ral> Utiliser le d\u00e9filement automatique<\/em><br \/>\n<em>> Pr\u00e9f\u00e9rences > G\u00e9n\u00e9ral> Toujours utiliser les touches de navigation pour se d\u00e9placer \u00e0 l'int\u00e9rieur d'une page<\/em><\/p>\n<p>\u00c9galement, pour plus de comfort, activer les param\u00e8tres suivants<br \/>\n<em>> Pr\u00e9f\u00e9rences > G\u00e9n\u00e9ral> Utiliser le d\u00e9filement doux<\/em><br \/>\n<em>> Pr\u00e9f\u00e9rences > G\u00e9n\u00e9ral> Contr\u00f4ler la lecture des m\u00e9dias via le clavier, un casque ou l'interface virtuelle<\/em><\/p>\n<h6 id=\"Netflix-en-page-daccueil\"><\/h6>\n<h3>- <strong>Netflix en page d'accueil<\/strong><\/h3>\n<p>Puisque ce profil est d\u00e9di\u00e9 \u00e0 Netflix, le navigateur devrait s'ouvrir directement sur la page du service.<\/p>\n<p><em>> Pr\u00e9f\u00e9rences > Accueil<a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/www.netflix.com\/fr-en\/\"><\/a> > Page d'accueil et nouvelles fen\u00eatres<\/em><br \/>\nS\u00e9lectionner <em>Adresses web personalis\u00e9es...<\/em> et dans le champs indiquer <em>https:\/\/www.netflix.com\/fr\/<\/em><\/p>\n<h6 id=\"Netflix-Modules-complementaires-pour-Firefox\"><\/h6>\n<h3>- <strong>Modules compl\u00e9mentaires pour Firefox<\/strong><\/h3>\n<ul>\n<li><a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/addons.mozilla.org\/en-US\/firefox\/addon\/window-titler\">Window Titler<\/a><br \/>\n  Pour commencer, afin de pouvoir identifier la fen\u00eatre Firefox \u00e0 l'aide de la configuration des fen\u00eatres de KDE (qui pour rappel nous permettra de placer la fen\u00eatre sur le bureau choisi) nous allons installer l'extension Window Titler.<\/p>\n<p>Dans les pr\u00e9f\u00e9rences de l'extension, nous choissirons les tags <em>&#91;<\/em> et <em>&#93;<\/em> et le <em>Profile title<\/em> Netflix. Ainsi le titre de la fen\u00eatre commencera toujours par &#91;Netflix&#93;.<\/p>\n<\/li>\n<li><a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/addons.mozilla.org\/en-US\/firefox\/addon\/autofullscreen\/\">Auto Fullscreen<\/a><br \/>\n  Ce plugin va nous permettre de forcer firefox en plein \u00e9cran d\u00e9s son d\u00e9marrage.<\/li>\n<li><a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/addons.mozilla.org\/en-US\/firefox\/addon\/netflix-1080p-firefox\/\">Netflix 1080p<\/a><br \/>\n  Comme son nom le sugg\u00e8re, ce plugin permet de profiter de Netflix en Full HD sur Firefox.<\/li>\n<\/ul>\n<h6 id=\"Netflix-Optimisation-de-Firefox\"><\/h6>\n<h3>- <strong>Optimisation de Firefox<\/strong><\/h3>\n<p>Netflix est plut\u00f4t exigeant avec Firefox, il peut donc \u00eatre utile d'optimiser ce profile Firefox pour en tirer le meilleur parti.<\/p>\n<p>Tout d'abord, nous allons d\u00e9sactiver la t\u00e9l\u00e9m\u00e9trie.<\/p>\n<p><em>> Pr\u00e9f\u00e9rences > Vie priv\u00e9e et s\u00e9curit\u00e9 > Collecte de donn\u00e9es par Firefox et utilisation<\/em><\/p>\n<p>Puis nous allons nous assurer que le cache est r\u00e9guli\u00e8rement purg\u00e9.<\/p>\n<p><em>> Pr\u00e9f\u00e9rences > Vie priv\u00e9e et s\u00e9curit\u00e9 > Historique<\/em><br \/>\n<em>- Utiliser les param\u00e8tres personnalis\u00e9s pour l'historique<\/em><br \/>\n<em>- Vider l'historique lors de la fermeture de Firefox<\/em><br \/>\n<em>- - Supprimer cache et historique<\/em><\/p>\n<p>Enfin, nous allons voir la configuration profonde de Firefox dans <em>about:config<\/em> et changer les valeurs suivantes:<\/p>\n<p>D\u00e9sactiver le <em>mode de lecture<\/em>:<\/p>\n<pre><code class=\"\">reader.parse-on-load.enabled    false\n<\/code><\/pre>\n<p>D\u00e9sactiver <em>pocket<\/em>:<\/p>\n<pre><code class=\"\">extensions.pocket.enabled    false\n<\/code><\/pre>\n<p>Augmenter le buffering multimedia:<br \/>\nTout d'abord la taille du cache, puis la dur\u00e9e du buffer.<\/p>\n<pre><code class=\"\">media.cache_size    1024000\nmedia.cache_readhead_limit    600\nmedia.cache_resume_threshold    300\n<\/code><\/pre>\n<h6 id=\"Netflix-Desactivation-de-lacceleration-materielle\"><\/h6>\n<h3>- <strong>D\u00e9sactivation de l'acc\u00e9l\u00e9ration mat\u00e9rielle<\/strong><\/h3>\n<p>Selon le mat\u00e9riel et les drivers, il se peut que l'acc\u00e9l\u00e9ration mat\u00e9rielle par Firefox soit d'avantage un probl\u00e8me qu'une aide.<\/p>\n<p>Si n\u00e9cessaire, l'acc\u00e9l\u00e9ration mat\u00e9rielle se d\u00e9sactive ici:<\/p>\n<p><em>> Pr\u00e9f\u00e9rences > G\u00e9n\u00e9ral > Performances<\/em><br \/>\nD\u00e9sactiver <em>Utiliser les param\u00e8tres de performance recommand\u00e9s<\/em><br \/>\nPuis d\u00e9sactiver <em>Utiliser l'acc\u00e9l\u00e9ration graphique mat\u00e9rielle si disponible<\/em><\/p>\n<h6 id=\"Netflix-Resoudre-les-problemes-de-screen-tearing\"><\/h6>\n<h3>- <strong>R\u00e9soudre les probl\u00e8mes de screen tearing<\/strong><\/h3>\n<p>Le <a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/en.wikipedia.org\/wiki\/Screen_tearing\" title=\"screen tearing\">screen tearing<\/a> est un d\u00e9calage horizontal de l'image qui se produit le plus souvent sur les travelling.<br \/>\nFirefox est particuli\u00e8rement affect\u00e9 par ce ph\u00e9nom\u00e8ne, et plusieurs solutions sont propos\u00e9es autour de la <a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/askubuntu.com\/questions\/1200143\/full-screen-video-tearing-in-firefox-ubuntu-19-10\/1288650#1288650\" title=\"configuration des &quot;layers&quot;\">configuration des \"layers\"<\/a> dans about:config.<\/p>\n<p>Toutefois, dans mon cas et utilisant une carte graphique NVidia, la solution se trouve dans <code>nvidia-settings<\/code>, le panneau de configuration de la carte graphique.<br \/>\nDans <em>X Server Display Configuration<\/em>, puis <em>Advanced...<\/em>, il suffit d'activer <strong>Force Composition Pipeline<\/strong> et sauvegarder les changements en quittant.<br \/>\nCela va forcer la carte graphique \u00e0 travailler \u00e0 la place du processeur pour certaines op\u00e9rations, ce qui devrait \u00eatre suffisant pour r\u00e9soudre tout probl\u00e8mes de screen tearing.<\/p>\n<h6 id=\"Configuration-de-fenetres-KDE-pour-Netflix\"><\/h6>\n<h3>- <strong>Configuration de fen\u00eatres KDE pour Netflix<\/strong><\/h3>\n<p>Le fichier .kwinrule pour Netflix est le suivant:<\/p>\n<pre><code class=\"\">[Netflix Firefox]\nDescription=Netflix Firefox\ndesktop=3\ndesktoprule=2\ntitle=[Netflix]\\s\ntitlematch=2\ntypes=1\nwindowrole=browser\nwindowrolematch=1\nwmclass=navigator firefox\nwmclasscomplete=true\nwmclassmatch=1\n<\/code><\/pre>\n<h6 id=\"Les-raccourcis-Netflix\"><\/h6>\n<h3>- <strong>Les raccourcis Netflix<\/strong><\/h3>\n<p>Netflix met \u00e0 disposition quelques raccourcis pratiques dont voici la <a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/help.netflix.com\/fr\/node\/24855\">liste officielle<\/a>.<br \/>\nNous retiendrons surtout que pour passer les introductions, c'est la touche S !<\/p>\n<h2 id=\"Service-Live-TV\">Service: Live TV<\/h2>\n<p>Lorsqu'il s'agit de live TV le plus \u00e9vident est de passer par des logiciels comme <a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/tvheadend.org\/\">TVheadend<\/a> ou <a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/www.mythtv.org\/\">MythTV<\/a> et un tuner TV. Je n'en dispose toutefois pas, et la mise en place de l'IPTV avec ces 2 logiciels s'est sold\u00e9 par un \u00e9chec retentissant... J'ai donc choisi d'autres solutions.<\/p>\n<p>Parmis les autres solutions non retenues il y avait aussi:<\/p>\n<ul>\n<li><a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/github.com\/linuxmint\/hypnotix\">Hypnotix<\/a><br \/>\nTr\u00e8s prometteur, mais un projet encore jeune auquel il manque de tr\u00e8s nombreuses fonctionnalit\u00e9s pour \u00eatre exploitable.<\/li>\n<li><a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/github.com\/freetuxtv\/freetuxtv\">FreetuxTV<\/a><br \/>\nPlus ancien et \u00e9prouv\u00e9, FreetuxTV ne dispose toutefois pas d'une interface ad\u00e9quate \u00e0 l'usage recherch\u00e9.<\/li>\n<\/ul>\n<h6 id=\"VLC_Live_TV\"><\/h6>\n<h3>- <strong>VLC<\/strong><\/h3>\n<p>Pour un visionnage simple de la TV depuis une source IPTV, notre choix va s'arr\u00eater sur VLC, comme souvent l'outil id\u00e9al lorsqu'il est question de vid\u00e9o.<br \/>\nVLC nous offre les fonctionnalit\u00e9es suivantes sur les flux TV<\/p>\n<ul>\n<li>Play\/pause<br \/>\n(Impossible toutefois de naviguer dans le flux. Le flux reste en retard sur le direct tant que la chaine n'est pas chang\u00e9e.)<\/li>\n<li>Changement de chaine simple, sans usage de la souris.<\/li>\n<li>Choix de la langue du flux TV.<\/li>\n<li>Choix du sous-titre du flux TV.<\/li>\n<li>Raccourcis configurables.<\/li>\n<\/ul>\n<blockquote><p>\n  L'absence d'une v\u00e9ritable fonction de timeshifting est dommage, et doit probablement pouvoir \u00eatre mise en place.<br \/>\n  Je n'ai malheureusement pas encore trouv\u00e9 la solution pour y r\u00e9medier.\n<\/p><\/blockquote>\n<p>Pour avoir acc\u00e8s aux flux TV via internet, l'IPTV, nous allons devoir nous tourner vers des playlists m3u contenant les adresses des flux TV.<br \/>\n<strong>Attention toutefois, la majeure partie des listes m3u pour l'IPTV qui peuvent \u00eatre trouv\u00e9es sur internet sont ill\u00e9gales.<\/strong><\/p>\n<p>Ce <a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/github.com\/Free-IPTV\/Countries\">d\u00e9pot github<\/a> fourni des listes m3u l\u00e9gales pour diff\u00e9rents pays, dont la France.<br \/>\nToutefois, le moyen le plus s\u00fbr d'obtenir une liste m3u bien fournie de chaines TV en toute l\u00e9galit\u00e9 est de se tourner vers son fournisseur d'acc\u00e8s.<br \/>\nPour ma part c'est Free, qui est \u00e0 ce jour sans aucun doute le FAI le plus accommodant sur ce point.<\/p>\n<p>Free fourni \u00e0 ses abonn\u00e9s la liste http:\/\/mafreebox.freebox.fr\/freeboxtv\/playlist.m3u<\/p>\n<blockquote><p>\n  Pour acc\u00e9der aux chaines des groupes TF1 (TF1, TMC, TFX, TF1 S\u00e9ries Films et LCI) et M6 (M6, W9 et 6ter) il vous faudra connecter l'antenne au d\u00e9codeur TV Free et faire une recherche de chaine. Autrement les chaines ne seront pas disponibles en IPTV...\n<\/p><\/blockquote>\n<p>Cette liste Free repr\u00e9sente pr\u00e8s de 700 chaines, dont de nombreux doublons en raison des flux de diff\u00e9rentes qualit\u00e9 et des chaines payantes innaccessible sans abonnement suppl\u00e9mentaire.<br \/>\nCe faisant, il est plus que conseill\u00e9 de cr\u00e9er un fichier m3u personnalis\u00e9 avec les chaines souhait\u00e9es et la qualit\u00e9 souhait\u00e9e pour chacune d'elle.<br \/>\nNous aurons ainsi une liste de chaines limit\u00e9es aux seules chaines usuellement visionn\u00e9es.<\/p>\n<p>Cela fait, nous allons cr\u00e9er un fichier de configuration VLC sp\u00e9cifique \u00e0 cet usage.<br \/>\nIl sera ainsi possible de configurer cette instance de VLC ind\u00e9pendamment de l'instance commune.<\/p>\n<pre><code class=\"language-bash \">cp -a $HOME\/.config\/vlc\/vlcrc $HOME\/vlcTVrc\n<\/code><\/pre>\n<p>A pr\u00e9sent, il nous suffit de d\u00e9marrer VLC en sp\u00e9cifiant les options souhait\u00e9es au d\u00e9marrage.<\/p>\n<pre><code class=\"language-bash \">\/usr\/bin\/vlc .\/PlaylistTV.m3u --fullscreen --playlist-tree --no-playlist-autostart --no-random --repeat --config $HOME\/vlcTVrc\n<\/code><\/pre>\n<ul>\n<li>-fullscreen<br \/>\nD\u00e9marre imm\u00e9diatement en plein \u00e9cran.<\/li>\n<li>-playlist-tree<br \/>\nAffiche la playlist au d\u00e9marrage.<\/li>\n<li>-no-playlist-autostart<br \/>\nNe d\u00e9marre pas automatiquement la lecture, nous d\u00e9marrerions autrement toujours sur le premier flux de la liste.<\/li>\n<li>-no-random<br \/>\nD\u00e9sactive le mode al\u00e9atoire, pour pouvoir zapper facilement d'un flux au suivant ou au pr\u00e9c\u00e9dent.<\/li>\n<li>-repeat<br \/>\nR\u00e9p\u00e8te le media en cours, pour \u00e9viter de changer de flux de mani\u00e8re intempestive.<\/li>\n<li>-config $HOME\/vlcTVrc<br \/>\nUtilise un fichier de configuration alternatif.<\/li>\n<\/ul>\n<h6 id=\"Fixer-les-sauts-dimages\"><\/h6>\n<h3>- <strong>Fixer les sauts d'images<\/strong><\/h3>\n<p>VLC peut souffrir de quelques sauts d'images r\u00e9guliers. Si tel est le cas, il peut \u00eatre utile de changer la configuration de la sortie vid\u00e9o.<\/p>\n<p><em>> Outils > Pr\u00e9f\u00e9rences > Vid\u00e9o > Output<\/em><br \/>\n<em>Sortie vid\u00e9o \"Sortie vid\u00e9o X11 (XCB)\"<\/em> donne de bons r\u00e9sultats.<\/p>\n<p><em>> Outils > Pr\u00e9f\u00e9rences > Vid\u00e9o > Deinterlacing<\/em><br \/>\nR\u00e9gler sur <em>Oui<\/em> et choisir le mode <em>Yadif (2x)<\/em>.<\/p>\n<h6 id=\"Configuration-de-fenetres-KDE-pour-VLC\"><\/h6>\n<h3>- <strong>Configuration de fen\u00eatres KDE pour VLC<\/strong><\/h3>\n<p>Le fichier .kwinrule pour VLC est le suivant:<\/p>\n<pre><code class=\"\">[VLC TV]\nDescription=VLC TV\ndesktop=4\ndesktoprule=2\ntitle=Lecteur multim\u00e9dia VLC\ntitlematch=1\ntypes=1\nwindowrole=vlc-main\nwindowrolematch=1\nwmclass=vlc\nwmclasscomplete=false\nwmclassmatch=1\n<\/code><\/pre>\n<h6 id=\"Molotov-TV\"><\/h6>\n<h3>- <strong>Molotov TV<\/strong><\/h3>\n<p><a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/www.molotov.tv\/\">Molotov TV<\/a> est un fournisseur IPTV fran\u00e7ais qui propose <a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/www.molotov.tv\/offers\">gratuitement<\/a> un acc\u00e8s \u00e0 36 chaines avec le contr\u00f4le du direct ainsi qu'un acc\u00e8s au Replay.<\/p>\n<p>Il est n\u00e9cessaire toutefois de cr\u00e9er un compte sur la plateforme, m\u00eame pour l'acc\u00e8s gratuit.<\/p>\n<p>Molotov propose \u00e9galement de nombreux packs payants pour obtenir d'avantage de contenu.<\/p>\n<p>La plateforme propose un <a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/www.molotov.tv\/download\">fichier AppImage<\/a>, qui ne n\u00e9cessite donc aucune installation.<br \/>\nApr\u00e8s t\u00e9l\u00e9chargement, il faut toutefois le rendre executable. C'est tout ce que nous avons \u00e0 faire pour cette application.<\/p>\n<p>Molotov est int\u00e9ressant \u00e0 l'usage et permet un v\u00e9ritable contr\u00f4le du direct ainsi qu'un acc\u00e8s aux diff\u00e9rents Replay des chaines.<\/p>\n<p>Toutefois, l'application est peu adapt\u00e9 \u00e0 l'usage avec une t\u00e9l\u00e9commande et n'a de cesse d'insister pour un compte premium ou autre abonnements.<br \/>\nOn ne pouvait en attendre moins d'un tel service...<\/p>\n<h6 id=\"Configuration-de-fenetres-KDE-pour-molotov\"><\/h6>\n<h3>- <strong>Configuration de fen\u00eatres KDE pour Molotov TV<\/strong><\/h3>\n<p>Le fichier .kwinrule pour Molotov TV est le suivant:<\/p>\n<pre><code class=\"\">[Molotov]\nDescription=Molotov\ndesktop=4\ndesktoprule=2\ntitle=Molotov\ntitlematch=1\nwmclass=molotov\nwmclasscomplete=false\nwmclassmatch=2\n<\/code><\/pre>\n<h2 id=\"Service-Replay-TV\">Service: Replay TV<\/h2>\n<p>Comme vu pr\u00e9c\u00e9demment, Molotov TV est une solution pour avoir acc\u00e8s aux Replay de nombreuses chaines depuis un seul et m\u00eame endroit.<\/p>\n<p>Si toutefois, nous ne souhaitons pas passer par cette application et sa cr\u00e9ation de compte obligatoire, il nous est possible de simplement utiliser Firefox et nous rendre sur les sites de chaque chaines souhait\u00e9es.<\/p>\n<h6 id=\"Replay-Profil-Firefox\"><\/h6>\n<h3>- <strong>Profil Firefox<\/strong><\/h3>\n<p>Comme pour Netflix, nous allons cr\u00e9er un profil d\u00e9di\u00e9 \u00e0 l'usage de Firefox pour les Replay TV.<\/p>\n<pre><code class=\"language-bash \">firefox --ProfileManager\n<\/code><\/pre>\n<p>Puis nous cr\u00e9ons un profile nomm\u00e9 <em>ReplayTV<\/em>. Encore une fois, le nom doit simplement correspondre \u00e0 celui indiqu\u00e9 dans le script <em>Launcher.sh<\/em><\/p>\n<p>Pour d\u00e9marrer Firefox avec ce profil:<\/p>\n<pre><code class=\"language-bash \">firefox -P ReplayTV --no-remote\n<\/code><\/pre>\n<p>A pr\u00e9sent que nous avons un profil d\u00e9di\u00e9, nous allons le configurer de mani\u00e8re ad\u00e9quat.<\/p>\n<h6 id=\"Replay-Faciliter-la-navigation-sans-molette\"><\/h6>\n<h3>- <strong>Faciliter la navigation sans molette<\/strong><\/h3>\n<p>Nous facilitons le d\u00e9filement avec les touches haut\/bas.<\/p>\n<p>D\u00e9sactiver les param\u00e8tres<br \/>\n<em>> Pr\u00e9f\u00e9rences > G\u00e9n\u00e9ral> Utiliser le d\u00e9filement automatique<\/em><br \/>\n<em>> Pr\u00e9f\u00e9rences > G\u00e9n\u00e9ral> Toujours utiliser les touches de navigation pour se d\u00e9placer \u00e0 l'int\u00e9rieur d'une page<\/em><\/p>\n<p>\u00c9galement, pour plus de comfort, activer les param\u00e8tres suivants<br \/>\n<em>> Pr\u00e9f\u00e9rences > G\u00e9n\u00e9ral> Utiliser le d\u00e9filement doux<\/em><br \/>\n<em>> Pr\u00e9f\u00e9rences > G\u00e9n\u00e9ral> Contr\u00f4ler la lecture des m\u00e9dias via le clavier, un casque ou l'interface virtuelle<\/em><\/p>\n<h6 id=\"Replay-Page-daccueil-Firefox-par-defaut\"><\/h6>\n<h3>- <strong>Page d'accueil Firefox par d\u00e9faut<\/strong><\/h3>\n<p>Plut\u00f4t que d'ouvrir chaque fois sur un site d'une chaine, il est pr\u00e9f\u00e9rable d'avoir une page permettant un acc\u00e8s rapide aux diff\u00e9rents sites.<br \/>\nLa page d'accueil par d\u00e9faut de Firefox fait tr\u00e8s bien ce travail.<\/p>\n<p><em>> Pr\u00e9f\u00e9rences > Accueil<a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/www.netflix.com\/fr-en\/\"><\/a> > Page d'accueil et nouvelles fen\u00eatres<\/em><br \/>\nS\u00e9lectionner <em>Page d'accueil de Firefox (par d\u00e9faut)<\/em><\/p>\n<p>Puis juste en dessous, nous allons param\u00e9trer cette page d'accueil.<\/p>\n<blockquote><p>\n  Sites les plus visit\u00e9s<br \/>\n  1 ligne, ou d'avantage si la place manque.<\/p>\n<p>  \u00c9l\u00e9ments-cl\u00e9s<br \/>\n  4 lignes et nous gardons uniquement <em>Marques pages<\/em>. Cela nous permettra de mettre de c\u00f4t\u00e9 facilement les \u00e9missions \u00e0 voir.\n<\/p><\/blockquote>\n<h6 id=\"Replay-Modules-complementaires-pour-Firefox\"><\/h6>\n<h3>- <strong>Modules compl\u00e9mentaires pour Firefox<\/strong><\/h3>\n<ul>\n<li><a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/addons.mozilla.org\/en-US\/firefox\/addon\/window-titler\">Window Titler<\/a><br \/>\n  Afin de pouvoir identifier la fen\u00eatre Firefox \u00e0 l'aide de la configuration des fen\u00eatres de KDE (qui pour rappel nous permettra de placer la fen\u00eatre sur le bureau choisi) nous allons installer l'extension Window Titler.<\/p>\n<p>Dans les pr\u00e9f\u00e9rences de l'extension, nous choissirons les tags <em>&#91;<\/em> et <em>&#93;<\/em> et le <em>Profile title<\/em> ReplayTV. Ainsi le titre de la fen\u00eatre commencera toujours par &#91;ReplayTV&#93;.<\/p>\n<\/li>\n<\/ul>\n<h6 id=\"Replay-Optimisation-de-Firefox\"><\/h6>\n<h3>- <strong>Optimisation de Firefox<\/strong><\/h3>\n<p>Il n'est pas n\u00e9cessaire de d\u00e9graisser Firefox de la m\u00eame mani\u00e8re que pour Netflix, qui est beaucoup plus exigeant.<br \/>\nToutefois, augmenter la taille du cache vid\u00e9o est toujours utile.<\/p>\n<p>Dans la configuration de Firefox, <em>about:config<\/em>, changer les valeurs suivantes:<\/p>\n<p>Augmenter le buffering multim\u00e9dia:<br \/>\nToute d'abord la taille du cache, puis la dur\u00e9e du buffer.<\/p>\n<pre><code class=\"\">media.cache_size    1024000\nmedia.cache_readhead_limit    600\nmedia.cache_resume_threshold    300\n<\/code><\/pre>\n<h6 id=\"Replay-Desactivation-de-lacceleration-materielle\"><\/h6>\n<h3>- <strong>D\u00e9sactivation de l'acc\u00e9l\u00e9ration mat\u00e9rielle<\/strong><\/h3>\n<p>Ainsi qu'<a class=\"wp-editor-md-post-content-link\" href=\"#Netflix-Desactivation-de-lacceleration-materielle\">expliqu\u00e9 avec Netflix<\/a>, Firefox s'en sort parfois bien mieux sans l'acc\u00e9l\u00e9ration mat\u00e9rielle. Nous pouvons donc la d\u00e9sactiver ici:<\/p>\n<p><em>> Pr\u00e9f\u00e9rences > G\u00e9n\u00e9ral > Performances<\/em><br \/>\nD\u00e9sactiver <em>Utiliser les param\u00e8tres de performance recommand\u00e9s<\/em><br \/>\nPuis d\u00e9sactiver <em>Utiliser l'acc\u00e9l\u00e9ration graphique mat\u00e9rielle si disponible<\/em><\/p>\n<h6 id=\"Replay-Configuration-de-la-page-daccueil-de-Firefox\"><\/h6>\n<h3>- <strong>Configuration de la page d'accueil de Firefox<\/strong><\/h3>\n<p>La page d'accueil de Firefox est pleine de services ind\u00e9sirables, Facebook, Amazon et autre Google...<br \/>\nLa premi\u00e8re chose \u00e0 faire est de s'en d\u00e9barrasser !<\/p>\n<p>En haut \u00e0 droite de chaque vignette, un petit menu est disponible. Il nous permettra de <em>Retirer<\/em> les ind\u00e9sirables.<\/p>\n<p>Cela fait, nous pourrons ajouter un <em>Nouveau Site populaire<\/em> pour chaque service de Replay que nous souhaitons avoir.<br \/>\nL'ajout manuel va automatiquement \u00e9pingler ces sites. Ils resteront donc en place.<\/p>\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"http:\/\/crudelis.fr\/site\/sblog\/wp-content\/uploads\/sites\/3\/2021\/01\/Screenshot_20210107_185922.png\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" src=\"https:\/\/crudelis.fr\/site\/sblog\/wp-content\/uploads\/sites\/3\/2021\/01\/Screenshot_20210107_185922.png\" width=\"90%\" height=\"90%\"\/><\/a><\/figure>\n<h6 id=\"Configuration-de-fenetres-KDE-pour-le-Replay-TV-sur-Firefox\"><\/h6>\n<h3>- <strong>Configuration de fen\u00eatres KDE pour le Replay TV sur Firefox<\/strong><\/h3>\n<p>Le fichier .kwinrule pour ReplayTV est le suivant:<\/p>\n<pre><code class=\"\">[ReplayTV Firefox]\nDescription=ReplayTV Firefox\ndesktop=5\ndesktoprule=2\ntitle=[ReplayTV]\\s\ntitlematch=2\ntypes=1\nwindowrole=browser\nwindowrolematch=1\nwmclass=navigator firefox\nwmclasscomplete=true\nwmclassmatch=1\n<\/code><\/pre>\n<h2 id=\"Service-Youtube\">Service: Youtube<\/h2>\n<p>Je n'aime pas Youtube...<br \/>\nMais je ne peux nier la richesse de sa collection de vid\u00e9os, qui n'a pas d'\u00e9gales.<br \/>\nHeureusement, pour le moment du moins, il n'est pas n\u00e9cessaire d'avoir un compte Google pour regarder le contenu de Youtube.<\/p>\n<h6 id=\"Youtube-Profil-Firefox\"><\/h6>\n<h3>- <strong>Profil Firefox<\/strong><\/h3>\n<p>Comme pour Netflix, nous allons cr\u00e9er un profil d\u00e9di\u00e9 \u00e0 l'usage de Firefox pour Youtube<\/p>\n<pre><code class=\"language-bash \">firefox --ProfileManager\n<\/code><\/pre>\n<p>Puis nous cr\u00e9ons un profile nomm\u00e9 <em>Youtube<\/em>. Encore et toujours, le nom doit simplement correspondre \u00e0 celui indiqu\u00e9 dans le script <em>Launcher.sh<\/em><\/p>\n<p>Pour d\u00e9marrer Firefox avec ce profil:<\/p>\n<pre><code class=\"language-bash \">firefox -P Youtube --no-remote\n<\/code><\/pre>\n<p>A pr\u00e9sent que nous avons un profil d\u00e9di\u00e9, nous allons le configurer de mani\u00e8re ad\u00e9quat.<\/p>\n<h6 id=\"Youtube-Faciliter-la-navigation-sans-molette\"><\/h6>\n<h3>- <strong>Faciliter la navigation sans molette<\/strong><\/h3>\n<p>Nous facilitons le d\u00e9filement avec les touches haut\/bas.<\/p>\n<p>D\u00e9sactiver les param\u00e8tres<br \/>\n<em>> Pr\u00e9f\u00e9rences > G\u00e9n\u00e9ral> Utiliser le d\u00e9filement automatique<\/em><br \/>\n<em>> Pr\u00e9f\u00e9rences > G\u00e9n\u00e9ral> Toujours utiliser les touches de navigation pour se d\u00e9placer \u00e0 l'int\u00e9rieur d'une page<\/em><\/p>\n<p>\u00c9galement, pour plus de comfort, activer les param\u00e8tres suivants<br \/>\n<em>> Pr\u00e9f\u00e9rences > G\u00e9n\u00e9ral> Utiliser le d\u00e9filement doux<\/em><br \/>\n<em>> Pr\u00e9f\u00e9rences > G\u00e9n\u00e9ral> Contr\u00f4ler la lecture des m\u00e9dias via le clavier, un casque ou l'interface virtuelle<\/em><\/p>\n<h6 id=\"Youtube-Page-daccueil-Firefox-par-defaut\"><\/h6>\n<h3>- <strong>Page d'accueil Firefox par d\u00e9faut<\/strong><\/h3>\n<p>Pour s'\u00e9pargner la page d'accueil de Youtube, toujours rempli de vid\u00e9os sans le moindre int\u00e9r\u00eat, nous allons garder la page d'accueil par d\u00e9faut de Firefox.<\/p>\n<p><em>> Pr\u00e9f\u00e9rences > Accueil<a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/www.netflix.com\/fr-en\/\"><\/a> > Page d'accueil et nouvelles fen\u00eatres<\/em><br \/>\nS\u00e9lectionner <em>Page d'accueil de Firefox (par d\u00e9faut)<\/em><\/p>\n<p>Puis juste en dessous, nous allons param\u00e9trer cette page d'accueil.<\/p>\n<blockquote><p>\n  Sites les plus visit\u00e9s<br \/>\n  1 ligne.<\/p>\n<p>  \u00c9l\u00e9ments-cl\u00e9s<br \/>\n  4 lignes et nous gardons uniquement <em>Marques pages<\/em>.<br \/>\n  De cette mani\u00e8re, nous allons pouvoir mettre de c\u00f4t\u00e9 les vid\u00e9os \u00e0 voir et les chaines dignes d'int\u00e9r\u00eat que nous souhaitons suivre.\n<\/p><\/blockquote>\n<h6 id=\"Youtube-Modules-complementaires-pour-Firefox\"><\/h6>\n<h3>- <strong>Modules compl\u00e9mentaires pour Firefox<\/strong><\/h3>\n<ul>\n<li><a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/addons.mozilla.org\/en-US\/firefox\/addon\/window-titler\">Window Titler<\/a><br \/>\n  Afin de pouvoir identifier la fen\u00eatre Firefox \u00e0 l'aide de la configuration des fen\u00eatres de KDE (qui pour rappel nous permettra de placer la fen\u00eatre sur le bureau choisi) nous allons installer l'extension Window Titler.<\/p>\n<p>Dans les pr\u00e9f\u00e9rences de l'extension, nous choissirons les tags <em>&#91;<\/em> et <em>&#93;<\/em> et le <em>Profile title<\/em> Youtube. Ainsi le titre de la fen\u00eatre commencera toujours par &#91;Youtube&#93;.<\/p>\n<\/li>\n<li>\n<p><a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/addons.mozilla.org\/en-US\/firefox\/addon\/enhancer-for-youtube\/\">Enhancer for Youtube<\/a><br \/>\n  Ce plugin tr\u00e8s utile va permettre de configurer diff\u00e9rents aspects de Youtube et de garder un meilleur contr\u00f4le sur le comportement de l'interface.<\/p>\n<\/li>\n<li><a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/addons.mozilla.org\/en-US\/firefox\/addon\/privacy-badger17\/\">Privacy Badger<\/a><br \/>\n  Indispensable sur un service Google, des filtres pour limiter les fuites d'informations sur nos activit\u00e9s.<br \/>\n  Je n'en ai pas parl\u00e9 pour les autres profils, car c'est un choix personnel.<br \/>\n  Toutefois, sur l'ensemble des profils, sauf Netflix qui n'utilise pas de trackers, j'utilise une collection d'indispensables en plus de Privacy Badger:<\/p>\n<ul>\n<li><a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/addons.mozilla.org\/en-US\/firefox\/addon\/disconnect\/\">Disconnect<\/a><\/li>\n<li><a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/addons.mozilla.org\/en-US\/firefox\/addon\/ublock-origin\/\">uBlock Origin<\/a><\/li>\n<li><a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/addons.mozilla.org\/en-US\/firefox\/addon\/i-dont-care-about-cookies\/\">I don't care about cookies<\/a><\/li>\n<li>Et \u00e9galement un filtrage DNS <a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/pi-hole.net\/\">Pi-Hole<\/a> sur l'ensemble de mon r\u00e9seau, qui ne d\u00e9pend pas de Firefox.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h6 id=\"Youtube-Optimisation-de-Firefox\"><\/h6>\n<h3>- <strong>Optimisation de Firefox<\/strong><\/h3>\n<p>Il n'est pas n\u00e9cessaire de d\u00e9graisser Firefox de la m\u00eame mani\u00e8re que pour Netflix, qui est beaucoup plus exigeant.<br \/>\nToutefois, augmenter la taille du cache vid\u00e9o est toujours utile.<\/p>\n<p>Dans la configuration de Firefox, <em>about:config<\/em>, changer les valeurs suivantes:<\/p>\n<p>Augmenter le buffering multim\u00e9dia:<br \/>\nToute d'abord la taille du cache, puis la dur\u00e9e du buffer.<\/p>\n<pre><code class=\"\">media.cache_size    1024000\nmedia.cache_readhead_limit    600\nmedia.cache_resume_threshold    300\n<\/code><\/pre>\n<h6 id=\"Youtube-Desactivation-de-lacceleration-materielle\"><\/h6>\n<h3>- <strong>D\u00e9sactivation de l'acc\u00e9l\u00e9ration mat\u00e9rielle<\/strong><\/h3>\n<p>Ainsi qu'<a class=\"wp-editor-md-post-content-link\" href=\"#Netflix-Desactivation-de-lacceleration-materielle\">expliqu\u00e9 avec Netflix<\/a>, Firefox s'en sort parfois bien mieux sans l'acc\u00e9l\u00e9ration mat\u00e9rielle. Nous pouvons donc la d\u00e9sactiver ici:<\/p>\n<p><em>> Pr\u00e9f\u00e9rences > G\u00e9n\u00e9ral > Performances<\/em><br \/>\nD\u00e9sactiver <em>Utiliser les param\u00e8tres de performance recommand\u00e9s<\/em><br \/>\nPuis d\u00e9sactiver <em>Utiliser l'acc\u00e9l\u00e9ration graphique mat\u00e9rielle si disponible<\/em><\/p>\n<h6 id=\"Youtube-Configuration-de-la-page-daccueil-de-Firefox\"><\/h6>\n<h3>- <strong>Configuration de la page d'accueil de Firefox<\/strong><\/h3>\n<p>De la m\u00eame mani\u00e8re que pour le profil <a class=\"wp-editor-md-post-content-link\" href=\"#Replay-Configuration-de-la-page-daccueil-de-Firefox\">ReplayTV<\/a>, il peut \u00eatre utile de nettoyer les ind\u00e9sirables, puis d'\u00e9pingler Youtube et \u00e9ventuellement les chaines principales suivies.<\/p>\n<h6 id=\"Configuration-de-fenetres-KDE-pour-Youtube\"><\/h6>\n<h3>- <strong>Configuration de fen\u00eatres KDE pour Youtube<\/strong><\/h3>\n<p>Le fichier .kwinrule pour Youtube est le suivant:<\/p>\n<pre><code class=\"\">[Youtube Firefox]\nDescription=Youtube Firefox\ndesktop=6\ndesktoprule=2\ntitle=[Youtube]\\s\ntitlematch=2\ntypes=1\nwindowrole=browser\nwindowrolematch=1\nwmclass=navigator firefox\nwmclasscomplete=true\nwmclassmatch=1\n<\/code><\/pre>\n<h2 id=\"Service-Firefox-tout-usage\">Service: Firefox tout usage<\/h2>\n<p>Puisque chacun des profils Firefox pr\u00e9c\u00e9dent sont sp\u00e9cifiquement configur\u00e9s pour nos diff\u00e9rents usages, il est utile d'avoir un profil pour d'autres activit\u00e9s.<\/p>\n<h6 id=\"Firefox-Profil-Firefox\"><\/h6>\n<h3>- <strong>Profil Firefox<\/strong><\/h3>\n<p>Comme pour Netflix, nous allons cr\u00e9er un profil d\u00e9di\u00e9 aux autres usages.<\/p>\n<pre><code class=\"language-bash \">firefox --ProfileManager\n<\/code><\/pre>\n<p>Puis soit nous cr\u00e9ons un profile d\u00e9di\u00e9, soit nous utilisons le profil <em>default<\/em><\/p>\n<p>Pour d\u00e9marrer Firefox avec ce profil:<\/p>\n<pre><code class=\"language-bash \">firefox -P default --no-remote\n<\/code><\/pre>\n<h6 id=\"Firefox-Faciliter-la-navigation-sans-molette\"><\/h6>\n<h3>- <strong>Faciliter la navigation sans molette<\/strong><\/h3>\n<p>Nous facilitons le d\u00e9filement avec les touches haut\/bas.<\/p>\n<p>D\u00e9sactiver les param\u00e8tres<br \/>\n<em>> Pr\u00e9f\u00e9rences > G\u00e9n\u00e9ral> Utiliser le d\u00e9filement automatique<\/em><br \/>\n<em>> Pr\u00e9f\u00e9rences > G\u00e9n\u00e9ral> Toujours utiliser les touches de navigation pour se d\u00e9placer \u00e0 l'int\u00e9rieur d'une page<\/em><\/p>\n<p>\u00c9galement, pour plus de comfort, activer les param\u00e8tres suivants<br \/>\n<em>> Pr\u00e9f\u00e9rences > G\u00e9n\u00e9ral> Utiliser le d\u00e9filement doux<\/em><br \/>\n<em>> Pr\u00e9f\u00e9rences > G\u00e9n\u00e9ral> Contr\u00f4ler la lecture des m\u00e9dias via le clavier, un casque ou l'interface virtuelle<\/em><\/p>\n<h6 id=\"Firefox-Modules-complementaires-pour-Firefox\"><\/h6>\n<h3>- <strong>Modules compl\u00e9mentaires pour Firefox<\/strong><\/h3>\n<ul>\n<li><a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/addons.mozilla.org\/en-US\/firefox\/addon\/window-titler\">Window Titler<\/a><br \/>\n  Afin de pouvoir identifier la fen\u00eatre Firefox \u00e0 l'aide de la configuration des fen\u00eatres de KDE (qui pour rappel nous permettra de placer la fen\u00eatre sur le bureau choisi) nous allons installer l'extension Window Titler.<\/p>\n<p>Dans les pr\u00e9f\u00e9rences de l'extension, nous choissirons les tags <em>&#91;<\/em> et <em>&#93;<\/em> et le <em>Profile title<\/em> Free Browsing. Ainsi le titre de la fen\u00eatre commencera toujours par &#91;Free Browsing&#93;.<\/p>\n<\/li>\n<\/ul>\n<h6 id=\"Firefox-Optimisation-de-Firefox\"><\/h6>\n<h3>- <strong>Optimisation de Firefox<\/strong><\/h3>\n<p>Nous pouvons raisonnablement imaginer que ce profil servira \u00e9galement \u00e0 regarder des vid\u00e9os. Nous augmentons donc la taille du cache vid\u00e9o.<\/p>\n<p>Dans la configuration de Firefox, <em>about:config<\/em>, changer les valeurs suivantes:<\/p>\n<p>Augmenter le buffering multim\u00e9dia:<br \/>\nToute d'abord la taille du cache, puis la dur\u00e9e du buffer.<\/p>\n<pre><code class=\"\">media.cache_size    1024000\nmedia.cache_readhead_limit    600\nmedia.cache_resume_threshold    300\n<\/code><\/pre>\n<h6 id=\"Firefox-Desactivation-de-lacceleration-materielle\"><\/h6>\n<h3>- <strong>D\u00e9sactivation de l'acc\u00e9l\u00e9ration mat\u00e9rielle<\/strong><\/h3>\n<p>Ainsi qu'<a class=\"wp-editor-md-post-content-link\" href=\"#Netflix-Desactivation-de-lacceleration-materielle\">expliqu\u00e9 avec Netflix<\/a>, Firefox s'en sort parfois bien mieux sans l'acc\u00e9l\u00e9ration mat\u00e9rielle. Nous pouvons donc la d\u00e9sactiver ici:<\/p>\n<p><em>> Pr\u00e9f\u00e9rences > G\u00e9n\u00e9ral > Performances<\/em><br \/>\nD\u00e9sactiver <em>Utiliser les param\u00e8tres de performance recommand\u00e9s<\/em><br \/>\nPuis d\u00e9sactiver <em>Utiliser l'acc\u00e9l\u00e9ration graphique mat\u00e9rielle si disponible<\/em><\/p>\n<h6 id=\"Configuration-de-fenetres-KDE-pour-Firefox\"><\/h6>\n<h3>- <strong>Configuration de fen\u00eatres KDE pour Firefox<\/strong><\/h3>\n<p>Le fichier .kwinrule pour Firefox est le suivant:<\/p>\n<pre><code class=\"\">[Firefox]\nDescription=Firefox\ndesktop=7\ndesktoprule=2\ntitle=[Free Browsing]\\s\ntitlematch=2\ntypes=1\nwindowrole=browser\nwindowrolematch=1\nwmclass=navigator firefox\nwmclasscomplete=true\nwmclassmatch=1\n<\/code><\/pre>\n<h2 id=\"Service-MPD\">Service: MPD<\/h2>\n<p>Puisque le HTPC est \u00e0 pr\u00e9sent \u00e9quip\u00e9 d'enceintes de qualit\u00e9 et que PulseAudio est configur\u00e9 pour en tirer le meilleur parti, il serait dommage de ne pas en profiter pour \u00e9couter mes musiques.<\/p>\n<p>L'installation de MPD est tr\u00e8s simple<\/p>\n<pre><code class=\"language-bash \">sudo apt install mpd\n<\/code><\/pre>\n<p>Toutefois il ne sera pas fonctionnel dans un premier temps...<\/p>\n<ul>\n<li>Source audio<\/li>\n<\/ul>\n<p>Tout d'abord, nous allons lui fournir une source de m\u00e9dias, \u00e0 l'instar de <a class=\"wp-editor-md-post-content-link\" href=\"#Service-Kodi\">Kodi<\/a> ce sera un partage NFS.<\/p>\n<p>Nous allons donc lui d\u00e9dier un nouveau dossier pour le montage NFS.<\/p>\n<pre><code class=\"language-bash \">sudo mkdir -p \/media\/media_mpd\n<\/code><\/pre>\n<p>Puis nous allons tester le montage r\u00e9seau.<\/p>\n<pre><code class=\"language-bash \">sudo mount --types nfs --read-only 192.168.1.XXX:\/media\/data\/source_media_pour_mpd \/media\/media_mpd\/\n<\/code><\/pre>\n<p>Afin de p\u00e9r\u00e9niser ce montage NFS, nous ajouterons cette ligne au fstab.<\/p>\n<pre><code class=\"language-bash \">sudo nano \/etc\/fstab\n<\/code><\/pre>\n<pre><code class=\"\">192.168.1.XXX:\/media\/data\/source_media_pour_mpd \/media\/media_mpd\/       nfs     auto  0  0\n<\/code><\/pre>\n<h6 id=\"Configuration-de-MPD\"><\/h6>\n<h3>- <strong>Configuration de MPD<\/strong><\/h3>\n<p>La configuration de MPD se trouve dans <code>\/etc\/mpd.conf<\/code><\/p>\n<p>Tout d'abord, il nous faut indiquer \u00e0 MPD o\u00f9 trouver ses sources. Par d\u00e9faut il regarde dans \/var\/lib\/mpd\/music, nous allons changer cela<\/p>\n<pre><code class=\"\">music_directory         \"\/media\/media_mpd\"\n<\/code><\/pre>\n<p>La configuration par d\u00e9faut permet uniquement de connecter des clients sur la m\u00eame machine, si l'usage local n'est pas \u00e0 exclure, nous souhaitons \u00e9galement pouvoir connecter des clients distants.<br \/>\nPour cela, nous allons ajouter une seconde ligne bind_to_address en plus de localhost, qui permettra une \u00e9coute sur l'adresse local du HTPC.<\/p>\n<pre><code class=\"\">bind_to_address \"192.168.1.XXX\"\n<\/code><\/pre>\n<p>Et pour des questions de confort d'\u00e9coute, j'active ReplayGain en mode auto.<\/p>\n<pre><code class=\"\">replaygain                     \"auto\"\n<\/code><\/pre>\n<p>Nous pouvons \u00e0 pr\u00e9sent red\u00e9marrer MPD et connecter un client, local ou distant.<\/p>\n<pre><code class=\"language-bash \">sudo systemctl restart mpd\n<\/code><\/pre>\n<p>Et d\u00e9couvrir avec d\u00e9sarroi que MPD refuse de jouer quoi que ce soit...<br \/>\nIl s'av\u00e8re que si MPD fonctionne parfaitement avec ALSA, il n'en est pas de m\u00eame avec PulseAudio...<\/p>\n<h6 id=\"MPD-et-PulseAudio\"><\/h6>\n<h3>- <strong>MPD et PulseAudio<\/strong><\/h3>\n<p>Tout d'abord, MPD n'est pas configur\u00e9 pour utiliser PulseAudio, il faut le lui dire dans sa configuration.<\/p>\n<p>Pour commencer, commentons la section <code>audio_output<\/code> pour ALSA<\/p>\n<pre><code class=\"\">#audio_output {\n#  type        \"alsa\"\n#  name        \"My ALSA Device\"\n#  device      \"hw:0,0\"    # optional\n#  mixer_type      \"hardware\"      # optional\n#  mixer_device    \"default\"   # optional\n#  mixer_control   \"PCM\"       # optional\n#  mixer_index \"0\"     # optional\n#}\n<\/code><\/pre>\n<p>Puis nous d\u00e9commentons la section pour PulseAudio, un peu plus bas.<\/p>\n<pre><code class=\"\">audio_output {\n    type        \"pulse\"\n    name        \"My Pulse Output\"\n    mixer_type      \"software\"\n#  server      \"remote_server\"     # optional\n#  sink        \"remote_server_sink\"    # optional\n}\n<\/code><\/pre>\n<p>Toutefois, PulseAudio travaille s\u00e9par\u00e9ment pour chaque utilisateur, lors du d\u00e9marrage de la session il est donc d\u00e9marr\u00e9 pour l'usage de l'utilisateur connect\u00e9.<br \/>\nOr MPD d\u00e9marre par d\u00e9faut sur l'utilisateur mpd et donc essaye de d\u00e9marrer son propre serveur PulseAudio, ce qui n'est pas permis dans la configuration par d\u00e9faut. En r\u00e9sulte un \u00e9chec de MPD de jouer un quelconque son...<\/p>\n<p>La premi\u00e8re chose \u00e0 faire est donc de faire travailler MPD avec notre utilisateur.<br \/>\nCela se fait tr\u00e8s simplement en modifiant sa configuration.<\/p>\n<pre><code class=\"\">user                            \"Your_user_name\"\n<\/code><\/pre>\n<p>Cela \u00e9tant, les fichiers de MPD \u00e9tant situ\u00e9s dans <code>\/var\/lib\/mpd<\/code>, il appartient donc soit de changer le propri\u00e9taire de ce dossier<\/p>\n<pre><code class=\"\">sudo chown Your_user_name: -R \/var\/lib\/mpd\n<\/code><\/pre>\n<p>Soit, et c'est la solution que je pr\u00e9f\u00e8re, d\u00e9placer ce dossier en espace utilisateur.<\/p>\n<pre><code class=\"language-bash \">sudo cp -a \/var\/lib\/mpd \/home\/Your_user_name\/mpd\nsudo chown Your_user_name: -R \/home\/Your_user_name\/mpd\n<\/code><\/pre>\n<p>Le cas \u00e9ch\u00e9ant il faudra en revanche modifier la configuration de MPD pour qu'il trouve son dossier \u00e0 la bonne place.<\/p>\n<pre><code class=\"\">playlist_directory              \"\/home\/Your_user_name\/mpd\/playlists\"\ndb_file                         \"\/home\/Your_user_name\/mpd\/tag_cache\"\nlog_file                        \"\/home\/Your_user_name\/mpd\/mpd.log\"\npid_file                        \"\/home\/Your_user_name\/mpd\/pid\"\nstate_file                      \"\/home\/Your_user_name\/mpd\/state\"\nsticker_file                    \"\/home\/Your_user_name\/mpd\/sticker.sql\"\n<\/code><\/pre>\n<p>Malheureusement, apr\u00e8s red\u00e9marrage de MPD, celui-ci n'est toujours pas capable de jouer un quelconque son... Car il ne sait pas o\u00f9 trouver PulseAudio.<br \/>\nPour lui indiquer o\u00f9 trouver PulseAudio, nous allons renseigner la valeur <code>XDG_RUNTIME_DIR<\/code> dans le fichier <code>\/etc\/default\/mpd<\/code><\/p>\n<pre><code class=\"language-bash \">echo -e \"\\nXDG_RUNTIME_DIR=\/run\/user\/1000\" | sudo tee -a \/etc\/default\/mpd\n<\/code><\/pre>\n<blockquote><p>\n  1000 correspond \u00e0 l'UID usuel de votre utilisateur principal, vous pouvez toutefois v\u00e9rifier cette valeur avec la commande <code>id -u user<\/code>\n<\/p><\/blockquote>\n<p>A pr\u00e9sent, apr\u00e8s red\u00e9marrage, MPD devrait \u00eatre capable de jouer la musique en utilisant PulseAudio et ainsi utiliser les enceintes du HTPC.<\/p>\n<h6 id=\"Suspendre-la-mise-en-veille-tant-que-la-musique-est-jouee\"><\/h6>\n<h3>- <strong>Suspendre la mise en veille tant que la musique est jou\u00e9e<\/strong><\/h3>\n<p>Toutefois, suite \u00e0 la configuration effectu\u00e9e sur le HTPC, celui-ci se mettra de lui-m\u00eame en veille si il est inactif.<br \/>\nOr, jouer de la musique en arri\u00e8re plan n'est pas consid\u00e9r\u00e9 comme une activit\u00e9... Donc le HTPC se mettra en veille tandis que MPD joue de la musique.<br \/>\nCe n'est pas le comportement souhait\u00e9, donc nous allons simuler une activit\u00e9 tant que de la musique est jou\u00e9e pour \u00e9viter la mise en veille.<\/p>\n<p>Pour y parvenir, nous allons surveiller l'activit\u00e9 de PulseAudio et en particulier les entr\u00e9es audio de celui-ci, indicateur d'une source audio active envoyant un flux \u00e0 traiter \u00e0 PulseAudio.<\/p>\n<pre><code class=\"language-bash \">pacmd list-sink-inputs | grep state:\n<\/code><\/pre>\n<p>Cette commande renverra <code>\"state: RUNNING\"<\/code> si une source quelconque est active, mais restera silencieuse si aucun son n'est produit. C'est donc un moyen fiable de savoir si le HTPC joue de la musique ou un autre son.<\/p>\n<p>Pour simuler une activit\u00e9 sur l'ordinateur, nous utiliserons l'utilitaire <code>xdotool<\/code>, qui permet de simuler des touches du clavier ou des mouvements de souris.<\/p>\n<pre><code class=\"language-bash \">sudo apt install xdotool\n<\/code><\/pre>\n<p>A pr\u00e9sent, il nous suffit d'ajouter le test de l'audio ainsi qu'une simulation de touche de clavier dans une t\u00e2che cron.<\/p>\n<pre><code class=\"language-bash \">sudo nano \/etc\/cron.d\/do_not_sleep_audio\n<\/code><\/pre>\n<pre><code class=\"\">*\/10 * * * *    Your_user_name    XDG_RUNTIME_DIR=\/run\/user\/1000 pacmd list-sink-inputs | grep --quiet state: &amp;&amp; DISPLAY=:0 xdotool key F15\n<\/code><\/pre>\n<p>xdotool \u00e9tant un outil interagissant avec Xorg, il a besoin de pouvoir communiquer avec ce dernier, c'est pourquoi tout d'abord, la t\u00e2che cron doit \u00eatre ex\u00e9cut\u00e9e avec le m\u00eame utilisateur que la session en cours.<br \/>\nEnsuite, il faut indiquer \u00e0 xdotool le DISPLAY Xorg sur lequel il doit agir. En g\u00e9n\u00e9ral le DISPLAY est 0, mais pour le v\u00e9rifier on peut simplement ex\u00e9cuter <code>echo $DISPLAY<\/code> depuis l'\u00e9cran connect\u00e9.<\/p>\n<p>Enfin, pour ne pas perturber le visionnage de film ou tout autre activit\u00e9, j'ai choisi la touche F15, qui n'existe pas physiquement et n'a aucun effet.<\/p>\n<h6 id=\"Configuration-de-fenetres-KDE-pour-MPD\"><\/h6>\n<h3>- <strong>Configuration de fen\u00eatres KDE pour MPD<\/strong><\/h3>\n<p>MPD est une application serveur sans interface.<br \/>\nMais s'agissant d'un HTPC, il peut \u00eatre int\u00e9ressant d'avoir un client graphique local pour interagir avec MPD.<br \/>\nLe site de MPD propose une liste de <a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/www.musicpd.org\/clients\/\">clients<\/a>.<br \/>\nPour ma part j'ai choisi Cantata.<\/p>\n<p>Le fichier .kwinrule pour le client de MPD est le suivant:<\/p>\n<pre><code class=\"\">[MPD_client]\nDescription=Cantata\ndesktop=7\ndesktoprule=7\nwmclass=cantata\nwmclasscomplete=false\nwmclassmatch=1\n<\/code><\/pre>\n<h2 id=\"Backup-automatique\">Backup automatique<\/h2>\n<p>Car nous n'avons pas envie de tout refaire en cas de probl\u00e8me, un backup est indispensable.<br \/>\nIl existe toute sortes de solutions pour un backup efficace, je vais choisir une solution personnelle que j'utilise r\u00e9guli\u00e8rement. <a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/github.com\/maniackcrudelis\/archivist\">Archivist<\/a>.<\/p>\n<p>Les d\u00e9tails de la configuration sont sp\u00e9cifiques au logiciel utilis\u00e9.<br \/>\nCe qui importe c'est de sauvegarder au moins la configuration utilisateur et les configurations des applications. Donc principalement le dossier \/home\/$USER<br \/>\nNous pouvons \u00e9galement sauvegarder les configurations suppl\u00e9mentaires dans le syst\u00e8me qui ne se trouvent pas dans $HOME.<\/p>\n<p>Toutefois, quelque soit le choix du logiciel d'archivage, il reste un probl\u00e8me de taille. Comment \u00eatre s\u00fbr que le HTPC sera allum\u00e9 au moment o\u00f9 il devra faire un backup ?<br \/>\nLe meilleur moyen d'en \u00eatre s\u00fbr est de le forcer \u00e0 se r\u00e9veiller au bon moment.<\/p>\n<h6 id=\"Reveil-du-HTPC-pour-le-backup\"><\/h6>\n<h3>- <strong>R\u00e9veil du HTPC pour le backup<\/strong><\/h3>\n<p>Pour r\u00e9veiller un ordinateur en veille, en hibernation ou compl\u00e8tement \u00e9teint, nous allons utiliser l'alarme RTC.<\/p>\n<pre><code class=\"language-bash \">echo \"$(date \"+%s\" -d \"+ 5 minutes\")\" | sudo tee \/sys\/class\/rtc\/rtc0\/wakealarm\n<\/code><\/pre>\n<p>Cette commande r\u00e9veillera l'ordinateur 5 minutes plus tard.<br \/>\nNous allons nous servir de cette commande pour r\u00e9veiller notre HTPC \u00e0 temps pour ses backups r\u00e9guliers.<\/p>\n<blockquote><p>\n  rtcwake peut \u00e9galement \u00eatre utilis\u00e9, mais il ne permet pas de programmer un r\u00e9veil sans \u00eatre affect\u00e9 par un r\u00e9veil manuel.<br \/>\n  En effet, dans l'exemple pr\u00e9c\u00e9dent, si la machine est r\u00e9veill\u00e9e puis remise en veille avant le d\u00e9lai de 5 minutes, rtcwake ne la r\u00e9veillera pas.<\/p>\n<p>  Nous verrons toutefois par la suite que m\u00eame cette m\u00e9thode n'est pas infaillible.\n<\/p><\/blockquote>\n<h6 id=\"Planification-du-backup\"><\/h6>\n<h3>- <strong>Planification du backup<\/strong><\/h3>\n<p>Pour planifier les backups, nous allons simplement utiliser cron.<br \/>\nUn fichier <em>backup<\/em> dans <em>\/etc\/cron.d<\/em> fera le travail.<\/p>\n<p>Le backup serait donc ex\u00e9cut\u00e9, par exemple, tout les 3 jours \u00e0 4h du matin.<\/p>\n<p>Toutefois, afin d'\u00eatre s\u00fbr que l'ordinateur soit d\u00e9marr\u00e9, nous devons \u00e9galement programmer un r\u00e9veil r\u00e9gulier avec RTC juste avant que le backup ne soit d\u00e9marr\u00e9.<\/p>\n<p>Ainsi, RTC reprogrammerait un r\u00e9veil tout les 3 jours pour 3 jours plus tard 5 minutes avant l'ex\u00e9cution suivante de la t\u00e2che cron.<\/p>\n<p>Toutefois, cron ne calcul pas les jours en ajoutant simplement 3 jours \u00e0 la date actuelle, il d\u00e9termine un planning en d\u00e9marrant toujours au 1er de chaque mois.<br \/>\nCeci nous oblige donc \u00e0 compter de la m\u00eame mani\u00e8re pour que RTC r\u00e9veille l'ordinateur au bon moment.<\/p>\n<h6 id=\"Empecher-la-mise-en-veille-durant-le-backup\"><\/h6>\n<h3>- <strong>Emp\u00eacher la mise en veille durant le backup<\/strong><\/h3>\n<p>Notre backup est presque pr\u00eat \u00e0 \u00eatre mis en route, un seul point d\u00e9licat subsiste. Si le backup est trop long \u00e0 s'ex\u00e9cuter, notre HTPC pourrait se remettre en veille avant la fin du backup.<br \/>\nPour \u00e9viter cela, nous allons utiliser <em>systemctl mask sleep.target<\/em> pour suspendre la mise en veille le temps du backup.<\/p>\n<p>Toutes ces complications nous am\u00e8nent \u00e0 construire un script qui sera en charge de toutes les op\u00e9rations pour automatiser notre backup:<\/p>\n<pre><code class=\"language-bash \">#!\/bin\/bash\n\n# frequency of the backup, number of days between each.\n# ! This have to match the cron task !\ndays_frequency=3\nhour=\"03:55am\"\n\n# Get the path of this script\nscript_dir=\"$(dirname $(realpath $0))\"\n\nget_next_backup_execution ()\n{\n    # Get the current day\n    current_day=$(date '+%d')\n\n    # Get the last day of the month\n    last_day_of_month=$(date -d \"-$(date +%d) days +1month\" +%d)\n\n    # Get the number of past executions for the current month\n    past_exec=$((($current_day-1) \/ $days_frequency + 1))\n    # Get the date of the last execution\n    last_exec=$(( $days_frequency*($past_exec-1)+1 ))\n    # Get the date of the next execution\n    next_exec=$(( ($last_exec+$days_frequency) ))\n    # Set the next execution to 1st if it goes on next month\n    if [ $next_exec -gt $last_day_of_month ]; then next_exec=1; fi\n    # Get the number of days before the next execution\n    plus_days=$(( $next_exec - $current_day))\n    # Fix the number of days if it goes on next month\n    if [ $plus_days -lt 0 ]; then plus_days=$(($plus_days + $last_day_of_month)); fi\n\n    # Return the value for rtcwake in number of days to the next wakeup\n    echo \"$plus_days\"\n}\n\n# Remove any previous wake alarm\nsudo rtcwake --mode disable\n# Set the wake alarm with RTC\necho \"$(date \"+%s\" -d \"$hour + $(get_next_backup_execution) days\")\" | sudo tee \/sys\/class\/rtc\/rtc0\/wakealarm &gt; \"$script_dir\/wakealarm\"\n\n# Prevent automatic suspend while working on the backup\nsudo systemctl mask sleep.target\n\n# Do backup the system\nsudo \"$script_dir\/archivist\/archivist.sh\"\n\n# Authorize automatic suspend\nsudo systemctl unmask sleep.target\n\n# To read the next planned execution, use that command\n# date +\"%d-%m-%Y %H:%M:%S\" -d @$(cat wakealarm)\n<\/code><\/pre>\n<p><em>days_frequency<\/em> repr\u00e9sente donc la fr\u00e9quence de backup, ici tout les 3 jours.<\/p>\n<p><em>hour<\/em> repr\u00e9sente l'heure de r\u00e9veil de l'ordinateur pour effectuer le backup. De pr\u00e9f\u00e9rence au moins 5 minutes avant le backup lui-m\u00eame.<\/p>\n<p><em>get_next_backup_execution<\/em> est la fonction qui va se charger de calculer la date de la prochaine ex\u00e9cution, en calculant de la m\u00eame mani\u00e8re que cron.<\/p>\n<p>Finalement, <em>systemctl mask sleep.target<\/em> est utilis\u00e9 pour mettre en pause la mise en veille, le temps du backup.<br \/>\nPuis tout est remis en ordre et l'ordinateur pourra retourner en veille.<\/p>\n<p>Il reste toutefois un seul probl\u00e8me, m\u00eame en renseignant directement <em>\/sys\/class\/rtc\/rtc0\/wakealarm<\/em>, rtc peut perdre la date du prochain r\u00e9veil lors des incessants r\u00e9veils et red\u00e9marrages que peut subir le HTPC dans son usage habituel.<br \/>\nPour pallier ce probl\u00e8me, nous allons utiliser la copie faites dans le fichier local <em>wakealarm<\/em> pour forcer la valeur de <em>\/sys\/class\/rtc\/rtc0\/wakealarm<\/em> \u00e0 chaque d\u00e9marrage.<\/p>\n<p>Tout cela peut maintenant \u00eatre plac\u00e9 dans une t\u00e2che cron simple.<\/p>\n<pre><code class=\"language-bash \">sudo nano \/etc\/cron.d\/backup\n<\/code><\/pre>\n<pre><code class=\"\"># Reinject wakealarm at each boot\n@reboot root sleep 60;cat \/home\/USER\/Backup\/wakealarm &gt; \/sys\/class\/rtc\/rtc0\/wakealarm\n# Execute the backup. This have to match the backup script !\n0 4 *\/3 * * root \/home\/USER\/Backup\/Backup.sh | tee -a \/home\/USER\/Backup\/backup.log 2&gt;&amp;1\n<\/code><\/pre>\n<p>Pour d\u00e9marrer l'automatisation, ou la relancer si n\u00e9cessaire, une premi\u00e8re ex\u00e9cution du script est n\u00e9cessaire.<\/p>\n<pre><code class=\"language-bash \">sudo \/home\/USER\/Backup\/Backup.sh\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Las de devoir changer de source entre mon Kodi (sur un raspberry pi) et le d\u00e9codeur TV de mon FAI et circonspect quand \u00e0 l'arriv\u00e9e in\u00e9luctable d'un d\u00e9codeur Android TV, j'ai finalement d\u00e9cid\u00e9 de tout r\u00e9unir dans une seule source, un Home Theater Personal Computer (HTPC). De cette mani\u00e8re, plus de probl\u00e8me avec le d\u00e9codeur [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"categories":[48],"tags":[19],"class_list":["post-526","post","type-post","status-publish","format-standard","hentry","category-htpc","tag-firefox"],"_links":{"self":[{"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/posts\/526","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/comments?post=526"}],"version-history":[{"count":231,"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/posts\/526\/revisions"}],"predecessor-version":[{"id":912,"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/posts\/526\/revisions\/912"}],"wp:attachment":[{"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/media?parent=526"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/categories?post=526"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/tags?post=526"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}