仮想マシンにジャンプするためのホットキー?

仮想マシンにジャンプするためのホットキー?

私はほとんどの作業を Ubuntu で行っていますが、Linux に同等のプログラムがなく、Wine で動作しない Windows プログラムもいくつかあるため、それらのプログラムを Windows 7 を実行する VirtualBox 仮想マシンで実行しています。残念ながら、Linux プログラムを実行しているときに仮想マシンにすばやく切り替える方法は、私の知る限りありません。現在、最も速い方法は、Alt+Tab で 2 つの VirtualBox ウィンドウに移動し、Alt キーを押したままにして VirtualBox マネージャーと仮想マシンの両方を表示し、もう一度 Alt+Tab で仮想マシンを選択することです。

仮想マシンに直接ジャンプするホットキーをプログラムする方法を知っている人はいますか?

答え1

確かに、次のようにするべきです:

  1. インストールwmctrl

    sudo apt-get install wmctrl
    
  2. 仮想マシンを起動し、書き留めますその通りタイトルバーに表示されるウィンドウ名。私の場合は次のようになります:

    Windows 7 [Draaiend] - Oracle VM VirtualBox
    
  3. VM のウィンドウを前面に表示するコマンドは次のようになります。

    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

Virtual Box仮想マシンを起動するためにVirtualBox Managerを実行する必要はまったくありません。各VMはコマンドラインの独自のウィンドウで起動することもできます。

VBoxManage startvm 'name of the machine'

.desktopまたは、デスクトップ、ダッシュ、またはランチャーからカスタム ショートカットで起動できるファイルを定義します。

Altこの仮想マシン ウィンドウは、 +によって簡単に制御できますTab

さらに一歩進んで、実行中の Windows アプリケーションを Ubuntu デスクトップにシームレスに統合することもできます (ただし、これを行うと Unity に干渉する可能性があります)。

関連情報