Salut Ă tous,
Je cherche quelques volontaires pour tester la bĂȘta de BBS pOpcOrn, un client YouTube pour Linux orientĂ© simplicitĂ© et performance.
L'Objectif
Retrouver une expĂ©rience de visionnage fluide sans dĂ©pendre dâun navigateur lourd ou dâune application Electron.
La technique
L'approche est hybride pour maximiser l'efficacité :
- Interface : GTK4 + WebKitGTK (navigation Youtube)
- Lecture : extraction via yt-dlp puis lecture dans MPV
- SponsorBlock supporté (désactivé par défaut)
Points clés
- Accélération matérielle via MPV
- Faible consommation CPU
- Données locales uniquement (pas de télémétrie, pas de compte)
- Licence GPL-3.0
Installation (via Flatpak)
. Installer MPV (prérequis)
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak install -y flathub io.mpv.Mpv
. Ajouter le dépÎt BBS pOpcOrn
flatpak remote-add --if-not-exists --from bbs-popcorn https://blacksamdev.github.io/BBS-Popcorn/bbs-popcorn.flatpakrepo
. Installer et lancer l'application
flatpak install bbs-popcorn io.github.blacksamdev.Popcorn
đ§Ș Tests recherchĂ©s
- Communication GTK â MPV (IPC socket).
- Stabilité GNOME / KDE.
- Bugs graphiques (fullscreen, transitions)
- Comportement selon les configs matérielles
DépÎt GitHub : https://github.com/blacksamdev/BBS-Popcorn
Merci d'avance pour vos retours et bons tests ! đżđŽââ ïž
# Alternative Ă Flatpak ?
Posté par Christophe . Ăvalué à  9 (+7/-0).
Bonne idĂ©e, en effet les apps Electrons peuvent ĂȘtre assez lourdesâŠ
Mais du coup, serait-il possible de proposer une autre méthode d'installation que Flatpak ? Personnellement je ne l'utilise pas, et du coup installer toute la base Gnome (et donc charger ses libs en mémoire) ne me tente pas plus qu'une app Electron.
Apparemment le triptique mpv/yt-dlp/bbs-popcorn s'installe plutĂŽt simplement, il y a peut-ĂȘtre moyen de juste proposer un Makefile (ou Ă©quivalent cmake ou meson, peu importe), histoire d'encourager des gens Ă proposer des paquets de distrib ?
[^] # Re: Alternative Ă Flatpak ?
Posté par bbs . Ăvalué à  2 (+1/-0).
Bonjour Christophe,
J'ai bien pris en compte ta remarque. J'ai ajouté un Makefile ainsi qu'un script wrapper-native.sh au dépÎt pour faciliter l'installation manuelle et la création de paquets natifs par la communauté.
Pour l'instant, je privilĂ©gie officiellement le format Flatpak durant cette phase bĂȘta afin de garantir un environnement d'exĂ©cution stable et contrĂŽlĂ©.
Est-ce que cela répond à tes attentes ?
[^] # Re: Alternative Ă Flatpak ?
Posté par Christophe . Ăvalué à  2 (+0/-0).
Merci, ça me semble trÚs bien !
Et en fait je n'ai pas résisté: j'ai tenté le coup avec un petit PKGBUILD pour Archlinux. Il a fallu patcher un peu update.py pour éviter de lancer "flatpak info" et "flatpak run", mais ensuite ça marche plutÎt bien !
Note: de mon cÎté j'ai dû lancer bbs-popcorn avec
WEBKIT_DISABLE_DMABUF_RENDERER=1, sans doute un souci avec webkit2gtk et Xorg.Voici le PKGBUILD:
et le patch:
Vu que c'est encore en bĂȘta je ne vais pas mettre ça sur l'AUR, afin de continuer Ă privilĂ©gier Flatpak en cible principale.
[^] # Re: Alternative Ă Flatpak ?
Posté par bbs . Ăvalué à  2 (+2/-1).
Merci encore pour le PKGBUILD, ça a vraiment lancé la dynamique pour l'installation native !
Depuis ton test, pas mal de choses ont Ă©voluĂ© â voici un rĂ©sumĂ© des changements qui impactent directement ton build :
updater.py â la dĂ©tection Flatpak/natif est intĂ©grĂ©e proprement avec _IS_FLATPAK = os.path.exists("/app") et une mĂ©thode _build_cmd() qui adapte les appels automatiquement. Plus besoin de patch.
player.py â le plus important : le socket IPC MPV est maintenant dans ~/.var/app/io.mpv.Mpv/ en mode Flatpak (accessible par les deux sandboxes), et dans XDG_RUNTIME_DIR en mode natif. Ce changement a dĂ©bloquĂ© la reprise de lecture et le retour de la fenĂȘtre WebKit aprĂšs la fin naturelle d'une vidĂ©o. Plusieurs correctifs importants : fermeture propre de l'app et de MPV, titre dans l'historique via yt-dlp, dĂ©tection de fin de lecture par Ă©vĂ©nement IPC.
app.py â signal close-request ajoutĂ© pour la fermeture propre, instance unique via Gio.ApplicationFlags, mode Ă©co WebKit (WebGL/WebAudio dĂ©sactivĂ©s, Shorts redirigĂ©s vers MPV).
Tout est dans le dĂ©pĂŽt. Le Makefile et wrapper-native.sh sont inchangĂ©s. Pour ton PKGBUILD, seul le patch updater.py peut ĂȘtre retirĂ© â le reste du build devrait fonctionner tel quel.
# Mise Ă jour et v0.1.0
Posté par bbs . Ăvalué à  1 (+0/-0).
PremiĂšre version stable â toutes les fonctionnalitĂ©s prĂ©vues sont implĂ©mentĂ©es et les bugs connus de la bĂȘta sont corrigĂ©s.
Corrections
Fermeture de l'application
MPV restait actif en arriĂšre-plan aprĂšs fermeture â corrigĂ© via kill_all_mpv() et signal close-request GTK (merci tycooon)
Le processus pOpcOrn lui-mĂȘme ne se terminait pas â corrigĂ© avec self.quit() + Gio.ApplicationFlags
Plusieurs instances de MPV pouvaient s'accumuler â le socket IPC est maintenant ciblĂ© prĂ©cisĂ©ment
Communication IPC avec MPV
Le socket IPC utilisait /tmp (privĂ© dans le sandbox Flatpak) â dĂ©placĂ© vers ~/.var/app/io.mpv.Mpv/ accessible par les deux sandboxes
Broken pipe lors du chargement d'un fichier traitĂ© comme une erreur â corrigĂ©, c'est un comportement normal de MPV
La fenĂȘtre WebKit ne revenait pas aprĂšs fin naturelle d'une vidĂ©o â corrigĂ© via un Ă©vĂ©nement _playback_ended dĂ©clenchĂ© par le tracking IPC
Historique
Le titre affichĂ© Ă©tait "YouTube" au lieu du titre de la vidĂ©o â remplacĂ© par une rĂ©cupĂ©ration asynchrone via yt-dlp
yt-dlp dans le sandbox Flatpak utilisait un mauvais wrapper â remplacĂ© par le binaire standalone officiel
Reprise de lecture
Les URLs YouTube contiennent des paramĂštres de tracking (pp=, si=) qui changeaient Ă chaque session â normalisĂ©es via urllib.parse pour ne conserver que v= et list=
La position n'Ă©tait pas appliquĂ©e au relancement via IPC â corrigĂ© avec un seek absolute aprĂšs le premier time-pos valide
Stabilité
Instance unique : plusieurs lancements simultanĂ©s pouvaient crĂ©er plusieurs fenĂȘtres â corrigĂ© avec Gio.ApplicationFlags.DEFAULT_FLAGS
Nouvelles fonctionnalités
Mode Ă©co WebKit : WebGL et WebAudio dĂ©sactivĂ©s, Shorts redirigĂ©s vers MPV â accessible dans les rĂ©glages â
Installation native : Makefile + wrapper-native.sh pour une installation sans Flatpak
DĂ©tection automatique Flatpak/natif dans updater.py â plus besoin de patch pour les builds natifs (merci Christophe !)
README bilingue français / anglais
Améliorations
La fenĂȘtre WebKit se cache uniquement quand MPV joue rĂ©ellement â supprime le gap visuel noir entre les deux fenĂȘtres
DĂ©tection de fin de lecture accĂ©lĂ©rĂ©e (polling 1s au lieu de 5s) â la fenĂȘtre WebKit revient en ~2s
Socket IPC prĂ©-chauffĂ© utilisĂ© systĂ©matiquement â dĂ©lai de lancement rĂ©duit
Navigation
Interface YouTube complĂšte via WebKitGTK â recherche, recommandations, chaĂźnes, Shorts, tout fonctionne comme dans un navigateur classique.
Lecture vidéo
La lecture est dĂ©lĂ©guĂ©e Ă MPV avec dĂ©codage matĂ©riel automatique (VAAPI/VDPAU). MPV Ă©tant un lecteur natif, les publicitĂ©s YouTube ne sont pas lues â effet de bord bienvenu, non garanti selon les Ă©volutions de YouTube.
Qualité cible configurable : 480p / 720p / 1080p / 1440p / 2160p
Mode fenĂȘtrĂ© ou plein Ă©cran, taille ajustable
Retour automatique Ă l'interface YouTube aprĂšs la lecture
Historique et reprise
Fonctionne quelle que soit la page YouTube d'origine (page d'accueil, recherche, chaĂźneâŠ)
Confidentialité
Aucune télémétrie, aucun serveur tiers. Tout reste local : cookies, historique, positions de reprise.
SponsorBlock : Saut automatique des segments sponsorisĂ©s dans les vidĂ©os (dĂ©sactivĂ© par dĂ©faut, activable dans les rĂ©glages â).
Envoyer un commentaire
Suivre le flux des commentaires
Note : les commentaires appartiennent Ă celles et ceux qui les ont postĂ©s. Nous nâen sommes pas responsables.