public Salt (String [] args) {
    super (args);

    String res_name = option.string ("res-name",
      "resource name of windows", "");
    String res_class = option.string ("res-class",
      "resource class of windows", "");
    String message = option.string ("message",
      "message to be sent", "");
    
    about ("0.1", "send string to top-level windows",
      "Stephen Tse <stephent@sfu.ca>",
      "http://escher.sourceforge.net/");

    if (help_option) return;

    for (Window window : display.default_root.tree ().children ()) {

      Window.WMClassHint class_hint = window.wm_class_hint ();
      
      if (class_hint == null) continue;
      if (!class_hint.equals (res_name, res_class)) continue;
      
      if (window.attributes ().override_redirect ()
        || window.attributes ().map_state () 
        != Window.AttributesReply.VIEWABLE
	|| window.wm_name () == null) continue;


      for (int i=0; i<message.length (); i++)
        send_key (window, message.charAt (i));

      // keep loop to salt all matched apps 
    }
    
    display.close ();
  }