둘 이상의 모니터가 함께 작동하는 동안 다음과 같은 명령을 실행하여 모니터 중 하나를 대기 / 일시 중단 상태로 전환하는 방법이 xset dpms force suspend
있습니까? 또는 xset dpms 100 0 0
다음 과 같은 목적을 위해 시간을 설정해야합니다 .
eDP1 (내 노트북)과 VGA1 (외부 모니터)이라는 두 개의 모니터가 서로 작동합니다.
직접 상호 작용하지 않으면 VGA1에서 영화를보고 있고 eDP1이 30 분 동안 아무것도하지 않는다고 가정하면 각각이 일시 중지 / 대기 모드로 전환되기를 원합니다.
xrandor --off --output eDP1
작업하기에 충분히 빠르지 않기 때문에 사용에 관심 이 없습니다.
마우스를 움직여 모니터를 빠르게 사용할 수 있도록 모니터를 작동시킬 수 있기를 바랍니다.
- 러닝 : Ubuntu 18.04
- 창 관리자 : OpenBox
답변
xset (및 실제로 X11)에서는 개별 모니터를 제어 할 수 없습니다
제목에서 알 수 있듯이, 그것은 이유로 수 없습니다 방법 xset
이 사용하는 X11 기능에 내장 인해. 우리는 소스 코드를 보면, xset
호출 DPMSForceLevel(dpy,DPMSModeSuspend)
( 라인 557 ), 디스플레이 변수 dpy
에서 오는 XOpenDisplay()
기능 ( 라인 203 ), 그것은 것입니다 정의 :
화면 및 입력 장치와 함께 서버를 디스플레이라고합니다.
즉, xset
개별 화면이 아닌 전체 디스플레이에 전체적으로 설정을 적용합니다. xset
작동 하려면 소스 코드 를 변경 해야합니다. DPMS 확장 자체는 대부분 개별 화면이 아닌 전체 디스플레이 만 호출하는 것처럼 보이므로 X11 라이브러리로 사용자 지정 코드를 작성할 수도 없습니다.
/sys
하위 시스템을 통해 해당 설정을 수동으로 제어 해도 작동하지 않는 것 같습니다.
$ sudo bash -c 'echo Off > /sys/class/drm/card0-VGA-1/dpms'
[sudo] password for admin:
bash: /sys/class/drm/card0-VGA-1/dpms: Permission denied
키 또는 마우스 이벤트가 발생할 때 화면도 DPMS 모드에서 빠져 나옵니다. 따라서 마우스를 움직이거나 키보드를 사용할 수 있다는 점을 고려하면 모니터가 DPMS 모드를 종료하게됩니다.
대체 해결 방법
최선의 대안 (및 실제로 물리적으로 작동하는 솔루션)은 xrandr
개별 “출력”을 제어하는데 사용될 수 있습니다. 특히,
xrandr --output VGA-1 -off
출력을 해제합니다. 예,이 솔루션은 충분히 빠르지 않기 때문에이 솔루션을 사용하고 싶지 않다고 언급했지만 지금까지는 최상의 솔루션입니다. 몇 가지 장점이 있습니다.
- 키 및 마우스 이벤트에 면역
- 독립적으로 outpus를 제어
xset
은 xrandr --output VGA-1 --brightness 0.1
, 비록 그것이 떨어져 나타나는 등의 방식으로 화면 색상 화됩니다 --brightness
디스플레이가 실제로 하드웨어 수준에서 흐리게되지 않도록, 소프트웨어 솔루션입니다 않으며 하드웨어 수준에서 꺼져 있습니다. 그러나 화면을 비우는 작업을 수행하며 키 / 마우스 이벤트에도 저항합니다.
나는 그놈 스크린 세이버의 포크 인 Mate와 Budgie 스크린 세이버의 소스 코드를 보았지만 소스 코드에 DPMS에 대한 언급이 없기 때문에 소프트웨어 솔루션 인 것처럼 보입니다.
답변
몇 년 동안 나는 뚜껑을 닫을 때 랩톱이 일시 중단되고 외부 모니터가 꺼 지도록 랩톱 설치를했습니다.
외부 모니터에서 90 분 동안 비디오를보고 랩톱 화면을 비 우려는 이유 때문에 “닫기 없음”으로 덮개 닫기 옵션을 변경했습니다.
- 이점 : 랩톱 덮개를 닫으면 모든 랩톱 창이 전체 화면 비디오 아래로 이동합니다.
- 이점 : 랩톱 덮개를 열면 창이 닫히고 더 이상 전체 화면 비디오 아래에 있지 않습니다.
- 단점 : 톱니 바 메뉴에 액세스하여 톱니 바퀴 메뉴에서 일시 중지를 선택하려면 동영상을 전체 화면이 아닌 화면으로 만들어야합니다.
- 장점 : 시스템이 외부 모니터의 메뉴에 의해 일시 중단 된 경우에도 노트북 덮개를 열면 시스템이 다시 시작됩니다.
외부 모니터에 DPMS를 사용하지 않지만 다음 xset q
명령으로 설정을 확인할 수 있습니다 .
$ xset q
Keyboard Control:
auto repeat: on key click percent: 0 LED mask: 00000002
XKB indicators:
00: Caps Lock: off 01: Num Lock: on 02: Scroll Lock: off
03: Compose: off 04: Kana: off 05: Sleep: off
06: Suspend: off 07: Mute: off 08: Misc: off
09: Mail: off 10: Charging: off 11: Shift Lock: off
12: Group 2: off 13: Mouse Keys: off
auto repeat delay: 500 repeat rate: 33
auto repeating keys: 00ffffffdffffbbf
fadfffefffedffff
9fffffffffffffff
fff7ffffffffffff
bell percent: 50 bell pitch: 400 bell duration: 100
Pointer Control:
acceleration: 5/1 threshold: 5
Screen Saver:
prefer blanking: yes allow exposures: yes
timeout: 0 cycle: 0
Colors:
default colormap: 0xb3 BlackPixel: 0x0 WhitePixel: 0xffffff
Font Path:
/usr/share/fonts/X11/misc,/usr/share/fonts/X11/Type1,built-ins
DPMS (Energy Star):
Standby: 0 Suspend: 0 Off: 0
DPMS is Disabled
다음 줄을 주목하십시오 :
Screen Saver:
prefer blanking: yes
- 당신은 아마 원할 것입니다
prefer blanking: no
다음 줄도 주목하십시오.
DPMS (Energy Star):
Standby: 0 Suspend: 0 Off: 0
DPMS is Disabled
- 당신은 아마 원할 것입니다
DPMS is enabled
으로 설정 모니터를Standby
원하는 경우.
다른 사용자가이 옵션을 사용하고 자세한 답변을 게시하기를 바랍니다.
답변
노트북을 간단히 닫는 것은 어떻습니까?
왜?
이 두 모니터는 하나의 디스플레이 영역이므로 하나를 끄면 화면 다시 그리기, 주 모니터로 이동하는 응용 프로그램 등과 같은 여러 가지 문제가 발생합니다.
(몇 년 전에 그 길을 갔고, 내가 원하는 것을하는 유일한 방법은 외부 모니터의 버튼을 누르거나 랩톱을 닫는 것입니다)
이 전원 설정을 gsettings set
다음 과 같이 설정하십시오 .
org.gnome.settings-daemon.plugins.power lid-close-suspend-with-external-monitor false
org.gnome.settings-daemon.plugins.power lid-close-ac-action 'nothing'
org.gnome.settings-daemon.plugins.power lid-close-battery-action 'nothing'
답변
임시 의견
- 영업 이익의 요청에, 나는 아래의 스크립트가 만든 해제 화면을 전환 에 의해
xrandr
. 더 긴 테스트에서 이것은 꽤 나빴습니다. 전원을 끄는 데 실패한 것은 아니지만 화면을 다시 활성화 할 때 화면 레이아웃이 완전히 엉망이되었습니다. 그러나 귀하의 경우에 효과가 있는지 확인하기 위해 게시 할 수는 있지만 제 조언은 사용하지 않는 것입니다.
스크립트에서 대신 밝기를 0으로 설정했습니다. - 마우스 위치 또는 활성 창의 위치에 따라 활성 모니터 를 정의해야하는지에 대한 논의가있었습니다 . 창이 없으면 후자는 작동하지 않습니다. 윈도우 자체가 없을 수도 있습니다 (데스크톱 자체는 제외). IMO는 이해하기 쉬운 유일한 옵션이며 모든 경우에 예측 가능한 방식으로 작동합니다. 마우스 위치로 활성 화면을 정의하는 것입니다. 또한 창 관리자가 새 창을 표시 할 위치를 결정하는 방식이기도합니다.
그렇다면이 버전에서 무엇을 변경 했습니까?
유휴 시간은 이제 기본적으로 키보드 및 마우스 활동으로 정의됩니다. 깨어나는 것도 어느 쪽이든에 의해 이루어집니다.
비활성 화면 자동 어둡게
동료 응답자들이 말했듯이 cli에서 화면을 개별적으로 끄는 것은 최선의 과제이며 옵션도 찾지 못했습니다.
내가 찾은 것은 x 시간 후에 마우스가있는 화면을 제외한 모든 화면 을 자동으로 어둡게 하는 방법 입니다.
우리는 간다
#!/usr/bin/env python3
import subprocess
import gi
gi.require_version("Gdk", "3.0")
from gi.repository import Gdk
import time
import sys
def get_idle():
try:
return int(subprocess.check_output("xprintidle")) / 1000
except subprocess.CalledProcessError:
return 0
def get_monitors():
screen = Gdk.Screen.get_default()
n_mons = display.get_n_monitors()
mons = [screen.get_monitor_plug_name(i) for i in range(n_mons)]
return mons
def set_mon_dimmed(mon, dim):
print(mon, dim)
val = "0.0" if dim else "1"
try:
subprocess.Popen(["xrandr", "--output", mon, "--brightness", val])
except subprocess.CalledProcessError:
print("oops")
def mousepos():
# find out mouse location
return Gdk.get_default_root_window().get_pointer()[1:3]
def get_currmonitor_atpos(x, y, display=None):
"""
fetch the current monitor (obj) at position. display is optional to save
fuel if it is already fetched elsewhere
"""
if not display:
display = Gdk.Display.get_default()
return display.get_monitor_at_point(x, y)
display = Gdk.Display.get_default()
wait = int(sys.argv[1])
elapsed = 0
# set intervals to check
res = 2
monitors = [m for m in get_monitors()]
for m in monitors:
set_mon_dimmed(m, False)
monrecord = {}
for m in monitors:
monrecord[m] = {"idle": 0, "dimmed": False}
display = Gdk.Display.get_default()
idle1 = 0
while True:
time.sleep(res)
curr_mousepos = mousepos()
activemon = get_currmonitor_atpos(
curr_mousepos[0], curr_mousepos[1]
).get_model()
idle2 = get_idle()
if idle2 < idle1:
monrecord[activemon]["idle"] = 0
if monrecord[activemon]["dimmed"]:
set_mon_dimmed(activemon, False)
monrecord[activemon]["dimmed"] = False
for m in monrecord.keys():
curr_idle = monrecord[m]["idle"]
print(m, curr_idle)
if all([
curr_idle > wait,
monrecord[m]["dimmed"] is not True,
m != activemon
]):
set_mon_dimmed(m, True)
monrecord[m]["dimmed"] = True
else:
if m != activemon:
monrecord[m]["idle"] = curr_idle + res
idle1 = idle2
설정 방법
설정은 간단합니다.
-
둘 다 설치
python3-gi
하고xprintidle
설치 했는지 확인하십시오sudo apt install python3-gi xprintidle
-
로 저장, 빈 파일로 위의 스크립트를 복사
dim_inactive
하고, 그것을 실행하기 -
다음 명령으로 실행하십시오.
/path/to/dim_inactive <idle_time_in_seconds>
예를 들면 :
/path/to/dim_inactive 120
2 분이 지나도 마우스가없는 모든 화면이 흐리게
추가 정보 / 설명
- 스크립트는 시작시 모든 화면을 나열합니다
- 모니터 당 유휴 시간 (2 개 이상) 일 경우 기록을 유지합니다 . x 초 동안 모니터에 액세스하지 않으면 마우스가있는 모니터 와 별도로 검은 색으로 표시됩니다 .
- 좋은 (그러나 나쁜) 전통에 따르면, Gnome은 계속해서 문제를 해결하고 API를 계속 변경합니다. 결과적으로이 스크립트를 19.04 이상에서 실행하면 사용되지 않는 몇 가지 경고가 표시됩니다. 동시에 PEP8에서는 깨지지 않습니다. 그럼에도 불구하고 최신 API로 업데이트됩니다.