When you write a program that provides a graphical user interface, please make it work with the X Window System and the GTK+ toolkit unless the functionality specifically requires some alternative (for example, “displaying jpeg images while in console mode”).
In addition, please provide a command-line interface to control the functionality. (In many cases, the graphical user interface can be a separate program which invokes the command-line program.) This is so that the same jobs can be done from scripts.
Please also consider providing a D-bus interface for use from other running programs, such as within GNOME. (GNOME used to use CORBA for this, but that is being phased out.) In addition, consider providing a library interface (for use from C), and perhaps a keyboard-driven console interface (for use by users from console mode). Once you are doing the work to provide the functionality and the graphical interface, these won’t be much extra work.