Introducción
Hace unos días actualicé My-Weather-Indicator para que estuviera disponible en Ubuntu Trusty Tahr. En este cambio me encontré con alguna que otra dificultad como la presencia de una sombra en los widget y la gestión de la posición, para poder seleccionar la opción de que estuviera encima de todas las ventanas o debajo de todas las ventanas.
Finalmente y tras algún que otro sobresalto y error, que mas de uno de vosotros sufrió, conseguí resolver ambos problemas, y retomé un aspecto pendiente que en alguna ocasión mas de un usuario había reclamado como era la posibilidad de que poder cambiar el comportamiento (encima/debajo) directamente desde el widget haciendo clic en una imagen, la famosa chincheta, que nos permita identificar el comportamiento del widget.
Además con esta nuevo comportamiento verás que el widget aparece en todos los escritorios, otra de las antiguas reivindicaciones de los widget…
Así nos encontramos con una nueva versión de My-Weather-Indicator con un único cambio, la chincheta…
My-Weather-Indicator Chincheta
La nueva característica de los widget de My-Weather-Indicator está ligeramente oculta para evitar la molestia que puede suponer tener la chincheta siempre presente, pero si situamos el ratón en la parte superior derecha del widget, veremos como en menos de un segundo aparece la chincheta indicándonos el comportamiento del widget.
Al hacer clic sobre la chincheta modificaremos el comportamiento del widget pasando de estar encima de todas las otras ventanas,
A estar por debajo…
Instalación
My-Weather-Indicator no está disponible en los repositorios oficiales de Ubuntu de forma que si la quieres instalar tienes que añadir el siguiente repositorio, actualizar e instalar,
sudo add-apt-repository ppa:atareao/atareao sudo apt-get update sudo apt-get install my-weather-indicator
Un poquito de programación
Para conseguir el efecto indicado he utilizado las nuevas habilidades que ha adquirido Gtk3+ en estos últimos tiempos, la posibilidad de utilizar css para la representación de elementos.
Así he creado un botón al que le he asignado la imagen de la chincheta que se verá modificada conforme hagamos clic sobre ella,
self.pin = Gtk.Image() button = Gtk.Button() button.set_name('pin') button.connect('clicked',self.on_button_clicked) button.add(self.pin)
Para modificar el comportamiento del botón conforme colocamos el ratón sobre el mismo, he añadido el siguiente código,
style_provider = Gtk.CssProvider() css = """ #pin{ opacity:0.05; border-image: none; background-image: none; background-color: rgba(0, 0, 0, 0); border-radius: 0px; } #pin:hover { transition: 1000ms linear; opacity:1.0; border-image: none; background-image: none; background-color: rgba(0, 0, 0, 0); border-radius: 0px; } """ style_provider.load_from_data(css.encode('UTF-8')) Gtk.StyleContext.add_provider_for_screen( Gdk.Screen.get_default(), style_provider, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION)
Como puedes ver se trata de una técnica realmente sencilla pero con un resultado mas que aceptable.
Fuentes
Otro característica añadida en estas últimas versiones es la incorporación de una fuente de letra para utilizar con el nuevo modelo de widget incorporado, simple. Se trata de la fuente Open Sans Condensed que tiene licencia Apache versión 2.0 y que está disponible en Google Fonts. Se trata de una fuente diseñada por Steve Matteson y que permite conseguir ese widget tan estilizado.
Para instalar las fuentes realmente solo hay que incorporarlas a nuestro paquete e indicar donde quieremos que se instalen, de forma que en el proceso de instalación ya se realiza lo necesario para que queden configuradas…
Acabo de caer ahora que para valores negativos es posible que se salga del widget simple, si a alguien le pasa, le ruego que me envíe una captura de pantalla para ver como solucionarlo.
Conclusiones
Estoy muy emocionado con el comportamiento del widget y las posibilidades que ofrecen Gtk+ y CSS. Espero tener nuevas ideas que mejoren esta herramienta que creo que es realmente interesante.
Es posible que una interesante opción es que fuera una aplicación independiente (quizá en Vala por aquello de la rapidez) y que se alimentara de información vía dbus… Esto es para pensarlo.