Пользовательский VirtualBox Launcher в GNOME 3

Я использую Ubuntu 13.04 с GNOME 3. Моя цель - создать собственный модуль запуска, который будет запускать конкретную виртуальную машину VirtualBox, и мне бы хотелось, чтобы у нее был собственный значок.

С чисто функциональной точки зрения я добился успеха. Эта статья (webupd8.org) дала мне команду, которая запускает виртуальную машину напрямую. Поэтому я создал новый файл .desktop в ~ / .local / share / apps, который использует эту команду для части 'Exec'. Когда я нажимаю на панель запуска, машина успешно запускается.

Моя проблема связана с поведением значков. Я указал пользовательский значок в файле .desktop, и он прекрасно отображается на панели избранного. Однако когда я щелкаю по значку, и виртуальная машина запускается, вновь открытое окно не связано с моим настраиваемым средством запуска (т.е. мой настраиваемый значок не «подсвечивается»). Вместо этого окно становится связанным с недавно созданным значком VirtualBox.

Кто-нибудь знает, есть ли способ указать GNOME 3, что я хочу связать новое окно с моим собственным значком? Я помню, что у меня была похожая проблема с Matlab, и в файле .desktop было указано что-то, называемое «StartupWMClass», но я не знаю, как мне установить значение в этом случае (или если это применимо даже к программе запуска не-Matlab) .

Вот мой файл .desktop на случай, если кто-то посчитает, что он может оказаться полезным:

[Desktop Entry]
Name=Windows 8
GenericName=Windows 8 Virtual Machine
Comment=Windows 8 in VirtualBox
Exec=VBoxManage startvm 'Windows 8'
Icon=/home/username/Pictures/Icons/Windows8.png
Terminal=false
Type=Application
Categories=Office;

Спасибо!

2
задан 24 May 2013 в 19:37

3 ответа

Я использую последнюю версию GNOME 3.10 на fedora 20, и StartupWMClass=VirtualBox, похоже, добивается цели.

Возможно, это было исправлено с момента, когда вы задали вопрос?

В любом случае, у VirtualBox есть один недостаток - все окна имеют одинаковый WM_CLASS. Так что, если вы используете несколько машин, они будут сгруппированы вместе. Я подал отчет об ошибке для этого: https://www.virtualbox.org/ticket/12534 . Надеюсь, скоро мы увидим, что это решится.

0
ответ дан 24 May 2013 в 19:37

Я нашел хороший обходной путь.

Мой модуль запуска windows.desktop:

[Desktop Entry]
Name=Windows 10 VM
GenericName=Windows 10 Virtual Machine
Comment=Windows 10 in VirtualBox

Exec=/home/admin/.local/share/applications/windows.sh
Icon=/home/admin/.local/share/applications/windows.png
StartupWMClass=Windows

Terminal=false
Type=Application
Categories=Office;

Мой файл windows.sh:

#!/bin/bash

virtualbox --startvm agromov-vm &
VM_PID=$!
sleep 1
xprop -id $(wmctrl -lp | grep $VM_PID | cut -d ' ' -f 1) -f WM_CLASS 8s -set WM_CLASS 'Windows'

«agromov-vm» - это имя виртуальной машины
wmctrl получает идентификатор окна без указателя мыши

0
ответ дан 24 May 2013 в 19:37

Только для ссылки, ограничение, упомянутое @atitoxic в его ответе, было уже зафиксировано в VirtualBox> = 5.2.0 благодаря его отчету об ошибках. Однако VirtualBox присваивает универсальное значение WM_CLASS по умолчанию ("Машина VirtualBox" в последней версии во время записи, которая является 6.0.14). Активировать эту опцию, дополнительные данные GUI/DistinguishMachineWindowGroups должен быть установлен на true использование VBoxManage:

VBoxManage setextradata <uuid|name> GUI/DistinguishMachineWindowGroups true

<uuid|name> или UUID или название VM. Это может также быть установлено на global активировать опцию для всего VMs глобально.

После этого VirtualBox должен присвоить значение WM_CLASS, содержащее UUID VM. Можно проверить его использование xprop WM_CLASS.

0
ответ дан 2 December 2019 в 05:23

Другие вопросы по тегам:

Похожие вопросы: