2016-12-08 3 views
0

Мы создали среду разработки на основе бродяг, которую разработчики используют для создания своей локальной рабочей среды в виртуальной машине. Это включает в себя инструменты для редактирования и отладки кода с пользовательским интерфейсом, и мы хотим работать в виртуальной машине исключительно с использованием всех наших экранов. Тем не менее, наши разработчики не все имеют одинаковое количество экранов, и я часто работаю из разных мест с помощью всего одного экрана. Возможно ли, чтобы VagrantFile забрал количество подключенных экранов и создал много экранов VM?Настроить бродягу с переменным количеством физических экранов

конфигурация Нашей VagrantFile (экстракт) мы имеем на данный момент для 2-х экранов:

config.vm.provider "virtualbox" do |vb| vb.gui = true vb.customize ["modifyvm", :id, "--vram", "128"] vb.customize ["modifyvm", :id, "--monitorcount", "2"] end

В идеале я хотел бы заменить счетчик мониторного 2 либо автоматически подбирая количество экранов или позволяя разработчикам передать дополнительный параметр vagrant up для установки количества экранов.

ответ

1

Это не просто, в основном вам нужно знать, сколько мониторов в настоящее время подключено, 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-мира, возможно для окон.