{"id":2227,"date":"2019-08-17T19:07:56","date_gmt":"2019-08-17T19:07:56","guid":{"rendered":"http:\/\/blog.rastersoft.com\/?p=2227"},"modified":"2019-09-17T17:40:33","modified_gmt":"2019-09-17T17:40:33","slug":"ventana-transparente-en-gtk-3-y-javascript","status":"publish","type":"post","link":"https:\/\/blog.rastersoft.com\/?p=2227","title":{"rendered":"Ventana transparente en Gtk 3 y Javascript"},"content":{"rendered":"\n<p>Hacer una ventana con el fondo transparente utilizando Gtk es un cl\u00e1sico; de hecho hay ejemplos de como hacerlo en python, en C y en Vala. Pero falta como hacerlo con Javascript, y dado que es el lenguaje de moda para Gnome (y tambi\u00e9n por una serie de circunstancias extra) me he decidido a hacer el ejemplo. Este es el c\u00f3digo:<\/p>\n\n\n\n<div class=\"mycode\"> <pre class=\"mycode\">#!\/usr\/bin\/env gjs\n\nimports.gi.versions.Gtk = '3.0';\nconst Gtk = imports.gi.Gtk;\nconst Gdk = imports.gi.Gdk;\n\nGtk.init(null);\n\nlet window = new Gtk.Window();\nwindow.set_app_paintable(true);\nlet screen = window.get_screen();\nlet visual = screen.get_rgba_visual();\nif (visual &amp;&amp; screen.is_composited()) {\n    window.set_visual(visual);\n    window.connect('draw', (widget, cr) =&gt; {\n        Gdk.cairo_set_source_rgba(cr, new Gdk.RGBA({red: 0.0,\n                                                    green: 0.0,\n                                                    blue: 0.0,\n                                                    alpha: 0.0}));\n        cr.paint();\n        return false;\n    });\n    window.connect('delete-event', () =&gt; {\n        Gtk.main_quit();\n    });\n    window.show_all();\n    Gtk.main();\n} else {\n    print(\"El entorno de ventanas no admite transparencia\");\n}<\/pre><\/div>\n\n\n\n<p>Aunque el c\u00f3digo no tiene nada de especial comparado con las versiones en otros lenguajes, s\u00ed es cierto que tuve problemas con Gdk.cairo_set_source_rgba, pues, como se ve, no sigue la estructura \u00abnormal\u00bb de llamadas como si fuera un objeto, sino que sigue el formato de C. Lo l\u00f3gico ser\u00eda hacer cr.cairo_set_source_rgba(&#8230;), pero no funciona. Y lo mismo con algunas otras.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hacer una ventana con el fondo transparente utilizando Gtk es un cl\u00e1sico; de hecho hay ejemplos de como hacerlo en python, en C y en Vala. Pero falta como hacerlo con Javascript, y dado que es el lenguaje de moda para Gnome (y tambi\u00e9n por una serie de circunstancias extra) me he decidido a hacer &hellip; <a href=\"https:\/\/blog.rastersoft.com\/?p=2227\" class=\"more-link\">Seguir leyendo <span class=\"screen-reader-text\">Ventana transparente en Gtk 3 y Javascript<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,6,7],"tags":[],"class_list":["post-2227","post","type-post","status-publish","format-standard","hentry","category-programacion","category-trucos","category-tutoriales"],"_links":{"self":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts\/2227","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2227"}],"version-history":[{"count":4,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts\/2227\/revisions"}],"predecessor-version":[{"id":2231,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts\/2227\/revisions\/2231"}],"wp:attachment":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2227"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2227"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2227"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}