Evite executar vários programas [closed]

1

Alguns programas, por exemplo. firefox , permite ter várias instâncias. Embora isso seja útil em alguns casos (por exemplo, new xterm instance), geralmente acabo tendo um número enorme.

É possível configurar quais programas devem ter apenas uma instância?

    
por sitilge 21.07.2016 / 16:22

1 resposta

3

Eu inicio meus aplicativos GUI principalmente com atalhos de teclado e, para aplicativos que eu quero apenas uma instância, aponto esses atalhos para um wrapper que me fornece a última instância em execução (e coloca essa janela na frente) ou cria uma nova instância, se não houver uma.

Eu tenho:

lonew :

#!/bin/sh -e
#lastof or new -- try lastof and give me a new instance if it failed
cmd=$1; shift
lastof "$cmd" || exec "$cmd" "$@"

lastof :

#!/bin/sh -e
#give me the last used instance of the GUI app matching $@

results=$(xdotool search "$@")
result=$(echo "$results" | 
    while read -r id; do echo "$(xprop -id $id '_NET_WM_USER_TIME')" "$id"; done | 
    sed -n 's/.*= //p' |sort -n |
    tail -1| cut -d\  -f2
)
[ -n "$result" ] || result=$(echo "$results" | tail -1)
exec xdotool windowactivate "$result"

Para dar um exemplo, minhas configurações de atalho para iniciar meu emulador de terminal são:

Ctrl+Alt+K : lonew konsole
Ctrl+Shift+Alt+K :  konsole #force a new instance

Alguns aplicativos, como o banshee ou o thunderbird, gerenciam essa parte de uma única instância com eficiência, mas acho conveniente ter uma solução autônoma do tipo "faça uma coisa e você faz bem", que posso usar qualquer aplicativo que eu quero.

Dependências: xprop, xdotool

    
por 21.07.2016 / 16:55