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

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

  • Прежде всего, у меня Mac. Большинство решений, которые я нашел, когда гуглил эту проблему, были для машин Windows или Linux и не могли быть легко адаптированы к моей ситуации. Имитация щелчков мышью с помощью xdotools, например, является хорошим решением для Linux.
  • Во-вторых, я испробовал все распространенные решения в Teams, и ни одно из них мне не подошло. Я планировал встречи сам с собой, держал дисплей включенным и устанавливал статус «занят», но по какой-то причине желтый значок статуса всегда заменял любой красный статус «занято», который я пытался установить.
  • В-третьих, я не хотел загружать на свой рабочий компьютер какие-либо сторонние приложения. Такие приложения, как Caffeine For Mac, вероятно, сработали бы, но по соображениям безопасности мне нужно знать со 100% уверенностью, как работает приложение, прежде чем устанавливать его на свой компьютер.

Учитывая эти ограничения, я понял, что проще всего просто написать простой скрипт, который делает то, что я хочу. Варианты состояли в том, чтобы либо имитировать движение мыши, либо отправлять команды непосредственно в приложение. Мысль о симуляции движения мыши меня не привлекала, потому что я легко мог представить себе ситуацию, когда я случайно отправил своему генеральному директору кучу горячего мусора в результате случайных кликов мышью. Поэтому я решил вместо этого сосредоточиться на целевом приложении AppleScript, которое отправляет команды непосредственно в Teams, тем самым гарантируя, что ничего не произойдет. Хотя это может показаться сложным, на самом деле это очень просто, как вы скоро узнаете.

Обратите внимание, что это решение также должно работать для Slack. Все, что вам нужно сделать, это заменить «Microsoft Teams» на «Slack» на шаге 2 и выбрать клавиатурную команду в Slack, которая будет поддерживать ваш статус активным.

Шаг 1 — Откройте новый текстовый файл

Во-первых, вы хотите открыть новый файл с именем teams_script.sh в текстовом редакторе.

Шаг 2 — Скопируйте и вставьте скрипт

Затем скопируйте и вставьте следующий код в открытый файл:

#!/bin/bash
caffeinate -d &
while true;
do
    osascript -e 'tell application "Microsoft Teams" to activate'
    osascript -e 'tell application "System Events" to keystroke "2" using {command down}'
    echo "Teams Status Refreshed"
    sleep 300
done

Как работает этот сценарий, так это то, что строка #!/bin/bash объявляет его как сценарий Bash, затем команда caffeinate -d & запускает caffeinate в фоновом режиме, чтобы ваш компьютер не переходил в спящий режим, и, наконец, строки osascript -e используют AppleScript для активации Microsoft Teams (принесите на передний план) и отправлять ввод с клавиатуры command+2 каждые 300 секунд.

Причина 300-секундной задержки заключается в том, что статус вашей команды меняется на «Отсутствует» ровно через пять минут (300 секунд).

Фактическая отправляемая команда — command+2 — это сочетание клавиш для переключения на панель чата команд, которая в основном имитирует щелчок по значку чата. Если вы предпочитаете другой ярлык или работаете со Slack, вы можете найти доступные сочетания клавиш в приложении и выбрать тот, который вам подходит. Например, масштабирование до 100% с помощью command + 0 было еще одним хорошим вариантом, но я не хотел, чтобы отображалось всплывающее окно. Вы также можете переключаться между календарем и чатом или отправлять себе сообщения, если хотите пофантазировать.

Чтобы просмотреть доступные сочетания клавиш в MS Teams, откройте приложение и введите command + period.

Шаг 3 — Сохраните файл

Сохраните этот файл как teams_script.sh и выйдите из текстового редактора.

Шаг 4 — Выполнение скрипта

Вы запускаете этот сценарий так же, как и любой другой сценарий Bash. А именно, вы вводите ./, а затем имя файла в терминале и нажимаете Enter:

./teams_script.sh

Обратите внимание: вы должны находиться в папке, в которой сохранен файл, чтобы он мог работать. Например, если вы сохранили его на рабочем столе, вам нужно запустить cd ~/Desktop/, прежде чем вы сможете выполнить скрипт.

Если у вас возникнут проблемы с правами доступа, связанные с выполнением скрипта, вы можете либо выполнить скрипт как суперпользователь через sudo ./teams_script.sh, либо изменить права доступа к файлу перед запуском скрипта с помощью chmod 554 teams_script.sh.

Вам также может потребоваться предоставить приложению «Терминал» доступ для отправки команд. Для этого: Перейдите в «Системные настройки» → «Безопасность и конфиденциальность» → «Конфиденциальность» → «Специальные возможности» → «Разрешить указанным ниже приложениям управлять вашим компьютером» → «Отметьте» приложение «Терминал».

Шаг 5 — Прекратите выполнение скрипта

Если вы хотите остановить запуск скрипта, вы можете либо закрыть терминальное приложение, либо нажать ctrl+c в окне терминала. Это убьет скрипт и вернет ваш компьютер в нормальное состояние.

Я настоятельно рекомендую не запускать этот скрипт постоянно, так как команда caffeinate -d удерживает ваш дисплей, что, в свою очередь, сокращает срок службы батареи. Мне пришлось использовать caffeinate -d, чтобы скрипты Python работали по 14 часов в день, и теперь моей батареи едва хватает на час. Так что используйте его экономно!

И это почти все!

Дайте мне знать, если у вас есть какие-либо комментарии или предложения.