Это неудачная ошибка в Unity. Кто-то отправил обходной путь, хотя я сам не пробовал.
Это не работает с Wayland! Если вы используете Ubuntu 17.10 или новее и не меняете использование Xorg при входе в систему, это решение не для вас.
Для таких задач я использую xdotool, вам может потребоваться установить это сначала:
sudo apt install xdotool
Вот мой скрипт:
#!/bin/bash
search="--class xterm"
a=$(xdotool getactivewindow getwindowpid)
b="$(xdotool search $search getwindowpid %@)"
for i in $b; do
[[ $a -ne $i ]] &&
echo kill $i
done
Как вы не упомянули, какой эмулятор терминала вы используете, я написал скрипт для xterm здесь, но вы можете легко изменить это, изменив цитированную часть во второй строке. --class xterm - это опция xdotool --search, которая соответствует окнам класса окна xterm. Прочтите раздел «WINDOW COMMANDS» man xdotool, чтобы узнать об этих параметрах, чтобы проверить их использование
xdotool getactivewindow getwindowpid
, чтобы получить PID активного терминала и
xdotool search YOUROPTIONS getwindowpid %@
[d8 ], чтобы получить PID всех окон, соответствующих YOUROPTIONS, например xdotool search --all --name yourwindowsname --desktop 1 --class getwindowpid %@
, чтобы соответствовать всем окнам с именем yourwindowsname, находящимся на рабочем столе 1. --all означает, что оба условия должны быть выполнены (логические «и»), по умолчанию это --any с противоположным значением.
Когда вы все настроены, и сценарий выводит правильные команды, удалите echo из него, чтобы выполнить действия kill.
Оказывается, что для KDE konsole PID, сообщенный xdotool, одинаковый для каждого окна, поэтому нам нужен этот немного другой подход:
#!/bin/bash
search="--onlyvisible --class konsole"
a=$(xdotool getactivewindow)
b="$(xdotool search $search)"
for i in $b; do
[[ $a -ne $i ]] &&
xdotool windowclose $i
done
Это не работает с Wayland! Если вы используете Ubuntu 17.10 или новее и не меняете использование Xorg при входе в систему, это решение не для вас.
Для таких задач я использую xdotool, вам может потребоваться установить это сначала:
sudo apt install xdotool
Вот мой скрипт:
#!/bin/bash
search="--class xterm"
a=$(xdotool getactivewindow getwindowpid)
b="$(xdotool search $search getwindowpid %@)"
for i in $b; do
[[ $a -ne $i ]] &&
echo kill $i
done
Как вы не упомянули, какой эмулятор терминала вы используете, я написал скрипт для xterm здесь, но вы можете легко изменить это, изменив цитированную часть во второй строке. --class xterm - это опция xdotool --search, которая соответствует окнам класса окна xterm. Прочтите раздел «WINDOW COMMANDS» man xdotool, чтобы узнать об этих параметрах, чтобы проверить их использование
xdotool getactivewindow getwindowpid
, чтобы получить PID активного терминала и
xdotool search YOUROPTIONS getwindowpid %@
, чтобы получить PID всех окон, соответствующих YOUROPTIONS, например
xdotool search --all --name yourwindowsname --desktop 1 --class getwindowpid %@
, чтобы соответствовать всем окнам с именем yourwindowsname, находящимся на рабочем столе 1. --all означает, что оба условия должны быть выполнены (логические «и»), по умолчанию это --any с противоположным значением.
Когда вы все настроены, и сценарий выводит правильные команды, удалите echo из него, чтобы выполнить действия kill.
Оказывается, что для KDE konsole PID, сообщенный xdotool, одинаковый для каждого окна, поэтому нам нужен этот немного другой подход:
#!/bin/bash
search="--onlyvisible --class konsole"
a=$(xdotool getactivewindow)
b="$(xdotool search $search)"
for i in $b; do
[[ $a -ne $i ]] &&
xdotool windowclose $i
done
Это не работает с Wayland! Если вы используете Ubuntu 17.10 или новее и не меняете использование Xorg при входе в систему, это решение не для вас.
Для таких задач я использую xdotool, вам может потребоваться установить это сначала:
sudo apt install xdotool
Вот мой скрипт:
#!/bin/bash
search="--class xterm"
a=$(xdotool getactivewindow getwindowpid)
b="$(xdotool search $search getwindowpid %@)"
for i in $b; do
[[ $a -ne $i ]] &&
echo kill $i
done
Как вы не упомянули, какой эмулятор терминала вы используете, я написал скрипт для xterm здесь, но вы можете легко изменить это, изменив цитированную часть во второй строке. --class xterm - это опция xdotool --search, которая соответствует окнам класса окна xterm. Прочтите раздел «WINDOW COMMANDS» man xdotool, чтобы узнать об этих параметрах, чтобы проверить их использование
xdotool getactivewindow getwindowpid
, чтобы получить PID активного терминала и
xdotool search YOUROPTIONS getwindowpid %@
, чтобы получить PID всех окон, соответствующих YOUROPTIONS, например
xdotool search --all --name yourwindowsname --desktop 1 --class getwindowpid %@
, чтобы соответствовать всем окнам с именем yourwindowsname, находящимся на рабочем столе 1. --all означает, что оба условия должны быть выполнены (логические «и»), по умолчанию это --any с противоположным значением.
Когда вы все настроены, и сценарий выводит правильные команды, удалите echo из него, чтобы выполнить действия kill.
Оказывается, что для KDE konsole PID, сообщенный xdotool, одинаковый для каждого окна, поэтому нам нужен этот немного другой подход:
#!/bin/bash
search="--onlyvisible --class konsole"
a=$(xdotool getactivewindow)
b="$(xdotool search $search)"
for i in $b; do
[[ $a -ne $i ]] &&
xdotool windowclose $i
done