window management: desenhe uma nova janela de gui na parte superior do painel de terminal que o lançou

0

fyi, eu uso o gerenciador de janelas do i3.

Uma das principais razões pelas quais prefiro aplicativos baseados em terminal é que eles usam o mesmo painel de janela que o shell em que os iniciei. Eu saio do programa, e estou de volta ao meu shell, com meu ambiente, workdir e toda a bondade do shell ainda lá.

Quando eu abro um programa de gui a partir do shell, por outro lado, ele gera um novo painel de janela, que normalmente eu apenas abordo com o shell pai. Eu posso querer esse comportamento às vezes, mas não geralmente porque é apenas mais um painel para percorrer. O Dmenu é uma solução para este problema, mas depois perco o meu ambiente, o workdir e a qualidade do shell.

Se eu pudesse de alguma forma dizer ao meu aplicativo GUI para desenhar sua janela na parte superior da janela do meu terminal, eu nem precisaria dos gostos do dmenu. Dmenu parece bastante redundante quando temos conchas ...

Alguma sugestão? Talvez alguém que tenha hackeado com o i3? Estou aberto para editar a fonte.

    
por Overdr0ne 17.10.2015 / 19:14

1 resposta

0

Depois de descobrir o bloco de anotações do i3, xdotool e o comando wait, eu criei este script um pouco hacky:

#!/usr/bin/env bash 

"$*" &                                                                                                                                                                                                             
 child="$!"                                                                                                                                                                                                         
 xdotool set_window --name "$!" 'xdotool getactivewindow'                                                                                                                                                           
 i3-msg move scratchpad                                                                                                                                                                                           
 wait $child                                                                                                                                                                                                        
 i3-msg [title="$child"] scratchpad show                                                                                                                                                                            
 i3-msg floating toggle

usage: launch-hide <my-gui-program>

Então, nomeio a janela do shell pai como pid do filho gui, envio para o scratchpad e, quando eu saio do processo filho, launch-hide é ativado, onde ele pega a janela do scratchpad com a criança correspondente pid.

Adicionar autocompletar:

complete -F _command launch-hide
    
por 17.10.2015 / 21:46