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()