Enregistrer une vidéo du bureau sous Gnome 3

J’ai découvert que le raccourci clavier Ctrl-Shift-Alt-R déclenchait l’enregistrement d’une vidéo du bureau au format libre WebM dans votre dossier $HOME/Videos.

Pour arrêter l’enregistrer, refaites le même raccourci clavier.

Bon à savoir aussi:

  • Impr. (« Impression Ecran ») fait une capture complète de l’écran dans votre dossier $HOME/Images
  • Alt-Impr. capture uniquement la fenêtre en cours
  • Shift-Impr. vous permet de sélection une zone de capture sur l’écran.

Pratique !

Régler le niveau de noir de la sortie vidéo HDMI

Si vous branchez un écran sur la sortie HDMI, il se peut que les couleurs soient trop fades (le noir de la barre Gnome-shell apparaît comme gris foncé) ou trop sombres (les films paraissent mal définis dans les zones sombres).

Cela est du au fait que les valeurs transportées par le câble HDMI sont encodées soit sur  0-255, soit sur 13-235 et que l’écran et la carte graphique doivent s’accorder sur la même plage de valeur pour définir correctement le blanc et noir.

Pour comprendre le problème en profondeur, je vous recommande la lecture de cet article.

Sous Linux, voici les commandes pour passer la sortie vidéo de votre carte graphique d’une plage à l’autre :

$ xrandr –output HDMI2 –set « Broadcast RGB » « Full »

$ xrandr –output HDMI2 –set « Broadcast RGB » « Limited 16:235″

Personnellement, j’ai eu le soucis en branchant un écran LED pour ordinateur Samsung sur la sortie HDMI du GPU HD4000 intégré à mon CPU Intel i5.

J’ai du forcer le range à « Full » pour retrouver de vrais noirs comme expliqué dans cet article et aussi régler le « HDMI Black level » à « Normal » dans le panneau de configuration de l’écran.

Un raytracer en quelques lignes de C++

Cette image a été produite par les quelques lignes de C++ obscures suivantes :

    #include <stdlib.h>   // card > aek.ppm
    #include <stdio.h>
    #include <math.h>
    typedef int i;typedef float f;struct v{
    f x,y,z;v operator+(v r){return v(x+r.x
    ,y+r.y,z+r.z);}v operator*(f r){return
    v(x*r,y*r,z*r);}f operator%(v r){return
    x*r.x+y*r.y+z*r.z;}v(){}v operator^(v r
    ){return v(y*r.z-z*r.y,z*r.x-x*r.z,x*r.
    y-y*r.x);}v(f a,f b,f c){x=a;y=b;z=c;}v
    operator!(){return*this*(1/sqrt(*this%*
    this));}};i G[]={247570,280596,280600,
    249748,18578,18577,231184,16,16};f R(){
    return(f)rand()/RAND_MAX;}i T(v o,v d,f
    &t,v&n){t=1e9;i m=0;f p=-o.z/d.z;if(.01
    <p)t=p,n=v(0,0,1),m=1;for(i k=19;k--;)
    for(i j=9;j--;)if(G[j]&1<<k){v p=o+v(-k
    ,0,-j-4);f b=p%d,c=p%p-1,q=b*b-c;if(q>0
    ){f s=-b-sqrt(q);if(s<t&&s>.01)t=s,n=!(
    p+d*t),m=2;}}return m;}v S(v o,v d){f t
    ;v n;i m=T(o,d,t,n);if(!m)return v(.7,
    .6,1)*pow(1-d.z,4);v h=o+d*t,l=!(v(9+R(
    ),9+R(),16)+h*-1),r=d+n*(n%d*-2);f b=l%
    n;if(b<0||T(h,l,t,n))b=0;f p=pow(l%r*(b
    >0),99);if(m&1){h=h*.2;return((i)(ceil(
    h.x)+ceil(h.y))&1?v(3,1,1):v(3,3,3))*(b
    *.2+.1);}return v(p,p,p)+S(h,r)*.5;}i
    main(){printf("P6 512 512 255 ");v g=!v
    (-6,-16,0),a=!(v(0,0,1)^g)*.002,b=!(g^a
    )*.002,c=(a+b)*-256+g;for(i y=512;y--;)
    for(i x=512;x--;){v p(13,13,13);for(i r
    =64;r--;){v t=a*(R()-.5)*99+b*(R()-.5)*
    99;p=S(v(17,16,8)+t,!(t*-1+(a*(R()+x)+b
    *(y+R())+c)*16))*3.5+p;}printf("%c%c%c"
    ,(i)p.x,(i)p.y,(i)p.z);}}

L’explication détaillée du code se trouve sur http://fabiensanglard.net/rayTracing_back_of_business_card/