Linux

如何使視窗在不活動時保持不透明?

  • November 24, 2019

我將 Xfce 設置為在沒有滑鼠焦點時使所有視窗半透明。如何將特定視窗設置為在不活動時保持不透明?Xfce 沒有更改特定視窗設置的選項(據我所知)。

我之前找到了解決方案,但我再也找不到了。我使用命令行程序在我想要的視窗上設置特定的視窗管理器提示,從而阻止視窗變得透明。但我不記得我使用的程序或視窗管理器提示的名稱。我認為提示名稱的一部分可能是LOCKED.

例如,這對於防止 GIMP 視窗在失去滑鼠焦點時變得透明很有用。

我有transset-df,但它沒有辦法強制視窗在不活動時保持相同的透明度。

使用Devilspie2將視窗類型設置為“實用程序”以用於選擇性應用程序。此視窗類型不受 Xfce 環境中“非活動視窗的不透明度”的影響。

初步設置

從儲存庫(在DebianUbuntu$HOME/.config/devilspie2儲存庫中可用)安裝 Devilspie2,然後使用以下內容創建一個新的配置文件。

debug_print("Window Name: " .. get_window_name());
debug_print("Application name: " .. get_application_name());

if (get_application_name()=="xfce4-dict") then
  set_window_type "_NET_WM_WINDOW_TYPE_UTILITY";
end

將文件另存為opaque.lua. 文件名可以是任何名稱,但它必須具有.lua文件副檔名才能與 Devilspie2 一起使用。

初步測試

在調試模式下執行 Devilspie2,您將看到如下所示。

$  devilspie2 -d
Running devilspie2 in debug mode.

Using scripts from folder: /home/USERNAME/.config/devilspie2
------------
List of LUA files handling "window_open" events in folder:
/home/USERNAME/.config/devilspie2/opaque.lua
List of LUA files handling "window_close" events in folder:
------------
Window Name: Desktop
Application name: xfdesktop
Window Name: xfce4-panel
Application name: xfce4-panel
Window Name: Application Finder
Application name: xfrun4
Window Name: Dictionary
Application name: xfce4-dict

以下螢幕截圖顯示了執行 Devilspie2 之前和之後的 Dictionary 非活動視窗。請注意,Dictionary(底部)的不透明度發生了變化,但 Xfce Terminal 在兩個視窗都處於非活動狀態時保持不那麼不透明(左側)。

沒有Devilspie2的字典不那麼不透明

字典完全不透明與 Devilspie2

Dictionary 的非活動視窗仍然完全不透明,因為相對於配置文件,Devilspie2 已將視窗類型更改為“Utility”。

修改設置

debug_print創建的配置文件包含以顯示“視窗名稱:…應用程序名稱:…”的調試消息開頭的前兩行。這些行允許 Devilspie2 為目前執行的應用程序和隨後執行的應用程序顯示各自的名稱。

根據調試消息,使用者應遵循以下步驟:

  1. 確定選擇的應用程序,該應用程序在不活動時需要完全不透明。查找包含它的行Application name:並複制該值。
  2. /home/USERNAME/.config/devilspie2/opaque.lua使用文本編輯器打開相同的配置文件,然後替換xfce4-dict為選擇的應用程序。
  3. 保存文件。
  4. 退出並再次執行 Devilspie2。

請注意,USERNAME 指的是目前使用者名。

修改後的配置現在將生效。如果選擇的應用程序已經在執行,則來回切換視窗以在視窗再次變為非活動狀態時查看有效更改。

持久設置:Devilspie2 必須在後台執行,此解決方案才能對每個會話有效。要使其持久化,devilspie2請在“會話和啟動”中的“應用程序自動啟動”選項卡下添加。

什麼窗戶類型

最初,我在玩 Devilspie2 時通過反複試驗找到了這個解決方案。後來我嘗試執行 GIMP 2.8 並註意到主視窗在不活動時變得不那麼不透明,但其他兩個浮動視窗仍然完全不透明。

然後我通過執行確認了視窗類型xwininfo,然後點擊其中一個浮動視窗,以列印視窗管理器提示。

$ xwininfo -wm

xwininfo: Please select the window about which you
         would like information by clicking the
         mouse in that window.

xwininfo: Window id: 0x2a00686 "Layers - Brushes"

 Window manager hints:
     Client accepts input or input focus: Yes
     Initial state is Normal State
     Displayed on desktop 1
     Window type:
         Utility
     Window state:
         Skip Pager
         Skip Taskbar
     Process id: 5262 on host XXXXX
     Frame extents: 1, 1, 22, 4

還有賓果遊戲,視窗類型確實是“實用程序”!

小問題:“實用程序”視窗類型有一種不同的行為,即應用程序視窗將不再出現在工作列中。Alt使用者可以通過+Tab鍵而不是工作列繼續導航。

這種行為對於“實用程序”視窗類型是正常的,對於浮動視窗(即 GIMP 中的停靠欄)可以觀察到相同的情況。

如果使用者覺得這種行為是不可取的,那麼改變視窗類型可能是一個有缺點的解決方案。另一方面,該行為是一個微不足道的問題,同時能夠在不活動時保持選擇性視窗不透明。

測試在 Xubuntu 14.04 (Xfce 4.10) 中工作,使用 Devilspie2 v0.31。

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