Bash

Zenity 對話框視窗高度過高,無法調整大小。錯誤解決方法有人嗎?

  • October 17, 2020

我正試圖在 zenity 中做一些事情,這讓我發瘋了。為了說明我的問題,請嘗試執行:

zenity --info --text "Hello there friends."

夠簡單吧。現在試試這個:

zenity --info --text " Hello there friends. Hello there friends. Hello there friends. Hello there friends."

注意對話框是如何變得相當高的?

所以你可以調整對話框的寬度。特別要注意當您嘗試使寬度盡可能小時會發生什麼。這說明了我的下一點:您根本無法調整高度 DOWN 的大小 - 它似乎有一個硬最小值,該最小值基於您的對話框被水平擠壓到可能的最小尺寸時所需的高度。

這些對於短消息都無關緊要,但是如果您有長消息怎麼辦?您不必輸入太多內容即可得到一個對話框,該對話框太高以至於確定按鈕不在螢幕上——這對我的使用者來說是個大問題。

這是一個錯誤報告:FS#34164:

$$ zenity $$- 對話框大小錯誤 https://bugs.archlinux.org/task/34164 但是那個更新檔對我沒有任何好處。我的最終使用者正在他們自己的電腦上安裝 Zenity,我無法修補他們的 Zenity。

有沒有辦法解決?關於文本或其他任何東西的任何技巧?

我也沒有想出一種方法來將它的大小減小到預設值以下。您可能想gxmessage嘗試一下。它可以縮小,儘管它也有一個可以縮小到的最小尺寸。zenity儘管在字型大小選擇和視窗尺寸方面,它確實具有更好的控制面(IMO) 。

例子

$ gxmessage -center -timeout 60 -font "monospace 9" -buttons "Okay":1 
   -geometry 300x50 --wrap \
   " Hello there friends. Hello there friends. Hello there friends. Hello there friends."

                                       gxmessage的ss

.gtkrc-2.0

如果你真的想控制 GTK+ 應用程序的外觀我相信合適的方法是通過資源文件$HOME/.gtkrc-2.0。您可以在此處添加諸如字型之類的內容以覆蓋以說等寬字型。出於實驗目的,我製作了一個副本.gtkrc-2.0並將其命名為.gtkrc-20.mono8.

以下將使預設字型等寬 8:

# $HOME/.gtkrc-2.0.mono8
style "font" {
font_name = "monospace 8"
}
widget_class "*" style "font"
gtk-font-name = "monospace 8"

然後,您可以控制 GTK+ 應用程序是否使用此文件,如下所示:

$ GTK2_RC_FILES=.gtkrc-2.0.mono8 <gtk app>

所以這裡zenity使用預設值:

                    預設 zenity rc 文件

這裡zenity使用我們的.gtkrc-2.0.mono8資源文件:

                  mono8 zenity rc 文件

**注意:**上面使用的命令是這樣的:

$ GTK2_RC_FILES=.gtkrc-2.0.mono8 zenity --info --title="Status" --text \
   "Hello there friends. Hello there friends. Hello there friends."

gtk-寄生蟲

所以你可以看到我們可以通過.gtkrc-2.0文件來控制 GTK+ 應用程序,但是我們可以在這個文件中放置什麼選項。好吧,有一個用於 8-) 的應用程序,稱為gtk-parasite。它在我的 Fedora 儲存庫中作為gtkparasite.

安裝後,您可以像這樣針對 GTK+ 應用程序呼叫它:

$ GTK_MODULES=gtkparasite <gtk app>

所以讓我們呼叫zenity

$ GTK_MODULES=gtkparasite zenity --info --title="Status" --text \
   "Hello there friends. Hello there friends. Hello there friends."

如果您在某些子組件中更改間距並隱藏圖示,您可以將其zenity縮小到 440x65 的大小:

                  ss of little zenity

添加--no-wrapzenity似乎可以解決它。

編輯#1

經過更多測試,這似乎是一個zenity錯誤。

如果使用文本環繞(zenity預設情況下使用它),它似乎根據最小視窗寬度設置視窗高度,文本環繞使該尺寸更高。但是,生成的對話框更寬,導致文本換行更短,從而導致視窗對於文本來說太高。

存在兩種解決方法

  1. 添加--no-wrap以關閉包裝。如果你的文本不是太寬,你可以使用它,但是如果它太寬,對話框對於螢幕來說太寬了,如果文本是硬編碼的,你可能必須創建新的行來手動換行。如果文本是從某處自動生成的,那麼您可能需要查看fold命令以使文本適合。
  2. 更改為. --warning --info_ 由於某種原因,問題似乎不受此影響,並且對話大小更加理智。這裡的問題是會出現一個帶有問題圖示的錯誤對話框。此外,您將看到“是”和“否”按鈕,而不僅僅是“確定”按鈕。--error``--question

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