システム環境設定→共有→画面共有をon/offできるコマンドを作った。
gistに置いてある。

% git clone https://gist.github.com/9120415.git

使い方


% vnc start
% vnc stop
で有効/無効できる。


用途

sshだけ有効になっていて、画面共有が無効なMacなどで便利だと思う。
例えばうちではサーバーとしてMacMiniを使ってるんだけど、OSアップデートをインストールしたい時とかGUIが必要で、でもずっと画面共有を開けっ放しにしておくのは気持ち悪い。
VNCする前に
% ssh ホスト名 vnc start
で有効にできるので平和だと思う。

普段持ち歩いてるMacbookが家のwifiに接続されたら自動的に画面共有を有効にして、タブレットからも操作できるようにする、とかもできそう。


スクリプト

#!/usr/bin/env ruby
## enable/disable VNC on Mac OSX (testing with OSX 10.9)

def show_current_status
if system "sudo launchctl list | grep com.apple.screensharing > /dev/null" and
system "sudo defaults read /var/db/launchd.db/com.apple.launchd/overrides.plist com.apple.screensharing -dict Disabled | grep 'Disabled = 0' > /dev/null"
puts "VNC: enabled"
else
puts "VNC: disabled"
end
end

def show_help
app_name = File.basename $0
STDERR.puts "% #{app_name} start # enable VNC"
STDERR.puts "% #{app_name} stop # disable VNC"
show_current_status
end

if ARGV.empty?
show_help
exit 1
end

enable = case ARGV.shift
when "start" then true
when "stop" then false
else
show_help
exit 1
end

system "sudo defaults write /var/db/launchd.db/com.apple.launchd/overrides.plist com.apple.screensharing -dict Disabled -bool #{!enable}"

if enable
system "sudo launchctl load /System/Library/LaunchDaemons/com.apple.screensharing.plist"
else
system "sudo launchctl unload /System/Library/LaunchDaemons/com.apple.screensharing.plist"
end

show_current_status

参考

コマンドラインから画面共有をONにする方法 for OS X Mountain Lion – うさぎ文学日記