Выключайте внешний монитор, когда не активны

На прошлой неделе я добавил внешний монитор в свой ноутбук, и почти все работает так, как я хочу, за исключением поведения «Яркость и блокировка».

У меня давно установлен этот параметр «Выключать экран, когда он неактивен на: 5 минут», и он работает как брелок для экрана ноутбука - как до, так и после добавления внешнего монитора. Но это не работает на внешнем мониторе. Когда я нахожусь за столом дольше, чем планировал, я возвращаюсь к черному экрану ноутбука, заблокированному экрану и входу в систему на внешнем мониторе.

Эта проблема похожа на на этот вопрос , но в этом случае кажется, что это основной монитор, который не становится черным. Вот почему я публикую это как отдельный вопрос.

Да, я знаю, что могу выключить питание монитора, и я делаю это ночью, но я бы хотел, чтобы он стал черным синхронно с родным экраном, если это возможно.

Я на 14.04. Монитор подключен через HDMI. Ноутбук - это VAIO с небольшим возрастом.

ПОСЛЕДУЮЩЕЕ РЕДАКТИРОВАНИЕ

В качестве продолжения, когда я тестировал скрипт bash в принятом ответе, я установил малое время ожидания, запустил скрипт из терминала, посмотрел оба монитора потемнели до черного, а затем приняли ответ. Впоследствии я фактически добавил сценарий (с переустановленным таймаутом) в свои сценарии запуска и сбросил мой компьютер.

После моего первого более долгого отсутствия, представьте себе мое удивление, когда я вернулся к своему столу и обнаружил, что мой внешний монитор ярко светит!

Последующие исследования показали, что это, вероятно, вызвано сам монитор HDMI, и ни один скрипт не собирается это исправить. В самом деле, я (случайно) был за столом, когда включился этот сценарий. Оба монитора погасли, как и должны, и примерно через минуту внешний монитор снова включился. : - (

Ну хорошо. Я пытался.

1
задан 13 April 2017 в 15:23

1 ответ

Я подозреваю, что проблемой является результат ошибки, так как я не могу найти другую причину. По крайней мере, как обходное решение фоновый сценарий ниже мог использоваться.

Сценарий делает задание в моей системе, но необходимо будет попытаться видеть. Если это не работает над Вашей системой, мы можем переключиться на xrandr к конкретно переключателю на монитор, но это - самая простая опция.

Ресурсы?

О ресурсах Вы не должны волноваться, проверки сценария однажды в десять секунд, если время простоя превышено. Даже если я делаю его 10 раз в секунду, загрузка не практически ни один.

#!/usr/bin/env python3
import subprocess
import time

t = 300

scr = True
while True:
    time.sleep(10)
    idle = int(subprocess.check_output("xprintidle").decode("utf-8").strip())/1000
    if idle > t and scr == True:
        subprocess.Popen(["xset", "dpms", "force", "off"])
        scr = False
    elif idle < t and scr == False:
        subprocess.Popen(["xset", "dpms", "force", "on"])
        scr = True

Как использовать

  1. Потребности сценария xprintidle:

    sudo apt-get install xprintidle
    
  2. Скопируйте сценарий в пустой файл, сохраните его как switchoff.py

  3. В заголовке сценария, набор время простоя (в секундах) в строке:

    t = 300
    
  4. Выключите свой "нормальный" switch-off-screen-after-x idletime - настройки

  5. Запустите скрипт с командой:

    python3 /path/to/switchoff.py
    
  6. Если все хорошо работает, добавьте его для Запущения Приложений: Тире> Приложения Запуска> Добавляет.

    Добавьте команду:

    /bin/bash -c "sleep 15 &&  python3 /path/to/switchoff.py"
    

Править

Согласно просьбе в комментарии, ниже версии удара того же сценария. Необходимо было бы все еще установить xprintidle все же.

#!/bin/bash

# --- set the idle time in seconds below
let "t = 300"
# ---

let "div = 1000"
t=$(($t * $div))
scr=true

while true
do
  sleep 10
  let "idle = "$(xprintidle)""
  if  [ "$idle" -gt "$t" ] && [ "$scr" = true ] 
  then
    scr=false
    xset dpms force off
  elif [ "$idle" -lt "$t" ] && [ "$scr" = false ] 
  then
    xset dpms force on
    scr=true
  fi
done

Примечание:

  • Так как мы не знаем то, что вызывает поведение в Вашей системе, мы все еще должны узнать, необходимо ли конкретно выключить Ваши экраны на экран xrandr. Необходимо было бы попробовать.
2
ответ дан 14 April 2017 в 01:23
  • 1
    это - сетевая проблема. две системы могут быть присвоены с тем же IP, из-за этого connection refused Вы добираетесь для сервера от того, где это может соединиться. – Bidyut 7 September 2017 в 19:20

Другие вопросы по тегам:

Похожие вопросы: