восстановить хромированные / firefox окна в исходное рабочее пространство / рабочий стол

У меня есть три монитора, с двумя мониторами, управляемыми напрямую Ubuntu 12.04 для общей рабочей области / рабочего стола 3840×1200¹. Обычно я работаю с 5 виртуальными рабочими пространствами, часто больше, если параллельно работаю над несколькими проектами. Обычно у меня открыто не менее 15 окон браузера (в основном Firefox – ночной, но также стандартный 12.04 Firefox и Chrome).

Всякий раз, когда браузеры должны перезапускаться в результате обновления (cq crash) или должны запускаться после входа в систему, окна браузера возвращаются к исходным позициям, но все они находятся в одном рабочем пространстве. После этого мне приходится утомительно перемещать по крайней мере 80% окон на другие рабочие пространства.

Ни Firefox, ни Chrome не сохраняют дополнительную информацию EWMH , необходимую для восстановления в исходное рабочее пространство. Я прочитал нерешенные сообщения об ошибках, которые были сделаны 4-5 лет назад об этом.

Кажется, что, по крайней мере, несколько лет назад, KDE управлял рабочими пространствами как большими смещениями (шире ширины экрана), что позволило браузеру восстановить правильное рабочее пространство. Но это уже не так (вычитается из отчета об ошибке, а не из личного опыта).

Существует ли рабочее пространство / рабочий стол-менеджер, у которого нет этого поведения «восстановить все-к-одному» с Firefox и Chrome (желательно для Ubuntu или Linux Mint)?

Или существует другой способ расширения Firefox и Chrome (например, надстройка) для обеспечения соблюдения этого поведения?

Mine – это не фиксированный макет, где Browser X на рабочей области Y всегда открывается к определенному URL-адресу. Функция восстановления дает мне окна, позиции и URL-адреса именно так, как я их хочу. Они «просто» должны быть на правильном рабочем пространстве.

¹ Третий монитор 1200×1920 находится на отдельной машине с x2vnc используемой для совместного использования одной мыши и клавиатуры. Это прекрасно сохраняет мои материалы для чтения, такие как справочные страницы и документация (в портретном режиме).
² Все материалы U & L находятся на рабочей области 3. Я обычно оставляю машину включенной и остается включенной в течение недели за один раз, одной из причин этого является восстановление различных окон.

Похоже, что не существует много стимулов для реализации некоторой поддержки EWMH в Firefox и в Chrome, хотя это приведет к тому, что проблема восстановления будет устранена с большим количеством рабочих столов. Исправлена ошибка с Firefox с 2007 года и одна для Chrome с 2009 года.

Что вы можете делать за пределами Firefox и Chrome, если активные TAB в разных окнах браузера указывают на разные URL-адреса, следует использовать тенденцию, что разные URL-адреса обычно имеют разные заголовки, связанные со страницами, и, следовательно, с окном, в котором они отображаются.

Начиная с этой идеи вы можете использовать вывод wmctrl -l -G -p который предоставляет вам

  • идентификатор окна
  • номер рабочей области
  • идентификатор процесса
  • x, y положение окна
  • ширина и высота окна
  • имя машины
  • заголовок окна (если есть)

для каждого окна. Учитывая идентификатор процесса id, вы можете увидеть, где ссылка /proc/PID/exe указывает на и не фильтрует окна без браузера. Для окон, связанных с браузером, сохраните хотя бы заголовок окна и номер рабочей области (возможно также тип браузера и всю другую информацию).

После запуска браузера (перезапуска), когда все окна будут восстановлены, но в одном рабочем пространстве, используйте сохраненные данные для поиска нового идентификатора окна, WID, связанного с определенным заголовком, и нажмите его в полученное соответствующее рабочее пространство с помощью wmctrl -i -r WID -t workspacenumber .


Если вы не хотите самим реализовать вышеизложенное (в основном, текстовую обработку и поиск ссылок) в своей оболочке или языке сценариев по выбору, вы можете загрузить программу, которая сделает все это для вас (и немного больше). Или вы можете установить его из PyPI, используя:

 sudo pip install ruamel.bws 

после чего команда bws должна быть доступна с вариантами save ( save несколько сохраненных bws , 10 по умолчанию), list (показать сохраненные даты с количеством сохраненных окон) или restore (по умолчанию последнюю сохраненную информацию).