# Resources for Buttons
by Brent Welch

exmh uses X resources to specify its buttons and menus on the main display, the editor window, and the `What Now` dialog. You can add a button to one of these areas of the user interface by listing it in a ubuttonlist resource and adding resources that describe the button. X resource names are hierarchical; these are the button list resources used by exmh:

        *Main.ubuttonlist
        *Fops.ubuttonlist
        *Mops.ubuttonlist
        *Sedit.Menubar.ubuttonlist
        *WhatNow.ubuttonlist

These resources are necessary because there's no easy way to enumerate the contents of the resource database.

When exmh starts up, it asks for the definition of both buttonlist and ubuttonlist resources. app-defaults has definitions for its buttons under the buttonlist resource; users should add new buttons with the ubuttonlist resource. To remove some system buttons, you have to override the definition of the buttonlist resource. This is best explained by an example. Here are the definitions for the main buttons:

        *Main.buttonlist:	quit pref alias
        *Main.quit.text:	Quit
        *Main.quit.command:	Exmh_Done
        *Main.pref.text:	Preferences
        *Main.pref.command:	Preferences_Dialog
        *Main.alias.text:	Aliases
        *Main.alias.command:	Aliases_Pref

The *Main.buttonlist resource names the buttons that appear in the top row of buttons. The value of the *Main.buttonlist resource, in turn, causes exmh to look for other resources that define the text and command attributes for each button. The command is a Tcl command; most are simple commands of one or two words. If you are really inspired, you can set many different attributes of a Tk button via resources -- get the details from the Tk manual page for button.

The next example adds a `Repl` button to the message buttons. By default, there are a few variations on `Reply` under the `Reply...` menu. You might like a `Repl` button for your most common form of reply. The Msg_Reply Tcl command takes regular arguments for the MH repl program.

        *Mops.ubuttonlist: myrepl
        *Mops.myrepl.text: Repl
        *Mops.myrepl.command: Msg_Reply -filter myrepl.filter -cc all

See the Section Replying to Mail with repl for an overview of repl. Beware of repl options like -query that prompt you and expect an interactive response; these will lock up exmh. The MH Reference Guide has a summary of repl options.