Как прошить экран из командной строки

Есть ли способ прошить экран из командной строки? Я ищу тот же эффект, что и доступность для «мигания экрана при появлении звука предупреждения», но я не хочу его для каждого предупреждения.

Ответы (5)

Насколько мне известно, вы не можете воспроизвести это предупреждение, не включив эту опцию. Если вы включите эту опцию, вы можете вызвать вспышку из терминала, используя:

osascript -e "beep"

Однако, если вы не хотите включать эту опцию, вы можете использовать инвертирование цветов. Двойное использование параметра «Специальные возможности инвертирования цветов» приводит к миганию экрана, поэтому двойное нажатие сочетания клавиш ⌃⌥⌘8 вызовет вспышку:

#!/usr/bin/osascript
tell application "System Events" to repeat 2 times
key code 28 using {command down, control down, option down}
delay 0
end repeat
Интересно, может ли сценарий проверить, должна ли текущая настройка издавать звуковой сигнал или мигать, а затем при необходимости изменить настройку, вызвать «звуковой сигнал», а затем изменить настройку обратно (только если она внесла изменения?).
Похоже, этот другой ответ нашел еще лучшую реализацию моего комментария к коду выше. apple.stackexchange.com/a/288696/5472

Он не мигает на весь экран (если только ваш терминал не настроен на полноэкранный режим), но если вы перейдете Preferences > Settings > Advancedи выберите «Visual Bell», вы можете ввести:

echo ^G

(Нажатия клавиш для получения правильных символов: echo control+ v control+ g, потому что управляющий символ должен быть заключен в кавычки)

чтобы прошить окно терминала.

Хотя это работает, эффект очень тонкий в моем профиле терминала по умолчанию.
Другой вариант printf '\a'.

Это работает для меня в Sierra через applescript:

tell application "System Preferences"
    run
    reveal anchor "Hearing" of pane id "com.apple.preference.universalaccess"
end tell
tell application "System Events" to tell process "System Preferences" to click button "Test Screen Flash" of window "Accessibility" of application process "System Preferences" of application "System Events"
Очень элегантное решение. В другом ответе я предложил фактически изменить настройки (при необходимости), вызвать звуковой сигнал и изменить настройки обратно. это кажется намного лучше, чтобы получить одну вспышку.
@bmike Проблема в том, что для выполнения требуется несколько секунд, особенно если приложение не открыто первым, без сомнения, оно элегантно, кроме этого.
Действительно, @grgarside - для скорости здесь вам, вероятно, потребуется использовать python и привязки Objective-C для написания сценария того, что по сути является небольшим приложением какао, чтобы ускорить настройку или ускорить вызов функции.

Для других я нашел одну альтернативу — использовать инструмент командной строки яркости , доступный через homebrew (инструкции по его установке можно найти на http://brew.sh ). Ссылка на обсуждение: https://apple.stackexchange.com/a/127258/23876

Первая строка устанавливает яркость, вторая показывает, как выглядит яркость в действии.

brew install brightness
brightness 0; sleep 1; brightness 1

Но работает только на основном дисплее. Если эта форма переключения яркости слишком медленная для вас, поэкспериментируйте с режимом сна 0,3 или даже со режимом сна 0,1.

Вы также можете получить текущую яркость, чтобы не сбрасываться на 1:

setopt rematchpcre # needs zsh
if [[ "$(brightness -l)" =~ 'display 0: brightness (\S+)' ]]; then
    print -r -- "$match[1]"
else
    return 1
fi
что-то пропало ?
Чего не хватает @Buscar?
Я устал от этого, и он не работает на моем MBA 10.9.2 Ошибка -bash: яркость экрана: команда не найдена
@Buscar웃 Причина в том, что у вас на самом деле нет приложения под названием яркость экрана. Что вы можете сделать, так это установить Homebrew ( brew.sh ), а затем выполнить «варочную установку яркости», а затем запустить, например, «яркость 0; сон 1; яркость 1».

Это шеллскрипт, который для этого вызывает applescript (код нужно объяснить подробнее)

#!/usr/bin/osascript
tell application "System Events" to repeat 2 times
key code 28 using {command down, control down, option down}
delay 0
end repeat
Этот ответ точно такой же, как и другой ответ, шесть месяцев спустя.