Используя нижеприведенный сценарий для переключения видимости (с комбинацией клавиш), вы можете иметь скрытое окно терминала (полностью), как если бы оно не существовало, в то время как другое окно терминала остается видимым в пусковой установке при минимизации.
Трюк заключается в создании отдельного профиля в настройках gnome-terminal с отличительным именем в заголовке окна. Это позволяет идентифицировать окно терминала с помощью команды wmctrl -l и отменить его с помощью команды windowunmap xdotool, сделав ее невидимой в Launcher.
Вам нужно будет установить комбинацию клавиш для переключения видимости окна терминала, поскольку она не видна в панели запуска (см. ниже).
Скрипт должен быть установлен как xdotool, так и wmctrl:
sudo apt-get install xdotool
sudo apt-get install wmctrl
Затем:
Создайте отдельный профиль в gnome-terminal: выберите «Редактировать»> «Профили», нажмите «Создать». Назовите новый профиль (точно) «Скрытый» На вкладке «Название и команда» установите заголовок окна (точно) «Hidden_Profile», который будет помещен перед заголовком окна: N.B. Возможно, вам придется выйти из системы, чтобы профиль был «загружаемым», если профиль работает, запустив команду:gnome-terminal --window-with-profile=Hidden
появится окно с надписью «Hidden_profile» в заголовке окна: скопируйте сценарий ниже в пустой файл, сохраните его как run_hidden.py. Протестируйте его командой: python3 /path/to/run_hidden.py
. Что он должен делать: запустите его, если оконное окно из отдельного профиля не запущено: новый терминал должен открыться из отдельного («конюшня») профиль. Запустите его во второй раз: окно будет (полностью) скрыто, также из запуска. Запустите его в третий раз: окно должно появиться снова. Если все работает нормально, добавьте (команду для запуска) сценарий в комбинацию клавиш : выберите: Настройки системы> «Клавиатура»> «Ярлыки»> «Пользовательские ярлыки». Нажмите «+» и добавьте команду: python3 /path/to/run_hidden.py
#!/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"])
Сценарий использует wmctrl для идентификации окна по его (window-) имени, поскольку мы дали его в отдельно созданный профиль для этой цели. Как только у нас есть id, мы можем отменить его командой xdotool windowunmap.
Чтобы убедиться, что мы можем снова открыть окно, id хранится в скрытом файле ; если повторное сопоставление не удалось, сценарий завершает, что окно не открывается из специального профиля, и оно открывается по команде:
gnome-terminal --window-with-profile=Hidden