Я недавно перешел с Elementary OS на UBUNTU 20.04 LTS. Одной из очень полезных функций Elementary OS был звонок терминала. Когда команда в терминале завершена, в области уведомлений раздается звук звонка и уведомление.
Этого можно достичь, используя notify-send «Задача завершена» && printf '\ a'
вместе с исходной командой, используя &&
.
Но вот в чем загвоздка:
1. Эта команда очень длинная и ее нужно набирать каждый раз. псевдоним
можно использовать, но вам все равно придется вводить его каждый раз.
2. Он звонит, даже когда терминал находится в фокусе.
Итак, мой вопрос: я хочу, чтобы каждый раз выполнялась конкретная команда, а именно notify-send «Задача завершена» && printf '\ a'
, только когда терминал не в фокусе. И это тоже, не вводя это каждый раз.
РЕДАКТИРОВАТЬ 1
Некоторые люди предлагали Как издать звук после завершения процесса?
Но мой вопрос заключался в том, чтобы позвонить в колокольчик, не набирая никаких дополнительных команд. Есть ли способ интегрировать какой-то скрипт или что-то в самом терминале, чтобы он сам вызывал звуковой сигнал без каких-либо дополнительных команд.
Интересный вопрос!
Я придумал свою собственную смесь, используя xdotool
(sudo apt-get install xdotool
) и pstree
(sudo apt-get установите psmisc
).
#! /bin/bash
ACTIVE_WINDOW_PID=$(xdotool getactivewindow getwindowpid)
if [ ! $(pstree -spA $PPID | grep "(${ACTIVE_WINDOW_PID})") ]; then
notify-send "Task Complete" && printf '\a'
fi
У меня есть это в ~/bin/ring
, и я использовал следующую команду, чтобы проверить, работает ли это: sleep 3 ; ~/bin/кольцо
.
Используя xdotool
, вы даже можете получить заголовок окна и сообщить об этом с помощью notify-send
или сфокусировать окно терминала, когда команда существует.