- 開発
READ MORE
こんにちは、hachi8833です。平日の通勤に電車で片道2時間かかっているので、車内での作業環境の快適化を長らく模索してきました。
結果、Macbook ProとiPhone(7)の間をUSBケーブルでつないでテザリングするのが今の所最も快適です。パケ死さえ除けば…
今後のOSアップデートの影響を受けにくそうなシェルスクリプトにしました。
当初はmacOSのネットワーク設定をスクリプトでコントロールしようと躍起になってましたが、それよりもネットワークプロファイル複数作って切り替える方が断然楽でした。
「自動」プロファイルは通常用の設定にし、それを複製してUSB_Tethering_offのプロファイルを作成してから「iPhone USB」という設定を削除しておきます。
Homebrewで以下を実行してインストールしました。npmでもインストールできるようです。
$ brew install dark-mode
BetterTouchToolからシェルスクリプトを呼び出す場合は、スクリプト内のパスを絶対パスにしておく必要があります。これに気づくのにちょっとかかりました。
#!/usr/bin/env bash
# -*- coding: utf-8 -*-
## iPhone USBへの接続をトグルする。BetterTouchToolの ⌘ + F10 から起動
# set -eux
LOCATION=`networksetup -getcurrentlocation`
if [ $LOCATION = "USB_tethering_off" ]
then
scselect Automatic
echo "Connected to iPhone USB"
/usr/local/bin/dark-mode on
else
scselect USB_tethering_off
echo "Disconnected from iPhone USB"
/usr/local/bin/dark-mode off
fi
BetterTouchToolで「execute terminal command」を追加して適当なキーを割り当てます。
以下の設定を追加します。これも絶対パスにする必要がありました。
以上で快適な車内テザリングができるようになりました。
#!/usr/bin/env bash
# -*- coding: utf-8 -*-
## Wi-Fiをトグルする。BetterTouchToolの ⌘ + F9 から起動
set -eux
networkList="$(networksetup -listallhardwareports)"
wifiDEV="$(echo "$networkList" |grep -E '(Wi-Fi|AirPort)' -A 1 | grep -o "en[0-9]")"
# switch wi-fi
if [ -n $wifiDEV ]
then
wifiST="$(networksetup -getairportpower $wifiDEV)"
[[ $wifiST == *On ]] && val=Off || val=On
networksetup -setairportpower $wifiDEV $val && exit 0
fi
これを使うにはblueutilのインストールが必要です。
#!/usr/bin/env bash
# -*- coding: utf-8 -*-
## Bluetoothの接続をトグルする。BetterTouchToolの ⌘ + F8 から起動
# set -eux
BLUEUTIL='/Users/hachi8833/bin/blueutil'
STATUS=`$BLUEUTIL status`
if [[ $STATUS = 'Status: off' ]]
then
$BLUEUTIL on
echo "Bluetooth: on"
else
$BLUEUTIL off
echo "Bluetooth: off"
fi