When you write a program that provides a graphical user interface, please make it work with the X Window System, using the GTK+ toolkit or the GNUstep 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.
Please make your program interoperate with access technology such as screen readers (see https://www.gnu.org/accessibility/accessibility.html). This should be automatic if you use GTK+.