Можете ли вы написать простое еженедельное напоминание, используя сценарий bash / sh? - PullRequest
4 голосов
/ 06 октября 2009

Мне нужно установить себе напоминание для участия в еженедельном собрании. Проблема со стандартным инструментом напоминания моей компании в том, что когда он работает под Wine, он появляется на виртуальном рабочем столе за пределами экрана.

Я подумал, что было бы интересно посмотреть, смогу ли я придумать команду "at", которая выскакивает в окне напоминания, а затем повторно отправляется на следующую неделю.

Я знаю, что могу использовать cron или какое-нибудь приложение с будильником, но это пробудило мое любопытство.

Однократная версия будет:

echo "DISPLAY=$DISPLAY zenity --title='Weekly Meeting' --text='Time for the weekly meeting' --info" | at 0955 NEXT Monday

Может ли кто-нибудь придумать подходящую quine -подобную команду, которая при каждом запуске будет дополнительно повторять эту же команду на следующей неделе в повторяющемся цикле?

Ответы [ 4 ]

1 голос
/ 06 октября 2009

Попробуйте:

export reminder='"DISPLAY=$DISPLAY zenity --title='\''Weekly Meeting'\'' --text='\''Time for the weekly meeting'\'' --info" | at 0955 NEXT Monday'; echo $reminder | at 0955 NEXT Monday

Измените обе команды at на at now + 1 minute для тестирования. $DISPLAY будет установлено при вводе команды и может быть неверным во время выполнения задания, но это то же поведение, что и команда в вашем вопросе.

0 голосов
/ 12 апреля 2010

Извините, что испортил веселье, но ... разве какая-то работа cron не имеет больше смысла?

0 голосов
/ 13 декабря 2009

Я, наверное, обманываю, но вы можете воспользоваться тем, что at сохраняет значение большинства переменных среды (не $DISPLAY хотя, ни $DISP кажется):

export FOO=$DISPLAY CMD='DISPLAY=$FOO xmessage "hi there";
echo "$CMD" | at now + 1 minutes'
eval "$CMD"

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

0 голосов
/ 06 октября 2009

Попробуйте с файлом:

$ cat /tmp/quine_file
DISPLAY=:0.0 zenity --title='Weekly Meeting' --text='Time for the weekly meeting' --info;
at '0955 NEXT monday' </tmp/quine_file;

$ at '0955 NEXT monday' </tmp/quine_file

Таким образом, при каждом запуске задания на следующий понедельник назначается еще одно.

...