Macbook Airの環境整備 20160921
管理者権限が必要な AppleScript アプリをパスワード入力無しで動かす
AutoChargeInHabit
- 実際に効果があるのかどうかは、比較対象となる MacBook Air が無いので不明
分からないのだけど、「鰯の頭も信心から」的に使わせてもらっております
- 信仰にはお布施が必要なんでちゃんと 1000円くらい donate したぜ
時々バッテリの状態をメモってた
ちなみに、交換バッテリは 7150mAh らしい
MacBook Air 13" (Mid 2012 through Early 2015) Battery (661-7474) - iFixit
Replacement 7150 mAh battery compatible
バッテリに神経質にはなっていないけど、長持ちするならその方がいいよねぇ、と思ってます
- しかし、真に神経質でない人ならこのソフト入れないだろうから、ちょっとは神経質なのだろうか
なお、MacBook Air の充放電回数の上限は1000回との事
- Mac ノートブックのバッテリーの充放電回数を確認する - Apple サポート
- さっき自分の MacBook Air 確認したらちょうど500回だった
起動の都度のパスワード入力が鬱陶しい
このソフトを MacBook Air の起動時に立ち上がるようにしていたのだけど、都度管理者パスワードを聞かれるわけです
メンドイなぁ・・・と思いつつ、しかし解決法もわからずで2年間
勉強の合間の気分転換で手を入れてみたところ、なんとかなったので備忘録もかね書いておきまする
- なお、試行錯誤に3時間ほどかかった模様
最初は、「自動でパスワードを入力しよう」と思い、 Automator などをいじってみたんですが、パスワードをテキストボックスに入力できず
作者は 「
sudo
で動かしている」との事ですが、当方ではsudo
で動かしてもパスワードを要求される結局、AppleScript で一部を書き換えることに
- ところで、 AppleScript って情報めっちゃ少ない・・・うちのググラビリティが及ばない分野でした
書き換えるのは権利者権限を要求する
AutoChargeInhibit2RunRoot.app
- これを AppleScript エディタで開き
オリジナル
do shell script theAppPath & " &>/dev/null & " with administrator privileges
変更後。******** の部分にMacの管理者パスワードを入れる
do shell script theAppPath & " &>/dev/null & " password "********" with administrator privileges
これで管理者権限を求められる事がなくなりました
- 起動、再起動の都度入力を求められていたパスワードを入れる事がなくなり、しかも自分でなんとかできたって事で、結構感動したのでした
追記
- この記事を書きながら「時々バッテリの状態をメモってた」って何よ?と
- プログラマの三大美徳を信条とするなら、これを自動化するべきではないだろうか?
- まだまだ怠惰が足りない
# MacBattery.pl # その時点のバッテリの再大容量ログを # YYYY-MM-DD hh:mm:ss ???? # の形式でファイルに出力する use 5.012; use warnings; use Time::Piece; binmode STDOUT, ':encoding(UTF-8)'; my $command = 'ioreg -c AppleSmartBattery | grep MaxCapacity'; my $max_capacity = $1 if ( `$command` =~ /(\d+)/ ); my $t = localtime(time); my $date = $t->ymd .' '. $t->hms; my $save_filename = 'Mac_MaxCapacity.txt'; open my $FH, '>>', "$save_filename" or die qq{Can't open file "$save_filename":$!}; say $FH $date , ' ' , $max_capacity; undef $FH;
- こいつを cron に登録して・・・え? MacOS X にcron ないの?
- めんどくせぇ・・・ってなったが、真の怠惰目指して頑張る
Scheduling Timed Jobs
Note: Although it is still supported, cron is not a recommended solution. It has been deprecated in favor of launchd.
- plist ファイルの書き方をググる
- 起動時のみ設定
- plistファイルに 755 の権限つけたけど、必要かどうか試してない・・・
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>pl.Mac_MaxCapacity.perl.plist</string> <key>ProgramArguments</key> <array> <string>perl</string> <string>/scriptdir/MacBattery.pl</string> </array> <key>RunAtLoad</key> <true/> </dict> </plist>
- 起動時に .pl で指定されたファイルに出力された事を確認