Nasra's games

A short blog about games and Linux

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.

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

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.

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, 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 toute (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 :

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

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/

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

Ça c'est pour un peu de nostalgie !

DOS ? DosBOX !

Pour lancer des jeux anciens, il vous faut un logiciel qui s'appelle DosBOX. DOSBox est un émulateur simulant un environnement compatible MS-DOS dans le but d'exécuter des jeux vidéo développés autrefois pour ce système. Et comme DosBOX est publié en licence GPLv2, il est disponible dans les dépôts de nombreuses distributions.

DosBOX

DosBOX et Steam

Avec le temps, de nombreux éditeurs se sont mis à republier leurs jeux. GOG en a fait son business en réadaptant des jeux autrefois non compatibles avec les versions plus récentes de Windows. Mais comme DosBOX va plus loin (la compatibilité avec MS-DOS, le système présent avant Windows), il est souvent aussi intégré dans les releases de GOG.

Et pour nous Linuxiens, ça va nous poser des soucis. Les launchers sont forcément des .EXE, compatibles ©Windows, et pas DOS. Nous avons donc besoin d'un outil qui intègre Wine et DosBOX pour lancer tout cela.

AlleyCat

Boxtron

C'est ici que Boxtron entre en jeu. Il s'agit d'un outil intégrant Wine et DosBOX, plus quelques bonnes idées de développement pour réduire l'input lag et quelques soucis de son et de résolution.

Comment installer tout ceci ?

Tout est là ! Installer DosBOX et ses éléments :

$ sudo apt install dosbox inotify-tools timidity fluid-soundfont-gm

Télécharger les sources, entrer dans le dossier, compiler :

$ git clone https://github.com/dreamer/boxtron.git
$ cd boxtron
$ sudo make install

Redémarrez Steam, et voilà !

Utiliser Boxtron pour vos jeux GOG

Pour installer aisément les jeux DOS (et ©Windows aussi !) venant de GOG dans votre librairie Steam, utilisez le script inclus :

$ ./install-gog-game ~/Downloads/setup_warcraft_orcs__humans_1.2_\(28330\).exe

Cela va installer le jeu dans ~/.local/share/games préparer l'installation qui marchera bien avec Steam et générera un raccourcis .desktop pour l'ajouter à votre librairie Steam. Après cela, vous pourrez jouer à votre jeu avec Proton ou Boxtron. Ce script dépend seulement d'une librairie Python standard, vous pouvez changer les dossiers de destination comme vous le souhaitez.

#steam #linuxgaming #dosbox #boxtron #wine #gog