diff --git a/pkgs/maps/main.fnl b/pkgs/maps/main.fnl index aaa0b51..9a32538 100644 --- a/pkgs/maps/main.fnl +++ b/pkgs/maps/main.fnl @@ -1,9 +1,12 @@ ; (local { : view } (require :fennel)) +(local { : fdopen } (require :posix.stdio)) (local { : Gtk : OsmGpsMap : Gdk + : Gio + : GLib } (require :lgi)) @@ -60,6 +63,25 @@ label.readout { (: :add (readout "00:00")) (: :add (readout "25 km/h")))) +(local gnss-socket + (let [addr (Gio.UnixSocketAddress { + :path "/var/run/gnss-share.sock" + })] + (: (Gio.SocketClient) :connect addr nil))) + +(fn read-gnss [socket] + (each [l #(socket:read "l")] + (print "gnss" l)) + true) + +(let [sock (gnss-socket:get_socket) + fd (sock:get_fd) + events [ GLib.IOCondition.IN GLib.IOCondition.HUP] + channel (GLib.IOChannel.unix_new fd) + handle (fdopen fd :r)] + (GLib.io_add_watch channel 0 events #(read-gnss handle))) + + (window:add (doto (Gtk.Overlay {}) (: :add (osm-widget))