일정 기간 동안 활동이 없으면 대화 상자 표시

일정 기간 동안 활동이 없으면 대화 상자 표시

곧 전체 컴퓨터실(약 50대 PC)을 Windows 7에서 Ubuntu 14.04 LTS로 마이그레이션해야 할 예정입니다. 대학이므로 99%(100%는 아니더라도) 학생들이 사용하게 됩니다. 사용자 계정 및 자격 증명에 대한 중앙 데이터베이스가 없으므로 각 PC에는 두 개의 계정만 있으며 admin후자 guest는 자동 로그인으로 구성됩니다(다음에 따라 일부 사용자 정의 제외).이 튜토리얼).

PC가 켜지고 게스트 계정이 자동으로 로그인되면 창 관리자가 로드된 후 가장 먼저 표시되는 것은 다음 대화 상자입니다.

여기에 이미지 설명을 입력하세요

그러나 두 가지 문제가 있습니다.

  1. 오전 9시에 컴퓨터 앞에 앉은 첫 번째 사람은 대화 상자를 보고 확인을 클릭하고 PC를 사용하고 떠나고 세션을 종료하지 않거나 화면을 잠그지 않고(사용자 때문에) 두 번째 사용자 이후에는 메시지를 볼 수 없습니다.
  2. 랩 사용자에게 전달하고 싶은 관련 정보(랩 규칙 등)가 더 있습니다.

따라서 이 시나리오를 염두에 두고 제가 달성하고자 하는 것은 컴퓨터가 15분 동안 사용되지 않을 때마다 팝업되도록 이와 매우 유사한(그러나 제가 설정한 다른 텍스트가 포함된) 대화 상자를 만드는 것입니다. (이 질문의 목적에 따라 "사용되지 않음"은 키보드나 마우스 활동이 없음을 의미한다고 가정하겠습니다.)

나는 지시를 받았습니다 우분투는 일시 중단하기 전에 비활성 상태를 어떻게 결정합니까? 그리고 스크립트는 사용자의 유휴 시간을 어떻게 감지할 수 있나요? Ruby 또는 sheel 스크립트를 사용하지만 코딩 방법을 모르겠습니다.

필요한 것을 달성하는 더 간단한 방법이 있습니까?

답변1

사용xautolock

xautolock -time 15 -locker notify-send -t time "Title" "message_here" -i "path/to/icon"

또는 zenity 또는 원하는 대화 상자를 사용하세요.

보다http://manpages.ubuntu.com/manpages/trusty/man1/xautolock.1.html

편집: 질문을 편집한 후 OP는 zenity와 함께 진행되었습니다.

xautolock -time 15 -locker "zenity --text='<text here>' --warning"

답변2

다음 스크립트를 백그라운드에서 실행하면 5초마다 유휴 시간을 확인합니다. 유휴 시간이 지정된 시간(분)을 초과하면 텍스트 파일에 정의된 메시지가 나타납니다. (Zenity 창을 통해)

#!/usr/bin/env python3

import subprocess
import time
#########################################
t=15
textfile = "/path/to/message_textfile"
#########################################

with open(textfile, "r") as text:
    message = text.read()

while 1!=0:
    get_idle = subprocess.Popen(["xprintidle"], stdout=subprocess.PIPE)
    result = get_idle.communicate()[0].decode("utf-8")
    if int(result)/60000>t:
        if warning_given == "yes":
            pass
        else:   
            subprocess.Popen(["zenity", "--warning",  "--no-wrap", "--text="+message,  ])
            warning_given = "yes"
    else:
        warning_given = "no"

    time.sleep(5)

여기에 이미지 설명을 입력하세요

사용하는 방법

  • 설치하다 xprintidle:

    sudo apt-get install xprintidle
    
  • 스크립트를 빈 파일에 복사하고 유휴 시간( t)을 분 단위로 설정하고 메시지 텍스트가 포함된 텍스트 파일의 경로를 설정합니다. 다른 이름으로 저장set_warning.py

  • 명령으로 실행하세요.

    python3 /path/to/set_warning.py
    

노트

  • 편의상의 이유로(그리고 텍스트 레이아웃을 제어하기 위해) 텍스트는 외부 텍스트 파일에서 가져옵니다. 반품 등은 텍스트 파일에서 메시지로 정확하게 복사됩니다. --no-wrapzenity의 옵션을 사용 하므로 필요그렇지 않으면 귀하의 메시지가 지나치게 광범위해질 것입니다.
  • 메시지가 나타나는 방식은 다른 zenity 옵션을 사용하여 "조정"할 수 있습니다.

답변3

내가 한 일은 다음과 같습니다.

xautolock -time 15 -locker "zenity --text='<text here>' --warning"

소프트 링크된 계정의 세션 앱에 해당 줄을 항목으로 추가하여 /etc/guest-session/skel게스트 세션이 시작될 때마다 실행됩니다.

관련 정보