
我的大部分工作都是在Ubuntu 中完成的,但是有些Windows 程式沒有良好的Linux 等效項,並且無法在Wine 中運行,因此我在運行Windows 7 的VirtualBox 虛擬機中運行這些程式。 ,當我在據我所知,Linux 程式沒有快速切換到虛擬機器的方法。目前最快的方法是按 Alt+Tab 切換到兩個 VirtualBox 窗口,按住 Alt 查看 VirtualBox 管理器和虛擬機,然後再次按 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 產生一些幹擾):