Как выключить экран в Ubuntu 17.10?

xset dpms force off не работает, вывод:

X Error of failed request:  BadMatch (invalid parameter attributes)
  Major opcode of failed request:  147 (DPMS)
  Minor opcode of failed request:  6 (DPMSForceLevel)
  Serial number of failed request:  12
  Current serial number in output stream:  14

У меня есть два монитора, на которых есть кнопки питания, с настройками управления питанием по умолчанию. Однако было бы удобно нажать одну комбинацию клавиш с помощью команды.

Я почти уверен, что использую Gnome и читаю, что xset не работает с Gnome.

В качестве альтернативного решения я просто изменю время ожидания экрана на 1 минуту.

Связанный:

3
задан 22 March 2018 в 14:25

5 ответов

Этот скрипт работает на моем Ubuntu 17.10

#!/bin/bash

busctl --user set-property org.gnome.Mutter.DisplayConfig /org/gnome/Mutter/DisplayConfig org.gnome.Mutter.DisplayConfig PowerSaveMode i 1
read -n 1 -s -r -p "Press any key continue"
busctl --user set-property org.gnome.Mutter.DisplayConfig /org/gnome/Mutter/DisplayConfig org.gnome.Mutter.DisplayConfig PowerSaveMode i 0
2
ответ дан 22 March 2018 в 14:25

Ubuntu 17.10 запускает сеанс Wayland по умолчанию, щелкните значок шестеренки при входе в систему и выберите сеанс Xorg, если вам нужны такие команды, как xset. Общее правило состоит в том, что команды, начинающиеся с x, выполняются только в Xorg. Насколько я знаю, Wayland пока не дает возможности выключить экран. Это может очень хорошо измениться в будущем.

1
ответ дан 22 March 2018 в 14:25

Обновление 23 марта 2018 года: в качестве альтернативы вы можете установить кнопку питания для приостановки, а не выключения. 24 марта: однако, если вы приостановите его, выполнение всех процессов будет остановлено, что может быть нежелательно.

Я ввел следующие команды, сделанные @Gonki, в файл turnthescreenoff.sh, который я сохранил в своем домашнем каталоге, а затем ввел bash /home/james/turnthescreenoff.sh в качестве сочетания клавиш.

#!/bin/bash

busctl --user set-property org.gnome.Mutter.DisplayConfig /org/gnome/Mutter/DisplayConfig org.gnome.Mutter.DisplayConfig PowerSaveMode i 1
read -n 1 -s -r -p "Press any key continue"
busctl --user set-property org.gnome.Mutter.DisplayConfig /org/gnome/Mutter/DisplayConfig org.gnome.Mutter.DisplayConfig PowerSaveMode i 0
0
ответ дан 22 March 2018 в 14:25

Я черпал вдохновение из ответов Гонки и Джеймса Рэя и написал версию (на питоне), которая работает без оболочки:

#! /usr/bin/python3
import subprocess

template = ('busctl --user {what}-property org.gnome.Mutter.DisplayConfig '
            '/org/gnome/Mutter/DisplayConfig org.gnome.Mutter.DisplayConfig '
            'PowerSaveMode')

current = subprocess.check_output(template.format(what='get').split()).strip()
try:
    if current == b'i 0':
        subprocess.call(template.format(what='set').split() + ['i', '1'])
    else:
        subprocess.call(template.format(what='set').split() + ['i', '0'])
except:
    # If anything goes wrong, turn on the light:
    subprocess.call(template.format(what='set').split() + ['i', '0'])

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

0
ответ дан 5 February 2020 в 18:19

Вот скрипт в bash, похожий на ответ Пьетро Баттистона (я бы предпочел добавить комментарий, но не могу):

#!/bin/bash
p="org.gnome.Mutter.DisplayConfig /org/gnome/Mutter/DisplayConfig org.gnome.Mutter.DisplayConfig PowerSaveMode"

[ $(busctl --user get-property $p | cut -d ' ' -f 2) -eq 1 ] && s=0 || s=1

busctl --user set-property $p i $s

Каждый вызов скрипта включает или выключает экран .

0
ответ дан 6 November 2020 в 21:38

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

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