❌

Vue normale

Reçu hier — 28 mai 2025

Un serveur musical pour mon salon

Aujourd’hui, on va mettre en place un serveur musical pilotable Ă  distance en utilisant MPD. Il sera notamment capable de jouer de la musique stockĂ©e dessus ou des radios Internet. Il sera aussi capable de se comporter comme une enceinte Bluetooth.

On va parler de rĂ©cup de vieux matos, de Debian, MPD, PipeWire, Samba, d’agent Bluetooth, de systemd (-analyze, -logind), de Powertop et de vbetool.

Serveur musical - les clients MPD se connectent à MPD, les clients Bluetooth peuvent jouer de la musique, les clients SMB peuvent envoyer des fichier, et le serveur est relié à des enceintes en Jack

Cet article au ton trĂšs « administration systĂšme Â» s’adresse Ă  :

  • des gens qui voudraient mettre en place un systĂšme plus ou moins similaire, mĂȘme pour faire autre chose dans le mĂȘme esprit (en mode tutoriel) ;
  • des gens qui aiment les dĂ©tails techniques et voir les trucs cools qu’on peut faire avec les logiciels libres ;
  • toute autre personne curieuse pour d’autres raisons.

Il est probablement trop technique pour quelqu’un qui ne manipule pas la ligne de commande, qui pourra peut-ĂȘtre malgrĂ© tout, avec suffisamment de motivation, se laisser porter par la dĂ©marche.

Sommaire

Introduction

Note de lecture : cette dĂ©pĂȘche est trĂšs dĂ©taillĂ©e, je vous conseille de passer les sections qui vous intĂ©ressent moins.

Motivation

Dans mon salon, j’ai des petites enceintes toutes bĂȘtes qui sonnent plutĂŽt bien. Mettre de la musique implique de s’embĂȘter Ă  brancher un ordinateur, sur lequel je suis le seul avoir le contrĂŽle. Ce serait bien d’avoir un systĂšme prĂȘt Ă  l’emploi et que tout le monde peut contrĂŽler.

Objectifs

  • Pas d’achat : on fait avec de la rĂ©cup
  • Peu gourmand en Ă©nergie
  • Silencieux (Ă  part la musique, bien sĂ»r)
  • Facile Ă  utiliser pour une personne non technique
  • Pouvoir mettre de la musique sans que ça soit pĂ©nible, en utilisant ma bibliothĂšque musicale locale, ou des radios internet
  • Pouvoir laisser n’importe qui se connecter en Bluetooth et lancer sa propre musique

Nous allons, ensemble, remplir ces objectifs. On va rentrer dans les dĂ©tails, qui peuvent ĂȘtre utiles dans d’autres applications, et parce que je sais que certaines personnes ici aiment ça, bande de geeks :-)

Matériel à disposition

  • des enceintes parfaitement fonctionnelles mais sans fonctionnalitĂ© Bluetooth
  • un appareil style netbook du dĂ©but des annĂ©es 2010 (dans mon cas, c’est une vieille tablette Airis Kira Slimpad plus vraiment adaptĂ©e au web moderne, dotĂ©e d’un processeur Intel Atom un peu lent, d’un peu de stockage assez lent, d’un Wifi plutĂŽt lent, du Bluetooth, d’1 Giga de mĂ©moire vive)

Note sur les interfĂ©rences Wifi et Bluetooth. Le Wifi de cette tablette est en 2,4 GHz, pareil que le Bluetooth. Tout Ă©change wifi cause des perturbations sur le Bluetooth et tout transfert intensif rend le Bluetooth inutilisable. Du grand classique. Un Wifi 5, 6 ou 7 aurait Ă©tĂ© apprĂ©ciable. Il serait possible d’utiliser une carte Wifi USB, mais je n’en ai pas donc on fera sans.

Ce qu’on va faire dans les grandes lignes

  • Installer une Debian minimale
  • La configurer pour qu’elle soit accessible par le rĂ©seau, la plus rapide et lĂ©gĂšre possible en utilisation mĂ©moire, en temps de dĂ©marrage et en consommation Ă©nergĂ©tique
  • Installer et configurer MPD
  • Installer et configurer Samba
  • Configurer en mode « enceinte Bluetooth Â»

Installation standard minimaliste de Debian

Par souci de concision, on ne va pas dĂ©tailler l’installation de Debian, il existe d’autres ressources au besoin.

En résumé :

  • Debian classique en 32 bits (ça consomme moins de mĂ©moire que du 64 bits)
  • j’ai laissĂ© l’installateur faire le partitionnement (une partition principale en ext4, et une partition swap de 1G)
  • j’ai ajoutĂ© l’option noatime sur la partition principale pour Ă©viter d’écrire inutilement lors des accĂšs, ce qui use le SSD et ralentit le systĂšme (d’autant que le SSD est lent)
  • lors de l’étape Tasksel, choisir console, serveur ssh et utilitaires standard, et en particulier pas d’environnement de bureau
  • on installe sudo et on ajoute l’utilisateur au groupe sudo, ou alors on se donne accĂšs Ă  root en ssh avec une clĂ© SSH
  • on installe iwd (le remplaçant moderne de wpa_supplicant, supposĂ© plus performant et plus stable permettant Ă©galement de se passer de NetworkManager assez facilement) et on connecte l’appareil en wifi avec
  • on identifie et dĂ©sactive ou on dĂ©sinstalle le superflu avec systemd-analyze critical-chain et systemd-analyze blame (typiquement, si vous avez installĂ© NetworkManager, ModemManager a peut-ĂȘtre Ă©tĂ© installĂ© alors que vous n’avez pas de modem Ă  gĂ©rer)
  • on peut configurer le menu de Grub pour moins attendre au dĂ©marrage

Note : sur cette tablette, l’installateur Debian n’arrive pas Ă  se connecter en Wifi, j’ai donc utilisĂ© la version DVD (le premier suffit).

Gains énergétiques potentiels

Éteindre l’écran

L’écran est potentiellement une des plus grosses sources de consommation Ă©lectrique. On n’en a pas besoin, donc on va l’éteindre au dĂ©marrage et Ă  la sortie de veille.

Pour cela, on va installer vbetool (sources : outils pour Ă©teindre l’écran, lancer une commande au dĂ©marrage, lancer une commande aprĂšs la veille):

sudo apt install vbetool
cat << EOF | sudo tee /etc/systemd/system/screenoff.service
[Unit]
Description=Screen off
After=suspend.target

[Service]
ExecStart=vbetool dpms off

[Install]
WantedBy=multi-user.target suspend.target
EOF

Attention : ça peut compliquer grandement l’usage de l’appareil, on peut vouloir appliquer un dĂ©lai avant extinction pour se faciliter la vie.

Powertop pour améliorer la consommation électrique

Powertop permet de voir ce qui utilise le CPU et les diverses ressources, et d’ajuster un peu les paramĂštres de mise en veille de diffĂ©rents pĂ©riphĂ©riques.

On va l’installer :

sudo apt install powertop

Ensuite, ça peut ĂȘtre cool de lancer l’outil pour constater un peu ce qui tourne et consomme des ressources, de se dĂ©placer dans les onglets, et de tenter des trucs dans l’onglet « Tunables Â» :

sudo powertop

Si passer tout Ă  Good ne cause pas de problĂšme d’instabilitĂ© Ă©vidente, alors on peut appliquer la configuration de Powertop Ă  chaque dĂ©marrage (source) :

cat << EOF | sudo tee /etc/systemd/system/powertop.service
[Unit]
Description=PowerTOP auto tune

[Service]
Type=oneshot
Environment="TERM=dumb"
RemainAfterExit=true
ExecStart=/usr/sbin/powertop --auto-tune

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable powertop.service

Sinon, il y a des solutions mentionnées dans la source pour désactiver certains changements (si vous observez des dysfonctionnements avec certains périphériques par exemple, et notamment si vous avez des problÚmes de Wifi ou Bluetooth)

Perso, je sais que sur cette tablette, passer tout Ă  Good fait (faisait il y a 10 ans en tout cas) qu’aprĂšs un dĂ©lai la premiĂšre frappe sur le clavier ou le premier clic de la souris Ă©tait ignorĂ©, et aussi Ă©tait nĂ©cessaire pour rĂ©veiller l’USB – clairement je m’en fiche ici, mais si votre wifi ou votre Bluetooth est en USB et que les paramĂštres causent une extinction aprĂšs un dĂ©lai, clairement ce n’est pas bon).

Bonus : Configurer le bouton power pour mettre en veille

Sur ma tablette, un appui court sur le bouton power Ă©teint la tablette (et ensuite on la rallume en appuyant 3 longues secondes). Si on souhaite qu’un appui court mette en veille l’appareil et un appui long l’éteigne, comme ça on fait un compromis Ă©nergĂ©tique supposĂ©ment raisonnable pour rendre l’ensemble un poil plus pratique, c’est facile avec systemd.

Ajoutez ces deux lignes au fichier /etc/systemd/logind.conf :

HandlePowerKey=suspend
HandlePowerKeyLongPress=poweroff

Rechargez les paramĂštres :

sudo systemctl restart systemd-logind

MPD : Music Player Deamon

Ok, passons au cƓur du sujet : mpd.

Késako

Simplement, c’est un lecteur de musique pilotable à distance qui est capable de :

  • lire de la musique que vous mettez dans son dossier de travail ;
  • lire des playlists que vous mettez dans son dossier de travail ;
  • lire des flux radio, qui sont par exemple dĂ©finis dans des playlists.

Entre autres.

Certains clients MPD, comme Cantata (une application Qt5 plus ou moins abandonnĂ©e mais encore dans les dĂ©pĂŽts), sont mĂȘme capables de lire de la musique sur votre serveur MPD que vous avez localement sur votre ordinateur, ou de gĂ©rer les playlists. Ça rend d’ailleurs la constitution de playlists vaguement confortable. Vous n’avez pas besoin d’écrire des playlists M3U Ă  la main, quoi.

Les avantages sont multiples :

  • c’est mĂ©ga lĂ©ger, une machine Ă©puisĂ©e peut faire tourner MPD Ă  l’aise
  • si vous lisez la musique stockĂ©e sur le serveur, le rĂ©seau n’est pas engorgĂ©
  • on peut ĂȘtre plusieurs Ă  contrĂŽler la musique, ce n’est pas une personne qui contrĂŽle tout, et on peut le faire depuis le canapĂ©
  • il existe toute une flopĂ©e de clients, il y en a pour tous les goĂ»ts pourvu que vous aimiez les logiciels abandonnĂ©s ou en ligne de commande / en ncurses (ouais, c’est quand mĂȘme un problĂšme que j’identifie et qui a largement retardĂ© mon adoption de MPD)
    • les gens non techniques apprĂ©cieront les applications mobiles telles que M.A.L.P pour gĂ©rer la musique et le volume sonore.

C’est parti pour l’installation

sudo apt install mpd

On va modifier sa configuration :

sudo nano /etc/mpd.conf

On peut laisser les paramÚtres par défaut suivants :

music_directory         "/var/lib/mpd/music"
playlist_directory              "/var/lib/mpd/playlists"

Vous l’aurez compris, c’est lĂ  oĂč on stocke les musiques et les playlists. Dans la section suivante, on verra comment rendre le dĂ©pĂŽt de morceaux simple et convivial.

On va laisser la plupart des autres paramÚtres par défaut.

On va changer bind_to_address, qui est par dĂ©faut Ă  localhost, mais on veut que n’importe quel appareil sur le rĂ©seau soit capable de s'y connecter. On va aussi explicitement mettre le port Ă  la valeur par dĂ©faut (ce n’est probablement pas nĂ©cessaire, mais c’est ce que j’ai fait) :

bind_to_address                 "0.0.0.0"
port                            "6600"

On veut aussi que quand des fichiers sont changés dans les dossiers music et playlists, mpd se mette à jour tout seul pour ne pas avoir à le baby-sitter :

auto_update     "yes"

J’ai tentĂ© d’activer zeroconf pour que les clients MPD puissent le trouver tout seul :

zeroconf_enabled                "yes"
zeroconf_name                   "Music Player @ %h"

Mais en vrai, je n’ai pas rĂ©ussi Ă  faire fonctionner ça. En tout cas, un prĂ©requis est d’avoir installĂ© et activĂ© avahi-daemon, on verra ça plus tard dans la partie Samba du coup.

Vous aurez peut-ĂȘtre envie de mettre un mot de passe voire de changer les permissions par dĂ©faut en dĂ©commentant et adaptant les paramĂštres suivants, mais c’est optionnel :

#password                        "password@read,add,control,admin"

#default_permissions             "read,add,control,admin"

Ensuite, la partie critique, la sortie audio. Pour l’instant, on va dire Ă  mpd d’utiliser Alsa directement. C’est le plus direct et le plus lĂ©ger (on passera Ă  PipeWire plus tard, pour gĂ©rer l’aspect rĂ©cepteur Bluetooth)

audio_output {
       type            "alsa"
       name            "My ALSA Device"
       device          "hw:0,0"        # optional
       mixer_type      "hardware"      # optional
     # mixer_device    "default"       # optional
       mixer_control   "Master"        # optional
       mixer_index     "0"             # optional
}

Pour une de mes installations, j’ai commentĂ© mixer_device parce que ce n’est manifestement pas la bonne valeur chez moi, et que ça marche bien sans.

Vous pouvez vous passer des autres valeurs optionnelles, mais vous n’aurez pas le contrîle du volume sonore depuis les clients MPD si vous faites ça. Vous allez donc devoir trouver les bonnes valeurs pour les paramùtres mixer_*, et pour device. ainsi que mixer_control et mixer_index.

Quelques indices :

  • hw:0,0 est probablement la bonne valeur pour device, et 0 pour mixer_index aussi. Vous pouvez lister vos cartes son avec aplay -L. Vous aurez peut-ĂȘtre besoin d’installer le paquet alsa-utils.
  • la valeur de mixer_control est le nom du contrĂŽle que vous utiliserez pour changer le volume dans alsamixer, du paquet alsamixergui que vous aurez probablement besoin d’installer.

Si vous galĂ©rez trop avec les valeurs de mixer-*, vous pouvez simplement utiliser mixer_type "software", c’est moins propre mais ça devrait faire le taf. Et sinon, vous pouvez toujours sortir l’artillerie lourde et passer directement Ă  PipeWire.

Pour appliquer vos modifications :

systemctl enable --now mpd # À partir de Debian Trixie, mpd n’est plus activĂ© par dĂ©faut au niveau du systĂšme
systemctl restart mpd # Si MPD tournait déjà

Vous pouvez déboguer vos changements avec la commande suivante, qui suit les logs en temps réel :

journalctl -fu mpd

Vous avez plusieurs options pour essayer de lire des choses avec mpd :

  • installer l’application M.A.L.P sur votre tĂ©lĂ©phone Android, ou une autre application cliente MPD, et ajouter un profil avec la bonne adresse, le bon port et le bon mot de passe ;
  • installer un client comme Cantata sur votre ordinateur, avec la bonne adresse, le bon port et le bon mot de passe ;
  • installer mpc directement sur le serveur. Normalement mpc play permet de lancer la lecture.

Moi, j’ai testĂ© avec une webradio dans une playlist (/var/lib/mpd/playlists/radio-paradise-main-mix.m3u avec le contenu http://stream.radioparadise.com/ogg-192m), mais on peut aussi Ă©videmment placer un morceau dans /var/lib/mpd/music/.

ReplayGain

Le niveau sonore de mes morceaux n’est pas homogĂšne, donc il faut sans cesse adapter le volume d’un morceau Ă  l’autre. C’est pĂ©nible, voire inutilisable en l’état. Une solution pour ça est replay gain : on analyse et on enregistre le niveau sonore d’une piste dans ses mĂ©tadonnĂ©es.

Il existe plein d’outils pour faire ça, dont https://github.com/complexlogic/rsgain

On peut le faire avant d’envoyer les fichiers sur l’appareil. Pour ma part, je l’ai fait sur la tablette, et il n’existe pas de paquet Debian 32 bits, donc je l’ai compilĂ© :

sudo apt install cmake build-essential pkd-config git libavcodec-dev libavformat-dev libtag1-dev libebur128 libinih-dev libfmt-dev
git clone --depth=1 https://github.com/complexlogic/rsgain
cd rsgain
mkdir build
cd build
cmake ..
make -j2
sudo make install

Il faudra s'assurer que les morceaux au format Opus sont Ă©tiquetĂ©s avec le tag R128_TRACK_GAIN et pas REPLAYGAIN_TRACK_GAIN, parce que c'est ce que MPD s’attend Ă  avoir. Pour ça, on va convaincre rsgain de suivre les standards (que certains lecteurs de musiques ne comprennent pas) en crĂ©ant un preset qui contient :

[Opus]
OpusMode=s

Mes morceaux ne sont pas organisĂ©s par albums, donc je dĂ©sactive l’analyse par album. Je vais donc partir du preset no_album :

mkdir -p ~/.config/rsgain/presets; cat << EOF > ~/.config/rsgain/presets/no_album_standard_opus.ini 
[Global]
TagMode=i
Album=false
TargetLoudness=-18
ClipMode=p
MaxPeakLevel=0.0
TruePeak=false
Lowercase=false
ID3v2Version=keep
PreserveMtimes=false
DualMono=false
OpusMode=s
EOF

Ensuite, on peut le rsgain sur le dossier de musiques avec ce preset. Mes morceaux ne sont pas organisĂ©s par albums, donc je dĂ©sactive l’analyse par album.

rsgain easy -p no_album_standard_opus -m MAX /var/lib/mpd/music

Note : l'option --skip-existing permet d'ignorer les fichiers dĂ©jĂ  taggĂ©s :

rsgain easy --skip-existing -p no_album_standard_opus -m MAX /var/lib/mpd/music

Avec cette option, on peut exĂ©cuter cette tĂąche rĂ©guliĂšrement, par exemple dans un cron, pour calculer le ReplayGain pour les nouveaux fichiers. Pour la premiĂšre exĂ©cution, il vaut certainement mieux ne pas l’utiliser, sinon, si vous aviez dĂ©jĂ  des fichiers qui avaient l'information, il se peut que le rĂ©sultat ne soit pas uniforme.

Il faut dire à MPD d’utiliser le ReplayGain dans /etc/mpd.conf :

replaygain                      "track"

Vous aurez peut-ĂȘtre besoin de jouer avec les autres paramĂštres liĂ©s au volume et au ReplayGain.

Voici les miens :

# Ce paramÚtre définit la pré-amplification à appliquer pour les morceaux qui ont l'information du ReplayGain
replaygain_preamp              "0"

# Ce paramÚtre définit la pré-amplification à appliquer pour les morceaux qui ne l'ont pas
replaygain_missing_preamp      "0"

# Faut-il interdire à MPD de dépasser le niveau original d'amplification en appliquant le ReplayGain?
replaygain_limit                "no"

# Faut-il permettre Ă  MPD d'ajuster le volume pendant la lecture pour normaliser ?
volume_normalization            "no"

Un autre paramĂštre qu’on peut rĂ©gler, c'est la maniĂšre dont MPD rĂšgle le volume dynamiquement pour ReplayGain. Dans votre bloc audio_output, vous pouvez ajouter replay_gain_handler et la valeur "software" (c'est la valeur par dĂ©faut) ou "mixer". En thĂ©orique, les traitements software dĂ©gradent le son, mais en pratique, avec "mixer", je tombe sur ce bug qui met le volume Ă  100% aprĂšs chaque changement de piste.

Note : je ne suis pas encore convaincu d’avoir rĂ©ussi Ă  trouver les rĂ©glages parfaits, n’hĂ©sitez pas Ă  expĂ©rimenter.

Les clients MPD

À ce stade, vous devriez avoir un serveur MPD fonctionnel et configurĂ©. Si applicable, vous pouvez commencer Ă  suggĂ©rer aux gens de votre foyer d’installer l’application M.A.L.P sur leur appareil Android ; elle est libre et disponible sur F-Droid et sur le Play Store. Avec un peu de chance, votre enthousiasme Ă©tait communicatif et c’est eux qui vous demanderont :-)

Pour les autres types d’appareils, vous allez devoir faire vos recherches vous-mĂȘme je n’ai pas Ă©tudiĂ© les options sous Windows, Mac ou iPhone, mais il y en a. Pour Linux, j’ai essayĂ© Cantata. Il me convient, si ce n’est qu’il a l’air un peu abandonnĂ©, et il a une interface certes conviviale, mais quand mĂȘme un peu brute. Il existe des widgets qui s’intĂšgrent aux diffĂ©rents environnements de bureaux pour les diffĂ©rents systĂšmes d’exploitation, je n’ai pas explorĂ©. Le site de MPD propose une liste de clients, et le wiki de Arch aussi.

 M.A.L.P, un client mobile pour MPD

Samba pour déposer les morceaux (et les playlists)

DĂ©poser des morceaux, vous allez probablement le faire depuis un ordinateur, et Ă  peu prĂšs n’importe quel systĂšme d’exploitation est capable d’aller chercher un dossier SMB en rĂ©seau, alors je vous propose de configurer un serveur Samba. Ça a le bon goĂ»t d’ĂȘtre trĂšs lĂ©ger, trĂšs simple Ă  faire et de fonctionner depuis n’importe quel OS. Allons-y, et tant qu’à faire, on va aussi installer Avahi, qui permettra aux ordinateurs sous Linux et Mac de dĂ©couvrir les dossiers partagĂ©s tous seuls :

sudo apt install samba avahi-daemon

On va partager nos dossiers music et playlists au monde entier en lecture-écriture (YOLO). On édite /etc/samba/smb.conf:

[Musique]
path=/var/lib/mpd/music
read only=no
writable=yes
comment=Fichiers musique MPD
guest ok = yes
force group = audio
force user = mpd
browsable = yes
public = yes
create mask = 0644
directory mask = 0755

[Playlists]
path=/var/lib/mpd/playlists
read only=no
writable=yes
comment=Listes de lecture MPD
guest ok = yes
force group = audio
force user = mpd
browsable = yes
public = yes
create mask = 0644
directory mask = 0755

Je ne maitrise pas particuliĂšrement Samba et il y a peut-ĂȘtre des options superflues, mais globalement l’esprit c’est :

  • n’importe qui doit pouvoir accĂ©der Ă  ces deux en lecture et en Ă©criture depuis le rĂ©seau. En particulier, la crĂ©ation de dossiers doit marcher
  • MPD doit pouvoir lire ce qu’on a Ă©crit dans ces dossiers
  • les fichiers et dossiers doivent avoir des permissions sensĂ©es

Bien sĂ»r, on peut vouloir restreindre l’accĂšs Ă  certains utilisateurs et/ou avec un mot de passe. Je vous laisse creuser.

AprÚs un redémarrage de Samba :

sudo systemctl restart samba

Avec un peu de chance, dans l’onglet « RĂ©seau » de votre gestionnaire de fichier, dans la section « Partages SMB », votre appareil apparait. Sinon, vous devriez pouvoir y accĂ©der avec smb://HOST/ avec Dolphin et probablement Nautilus, probablement \\HOST sous Windows.

Alternatives possibles Ă  Samba

  • Si on a un NAS, monter un dossier sur le serveur MPD, voire installer MPD sur le serveur de stockage, ou avoir une tĂąche chron qui fait un rsync bien placĂ©
  • Mettre en place une synchronisation avec Nextcloud ou Syncthing, et faire pointer MPD vers le bon dossier, ou ajouter le dossier de MPD comme dossier de stockage externe Ă  Nextcloud par exemple
  • SFTP
  • NFS
  • FTP (mais les autres options sont probablement meilleures)

Récepteur Bluetooth

Ce n’est bien sĂ»r pas nĂ©cessaire si vous ĂȘtes parfaitement satisfait·e avec MPD, mais si vous voulez que votre appareil soit en plus capable de se comporter comme une enceinte Bluetooth, vous ĂȘtes au bon endroit.

Les difficultĂ©s qu’on va rĂ©soudre sont les suivantes :

  • pour l’instant, MPD accĂšde au son directement avec ALSA, et en gĂ©nĂ©ral on ne peut pas ĂȘtre plusieurs sur ALSA. En tout cas, et mĂȘme s’il a l’air possible de faire fonctionner Bluetooth et ALSA ensemble, ça n’a pas l’air d’ĂȘtre terriblement simple ou mĂȘme stable. Donc on va utiliser PipeWire. On aurait pu utiliser PulseAudio, mais PipeWire le remplace, et fonctionne gĂ©nĂ©ralement mieux.
  • PipeWire, c’est pensĂ© pour ĂȘtre lancĂ© dans une session graphique d’un utilisateur, mais nous, on a un serveur headless. Il va falloir faire en sorte de lancer une session utilisateur au dĂ©marrage sans interaction, et que cette session ne soit pas tuĂ©e.
  • mpd tourne avec son utilisateur, PipeWire avec son utilisateur, et aprĂšs s’ĂȘtre rendu compte qu’il faut que ça soit les mĂȘmes, faut aussi savoir comment, et le faire.

Lors de l’installation de Debian, on a dĂ©fini un utilisateur. On peut utiliser cet utilisateur. Sinon, on peut aussi en crĂ©er un pour ça, pensez bien Ă  l’ajouter aux groupes audio et bluetooth.

Garder une session utilisateur active

On va démarrer une session utilisateur au boot :

sudo loginctl enable-linger user # remplacer user par le nom d’utilisateur

On va s’assurer que les processus de cette session ne sont pas tuĂ©s au moment oĂč on quitte une session (par exemple quand on quitte une session ssh) : dans le fichier /etc/systemd/logind.conf, dĂ©commentez la ligne KillExcludeUsers et ajouter le nom d’utilisateur aprĂšs le =. Vous deviez avoir

KillExcludeUsers=user

oĂč user est le nom d’utilisateur.

On peut maintenant recharger ces paramĂštres :

sudo systemctl restart systemd-logind

Installer PipeWire et les choses nécessaires

À ce stade, MPD bloque probablement l’utilisation du son parce qu’il s’y connecte via ALSA. On va le stopper.

sudo systemctl stop mpd

PipeWire et WirePlumber vont dorĂ©navant gĂ©rer le son, et libspa-0.2-bluetooth permet au dĂ©mon qui gĂšre le Bluetooth (Bluez) de s’inter-connecter Ă  PipeWire pour le Bluetooth Audio.

sudo apt install wireplumber pipewire libspa-0.2-bluetooth

En tant que votre utilisateur (nommĂ© user dans les commandes prĂ©cĂ©dentes) (c’est important), activez PipeWire au dĂ©marrage et lancez-le :

systemctl --user enable --now pipewire wireplumber

Notez que pipewire-pulse n’est pas nĂ©cessaire, d’ailleurs vous pouvez le supprimer ou le dĂ©sactiver en toute sĂ©curitĂ© s’il a Ă©tĂ© installĂ©.

Installer un agent Bluetooth qui accepte toutes les connexions audio sans vérifications avec code

Normalement, accepter les connexions Bluetooth se fait à l’aide d’un agent Bluetooth :

  • qui tourne dans votre session graphique : c’est gĂ©rĂ© par votre environnement de bureau, ou une application comme bluetooth-applet (est-ce que ça existe encore ?) que vous lancez. LĂ , Ă©videmment, on n’a pas de session graphique, et pour l’instant on n’a pas d’agent Bluetooth qui tourne.
  • En ligne de commande, avec un outil comme bluetoothctl. Je vous invite Ă  essayer. Vous pouvez lancer des commandes comme pairable on, discoverable on, scan on, et essayer de vous connecter avec un autre appareil. AprĂšs vos tests, vous pouvez tout recommencer en faisant oublier les appareils des deux cĂŽtĂ©s.

Évidemment, on ne va pas se connecter en ssh pour lancer bluetoothctl Ă  chaque fois qu’on veut se connecter en Bluetooth. On va mettre en place un agent qui dĂ©marre automatiquement et qui a un comportement similaire Ă  un casque ou des enceintes Bluetooth : qui accepte toutes les connexions Bluetooth audio. Pour ça, on va utiliser un script Python partagĂ© par Collabora sous Licence LGPL 2.1+ qui fait ça trĂšs bien et qu’on va lancer au dĂ©marrage.

Bien sĂ»r, ça veut dire que vos voisins peuvent s’amuser Ă  jouer des trucs chez vous, ou mĂȘme se connecter fortuitement en choisissant la mauvaise entrĂ©e.

Ce script a une dĂ©pendance, qu’on va installer :

sudo apt install python3-dbus

On va placer ce script dans speaker-agent.py:

#!/usr/bin/python3
# SPDX-License-Identifier: LGPL-2.1-or-later

import dbus
import dbus.service
import dbus.mainloop.glib
from gi.repository import GLib

BUS_NAME = 'org.bluez'
AGENT_INTERFACE = 'org.bluez.Agent1'
AGENT_PATH = "/speaker/agent"

A2DP = '0000110d-0000-1000-8000-00805f9b34fb'
AVRCP = '0000110e-0000-1000-8000-00805f9b34fb'

bus = None


class Rejected(dbus.DBusException):
    _dbus_error_name = "org.bluez.Error.Rejected"


class Agent(dbus.service.Object):
    exit_on_release = True

    def set_exit_on_release(self, exit_on_release):
        self.exit_on_release = exit_on_release

    @dbus.service.method(AGENT_INTERFACE,
                         in_signature="", out_signature="")
    def Release(self):
        print("Release")
        if self.exit_on_release:
            mainloop.quit()

    @dbus.service.method(AGENT_INTERFACE,
                         in_signature="os", out_signature="")
    def AuthorizeService(self, device, uuid):
        # Always authorize A2DP and AVRCP connection
        if uuid in [A2DP, AVRCP]:
            print("AuthorizeService (%s, %s)" % (device, uuid))
            return
        else:
            print("Service rejected (%s, %s)" % (device, uuid))
        raise Rejected("Connection rejected by user")

    @dbus.service.method(AGENT_INTERFACE,
                         in_signature="", out_signature="")
    def Cancel(self):
        print("Cancel")


if __name__ == '__main__':
    dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)

    bus = dbus.SystemBus()

    agent = Agent(bus, AGENT_PATH)

    mainloop = GLib.MainLoop()

    # By default Bluetooth adapter is not discoverable and there's
    # a 3 min timeout
    # Set it as always discoverable
    adapter = dbus.Interface(bus.get_object(BUS_NAME, "/org/bluez/hci0"),
                             "org.freedesktop.DBus.Properties")
    adapter.Set("org.bluez.Adapter1", "DiscoverableTimeout", dbus.UInt32(0))
    adapter.Set("org.bluez.Adapter1", "Discoverable", True)

    print("RPi speaker discoverable")

    # As the RPi speaker will not have any interface, create a pairing
    # agent with NoInputNoOutput capability
    obj = bus.get_object(BUS_NAME, "/org/bluez")
    manager = dbus.Interface(obj, "org.bluez.AgentManager1")
    manager.RegisterAgent(AGENT_PATH, "NoInputNoOutput")

    print("Agent registered")

    manager.RequestDefaultAgent(AGENT_PATH)

    mainloop.run()

Le script mentionne le Raspberry Pi, mais il n’y a absolument rien de spĂ©cifique au Raspberry dedans, il est suffisamment gĂ©nĂ©rique.

On va lancer ce script au démarrage en créant le fichier ~/.config/systemd/user/speaker-agent.service

[Unit]
Description=Bluetooth speaker agent

[Service]
ExecStart=python3 speaker-agent.py

[Install]
WantedBy=default.target

Et en l’activant (--now le lance tout de suite) :

systemctl --user enable --now speaker-agent.service

Il faudra aussi mettre JustWorksRepairing = always dans /etc/bluetooth/main.conf pour permettre le re-appairage sans interaction. Bon là j’avoue, je paraphrase largement ma source :-)

Ensuite, on va autoriser la connexion Bluetooth mĂȘme sans session active (en SSH par exemple) (source). Si on ne fait pas ça, la connexion Bluetooth n’est pas possible si l’utilisateur n’a pas une session active (les symptĂŽmes : on arrive Ă  se connecter en Bluetooth que quand on est logguĂ© en SSH ou autre, et la connexion Bluetooth casse dĂšs qu’on quitte la session).

mkdir -p ~/.config/wireplumber/bluetooth.lua.d
cat > ~/.config/wireplumber/bluetooth.lua.d/80-disable-logind.lua << EOF
-- Disable arbitration of user allowance of bluetooth via D-Bus user session
bluez_monitor.properties["with-logind"] = false
EOF
systemctl --user restart wireplumber

Adapter MPD (et Samba) pour utiliser PipeWire

Pour que MPD utilise PipeWire, il faut adapter :

  1. sa configuration pour qu’il tourne avec le mĂȘme utilisateur
  2. sa configuration audio_output
  3. les permissions dans /var/lib/mpd

Dans /etc/mpd.conf, changer la ligne user :

user                            "mpd"

Elle doit maintenant utiliser votre utilisateur :

user                            "user"

Commentez votre bloc audio_output, on va maintenant utiliser PipeWire (je suppose qu’on pourrait garder les deux et les clients MPD peuvent probablement permettre de choisir la sortie son, mais ça me parait complexifier l’utilisation pour un intĂ©rĂȘt pas clair, ce qui va contre nos objectifs) :

audio_output {
        type            "pipewire"
        name            "PipeWire Sound Server"
}

Maintenant, il est temps d’adapter les permissions dans /var/lib/mpd. On va stopper Samba juste avant, et adapter sa configuration.

sudo systemctl stop mpd samba # si mpd tournait encore
sudo chown -rv user /var/lib/mpd
sudo systemctl start mpd

Note : MPD peut aussi ĂȘtre dĂ©marrĂ© dans une session utilisateur et Ă  ce stade, c’est ce qu’il serait probablement le plus logique de faire, en bougeant /etc/mpd.conf et le contenu de /var/lib/mpd dans le dossier de notre utilisateur. C’est d’ailleurs la maniĂšre privilĂ©giĂ©e de dĂ©marrer MPD Ă  partir de Debian Trixie. Par simplicitĂ© et cohĂ©rence, et parce que cette section « RĂ©cepteur Bluetooth Â» est optionnelle mais que les manipulations pour lancer une session utilisateur au dĂ©marrage dĂ©crites dans cette section seraient nĂ©cessaires pour lancer MPD en tant que service utilisateur au dĂ©marrage dans tous les cas et que ça apporte une rĂ©elle complexitĂ©, on fait le choix de garder MPD en tant que service systĂšme.

Modifiez /etc/samba/smb.conf. Dans les deux blocs de partages qu’on a ajoutĂ© prĂ©cĂ©demment, changez la ligne force user = mpd en:

force user = user

Puis on peut redémarrer Samba :

sudo systemctl start samba

Permettre à PipeWire de configurer sa priorité

Si vous voyez cela dans les logs de PipeWire :

user@tablette:~$ journalctl --user -fu pipewire
avril 29 13:41:01 tablette systemd[514]: Started pipewire.service - PipeWire Multimedia Service.
avril 29 13:41:01 tablette pipewire[531]: mod.rt: Can't find org.freedesktop.portal.Desktop. Is xdg-desktop-portal running?
avril 29 13:41:01 tablette pipewire[531]: mod.rt: found session bus but no portal
avril 29 13:41:02 tablette pipewire[531]: mod.rt: RTKit error: org.freedesktop.DBus.Error.AccessDenied
avril 29 13:41:02 tablette pipewire[531]: mod.rt: could not set nice-level to -11: Permission non accordée
avril 29 13:41:02 tablette pipewire[531]: mod.rt: RTKit error: org.freedesktop.DBus.Error.AccessDenied
avril 29 13:41:02 tablette pipewire[531]: mod.rt: could not make thread 547 realtime using RTKit: Permission non accordée

Ça veut grosso modo dire que PipeWire cherche Ă  se rendre plus prioritaire via un mĂ©canisme fourni par les environnements de bureau (xdg-desktop-portal), n’y arrive pas parce qu’évidemment, aucun environnement de bureau ne tourne, alors il essaie de demander au service systĂšme rtkit, et se fait jeter.

Ce n’est pas trĂšs grave et on pourrait vivre sans, mais ça pourrait aider Ă  limiter les saccades sonores, donc on va rĂ©parer ça (et je pense avoir vu une bonne amĂ©lioration grĂące Ă  ça).

Le fichier /usr/share/polkit-1/actions/org.freedesktop.RealtimeKit1.policy dicte qui a le droit ou non de configurer sa prioritĂ© (dĂ©couvert ici, mais le conseil de modifier ce fichier systĂšme n’est pas bon, au moins parce qu’une mise Ă  jour future risque d’écraser les modifications) :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE policyconfig PUBLIC
        "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
        "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
<policyconfig>
        <vendor>Lennart Poettering</vendor>

        <action id="org.freedesktop.RealtimeKit1.acquire-high-priority">
                <description>Grant high priority scheduling to a user process</description>
                <description xml:lang="tr">Bir sĂŒrece yĂŒksek öncelikli çalıßabilme yetkisi ver</description>
                <message>Authentication is required to grant an application high priority scheduling</message>
                <message xml:lang="tr">SĂŒrecin yĂŒksek öncelikli çalıßtırılabilmesi için yetki gerekiyor</message>
                <defaults>
                        <allow_any>no</allow_any>
                        <allow_inactive>yes</allow_inactive>
                        <allow_active>yes</allow_active>
                </defaults>
        </action>

        <action id="org.freedesktop.RealtimeKit1.acquire-real-time">
                <description>Grant realtime scheduling to a user process</description>
                <description xml:lang="tr">Bir sĂŒrece gerçek zamanlı çalıßabilme yetkisi ver</description>
                <message>Authentication is required to grant an application realtime scheduling</message>
                <message xml:lang="tr">SĂŒrecin gerçek zamanlı çalıßtırılabilmesi için yetki gerekiyor</message>
                <defaults>
                        <allow_any>no</allow_any>
                        <allow_inactive>yes</allow_inactive>
                        <allow_active>yes</allow_active>
                </defaults>
        </action>

</policyconfig>

Dans un systĂšme Unix, les paramĂštres systĂšmes sont dans /etc. Pour Polkit, il existe un mĂ©canisme pour Ă©crire des rĂšgles, qu’on va utiliser. On va crĂ©er une rĂšgle qui permet Ă  n’importe quel utilisateur du groupe audio de modifier la prioritĂ© de ses processus. C’est probablement trop large, mais je ne connais pas bien Polkit et ça fera le taf pour notre application dĂ©diĂ©e Ă  l’audio. Si vous avez des meilleures idĂ©es, n’hĂ©sitez pas Ă  partager en commentaire.

sudo cat > /etc/polkit-1/rules.d/rt.rules << EOF
polkit.addRule(function(action, subject) {
        if (subject.isInGroup("audio") && (
                action.id == "org.freedesktop.RealtimeKit1.acquire-high-priority" ||
                action.id == "org.freedesktop.RealtimeKit1.acquire-real-time"
        )) {
                return polkit.Result.YES;
        }
})
EOF

sudo systemctl restart polkit.service
systemctl --user restart pipewire

On pourra constater l’absence des Ă©checs dans les journaux de PipeWire.

Bon, on sent bien que toute cette utilisation audio sans session utilisateur standard n’est pas un cas d’utilisation hyper bien prĂ©vu et on se retrouve Ă  toucher des coins un peu sombres du systĂšme


Évitez les flux Wifi 2,4 GHz

Si vous avez un Wifi en 2,4 GHz, ça peut causer des soucis avec le Bluetooth, et le son peut saccader. Si vous observez cela, il faudra alors limiter au maximum les services et autres tĂąches de fond qui font des communications rĂ©seau. Évidemment, si vous pouvez utiliser un cĂąble Ethernet, c’est encore mieux.

Sur ce plan, tous les codecs audio Bluetooth ne semblent pas se valoir. Pour tester ça, j’ai lancĂ© un test iperf3 entre la tablette et mon ordinateur portable pour saturer le Wifi. Ça devenait immĂ©diatement catastrophique avec le codec SBC-XQ, alors qu’avec le codec Opus 05, il y a initialement des saccades, puis ça s’amĂ©liore vite. J’imagine que le codec Opus dĂ©grade trĂšs efficacement la qualitĂ© pour compenser. Bon, malheureusement, tous les systĂšmes ne permettent pas de choisir son codec donc ce n’est qu’une solution partielle au problĂšme.

Note sur l’utilisation des ressources

C'est léger :

load average: 0,12, 0,10, 0,05
$ free -mh
               total       utilisé      libre     partagé tamp/cache   disponible
Mem:           986Mi       253Mi       324Mi       6,1Mi       550Mi       733Mi
Échange:       974Mi          0B       974Mi

Globalement, le CPU s’ennuie en pleine lecture, et Ă  peine un tiers du Giga de mĂ©moire vive est utilisĂ©, la partition d’échange s’ennuie, donc il y a encore largement la place de faire tourner d’autres trucs sur cet appareil si jamais. On peut aussi constater qu’ajouter MPD et tout ce bazar Ă  une installation existante ne la surchargerait pas plus que ça.

On a aussi un temps de démarrage autour des 20 secondes, ce qui est franchement pas mal.

Conclusion et améliorations possibles

On est pas mal rentrĂ©s dans les dĂ©tails, c’était l’occasion d’explorer plein de choses mine de rien. J’ai Ă  la fois appris des choses, prĂ©cisĂ© des connaissances, et mis plein de choses que je savais ensemble pour obtenir un rĂ©sultat trĂšs satisfaisant. On se retrouve Ă  manipuler de la gestion de services, des configurations systemd un peu poussĂ©es, du bluetooth, du son avec ALSA et PipeWire, de la gestion de session utilisateur sur un systĂšme headless, et plein d’autres trucs et aller dans les dĂ©tails comme le boot pour avoir quelque chose de rapide, comme l’écran Ă©teint au bon moment, ou la personnalisation du comportement du bouton power (honnĂȘtement, je n’étais pas trĂšs sĂ»r que c’était possible, j’avais lancĂ© la recherche au cas oĂč !).
J’espùre que l’aventure vous a plu aussi.

Bien sĂ»r l’ensemble est perfectible, alors je vous laisse avec des idĂ©es, n’hĂ©sitez pas Ă  partager les vĂŽtres en commentaires :

  • Jouer un son au dĂ©marrage / Ă  l’appairage Bluetooth. – pour l’instant, la tablette s’allume et puis plus rien. En gĂ©nĂ©ral, les enceintes Bluetooth jouent un petit son quand elles sont prĂȘtes ou qu’elles viennent d’ĂȘtre appairĂ©es et ça peut ĂȘtre pratique
  • Commande vocale. Il y a clairement des maniĂšres d’utiliser le micro de la tablette pour demander le morceau suivant, prĂ©cĂ©dent ou rĂ©gler le volume. Ça peut ĂȘtre pratique quand on n’a pas le tĂ©lĂ©phone sous la main et ça peut avoir son petit effet en soirĂ©e la premiĂšre fois, tant que les gens ne sont pas encore complĂštement blasĂ©s par le concept parce que tout le monde n’a pas un Google Nest ou un Alexa chez soi, surtout dans ma bulle sociale. Mais c’est probablement finalement trĂšs gadget et je me vois mal interrompre une conversation en criant un ordre pour gĂ©rer la musique

  • Appairage Bluetooth plus sĂ©curisĂ©. En gĂ©nĂ©ral, les enceintes Bluetooth acceptent les nouveaux appareils dans un mode spĂ©cial. En appuyant sur le bouton Bluetooth, ou quelque chose comme ça. Ça peut Ă©viter que les voisin·e·s ne te rickrollent au moment le plus inopportun. Ça vaudrait le coup de travailler sur quelque chose comme ça. Avec l’écran tactile, il est probablement possible de dessiner une forme particuliĂšre reconnue (ça serait un peu badasse, ou plus probablement, n’accepter (une seule) nouvelle connexion que dans les X minutes aprĂšs le dĂ©marrage ou le retour de veille. Comme ça, demander l’appairage consiste Ă  appuyer deux fois sur le bouton power, ce qui est plutĂŽt acceptable. Si vous avez des idĂ©es, n’hĂ©sitez pas Ă  partager

  • RĂ©veil Ă  distance avec du Wake-on-LAN. Ça ne s’applique probablement pas Ă  mon matĂ©riel, mais il est possible d’utiliser astucieusement le WoL pour rĂ©veiller l'appareil Ă  distance, avec Ă©ventuellement la complicitĂ© d’un routeur ou d’un serveur toujours allumĂ© chez vous.
  • DĂ©sactiver le Wifi quand le Bluetooth est utilisĂ©. Pour Ă©viter les interfĂ©rences, on pourrait imaginer que quand un appareil se connecte en Bluetooth, on Ă©teint le Wifi (avec rfkill par exemple), on met MPD en pause (ou on le stoppe s’il est en train de jouer un flux) parce qu’on ne peut plus le contrĂŽler, puisque le Wifi n’est plus actif, et on rĂ©active le Wifi quand l’appareil Bluetooth est dĂ©connectĂ©. On pourrait mĂȘme ĂȘtre plus fin et dĂ©tecter quand du son est jouĂ©.
  • Automatiquement mettre MPD en pause lors d’une connexion Bluetooth. (un peu doublon avec le prĂ©cĂ©dent point) Pour l’instant, il faut manuellement mettre en pause mpd, sinon les deux flux audios se jouent en mĂȘme temps. -- Changer la classe Bluetooth de l’appareil. Ça permettrait Ă  l’appareil de se dĂ©clarer comme appareil audio, pour que ça affiche le bon icĂŽne sur les autres appareils.
  • Mises Ă  jour automatiques. Il ne faut pas que ça casse des choses en pleine lecture, ni que ça cause des interfĂ©rences avec le Bluetooth Ă  cause des tĂ©lĂ©chargements.
  • Ne pas persister les logs. Pour l’instant, les logs sont Ă©crits dans /var/log sur le SSD, entrainant une usure et un ralentissement cependant probablement tous deux nĂ©gligeables. On pourrait vouloir ne pas les garder, mais c’est aussi risquer de perdre des informations de dĂ©bogage le jour oĂč il y a un pĂ©pin.

Je vais probablement trouver d’autres choses Ă  amĂ©liorer aprĂšs publication de l’article. Je partagerai peut-ĂȘtre les choses intĂ©ressantes en commentaires ou dans des journaux, et je ferai peut-ĂȘtre vivre l’article sur mon site.

Commentaires : voir le flux Atom ouvrir dans le navigateur

Not so Common Desktop Environment (NsCDE), un paradigme différent

Not so Common Desktop Environment reproduit fidĂšlement Common Desktop Environment dit CDE, classique des Unix des annĂ©es 90. Mais pourquoi puisque CDE est libre ? Eh bien pour faire mieux ! NsCDE est plus lĂ©ger, plus complet, plus souple.

NsCDE est sorti en version 2.3 le 20 juin 2023. C'est un petit projet qui s'appuie sur un thĂšme pour FVWM et quelques utilitaires de son cru. Le reste, c'est un thĂšme pour les applications GTK et Qt. Poussant le mimĂ©tisme jusqu'Ă  reproduire le script shell du premier dĂ©marrage, NsCDE vous demande quels doivent ĂȘtre votre terminal, votre gestionnaire de fichier, votre Ă©diteur, etc. Ce n'est pas mal de pouvoir choisir ! Comme c'est assez abouti il n'y a pas eu de nouveaux dĂ©veloppements depuis.

Impressions aprĂšs quelques jours d'utilisation

J'ai trouvé l'ensemble agréable et cohérent, certes un peu brutal visuellement, mais on n'est pas devant un thÚme, c'est un paradigme de fonctionnement différent. Avec un peu d'habitude on peut bosser sans surprises.

Un exemple sur la gestion des fenĂȘtres, diffĂ©rente du monde Win/Mac qui est le paradigme habituel sur la plupart des bureaux Linux :

Elles se dĂ©placent encore par la barre de titre, mais pour le reste les trois clics de souris sont utilisĂ©s. 
Le bouton de gauche est trois choses Ă  la fois : un menu dĂ©roulĂ© par un clic gauche, un menu Ă©tendu dĂ©roulĂ© par un clic droit et une boite de dialogue affichĂ©e par un clic centre ; la fenĂȘtre se ferme avec un deuxiĂšme-clic rapprochĂ© dans le temps (clic gauche ou droit) ou un double clic aussi.
À droite, un bouton agrandit la fenĂȘtre avec beaucoup de possibilitĂ©s selon le clic gauche, centre ou droit et selon la sĂ©quence de clics ; un deuxiĂšme bouton rĂ©duit la fenĂȘtre : clic gauche pour l'icĂŽnifier, clic droit pour l'enrouler. IcĂŽnifiĂ©e, un clic droit l'agrandit, les clics gauche et centre ouvrent des menus.

NsCDE ne propose qu'un minimum d'utilitaires, il ne s'agit pas de tout intégrer façon KDE ou Gnome, mais plutÎt de fournir un environnement de travail pour interagir avec vos programmes préférés. Testez-le pour découvrir autre chose que le fonctionnement habituel. Le libre vous permet de choisir, sortez des sentiers battus.

En tout cas ne l'installez pas pour sa lĂ©gĂšretĂ©, Liam Proven l'utilisant avec des composants XFCE l'a trouvĂ© plus lĂ©ger que les autres, mais il est plus lourd que KDE 3.

image Ă  remplacer

L'influence de CDE Ă  travers des anecdotes

C'est moche, hein ? Et pourtant le design de CDE a influencĂ© d'autres environnements de bureau :

  • Le prĂ©sentation manager d'OS/2 a influencĂ© l'aspect de Win 3 et CDE, mais rĂ©ciproquement le LaunchPad d'OS/2 v3 reproduit le lanceur CDE.
  • XFCE 3 reproduisait le lanceur CDE : XFCE 3 avec le thĂšme Motif
  • Et mĂȘme KDE, dont le nom serait un jeu de mots avec Kool Desktop Environment (personne ne s'en souvient vraiment, on trouve d'autres explications).
  • À la mĂȘme Ă©poque, Silicon Graphics avait pris un chemin diffĂ©rent avec IRIX Interactive Desktop. D'aprĂšs mon cousin, qui passait de la PAO sur Mac Ă  la 3D sous Irix, c'Ă©tait trĂšs ergonomique et ça valait bien le Mac. Il n'a jamais eu besoin d'ouvrir un terminal. Irix

Installation

NsCDE propose quelques paquets tout prĂȘt pour Fedora, Suse, Ubuntu, Debian et Slackware ainsi qu'un gros Tarball Ă  dĂ©compresser dans /opt.

Je vous recommande de l'utiliser sous un compte de test, sinon NsCDE va pourrir votre bureau habituel avec ses boites de dialogue et ses thÚmes Firefox, LibreOffice, etc. En plus, NsCDE n'a pas de script de désinstallation, il sauvegarde vos paramÚtres Gtk et Qt, mais seulement jusqu'aux versions 4 et 5.

Évitez d'y lancer des applications Gnome Ă  cause des menus et fenĂȘtres, sauf si vous installez gtk3-nocsd (no client side decoration). PrĂ©fĂ©rer les applications lĂ©gĂšres et simples de LXDE/LXQt, Mate, XFCE, 
 Ou encore les applis Motifs/X11, le thĂšme NsCDE leur ira comme un gant.

Tester CDE

Si vous tenez à essayer le vrai CDE pour voir comment c'était, il y a un CD Live sous Debian.

Commentaires : voir le flux Atom ouvrir dans le navigateur

Sortie du gestionnaire d'archives PeaZip 10.4.0

PeaZip n'a jamais été abordé dans ces colonnes jusqu'à présent, alors qu'il fait partie des outils multi-plateformes permettant une transition en douceur vers le libre. Il a presque dix ans. Sortie le 14 avril, la version 10.4 continue la série 10.0 commencée en octobre 2024.

PeaZip Linux thĂšme sombre sous Wayland
PeaZip affiché avec son thÚme sombre dans Wayland

Giogio Tani, le développeur de PeaZip publie plusieurs versions chaque année. Le logiciel évolue par petites touches largement testées via les fonctions "expérimentales" des versions précédentes.

icone de PeaZip

Je trouve beaucoup d'atouts Ă  PeaZip

Il est libre, multi-plateformes, multi-architecture, portable (nomade), Ă©crit en FreePascal avec Lazarus, ouvre et Ă©crit plusieurs formats d'archives. Il est rapide et assez lĂ©ger pour un tout-en-un (11,2 MB). Il est bien maintenu, l'auteur est transparent sur la sĂ©curitĂ©, documentation et tutoriels sont consĂ©quents et pĂ©dagogiques. L'interface est travaillĂ©e, sobre, ergonomique, thĂ©mable, configurable, jolie, 
 N'en jetez plus ! Ah si encore : il est dispo en Gtk et Qt sous X11 et Wayland, et l'auteur l'empaquĂȘte Ă  tout va.

C'est un humble logiciel trÚs bien foutu, trÚs travaillé, utile pour installer des outils libres sur les systÚmes proprios afin de les amener en douceur vers Linux ou *BSD (il ne fonctionne pas encore sous Haïku).

Architectures et systĂšmes

  • Linux x86_64, x86, ARM, aarch64 ;
  • Windows, ReactOS, Wine ;
  • Darwin, macOS Intel et aarch64 (Apple Silicon), la famille BSD.

PeaZip propose des fonctions peu courantes

  • Le moteur de scriptage intĂ©grĂ© permet de convertir vos opĂ©rations graphiques pour les automatiser et les Ă©tendre avec des options en ligne de commande ;
  • un chiffrement solide est disponible, avec authentification Ă  double facteur ;
  • l'interface graphique est unifiĂ©e sur tous les systĂšmes et architectures pris en charge, mĂȘme pour les formats moins courant (zpaq, brotli, zstandard) ;
  • le gestionnaire de fichiers avancĂ© facilite, par exemple, la vĂ©rification des sommes de contrĂŽles, la dĂ©duplication, la conversion de formats d'archives, la recherche, etc ;
  • c'est un outil portable et nomade qu'on peut copier sur une clĂ© usb, sur le net ou partager en rĂ©seau sans l'installer ;
  • PeaZip dispose d'une transparence et des options de suivi pour la vie privĂ©e et la sĂ©curitĂ©.

Commentaires : voir le flux Atom ouvrir dans le navigateur

Reçu avant avant-hier

Cloonix version 46

Cloonix est un outil d’aide Ă  la construction de rĂ©seau virtuel, sous AGPLV3 (inclus qemu-kvm, openvswitch, spice, crun et wireshark).

C'est pensĂ© comme Docker, dont le succĂšs provient de l'absence de tracasseries au moment de l'empaquetage, en mettant bibliothĂšques et binaires dans un espace de nommage (namespace). Docker est un produit de grande qualitĂ© mais il n'y a pas que sa mĂ©thode. Cloonix utilise les mĂȘmes principes de namespace, sans infrastructure d'accueil pour faire tourner les conteneurs. Notez qu'un logiciel qui s'installe puis tourne avec les droits limitĂ©s d'un utilisateur normal est la meilleure façon de dĂ©courager un pirate. Donc, pour essayer Cloonix 46, un fichier auto-extractible sans dĂ©pendance Ă  la distribution qui l'hĂ©berge vous attend ! TĂ©lĂ©chargez, cliquez


Cloonix est un outil pour Ă©tudier les rĂ©seaux. Il permet de faire des scripts de scĂ©narios avec plusieurs machines connectĂ©es, les machines Ă©tant soit des vraies machines virtuelles tournant avec kvm, soit des conteneurs tournant avec crun. Cette maquette simplifiĂ©e de rĂ©seaux avec leur visualisation permet de transmettre des dĂ©monstrations rĂ©seaux entre utilisateurs. J'ai prĂ©sentĂ© Cloonix plus largement dans mes dĂ©pĂȘches prĂ©cedentes.

Commentaires : voir le flux Atom ouvrir dans le navigateur

GIMP 3.0 RC3 est sorti

Par :Jona · Obi MO · Nils Ratusznik · BAud · Julien Jorge
21 février 2025 à 08:05

Note : cette dĂ©pĂȘche est une traduction de l'annonce officielle de la sortie de GIMP 3.0 RC3 du 10 fĂ©vrier 2025 (en anglais).

Nous sommes ravis de partager la troisiĂšme version candidate de GIMP 3.0 pour ce qui (nous l'espĂ©rons) sera la derniĂšre sĂ©rie de tests communautaires avant la version stable ! Cette version fait suite Ă  la rĂ©cente confĂ©rence GIMP 3 and Beyond de Jehan au FOSDEM 2025.

    Sommaire

    Corrections de bogues et changements importants

    Alors que nous rĂ©duisions les quelques derniers bogues majeurs Ă  nĂ©ant, nous avons effectuĂ© un certain nombre de modifications qui selon nous nĂ©cessitent un sĂ©rieux coup d’Ɠil de la communautĂ©.
    Jetez-en donc un, d’Ɠil, sur les points suivants lorsque vous essayerez la Release Candidate:

    Nouvelle version de GTK3

    Juste Ă  temps pour GIMP 3.0, une nouvelle version de GTK3 est sortie !
    Entre autres changements, GTK 3.24.48 inclut des correctifs pour plusieurs bugs affectant GIMP avec des patchs initialement fournis par Jehan, comme un crash dans Wayland lors du déplacement de calques et des problÚmes de texte dans certains widgets avec des langues de droite à gauche. Nous tenons à remercier Carlos Garnacho et Matthias Clasen pour leur aide sur ces patchs respectifs.

    GTK 3.24.48 ajoute également la prise en charge de la version 2 de xdg_foreign pour Wayland (la v1 reste prise en charge en tant que solution de secours). Plus précisément, l'absence de cette prise en charge provoquait le blocage de GIMP avec certaines actions sur KDE/Wayland, ce qui est désormais corrigé.

    En raison de ces problÚmes (certains d'entre eux rendant GIMP vraiment instable sur Wayland), nous recommandons aux empaqueteurs de mettre à jour vers la derniÚre version de GTK3 lors de l'empaquetage de notre RC3. Cependant, veuillez nous informer si vous remarquez des régressions ou d'autres problÚmes résultant de la nouvelle version de GTK3.

    Améliorations du graphe d'images

    GrĂące Ă  l'Ă©dition non destructive dans GIMP, les utilisateurs peuvent dĂ©sormais empiler plusieurs filtres les uns sur les autres. Ces filtres fonctionnent gĂ©nĂ©ralement dans un format Ă  haute rĂ©solution de bits, de sorte que les informations de l'image ne sont pas perdues. Cependant, la sortie de chaque filtre Ă©tait convertie vers et depuis la rĂ©solution de l'image d'origine lors de l'empilement. Ainsi, si l'image n'Ă©tait que de 8 bits, une grande quantitĂ© d'informations Ă©tait perdue dans ces conversions constantes. Jehan a rĂ©solu ce problĂšme en convertissant uniquement au format de l'image lorsque le filtre est censĂ© ĂȘtre fusionnĂ©, plutĂŽt que dans des piles non destructives. Comme il s'agit d'un changement important dans le fonctionnement des filtres, nous souhaitons que davantage d'utilisateurs testent ce changement pour dĂ©tecter d'Ă©ventuelles rĂ©gressions.

    Changements dans Projection Thread-safe

    Lorsque des modifications sont apportĂ©es Ă  une image (comme une peinture), la projection de l'image doit ĂȘtre « vidĂ©e Â» pour afficher les nouvelles modifications Ă  l'Ă©cran. Certains aspects de ce processus n'Ă©taient pas « thread-safe Â», ce qui signifie que lorsque votre ordinateur utilisait plusieurs threads pour accĂ©lĂ©rer le travail, ils pouvaient entrer en conflit les uns avec les autres et provoquer un plantage. Cela a Ă©tĂ© observĂ© dans notre fonctionnalitĂ© d'expansion automatique de calques. Jehan a corrigĂ© la fonction pour qu'elle soit entiĂšrement thread-safe. Cependant, les modifications apportĂ©es au multithreading peuvent laisser des bugs bien cachĂ©s, donc des tests communautaires supplĂ©mentaires seraient utiles.

    Procédures privées

    Le navigateur de base de donnĂ©es procĂ©durale de GIMP montre aux dĂ©veloppeurs de greffons et de scripts toutes les fonctions auxquelles ils peuvent accĂ©der. Jusqu'Ă  prĂ©sent, il affichait Ă©galement les fonctions « privĂ©es Â» qui ne sont utilisĂ©es qu'en interne. Jehan a ajoutĂ© un indicateur pour masquer ces fonctions. Dans un premier temps, nous avons ratissĂ© trop large et cachĂ© certaines fonctions publiques importantes. Bien que nous ayons corrigĂ© ces cas, nous aimerions que la communautĂ© nous donne plus de dĂ©tails pour nous assurer que nous n'avons oubliĂ© aucune fonction publique mal Ă©tiquetĂ©e.

    Améliorations

    Bien que nous soyons toujours en phase de gel des fonctionnalités majeures jusqu'à la version stable de GIMP 3.0, quelques améliorations mineures et autonomes ont été apportées aux greffons.

    Script-fu

    API Filtre

    Le nouvel appel PDB (gimp-drawable-merge-filter) permet aux auteurs de Script-fu d'utiliser des Ă©tiquettes pour spĂ©cifier les propriĂ©tĂ©s des filtres. Cela donnera aux utilisateurs de Script-fu la mĂȘme flexibilitĂ© pour appeler et mettre Ă  jour les filtres que les dĂ©veloppeurs de greffons C et Python ont dans l'API GIMP 3.0. À titre d'exemple, voici un appel au filtre Emboss :

    (gimp-drawable-merge-new-filter mask-emboss "gegl:emboss" 0 LAYER-MODE-REPLACE 1.0 "azimuth" 315.0 "elevation" 45.0 "depth" 7 "type" "emboss")
    

    Vous pouvez voir plus d'exemples dans notre dépÎt de scripts.

    Nouvelle syntaxe de passage des arguments par noms

    Dans Script-Fu, toutes les fonctions gĂ©nĂ©rĂ©es Ă  partir de la procĂ©dure PDB des greffons doivent dĂ©sormais ĂȘtre appelĂ©es avec une toute nouvelle syntaxe d'argument nommĂ©, inspirĂ©e de la variante Racket de Scheme.

    Par exemple, disons que votre greffon souhaite appeler le greffon Foggify, au lieu d'appeler :

    (python-fu-foggify RUN-NONINTERACTIVE 1 (car (gimp-image-get-layers 1)) "Clouds" '(50 4 4) 1.0 50.0)

    Vous devez maintenant appeler :

    (python-fu-foggify #:image 1 #:drawables (car (gimp-image-get-layers 1)) #:opacity 50.0 #:color '(50 4 4))

    Cela présente quelques avantages :

    • des appels beaucoup plus auto-documentĂ©s, d'autant plus que certains greffons ont beaucoup d'arguments (on pouvait donc se retrouver avec des fonctions avec une douzaine d'entiers ou de flottants et c'Ă©tait trĂšs dĂ©routant) ;
    • l'ordre des arguments n'a plus d'importance ;
    • vous pouvez ignorer les arguments lorsque vous les appelez avec des valeurs par dĂ©faut ;
    • cela permet d'amĂ©liorer les procĂ©dures des greffons dans le futur en ajoutant de nouveaux arguments sans casser les scripts existants.

    Ce dernier point en particulier est important, et l'ordre des arguments n'avait plus d'importance lors de l'appel de procĂ©dures PDB depuis l'API C, ainsi que toutes les liaisons introspectĂ©es. Script-Fu Ă©tait la seule interface restante dont nous disposions qui se souciait encore de l'ordre et du nombre d'arguments. Ce n'est plus le cas et c'est donc un grand pas vers une API beaucoup plus robuste pour GIMP 3 !

    Formats de fichiers

    Toutes les modifications apportées aux greffons de chargement d'images sont vérifiées avec le cadriciel de tests automatisés créé par Jacob Boerema pour éviter les régressions.

    PSD

    En plus des corrections de bogues telles que l'enregistrement correct des images fusionnées CMJN, Jacob Boerema a ajouté la prise en charge du chargement des fichiers PSD LAB 16 bits par canal. Il a également mis à jour la boßte de dialogue d'exportation PSD pour utiliser les fonctions d'exportation de métadonnées intégrées de GIMP.

    DDS

    CMYK Student a implémenté la prise en charge trÚs demandée du chargement d'images DDS avec prise en charge BC7. Jacob Boerema a travaillé pour corriger la compatibilité avec les fichiers DDS exportés à partir d'anciennes versions de GIMP.

    AppImage: c'est officiel !

    AprĂšs neuf mois d'incubation (le nombre est une simple coĂŻncidence 🙂), nous prĂ©sentons un « nouveau Â» format de distribution pour les utilisateurs Linux : .AppImage. Au dĂ©part, nous l'utilisions comme format interne pour les tests, comme dĂ©jĂ  Ă©voquĂ© dans des articles prĂ©cĂ©dents. Les efforts de Bruno Lopes nous ont permis d'amĂ©liorer le processus de construction. Nous sommes maintenant confiants avec l'AppImage gĂ©nĂ©rĂ©e et nous avons donc pour objectif de la rendre officielle.

    En tant que package officiel en amont, aucun greffon tiers sophistiquĂ© ou autre binaire arbitraire qui ne soit pas une dĂ©pendance de GIMP n'est ajoutĂ© pour ne pas le « surcharger Â». C'est ce que certains appellent GIMP « vanilla Â», un GIMP propre mais complet pour la production (c'est-Ă -dire pour une utilisation gĂ©nĂ©rale).

    Comme tout format d'empaquetage, il a ses propres caractĂ©ristiques et limites. Dans le cas de l'AppImage de GIMP, les outils inclus tels que gimp-console* et gimp-debug-tool* nĂ©cessitent une extraction prĂ©alable du fichier .AppImage avec la commande --appimage-extract. De plus, en partie Ă  cause de la conception d'AppImage, les commandes qui pointent vers $PWD ne fonctionneront pas. Ces deux limitations de fonctionnalitĂ©s sont les seules connues Ă  ce jour. Donc, si vous en trouvez d'autres ou mĂȘme des bogues, veuillez les signaler sur notre outil de suivi.

    Divers

    • Il est maintenant plus facile de charger des images depuis Google Drive ainsi que d'autres plateformes distantes ou dans le cloud, sans avoir a sĂ©lectionner un format de fichier pour essayer de l'ouvrir.

    • Notre processus de crĂ©ation gĂ©nĂšre dĂ©sormais des icĂŽnes supplĂ©mentaires avec l'extension -rtl, qui sont automatiquement utilisĂ©es avec les langues s'Ă©crivant de droite Ă  gauche. Les icĂŽnes de flĂšches gauche et droite en sont un exemple : elles sont dĂ©sormais orientĂ©es dans la bonne direction dans les deux types de langues.

    • Les dĂ©veloppeurs de greffons n'ont plus besoin de crĂ©er des boutons de sĂ©lection de fichiers personnalisĂ©s - GimpProcedureDialog les crĂ©e dĂ©sormais automatiquement lorsqu'un paramĂštre de type de fichier est utilisĂ©. Vous pouvez Ă©galement spĂ©cifier si le bouton sert Ă  ouvrir ou Ă  enregistrer des fichiers et des dossiers.

    • Rupert Weber a continuĂ© ses efforts pour nettoyer notre greffon BMP. De plus, il travaille actuellement Ă  ajouter la prise en charge de l'importation de profils de couleurs dans les BMP, qui, espĂ©rons-le, sera prĂȘte dans une future version.

    • CMYK Student a mis Ă  jour le greffon ICNS avec une nouvelle prise en charge des types d'icĂŽnes « ic05 Â» et des formats d'icĂŽnes ARGB. Ils ont Ă©galement corrigĂ© un bogue lors du chargement d'anciens formats ICNS sans masque de transparence. Lukas Oberhuber a aidĂ© Ă  diagnostiquer et Ă  rĂ©soudre un bogue connu dans le format ICNS qui faisait que notre icĂŽne macOS affichait des pixels brouillĂ©s dans les petites tailles.

    GEGL

    La version 0.4.54 de GEGL contient également quelques améliorations et corrections de bogues. Thomas Manni a mis à jour le filtre Noise Spread pour éviter les bogues lorsqu'il est appliqué à des groupes de calques vides. Jonny Robbie a ajouté de nouvelles options et de nouveaux types de papier au filtre Negative Darkroom, et a optimisé certaines opérations en virgule flottante dans GEGL dans son ensemble.

    Statistiques

    Depuis GIMP 3.0 RC2, dans le dĂ©pĂŽt principal de GIMP :

    • 85 rapports ont Ă©tĂ© fermĂ©s comme RÉPARÉS ;
    • 56 demandes de fusion ont Ă©tĂ© acceptĂ©es ;
    • 335 commits ont Ă©tĂ© poussĂ©s ;
    • 19 traductions ont Ă©tĂ© mises Ă  jour : basque, bulgare, catalan, chinois (Chine), danois, nĂ©erlandais, finnois, gĂ©orgien, italien, norvĂ©gien nynorsk, persan, portugais, slovaque, slovĂšne, espagnol, suĂ©dois, turc, ukrainien, vietnamien.

    33 personnes ont contribuĂ© Ă  des modifications ou des correctifs Ă  la base de code de GIMP 3.0.0 RC3 (l'ordre est dĂ©terminĂ© par le nombre de commits ; certaines personnes sont dans plusieurs groupes) :

    • 13 dĂ©veloppeurs pour le code principal : Jehan, Alx Sa, Jacob Boerema, Lloyd Konneker, Anders Jonsson, Thomas Manni, Bruno, Daniele Forsi, Lloyd Konneker, Lukas Oberhuber, Rupert, cheesequake, Øyvind KolĂ„s ;
    • 10 dĂ©veloppeurs de greffons ou modules : Alx Sa, Jacob Boerema, Jehan, Rupert, Lloyd Konneker, Anders Jonsson, Bruno, Daniel NovomeskĂœ, Daniele Forsi, lillolollo ;
    • 19 traducteurs : Alan Mortensen, Alexander Shopov, Nathan Follens, KolbjĂžrn StuestĂžl, Hugo Carvalho, Asier Sarasua Garmendia, Ngọc QuĂąn Tráș§n, Jordi Mas, Marco Ciampa, Sabri Ünal, Anders Jonsson, Danial Behzadi, Ekaterine Papava, Jiri Grönroos, Jose Riha, Luming Zh, Martin, Rodrigo LledĂł, Yuri Chornoivan ;
    • 1 Concepteur de thĂšme : Alx Sa ;
    • 6 contributeurs pour la compilation, l’empaquetage ou l’intĂ©gration continue : Bruno, Jehan, Lloyd Konneker, Alx Sa, Rupert, Jacob Boerema.

    Contributions sur d'autres dĂ©pĂŽts dans GIMPverse (l'ordre est dĂ©terminĂ© par le nombre de commits) :

    • GEGL 0.4.54 est composĂ© de 11 commits de 16 contributeurs : Øyvind KolĂ„s, Alexander Shopov, Hugo Carvalho, JonnyRobbie, Alan Mortensen, Anders Jonsson, Asier Sarasua Garmendia, BartƂomiej Piotrowski, Jehan, Martin, Nathan Follens, Nils Philippsen, Rodrigo LledĂł, Sam L, Thomas Manni, Yuri Chornoivan ;
    • ctx a enregistrĂ© 233 commits depuis la sortie de RC2 par 1 contributeur : Øyvind KolĂ„s ;
    • gimp-data a enregistrĂ© 6 commits de 4 contributeurs : Bruno, Jehan, Alx Sa, Andre Klapper ;
    • gimp-test-images (nouveau rĂ©fĂ©rentiel pour les tests de prise en charge des images) a enregistrĂ© 5 commits de 2 contributeurs : Jacob Boerema, Alx Sa ;
    • la version gimp-macos-build (scripts de packaging macOS) a eu 6 commits par 2 contributeurs : Lukas Oberhuber, Bruno ;
    • la version flatpak a eu 12 commits par 3 contributeurs aprĂšs la version RC2 : Bruno Lopes, Jehan, Hubert FiguiĂšre ;
    • notre site web principal a eu 42 commits par 6 contributeurs : Jehan, Alx Sa, Bruno, Jacob Boerema, Andre Klapper, Petr Vorel ;
    • notre site web de dĂ©veloppement a eu 18 commits par 5 contributeurs : Jehan, Bruno, Lukas Oberhuber, Alx Sa, Anders Jonsson ;
    • notre documentation 3.0 comptait 373 commits de 13 contributeurs : Andre Klapper, KolbjĂžrn StuestĂžl, Nathan Follens, Jacob Boerema, Alan Mortensen, Yuri Chornoivan, Dick Groskamp, ​​Jordi Mas, Alevtina Karashokova, Alx Sa, Anders Jonsson, Daniele Forsi, Hugo Carvalho.

    N'oublions pas de remercier toutes les personnes qui nous aident à trier dans Gitlab, à signaler les bugs et à discuter des améliorations possibles avec nous.
    Notre communautĂ© est Ă©galement profondĂ©ment reconnaissante envers les guerriers d'Internet qui gĂšrent nos divers canaux de discussion ou comptes de rĂ©seaux sociaux tels que Ville PĂ€tsi, Liam Quin, Michael Schumacher et Sevenix !

    Remarque : compte tenu du nombre de parties dans GIMP et de la façon dont nous obtenons des statistiques via les scripts « git Â», des erreurs peuvent se glisser dans ces statistiques. N'hĂ©sitez pas Ă  nous dire si nous avons oubliĂ© ou mal classĂ© certains contributeurs ou contributions.

    Autour de GIMP

    Miroirs de téléchargement

    Depuis la publication de la nouvelle version 3.0RC2, deux nouveaux miroirs ont Ă©tĂ© ajoutĂ©s :

    • Saswata Sarkar, Gurugram, Inde ;
    • Hoobly Classifieds, États-Unis.

    Les miroirs sont importants car ils aident le projet en répartissant la charge pour des dizaines de milliers de téléchargements quotidiens. De plus, en ayant des miroirs répartis dans le monde entier, nous garantissons que tout le monde peut avoir un accÚs rapide au téléchargement de GIMP.

    Comment citer GIMP dans la recherche

    GIMP est souvent utilisé dans la recherche et est donc cité dans diverses publications scientifiques. Un chercheur utilisant GIMP pour le traitement d'images astronomiques nous a contactés pour savoir comment citer GIMP correctement, d'autant plus qu'il est utilisé pour effectuer une étape importante de son algorithme.

    Comme cela semble ĂȘtre une question intĂ©ressante, nous avons mis Ă  jour notre page « Citing GIMP and Linking to Us Â» avec une nouvelle sous-section « Citing GIMP in research Â» contenant la conclusion de cette discussion.

    En particulier, une entrée BibTex, destinée aux chercheurs utilisant LaTeX pour gérer leur bibliographie, est disponible sur ce lien pour simplifier votre travail. Par exemple, disons que vous utilisez ce RC3 pour vos recherches, vous pouvez citer GIMP avec cette entrée :

    @software{GIMP,
        author = {{The GIMP Development Team}},
        title = {GNU Image Manipulation Program (GIMP), Version 3.0.0-RC3. Community, Free Software (license GPLv3)},
        year = {2025},
        url = {https://gimp.org/},
        note = {Version 3.0.0-RC3, Free Software}
    }

    Merci Ă  Cameron Leahy pour ce morceau de code BibTex !

    Télécharger GIMP 3.0 RC3

    Vous trouverez toutes nos versions officielles sur le site officiel de GIMP (gimp.org) :

    • Linux AppImages pour x86 et ARM (64 bits) ;
    • Linux Flatpaks pour x86 et ARM (64 bits) ;
    • Installateur Windows universel pour x86 (32 et 64 bits) et pour ARM (64 bits) ;
    • Paquet MSIX (GIMP Preview) pour x86 et ARM (64 bits) ;
    • Paquets macOS DMG pour le matĂ©riel Intel ;
    • Paquets macOS DMG pour le matĂ©riel Apple Silicon.

    D'autres paquets réalisés par des tiers devraient évidemment suivre (paquets de distributions Linux ou *BSD, etc.).

    Et ensuite ?

    Nous apprĂ©cions vraiment tous les tests et commentaires de la communautĂ© que nous avons reçus au cours des deux derniĂšres versions candidates !
    Nous espĂ©rons que ce sera la derniĂšre version candidate avant la version stable 3.0. Notre objectif est maintenant de terminer la rĂ©solution des quelques bugs restants dans notre liste de jalons 3.0, tout en gardant un Ɠil sur les nouveaux rapports rĂ©sultant des changements dans RC3.

    N’oubliez pas que vous pouvez faire un don et financer personnellement les dĂ©veloppeurs de GIMP, afin de contribuer et d’accĂ©lĂ©rer le dĂ©veloppement de GIMP. L’engagement de la communautĂ© aide le projet Ă  se renforcer !

    Commentaires : voir le flux Atom ouvrir dans le navigateur

    ❌