Активировать дисплей через консоль tty?

У меня есть собственный скрипт xrandr, который включает мои внешние мониторы и отключает монитор моего ноутбука. Когда я отсоединяю свой внешний монитор, я не могу включить монитор, потому что мой экран пуст.

Я бы хотел иметь доступ к моей консоли tty (ctrl-alt-f1) и запускать xrandr (т. Е. xrandr --output eDP1 --auto). Запуск этого в моем tty говорит "Не могу открыть дисплей". Какие-нибудь советы, как мне это сделать?

1
задан 26 March 2016 в 00:38

1 ответ

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

Выберите System Settings> Keyboard> Shortcuts> Custom Shortcuts, нажмите + и добавьте команду к ярлыку по Вашему выбору:

xrandr --output <screenname> --auto

Просто протестированный это в моей системе (ноутбук, 15.10); выключенный мой экран и успешно пере - включил его с сочетанием клавиш, выполнив команду :)

Кроме того,

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

#!/usr/bin/env python3
import subprocess
import time
# --- set your internal screen below (the example is my primary screen)
internal = "DVI-I-1"
#---

# don't change anything below
scr_info1 = 0

while True:
    time.sleep(4)
    # read the current screen setup from xrandr
    get_screens = subprocess.check_output("xrandr").decode("utf-8").splitlines()
    scr_data = [l for l in get_screens if " connected " in l]
    # count the number of connected screens
    scr_info2  = len(scr_data)
    # if the number of connected screens changes, 
    # switch off the internal one if there are two screens
    if scr_info2 != scr_info1:
        if scr_info2 == 2:
            ext = [s.split()[0] for s in scr_data if not internal in s][0]
            subprocess.Popen(["xrandr", "--output", internal, "--off", "--output", ext, "--auto"])
        else:
            subprocess.Popen(["xrandr", "--output", internal, "--auto"])

    scr_info1 = scr_info2

Как установить

  1. Скопируйте сценарий выше в пустой файл, сохраните его как switch_screens.py
  2. В главном разделе Вашего сценария, определенного имя Вашего внутреннего экрана. Для обнаружения откройте окно терминала и выполните команду xrandr (никакой внешний соединенный экран), строка со "связанным" в нем показывает название Вашего экрана в первой строке, будучи похож: VGA-1 или что-то как этот.
  3. Тестовый прогон это путем открытия окна терминала и typ команда:

    python3 /path/to/switch_screens.py
    

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

  4. Если все хорошо работает, добавьте команду ниже для Запущения Приложений: откройте Dash> Startup Applications> Add. Добавьте команду:

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

Выйдите из системы и въезжайте задним ходом. Теперь Ваш внутренний экран выключен автоматически, если внешний экран соединен, пере - включение его, если Вы разъединяетесь.

Сценарий не добавляет значимой нагрузки вообще для Вашей системы.

1
ответ дан 26 March 2016 в 10:38

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

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