display browser name in tooltip
reads /proc/<pid>/cmdline directly instead of using a library.
This commit is contained in:
parent
840130680e
commit
623adf487e
@ -15,7 +15,7 @@ MPRIS2 is widely supported, so this component should work with:
|
||||
* Most other music/media players
|
||||
|
||||
## Install
|
||||
`go get github.com/hrfee/waybar-mpris`
|
||||
`go get github.com/hrfee/waybar-mpris` will install the program, as well as the go dbus bindings and pflags for command-line arguments.
|
||||
|
||||
or just grab the `waybar-mpris` binary from here and place it in your PATH.
|
||||
|
||||
|
21
main.go
21
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
|
||||
}
|
||||
}
|
||||
|
BIN
waybar-mpris
BIN
waybar-mpris
Binary file not shown.
Loading…
Reference in New Issue
Block a user