Me gustaría poder dibujar en la ventana raíz en Linux. Es decir hacer una OSD.Dibujando en la ventana raíz X
Estoy usando Gnome.
Se apreciarán ejemplos de código o enlaces a ellos.
Me gustaría poder dibujar en la ventana raíz en Linux. Es decir hacer una OSD.Dibujando en la ventana raíz X
Estoy usando Gnome.
Se apreciarán ejemplos de código o enlaces a ellos.
Es posible, pero no verá nada en GNOME. Nautilus, el administrador de archivos de GNOME, abre su propia ventana en la parte superior de la ventana de root X para mostrar iconos. Debido a eso, la ventana de la raíz X está completamente cubierta ... por lo que no tiene sentido recurrir a ella.
Si desea hacer OSD, o bien debe utilizar una biblioteca como XOSD, o abra su propia ventana X y haga que sea translúcida. De hecho, el código fuente de XOSD debería ser un buen ejemplo de cómo hacer esto.
Toda la biblioteca parece estar implementada en un solo archivo: xosd.c.
use X11::Protocol;
my $x = X11::Protocol->new();
my $desktop;
my ($root,undef,@kids)=$x->QueryTree($x->{'root'});
printf "%10x:\tRoot\n", $root;
foreach (@kids){
my $gdkw = Gtk2::Gdk::Window->foreign_new($_);
printf ("%10x:\tDesktop\n",$gdkw->get_xid),$desktop=$gdkw,last if $gdkw->get_type_hint eq 'desktop';
}
$desktop=Gtk2::Gdk::Window->foreign_new($root) if ! $desktop;
#------------------------------------------
Puedo encontrar escritorio, verificado por xwininfo. Pero, perdí el código que puede dibujar el escritorio, parece usado "set_back_pixmap".
Ahora Cairo puede recurrir a cualquier ventana de manera muy simple, sólo tiene que utilizar
$cr = Gtk2::Gdk::Cairo::Context->create ($drawable);
embargo, esto no funciona en el escritorio. ¿Quizás debido a la actualización del kernel? O lo arruiné ahora en Ubuntu 10.04-3.
Gracias, su respuesta fue de gran ayuda. Me gustaría dibujar cosas que no sean solo texto, pero este es un buen punto de partida. – x10
Aquí hay algunos ejemplos de código: http://pastebin.com/f58970b0c Y un tutorial: http://ldots.org/xosd-guide/using_libxosd.html – x10