systemd를 사용하여 Gnome3에 매달리는 방법

systemd를 사용하여 Gnome3에 매달리는 방법

간략한 배경 정보:방금 내 컴퓨터에 Fedora 18과 Gnome 3.6.3.1을 설치했습니다. 음악이 포함된 Windows 공유(CIFS)에 연결되어 있으며 Clementine을 사용하여 음악을 재생합니다. Clementine이 CIFS 설치에서 노래를 재생하는 동안 컴퓨터를 정지한 경우 다시 시작하면 해당 컴퓨터(Clementine)가 정지됩니다. 결국 재부팅/전원 끄기를 시도하면 전체 컴퓨터가 정지됩니다. 내 해결책은 일시 중지되면 재생을 중지하는 것이었습니다.

내 질문:MPRIS를 사용하여 재생을 중지 하는 스크립트를 만들었습니다 /usr/lib/systemd/system-sleep. 실행하면 스크립트가 중단되기 전에 성공적으로 실행됩니다.

systemctl suspend

그런데 Gnome3 "사용자" 메뉴에서 "일시 중지"를 클릭하면 실행되지 않습니다. 몇 가지 조사 끝에 Gnome3이 UPower에 의존한다는 사실을 발견했습니다. UPower 자체는 "일시 중지" 명령을 실행하기 위해 DBus를 사용하는 것으로 보입니다. 나는 더 이상 리드를 따라갈 만큼 능숙하지 않지만, 내가 아는 한 스크립트는 결코 실행되지 않을 것입니다.

내 질문:Gnome3의 일시 중지 메뉴 항목이 systemd를 사용하여 내 스크립트를 호출하도록 하려면 어떻게 해야 합니까?

답변1

더 많은 연구를 통해 UPower가 감지되면 실제로 systemd를 사용해야 하는 것으로 보입니다. 그러나 어떤 이유에서는 그렇지 않습니다. 현재 이 문제를 해결하는 중이지만 임시 해결 방법으로 다음과 userMenu.js같이 관련 줄을 직접 편집했습니다 powerMenu.js.

hang을 호출하는 모든 행을 대체(주석 처리)합니다.

this._upClient.suspend_sync(null);

다음 줄을 통해 :

Util.spawn(['systemctl', 'suspend']);

powerMenu.js또한 상단 근처에 다음 줄을 추가합니다.

const Util = imports.misc.util;

관련 정보