Usando a ideia básica apresentada nas outras duas respostas, eu escrevi os seguintes scripts para determinar se você está usando a placa de vídeo "correta" (Corrigir="na bateria e usando o 9400" ou "no adaptador de corrente alternada e usando o 9600 ")
Eu não tenho idéia de como esses scripts são frágeis ... eles dependem de dados específicos que aparecem em uma ordem específica no plist system_profile ... mas essa ordem parece consistente em minha máquina. Colocá-lo aqui para qualquer um que encontrar isso via Google.
Ruby: (requer que a gema "Plist" seja instalada)
# video_profiler.rb
require 'rubygems'
require 'plist'
# calculate video data
data = 'system_profiler SPDisplaysDataType -xml'
structured_video_data = Plist.parse_xml(data)
display_status = structured_video_data[0]["_items"][0]["spdisplays_ndrvs"][0]["spdisplays_status"]
if (display_status.eql?('spdisplays_not_connected')) then
card = '9400'
else
card = '9600'
end
# calculate power source data
data = 'system_profiler SPPowerDataType -xml'
structured_power_data = Plist.parse_xml(data)
on_ac_power = (structured_power_data[0]["_items"][3]["sppower_battery_charger_connected"] == 'TRUE')
# output results
if (on_ac_power and card.eql?'9400') or (not on_ac_power and card.eql?'9600'):
result = 'You\'re on the wrong video card.'
else
result = "You\'re on the correct video card."
end
puts(result)
Python:
# video_profiler.py
from subprocess import Popen, PIPE
from plistlib import readPlistFromString
from pprint import pprint
sp = Popen(["system_profiler", "SPDisplaysDataType", "-xml"], stdout=PIPE).communicate()[0]
pl = readPlistFromString(sp)
display_status = pl[0]["_items"][0]["spdisplays_ndrvs"][0]["spdisplays_status"]
if (display_status == 'spdisplays_not_connected'):
card = '9400'
else:
card = '9600'
# figure out battery status
sp = Popen(["system_profiler", "SPPowerDataType", "-xml"], stdout=PIPE).communicate()[0]
pl = readPlistFromString(sp)
on_ac_power = (pl[0]["_items"][3]["sppower_battery_charger_connected"] == 'TRUE')
if (on_ac_power and card == '9400') or (not on_ac_power and card == '9600'):
result = 'You\'re on the wrong video card.'
else:
result = "You\'re on the correct video card."
pprint(result)