Firefox

將 chromium/firefox 視窗恢復到原始工作區/桌面

  • March 4, 2016

我有一個三顯示器設置,兩個顯示器直接由 Ubuntu 12.04 驅動,總工作區/桌面區域為 3840x1200¹。我通常使用 5 個虛擬工作區,如果我同時處理多個項目,通常會更多。我通常至少打開 15 個瀏覽器視窗(主要是 Firefox-nightly,但也有標準的 12.04 Firefox 和 Chrome)。

每當瀏覽器由於更新(cq 崩潰)而需要重新啟動,或者需要在登錄後啟動時,瀏覽器視窗就會回到原來的位置,但都在同一個工作區上。之後,我必須繁瑣地將至少 80% 的視窗移動到其他工作區²。

Firefox 和 Chrome 都不會保存恢復到原始工作空間所需的額外EWMH資訊。我已經閱讀了 4-5 年前未解決的錯誤報告。

似乎至少在幾年前,KDE 將工作區管理為大偏移量(比螢幕寬度更寬),這允許瀏覽器恢復到正確的工作區。但這似乎不再是這種情況(從錯誤報告中扣除,而不是從個人經驗中扣除)。

是否有一個工作區/桌面管理器在 Firefox 和 Chrome 中沒有這種將所有工作區還原為一個工作區的行為(對於 Ubuntu 或 Linux Mint 最好啟用)?

或者是否有另一種方法來增強 Firefox 和 Chrome(例如附加組件)以強制執行此行為?

我的不是固定佈局,工作區 Y 上的瀏覽器 X 總是打開到特定的 URL。恢復功能以我想要的方式為我提供視窗、位置和 URL。他們“只是”需要在正確的工作空間中。

¹第三台 1200x1920 顯示器位於單獨的機器上,x2vnc用於共享單個滑鼠和鍵盤。這很好地保持了我的閱讀材料,如手冊頁和文件可用(縱向模式)。

²所有 U&L 內容都在工作區 3 上。我通常讓機器執行並保持登錄狀態,一次持續數週,原因之一是各種視窗的恢復。

在 Firefox 和 Chrome 中實現某些 EWMH 支持似乎沒有太大的動力,即使這可以解決大量桌面的工作區恢復問題。Firefox 自 2007 年以來一直存在一個錯誤,Chrome 自 2009 年以來一直存在一個錯誤。

在 Firefox 和 Chrome之外,如果不同瀏覽器視窗中的活動 TAB 指向不同的 URL,您可以做的是利用不同 URL 通常具有與頁面相關聯的不同標題的趨勢,因此與顯示它們的視窗相關聯。

從這個想法開始,您​​可以使用它的輸出wmctrl -l -G -p為您提供

  • 視窗編號
  • 工作區編號
  • 程序號
  • 視窗的 x,y 位置
  • 視窗的寬度和高度
  • 機器名稱
  • 視窗標題(如果有)

對於每個視窗。給定一個程序 ID PID,您可以看到連結/proc/PID/exe指向的位置並過濾掉非瀏覽器視窗。對於與瀏覽器相關的視窗,至少保存視窗標題和工作區編號(可能還有瀏覽器類型和所有其他資訊)。

瀏覽器(重新)啟動後,當所有視窗都恢復但在一個工作區中時,使用保存的數據查找與特定標題關聯的新視窗 ID WID,並將其推送到檢索到的相關工作區wmctrl -i -r WID -t workspacenumber


如果您不想在您選擇的 shell 或腳本語言中自己實現上述內容(主要是文本處理和符號連結查找),您可以下載一個為您完成所有這些的程序(以及更多)。或者您可以使用以下命令從PyPI安裝它:

sudo pip install ruamel.bws

之後,該bws命令應該可以使用以下選項save(保存多個保存,預設情況下為 10),list(顯示保存的日期以及保存的視窗數量)或restore(預設情況下為最新保存的資訊)。

引用自:https://unix.stackexchange.com/questions/158058