VMware Fusion и AppleScript с глобальными горячими клавишами - PullRequest
1 голос
/ 13 марта 2011

Мне нужен терминал для Linux vm внутри моей установки osx.Это выпадающий терминал, и в виртуальной машине я могу использовать F12 в качестве глобальной горячей клавиши для переключения показа / скрытия.

Имя выпадающего терминала - yakuake, я знаю, что есть выпадающий терминал, который работает с osx to,но по разным причинам мне нужен и терминал Linux, и легкий доступ к нему.

Есть несколько вещей, которые усложняют это.

  • VMware fusion не имеет хорошей поддержки appleScript
  • Мне нужно иметь возможность запустить несколько виртуальных машин одновременно.
  • Скорость
  • Скрытие приложения.

Я использую iKey дляполучить глобальную горячую клавишу на моем Mac, привязанную к небольшому пользователю:

  • / Библиотека / Приложение \ Поддержка / VMware \ Fusion / vmrun -T fusion -gu username -gp пароль runScriptInGuest "/ Users / username /Documents / Virtual Machines.localized / Ubuntu.vmwarevm / Ubuntu.vmx "-interactive" / bin / bash "" / home / username / bin / toggle_yakuake "

/ home / имя пользователя / bin /Скрипт toggle_yakuake это просто:

  • / usr / bin / xdotool key Control + Shift + Y # Это то, что я привязал к yakuake

Это работает, за исключением того, что это занимает около 1-2 секунд, и yakuake будет отображаться под каждымдругие окна.Поэтому я буду использовать логику, чтобы просто сделать это, если yakuake не работает, а затем я могу просто скрыть / показать его в osx, чтобы переключать его мгновенно.Тем не менее, я могу показать yakuake, используя для активации простое приложение "Yakuake - Ubuntu" "Сказать". Я не могу скрыть его, не скрывая все остальные приложения, принадлежащие к тому же VM.

Кажется, что каждыйприложение, порожденное vmware, немного привязано друг к другу, даже если я найду pid yakuake в моей установке osx и использую его следующим образом:

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

Оно будет скрывать все приложения, принадлежащие этому vm.

Я уже несколько дней пытаюсь найти решение для этого. Есть ли у кого-нибудь какие-либо советы или что-нибудь? Как я могу получить applecript, чтобы скрыть одно конкретное приложение, которое находится внутри моего виртуального компьютера?

1 Ответ

0 голосов
/ 13 марта 2011

То, как вы начинаете yakukake, излишне сложно. Вы должны иметь возможность просто запустить прокси-приложение VMware, а не использовать сценарий оболочки; т. е. ваш tell application "Yakukake - Ubuntu" to activate.

Тогда ваша единственная реальная проблема - как показать и скрыть приложение из скрипта. Я думаю, что это можно сделать с помощью системных событий, но это проще сделать с помощью моего инструмента appswitch:

У меня не установлен графический интерфейс Linux в VMware Fusion, но вот пример с 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

Вот и все.

...