Как перейти к открытому терминалу со всеми другими минимизированными окнами?

Я хотел бы создать ярлык для уменьшения всех окон и доступа к моему - открытый терминал. Я знаю, что команда ctrl+super+D минимизирует каждый окна, но я хочу самый простой путь. (человечность 14.04)

2
задан 1 October 2016 в 01:49

1 ответ

Сценарий ниже может сделать то, что Вы хотите. Использование очень просто: свяжите это с сочетанием клавиш и дайте ему класс окна терминала. Выполните шаги ниже

1. Сохраните файл

Предпочтительно, это должно быть сохранено в Вашей домашней папке под ~/bin каталог. Если у Вас нет того каталога, создайте его.

Удостоверьтесь, что сценарий имеет исполняемые полномочия с chmod +x как так.

 $ chmod +x ~/bin/get_terminal.py 

2. Выясните WM_CLASS своего терминала.

Использовать xprop команда, чтобы сделать так (это позволит Вам выбрать окно, Вы хотите проверить изменение Вашего курсора в x символ):

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

Любая из получивших строк сделает.

3. Свяжите с сочетанием клавиш

Под Параметрами настройки системы-> Клавиатура-> Ярлыки-> Пользовательский. Добавьте следующую запись:

enter image description here

Команда, используемая там:

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

Заметьте, что я дал его, полный путь и WM_CLASS заключаются в кавычки

Сочетанием клавиш, которое я установил, является CtrlSuperG, но Вы свободны использовать другие привязки клавиш также.

Источник сценария

#!/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() 

3
ответ дан 2 December 2019 в 02:50

Другие вопросы по тегам:

Похожие вопросы: