by roundabout, Wednesday, 28 January 2026, 10:03:55 (1769594635), pushed by roundabout, Wednesday, 28 January 2026, 10:03:59 (1769594639)
Author identity: Vlad <vlad.muntoiu@gmail.com>
65a9714a11d809ca76d23231e8e6500f298c4574
applets/weather1/__init__.py
@@ -27,6 +27,7 @@ import json
import os
import locale
from pathlib import Path
import enum
import panorama_panel
import gi
@@ -38,6 +39,26 @@ from gi.repository import Gtk, GLib, Gio, Gdk
weather_location = Path(os.environ.get("XDG_DATA_HOME") or "~/.local/share").expanduser() / "weather"
custom_css = """
.panorama-panel-weather-temperature {
font-weight: 700;
}
"""
css_provider = Gtk.CssProvider()
css_provider.load_from_data(custom_css)
Gtk.StyleContext.add_provider_for_display(
Gdk.Display.get_default(),
css_provider,
100
)
class IconPosition(enum.Enum):
FIRST = "first"
LAST = "last"
class SimpleWeatherApplet(panorama_panel.Applet):
name = "Weather"
description = "Read the current weather conditions (requires script such as https://github.com/WayfireWM/wf-shell/blob/wf-panel-weather-widget/data/weather-fetch.py)"
@@ -47,10 +68,15 @@ class SimpleWeatherApplet(panorama_panel.Applet):
super().__init__(orientation=orientation, config=config, **kwargs)
if config is None:
config = {}
self.icon = Gtk.Image()
self.append(self.icon)
self.icon = Gtk.Image(pixel_size=config.get("icon_size", 24))
self.icon_position = IconPosition(config.get("icon_position", "last"))
self.label = Gtk.Label()
self.label.add_css_class("panorama-panel-weather-temperature")
self.append(self.label)
if self.icon_position == IconPosition.LAST:
self.append(self.icon)
else:
self.prepend(self.icon)
if not weather_location.exists():
dialog = Gtk.AlertDialog(message="Do you have the weather updater script?")
@@ -68,4 +94,7 @@ class SimpleWeatherApplet(panorama_panel.Applet):
self.icon.set_from_file(data["icon"])
def get_config(self):
return {}
return {
"icon_size": self.icon.get_pixel_size(),
"icon_position": self.icon_position.value
}