[РЕШЕНО]Максимально жесткое убийство окна в Sway - как? xkill for wayland

Стековые, фреймовые, динамические
lnx
Сообщения: 294
Зарегистрирован: 24.08.2022

#

Коллеги, команда, забинденная на кнопку вида -
     #средняя кнопка по заголовку окна прибивает окно
     --release button2 kill 
     #средняя кнопка + Вин прибивает окно в любой части
    --whole-window $mod+button2 kill 
    # привибает окно в фокусе
    $mod+Shift+ space focus kill
    
    }

в реальности не прибивает жестко окно, а предполагает штатный выход из программы, с запросом необходимости сохранения открытых файлов и пр., что не решает вопрос с прибитием окна, скажем, при подвисании программы. Есть ли более жесткое решение? Забиндить exec kill -p ...., так это уже целый скрипт, поскольку надо бы пид процесса знать.

Решени подсказал уважемый тов. Arhei https://archlinux.com.ru/forum/viewtopi ... 193#p9193-
Arhei: а вот еще вариант в догонку
swaymsg -t get_tree | jq -r '..|select(.app_id)?| (.pid|tostring) +"\t"+ .app_id +" "+ .name' | sort -nr | fzf --accept-nth 1 --multi | xargs kill -9
кидаем в скрипт чтобы не заморачиваться с экранированием, ну а в конфиге sway прописываем запуск через терминал
bindsym ... exec foot sway-windows-kill9.sh
по итогу у нас получиться "менюшка" по выборочному убиванию запущенных окон в sway
Последний раз редактировалось lnx 28.07.2025 21:48, всего редактировалось 4 раза.
ALiEN
Аватара пользователя
Сообщения: 273
Зарегистрирован: 23.08.2022

#

У вас очень много вопросов по sway. Может быть, стоит сначала документацию почитать, разобраться, так сказать, в теме - прежде чем плодить бесполезные темы?

kill - адекватное завершение процесса. Если вам нужно kill -9 - значит, что-то идет не так.

🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

vasek
Сообщения: 563
Зарегистрирован: 31.08.2022

#

lnx - что конкретно имеется в виду ???

Ошибки не исчезают с опытом - они просто умнеют

vall
Аватара пользователя
Администрация
Сообщения: 937
Зарегистрирован: 09.08.2022

#

lnx:Коллеги,
Прошу Вас обратить внимание, что как выше справедливо было отмечено, создание уже шестой темы по вопросам sway -- немного перебор. Всё вполне могло уместится в одном топике. К примеру, "Опыт и сложности перехода на sway".

Всё-таки имеются отличия между личным блогом и общим форумом. Надеялся, что вмешиваться не придётся. Но вынужден это сделать. В дальнейшем, коллега inx, постарайтесь по теме sway обойтись уже созданными ветками. Лучше, если дадите свои собственные предложения по объединению их (веток).

В дисциплинарном плане остановимся на этом устном замечании. Спасибо за понимание.
lnx
Сообщения: 294
Зарегистрирован: 24.08.2022

#

ALiEN: У вас очень много вопросов по sway. Может быть, стоит сначала документацию почитать, разобраться, так сказать, в теме - прежде чем плодить бесполезные темы?

kill - адекватное завершение процесса. Если вам нужно kill -9 - значит, что-то идет не так.

За подсказку - спасибо, но не работает. По тезисам о бесплодности и плодовитости есть возражения: проводя, прежде, чем задать вопрос, как минимум попытки самостоятельного ответа на вопросы, скажу о результатах - поисковая выдача должна бы по-хорошему отвечать буквально первыми строками и для этого по-хорошему тема должна соответствовать запросу, что приводит к дроблению простыни а-ля убонтофорум на отдельные темы. Вы же не настаиваете на логике: Другие DE - это одна тема и незачем дробить и т.п., а создаете подраздел Другие DE. Возможно, кстати, что Sway, как и i3, заслуживают своего подраздела.

Что касается документации, читанной, кстати. Команды sway или его кейбиндинг слоем, иерархией выше, чем кейбиндинг обслуживаемых программ и потому, например, когда в Sway не срабатывает вызов скрипта по F5 в Geany, забиндив этот же скрипт на кнопку силами sway получаем искомы результат, или раздражающие вызовы всевозможных хэлпов по F1 меняем на калькулятор. В документации https://man.archlinux.org/man/sway.5.en про kill сказано лишь -
kill
Kills (closes) the currently focused container and all of its children.
Kill же из консоли помимо известного -9 требует указания того, к чему отнести -
~$ kill
kill: использование: kill [-s назв_сигнала | -n номер_сигнала | -назв_сигнала] ид_процесса | назв_задания] ... или kill -l [назв_сигнала]
Т.е. со всей очевидностью sway использует свой kill. В чем вопрос и состоял. И посдказанное ALiEN решение -9 является скорее всего опытом, сыном ошибок трудных, сиречь МНТ, но не из указанной документации. Впрочем, попробовал и не прибивает, обрабатывается как просто kill
    --whole-window $mod+button2 kill -9

vasek
Сообщения: 563
Зарегистрирован: 31.08.2022

#

lnx:прибивает окно
Прибивается не окно, а прога --- нет проги нет окна
( не совсем верно --- окно в Sway - это элемент графического интерфейса, который позволяет открывать приложения)

Если есть проблемы то … kill в console
kill (= kill -15)- безопасный и правильный способ завершения процесса.
kill -9 - небезопасенный способ жестокого убийства процесса.
killall (killall firefox) - обнаружит все процессы, с таким именем и завершит их.

PS - в config прописано так
# Kill focused window
bindsym --to-code $mod+Shift+c kill
... прибьёт текущее окно/процесс независимо от раскладки ...

PS-2 - рекомендую man 5 sway

Ошибки не исчезают с опытом - они просто умнеют

Arhei
Сообщения: 51
Зарегистрирован: 04.07.2025

#

нужно всего лишь вычислить pid активного окна, вот один из вариантов как это можно сделать:
swaymsg -t subscribe "['window']" | jq '.container.pid'
сработает при щелчке мышкой по окну которое нужно "убить"
ну и вешаем это всё на кнопку
bindsym ... exec kill -9 $(swaymsg -t subscribe "['window']" | jq '.container.pid')
работает просто - жмём комбинацию, наводим мышкой на окно, щёлкаем
vasek
Сообщения: 563
Зарегистрирован: 31.08.2022

#

непонятно для чего это нужно ... для чего убивать окно ???

PS -
vasek:окно в Sway - это элемент графического интерфейса, который позволяет открывать приложения
... и его (окно) нельзя убить ... но их количество можно уменьшить

Ошибки не исчезают с опытом - они просто умнеют

lnx
Сообщения: 294
Зарегистрирован: 24.08.2022

#

Ну бывает, что программа зависает или, из-за ошибки в коде (g-code например), возникает замкнутый цикл и программа выедает всю память до полного падения - оперативное прибитие избавляет от проблем.
vasek
Сообщения: 563
Зарегистрирован: 31.08.2022

#

lnx:программа зависает или, из-за ошибки в коде (g-code например), возникает замкнутый цикл и программа выедает всю память до полного падения
нужно убить программу, окно здесть не причем ... и нужно найти причину зависания ..... что за прога???

Ошибки не исчезают с опытом - они просто умнеют

lnx
Сообщения: 294
Зарегистрирован: 24.08.2022

#

Не одна. И причины бывают понятны. Типовой пример - делаю g-code ручным редактированием, неудачно организую цикл, и linuxcnc послушно исполняет вечный цикл до самоубийства, но цепляясь за жизнь, держится до последнего, а поскольку причиная становится ясна сразу, хочется избавить его от агонии ручным прибитием. Инкскейп запросто может взлететь с той же целью, обрабатывая (создавая) файл машинной вышивки при самопересеающихся контурах. Переходом на Sway я избавился от изматывающих и неопределенных (к какому именно окну программы, открытой в нескольких экзмеплярах, оно относится?!) гномовых уведомлений об "окно не откликается" (что не значило зависания, значили лишь "оно задумалось"). Но лишился возможности прибития без перехода в терминал и там через Htop. FreeCAD при обработке 3-д поверхностей может думать на 20 ядрах минут 30-50 и ничего не родить, но по хронике загрузки в HTOP опытный диагност уже понимает, что "так оно и будет" (когда и в каком порядке сколько ядер загружено) и т.п. Короче - такая возможность нужна. Прибитие суровой клавишей.
lnx
Сообщения: 294
Зарегистрирован: 24.08.2022

#

vasek:
PS-2 - рекомендую man 5 sway

Его выше и цитировал, прочтен он, уж коли сам на него ссылаюсь в https://archlinux.com.ru/forum/viewtopic.php?t=5152
lnx
Сообщения: 294
Зарегистрирован: 24.08.2022

#

Arhei: работает просто - жмём комбинацию, наводим мышкой на окно, щёлкаем
Не идет.

Пытался двумя вариантами -

     --release button2 exec kill -9 $(swaymsg -t subscribe "['window']"  | jq '.container.pid')
     
     $mod + Shit + Crtl exec kill -9 $(swaymsg -t subscribe "['window']"  | jq '.container.pid')

и так тоже -
 --release button2 exec kill -9 -p $(swaymsg -t subscribe "['window']"  | jq '.container.pid')
     
     $mod + Shit + Crtl exec kill -9 -p $(swaymsg -t subscribe "['window']"  | jq '.container.pid')

не прибивает.
vasek
Сообщения: 563
Зарегистрирован: 31.08.2022

#

Как и не понял - какую прогу нужно прибить ???
vasek:что за прога???
если linuxcnc , то покажи вывод pidof linuxcnc ... после его запуска

Ошибки не исчезают с опытом - они просто умнеют

lnx
Сообщения: 294
Зарегистрирован: 24.08.2022

#

vasek: если linuxcnc , то покажи вывод pidof linuxcnc ... после его запуска
он запускает сколько-то процессов, и ни один из них так прямо не называется. Но один из них называется -

pidof milltask
382441

Однако нет задачи создать клавишу прибития КОНКРЕТНОЙ программы, так я сам могу. Стоит задача сделать жесткое прибитие луюбого выбранного окна.
Arhei
Сообщения: 51
Зарегистрирован: 04.07.2025

#

lnx:не прибивает.
а если запускать с терминала
kill -9 $(swaymsg -t subscribe "['window']"  | jq '.container.pid')
срабатывает ?
vasek
Сообщения: 563
Зарегистрирован: 31.08.2022

#

lnx:Стоит задача сделать жесткое прибитие луюбого выбранного окна.
Существует простой инструмент под названием xkill, который позволяет закрывать неотвечающее окно графического интерфейса.
Просто зайдите в эмулятор терминала Linux и введите xkill. Он превратит ваш курсор мыши в кнопку X, которую можно использовать для уничтожения любого окна GUI. Теперь все, что нужно сделать, это просто щелкнуть по панели окна не отвечающего приложения, и оно будет убито и мгновенно исчезнет.

В sway это работает ...

Ошибки не исчезают с опытом - они просто умнеют

lnx
Сообщения: 294
Зарегистрирован: 24.08.2022

#

xkill - это же для X11. А мы в вайланде.
vasek
Сообщения: 563
Зарегистрирован: 31.08.2022

#

lnx:xkill - это же для X11. А мы в вайланде.
pidof sway
459
работать firefox
pidof firefox
9920 9883 9857 9796 9784 9782 9753 9746 9707 9670 9648 9583
… удалить можно так
1. xkill .... щелкнуть по панели окна не отвечающего приложения, и оно будет убито
Select the window whose client you wish to kill with button 1....
xkill: killing creator of resource 0x40002
… запускаем firefox
pidof firefox
10219 10211 10209 10207 10141 10135 10097 10070 10005
2. killall firefox
… запускаем firefox
pidof firefox
10706 10682 10644 10619 10491 10401 10207 10141 10135 10097 10070 10005

Ошибки не исчезают с опытом - они просто умнеют

lnx
Сообщения: 294
Зарегистрирован: 24.08.2022

#

xkill
bash: xkill: command not found

pacman -S xorg-xkill
и прибивает, предсказуемо, только иксовые приложения, linuxcnc да, прибивает, palemoon + FreeCAD тоже, а вот инкскейп и любые вайландовые - нет. Но как промежуточное решение, до универсального, спасибо, годится. И прекрасная наводка на тему для поиска, пошел искать-читать xkill for wayland и не нашел ничего путного.
Ответить