Ocultar um dos dois terminais no lançador?

3

Estou usando o Ubuntu 14.04 e estou tentando remover um programa em execução do iniciador.

Especificamente, quero lançar dois terminais. Uma é para o meu trabalho normal com várias abas, a outra é necessária para uma conexão ssh em execução. Eu quero esconder o segundo do lançador e "minimizar a bandeja" (é assim que eu chamaria no Windows).

Existe uma maneira de fazer isso?

    
por Feroc 10.03.2015 / 15:14

4 respostas

3

Para que você possa aceitar a solução escolhida como resposta, repito meu comentário acima. Embora seja apenas uma solução simples e não pode ser realmente concorrente com a resposta impressionante do @ JacobVlijm !

Então, minha sugestão para você era apenas ativar o uso de espaços de trabalho diferentes no painel de configurações do sistema. Quando você tem uma janela aberta em um espaço de trabalho, ela não é visível nos outros.

Mas com o Unity, o ícone no Iniciador é destacado de qualquer maneira, mesmo que a única janela aberta esteja em outro espaço de trabalho.
Em outros DEs (eu sei XFCE e LXDE), este não é o caso. O painel / barra de tarefas não mostra programas em execução de espaços de trabalho inativos lá.

    
por Byte Commander 17.03.2015 / 16:00
3

Usando o script abaixo para alternar a visibilidade (com uma combinação de teclas), você pode ter uma janela de terminal (completamente) oculta quando minimizada, como se não existisse, enquanto outra janela de terminal fica visível no inicializador quando minimizada.

Crie um perfil separado para a janela de terminal oculta

O truque é criar um perfil separado nas preferências gnome-terminal , com um nome distinto no título da janela. Isto torna possível identificar a janela de terminal com o comando wmctrl -l e unmap com xdotool 's comando windowunmap , tornando-o invisível no Iniciador.

Alternar visibilidade / abrir uma janela "ocultável" com uma combinação de teclas

Você terá que configurar uma combinação de teclas para alternar a visibilidade da janela do terminal, já que ela não é visível no lançador (veja mais abaixo).

Como configurar

O script precisa dos dois xdotool e wmctrl a serem instalados:

sudo apt-get install xdotool
sudo apt-get install wmctrl

Então:

  1. Crie um perfil separado em gnome-terminal preferences: escolha "Editar" > "Perfis", clique em "Novo".

    • Nomeie o novo perfil (exatamente) como "Oculto"
    • Na guia "Título e comando", defina o título da janela como (exatamente) "Hidden_Profile", a ser colocado antes do título da janela:

      N.B.Vocêpodeterquesair/entrarparaqueoperfilseja"carregável"

  2. Teste se o perfil funciona executando o comando:

    gnome-terminal --window-with-profile=Hidden
    

    deve aparecer uma janela com "Hidden_profile" no título da janela:

  3. Copieoscriptabaixoemumarquivovazio,salve-ocomorun_hidden.py

  4. Testeocomandopelocomando:

    python3/path/to/run_hidden.py

    Oquedevefazer:

    • Execute-osenenhumajaneladeterminaldoperfilseparadoestiveremexecução:umnovoterminaldeveráabrirapartirdoperfilseparado("ocultável").
    • Execute uma segunda vez: a janela será (completamente) oculta, também a partir do iniciador
    • Execute uma terceira vez: a janela deve reaparecer
  5. Se tudo funcionar bem, adicione o (comando para executar-) o script a uma combinação de atalhos: escolha: Configurações do sistema > "Teclado" > "Atalhos" > "Atalhos personalizados". Clique no botão "+" e adicione o comando:

    python3 /path/to/run_hidden.py
    

O script

#!/usr/bin/env python3
import subprocess
import os

home = os.environ["HOME"]
hidden_windowid = home+"/.window_id.txt"

get = lambda cmd: subprocess.check_output(cmd).decode("utf-8")

def execute(cmd):
    subprocess.check_call(cmd)

try:
    w_id = [l.split()[0] for l in get(["wmctrl", "-l"]).splitlines() if "Hidden_Profile" in l][0]
    execute(["xdotool", "windowunmap", w_id])
    with open(hidden_windowid, "wt") as out:
        out.write(w_id)
except IndexError:
    try:
        with open(hidden_windowid) as read:
            w_id = read.read()
        execute(["xdotool", "windowmap", w_id])
    except subprocess.CalledProcessError:
        execute(["gnome-terminal", "--window-with-profile=Hidden"])

Explicação

O script usa wmctrl para identificar a janela por seu nome (window-), como atribuímos no perfil criado separadamente para essa finalidade. Quando tivermos o id , podemos remover o mapeamento com o comando xdotool ' windowunmap '.

Para garantir que a janela reaparece, o id é armazenado em um arquivo oculto; Se o mapeamento falhar, o script conclui que não há nenhuma janela aberta a partir do perfil especial e é aberta pelo comando:

gnome-terminal --window-with-profile=Hidden
    
por Jacob Vlijm 10.03.2015 / 20:50
1

Eu usei Tilda para isso no passado. Tem bom recurso de aparecer e se esconder como o homônimo fez em Doom ou Quake. Se você preferir a versão em Python, também está lá, o nome Guake .

É basicamente outro aplicativo de terminal, que se liga a um combo de teclas, e é mostrado apenas quando você pressiona o combo de teclas (também é claro).

sudo apt-get install guake - para Tilda ver a página.

Agora, obviamente, você não pode querer outro aplicativo terminal, pois um deles é suficiente. Alguns, porém, preferem mais de um, porque:

  • é um aplicativo diferente para um propósito diferente
  • é legal quando desliza para baixo, é legal ficar escondido quando não é necessário
  • eles gostaram do Quake
por LIttle Ancient Forest Kami 10.03.2015 / 17:53
0

Há uma opção interna para fazer isso, mas é um pouco problemática:

  1. Abra o primeiro Terminal (aquele que você quer que esteja visível) usando Ctrl + Alt + t
  2. Abra o segundo Terminal (aquele que você deseja ocultar) usando Ctrl + Alt + t .
  3. Faça do segundo Terminal a janela ativa, então pressione Ctrl + Alt + s e clique em outro lugar.

Para restaurar o terminal oculto, clique no ícone Terminal no inicializador.

O problema com este método é que, às vezes, devido a um bug, você precisa fechar todos os Terminais visíveis primeiro para que o Terminal oculto apareça novamente.

    
por kos 10.03.2015 / 15:39