Диалоговые окна Zenity имеют повышенную высоту и не могут быть изменены. Обходное решение ошибки кто-либо?

Простота, чтобы использовать и настраивать часто не идет рука об руку. Gnome, как предполагается, прост в использовании, но это является довольно большим и не имеет многого в способе настраиваемости. KDE является также большим, и более настраиваемым, но опции настройки не всегда просты. Другие альтернативы включают LXDE и XFCE, которые более легки, чем любой Gnome и KDE, а также не использование настольной среды.

Один выбор, который необходимо будет сделать, состоит в том, хотите ли Вы использовать настольную среду или менеджер окон. Основной менеджер окон только управляет окнами, и многие предоставляют дополнительные услуги, такие как способы запустить приложения и несколько рабочих областей. Настольная среда добавляет намного больше опций, обычно доступных через значки или другие виджеты на экране в панелях или прикреплениях (часы, администратор сети, уведомления по электронной почте, монтирование съемного диска, …), и интегрирует менеджер сеансов. Настольные среды дают Вам больше функций; с простым менеджером окон необходимо создать часть настольной среды частью.

Самое большое в конфигурируемости прибывает из менеджеров окон, которые являются scriptable на языке программирования, такими как Пила-рыба (Схема) и Потрясающими (Lua). Существует много минималистских менеджеров окон, но они не для слабонервных.

Вы захотите испытать различные возможности и искать что-то, что подходит Вам. Можно использовать программу как Xnest или VNC для испытания новой среды в окне, которое самом отображено в среде, которой Вы более довольны.

Кроме нескольких меньших дистрибутивов, которые предлагают ограниченный выбор пакетов, выбор распределения не важен выбору графической среды.

3
20.06.2013, 08:21
5 ответов

Я не выяснил метод для сокращения, это - размер ниже значений по умолчанию также. Вы могли бы хотеть дать gxmessage попытка вместо этого. Это может быть уменьшено, хотя это также имеет минимальный размер, к которому это может быть съежившимся. Это действительно имеет лучшие поверхности управления, IMO, чем zenity относительно выбора размера шрифта и размеров окна все же.

Пример

$ 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."

                                       ss of gxmessage

.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 использование значений по умолчанию:

                    default zenity rc file

Вот zenity использование наш .gtkrc-2.0.mono8 файл ресурсов:

                  mono8 zenity rc file

Примечание: Команда, используемая выше, была этим:

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

gtk-паразит

Таким образом, Вы видите, что мы можем управлять GTK + приложения через .gtkrc-2.0 файл, но какие опции могут мы вставлять этот файл. Хорошо существует приложение для который 8-), названо gtk-паразитом. Это было в моих репозиториях 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

4
27.01.2020, 21:11

Если у Вас есть возможность запуститься wmctrl после создания окна Вы имеете некоторый контроль над ним, например, с:

wmctrl -r Information -e 1,100,100,200,70

Однако, кажется, существует минимальный вертикальный размер под который zenity не хочет изменять размер.

2
27.01.2020, 21:11

Добавление --no-wrap кому: zenity кажется, фиксирует его.

РЕДАКТИРОВАНИЕ № 1

После большего количества тестирования это, кажется, a zenity ошибка.

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

существуют два обходных решения

  1. добавить --no-wrap выключить обертывание. Если Ваш текст не слишком широк, можно использовать это, однако если это будет слишком широко, то диалоговое окно будет слишком широко для экрана, и Вам, возможно, придется создать новые строки для того, чтобы вручную перенестись, если текст трудно кодируется. Если текст автоматически сгенерирован от где-нибудь, то Вам, возможно, придется изучить fold команда для создания текстового соответствия.

  2. изменение --warning --info и --error кому: --question. По некоторым причинам кажется, что вопрос не затронут этим, и диалоговый размер намного более нормален. Выгода здесь - то, что ошибочное диалоговое окно появится со значком вопроса. Также Вам подарят кнопки "Yes" и "No" вместо просто кнопки "OK".

1
27.01.2020, 21:11

Похоже, это старая ошибка, и я не уверен, что она уже исправлена. Но у меня все еще есть эта проблема на моем Linux Mint 17.1. Однако я нашел обходной путь, который работает для меня и может работать и для других:

Параметр - no-wrap вот в чем фокус (как упоминалось ранее). Опустите параметр - ширина и - высота или установите для него минимальное требуемое значение. И добавьте параметр - без переноса . Теперь используйте \ n везде, где вы хотите, чтобы разорвал строку (предложение). Ширина всплывающего окна подстраивается под самое длинное предложение. Используйте \ n \ n , чтобы создать пустую строку.

Вот пример:

zenity --warning --title="Zenity | Workaround excessive height" --width=100 --height=100 --no-wrap --text="<big><b>Zenity problem:\n Excessive height with long text.</b></big>\n\nSomehow Zenity's option '<b>--height</b>' doesn't seem to do the job.\nHowever, this doesn't have to spoil your fun! Omit the '<b>--width</b>'\nand '<b>--height</b>' option or set it to the minimum value you require.\nAnd add the '<b>--no-wrap</b>' option. Now use '<b>\\\n</b>' wherever you want\nto break the line (sentence). The width of the popup will adjust\nitself to the longest sentence."

PS. Я улучшил свое объяснение и заменил пример, поскольку он не запускался с терминала (хотя он отлично работал со сценарием).

1
27.01.2020, 21:11

Я обнаружил, что указание как --ширины, так и --высоты заработало. Указание ширины --само по себе не работало.

0
17.10.2020, 04:59

Теги

Похожие вопросы