Est-il possible d'accéder au framebuffer afin de mettre un pixel sur l'écran depuis la command line?

Je ne sais pas si c'est le seul moyen possible, mais je lis que pour mettre un seul pixel sur l'écran à un endroit de votre choix, il faut écrire quelque chose dans un endroit appelé framebuffer. Donc, je suis devenu curieux, s'il est possible d'entrer dans cet endroit et d'y écrire quelque chose afin d'afficher un seul pixel quelque part sur l'écran.

oui, en dehors de X-server, dans tty, essayez la command:

cat /dev/urandom >/dev/fb0 

si des pixels colorés remplissent l'écran, votre configuration est correcte et vous pouvez essayer de jouer avec ce petit script:

 #!/usr/bin/env bash fbdev=/dev/fb0 ; width=1280 ; bpp=4 color="\x00\x00\xFF\x00" #red colored function pixel() { xx=$1 ; yy=$2 printf "$color" | dd bs=$bpp seek=$(($yy * $width + $xx)) \ of=$fbdev &>/dev/null } x=0 ; y=0 ; clear for i in {1..500}; do pixel $((x++)) $((y++)) done 

où la fonction 'pixel' doit être une réponse … écrivez un pixel à l'écran en changeant les valeurs d'octets (bleu-vert-rouge-alpha) sur le décalage xy du périphérique / dev / fbX qui est tampon d'image pour la carte video.

ou essayez un tracé de pixel (jaune sur x: y = 200: 100, si la largeur est 1024):

 printf "\x00\xFF\xFF\x00" | dd bs=4 seek=$((100 * 1024 + 200)) >/dev/fb0 

UPDATE: ce code fonctionne même à l'intérieur de X-server, si nous configurons simplement X pour utiliser frame buffer . en spécifiant fb0 dans /usr/share/X11/xorg.conf.d/99-fbdev.conf