Вопрос или проблема
Я пытаюсь стилизовать gv, используя мой файл ~/.Xdefaults. Это работает нормально для других приложений, но не для gv. Я могу установить фон в серый цвет:
gv*background: gray
Но это задает всем элементам серый фон, и это не то, что мне нужно. Например, “холст” или бумага также становятся серыми. Я хотел бы применять свое “стилирование” более точно, но не могу найти информацию о ресурсах, связанных с внешним видом gv. Я прочитал руководство по gv, информацию и man-страницу, искал в ~/.gv, но пока ничего полезного не нашел.
Если я использую editres (X11) для попытки посмотреть ресурсы и виджеты, используемые gv, то получаю только виджеты, связанные с меню, а не остальную часть приложения. Я также пробовал xprop и т.д.
Вывод editres:
GV gv
VendorShellExt shellext
Aaa control
MButton fileButton
SimpleMenu menu
ThreeD threeD
SmeBSB open
SmeBSB reopen
SmeBSB savepos
SmeBSB update
SmeLine line
SmeBSB printAllPages
SmeBSB printMarkedPages
SmeBSB saveAllPages
SmeBSB saveMarkedPages
SmeLine line
SmeBSB copyright
SmeLine line
SmeBSB quit
MButton stateButton
SimpleMenu menu
ThreeD threeD
SmeBSB stop
SmeBSB dsc
SmeBSB eof
SmeBSB antialias
SmeBSB watchFile
SmeBSB size
SmeLine line
SmeBSB optionsgv
SmeBSB optionsgs
SmeBSB optionsfs
SmeBSB optionssetup
SmeLine line
SmeBSB presentation
MButton pageButton
SimpleMenu menu
ThreeD threeD
SmeBSB next
SmeBSB redisplay
SmeBSB prev
SmeLine line
SmeBSB center
SmeLine line
SmeBSB current
SmeBSB odd
SmeBSB even
SmeBSB unmark
MButton orientationButton
SimpleMenu menu
ThreeD threeD
SmeBSB automatic
SmeLine line
SmeBSB portrait
SmeBSB landscape
SmeBSB upsidedown
SmeBSB seascape
SmeLine line
SmeBSB swap
MButton pagemediaButton
SimpleMenu menu
ThreeD threeD
SmeBSB automatic
SmeLine line
SmeBSB BBox
SmeBSB Letter
SmeBSB Legal
SmeBSB Statement
SmeBSB Tabloid
SmeBSB Ledger
SmeBSB Folio
SmeBSB Quarto
SmeBSB 10x14
SmeBSB 14x24
SmeBSB Executive
SmeBSB A3
SmeBSB A4
SmeBSB A5
SmeBSB B4
SmeBSB B5
MButton processButton
MButton scaleButton
SimpleMenu menu
ThreeD threeD
SmeBSB Natural size
SmeBSB Pixel based
SmeLine line
SmeBSB Fit height to window
SmeBSB Arbitrary magnification
SmeBSB Fit width to window
SmeBSB Fit to window
SmeBSB 0.100
SmeBSB 0.125
SmeBSB 0.250
SmeBSB 0.500
SmeBSB 0.707
SmeBSB 1.000
SmeBSB 1.414
SmeBSB 2.000
SmeBSB 4.000
SmeBSB 8.000
SmeBSB 10.00
Button nextPage
Button prevPage
Button toggleCurrent
Button toggleEven
Button toggleOdd
Button unmarkAll
Button printMarked
Button printAll
Button saveMarked
Button saveAll
Button openFile
Button autoResize
Button redisplay
MButton titleButton
SimpleMenu menu
ThreeD threeD
SmeBSB title
MButton dateButton
SimpleMenu menu
ThreeD threeD
SmeBSB date
Label locator
Frame pannerFrame
Composite panner
Label slider
Frame newtocFrame
Clip newtocClip
Aaa newtocControl
Vlist newtoc
Scrollbar newtocScroll
Frame viewFrame
Clip viewClip
Aaa viewControl
Ghostview page
TransientShell fileSelPopup
VendorShellExt shellext
FileSelection fileSel
Button rescan
MButton filters
SimpleMenu menu
ThreeD threeD
SmeBSB None
SmeBSB *.*ps* *.pdf* no .*
SmeBSB *.*ps* no .*
SmeBSB *.pdf* no .*
SmeBSB no .*
MButton dirs
SimpleMenu menu
ThreeD threeD
SmeBSB Home
SmeBSB Tmp
SmeBSB /usr/doc
SmeBSB /usr/local/doc
Button button1
Button button2
Frame pathframe
Text pathtext
AsciiSrc textSource
AsciiSink textSink
Frame filterframe
Text filtertext
AsciiSrc textSource
AsciiSink textSink
Frame topframe
Clip topclip
Aaa topaaa
Vlist list
Scrollbar subscroll
Frame subframe
Clip subclip
Aaa subaaa
Vlist list
Scrollbar curscroll
Frame curframe
Clip curclip
Aaa curaaa
Vlist list
Ответ или решение
Для настройки внешнего вида gv с помощью файла .Xdefaults и решения проблемы избыточного применения стиля в эталоном виде, необходимо понимать общую структуру и имя ресурсов и виджетов, которые приложение поддерживает. Вы столкнулись с ситуацией, когда стиль применяется ко всем элементам интерфейса, а не только к определенной его части, такой как фон канвы.
Вот несколько шагов и рекомендаций, которые помогут вам более точно настроить внешний вид gv:
-
Изучите Имена Ресурсов (Resource Names):
В вашем случае, проблема заключается в недостаточной информации о ресурсах, которые можно настраивать для gv. Вы можете использовать утилитуeditres
, чтобы посмотреть имена виджетов и ресурсов. Однако в выводе изeditres
были показаны в основном элементы меню. Используйте командуxprop
для анализа более глубокой структуры окон, что может дать дополнительные подсказки о именах элементов внутри gv. -
Определение Структуры Виджетов:
Обратите внимание на иерархию виджетов, полученную черезeditres
. В ней заключены названия виджетов, такие какVendorShellExt
,MButton
,SimpleMenu
,ThreeD
и другие. Эти названия формируют путь к виджету, который можно использовать в .Xdefaults для более точной стилизации. Например, чтобы применить стиль только к меню, можно использовать что-то вродеgv*menu*background: gray
. -
Тестирование и Итерации:
Процесс настройки может потребовать множества экспериментов. Начните с более узконаправленных правил в вашем .Xdefaults и постепенно корректируйте их. Используйте командуxrdb -merge ~/.Xdefaults
, чтобы применить изменения без перезапуска X-сессии. -
Работа с приложение Ghostview (GV):
GV может иметь специфические ограничения на стилизацию отдельных компонентов. Попробуйте обратиться к сторонней документации или сообществам пользователей GV, где могут быть описаны допущения или специфические случаи настроек, которых нет в официальной документации. -
Дополнительные Инструменты:
В некоторых случаях, может помочь использование программного обеспечения для более полного исследования X-серверных ресурсов, например, Xephyr для тестирования или анализ различных виджетов в окружении. -
Контекстный Подход:
Не забывайте учитывать конкретику использования gv. Если ваша цель заключается в улучшении читабельности или удобства, вы можете настроить только ключевые элементы, которые этому способствуют, такие какviewFrame
.
Применив описанные выше методы и тщательно изучив ресурсы gv, вы сможете достичь желаемого результата в стилизации. Этот процесс может потребовать времени, однако в результате вы получите интерфейс, соответствующий вашим потребностям и предпочтениям.