Criando atalhos para executar aplicativos condicionalmente

5

Eu queria saber se é possível criar um atalho de teclado para executar o aplicativo se ele ainda não estiver em execução no Ubuntu?

Este é um exemplo válido para algo como um navegador que normalmente é muito usado, e você realmente não gostaria de executar outra instância dele se já existir um (em vez disso, apenas ative a janela).

    
por Leonid 21.06.2011 / 22:43

2 respostas

4
  1. Salve o seguinte script em sua pasta pessoal como launch_chrome.py :

    #!/usr/bin/env python
    
    import subprocess
    import wnck
    import gtk
    import time
    
    
    screen = wnck.screen_get_default()
    while gtk.events_pending():
        gtk.main_iteration()
    
    window_list = screen.get_windows_stacked()
    
    last_active = None
    for window in window_list:
        if window.get_application().get_name() == "Google Chrome":
            last_active = window
    
    if last_active:
    
        timestamp = int(time.time())
        last_active.activate(timestamp)
    
    else:
    
        subprocess.Popen("google-chrome")
    
  2. Torne o script executável:

    chmod +x ~/launch_chrome.py
    
  3. Use o comando /home/<YOURUSERNAME>/launch_chrome.py quando adicionando um atalho .

Quando este atalho é ativado, ele irá:

  1. Inicie uma nova janela do Chrome se ainda não houver nenhuma ou
  2. coloque em destaque a janela do Google Chrome usada recentemente.
por Isaiah 22.06.2011 / 01:51
3

No Ubuntu existe um pacote chamado run-one que está perto do que você pergunta.

Eu relato a descrição:

 This utility will run just one instance at a time of some command and
 unique set of arguments (useful for cronjobs, eg).

Em relação ao atalho de teclado, veja aqui Como usar um atalho de atalho para executar um lançador? .

Em relação ao "se já existe um, basta ativar a janela", não sei. Nem todos os aplicativos têm uma janela, eles podem ter zero ou mais de uma janela. E mesmo no caso de uma única janela, não conheço uma maneira simples de mapear um processo para sua janela.

    
por enzotib 21.06.2011 / 23:16