跳轉虛擬機器的熱鍵?

跳轉虛擬機器的熱鍵?

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

有誰知道如何寫一個直接跳到虛擬機器的熱鍵?

答案1

當然,這是你該做的:

  1. 安裝wmctrl

    sudo apt-get install wmctrl
    
  2. 啟動你的虛擬機,記下確切地標題列中顯示的視窗名稱。我的例如:

    Windows 7 [Draaiend] - Oracle VM VirtualBox
    
  3. 將虛擬機器視窗置於最前面的命令是:

    wmctrl <window_name>
    

    注意:如果視窗名稱包含空格,請在名稱周圍使用引號

    所以就我而言,它將是:

    wmctrl -a "Windows 7 [Draaiend] - Oracle VM VirtualBox"
    
  4. 測試在終端機視窗中運行的命令

  5. 選擇:系統設定>“鍵盤”>“快捷方式”>“自訂快捷方式”。點擊“+”並新增命令:

    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 產生一些幹擾):

相關內容