
Unity와 함께 Ubuntu 16.04를 실행하고 싶습니다.
- 노트북을 5분 동안 손대지 않은 채로 두면 화면을 꺼주세요
활동이 없어 화면을 끈 후 1분 후에 화면을 잠급니다.
노트북 덮개를 닫을 때 즉시 화면을 잠그지 말고 덮개가 여전히 열려 있는 것처럼 행동하고 5+1분(또는 유사) 후에 잠깁니다.
~ 안에시스템 설정 → 밝기 및 잠금, 설정된 경우잠그다적절한 시간(1분)을 설정 하고 ON비활성화하면 화면이 꺼진 후 그에 따라 화면이 잠깁니다. 그러나 뚜껑을 닫으면 즉시 화면이 잠기는데, 이는 원하지 않습니다.
이를 설정하면 OFF덮개를 닫을 때 화면이 잠기지 않고, 활동이 없을 때 화면을 끈 후에도 잠금 해제된 상태로 유지됩니다.
나는 이미 dconf에서 "lid-close-actions"를 "nothing"으로 설정했습니다.
$ gsettings get org.gnome.settings-daemon.plugins.power lid-close-ac-action
'nothing'
$ gsettings get org.gnome.settings-daemon.plugins.power lid-close-battery-action
'nothing'
뚜껑 위치에 관계없이 특정 시간 동안 사용자 활동이 없을 때만 Ubuntu가 화면을 잠그도록 하려면 어떻게 해야 합니까?
답변1
아래의 배경 스크립트는 설명하는 것과 거의 정확하게 일치합니다.
- x초 후에 화면 꺼줘
- y초 후에 화면 잠그기
스크립트
#!/usr/bin/env python3
import subprocess
import time
# set screen off after x seconds
off = 300
# lock screen after x seconds
lock = 360
# check idle every x seconds
res = 3
def get(cmd):
return subprocess.check_output(cmd).decode("utf-8").strip()
def test(t, threshold):
return int(t)/1000 < threshold
testoff1 = True
testlock1 = True
t1 = 0
while True:
time.sleep(res)
t2 = get("xprintidle")
testoff2 = test(t2, off); testlock2 = test(t2, lock)
if (testoff2, testoff1) == (False, True):
subprocess.Popen(["xset", "dpms", "force", "off"])
if (testlock2, testlock1) == (False, True):
subprocess.Popen(["gnome-screensaver-command", "-l"])
testoff1 = testoff2; testlock1 = testlock2
사용하는 방법
언급한 것처럼 기존 덮개 작업을 꺼야 합니다.
gsettings set org.gnome.settings-daemon.plugins.power lid-close-ac-action 'nothing'
그리고:
gsettings set org.gnome.settings-daemon.plugins.power lid-close-battery-action 'nothing'
게다가:
gsettings set org.gnome.desktop.screensaver lock-enabled false
그리고
gsettings set org.gnome.desktop.session idle-delay 0
이제 우리는 우리 자신의 절차를 처리하기 때문입니다.
그 다음에:
스크립트는 를 사용하여
xprintidle
유휴 시간을 확인합니다.sudo apt-get install xprintidle
- 스크립트를 빈 파일에 복사하고 다른 이름으로 저장하세요.
set_times.py
스크립트의 헤드 섹션에서 화면을 끄는 유휴 시간(초)을 설정합니다.
# set screen off after x seconds off = 300
화면을 잠그는 시간:
# lock screen after x seconds lock = 360
이 시간은 서로 독립적으로 설정되며 원하는 순서로 둘 다 설정할 수 있습니다(먼저 잠근 다음 끄거나 그 반대).
너~할 수 있다시간 "분해능"을 설정합니다. 유휴 시간이 확인되는 빈도입니다(따라서 설정 시간은 반올림됩니다).
# check idle every x seconds res = 3
하지만 너도 그럴 수도 있지
테스트 - 실행해 보세요:
python3 /path/to/set_times.py
모든 것이 제대로 작동하면 시작 응용 프로그램(Dash > 시작 응용 프로그램 > 추가)에 추가하세요. 다음 명령을 추가합니다.
python3 /path/to/set_times.py
개념에 대한 설명
- 이 명령은
xprintidle
현재 유휴 시간을 반환합니다(마우스나 키보드 입력 없음). - 그런 다음 스크립트는시간을 정하다다음보다 작습니다정의된 임계값, 상태를 몇 초 전과 비교합니다.
상태가 변경되면(True --> False) 모든 조치를 취할 수 있습니다. 이는 다음을 실행하여 두 화면 끄기 모두에 대해 수행됩니다.
xset dpms force off
잠금 화면 실행 중:
gnome-screensaver-command -l
노트
물론 화면을 끄고 잠그는 시간을 만들 수도 있습니다.인수다음을 사용하여 스크립트를 실행합니다.
#!/usr/bin/env python3 import subprocess import time import sys off = int(sys.argv[1]) if len(sys.argv) > 1 else 300 lock = int(sys.argv[2]) if len(sys.argv) > 2 else off + 60 # check idle every x seconds res = int(sys.argv[3]) if len(sys.argv) > 3 else 5 def get(cmd): return subprocess.check_output(cmd).decode("utf-8").strip() def test(t, threshold): return int(t)/1000 < threshold testoff1 = True testlock1 = True t1 = 0 while True: time.sleep(res) t2 = get("xprintidle") testoff2 = test(t2, off); testlock2 = test(t2, lock) if (testoff2, testoff1) == (False, True): subprocess.Popen(["xset", "dpms", "force", "off"]) if (testlock2, testlock1) == (False, True): subprocess.Popen(["gnome-screensaver-command", "-l"]) testoff1 = testoff2; testlock1 = testlock2
그런 다음 실행 중:
python3 /path/to/set_times.py 300 360
5분 후에 화면이 꺼지고 6분 후에 화면이 잠깁니다.
스크립트의 추가 부담은 0입니다.