-1

As you can see in the image bellow there are (org.Nemo) :

/org/Nemo/window/1
/org/Nemo/window/2
/org/Nemo/window/3
/org/Nemo/window/4

I have four windows open and it shows that.

Nemo Dbus

Each window has a GetMachineID command.

  • How can I find how many windows are open by dbus-send or any equivalent command (using cli)?
  • How to run the GetMachineID command on each window by dbus-send or any equivalent command (using cli)?
Ahmad Ismail
  • 11,636
  • 6
  • 52
  • 87
  • **DO NOT post images of code, data, error messages, etc.** - copy or type the text into the question. [ask] – Rob Jul 03 '23 at 19:45

1 Answers1

1

Many D-Bus API's make use of GetManagedObjects but Nemo doesn't seem to be doing this. A way to find the information you want would be to use busctl tree command to find all the object paths and then use them to call the GetMachineId.

For example:

$ busctl --user tree org.Nemo --list | grep -P "window/\d+"
/org/Nemo/window/1
/org/Nemo/window/2
$ busctl --user call  org.Nemo /org/Nemo/window/1 org.freedesktop.DBus.Peer  GetMachineId
s "c55143112d1244248ad60984144b7b53"

You can wrap that in shell scripting or you could use Python.

An example using Python:

import dbus
from xml.etree import ElementTree


def get_machine_id(obj_path):
    bus = dbus.SessionBus()
    obj = bus.get_object('org.Nemo', obj_path)
    iface = dbus.Interface(obj, 'org.freedesktop.DBus.Peer')
    print('\t', iface.GetMachineId())


def nemo_windows():
    window_paths = []
    bus = dbus.SessionBus()
    root = '/org/Nemo/window'
    obj = bus.get_object('org.Nemo', root)
    iface = dbus.Interface(obj, 'org.freedesktop.DBus.Introspectable')
    xml_string = iface.Introspect()
    for child in ElementTree.fromstring(xml_string):
        window_paths.append(root + '/' + child.attrib['name'])
    return window_paths


if __name__ == '__main__':
    win_paths = nemo_windows()
    for pth in win_paths:
        print(pth)
        get_machine_id(pth)

Gave the following output when I ran it:

/org/Nemo/window/2
     c55143112d1244248ad60984144b7b53
/org/Nemo/window/1
     c55143112d1244248ad60984144b7b53
ukBaz
  • 6,985
  • 2
  • 8
  • 31