Я запускаю Matlab
скрипт в workspace 1
. Это создает несколько графиков. В то же время я переключаюсь workspace 2
и работаю там. Моя проблема в том, что участки появляются workspace 2
. Можно ли заблокировать программное обеспечение в рабочей области. Таким образом , в то время как Matlab
генерируют графики в workspace 1
, я могу работать в workspace 2
без нарушения тулбаров на участки?
14.04
unity
workspaces
matlab
О-ЛЯ-ЛЯ
источник
источник
xprop WM_CLASS
, а затем нажмите на окно?) Пожалуйста, также добавьте WM_CLASS Matlab.Ответы:
ВАЖНОЕ РЕДАКТИРОВАНИЕ
Ниже переписана версия сценария из первого ответа (ниже). Различия:
WM_CLASS
и целевое рабочее пространство теперь являются аргументами для запуска скрипта. Используйте только первую или вторую (идентифицирующую) частьWM_CLASS
(см. Ниже: как использовать)Когда скрипт запускается, он показывает уведомление (пример
gedit
):Сценарий
Как пользоваться
Скрипту нужны оба
wmctrl
иxdotool
:Скопируйте приведенный выше скрипт в пустой файл, сохраните его как
lock_towspace.py
Из вашего конкретного приложения найдите
WM_CLASS
: откройте ваше приложение, запустите в терминале:Вывод будет выглядеть (в вашем случае):
Для запуска скрипта используйте либо первую, либо вторую часть команды.
Команда для запуска сценария:
В команде последний раздел;
2,2
это рабочая область, в которой вы хотите заблокировать приложение (без пробелов: (!) столбец, строка ) в формате "человек"; первый столбец / строка1,1
УСТАРЕВШИЙ ОТВЕТ:
(вторая) ИСПЫТАТЕЛЬНАЯ ВЕРСИЯ
Приведенный ниже скрипт блокирует конкретное приложение в исходной рабочей области. Если скрипт запущен, он определяет, в какой рабочей области находится приложение. Все дополнительные окна, которые создает приложение, будут перемещены в одно и то же рабочее пространство за доли секунды.
Проблема с фокусировкой решается путем автоматической перефокусировки на окне, которое было сфокусировано до создания дополнительного окна.
Сценарий
Как пользоваться
Сценарий необходим как
wmctrl
иxdotool
Скопируйте скрипт в пустой файл, сохраните его как
keep_workspace.py
определите `WM_CLASS 'вашего приложения, открыв приложение, затем откройте терминал и выполните команду:
Затем нажмите на окно вашего приложения. Скопируйте вывод, как
"sun-awt-X11-XFramePeer", "MATLAB R2015a - academic use"
в вашем случае, и поместите его между одинарными кавычками в разделе заголовка скрипта, как указано.Запустите скрипт с помощью команды:
Если это работает, как вам нравится, я добавлю функцию переключения. Хотя он работает уже несколько часов в моей системе, но, возможно, сначала потребуется некоторая настройка.
Примечания
Хотя вы не должны заметить, скрипт делает добавить процессор нагрузку на систему. На моей пожилой системе я заметил увеличение на 3-10%. Если вам нравится, как это работает, я, вероятно, дополнительно настрою его, чтобы уменьшить нагрузку.
Сценарий, как он есть, предполагает, что вспомогательные окна относятся к тому же классу, что и главное окно, как вы указали в комментарии. Однако с (очень) простым изменением вторичные окна могут быть другого класса.
объяснение
Хотя, вероятно, не очень интересно для обычного читателя, сценарий работает, рассчитывая по векторам. При запуске скрипт рассчитывает:
wmctrl -d
wmctrl -lG
С тех пор сценарий ищет новые окна того же приложения, с выводом
xprop WM_CLASS
, ищет их позиции так же, как и выше, и перемещает их в «исходное» рабочее пространство.Поскольку вновь созданное окно «украло» фокус из последнего использованного окна, над которым работал пользователь, фокус впоследствии устанавливается на окно, в котором ранее находился фокус.
источник
application
иworkspace
-sets. Если вы столкнулись с возможными ошибками, пожалуйста, сообщите об этом!WM_CLASS
идентичны, второй будет перемещен в тот, который вы задали в команде.