1

我需要一个终端到我的 osx 安装中的 Linux 虚拟机。它是一个下拉终端,在 vm 中我可以使用 F12 作为全局热键来切换显示/隐藏。

下拉终端的名称是 yakuake,我知道有一个可以与 osx 配合使用的下拉终端,但是由于各种原因,我需要一个 Linux 终端并且可以轻松访问它。

有几件事使这变得困难。

  • VMware fusion 没有任何好的 applescript 支持
  • 我需要能够同时运行多个虚拟机。
  • 速度
  • 隐藏应用程序。

我正在使用 iKey 将我的 mac 上的全局热键绑定到一个小 oneliner:

  • /Library/Application\ Support/VMware\ Fusion/vmrun -T fusion -gu 用户名 -gp 密码 runScriptInGuest "/Users/username/Documents/Virtual Machines.localized/Ubuntu.vmwarevm/Ubuntu.vmx" -interactive "/bin/bash " "/home/用户名/bin/toggle_yakuake"

/home/username/bin/toggle_yakuake 脚本只是一个:

  • /usr/bin/xdotool key Control+Shift+Y #这是我绑定到yakuake的

这可行,除了它需要大约 1-2 秒,并且 yakuake 将显示在每隔一个窗口下方。因此,如果 yakuake 没有运行,我将使用逻辑来执行此操作,然后我可以在 osx 中隐藏/显示它以立即切换它。但是,我可以使用简单的“告诉应用程序“Yakuake - Ubuntu”来激活来显示 yakuake。如果不隐藏属于同一 vm 的所有其他应用程序,我就无法隐藏它。

似乎由 vmware 生成的每个应用程序都紧密联系在一起。即使我在我的 osx 安装中找到了 yakuake 的 pid,并像这样使用它:

tell application "System Events"
    set yakuakeproc to every process whose unix id is 58518
    repeat with proc in yakuakeproc
        set the frontmost of proc to true
    end repeat
end tell

它将隐藏属于该虚拟机的每个应用程序。

几天来,我一直试图找出解决方案。有没有人有任何提示或任何东西?如何让 applescript 隐藏我的 vm 中的一个特定应用程序?

4

1 回答 1

0

你开始的方式yakukake是不必要的复杂。您应该能够简单地运行 VMware 代理应用程序,而不是使用 shell 脚本;即你的tell application "Yakukake - Ubuntu" to activate

那么您唯一真正的问题是如何在脚本中显示和隐藏应用程序。我认为使用系统事件可以做到这一点,但使用我的工具更容易做到这一点appswitch

我没有在 VMware Fusion 中安装 GUI Linux,但这里有一个 Windows 示例。

要查看有关进程的信息:

% appswitch -La Notepad 
        PSN   PID TYPE CREA NAME                PATH (bundle identifier)
 15994688.0 24758 APPL ???? Notepad             /Users/nicholas/Library/Application Support/VMware Fusion/Virtual Machines/Boot Camp/Boot Camp.vmwarevm/Applications/Notepad — Windows 7.app (com.vmware.proxyApp.564dbc100b31a4b5-4f8d8088bf0c3705.2009924420)

隐藏它:

% appswitch -ha Notepad

要显示它:

% appswitch -a Notepad

就是这样。

于 2011-03-13T17:14:37.223 回答