From 623adf487e56da10d9d0fbac914ab90cbdc68a1e Mon Sep 17 00:00:00 2001 From: Harvey Tindall Date: Sun, 23 Aug 2020 16:25:27 +0100 Subject: display browser name in tooltip reads /proc//cmdline directly instead of using a library. --- main.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'main.go') diff --git a/main.go b/main.go index e018f15..8b7a3ab 100644 --- a/main.go +++ b/main.go @@ -5,6 +5,7 @@ import ( "fmt" "github.com/godbus/dbus/v5" flag "github.com/spf13/pflag" + "io/ioutil" "log" "net" "os" @@ -17,6 +18,12 @@ var knownPlayers = map[string]string{ "noson": "Noson", } +var knownBrowsers = map[string]string{ + "mozilla": "Firefox", + "chrome": "Chrome", + "chromium": "Chromium", +} + type Player struct { player dbus.BusObject fullName, name, title, artist, album string @@ -50,6 +57,20 @@ func NewPlayer(conn *dbus.Conn, name string) (p *Player) { for key, val := range knownPlayers { if strings.Contains(name, key) { playerName = val + if val == "Browser" { + var pid uint32 + conn.BusObject().Call("org.freedesktop.DBus.GetConnectionUnixProcessID", 0, name).Store(&pid) + file, err := ioutil.ReadFile(fmt.Sprintf("/proc/%d/cmdline", pid)) + if err == nil { + cmd := string(file) + for k, v := range knownBrowsers { + if strings.Contains(cmd, k) { + playerName = v + break + } + } + } + } break } } -- cgit v1.2.3