Вопрос или проблема
Как предотвратить, чтобы другие приложения не отвлекали фокус от активного окна? Я нашел решения для других менеджеров окон, но ничего для “Metacity (Marco)” (менеджер окон графического интерфейса MATE).
Я не хочу каждый раз указывать, какое окно должно быть “всегда на переднем плане”, если это можно сделать автоматически каждый раз, когда я перехожу к новому окну.
Я определил менеджер окон, запустив wmctrl -m
.
ИЗМЕНЕНИЕ:
Я попробовал переключить флаг focus-new-windows
с smart
на strict
как для Gnome, так и для Mate(Marco):
$ gsettings set org.gnome.desktop.wm.preferences focus-new-windows strict
$ gsettings set org.mate.Marco.general focus-new-windows strict
Но это не сработало.
В общем, вам нужно установить расширение, чтобы устранить поведение в gnome-shell, где gnome показывает уведомление “Окно готово”, вместо того, чтобы предоставлять новое окно фокус. Расширение “Noannoyance” кажется лучше всего поддерживаемым, но также “Steal My Focus” или “Focus my window” вероятно все еще хорошо работают.
Ссылка: https://extensions.gnome.org/extension/2182/noannoyance/
Ответ или решение
Для предотвращения кражи фокуса другими приложениями в окружении рабочего стола MATE с оконным менеджером Metacity (Marco), необходимо рассмотреть несколько подходов. Проблема становится особенно важной для пользователей, которые хотят сосредоточиться на работе с конкретным приложением, без переключения фокуса.
1. Настройки управления фокусом окон
Первым шагом является проверка и изменение параметров управления фокусом. Вы уже попробовали установить флаг focus-new-windows
в режим strict
, что должно помочь, однако не всегда это даёт ожидаемый результат в зависимости от поведения некоторых приложений. Параметры управления фокусом окон можно изменить с помощью команд, которые вы уже использовали:
gsettings set org.mate.Marco.general focus-new-windows strict
2. Использование автоматизации
Если изменения настроек не сработали, вы можете автоматизировать процесс управления фокусом с использованием скриптов на языке Python или Bash. Программы вроде wmctrl
или xdotool
могут помочь вам добиться желаемого поведения. Например, вы можете написать скрипт, который будет следить за активными окнами и управлять фокусом:
#!/bin/bash
while true; do
active_window=$(xdotool getactivewindow)
# Проверяем, находится ли текущее окно в списке исключений
if [[ "$active_window" != "имя_вашего_окна" ]]; then
xdotool windowactivate "$active_window"
fi
sleep 1
done
Этот скрипт будет периодически проверять, активно ли нужное окно и возвращать фокус к нему, если это не так.
3. Альтернативные окна и расширения
Как вы упомянули, в Gnome есть множество расширений для управления поведением окон. Если вы хотите не просто избегать переключения фокуса, а управлять им более гибко, стоит рассмотреть возможность установки Gnome Shell в вашей системе. Затем вы сможете использовать такие расширения, как "Noannoyance", которые помогут уменьшить количество отвлекающих уведомлений и обеспечат более стабильный фокус на активном приложении.
4. Настройка системных уведомлений
Немалую роль в устойчивом управлении фокусом играют уведомления. Если ваши приложения генерируют уведомления, их поведение может влиять на фокус окон. Чтобы избежать этого, можно отключить уведомления для определённых приложений в настройках системы.
Заключение
Подводя итог, важно понимать, что управление фокусом в оконном менеджере Marco может быть затруднительным, но вы можете использовать комбинацию изменения параметров, автоматизации и сторонних расширений для достижения желаемого результата. Будьте готовы к тому, что вам может понадобиться применить несколько методов, чтобы полностью решить проблему кражи фокуса другими приложениями. Следите за обновлениями системного ПО и дополнительными расширениями, которые могут улучшить функциональность вашего рабочего пространства.