4 щелчка для выключения Ubuntu - можем ли мы уменьшить это?

Ubuntu 20.04 решила, что нам нужно 4 щелчка для выключения:

  1. Нажмите в правом верхнем углу экрана стрелка вниз
  2. Разверните «power off / logout» панель
  3. Нажмите «Выключить»
  4. Подтвердите, что хотите отключить питание, выбрав «Отключение от перезагрузки» и т. д.

Давайте отключим по крайней мере 2 щелчка здесь ... как?

ОБНОВЛЕНИЕ: Это " «Lounge PC» - управляется мышью (нет кнопки питания в пределах досягаемости, когда ноутбук закрыт). Мы смотрим фильм, хотим щелкнуть по кнопке «Завершение работы» и не вводить команды.

43
задан 8 June 2020 в 10:00

9 ответов

Уменьшить двумя щелчками

Вариант 1 ) Установить кнопку отключения питания на верхней панели расширение от Darknico. Он добавляет отдельную кнопку питания в правой части верхней панели.

Вариант 2 ) Создайте «обычный» модуль запуска для «Выключения» (с помощью pomsky). Либо:

  • Прикрепите этот модуль запуска к док-станции.
  • Прикрепите этот модуль запуска к верхней панели, используя расширение Frippery Panel Favorites .

Вы можете уменьшить еще один щелчок, заменив команду в панели запуска «poweroff». Затем один щелчок на панели запуска немедленно выключит машину без диалогового окна подтверждения.

Уменьшить одним щелчком мыши

Вариант 3 ) Использовать расширение Вызов подменю кнопки выключения / выхода из системы с помощью Pratap или Меню простого отключения с помощью K3rcus. Эти расширения переносят элементы в подменю «Выключение / Выход из системы» непосредственно в системное меню, позволяя получить к ним доступ одним щелчком мыши.

22
ответ дан 19 June 2020 в 21:29

Вы можете легко сделать это за 2 клика:

  1. Открыть настройки
  2. Перейти к «Питание»
  3. Измените раскрывающийся список «Действие кнопки питания» на «Выключение»

. Теперь нажмите физическую кнопку питания на вашем устройстве и затем выберите отключение питания из приглашения - это 2 щелчка (1, если вы не считаете нажатие кнопки питания). как щелчок).

32
ответ дан 19 June 2020 в 21:29

Уменьшение до 1 "щелчка" (технически нажатие кнопки):

По умолчанию Ubuntu выключается при нажатии кнопки питания.

Затем подождите 60 секунд, пока устройство выключится, вместо повторного щелчка.

17
ответ дан 19 June 2020 в 21:29

Ответ равен 0.

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

Если вы хотите написать собственную команду, запустите терминал и наберите:

sudo shutdown -h +30

+30 (минут), например. Измените его так, как долго вы хотите оставаться в сети. И если вы хотите, чтобы машина отключалась в определенное время, попробуйте:

sudo shutdown -h 20:30

(время гипотетическое, измените его на то, что вы хотите).

Примечание: Без переключателя -h или -r это недопустимая команда.

6
ответ дан 19 June 2020 в 21:29

0 щелчков, несколько щелчков.

Альтернативное решение, которое не не требуется мышь (только клавиатура):

  1. Нажмите и удерживайте Ctrl + ALT + t

Это откроет окно терминала.

  1. Тип "выключить" затем нажмите клавишу Enter .
3
ответ дан 19 June 2020 в 21:29

в терминале , отключение сейчас , добьются цели для меня

0
ответ дан 19 June 2020 в 21:29

Keyboard shortkey screenshot

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

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

Вы можете уменьшить его и сделать его похожим на Super + P или что-то в этом роде если вы достаточно осторожны.

6
ответ дан 19 June 2020 в 21:29

0-щелчков, пульт от телевизора выключает ноутбук одновременно с телевизором

с питанием от телевизора (телевизор управляет питанием компьютера) является прямым сценарий forward bash, созданный на основе технических статей, широко доступных в Интернете.

Обратите внимание, что этот работает только с телевизорами Sony Bravia . Конечно, вы, вероятно, могли бы исправить код для разных телевизоров в короткие сроки, поскольку для написания с нуля потребовалось всего несколько часов. У меня также есть обычный телевизор Toshiba 4K под управлением Amazon Fire OS, и, возможно, я захочу посмотреть для него версию сценария. Кроме того, если у вас телевизор другой марки, вам придется провести собственное исследование, кодирование и, самое главное, тестирование.


Обзор

Когда телевизор выключается, это tvpowered автоматически приостанавливает работу портативного компьютера или выключает его. Измените значение переменной $ SCTL (расположенной вверху скрипта) между приостановкой или отключением питания.

tvpowered можно запустить как sudo во время загрузки, но это не было проверено. Он должен запускаться как обычный пользователь и вызываться в Startup Applications.

Программа проста:

  1. Дождитесь включения телевизора.
  2. Начать полностью активную операцию.
  3. Проверьте, выключен ли телевизор. Если выключен, перейдите к шагу 5.
  4. Перейдите в спящий режим на 3 секунды и повторите шаг 3.
  5. Приостановка или отключение системы при выключении телевизора.
  6. При выходе из режима ожидания вернитесь к шагу 1.

Между этими шагами на рабочем столе появляются всплывающие всплывающие сообщения, которые также записываются в journalctl :

$ journalctl -xe | grep tvpower

Jun 11 18:11:20 tvpowered[27398]: TV is powered on. 'tvpowered' is now waiting for TV to power off.
Jun 11 18:11:47 tvpowered[28229]: TV Powered off. 'systemctl suspend' being called.
Jun 11 18:11:47 tvpowered[28238]: System powered back up. Checking if TV powered on. './tvpowered'.
Jun 11 18:12:26 tvpowered[31672]: TV is powered on. 'tvpowered' is now waiting for TV to power off.

tvpowered скрипт

Скопируйте и вставьте скрипт в файл на вашем компьютере и пометьте его как исполняемый с помощью:

chmod a+x /path/to/tvpowered

Где / path / to / - это имя каталога, в котором вы создали файл.

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

В приведенном ниже скрипте вам нужно будет установить несколько констант:

SCTL=suspend        # systemctl paramater: suspend or poweroff
IP=192.168.0.16     # IP address for Sony TV
PWRD=123            # Password for Sony TV IP Connect

Оставьте комментарий, если у вас есть какие-либо вопросы!

# NAME: tvpowered
# DESC: When TV is powered off automatically suspend the laptop.
# DATE: June 9, 2020. Modified June 11, 2020
#
# NOTE: Written for Ask Ubuntu question:
#       https://askubuntu.com/questions/1247484/
#       4-clicks-to-shut-down-ubuntu-can-we-reduce-this

# UPDT: Jun 10 2020: Change name from 'slave2tv' to 'tvpowered'. Abandon 
#       i2c, drm, i915, nvidia, xrandr, etc to see if monitor turned off. Setup
#       WiFi on TV instead and use Sony REST API to communicate TV status.

#       Jun 11 2020: Add pop-up bubble status messages. Add dependencies.
#       Add TenMinuteSpam. Add WaitUserSignOn. Add $SCTL constant. Convert
#       in-line code to mainline format.

# Credits:
# https://gist.github.com/kalleth/e10e8f3b8b7cb1bac21463b0073a65fb#cec-sonycec
# https://pro-bravia.sony.net/develop/integrate/rest-api/spec/service/audio/v1_0/setAudioVolume/index.html
# https://developer.sony.com/develop/audio-control-api/get-started/http-example#tutorial-step-2
# https://en.wikipedia.org/wiki/CURL
# https://stackoverflow.com/questions/7172784/how-do-i-post-json-data-with-curl
# https://stackoverflow.com/questions/2829613/how-do-you-tell-if-a-string-contains-another-string-in-posix-sh

SCTL=suspend        # systemctl paramater: suspend or poweroff
IP=192.168.0.16     # IP address for Sony TV
PWRD=123            # Password for Sony TV IP Connect (Pre-Shared key)

# Must have curl package.
command -v curl >/dev/null 2>&1 || { echo >&2 \
        "'curl' package required but it is not installed.  Aborting."; \
        exit 2; }

# Must have notify-send from libnotify-bin package
command -v notify-send >/dev/null 2>&1 || { echo >&2 \
        "libnotify-bin package required but it is not installed.  Aborting."; \
        exit 3; }

cURLit () {

    # $1 = JSON String in pretty format converted to file for cURL --data.
    # $2 = Sony subsystem to talk to, eg accessControl, audio, system, etc.
    # 3  = variable name to receive reply from TV

    local TEMP Result ReturnState

    # Declare mathres as reference to argument 3 provided (Bash 4.3 or greater)
    declare -n Result=$3

    # Create temporary file in RAM for curl command
    TEMP=$(mktemp --tmpdir json.XXXXXXXX)
    echo "$1" > "$TEMP"

    # -s = silent
    Result=$(curl -s -H "Content-Type: application/json; charset=UTF-8" \
             -H "X-Auth-PSK: $PWRD" \
             --data @"$TEMP" \
             http://$IP/sony/"$2")
#echo "Result: $Result"    # Remove leading # for debugging
    ReturnState="$?"
    # TO-DO: check $? and if non-zero pop up dialog with $TEMP contents
    rm "$TEMP"

} # cURLit

GetPowerStatus () {

    local Reply ReturnState

    # Copy and paste JSON strings from Sony website: 
    # https://pro-bravia.sony.net/develop/integrate/rest-api/spec/service/system/v1_0/getPowerStatus/index.html
    JSONstr='{
                "method": "getPowerStatus",
                "id": 50,
                "params": [],
                "version": "1.0"
             }'

    cURLit "$JSONstr" "system" Reply    # No $ for Reply variable! pass pointer
    ReturnState="$?"

#echo "Reply: $Reply"    # Remove leading # for debugging
    # Reply: {"result":[{"status":"active"}],"id":50}
    #    or: {"result":[{"status":"standby"}],"id":50}

    # Does 'active' substring exist in TV's reply?
    [[ "${Reply#*active}" != "$Reply" ]] && return 0

    # TV is turned off
    # Might want timer tests to make sure we aren't repeatedly turning off
    return 1

} # GetPowerStatus

log () {
    logger --id=$$ -t "tvpowered" "$1"
} # log

WaitForSignOn () {

    # tvpowered might be loaded during boot. The user name is required
    # for sending popup bubble messages and dialogs to screen. We must
    # wait until user signs on to get .Xauthority file settings.

    # code lifted from eyesome.sh
    SpamOn=10       # Causes 10 iterations of 2 second sleep
    SpamContext="Login"
    TotalWait=0

    # Wait for user to sign on then get Xserver access for xrandr calls
    UserName=""
    while [[ $UserName == "" ]]; do

        # Find UserName currently logged in.
        UserName="$(who -u | grep -F '(:0)' | head -n 1 | awk '{print $1}')"
        [[ $UserName != "" ]] && break

        sleep "$SpamLength"
        TotalWait=$(( TotalWait + SpamLength ))
    done

    if [[ $TotalWait != "0" ]] ; then
        log "Waited $TotalWait seconds for $UserName to login."
        xhost local:root
        export XAUTHORITY="/home/$UserName/.Xauthority"
    fi

} # WaitForSignOn

TenMinuteSpam () {

    # If TV not powered up Spam user for 10 minutes that 'tvpowered' is running
    # and will shut down / suspend system

    WaitForSignOn   # Might be called by root during boot before user signed on.

    Cnt=0
    while : ; do
        GetPowerStatus
        if [[ "$?" == "0" ]] ; then
            log "TV is powered on. 'tvpowered' is now waiting for TV to power off."
            break
        else
            # Spam user every 60 seconds
            (( $(( Cnt % 20 )) == 0 )) && \
                notify-send --urgency=critical "tvpowered" \
                    --icon=/usr/share/icons/gnome/48x48/devices/display.png \
                    "TV was powered off.\n Checking TV power state again..."
        fi
        sleep 3
        (( Cnt++ ))
    done

    notify-send --urgency=critical "tvpowered" \
        --icon=/usr/share/icons/gnome/48x48/devices/display.png \
        "Fully activated.\n System will $SCTL when TV powered off."

    return 0
} # TenMinuteSpam

###################################
#            MAINLINE             #
###################################

Main () {

    echo "$0: Initialization. Ensuring TV is powered on before starting."
    TenMinuteSpam
    echo "$0: Fully activated. Waiting for TV to powered off and then $SCTL."

    while : ; do

        GetPowerStatus
        if [[ "$?" != "0" ]] ; then
            log "TV Powered off. 'systemctl $SCTL' being called."
            systemctl "$SCTL"
            log "System powered back up. Checking if TV powered on. '$0'."
            sleep 10 #  Give system time to wake from suspend
            TenMinuteSpam
        fi

        sleep 3

    done

    exit 0

} # Main

Main "$@"

Резюме

Меня вдохновил вопрос OP, и я никогда не осознавал, насколько громоздким и трудоемким был мой процесс. В конце ночи я также смотрю телевизор и расслабляюсь после дня перед сном. Когда пришло время приостановить работу ноутбука, я хочу спать, но мне все еще нужно:

  1. Найти, где находится курсор на одном из трех мониторов.
  2. Перейдите в верхний правый угол любого монитора и щелкните левой кнопкой мыши Cog menu
  3. Вытяните мышь вниз, чтобы приостановить
  4. Нажмите кнопку «Приостановить» (будьте осторожны, чтобы не нажать кнопку «Завершить» рядом с ним!)
  5. Выключить HD TV
  6. Выключить 4K TV

tvpowered устранило трудоемкие шаги с 1 по 4. Быстрое нажатие кнопок питания на двух пультах дистанционного управления телевизора также предотвращает классическую проблему в Linux:

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

Наслаждайтесь

1
ответ дан 19 June 2020 в 21:29

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

Что я сделал, так это добавил простое расширение gnome под названием Gnome-Shutdown-Button. Вы можете найти тонну этих расширений по адресу: https://extensions.gnome.org/

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

0
ответ дан 19 June 2020 в 21:29

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

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