> On Mar 25, 2023, at 20:01, raf via macports-users 
> <[email protected]> wrote:
> 
> Ideally, it shouldn't be too mysterious. I remember seeing
> Xresources details in manual entries, but looking at gvim's
> manual entry, I don't see any Xresources specifications. :-(
> It must be unfashionable.
> 
> The editres program seems to be a graphical Xresources editor
> that lets you explore the resources of a running program.
> But it looks very cumbersome. I'd prefer documentation and
> manual editing, but you can't always get what you want. :-)

I've rarely seen programs using Xt based libraries (like Athena or Motif) 
document much more than font selection and a handful more, unless they had 
explicit code to fetch and use some resource. Nearly all of that is done 
implicitly by the widgets; and the man pages for the functions composing widget 
libraries layered on the Xt intrinsics DO generally document their resources.

But you need to know an app's widget tree structure to make much use of that. 
Editres (with the helper I posted) can fetch that and save it to a file.

I recently installed vim +huge +x11 +xim +motif

and used the shared object of my use_editres.dylib to use editres to dump 
gvim's widget tree. Each line has two items (none of which is an actual 
resource name or value, they're documented on the widget's man page): the 
official widget name (for which there is likely a man page) and the instance 
name the program assigned to it. Either corresponds to one of the levels of a 
fully qualified resource name, other than the last level (the resource itself, 
give or take that some widgets could be built on other widgets). One might want 
to compose a name with the first name for the program (being more generic) and 
the second name for each widget level (being more specific), and of course 
ultimately the resource name as the last level, followed by colon space value, 
where the requirements for the value are either documented or referenced on the 
widget man page.

Here's the gvim (Motif) widget tree:

Vim  vim
        XmForm  vimForm
                XmRowColumn  menuBar
                        XmCascadeButton  subMenu
                        XmCascadeButton  subMenu
                        XmCascadeButton  subMenu
                        XmCascadeButton  subMenu
                        XmCascadeButton  subMenu
                        XmCascadeButton  subMenu
                        XmCascadeButton  subMenu
                XmFrame  toolBarFrame
                        XmRowColumn  toolBar
                                XmEnhancedButton  Open
                                XmEnhancedButton  Save
                                XmEnhancedButton  SaveAll
                                XmEnhancedButton  Print
                                XmSeparator  -sep1-
                                XmEnhancedButton  Undo
                                XmEnhancedButton  Redo
                                XmSeparator  -sep2-
                                XmEnhancedButton  Cut
                                XmEnhancedButton  Copy
                                XmEnhancedButton  Paste
                                XmSeparator  -sep3-
                                XmEnhancedButton  Replace
                                XmEnhancedButton  FindNext
                                XmEnhancedButton  FindPrev
                                XmSeparator  -sep5-
                                XmEnhancedButton  LoadSesn
                                XmEnhancedButton  SaveSesn
                                XmEnhancedButton  RunScript
                                XmSeparator  -sep6-
                                XmEnhancedButton  Make
                                XmEnhancedButton  RunCtags
                                XmEnhancedButton  TagJump
                                XmSeparator  -sep7-
                                XmEnhancedButton  Help
                                XmEnhancedButton  FindHelp
                XmNotebook  Vim tabline
                        XmSpinBox  PageScroller
                                XmTextField  NBTextField
                        XmArrowButtonGadget  MajorTabScrollerNext
                        XmArrowButtonGadget  MajorTabScrollerPrevious
                        XmArrowButtonGadget  MinorTabScrollerNext
                        XmArrowButtonGadget  MinorTabScrollerPrevious
                        XmMenuShell  popup_tabline popup
                                XmRowColumn  tabline popup
                                        XmPushButton  Close
                                        XmPushButton  New Tab
                                        XmPushButton  Open tab...
                XmForm  textAreaForm
                        XmDrawingArea  textArea
                                XmMenuShell  popup_contextMenu
                                        XmRowColumn  contextMenu
                                                XmPushButton  subMenu
                                                XmSeparatorGadget  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmSeparatorGadget  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                XmMenuShell  popup_contextMenu
                                        XmRowColumn  contextMenu
                                                XmPushButton  subMenu
                                                XmSeparatorGadget  subMenu
                                                XmPushButton  subMenu
                                                XmSeparatorGadget  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                XmMenuShell  popup_contextMenu
                                        XmRowColumn  contextMenu
                                                XmPushButton  subMenu
                                                XmSeparatorGadget  subMenu
                                                XmSeparatorGadget  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                XmMenuShell  popup_contextMenu
                                        XmRowColumn  contextMenu
                                                XmPushButton  subMenu
                                                XmSeparatorGadget  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmSeparatorGadget  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                XmMenuShell  popup_contextMenu
                                        XmRowColumn  contextMenu
                                                XmPushButton  subMenu
                                                XmSeparatorGadget  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmSeparatorGadget  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                XmMenuShell  popup_contextMenu
                                        XmRowColumn  contextMenu
                                                XmPushButton  subMenu
                                                XmSeparatorGadget  subMenu
                                                XmPushButton  subMenu
                                                XmSeparatorGadget  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                XmMenuShell  popup_contextMenu
                                        XmRowColumn  contextMenu
                                                XmPushButton  subMenu
                                                XmSeparatorGadget  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmSeparatorGadget  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                                                XmPushButton  subMenu
                        XmScrollBar  scrollBar
                        XmScrollBar  scrollBar
                        XmScrollBar  scrollBar
        TransientShell  TipShell
                XmLabel  TipLabel

Reply via email to