Это не просто, в основном вам нужно знать, сколько мониторов в настоящее время подключено, Vagrantfile - это рубиновый скрипт, но, к сожалению, рубин не знает об этом (или, по крайней мере, я не знаю), и вам нужно больше узнать системный уровень, поэтому его нелегко проверить для всех систем.
на макинтош, вы можете найти, сколько мониторов у вас есть, выполнив команду system_profiler SPDisplaysDataType
, например
$ system_profiler SPDisplaysDataType
Graphics/Displays:
Intel HD Graphics 4000:
Chipset Model: Intel HD Graphics 4000
Type: GPU
Bus: Built-In
VRAM (Dynamic, Max): 1536 MB
Vendor: Intel (0x8086)
Device ID: 0x0166
Revision ID: 0x0009
Automatic Graphics Switching: Supported
gMux Version: 3.2.19 [3.2.8]
Metal: Supported
NVIDIA GeForce GT 650M:
Chipset Model: NVIDIA GeForce GT 650M
Type: GPU
Bus: PCIe
PCIe Lane Width: x8
VRAM (Total): 1024 MB
Vendor: NVIDIA (0x10de)
Device ID: 0x0fd5
Revision ID: 0x00a2
ROM Revision: 3688
Automatic Graphics Switching: Supported
gMux Version: 3.2.19 [3.2.8]
Metal: Supported
Displays:
Color LCD:
Display Type: Retina LCD
Resolution: 2880 x 1800 Retina
Retina: Yes
Pixel Depth: 32-Bit Color (ARGB8888)
Main Display: Yes
Mirror: Off
Online: Yes
Automatically Adjust Brightness: Yes
Built-In: Yes
PA279:
Resolution: 1920 x 1080 @ 60Hz (1080p)
Pixel Depth: 32-Bit Color (ARGB8888)
Display Serial Number: E2LMQS044803
Mirror: Off
Online: Yes
Rotation: Supported
Automatically Adjust Brightness: No
Connection Type: DisplayPort
Television: Yes
так, чтобы подсчитать количество мониторов вы можете проверить, сколько разрешение у вас есть:
$ system_profiler SPDisplaysDataType | grep Resolution | wc -l
2
это будет работать, так что вы можете положить, что в вашем Vagrantfile:
monitor = 1
host = RbConfig::CONFIG['host_os']
if host =~ /darwin/
monitor = `system_profiler SPDisplaysDataType | grep Resolution | wc -l`.to_i
#elseif host =~ /linux/
#maybe there's a command for linux
#elseif host =~ /mswin|mingw|cygwin/
#maybe there's a command for windows
end
config.vm.provider "virtualbox" do |vb|
vb.gui = true
vb.customize ["modifyvm", :id, "--vram", "128"]
vb.customize ["modifyvm", :id, "--monitorcount", "#{monitor}"]
end
Я уверен, что есть эквивалентная команда для Linux-мира, возможно для окон.