Nasra's games

A short blog about games and Linux

Dans les communautés linuxiennes, il y a quelques débats animés sur certains sujets (cela va parfois jusqu'aux insultes ou aux attaques ad hominem), voici celui sur la transition entre X11 et Wayland.

De quoi s'agit-il ?

Ici, il va être question de la manière d'afficher des informations sur votre PC, de gérer différents système d'entrées (clavier, souris...).

X.org, l'ancien

X est un système de fenêtrage né en 1984 qui gère l'écran, la souris et le clavier (et divers autres comme les tablettes graphiques par exemple). X11 est la version “11”. Schéma client-serveur de X Window (source : Wikipédia) Pour bien comprendre X, il s'agit d'un fonctionnement client-serveur. Le serveur X dispose de l'écran, de la souris, du clavier. Les clients (applications) lui demandent d'utiliser le matériel et l'affichage avec Xlib. Parmi les clients de X, le gestionnaire de fenêtres va gérer l'affichage, la sélection ou le redimensionnement des fenêtres…

Bibliothèques pour la programmation de X (source : Wikipédia) X est ancien, et différentes voies s'élèvent pour le remplacer. Il existe aussi différents soucis, notamment de sécurité (une application demandant un accès clavier est visible pour d'autres applications) et d'autres liés à la structure même de Xorg (les différentes extensions dont la plupart ne sont plus utilisées mais dont le code, ancien, reste toujours présent et demande toujours des dépendances).

Qu'un nouveau protocole d'affichage existe, c'est une bonne chose, une évolution importante notamment dans le support de technologies récentes. Puisque X11 est ancien, difficile à maintenir à jour, très complexe pour les développeurs...

Wayland, le protocole au développement chaotique

La première version de Wayland date de 2008. Si Xorg est âgé de 40 ans, Wayland en est déjà a 15 ans. La faute à un développement chaotique, une gouvernance “à la Gnome” (ils sont les meilleurs et les autres ce ne sont que des abrutis barbus utopistes)...

Wayland est conçu pour être léger et efficace, visant à réduire la latence et à améliorer les performances globales par rapport à Xorg. Il y parvient en éliminant certaines des fonctionnalités héritées et des mécanismes obsolètes présents dans Xorg, ce qui entraîne des interfaces utilisateur plus réactives.

Wayland a été construit avec la sécurité à l'esprit à partir de zéro. Il adopte une architecture plus sécurisée, mettant en œuvre des contrôles plus stricts sur la communication des processus et l'isolement des applications les unes des autres. Cette conception aide à atténuer certaines vulnérabilités et rend plus difficile pour les logiciels malveillants de compromettre le système.

Malheureusement, il n'y a pas de compositeur unique universellement utilisé. Chaque environnement de bureau fait le sien et, par conséquent, ce qui fonctionne dans l'un peut ne pas fonctionner dans un autre.

Pourquoi il y a débats ?

Je ne dis pas que Wayland c'est de la “merde”, mais plutôt que ce n'est pas encore prêt à être conseillé à un débutant. Xwayland, la couche qui doit permettre une compatibilité parfaite entre les applications développées avec Xorg et l'environnement Wayland ne tient pas ses promesses. Les spécifications de Wayland sont parfois de réels freins à des fonctionnalités importantes pour beaucoup d'utilisateurs (gestion des couleurs par exemple). La nouveauté de Wayland fait que toutes les applications doivent, à un moment ou un autre, se poser la question de migrer vers Wayland. Cela pose des problèmes pour des équipes de développement qui n'ont pas forcément anticipé ce genre de travail supplémentaire. Et justement, quand je vois le soucis de Discord, je ne suis pas sûr que cette boîte investisse plus d'énergies pour supporter Wayland dans un futur proche (on espère hein, mais ça reste de l'espoir). Ces développements supplémentaires, les utilisateurs vont les subir, soit en attendant que des applications, serveurs graphiques ou applications migrent, soit en se passant d'applications importantes dans leur quotidien (qui imagine utiliser son service de visio sans partage d'écran ?). Sur un marché restreint mais en devenir comme Linux, c'est un sacré handicap.

RedHat, Gnome, imposer une nouvelle technologie pour accélérer son développement.

Wayland n'est pas prêt en décembre 2023. Beaucoup de fonctionnalités manquent ou sont encore en phase de développement, pire, certaines vont devoir “hacker” le fonctionnement de Wayland pour être implantées... comme ce fut le cas avec Xorg...

Mais Wayland est poussé/financé par RedHat. Les développeurs de RedHat ont travaillé pendant des années sur Xorg, et depuis peu, presque tous ont migré vers le développement de Wayland. Gnome souhaite supprimer le support de Xorg par défaut (pour la faire réapparaître, il faudra ajouter 8 lignes de codes dans un fichier de configuration). Et Ubuntu suit le mouvement en annonçant que leur prochaine version LTS (en avril 2024) sera disponible par défaut avec Wayland.

La démarche est claire : faire migrer de force les utilisateurs pour faire bouger les développeurs, et ce, même si toutes les fonctionnalités de Xorg ne sont pas implantées dans Wayland (la gestion des couleurs par exemple).

Et clairement, ce management ne passe pas. Exemples.

GIMP

Le logiciel phare de retouche photo du monde Linux souffre depuis des années d'un développement lent. Depuis 2, 3 ans, son développement s'est accéléré (avec le passage annoncé en GTK3). Mais cette dynamique est fragile. Xwayland ne permettant pas une compatibilité efficiente avec la version de GIMP actuelle. Tous les développeurs de GIMP doivent bosser sur la version Wayland, et ils le font depuis au moins 2020. Et malheureusement, le protocole ne supporte pas encore la gestion de couleur, le drag and drop entre différentes fenêtres, une gestion unifiée des fenêtrages d'une application, le support matériel pour des dispositifs de pointage importants (stylets à pression, tablette graphique, écrans tactiles...).

Dans cette affaire, ce n'est pas seulement le développement lent de GIMP qu'il faut pointer mais bien la gouvernance de Wayland qui fait comme bon leur semble sans consulter toutes les parties concernées et qui force une migration alors que le protocole manque de fonctionnalités essentielles. Ce n'est pas aux développeurs de GIMP d'écrire les protocoles manquants (pas le temps, pas les compétences...).

PCSX2

C'est un émulateur de console PS2. Le seul valable et surtout celui qui est le plus utilisé. La version Linux fonctionne bien, surtout depuis l'ajout du rendu Vulkan (elle était en-dessous de la version Windows depuis des années). Les problèmes sont nombreux et dû au manque de support de nombreuses fonctionnalités dans GTK. Les autres DE ne semblent pas avoir ces soucis. Explications techniques ici

Alors Wayland ou pas ?

Pas encore ! Il est certain que Wayland sera à terme, le remplaçant idéal pour X11. Pour le moment, quand on passe à Wayland, on dégrade son expérience Linux. Des outils pro comme Krita avec la gestion de couleur, c'est nécessaire pour de nombreux projets, et pas seulement avec Krita, mais toute la chaîne graphique sous Linux : Inkscape, Scribus, GIMP, LibreOffice, Blender... Le support de matériel de pression, le multi-fenêtrage ce sont des fonctionnalités importantes (et bien d'autres sont listées ici). Alors, oui si vous n'utilisez pas ces logiciels, vous allez me dire que ce n'est pas grave, pour vous Wayland fonctionne bien... Pour le moment, si vous n'avez pas de carte graphique Nvidia, que vous n'utilisez pas le partage d'écran, que vous ne faites pas de la vidéo en direct ni que vous utilisiez des applications en multi-fenêtrage vous ne devriez pas avoir de problèmes. Bref, si vous êtes le mouton à cinq pattes qui n'a pas de soucis et qui remplace ses applications utilisées par d'autres, bin, tant mieux pour vous.

Pourquoi cela fait rager des gens ?

Parce que le nombre d'utilisateurs Linux est déjà restreint (2% sur la plate-forme Steam) et que les restreindre encore plus à cause d'une “mise à jour technique” (parce que c'est comme cela que c'est compris par des utilisateurs lambda), c'est encore plus se tirer une balle dans le pied. Changer d'application parce qu'elle ne fonctionne plus à cause du changement de serveur graphique c'est autant un obstacle qu'une ineptie pour les utilisateurs qui se détourneront de Linux et retourneront soit chez Win-IA-dows, soit chez App-$-le.

Petit rajout de dernière minute : Linux Mint n'incorporera Wayland définitivement qu'en 2026.

In terms of timing we don’t think we need Wayland support to be fully ready (i.e. to be a better Cinnamon option for most people) before 2026 (Mint 23.x)

https://blog.linuxmint.com/?s=wayland&submit=Search

#Wayland #Xorg #X11 #Mint #Ubuntu #Fedora


Lors d'un “débat” (plutôt une série de mauvaises compréhensions), j'ai pu dire que Gnome et les extensions ça n'a jamais été une lune de miel, voir même que certains développeurs avaient pensé à supprimer cette possibilité.

Précisions utiles : Je suis un utilisateur de distributions Linux depuis 2003-2004. Au départ avec Slackware, puis Kubuntu, Xubuntu et Ubuntu. Aujourd'hui, après un passage par ElementaryOS, je suis sous PopOS. Mon expérience avec Gnome est celle d'un utilisateur qui a connu Gnome 2, puis le lancement (plutôt calamiteux) de Gnome 3 et les différents projets qui ont suivi (Mate, Cinnamon).

Aux origines de Gnome 3

En 2008, Gnome 3 est dans toutes les têtes des développeurs. Le nouveau DE (Environnement de Bureau) doit succéder à Gnome 2, implanté dans beaucoup de distributions Linux (Ubuntu étant l'une des plus populaires). Ce DE, plutôt léger même à son époque, satisfaisait beaucoup de besoins des utilisateurs. Le blog de Owen Taylor parle bien de cette époque notamment avec son article “Implementing the next GNOME shell”. Fin 2008, lors du GUIHackfest de Boston, Vincent Untz dévoile un concept d'interface :

Dans son article, nous pouvons voir plusieurs discussions menées et quelques décisions sur le développement de Gnome 3 :

  1. Le “menu” Activités permet d'avoir un seul endroit pour les applications en cours et celles à lancer. L'idée est de fusionner la vue avec le raccourcis “ALT-TAB” et le menu “Applications”, et tous les panneaux d'informations.
  2. Javascript, un langage populaire pour permettre l'engagement de la communauté dans le développement de Gnome. Javascript permet aussi de modifier le Shell. C'est la vision des “applets”, la même que celle de Gnome 2 ou de XFCE.
  3. Clutter, pour gérer la gestion des fenêtres et remplacer GTK+. À cette époque, Clutter est en phase de développement intense et utilise le GPU (OpenGL).
  4. Metacity, le gestionnaire de fenêtres de Gnome 2, est un héritage important pour l'équipe.

Déjà, si nous regardons les commentaires de l'article d'Owen, on peut voir que le choix de Javascript n'est pas le plus populaire, Python commence à être très utilisé parmi les communautés de développeurs. Il y a aussi des craintes concernant l'utilisation du GPU dans le rendu de Clutter.

Il faut dire que nous sommes en pleine période “Compiz”. Le rendu GPU est devenu populaire grâce à ces effets qui impressionnent et donnent à voir la puissance des distributions Linux.

Les extensions, une déception conceptuelle pour les développeurs, une popularité importante

Jiri Eischmann, dans son article “Story of Gnome Shell Extensions” parle de cet historique.

Dès le lancement de Gnome 3, le choix des extensions en Javascript se révèle payant. De nombreux développeurs s'impliquent pour apporter des extensions au bureau de Gnome. Mais les choix de design de l'équipe (plutôt radicaux) sont mis à mal par ces extensions. De plus, les développeurs d'extensions ne s'impliquent pas dans le développement de Gnome, mais restent sur leurs projets sans s'impliquer davantage.

L'équipe décide de leur donner plus de visibilité en apportant Gnome Extensions pour rationaliser tout cela avec des connecteurs dans les navigateurs Firefox et Chrome. Cette application est séparée du reste des paramètres de Gnome. Le développeur Tobias Bernard pense même que cette application doit rester comme telle, car c'est juste un hack :

“If you make extension installation/management nicer that makes them seem like even more of a supported feature, rather than the hack it is...”

En 2012, Gnome 3 devient de plus en plus instable à cause de certaines extensions. En 2016, avec l'introduction de Wayland, l'équipe a pu penser que cela allait être mieux (séparations des processus), mais la conception même de Gnome (Mutter / Shell dans un même processus) faisait que si un des composants plantait, les deux plantaient.

L'article date de 2018 et Jiri Eischmann fait le constat amère que les extensions apportent plus de problèmes d'instabilités qu'autre chose au projet :

“desktop crashes caused by GS extensions are by far the most frequent problem I’ve seen recently”.

C'est bien à cette époque que certains développeurs posent la question du support des extensions dans Gnome. À chaque version de Gnome (3.36, 3.38...) beaucoup d'extensions deviennent incompatibles.

Entre désactivation après survenue d'un bug (avec la fermeture de la session utilisateur), rendre incompatibles la plupart des extensions en mettant en place une API ou une autre solution de séparation entre Mutter et Shell (une solution complexe en ces temps de cohabitation entre X11 et Wayland) la décision, à l'époque, n'est pas de faire de choix radical.

JohnMacHugh sur le wiki de Gnome en parle aussi en ces termes.

Il faut bien comprendre ici que le débat à propos des extensions n'est pas le même que celui des thèmes. Il s'agit d'un enjeu entre un langage populaire (Javascript) aux débuts de Gnome 3 qui rend les choix de l'équipe incohérents et instables et une popularité, bienvenue, héritée des “applet” de Gnome 2 / XFCE.

L'équipe de Gnome n'apprécie pas que ses décisions de design ne soient pas respectées. On le voit lorsqu'il est question de “theming” avec le site “StopThemingMyApp”

Une intégration en cours de rationalisation

Comme dit plus haut, l'application qui gère les extensions dans Gnome est en dehors des paramètres du bureau de Gnome. Certaines distributions (PopOS) ont décidé d'inclure ces paramètres dans les paramètres globaux au mépris des choix de la communauté de Gnome. Quelques tensions plus tard et quelques débats sur le theming font que PopOS décide de ne plus continuer avec Gnome pour ses prochaines versions : ils développent leur propre DE, Cosmic, codé en langage RUST.

Canonical ayant abandonné son interface Unity dans Ubuntu. Sa distribution phare utilise Gnome (comme à l'ancien temps de Gnome 2). Il est important de voir ici que Ubuntu utilise des extensions “maison” directement implantées (app indicator par exemple). C'est aussi un point de débat dans la communauté de développeurs de Gnome.

Tobias Bernard en parle dans son article “Community Power Part 4: The GNOME Way” :

“Every preference has a cost, and this cost rises exponentially as you add more of them. This is why we avoid preferences as much as possible, and focus on fixing the underlying problems instead.”

Et la partie concernant les extensions illustre bien le propos :

“Shell extensions are always going to be a niche thing. If you want to have real impact your time is better invested working on apps or GNOME Shell itself.”

Si vous voulez vous investir efficacement dans Gnome, votre temps sera mieux dépensé si vous développez des applications plutôt que des extensions.

Conclusion

L'équipe de Gnome a certainement besoin de clarifier ses positions concernant ce sujet. Autant les choix de design sont des choix à mettre en débat, mais ils s'imposent à tout utilisateur de Gnome. Les extensions, quant à elles, montrent une dynamique d'un développement communautaire. À l'instar de sites comme gnome-look, les choix de l'équipe de Gnome sont mis à mal par les thèmes, les extensions instables... Et ce, même si Allan Day a pu mettre en avant “The Gnome Way”, aujourd'hui, 6 ans après et avec le développement intense des différentes versions de Gnome, la question des extensions demeure et de ses incompatibilités avec.

#GNOME #Extensions


Voici quelques astuces pour analyser son temps de démarrage avec systemd (présent dans beaucoup de distributions). Une autre méthode existe avec bootchart (je pourrai mettre à jour ce tuto).

Systemd

Systemd est arrivé depuis les années 2010 (2012 pour Arch, 2014-2015 pour les Debian/Ubuntu) pour la gestion du système et des services sur les distributions Linux. Il permet de voir ce qui prend du temps au démarrage par exemple. C'est très utile, pas seulement pour comparer sa qué... ses performances, mais aussi pour savoir si un service démarré sur votre distribution prend beaucoup de temps où ralenti votre système. Par exemple, si vous installez Apache, PHP ou MySQL, votre distribution va bien ralentir au démarrage car elle devra lancer ces éléments surtout présents et utiles sur des serveurs web (pas forcément votre besoin de gamer).

Analyser

Voici la commande : systemd-analyze

qui renvoie chez moi ça : nasra@pop-os:~$ systemd-analyze Startup finished in 9.360s (firmware) + 524ms (loader) + 4.469s (kernel) + 4.411s (userspace) = 18.765s graphical.target reached after 4.375s in userspace

Ok, là j'ai un découpage du temps entre les firmwares, le loader, le kernel (et ses différents modules), le temps utilisateur (les applications démarrées lors de l'ouverture de la session de mon DE) et le dernier temps celui qui m'annonce mon temps de boot avant d'avoir affiché mon interface graphique (celle de mon login). Ces temps là changent selon les DE, les modules installés ou non dans le kernel, les services démarrés lors du login.

Analysons plus finement

La commande suivante analyse tous les éléments du démarrage : systemd-analyze blame

qui renvoie cela chez moi : nasra@pop-os:~$ systemd-analyze blame 3.425s NetworkManager-wait-online.service 3.369s plymouth-quit-wait.service 2.542s fwupd-refresh.service 549ms apt-daily-upgrade.service 534ms apt-daily.service 463ms ua-timer.service 440ms man-db.service 419ms networkd-dispatcher.service 363ms accounts-daemon.service 289ms logrotate.service 274ms udisks2.service 252ms dev-sdc3.device 197ms systemd-cryptsetup@cryptswap.service 162ms dpkg-db-backup.service 158ms user@1000.service 151ms ModemManager.service 112ms upower.service 109ms boot-efi.mount

Ici j'ai un module NetworkManager-wait-online.service qui prend 3,425s à démarrer. Parfois ce module peut prendre plus de temps (dans une configuration réseau par exemple).

La commande systemd-analyze critical-chain

Permet de mieux identifier les services en question. Elle renvoie cela chez moi : nasra@pop-os:~$ systemd-analyze critical-chain The time when unit became active or started is printed after the "@" character. The time the unit took to start is printed after the "+" character. graphical.target @4.375s └─lactd.service @4.374s └─multi-user.target @4.373s └─plymouth-quit-wait.service @962ms +3.369s └─systemd-user-sessions.service @955ms +4ms └─network.target @944ms └─NetworkManager.service @839ms +101ms └─basic.target @838ms └─dbus-broker.service @816ms +20ms └─dbus.socket @805ms └─sysinit.target @803ms └─cryptsetup.target @760ms └─systemd-cryptsetup@cryptswap.service @563ms +197ms └─dev-disk-by\x2duuid-287ac1e1\x2def46\x2d4d0e\x2d9d7d\x2d6cb19af5b144.device @535ms

Exporter ses résultats

Petit bonus pour la route, vous pouvez exporter vos résultats en .svg 🙂 systemd-analyze plot > boot_analysis.svg

systemd boot analysis

#Systemd #Ubuntu #PopOS


PopOS est une distribution grand public. Elle permet à des personnes novices de pouvoir utiliser une distribution Linux simplement. Mais PopOS permet aussi à des utilisateurs avancés de l'utiliser pour beaucoup d'utilisations (création, gaming...). Si vous testez régulièrement PopOS ou des fonctions avancées d'une distribution Linux (kernel, mesa à jour...), vous aurez certainement besoin de ces fonctionnalités très utiles !

Partition de récupération avec systemd

La partition de récupération est une copie complète du disque d'installation PopOS. Il peut être utilisé exactement de la même manière que si une copie de disque en direct de PopOS a été démarrée à partir d'une clé USB. Le système d'exploitation existant peut être réparé ou réinstallé à partir du mode de récupération. Vous pouvez effectuer une installation d'actualisation, qui vous permet de réinstaller sans perdre de données ou de données utilisateur dans votre répertoire domestique. La récupération peut également effectuer une installation propre, qui réinitialise toutes les données du système d'exploitation.

Pour démarrer en mode de récupération, affichez le menu SystemD-Boot en maintenant la touche espace pendant que le système démarre, ou en maintenant / appuyant sur toutes les touches de fonction non utilisées pour accéder au menu BIOS / Boot.

Remarque : ces instructions supposent que PopOS est le seul système d'exploitation exécuté sur votre système. Si vous démarrez plus d'un système d'exploitation, vous devrez peut-être modifier d'abord votre commande de démarrage, ou sélectionner manuellement le disque PopOS dans votre menu BIOS / Boot.

Une fois le menu affiché, choisissez Pop! _Os Recovery.

Remarque : L'environnement de récupération PopOS ne verra pas votre mot de passe wifi enregistré. Une fois démarré dans l'environnement en direct, vous devrez vous reconnecter manuellement à votre wifi afin d'accéder à Internet.

Rafraîchir votre installation

L'option d'installation d'actualisation vous permet de réinstaller le système d'exploitation sans perdre les informations et les données du compte utilisateur dans le répertoire domestique.

Remarque : Les applications installées par l'utilisateur non stockées dans le dossier /home (par exemple .deb ou APT installées) devront être réinstallées. Les applications Flatpak, elles, ne nécessiteront pas de réinstallation (stockées dans le dossier /home/.var/ ).

Si votre disque est chiffré. L'option d'installation de rafraîchissement ne peut apparaître qu'après avoir déchiffré le disque. Un avis sur le déchiffrement du disque sera présent au-dessus des options d'installation.

#PopOS #Récupération


On va parler de screen tearing !

Qu'est-ce que le screen tearing ?

C'est un déchirement d'image qui se produit lorsque la carte graphique (GPU) ou le processeur (CPU) envoie des images qui sont non synchronisées avec le taux de rafraîchissement de votre écran. Ça donne ce genre de trucs : screentearing

Quelques solutions pour éviter ce genre de choses

Le VSYNC permet de synchroniser les deux mais le fait de manière un peu trop agressive. Si votre jeu n'atteint pas les images par seconde de votre écran (souvent 60Hz), le tearing sera aussi présent. À noter que c'est souvent lors de phases chargées en effets spéciaux que les images par secondes vont diminuer. Bien sûr, si vous avez une super configuration CPU/GPU cela va vous aider grandement à garder les 60 images par secondes nécessaires.

GSync, FreeSync et autre déclinaisons premium...

Ça, ce sont les solutions des fabricants de cartes graphiques, liées à des spécifications des écrans et/ou à un support par les pilotes Linux (pas forcément évident).

Une super solution pour les AMD (pilotes libres)

(traduction du site de davejansen )

Tout d'abord, vérifions l'état actuel de la configuration.

Pour vérifier l'état actuel de cette option sur tous vos écrans actuellement connectés, exécutez la commande suivante :

xrandr --verbose | grep "TearFree" (en anglais)

Dans mon cas, il a répondu avec TearFree : auto quatre fois (car j'ai quatre écrans connectés). Pour être honnête, je ne suis pas tout à fait sûr de ce qu'il peut utiliser pour décider de s'activer ou de se désactiver lorsqu'il est réglé sur auto, car j'avais un déchirement d'écran très perceptible sur tous mes écrans, mais peut-être que cette valeur par défaut fonctionne mieux avec certaines autres combinaisons matérielles, même si la mienne n'est pas inhabituelle ou autre. Quoi qu'il en soit, je veux qu'elle soit activée, alors procédons.

Note : La correction suivante est pour X11 spécifiquement, pas pour Wayland. Avec Wayland, vous n'aurez probablement aucun problème de déchirure d'écran, bien que son utilisation puisse être, aujourd'hui encore (2021), désavantageuse en ce qui concerne les jeux. Si vous voulez, vous pouvez essayer d'utiliser Wayland au lieu de la correction suivante pour voir si cela fonctionne bien pour vous. Vous pouvez sélectionner celle que vous souhaitez utiliser sur l'écran de connexion d'Ubuntu ou de PopOS (ou de tout en bas à droite).

Réparons le déchirement de l'écran

Ouvrez une fenêtre de terminal et cd dans /etc/X11. Vous devrez soit sudoer chacune des commandes suivantes, soit démarrer une session sudo en utilisant sudo -s car les fichiers et dossiers avec lesquels nous allons travailler appartiennent à root (administrateur).

Nous devrons créer un nouveau sous-dossier ici s'il n'existe pas déjà, appelé xorg.conf.d, donc faites-le maintenant s'il n'y a pas encore de tel dossier. Faites-le donc maintenant s'il n'existe pas encore. Ensuite, accédez à ce dossier et, en utilisant votre éditeur de texte préféré, créez un nouveau fichier appelé 20-amdgpu.conf avec le contenu suivant :

Section "Device" (périphérique) Identificateur "AMD Graphics Pilote "amdgpu Option "TearFree" "true" (vrai) EndSection

Si vous avez déjà un fichier de configuration pour amdgpu, l'élément important ici est le réglage de TearFree, vous pouvez donc l'ajouter à votre fichier existant.

Cela devrait être tout ce qu'il y a à faire. Redémarrez (ou relancez X, je suppose) et vous devriez maintenant être en mesure de profiter d'une expérience sans larmes. Pourquoi ce n'est pas (encore) la valeur par défaut, je ne sais pas, mais nous y sommes.

Maintenant, en utilisant la commande mentionnée précédemment pour vérifier le statut, nous pouvons voir qu'ils sont entièrement activés :

#Tearing #AMD #GPU


Parfois, on a du mal à bien connaître les entrailles d'un PC. Soit c'est le PC d'un ami, soit on ne sait pas à quelle vitesse tourne la RAM qu'on a installé... bref, il nous manque des infos ! Voici quelques commandes utiles !

config TopAchat

Son OS

Voici une commande pour connaître la version de son OS et de son noyau système : lsb_release -a

Ce qui donne chez moi un truc de ce style : No LSB modules are available. Distributor ID: Pop Description: Pop!_OS 21.04 Release: 21.04 Codename: hirsute

Ensuite pour mon noyau utilisé : uname -a Avec pour résultat : Linux pop-os 5.13.0-7620-generic #20~1634827117~21.04~874b071-Ubuntu SMP Fri Oct 29 15:06:55 UTC x86_64 x86_64 x86_64 GNU/Linux

Plus d'infos ? Voici inxi !

Si vous n'avez pas encore installé inxi, sous les debian : sudo apt install inxi Ensuite, voici la commande : inxi -Fc0

Qui donne chez moi :

System: Host: pop-os Kernel: 5.13.0-7620-generic x86_64 bits: 64 Desktop: GNOME 3.38.4 Distro: Pop!_OS 21.04 Machine: Type: Desktop Mobo: ASUSTeK model: TUF B450-PLUS GAMING v: Rev X.0x serial: <superuser required> UEFI: American Megatrends v: 2202 date: 07/14/2020 CPU: Info: 6-Core model: AMD Ryzen 5 2600 bits: 64 type: MT MCP L2 cache: 3 MiB Speed: 3173 MHz max: 3400 MHz Core speeds (MHz): 1: 3173 2: 3198 3: 2192 4: 2832 5: 3024 6: 3884 7: 2509 8: 3174 9: 2320 10: 2480 11: 2557 12: 3790 Graphics: Device-1: Advanced Micro Devices [AMD/ATI] Navi 14 [Radeon RX 5500/5500M / Pro 5500M] driver: amdgpu v: kernel Display: x11 server: X.Org 1.20.11 driver: loaded: amdgpu,ati unloaded: fbdev,modesetting,radeon,vesa resolution: 1: 1920x1080~60Hz 2: 1680x1050~60Hz OpenGL: renderer: Radeon RX 5500 XT (NAVI14 DRM 3.41.0 5.13.0-7620-generic LLVM 12.0.0) v: 4.6 Mesa 21.2.2 Audio: Device-1: Advanced Micro Devices [AMD/ATI] Navi 10 HDMI Audio driver: snd_hda_intel Device-2: Advanced Micro Devices [AMD] Family 17h HD Audio driver: snd_hda_intel Device-3: Yamaha AG06/AG03 type: USB driver: snd-usb-audio Device-4: Sunplus Innovation Full HD webcam type: USB driver: snd-usb-audio,uvcvideo Sound Server: ALSA v: k5.13.0-7620-generic Network: Device-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet driver: r8169 IF: enp3s0 state: up speed: 1000 Mbps duplex: full mac: 24:4b:fe:4b:12:7e Device-2: Intel Wireless 8260 driver: iwlwifi IF: wlp4s0 state: down mac: f4:8c:50:45:58:08 Bluetooth: Device-1: Intel Bluetooth wireless interface type: USB driver: btusb Report: ID: hci0 state: down address: F4:8C:50:45:58:0C Drives: Local Storage: total: 5.91 TiB used: 2.83 TiB (47.9%) ID-1: /dev/sda vendor: Western Digital model: WD4002FYYZ-01B7CB1 size: 3.64 TiB ID-2: /dev/sdb vendor: Seagate model: ST2000DL003-9VT166 size: 1.82 TiB ID-3: /dev/sdc vendor: Samsung model: SSD 850 EVO 500GB size: 465.76 GiB Partition: ID-1: / size: 449.09 GiB used: 353.9 GiB (78.8%) fs: ext4 dev: /dev/sdc3 ID-2: /boot/efi size: 497 MiB used: 354.9 MiB (71.4%) fs: vfat dev: /dev/sdc1 Swap: ID-1: swap-1 type: partition size: 4 GiB used: 2.46 GiB (61.6%) dev: /dev/dm-0 Sensors: System Temperatures: cpu: 49.0 C mobo: 30.0 C gpu: amdgpu temp: 32.0 C Fan Speeds (RPM): cpu: 1250 fan-2: 826 fan-3: 0 fan-4: 2295 fan-6: 0 gpu: amdgpu fan: 1312 Info: Processes: 460 Uptime: 13d 2h 53m Memory: 15.56 GiB used: 7.75 GiB (49.8%) Shell: Bash inxi: 3.3.01

CPU, Ram... ?

La commande lshw est une commande à connaître, elle est très utile !

Pour le CPU

sudo lshw -C cpu Là c'est nécessaire d'accéder à des parties plus importantes de votre PC, d'où l'autorisation sudo nécessaire.

*-cpu description: CPU produit: AMD Ryzen 5 2600 Six-Core Processor fabricant: Advanced Micro Devices [AMD] identifiant matériel: 2c information bus: cpu@0 version: AMD Ryzen 5 2600 Six-Core Processor numéro de série: Unknown emplacement: AM4 taille: 2931MHz capacité: 3900MHz bits: 64 bits horloge: 100MHz fonctionnalités: lm fpu fpu_exception wp vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp x86-64 constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb hw_pstate ssbd ibpb vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf xsaveerptr arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif overflow_recov succor smca sme sev sev_es cpufreq configuration : cores=6 enabledcores=6 threads=12

Pour la RAM

sudo lshw -C memory Ce qui donne : *-firmware description: BIOS fabricant: American Megatrends Inc. identifiant matériel: 0 version: 2202 date: 07/14/2020 taille: 64KiB capacité: 16MiB fonctionnalités: pci apm upgrade shadowing cdboot bootselect socketedrom edd int13floppy1200 int13floppy720 int13floppy2880 int5printscreen int9keyboard int14serial int17printer acpi usb biosbootspecification uefi *-memory description: Mémoire Système identifiant matériel: 27 emplacement: Carte mère taille: 16GiB *-bank:0 description: Project-Id-Version: @(#) $Id$Report-Msgid-Bugs-To: PO-Revision-Date: 2021-02-24 05:27+0000Last-Translator: Lyonel Vincent <Unknown>Language-Team: MIME-Version: 1.0Content-Type: text/plain; charset=UTF-8Content-Transfer-Encoding: 8bitX-Launchpad-Export-Date: 2021-04-15 22:13+0000X-Generator: Launchpad (build 929bdb49da44562d032228b8f93c5c598dae8678)Project-Id-Version: @(#) $Id$Report-Msgid-Bugs-To: PO-Revision-Date: 2021-02-24 05:27+0000Last-Translator: Lyonel Vincent <Unknown>Language-Team: MIME-Version: 1.0Content-Type: text/plain; charset=UTF-8Content-Transfer-Encoding: 8bitX-Launchpad-Export-Date: 2021-04-15 22:13+0000X-Generator: Launchpad (build 929bdb49da44562d032228b8f93c5c598dae8678) [vide] produit: Unknown fabricant: Unknown identifiant matériel: 0 numéro de série: Unknown emplacement: DIMM_A1 *-bank:1 description: DIMM DDR4 Synchrone Unbuffered (Unregistered) 3200 MHz (0,3 ns) produit: CMK16GX4M2Z3200C16 fabricant: Corsair identifiant matériel: 1 numéro de série: 00000000 emplacement: DIMM_A2 taille: 8GiB bits: 64 bits horloge: 3200MHz (0.3ns) *-bank:2 description: Project-Id-Version: @(#) $Id$Report-Msgid-Bugs-To: PO-Revision-Date: 2021-02-24 05:27+0000Last-Translator: Lyonel Vincent <Unknown>Language-Team: MIME-Version: 1.0Content-Type: text/plain; charset=UTF-8Content-Transfer-Encoding: 8bitX-Launchpad-Export-Date: 2021-04-15 22:13+0000X-Generator: Launchpad (build 929bdb49da44562d032228b8f93c5c598dae8678)Project-Id-Version: @(#) $Id$Report-Msgid-Bugs-To: PO-Revision-Date: 2021-02-24 05:27+0000Last-Translator: Lyonel Vincent <Unknown>Language-Team: MIME-Version: 1.0Content-Type: text/plain; charset=UTF-8Content-Transfer-Encoding: 8bitX-Launchpad-Export-Date: 2021-04-15 22:13+0000X-Generator: Launchpad (build 929bdb49da44562d032228b8f93c5c598dae8678) [vide] produit: Unknown fabricant: Unknown identifiant matériel: 2 numéro de série: Unknown emplacement: DIMM_B1 *-bank:3 description: DIMM DDR4 Synchrone Unbuffered (Unregistered) 3200 MHz (0,3 ns) produit: CMK16GX4M2Z3200C16 fabricant: Corsair identifiant matériel: 3 numéro de série: 00000000 emplacement: DIMM_B2 taille: 8GiB bits: 64 bits horloge: 3200MHz (0.3ns) *-cache:0 description: L1 cache identifiant matériel: 29 emplacement: L1 - Cache taille: 576KiB capacité: 576KiB horloge: 1GHz (1.0ns) fonctionnalités: pipeline-burst internal write-back unified configuration : level=1 *-cache:1 description: L2 cache identifiant matériel: 2a emplacement: L2 - Cache taille: 3MiB capacité: 3MiB horloge: 1GHz (1.0ns) fonctionnalités: pipeline-burst internal write-back unified configuration : level=2 *-cache:2 description: L3 cache identifiant matériel: 2b emplacement: L3 - Cache taille: 16MiB capacité: 16MiB horloge: 1GHz (1.0ns) fonctionnalités: pipeline-burst internal write-back unified configuration : level=3

Interfaces réseau

Toujours avec lshw !

sudo lshw -C network C'est parti pour le réseau !

*-network description: Ethernet interface produit: RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller fabricant: Realtek Semiconductor Co., Ltd. identifiant matériel: 0 information bus: pci@0000:03:00.0 nom logique: enp3s0 version: 15 numéro de série: 24:4b:fe:4b:12:7e taille: 1Gbit/s capacité: 1Gbit/s bits: 64 bits horloge: 33MHz fonctionnalités: pm msi pciexpress msix bus_master cap_list ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation configuration : autonegotiation=on broadcast=yes driver=r8169 driverversion=5.13.0-7620-generic duplex=full firmware=rtl8168h-2_0.0.2 02/26/15 ip=192.168.1.82 latency=0 link=yes multicast=yes port=twisted pair speed=1Gbit/s ressources : irq:29 portE/S:f000(taille=256) mémoire:fcb04000-fcb04fff mémoire:fcb00000-fcb03fff *-network DÉSACTIVÉ description: Interface réseau sans fil produit: Wireless 8260 fabricant: Intel Corporation identifiant matériel: 0 information bus: pci@0000:04:00.0 nom logique: wlp4s0 version: 3a numéro de série: f4:8c:50:45:58:08 bits: 64 bits horloge: 33MHz fonctionnalités: pm msi pciexpress bus_master cap_list ethernet physical wireless configuration : broadcast=yes driver=iwlwifi driverversion=5.13.0-7620-generic firmware=36.ca7b901d.0 8000C-36.ucode latency=0 link=no multicast=yes wireless=IEEE 802.11 ressources : irq:68 mémoire:fca00000-fca01fff

Voilà ! N'oubliez pas ces quelques commandes utiles !

Voici un récapitulatif

OS, système : lsb_release -a et uname -a Configuration globale : inxi -Fc0 CPU, RAM : sudo lshw -C cpu et sudo lshw -C memory Réseaux : sudo lshw -C network

#CLI #Terminal #Matériel #Linux


Je ne sais pas vous, mais j'ai de multiples mises à jour à faire sur mon système, snap, flatpak, ou dépôts officiels en .deb... à chaque fois c'est long, rébarbatif et plutôt décou-rageant.

Voici une solution : Topgrade !

topgrade

Topgrade

Topgrade est un script écrit en langage RUST qui permet de tout mettre à jour sur votre installation. Il est même disponible sur Windows et Mac.

Installer Topgrade

Topgrade est un outil en ligne de commande, il est rapide et très pratique. Pour l'installer vous avez besoin en premier de cargo, un outil en RUST pour télécharger et installer le script.

sudo apt install cargo puis cargo install topgrade cargo-update

Utiliser Topgrade

Pour utiliser l'outil vous aurez besoin de créer un lien symbolique vers l'exécutable (USER : c'est le nom de l'utilisateur de la session) :

echo 'export PATH=$PATH:/home/$USER/.cargo/bin' >> /home/$USER/.bashrc

Et vous voilà prêt pour l'utiliser directement en le lançant par sa commande : topgrade

Source : https://ostechnix.com/how-to-upgrade-everything-using-a-single-command-in-linux/

#Topgrade #Miseàjour


L'utilisation de PPA permet, dans le monde d'Ubuntu et ses dérivées (Mint, PopOS...), d'ajouter des sources à votre liste de paquets disponibles sur votre système.

Je vous ai perdu ? Je vous explique !

L'installation d'un logiciel sur les distributions Linux

Pour installer un logiciel, il est nécessaire d'aller sur le site de l'éditeur du logiciel, télécharger le logiciel et de l'installer. Ok pour ça tout le monde sait de quoi il s'agit. Dans Linux, les distributions mettent à disposition un ensemble de logiciels qui seront par la suite mis à jour avec tout le système, c'est ce qu'on appelle des paquets logiciels, ou paquets. Paquets car ces “logiciels” ne contiennent pas seulement les applications, mais aussi tout ce dont elles ont besoin pour fonctionner (pilotes, librairies bluetooth par exemple...

Donc, quand vous choisissez une distribution, vous choisissez aussi un ensemble de logiciels. Certaines distributions permettent de suivre l'avancée des logiciels (dernière version de Firefox, LibreOffice par exemple), d'autres restent bloquées dans des versions un peu plus anciennes. C'est pour remédier à cela que vous pouvez ajouter des sources supplémentaires (des adresses de serveur, par exemple pour Steam, celle de Valve) pour mettre à jour plus facilement vos logiciels.

Le PPA, dans l'univers d'Ubuntu et ses dérivées.

C'est ici que rentre en jeu les PPA. Ce sont des sources de nouveaux logiciels hébergées par un service de Canonical (éditeur d'Ubuntu), Launchpad.

Dans les temps anciens d'Ubuntu, il fallait éditer à la main un fichier texte, le fameux sources.list et lui rajouter les adresses de serveurs. Aujourd'hui, l'installation d'un PPA se fait grâce à une ligne de commande à copier-coller dans votre terminal : sudo add-apt-repository ppa:LE_NOM_DU_PPA

Mises en garde sur l'utilisation des PPA

Les PPA sont bien utiles pour avoir accès à certains logiciels récents non proposés par défaut par votre distribution. Mais, certains PPA embarquent plus de logiciels et sont de véritables suites logicielles, avec tous les composants à jour pour faire tourner leurs logiciels. Et c'est ici qu'il faut être vigilant. Installer un PPA qui ne contient qu'un seul logiciel, ça se tient, et c'est même intéressant dans la plupart des cas. Installer un PPA avec une suite de centaines de logiciels et leurs dépendances peut casser votre installation facilement.

Je vous recommande ceci : bien vérifier les paquets qu'on peut mettre à jour sur le site du PPA. Comme cela vous saurez si le PPA contient le logiciel ou aussi des mises à jours de Mesa, de pilotes... dont les versions vont se substituer à celles de votre système et le rendre potentiellement instable.

Une solution, n'installer que ce qui est utile ! ;)

Par exemple, pour le logiciel CoreCTRL, nous pouvons remarquer que le PPA proposé ( https://launchpad.net/~ernstp/+archive/ubuntu/mesarc ) contient le logiciel et des mises à jours de Mesa, de pilotes...

Nous pouvons n'installer que le logiciel dont on a besoin en prenant le .deb : “view package details”, le télécharger, et l'installer. C'est comme cela que je fais souvent. Si le logiciel a des dépendances bizarres, je le saurai tout de suite et/ou je pourrai passer à la compilation pour l'utiliser... ou pas (car s'il a des dépendances pourries, c'est peut-être aussi que le logiciel en question un peu moisi)

Voici en image ce que ça donne :

#ppa #ubuntu #popos


Voici une collection d'outils pour la création de jeux sur Linux !

Pixelorama

On commence avec de la 2D, du pixelart et de l'animation avec Pixelorama ! Un petit logiciel qui en a dans le ventre ! Pixelorama Basé sur le moteur de script du moteur Godot Engine, Pixelorama vous permet de créer du pixelart et de l'animer ! Il existe pas mal de ressources pour prendre en main cet outil !

LMMS

Voici un outil super puissant pour la création audio sur Linux. LMMS s'inspire beaucoup de FruityLoops au niveau de son interface et profite de nombreux plugins / extensions d'instruments, d'effets. LMMS Là aussi, de nombreuses ressources sur le site web de LMMS, avec une communauté active, des concours...

Godot Engine

Cette -petite- liste ne serait pas complète sans citer Godot Engine ! Un moteur de jeux qui vous permettra de travailler en 2D, 3D... Godot Engine Pas mal de ressources sur cet outil open-source très prisé des créateurs. Voici une liste de tutoriels très complets.

Un exemple de workflow de créateur

Voici enfin un exemple de workflow d'un créateur de jeux. J'ai repris quelques uns de ses outils dans ma liste.

#linuxgaming #godot #pixelorama #lmms


God mod = 1

Le jeu sur PC c'est aussi la joie de pouvoir installer de nombreuses modifications faites par la communauté de joueurs ! Et il faut l'avouer, sous Linux, ces possibilités sont plus limitées. Souvent à cause de la non portabilité de certains outils bien pratiques pour les communautés (Vortex par exemple, disponible seulement sur Windows). Mais, grâce à ces trouvailles, vous devriez trouver votre bonheur maintenant !

Vortex sur Windows

Modbuddy, austère mais efficace !

Quand je parle d'austère, je parle de ce genre d'interface : ModBuddy

Le projet est tout jeune, il faut le compiler à la main, et comme l'indique son créateur : « Je ne suis pas UX designer, ni un développeur QT, ni un chat. Ceci est un projet pour mes besoins personnels que je trouve très pratique pour moi ».

Je vous laisse tester tout cela et en parler éventuellement dans le forum ou dans le discord !

SteamTinkerLaunch

Ça, c'est LA trouvaille du moment ! Si vous utilisez Steam, les SteamWorks sont votre boussole pour les mods. Imaginez que vous pouvez intégrer d'autres mods sur l'interface de Steam, intégrer d'autres outils précieux et bref, faire votre tambouille avec tout ce qui existe comme outils bien utiles aux gamers ! C'est ce que propose SteamTinkerLaunch.

SteamTinkerLaunch

Voici une liste des quelques fonctionnalités de SteamTinkerLaunch

Outils externes

Tous les outils connus comme Boxtron, Luxtorpeda, Goverlay, MangoHud, vkBasalt, etc...) et qui peuvent être activés avec une commande au démarrage d'un jeu.

Options graphiques

  • Misc : Toutes les options de configurations qui ne peuvent pas être classées quelque part mais qui sont très utiles ;)
  • Proton : Changer de version de Proton, téléchargement automatique de versions, versions customisées...
  • Gestionnaire de Shader : Téléchargement, mise à jour, installation, activation, désactivation, avec le support de ReShade et Depth3D
  • Stl : Stl a de multiples options de configuration.
  • Tweaks : Quelques mini fichiers de configuration (aussi appelés “Tweakfiles”) pour démarrer quelques jeux récalcitrants.
  • Vortex Mods (oui oui)
  • VR : Side by Side VR : Jouer avec vos jeux en VR en side-by-side mode.
  • Wine : Téléchargement et utilisation de versions différentes de Wine à la place de Proton...

Plutôt pas mal, non ? Pour la liste complète, vous pouvez aller voir le wiki. SteamTinkerLaunch

Bon jeu !

#linuxgaming #mods