WSL abre janela no host do Windows

0

Eu fiz um pequeno script de bash. funciona bem até agora no Windows WSL e Linux.

Agora eu gostaria de ter uma janela pop-up gráfica para permitir que o usuário escolha em uma lista de configurações. Eu aprendi que você pode fazer isso com a VBS, que eu não conheço. É possível devolver a escolha ao meu script bash? Como o .vbs tem que parecer?

Ou talvez haja uma maneira mais simples de fazer isso?

Meu script abre alguns arquivos e eu gostaria de deixar o usuário escolher seu editor para isso.

por exemplo sublime e vim no linux. ou notepad ++ e sublime no windows.

Eu gostaria de evitar que o usuário do Windows tivesse que instalar todas as bibliotecas do x11, por isso eu não quero fazê-lo com o zenity, que eu usarei para o Linux. E a primeira coisa que encontrei foi um script .vbs no Windows.

    
por James Doe 07.03.2018 / 16:10

1 resposta

0

Se você quiser uma interface gráfica no ambiente Linux, você precisará do X11 com certeza. Mas se você quiser apenas interagir com uma interface gráfica do Windows, então sim, você pode fazer isso. Basicamente, agora é possível executar ferramentas do Windows a partir do WSL . Isso significa que, se você tiver um script do Windows que possa ser executado, por exemplo, no CMD ou no WScript, basta fazer:

cmd.exe /c "path to script"
vbscript.exe /b "path to script"  :: where /b = batch mode

Depois vem a parte do valor de retorno. No bash, $? é sempre o status de saída do comando anterior. Então, quando você executar a linha acima e ela fechar e retornar 1 , você poderá usar $? para descobrir o que o script retornou. (Isso está abusando um pouco dos status de saída, mas se funcionar ...) 2 Isso significa que você precisará de um int exclusivo para cada valor de retorno possível do seu script do Windows e ambos os scripts precisará saber a que cada valor corresponde.

(Escrever o script para apresentar a GUI é uma outra questão, é claro, mas você pode perguntar sobre isso em Super User .)

1 Esta parte é realmente importante - você mesmo pode testá-la executando explorer.exe logo após um comando que gerou um erro. Se você não fechar a janela do Explorer que bash abriu, $? mostrará o status de saída diferente de zero do comando antes de explorer.exe , mas quando você fechar o Explorer, $? será 0 (assumindo que nada deu errado com Explorer).

2 Advertência: Eu não tentei realmente este processo eu mesmo. Alguns ajustes podem ser necessários.

    
por 26.03.2018 / 23:34