DIYバッシュカッコウ

こんにちは、%ユーザー名%。

私の仕事を整理するには、1時間、30分などが経過したという通知を表示または聞くと便利です。 これは一時的なスペースでのオリエンテーションと仕事の適切な計画のために必要です。
私はUbuntuを持っているので、この記事では、標準のUbuntuツールを使用してこのような通知を行う方法についても説明します。


だから私は必要です:

検索中にいくつかのアプリケーションを試しました。 それらのいくつかは悪くはありませんでしたが、必要な機能がなければ、いくつかはひどく不便で、いくつかはまったく機能しませんでした。 ほとんどすべてのプログラムは、信頼性に大きく苦しんでいます。
通常のツールが見つからなかったため、自分で実装することにしました。 プログラムの作成には長い時間がかかるため、ひざまずいてスクリプトを作成する方が簡単です。

Ubuntuの通知


ご存じのとおり、Ubuntuの通知にはnotify -sendユーティリティが使用されます。 Ubuntuの最近のバージョンでは、主な通知ツールとしてnotify-sendが使用されています。 すべてのメッセージが均一に表示されると、非常に便利です。 次のように使用します。
$ notify-send title message 

コンソールでこの単純なコマンドを実行すると、しばらくすると、タイトルtitleとメッセージmessageを含む通知が表示されます。 私にとってはこのように見えます:
通知例
さて、私たちはメッセージを表示する方法をすでに知っています。それらをスケジュール通りに表示することを学ぶことは残っています。

Linuxのスケジュールされたタスク


スケジュールされたタスクのために、Linuxには素晴らしいcrontabツールがあります
 crontab -e 

エディターが外れたら、次の行を挿入します。
 0 */1 * * * DISPLAY=:0.0 notify-send "" " 1 " 

保存して、結果を楽しんでください。 遊びたい場合は、通知を1分間に1回設定すると、デバッグレコードは次のようになります。
 */1 * * * * DISPLAY=:0.0 notify-send "" " 1 " 

これで、定期的にユーザーに何かを出力できます。
毎分サンプル通知
crontabの設定方法がわからないユーザーには、オンラインジェネレーターにアドバイスできます。 たとえば、 そのような
私は、ディスプレイ番号の決定に煩わされなかったことを別に注意します。 はい、変化する可能性がありますが、私との数ヶ月の作業の後、変化したことはありません。 私はまだデスクトップを持っていますが、スクリプトはまだ膝の上で作られています。
別のレシピを共有します。 crontab -eの使用はあまり便利ではありません。 デフォルトのエディターが開きます。 これは通常ナノです。 彼は恐ろしいと思います。 私は通常これを行います:
 crontab -l > /tmp/crontab.file && cp /tmp/crontab.file /tmp/crontab.file.backup && gedit /tmp/crontab.file && crontab /tmp/crontab.file 

ファイルは便利なgeditで開かれ、編集、保存、または保存されません。 geditウィンドウを閉じた後、設定はcrontabに入ります。
または、この全体をスクリプトに配置して、たとえばデスクトップに配置します。
 #!/bin/sh # _Nicolay # file editCrontab.sh crontab -l > /tmp/crontab.file && cp /tmp/crontab.file /tmp/crontab.file.backup && gedit /tmp/crontab.file && crontab /tmp/crontab.file rm /tmp/crontab.file 

Linuxスクリプトのダイアログ


現在、部分的に問題が解決されています。 ただし、モニター画面を常に見るわけではなく、メッセージをスキップできるため、部分的にしかありません。 Zenityユーティリティが私の助けになりました。 彼女もすでにシステムにいました。 crontabに大胆に書く
 0 */1 * * * DISPLAY=:0.0 zenity --info --title="" --text="  " 

またはデバッグ記録:
 */1 * * * * DISPLAY=:0.0 zenity --info --title="" --text="  " 

結果は次のようになります。
対話:1分が経過しました
しばらくの間は便利でしたが、時間が経つにつれて通知ウィンドウが表示され始めました。 このため、クラウンスクリプトをアップグレードしました。 最後に、3番目の便利なユーティリティESpeakに出会いました
異なる言語のボイスメッセージを合成できます。
crontabに新しい行を追加します。
 0 */1 * * * espeak -vru -s130 " 1 " 

またはデバッグ行
 */5 * * * * espeak -vru -s130 " 5 " 

最後に、これが起こったことです


音声合成装置はひどく話しました。 聞くのはうんざりしていたので、英語に切り替えていくつかの改善を行いました。

通知の最終機能は完全に私に合っていました。 何も置く必要はなく、すべてが軽量で信頼性がありました。
crontabファイルは次のようになります。
 # crontab file # _Nicolay #     0 */1 * * * /usr/local/scripts/hours.sh #    23 12,16 * * * DISPLAY=:0.0 zenity --info --title="" --text="  !!!" 

そしてhours.shファイル:
 #!/bin/sh # hours.sh # _Nicolay DISPLAY=:0.0 notify-send "" "`date +%k` " espeak -ven -s130 "`date +%l` hours" 

crontabスクリプトは型付きの逆アポストロフィ処理をサポートしていないため、スクリプトをhours.shファイルに配置しました。 crontabで型指定された逆アポストロフィを指定した場合、スクリプトは指定された時間に機能しません。

さて、スクリーンショットの最後に、それがどのように見えるかを示しています。

1時間ごとにメッセージが表示されます。
23時間
メッセージは音声によって複製されます。 私がコンピュータの隣にいる場合、聞こえます。 そして、1日2回、私はまだ休憩する必要があるというリマインダーが私に送信されます。


UPD:ヒントとコメントに基づいてスクリプトを変更しました。

フェスティバルについてコメントしてくれたlionsimbaに感謝します。

その結果、hours.shの新しいバージョンが得られました。
 #!/bin/sh # hours.sh # _Nicolay #HOURS="`date +%l`" HOURS="`date +%k`" HOURS_TXT=" ?" HOURS_TXT_SAY=$HOURS_TXT if [ "$HOURS" -eq 11 ]; then HOURS_TXT="$HOURS " HOURS_TXT_SAY="$HOURS " elif [ "$HOURS" -eq 12 ]; then HOURS_TXT="$HOURS " HOURS_TXT_SAY="$HOURS " elif [ "$HOURS" -eq 13 ]; then HOURS_TXT="$HOURS " HOURS_TXT_SAY="$HOURS " elif [ "$HOURS" -eq 14 ]; then HOURS_TXT="$HOURS " HOURS_TXT_SAY="$HOURS " elif [ "$(($HOURS % 10))" -eq 0 ]; then HOURS_TXT="$HOURS " HOURS_TXT_SAY="$HOURS " elif [ "$(($HOURS % 10))" -eq 1 ]; then HOURS_TXT="$HOURS " HOURS_TXT_SAY="$HOURS " elif [ $(($HOURS % 10)) -lt 5 ]; then HOURS_TXT="$HOURS " HOURS_TXT_SAY="$HOURS a" else HOURS_TXT="$HOURS " HOURS_TXT_SAY="$HOURS " fi DISPLAY=:0.0 notify-send -i "typing-monitor" "" "$HOURS_TXT" #espeak -ven -s130 "`date +%l` hours" echo "$HOURS_TXT_SAY" | festival --tts --language russian 


このスクリプトは、時間についてロシア語でかなりよく報告しています。

それだけです、ご清聴ありがとうございました。

Source: https://habr.com/ru/post/J126849/


All Articles