From 70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69 Mon Sep 17 00:00:00 2001 From: AlexanderCurl Date: Sat, 18 Apr 2026 17:46:06 +0100 Subject: Replaced file structures for themes in the correct format --- .../core/internal/geolocation/client.go | 42 ++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/geolocation/client.go (limited to 'raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/geolocation/client.go') diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/geolocation/client.go b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/geolocation/client.go new file mode 100644 index 0000000..5b44121 --- /dev/null +++ b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/geolocation/client.go @@ -0,0 +1,42 @@ +package geolocation + +import "github.com/AvengeMedia/DankMaterialShell/core/internal/log" + +func NewClient() Client { + geoclueClient, err := newGeoClueClient() + if err != nil { + log.Warnf("GeoClue2 unavailable: %v", err) + return newSeededIpClient() + } + + loc, _ := geoclueClient.GetLocation() + if loc.Latitude != 0 || loc.Longitude != 0 { + log.Info("Using GeoClue2 location") + return geoclueClient + } + + log.Info("GeoClue2 has no fix yet, seeding with IP location") + ipLoc, err := fetchIPLocation() + if err != nil { + log.Warnf("IP location seed failed: %v", err) + return geoclueClient + } + + log.Info("Seeded GeoClue2 with IP location") + geoclueClient.SeedLocation(Location{Latitude: ipLoc.Latitude, Longitude: ipLoc.Longitude}) + return geoclueClient +} + +func newSeededIpClient() *IpClient { + client := newIpClient() + ipLoc, err := fetchIPLocation() + if err != nil { + log.Warnf("IP location also failed: %v", err) + return client + } + + log.Info("Using IP location") + client.currLocation.Latitude = ipLoc.Latitude + client.currLocation.Longitude = ipLoc.Longitude + return client +} -- cgit v1.3