UI::Dialog project supports priority ordering of the backend detection process.
my $d = new UI::Dialog ( backtitle => 'Demo', title => 'Default',
height => 20, width => 65 , listheight => 5,
order => [ 'zenity', 'xdialog' ] );
# Either a Zenity or Xdialog msgbox widget should popup,
# with a preference for Zenity.
$d->msgbox( title => 'Welcome!', text => 'Welcome one and all!' );
UI::Dialog is a OOPerl wrapper for the various dialog applications. These dialog backends are currently supported: Zenity, XDialog, GDialog, KDialog, CDialog, and Whiptail. There is also an ASCII backend provided as a last resort interface for the console based dialog variants. UI::Dialog is a class that provides a strict interface to these various backend modules. By using UI:Dialog (with it's imposed limitations on the widgets) you can ensure that your Perl program will function with any available interfaces.
So if you'd prefer that Xdialog should be used first if available, simply designate the desired order when creating the new object. The default order for detecting and utilization of the backends are as follows: (with DISPLAY env): Zenity, GDialog, XDialog, KDialog (without DISPLAY): CDialog, Whiptail, ASCII
UI::Dialog is the result of a complete re-write of the UDPM CPAN module. This was done to break away from the bad choice of name (UserDialogPerlModule) and to implement a cleaner, more detached, OOPerl interface.