
Я делаю большую часть своей работы в Ubuntu, но есть некоторые программы Windows, у которых нет хороших эквивалентов Linux и которые не работают в Wine, поэтому я запускаю их в виртуальной машине VirtualBox под управлением Windows 7. К сожалению, когда я работаю в программе Linux, я не знаю быстрого способа переключиться на виртуальную машину. В настоящее время самый быстрый способ — нажать Alt+Tab для двух окон VirtualBox, удерживать Alt, чтобы увидеть и VirtualBox Manager, и виртуальную машину, а затем снова нажать Alt+Tab, чтобы выбрать виртуальную машину.
Кто-нибудь знает, как запрограммировать горячую клавишу, которая будет переходить сразу к виртуальной машине?
решение1
Конечно, вот что вам следует сделать:
Установить
wmctrl
sudo apt-get install wmctrl
Запустите свою виртуальную машину, запишитеточноимя окна, как оно отображается в строке заголовка. У меня, например:
Windows 7 [Draaiend] - Oracle VM VirtualBox
Команда для вывода окна виртуальной машины на передний план выглядит следующим образом:
wmctrl <window_name>
Примечание: если имя окна содержит пробелы, заключите его в кавычки.
так что в моем случае это будет:
wmctrl -a "Windows 7 [Draaiend] - Oracle VM VirtualBox"
Проверьте команду, запустив ее в окне терминала.
Выберите: Системные настройки > «Клавиатура» > «Сочетания клавиш» > «Пользовательские сочетания клавиш». Нажмите «+» и добавьте команду:
wmctrl -a "Windows 7 [Draaiend] - Oracle VM VirtualBox"
на комбинацию клавиш по вашему выбору.
От man wmctrl
:
-a <WIN>
Switch to the desktop containing the window <WIN>, raise the
window, and give it focus.
В случае, если вы запускаете машину из разных снимков
или в любом другом случае, когда имя окна может быть расширено другими строками, как указано OP в комментарии: скопируйте скрипт ниже в пустой файл, сохраните его как run_vm.py
. Запустите его командой:
python3 /path/to/run_vm.py <machine_name>
где, как и в первом примере, вам придется заключить имя машины в кавычки, если оно содержит пробелы.
Сценарий:
#!/usr/bin/env python3
import subprocess
import sys
machine = sys.argv[1]
command = "wmctrl -l"
wlist = [(" ").join(line.split(" ")[4:]) for line in subprocess.check_output(
["/bin/bash", "-c", command]
).decode("utf-8").split("\n") if machine in line][0]
command2 = "wmctrl -a "+"'"+wlist+"'"
subprocess.Popen(["/bin/bash", "-c", command2])
решение2
Нет никакой необходимости запускать VirtualBox Manager для запуска виртуальной машины Virtual Box. Каждая виртуальная машина может быть запущена в своем собственном окне в командной строке
VBoxManage startvm 'name of the machine'
или определив .desktop
файл, который можно запустить с помощью пользовательского ярлыка, с рабочего стола, панели задач или из панели запуска:
Затем окнами этой виртуальной машины можно удобно управлять с помощью Alt+ Tab.
Мы могли бы даже пойти дальше и легко интегрировать работающее приложение Windows в рабочий стол Ubuntu (однако при этом могут возникнуть некоторые помехи для Unity):