
我經常希望螢幕上只顯示視窗的頂部或底部。我不希望一個程式佔據整個螢幕。例如,我需要引用顯示在大視窗底部的計算。要引用該計算,然後在另一個視窗中寫入該計算,我想重新定位計算,以便僅顯示計算視窗的最底部部分。 (我不需要看到它的標題列或下拉式選單,甚至不需要看到計算面板的前 2/3)。
目前,據我所知,Linux 的所有「桌面」都強制執行一項限制,即無法重新定位窗口,使其位於頂部或底部的一半螢幕之外。
在視窗管理器的黃金時代(WindowMaker 太棒了!),這不是問題。據我所知,沒有強制的“邊界”來保護面板不被覆蓋。我記得問題是從 Gnome 和 KDE 開始的。當 Compiz 出現時,它強制執行一項政策,即視窗不能重新定位,使其標題列離開螢幕,但 ccsm 有一個選項允許急切的用戶更改它(我記得稱為「constrain-Y」)。當我開始使用基於 OpenBox 和 XFWM4 的系統時,我錯過了這種能力。
在我看來,小組的作者過於激進地保護了他們產品的首要地位。當我忙著寫東西時,我不需要看到 Gnome 或 XFCE4 面板。
答案1
前段時間,我找到了一個解決方案,想分享一下。這使用了wmctrl
Debian/Ubuntu 可用的程序,它可以與任何 EWMH/NetWM 相容的 X Window Manager 進行互動。我在 OpenBox、XFWM4 和任何其他符合 NetWM 標準的視窗管理器中都取得了成功。
這是一個 2 行 bash 腳本,我稱之為“togglePanelBelow.sh”
#!/bin/bash
wmctrl -l | grep panel | awk '{print "wmctrl -v -i -r " $1 " -b remove,above"}' | bash
wmctrl -l | grep panel | awk '{print "wmctrl -v -i -r " $1 " -b add,below"}' | bash
這允許重新定位普通窗口,使它們與面板重疊。
這用於wmctl
列出現有窗口,過濾名稱中帶有“面板”的窗口,然後wmctrl
再次用於告訴這些面板位於窗口堆疊下方。有兩個步驟,因為在 2015 年的某個時候,腳本因無法更改屬性而停止工作。必須將它們移除然後重新設定。
如果您決定要像以前一樣在普通視窗頂部看到面板,請運行togglePanelAbove.sh
。
#!/bin/bash
wmctrl -l | grep panel | awk '{print "wmctrl -v -i -r " $1 " -b remove,below"}' | bash
wmctrl -l | grep panel | awk '{print "wmctrl -v -i -r " $1 " -b add,above"}' | bash
如果將視窗定位在螢幕的一半上,然後執行togglePanelAbove,則面板會與視窗重疊。
我為此配置了快捷鍵,但從未造成任何麻煩。
這並不是一個真正的問題,只是一個“看看我發現的這個漂亮的東西”的帖子。也許一個問題是:這在您選擇的視窗管理器中有效嗎?您確認在OpenBox和XFWM4都可以嗎,其他的呢?例如,我沒有熱情在啟蒙運動中測試它。