Como pular para um terminal aberto com todas as outras janelas minimizadas?

3

Eu gostaria de criar um atalho para minimizar todas as janelas e acesso ao meu terminal aberto. Eu conheço o comando ctrl + super + D para minimizar todas as janelas, mas quero um jeito bem simples. (Ubuntu 14.04)

    
por Kevin Carroll 01.10.2016 / 00:49

1 resposta

3

O script abaixo pode fazer o que você quiser. O uso é muito simples: vincule isso a um atalho de teclado e forneça a classe de janela do terminal. Siga os passos abaixo

1. Salve o arquivo

Preferencialmente, ele deve ser salvo em sua pasta pessoal no diretório ~/bin . Se você não tiver esse diretório, crie-o.

Certifique-se de que o script tenha permissões executáveis com chmod +x .

 $ chmod +x ~/bin/get_terminal.py 

2. Descubra o WM_CLASS do seu terminal.

Use o comando xprop para fazer isso (ele permitirá que você selecione a janela que deseja verificar alterando seu cursor para o símbolo x):

$ xprop WM_CLASS                                                               
WM_CLASS(STRING) = "gnome-terminal-server", "Gnome-terminal"

Qualquer uma das strings resultantes fará isso.

3. Vincular ao atalho de teclado

Em Configurações do sistema - > Teclado - > Atalhos - > Personalizadas. Adicione a seguinte entrada:

Ocomandousadoaquié:

python3/home/xieerqi/bin/get_terminal.py"Gnome-terminal"

Observe que dei o caminho completo e o WM_CLASS está entre aspas

O atalho de teclado que eu configurei é Ctrl Super G , mas você está livre para usar outras combinações de teclas também.

Origem do script

#!/usr/bin/env python3
#from __future__ import print_function
import gi
gi.require_version('Gdk', '3.0')
from gi.repository import Gdk
import subprocess
import time
import os
import sys

def run_cmd(cmdlist):
    """ Reusable function for running external commands """
    new_env = dict(os.environ)
    new_env['LC_ALL'] = 'C'
    try:
        stdout = subprocess.check_output(cmdlist, env=new_env)
    except subprocess.CalledProcessError:
         print('FAIL:' + repr(cmdline))
    else:
        if stdout:
            return stdout

def main():

    if len(sys.argv) < 2:
       sys.stderr.write("REQUIRES WM_CLASS\n")
       sys.exit(1)

    screen = Gdk.Screen.get_default()
    for window in screen.get_window_stack():
        xid = int(window.get_xid())
        wm_class = run_cmd(['xprop','-notype','WM_CLASS','-id',str(xid)])
        if sys.argv[1] in wm_class.decode():
            window.focus(int(time.time()))
            window.process_all_updates()
        else:
            window.iconify()
            window.process_all_updates()

if __name__ == '__main__':
    main() 
por Sergiy Kolodyazhnyy 01.10.2016 / 01:39