どういうアプリか
デフォルトで5分、あるいは起動時に指定した分数キータイプが無い場合、サボりの可能性ありとみなして以下画面を表示させます。
この画面を×ボタンを押して消すと、再度監視が走り出します。
exe化、app化はしてないので、Python3.7を入れたPCでコマンドラインから実行してください。
MTGやプレゼンなど、キータイプの無い仕事を始める時にはオフにしてください。
操作方法
以下からソースをDLしてきてください。
起動
sudo python3 main/watch_keyboard.py 1
keyboardライブラリでキーボードを監視する都合上、管理者権限が必要でした...
(自分の認識する範囲で何も悪さはしていませんが、何かあっても責任は持てません)
引数の1は監視時間(分)です。省略するとデフォルトの5分監視になります。
引数に小数点以下を与える事はできません。
普通に仕事する
普通に仕事するためのアプリなので普通に仕事してください。
監視時間の間キータイプが1回もない場合、冒頭の画面が表示されます。
技術の話
監視用のループ
再帰で以下のように書きました。
def watch(self,timeout_count):
typed_pool = []
keyboard.start_recording()
time.sleep(60)
typed_pool = keyboard.stop_recording()
if len(typed_pool) == 0:
timeout_count += 1
else:
timeout_count = 0
if timeout_count <= self.watch_minutes:
self.watch(timeout_count)
ループを抜けたらポップアップウィンドウを表示するようにしています。
ポップアップウィンドウの一工夫
root.protocol("WM_DELETE_WINDOW", self.main())
×ボタンを押した後に再度コマンドラインで起動するとか面倒の極み。サボりを指摘されて仕事に戻る前に、最初から処理が走るようにしました。
感想
簡単な画面作るだけならtkinter良いですね。
もうちょい頑張ればデスクトップアプリにできると思います。
クソどうでもいい余談1 誕生秘話
「あー、クソアプリアドカレの締切が近い」
「元々考えてたアプリ、去年上位互換のアプリ出てたからお蔵入り決定や...」
「何作ろうかな...」
(40分後)
「ハッ!」
「俺ずっとTwitter見てただけやんけ」
「このままやとアドカレ落としてしまう......でもGUI書ける言語分からんし、機械学習みたいな高度な事もできん」
「...CLIツールでええか」
「サボり禁止のCLIツールやったら作れるんちゃうかな」
クソどうでもいい余談2 開発苦労話
これの動作確認のため、何回も1分間キーボードを入力せず放置する必要があり、その度に「サボってねえし...!」という気分にさせられました。