Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Hammerspoonがすごい/2018-12-19-llt5

 Hammerspoonがすごい/2018-12-19-llt5

社内のLTイベント「えるLT Vol.5」で発表した資料です

Satoshi SAKAO

December 19, 2018
Tweet

More Decks by Satoshi SAKAO

Other Decks in Programming

Transcript

  1. Lua言語 H6 1 2 3 4 5 6 7 8

    9 10 11 12 13 14 function fizzBuzz(n) local line = string.format('%d: ', n) if n % 3 == 0 then line = line .. 'Fizz' end if n % 5 == 0 then line = line .. 'Buzz' end print(line) end for i = 1, 100 do fizzBuzz(i) end
  2. Hammerspoonでできること • マウス・キーストローク • ウィンドウ,アプリケーション • 通知センター,ダイアログ • システム情報 •

    HTTP/TCP/UDP/IPC • AppleScript/JavaScript • iTunes/Spotify H7 • グラフィックス描画 • iMessage/SMS送信 • 音声UI • Wi-Fi/USB • 開発サポート機能 • ウォッチャ
  3. hs.fs ファイルシステム • macOSに特異な操作も可能 • lock • xattr • tag

    • Finderコメント • ボリュームの制御・ウォッチャも装備 H10
  4. H14 1 2 3 4 5 6 7 8 9

    10 11 12 13 14 15 16 useWatcher = hs.usb.watcher.new(function(usb) if usb['eventType'] == 'added' then local syn = hs.speech.new('kyoko') if usb['productName'] == 'Arduino Micro' then syn:pitch(250) syn:speak('ぼく、アルディーノ!!アルディーノ アイディーイーを起動するね!') hs.application.launchOrFocus('Arduino') elseif usb['productName'] == 'USB FLASH DRIVE' then syn:pitch(80) syn:speak('ぼく、ユーエスビードライブ!!ファインダーを起動するね!') hs.application.launchOrFocus('Finder') local finder = hs.appfinder.appFromName('Finder') finder:selectMenuItem({ 'File', 'New Finder Window' }) end end end):start()
  5. H16 1 2 3 4 5 6 7 8 9

    10 11 12 lastBatteryPowerSource = '' batteryWatcher = hs.battery.watcher.new(function() local powerSource = hs.battery.powerSource() local percentage = hs.battery.percentage() if lastBatteryPowerSource ~= powerSource and powerSource == 'Battery Power' then local syn = hs.speech.new('kyoko') syn:pitch(100) syn:speak(string.format('充電はあと%dパーセントだよ。気をつけてね!', percentage)) end lastBatteryPowerSource = powerSource end):start()
  6. ウォッチャの例 • ホットキー • マウス・キーボード・トラックパッド入力 • パスウォッチャー(ファイル変更) • アプリケーション(起動,終了,非表 示,表示)

    • オーディオデバイス • バッテリ状態 • 電源状態(スリープ,再起動,スク リーンロック,etc) • Wi-Fi接続 H21 • USBデバイス • URL起動 • HTTPサーバ • IPC • 音声入力 • 音声ノイズ • スペース変更 • スクリーンレイアウト • UIエレメント