Если вам нужен графический пользовательский интерфейс в среде Linux, вам обязательно понадобится X11. Но если вы просто хотите взаимодействовать с графическим интерфейсом Windows, то да, вы можете это сделать. По сути, теперь можно запускать инструменты Windows из WSL . Это означает, что если у вас есть сценарий Windows, который вы можете запустить, например, из CMD или WScript, вы можете просто выполнить:
cmd.exe /c "path to script"
vbscript.exe /b "path to script" :: where /b = batch mode
Затем идет часть возвращаемого значения. В bash $?
всегда является статусом выхода предыдущей команды. Итак, как только вы запустите приведенную выше строку , она закроется и вернет1 , вы можете использовать $?
, чтобы выяснить, что вернул скрипт. (Это немного злоупотребляет статусами выхода, но если это работает...)2 Это, конечно, означает, что вам потребуется уникальный int для каждого возможного возвращаемого значения вашего сценария Windows, и оба сценария нужно будет знать, чему соответствует каждое значение.
(Написание сценария для представления GUI — это, конечно, совсем другая проблема, но вы можете спросить об этом в Суперпользователе .)
1 Эта часть действительно важна, -вы можете проверить ее самостоятельно, запустив explorer.exe
сразу после команды, вызвавшей ошибку. Если вы не закроете окно проводника, открытое bash, $?
покажет не-нулевой статус выхода команды до explorer.exe
, но как только вы закроете проводник, $?
будет 0 (, предполагая ничего не случилось с проводником ).
2 Предостережение :На самом деле я сам не пробовал этот процесс. Может потребоваться некоторая настройка.
Только одно окно/приложение может иметь фокус одновременно.
В вашей конфигурации openbox оба приложения/обои имеют фокус, но технически это невозможно, поэтому openbox смягчит вашу конфигурацию, передав фокус только одному приложению (иначе он не может ).
<application name="terminator-wallpaper-1a">
<focus>yes</focus>
...
<application name="terminator-wallpaper-1b">
<focus>yes</focus>
Существует множество способов решения этой проблемы, они развиваются вокруг реализации способа переключения фокуса на рабочий стол/приложение/обои первого или второго экрана
Возможное решение 1:
Вы можете попробовать установить значение фокуса на «нет» или полностью удалить линию фокуса.затем проверьте переключение фокуса щелчком мыши
Возможное решение 2:
Используйте местоположение мыши, чтобы установить фокус, вот вики openbox по этому вопросу, сначала удалите запись фокуса для обоих приложений обоев, затем добавьте следующее в конфигурацию openbox в основном разделе. <focus></focus>
как описано в связанной документации
<followMouse>yes</followMouse>
<!-- move focus to a window when you move the mouse into it -->
Обратите внимание, что это повлияет и на другие окна...
Вы также можете попробовать использовать followMouse
в разделе приложения, но я не думаю, что это обрабатывается openbox
Возможное решение 2:
Используйте xdotool с сочетанием клавиш или другим способом для переключения фокуса, на самом деле вы можете назначить сочетание клавиш для команды, подобной приведенной ниже, также это решение требует исправления конфигурации путем удаления/редактирования двойного<focus>yes</focus>
xdotool search --class 'Terminator-wallpaper-1b' windowactivate
Как и xdotool, wmctrl также может быть использован для решения этой проблемы:
#Lists currently open windows
wmctrl -l
#Set focus to windows with title containing STRING
wmctrl -a STRING
Примечание:
<focus>yes</focus>
# if the window should try be given focus when it appears. if this is set
# to yes it doesn't guarantee the window will be given focus. some
# restrictions may apply, but Openbox will try to
Примечание 2:
Есть много других возможных решений, вы можете прокомментировать ответ, и я отредактирую его соответствующим образом;)