mmvk
Anmeldungsdatum: 4. Januar 2009
Beiträge: 927
|
hi, mit welchem Befehl erfrage ich meine Koordinaten? Viele Grüße aus Wien von Manfred
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11107
Wohnort: München
|
Dem Paket liegt eine Demo-Anwendung bei (den Quellcode gibt es hier: https://cgit.freedesktop.org/geoclue/plain/demo/where-am-i.c), mit der man Abfragen machen kann:
sudo /usr/lib/geoclue-2.0/demos/where-am-i
Damit man das Programm als normaler Nutzer nutzen kann (die DBus-API erlaubt standardmäßig nur root den Zugriff), muss man in der Konfigurationsdatei /etc/geoclue/geoclue.conf so einen Eintrag am Ende hinzufügen:
| [geoclue-where-am-i]
allowed=true
system=false
users=
|
Damit redshift als normaler Nutzer geoclue nutzen kann, braucht es so einen Eintrag in der Datei:
| [redshift]
allowed=true
system=false
users=
|
|
seahawk1986
Anmeldungsdatum: 27. Oktober 2006
Beiträge: 11107
Wohnort: München
|
Interessanterweise kann man die DesktopId für den DBus-Client frei wählen, d.h. da in der Vorkonfiguration u.a. ein Eintrag für den firefox vorhanden ist, kann jede Anwendung, die die Desktop-ID auf "firefox" setzt (Zeile 19), nach Belieben Standort-Informationen abfragen 😈 - das Verhalten scheint laut https://gitlab.freedesktop.org/geoclue/geoclue/commit/87e60ed97843f1a59db46c320aa048cb064a0f08 "gewollt" zu sein. Basierend auf https://gist.github.com/jonls/11337107e84442dd783d (benötigt das Paket python-dbus):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 | #!/usr/bin/env python
import dbus
import time
bus = dbus.SystemBus()
manager_obj = bus.get_object('org.freedesktop.GeoClue2', '/org/freedesktop/GeoClue2/Manager')
manager = dbus.Interface(manager_obj, 'org.freedesktop.GeoClue2.Manager')
client_path = manager.GetClient()
print 'Client at {}'.format(client_path)
client_obj = bus.get_object('org.freedesktop.GeoClue2', client_path)
client = dbus.Interface(client_obj, 'org.freedesktop.GeoClue2.Client')
client_props = dbus.Interface(client_obj, 'org.freedesktop.DBus.Properties')
client_props.Set('org.freedesktop.GeoClue2.Client', 'DistanceThreshold', dbus.UInt32(10000))
client_props.Set('org.freedesktop.GeoClue2.Client', 'DesktopId', dbus.String("firefox"))
client.Start()
print 'Client started...'
while True:
location_path = client_props.Get('org.freedesktop.GeoClue2.Client', 'Location')
if location_path != '/':
break
time.sleep(.25)
location_obj = bus.get_object('org.freedesktop.GeoClue2', location_path)
location_props = dbus.Interface(location_obj, 'org.freedesktop.DBus.Properties')
print 'Location at {}'.format(location_path)
print location_props.Get('org.freedesktop.GeoClue2.Location', 'Latitude')
print location_props.Get('org.freedesktop.GeoClue2.Location', 'Longitude')
print location_props.Get('org.freedesktop.GeoClue2.Location', 'Accuracy')
print location_props.Get('org.freedesktop.GeoClue2.Location', 'Description')
|
|