Kullanılabilir DBus servislerinin listesi


65

Kullanılabilir DBus servislerinin listesi gibi bir şey var mı?
Birkaç taneye rastladım (NetworkManager, Rhythmbox, Skype, HAL tarafından sağlananlar gibi).
Sağlanan hizmetlerin / arabirimlerin oldukça eksiksiz bir listesini bulabilir miyim acaba.

Yanıtlar:


85

Oturum, toplantı, celse:

dbus-send --session           \
  --dest=org.freedesktop.DBus \
  --type=method_call          \
  --print-reply               \
  /org/freedesktop/DBus       \
  org.freedesktop.DBus.ListNames

Sistem:

dbus-send --system            \
  --dest=org.freedesktop.DBus \
  --type=method_call          \
  --print-reply               \
  /org/freedesktop/DBus       \
  org.freedesktop.DBus.ListNames

Bir GUI aracı tercih ediyorsanız DFeet'i de kullanabilirsiniz .


1
@ don-crissti Bir servis altındaki tüm nesne yollarının dbus-sendveya ile listelenmesi gdbus?
Khurshid Alam

1
@KhurshidAlam - Bir cevap eklemiş burada .
don_crissti

30

qdbusviewersenin en iyi arkadaşın; D-bus mesajlarını da göndermenizi sağlar:

Session Bus sekmesini üç alt panel ile gösteren qdbusviewer


2014 itibariyle kırılmış gibi görünüyor. Hizmetleri listeler ancak mesaj gönderemez ..
Pithikos

5
14.04 Ubuntu'da bile başlatamıyorum. qdbusviewer: could not exec '/usr/lib/i386-linux-gnu/qt4/bin/qdbusviewer': No such file or directory
Şununla

3
@Pithikos d-feetbugün itibariyle çalışıyor.
sherrellbc

@sherrellbc Lütfen d-feetdaha görünür hale getirmek için bir cevap olarak eklemeyi düşünün
mivk

27

Python yolu güzel yoludur.

Sistem servisleri:

import dbus
for service in dbus.SystemBus().list_names():
    print(service)

Oturum hizmetleri:

import dbus
for service in dbus.SessionBus().list_names():
    print(service)

Upvoted. Cevabınıza bir takip sorusu sordum. unix.stackexchange.com/questions/203410/…
user768421

Bir Plazma 5 masaüstü ortamında, org.kde.Spectacle hizmeti ekran görüntüsünü almak için kullanılıyor (ve çalışıyor), ancak sistem veriyolunda veya oturum veriyolunda listelenmiyor, neden?
Miyav

Arayanlara yardım etmek için: en azından python 2.7.13 ve 3.6 için, bunun için gerekli olan paket kurulabilen dbus- python'dur pip install dbus-python. Python-dbus paketi de var (denedim 2 dakika içinde çalışmaya başlayamadım).
bschlueter

6

gdbusglib2'nin bir parçasıdır ve Bash tamamlamalarını destekler. İşte nasıl kullanılacağı (Fedora'da):

bash-4.4$ source /usr/share/bash-completion/completions/gdbus
bash-4.4$ gdbus call --system --dest <TAB><TAB>

Bu, olası tüm varış noktalarını gösterecektir. Kullanılabilir arayüzlerin bir listesini almak için DBus org.freedesktop.DBus.ListNamesyöntemi dışa aktarır . Çalıştırarak arayabilirsiniz:

gdbus call --system --dest org.freedesktop.DBus \
           --object-path /org/freedesktop/DBus  \
           --method org.freedesktop.DBus.ListNames

Maalesef bu okunaksız çıktılara yol açıyor. Neyse ki çıktı geçerli python, yani bu mümkün:

gdbus call --system --dest org.freedesktop.DBus      \
           --object-path /org/freedesktop/DBus       \
           --method org.freedesktop.DBus.ListNames | \
    python -c 'import sys, pprint; pprint.pprint(eval(sys.stdin.read()))'

Genelde bunu yapmam ama kolumda kalmak için güzel bir numara. gdbusKoda geçmeden önce kavramları incelemek ve kanıtlamak için kullanıyorum . Bash tamamlama, çok fazla yazarak tasarruf sağlar ve yazım hatalarını önler. Daha gdbusgüzel bir çıktı görüntülemek için güzel olurdu .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.