appleScriptで定期的に休憩行けと怒ってくれるダイアログを作った話
背景
私は休憩の取り方が下手です。タスクから離れて頭を冷やしたほうが全体的な効率が上がるの知っているのに、
没頭してしまうのと、タスク終わしたいという逸る気持ちからモニターから離れられません。
そこで、少し触りたいなと思っていたappleScriptで「休憩して頭冷やしなさいよ」と一定時間おきに言ってくれるダイアログを作ることにしました。
ダイアログ出すまでは一瞬でできました。
用意するもの
- 既存のScript Editor (スクリプトを書くだけなら好きなエディタでもOK)
- 今回は
crontab
で定期実行を登録したのでTerminal
crontab
で定期実行を登録したのでTerminal
以上
フロー
1. Script Editorを起動
こいつを起動する。
New document にするとブランクファイルが作成できます。
2. ダイアログを出すフローを書く
コードを書いていきます。
今回、一定時間おきにアラートを出すという目標はterminal
でcron
を設定することで達成します。
ので、以下コードはそれを前提としています。
時間指定、OKボタンタップ時のイベントなどスクリプトにかけると思いますが、それはこれからカスタムしていこうと思ってます。
コード
tell application "System Events"
activate
display dialog "一回休憩しろ、休め、冷やせ、風に当たれ"
end tell
以上
少ないですね。解説は以下。
tell application "System Events" ~ end tell
""にはアプリケーション名が入る。そのアプリケーションに対して命令しますよ、という命令文。
end tell の間に処理を書く。
これがないと、cron
設定をした時“No User Interaction Allowed”
というエラーが出て起動しない。
参考: https://forum.keyboardmaestro.com/t/no-user-interaction-allowed-in-execute-an-applescript/5728
activate
上記で指定したアプリケーションが最前面に来ることを指定する。今回はダイアログが最前面に来るようになる。
display dialog "foo"
ダイアログを出す記述。””にはダイアログ内テキストを入れる。
編集が終わったら保存したい場所に保存してください。拡張子は.applescript
です。
.scpt
でも起動しますが、再編集した際に上書き保存できないと怒られます。
3. 定期起動する設定をする
今回は、上記の通りcron
として定期実行を行うように設定します。
1. terminalでexport EDITOR=/usr/bin/vim
を入力して使用エディタをvim
に設定する
export EDITOR=/usr/bin/vim
これをやらないと以下でcrontab
に記載しても管理者権限で入れるcronを格納している大元に記載されないらしく、コピーに記載されてしまうようです。なので最初に設定しておきます。
これで一応大元に記載されているか確認できます。
2. crontab -e
でcrontabを編集する
crontab -e
-e で編集モードを開けます。
3. */1 * * * * cd /fileまでのpath/ && osascript Alert.applescript
を記入、保存して閉じる
*/1 * * * * cd /fileまでのpath/ && osascript Alert.applescript
上記では1分毎にと設定してます。
書式はこちらが参考になります:https://www.server-memo.net/tips/crontab.html
コマンドで.applescript
を起動させるためにはosascript
コマンドを使用します。
しっかり大元に記載されているかは以下で確認できます。
sudo cat /usr/lib/cron/tabs/USER_NAME
or
crontab -l
4. ダイアログがでる
指定時間後、ダイアログが出ます。
終わりに
今回はただダイアログを出すまでしかappleScript
には記述していませんが、一定時間経つまで他の動作させないとか、休憩時間終了したら送られてくるパスワード入れないと操作できないとかルナティックモードにしても良さそうです。
色々カスタムできそうなので、現状の実装でもダイアログ無視し始めたら対応を厳しくしていこうと思います。
Author And Source
この問題について(appleScriptで定期的に休憩行けと怒ってくれるダイアログを作った話), 我々は、より多くの情報をここで見つけました https://qiita.com/sho_v00/items/ec0b32e1bd0da54747df著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .