(LINUX) Abrir aplicativo e retornar Hex(window ID) da janela aberta

Estou tentando desenvolver um projeto pessoal para estudos e me deparei com o seguinte problema, envio um código para o “Terminal” executar e necessito que ele me retorne o HEX( ou id) da janela do aplicativo que foi aberto.

Process p;
Runtime.getRuntime().exec("_meuCodigoAqui");

O codigo “wmctrl -a” obtêm todas as informações das janelas abertas inclusive o HEX, eu poderia salvar o HEX existente e comparar qual é o novo HEX e salvar o mesmo na variavel, existe um meio mais “limpo e otimizado” pra eu só coletar o HEX direto do Processo criado no Runtime??

A classe Process, a partir do java versão 9, tem o método pid(), que retorna o id do processo.

FONTE: https://docs.oracle.com/javase/9/docs/api/java/lang/Process.html#pid--

Acabei me expressando mal na pergunta, ele realmente retorna o PID ( process id) mas eu precisaria do “window id”, até consigo fazer uma nova solicitação no terminal para procurar a janela que esse processo está utilizando(caso houver). Mas queria diminuir o acesso ao terminal de algum modo apenas para conhecimento. Acabei fazendo exatamente isso.
No linux posso utilzar o xdotool ou o xterm mas não queria ter que instalar um novo pacote.

Contornei o problema com a seguinte solução, um metodo para Executar os comandos e retornar as informações.

    private List<String> ExecuteComandTerminal(String command) throws IOException{
    String[] args = new String[] {"/bin/bash", "-c", command, "with", "args"};
        Process proc = new ProcessBuilder(args).start();

        BufferedReader stdInput = new BufferedReader(new 
             InputStreamReader(proc.getInputStream()));

        String s = null;
        List<String> result = new ArrayList<>();

        while ((s = stdInput.readLine()) != null) {
                result.add(s);
        }
    return result;
}

O metodo para chamar o método anterior e comparar as hex antes de abrir o app e depois.

    private void OpenWindowSaveHex() throws IOException, InterruptedException{
        List<String> hexAntes = new ArrayList<>();
        List<String> hexDepois = new ArrayList<>();
        hexAntes = ExecuteComandTerminal(pathGetAllHex);
        ExecuteComandTerminal(tibiaPath);
        hexDepois = ExecuteComandTerminal(pathGetAllHex);
        hexDepois.removeAll(hexAntes);
       
        for (int i = 0; i < hexDepois.size(); i++) {
        System.out.println(hexDepois.get(i));
    }
            
    
}

Acredito que é a solução, infelizmente me informaram em outro local que eu teria que instalar os pacotes e fazer a solicitação, para reaproveitar código eu fiz desta maneira.