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 }'' }
- Executar
spacefm
com os mesmos argumentos$*
foram passados para a função,&
no plano de fundo -
pgrep spacefm | head -1
obtém o PID do processo principal que está na cabeça e armazena empid
variable -
sleep 1
espera pelo novo processo no terminal, para evitar o aumento de duas janelas (não sei por que, tente removê-lo) -
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
-
wmctrl -i -R WID
Mova a janela WID para a área de trabalho atual, levante a janela e coloque-a em foco.
- Executar
-
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"
-
wmctrl -lp
obter lista de janelas| grep " $pid"
filtrar os relacionados aspacefm
,| tail -1
filtrar a última linha / janela e depois| awk '{ print $1 }'
ID da janela de filtro (WID) que está na primeira coluna$1
-
wmctrl -i -R WID
Mova a janela WID para a área de trabalho atual, levante a janela e coloque-a em foco. - 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.