dbus-send 예제

이 명령을 사용하면 두 개의 인수가 있는 org.gnome.ScreenSaver 인터페이스의 억제 메서드를 호출합니다. 첫 번째는 응용 프로그램의 이름입니다. 나는 여기에 “유튜브”를 사용하지만, 임의의 이름이 될 수 있습니다. 두 번째 인수는 화면 보호기를 억제하는 이유입니다. dbus-send는 각 인수가 문자열, 부울, int16 등과 같은 형식 앞에 있을 것으로 예상합니다. 여기에 있는 두 인수는 문자열입니다. 또한 명령의 회신이 필요하기 때문에 인수 –print-reply를 사용합니다: inhibit 메서드는 억제 요청을 식별하는 “쿠키”인 uint32 번호를 반환합니다. 화면 보호기를 억제하지 않으려면 이 쿠키를 인수로 보내야 합니다: D-Bus 스크립트를 디버깅하거나 다른 D-Bus 응용 프로그램의 메서드와 신호를 관찰하는 경우 명령줄 프로그램 dbus-monitor가 매우 편리합니다. 그냥 터미널에서 그것을 발사, 당신은 에 의해 스크롤 모든 D-버스 활동을 볼 수 있습니다.

dbus 모니터는 모든 D-Bus 활동을 실시간으로 확인하는 데 유용합니다. 예를 들어 시스템에서 문제가 발생하면 네트워크가 다운되면 Dbus 모니터출력에서 이 메시지가 D-Bus 버스로 전송되는 방식을 확인할 수 있습니다. 이렇게 하면 수신할 신호 또는 동일한 이벤트를 탭하기 위해 호출할 메서드를 알 수 있습니다. 보시다시피 dbus-send 호출은 qdbus가 있는 호출과 거의 동일합니다. 유일한 차이점은 서비스 이름에 대해 –dest 매개 변수를 사용해야 한다는 것입니다. 하지만, 새로운 것을 살펴 보자. 브라우저에서 긴 YouTube 비디오를 보고 있는 경우 플래시 플러그인이 시스템의 나머지 부분과 통신하지 않기 때문에 화면 보호기가 시작될 수 있습니다. D-버스를 사용하면이 성가신 동작을 중지 할 수 있습니다. 매직 명령은 이것입니다: qdbusviewer는 현재 등록된 서비스 이름만 표시할 수 있다는 점을 지적할 가치가 있습니다. 예를 들어 Pidgin을 시작하지 않은 경우 뷰어는 Pidgin 서비스를 나열하지 않습니다. 시스템에서 사용할 수 있는 D-Bus 서비스를 탐색할 때 이 사항을 고려하십시오. dbus-send 명령은 D-Bus 메시지 버스에 메시지를 보내는 데 사용됩니다.

큰 그림에 대한 자세한 내용은 http://www.freedesktop.org/software/dbus/ 참조하십시오. qdbus를 사용하면 이러한 메서드를 직접 호출할 수도 있습니다. 예를 들어 일시 중단 메서드를 호출하려는 경우 실행: freedesktop.org 프로젝트에는 웹 사이트에서 D-Bus를 사용하는 불완전한 응용 프로그램 목록이 있고 각 응용 프로그램의 버스 이름도 나열됩니다. 그러나 몇 가지 흥미로운 도구를 사용하여 자신의 시스템에서 D-Bus를 탐색하는 데 도움이되는 버스 이름을 직접 찾을 수 있습니다. 예를 들어 Qt에는 qdbusviewer라는 그래픽 D-Bus 브라우저가 있습니다(그림 1). 우분투에서, 당신은 qt4-dev-도구 패키지에서 응용 프로그램을 찾을 수 있습니다. KDE의 일부이지만 응용 프로그램은 그놈을 포함한 다른 데스크톱 환경에서 완벽하게 작동합니다. 이번에는 루비의 또 다른 예를 살펴보겠습니다. 우리는 피진 (목록 2)에서 상태로 리듬 박스에서 현재 재생 노래를 보여주는 스크립트를 만들 거야. 단일 메서드를 호출하는 것보다 더 복잡한 작업을 수행하려는 경우 dbus-send 명령이 있는 셸 스크립트를 작성하거나 상위 수준의 언어를 사용하여 작업을 단순화할 수 있습니다. 파이썬, 루비 및 자바와 같은 언어에 대한 D-Bus 바인딩이 있습니다. 다음 예제에서는 화면 보호기가 활성화되면 Pidgin의 상태를 “키보드에서 멀리”로 설정하는 Python 스크립트를 구현합니다.