Openbox: окно на нижнем слое недоступно

Если вам нужен графический пользовательский интерфейс в среде 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 Предостережение :На самом деле я сам не пробовал этот процесс. Может потребоваться некоторая настройка.

1
29.12.2019, 15:13
1 ответ

Только одно окно/приложение может иметь фокус одновременно.

В вашей конфигурации 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:

Есть много других возможных решений, вы можете прокомментировать ответ, и я отредактирую его соответствующим образом;)

3
27.01.2020, 23:40

Теги

Похожие вопросы