사용자가 일정 기간 동안 유휴 상태일 때 사용자 정의 명령을 실행하도록 XFCE(또는 X 자체 또는 다른 것)를 구성하려면 어떻게 해야 합니까?

사용자가 일정 기간 동안 유휴 상태일 때 사용자 정의 명령을 실행하도록 XFCE(또는 X 자체 또는 다른 것)를 구성하려면 어떻게 해야 합니까?

제가 기억하는 한, 화면 보호기로 화면을 잠그는 것은 결코 제대로 작동하지 않았습니다. 지속적인 문제는 마우스를 움직이거나 키를 누르면 화면 보호기가 사라지고 화면이 표시된 다음 1초가 지나고 나서야 잠금 화면이 나타난다는 것입니다. 이는 잘못된 것처럼 보이고 느껴질 수 있습니다. 당신이 자리를 비울 때 당신이 무엇을 하고 있는지 다른 사람이 보는 것을 원하지 않는다면 바람직하지 않습니다.

이제 최신 Xubuntu 및 XFCE 4.12를 설치했을 때 (위에서 설명한 첫 번째 문제 외에) 또 다른 문제가 발생합니다. 화면이 전혀 잠기지 않거나 화면이 두 번 잠깁니다(그래서 다음과 같이 입력해야 합니다). 내 비밀번호를 두 번 잠금 해제하세요)

첫 번째 문제는 여러 차례 논의됐지만 아직까지 누구도 해결책을 찾지 못한 것 같습니다.

그런데 어제 우연히 다음과 같은 사실을 발견했습니다.

시작 화면 보호기를 호출 xscreensaver-command -lock하고 화면을 잠그고 올바른 방법으로 수행하십시오. 이 방법으로 시작하면 화면 보호기가 사라질 때 바탕 화면이 노출되지 않습니다.

그래서 내가 원해데스크탑 환경/디스플레이 관리자 기본 화면 보호기/잠금 화면 관리 기능을 비활성화하고내가 떠날 때 정의한 명령을 실행합니다., 그것은 간단하고 매우 "유닉스 방식"입니다. 이것이 어떻게 달성될 수 있습니까?

답변1

내가 염두에 두고 있는 접근 방식은 유휴 시간을 확인하고 아직 실행되고 있지 않은 경우 잠금 명령을 실행하는 무한 루프 bash 스크립트입니다. 이것은 클라이언트/서버 모델이기 때문에 xscreensaver에서는 작동하지 않지만 질문에 "사용자 정의 명령"을 언급했기 때문에 매우 간단한 화면 잠금 장치 slock을 자유롭게 사용할 수 있었습니다.

이 작업을 수행하려면 두 개의 패키지를 설치해야 합니다. xprintidle그리고 slock. 둘 다 아파트에서 찾을 수 있습니다.

다음 스크립트를 어딘가에 배치하고 실행 가능하게 만듭니다. 필요에 따라 LOCK을 조정합니다. 600000 = 10분.

#!/bin/sh
DISPLAY=":0"
# in ms
LOCK=600000
while :
do
  IDLE=$(xprintidle)
  if [ $IDLE -gt $LOCK ]; then
    slock
  fi
  sleep 1
done

이 아치 위키에 따르면https://wiki.archlinux.org/index.php/Xfce#Startup_applications다음과 같이 시작에 스크립트를 추가할 수 있습니다.

Xfce가 시작될 때 사용자 정의 응용 프로그램을 시작하려면 응용 프로그램 메뉴 설정 > 설정 관리자를 클릭한 다음 세션 및 시작 옵션을 선택하고 응용 프로그램 자동 시작 탭을 클릭하십시오. 시작 시 실행되는 프로그램 목록이 표시됩니다. 항목을 추가하려면 추가 버튼을 클릭하고 실행하려는 실행 파일의 경로를 지정하여 양식을 작성합니다.

물론 xscreensaver가 비활성화되어 있는지 확인해야 합니다.

편집: 처음에는 백그라운드에서 slock을 실행하고 pgrep을 사용하여 프로세스가 실행 중인지 확인했습니다. 나는 이것이 불필요하다는 것을 알고 있으며 slock이 차단 프로세스가 되도록 허용합니다. 그에 따라 변경되었습니다.

관련 정보