=====fbgrab : copie d'écran en console===== Le programme "fbgrab" permet d'effectuer des captures d'écran en console, en utilisant pour cela les possibilité du "framebuffer" (mémoire tampon video). C'est très pratique pour réaliser un tutoriel sur un programme qui ne s'utilise que en console et en dehors de toute session graphique, pour réaliser des captures lors de session de récupération sur un système où le serveur graphique est absent/cassé, etc... . Un signe **$** précède les commandes qui ne nécessitent pas de droits administrateur ; un signe **#** précède celles qui nécessitent des droits administrateur (ces signes ne font PAS partie des commandes). Les lignes qui ne commencent pas par un signe $ ou # correspondent au résultat de la commande précédente.\\ Les touches utilisées sont indiquées entre crochets, exemple **[ctrl]** pour la touche "contrôle" ===="Framebuffer" ?==== Pour que "fbgrab" puisse fonctionner il faut que vous utilisiez le "framebuffer", ou mémoire tampon video, tout le nécessaire (modules noyaux) devrait être en place si vous utilisez le noyau par défaut de votre distribution, en place mais pas nécessairement activé.\\ Utiliser la mémoire tampon vidéo ou "framebuffer" peut ralentir légèrement le démarrage, mais plus ennuyeux cela peut entraîner des problèmes d'affichage avec certains pilotes de cartes graphiques, en particulier le pilote propriétaire "fglrx" pour cartes AMD/ATI, lors du changement de console virtuelle. Si vous compilez vous-même votre noyau, vérifiez que vous ayez bien activé au minimum l'option de "framebuffer" générique :\\ $ grep CONFIG_FB= /boot/config-$(uname -r) Si vous avez comme réponse "CONFIG_FB=y" c'est bien partie, sinon retour à la case configure et compil du noyau, rubrique "device driver > graphic support".\\ {{ commande:fb_config.png?480 }} \\ Pour que le "framebuffer" soit activé il faut généralement passer une option au noyau, celle-ci est de la forme "vga=" suivi d'un code correspondant à un couple résolution/nombre de couleurs. Un moyen simple de déterminer les résolutions supportées par votre matériel est d'utiliser le programme "hwinfo" (à installer si nécessaire) :\\ # hwinfo --framebuffer [...] Mode 0x0300: 640x400 (+640), 8 bits Mode 0x0301: 640x480 (+640), 8 bits Mode 0x0303: 800x600 (+800), 8 bits Mode 0x0305: 1024x768 (+1024), 8 bits Mode 0x0307: 1280x1024 (+1280), 8 bits Mode 0x0311: 640x480 (+1280), 16 bits Mode 0x0312: 640x480 (+2560), 24 bits Mode 0x0314: 800x600 (+1600), 16 bits Mode 0x0315: 800x600 (+3200), 24 bits Mode 0x0317: 1024x768 (+2048), 16 bits Mode 0x0318: 1024x768 (+4096), 24 bits Mode 0x031a: 1280x1024 (+2560), 16 bits Mode 0x031b: 1280x1024 (+5120), 24 bits Mode 0x033d: 640x400 (+1280), 16 bits Mode 0x033e: 640x400 (+2560), 24 bits Mode 0x0345: 1600x1200 (+1600), 8 bits Mode 0x0346: 1600x1200 (+3200), 16 bits Mode 0x0347: 1400x1050 (+1400), 8 bits Mode 0x0348: 1400x1050 (+2800), 16 bits Mode 0x0349: 1400x1050 (+5600), 24 bits Mode 0x034a: 1600x1200 (+6400), 24 bits Mode 0x0352: 2048x1536 (+8192), 24 bits Mode 0x0360: 1280x800 (+1280), 8 bits Mode 0x0361: 1280x800 (+5120), 24 bits Mode 0x0362: 768x480 (+768), 8 bits Mode 0x0364: 1440x900 (+1440), 8 bits Mode 0x0365: 1440x900 (+5760), 24 bits <<< exemple choisit ci-dessous Mode 0x0368: 1680x1050 (+1680), 8 bits Mode 0x0369: 1680x1050 (+6720), 24 bits Mode 0x037c: 1920x1200 (+1920), 8 bits Mode 0x037d: 1920x1200 (+7680), 24 bits Le listing a été débarrassé des valeurs les plus faibles pour le raccourcir. La valeur qui nous intéresse est la notation [[http://fr.wikipedia.org/wiki/Syst%C3%A8me_hexad%C3%A9cimal|hexadécimale]] qui correspond à la résolution désirée, par exemple ici pour utiliser une résolution de 1440x900 avec des couleurs codées sur 24 bits on utilisera "vga=0x0365".\\ La résolution peut également être notée sous forme d'entiers, par exemple "vga=799" pour une résolution de 1280x1024 avec des couleurs codées sur 24bits. En demandant à votre moteur de recherche préféré vous trouverez sur Internet des listes de ce type de notation.\\ Avec les dernières versions du noyau Linux a commencé à apparaître un avertissement concernant l'option "vga=", celle-ci sera bientôt abandonnée au profit de "gfxpayload=". C'est une bonne chose car la nouvelle option permet d'indiquer simplement un résolution avec par exemple :\\ gfxpayload=1440x900x24 C'est plus parlant que les codes ésotériques de "vga=".\\ Où mettre cette option ? Ça dépend de votre chargeur d'amorçage, mais en règle générale elle doit figurer sur la ligne de chargement du noyau.\\ Pour [[util:grub:|grub "legacy"]] vous pouvez éditer directement le fichier /boot/grub/menu.lst et ajouter "vga=" ou "gfxpayload=" parmi les options de la ligne "kernel".\\ Pour [[expert:grub2:|grub2]] vous pouvez ajouter "vga=" dans /etc/default/grub, dans la variable GRUB_CMDLINE_LINUX_DEFAULT= . Pour "gfxpayload" la situation est plus mitigée, pour le moment grub2 ne supporte pas cette variable dans /etc/default/grub, on peut cependant l'ajouter à /etc/grub.d/00_header dans le passage suivant :\\ set gfxmode=${GRUB_GFXMODE} insmod gfxterm insmod ${GRUB_VIDEO_BACKEND} set gfxpayload=keep <<<<<<<<< ajoutez l'option ici Si vous utilisez déjà une résolution personnalisée pour grub2 (variable GRUB_GFXMODE=) vous pouvez mettre comme dans l'exemple "set gfxpayload=keep", sinon indiquez la valeur souhaitée à la place de "keep".\\ Après ces modifications n'oubliez pas mettre à jour votre chargeur d'amorçage en exécutant "update-grub" ou "grub-mkconfig".\\ Si le "framebuffer" est correctement activé vous constaterez que la résolution de vos consoles virtuelles sera similaire à celle de votre écran, si vous avez de gros caractères pixellisés c'est raté, inutile d'aller plus loin... Reprenez la mise en place du "framebuffer".\\ ====Utiliser "fbgrab"==== Une fois installé à l'aide de votre gestionnaire de paquets favori, "fbgrab" est très simple à utiliser. Connectez vous dans quelques consoles virtuelles de votre système, pour rappel celles-ci s'activent avec le raccourci [ctrl][alt][F1-6] (touches "contrôle", "alt" et touches de fonction de 1 à 6), la console "7" étant dédiées au serveur graphique [ctrl[alt[F7] vous ramènera à votre environnement graphique).\\ Pour effectuer votre première capture avec "fbgrab", tapez simplement :\\ $ fbgrab fbgrab1.png Vous venez de créer une image "fbgrab1.png" dans le répertoire courant, qui est une image de la commande que vous venez de taper, ressemblant à celle-ci :\\ {{ commande:fbgrab_1.png?280 }} \\ Jusque là rien de bien impressionnant, "fbgrab" devient réellement pratique pour capturer une image d'une autre console virtuelle, par exemple si vous êtes connecté dans la seconde console ([ctrl][alt][F2]), et que vous ayez lancé une application dans la première console, utilisez :\\ # fbgrab -c 1 capture.png Ici l'image "capture.png" sera celle de la console n°1, vous l'avez désigné avec l'option "-c 1" de "fbgrab". Notez que vous aurez sans doute besoin des droits "root" (ou de "[[commande:su_sudo:|sudo]]") pour utiliser fbgrab de cette manière.\\ L'option "**-c**" suivie du numéro de la console prend une capture immédiate, si vous voulez une capture différée vous pouvez ajouter l'option "**-s**" suivie d'une durée en secondes. "fbgrab" ne verrouille pas les consoles ce qui permet de retourner sur le programme dont on veut capturer l'image pour y effectuer une opération.\\ Pour capturer la console numéro 2 depuis n'importe quelle autre, après un délai de 20 secondes, faites :\\ # fbgrab -c 2 -s 20 capture.png Les deux images suivantes ont été prises avec cette méthode :\\ Navigateur Internet "elinks" en action :\\ {{ commande:elinks3.png?580 }} \\ Son ancêtre "lynx" sur la même page :\\ {{ commande:lynx1.png?580 }} \\ ====Limitations de "fbgrab"==== "fbgrab" ne permet pas d'afficher les images créées, ça serait pourtant bien pratique et la page de manuel suggère que l'auteur du programme le pense également... Peut-être un jour ?\\ Il vaut mieux éviter d'essayer de capturer la console où tourne le serveur graphique avec "fbgrab", il y a d'autres outils pour ça et vous risquez d'aboutir à des résultats surprenants, allant du simple écran noir à la corruption irrémédiable de l'affichage nécessitant le redémarrage du serveur graphique. Ceci est particulièrement vrai avec des pilotes propriétaires de carte vidéo. Par contre aucun problème à utiliser "fbgrab" depuis une console en environnement graphique, pour capturer une console virtuelle.\\ "fbgrab" ne peut pas capturer certaines images affichées de manière complexe par des programmes en console, comme le navigateur Internet "w3m". Un exemple avec la page d'accueil de votre wiki préféré :\\ Ce que "fbgrab" a capturé :\\ {{ commande:w3m_LP.png?580 }} Ce que "w3m" affichait réellement :\\ {{ commande:w3m_LP_img.png?580 }} C'est bien plus joli au naturel ! ;-) Amusez-vous bien avec "fbgrab". ====Liens==== * [[http://hem.bredband.net/gmogmo/fbgrab/|Site de fbgrab]] * [[util:grub:|"grub"]] * [[expert:grub2:|"grub2"]]