Posso forçar a abertura da janela em cima de outras janelas quando abertas pelo atalho de teclado?

4

Eu uso o SpaceFM como meu gerenciador de arquivos primário no Ubuntu. Normalmente, abro a pasta diretamente por atalhos de teclado, por exemplo, Ctrl+Super+W abre minha pasta de trabalho.

Especificamente, eu uso executar o comando spacefm -w /home/rasmus/Work/ pelo atalho acima, com o -w garantindo que o SpaceFM abra uma nova janela.

No entanto, essa nova janela nem sempre é aberta na parte superior da última janela ativa no espaço de trabalho. Isso é bastante irritante, pois significa que às vezes tenho que "cavar" para a janela recém-aberta.

Então, minha pergunta é: há algo adicional que eu possa adicionar ao comando executado que garantirá que a nova janela seja aberta na parte superior?

Soluções alternativas para o mesmo efeito são bem-vindas.

    
por Rasmus 18.03.2013 / 12:57

2 respostas

1

Como spacefm usou um único processo. O novo comando apenas passa o sinal para o processo em execução e isso cria a nova janela no nível logo acima da última janela criada.

sudo apt-get install wmctrl
  • Com função: Tem um atraso de 1 segundo.

    sfm() { spacefm $* & pid='pgrep spacefm | head -1'; sleep 1;  wmctrl -i -R 'wmctrl -lp | grep " $pid" | tail -1 | awk '{ print $1 }'' }
    
    1. Executar spacefm com os mesmos argumentos $* foram passados para a função, & no plano de fundo
    2. pgrep spacefm | head -1 obtém o PID do processo principal que está na cabeça e armazena em pid variable
    3. sleep 1 espera pelo novo processo no terminal, para evitar o aumento de duas janelas (não sei por que, tente removê-lo)
    4. wmctrl -lp obter lista de janelas | grep " $pid" filtrar os relacionados a $pid , | tail -1 filtrar a última linha / janela e depois | awk '{ print $1 }' ID da janela de filtro (WID) que está na primeira coluna $1
    5. wmctrl -i -R WID Mova a janela WID para a área de trabalho atual, levante a janela e coloque-a em foco.
  • Com alias: Isto aumentará 2 janelas na nova, mas mais simples.

    alias sfm="wmctrl -i -R \'wmctrl -lp | grep ' $(pgrep spacefm)' | tail -1 | awk '{ print $1 }'\'; spacefm"
    
    1. wmctrl -lp obter lista de janelas | grep " $pid" filtrar os relacionados a spacefm , | tail -1 filtrar a última linha / janela e depois | awk '{ print $1 }' ID da janela de filtro (WID) que está na primeira coluna $1
    2. wmctrl -i -R WID Mova a janela WID para a área de trabalho atual, levante a janela e coloque-a em foco.
    3. Execute spacefm com argumentos depois. A nova janela será criada no topo.

- Como usar: caminho semelhante ao comando original.

    sfm -w /home/rasmus/Work/

Referências: Por favor, procure as man páginas.

    
por user.dz 13.06.2014 / 03:39
0

É uma pergunta antiga, mas ainda relevante, por isso vou adicionar uma solução alternativa.

Isso soa como resultado da prevenção de foco do Compiz, tentando evitar que o Windows "roube" o foco enquanto você está trabalhando em outro lugar.

A prevenção de foco pode ser definida em níveis diferentes (padrão: baixo) ou completamente desativada por meio do Gerenciador de configurações do CompizConfig.

Se ainda não estiver instalado, faça isso executando:

sudo apt-get install compizconfig-settings-manager

Em seguida, execute-o com ccsm , navegue até Opções gerais e mude para a guia Foco & amp; Eleve o comportamento e altere o campo Focus Prevention Level (no seu caso, você provavelmente desejará Off ).

    
por Cedric Reichenbach 15.08.2016 / 14:20