code: func WmNormalHintsGet(xu *xgbutil.XUtil,
  	win xproto.Window) (nh *NormalHints, err error) {
  
  	lenExpect := 18
  	hints, err := xprop.PropValNums(xprop.GetProperty(xu, win,
  		"WM_NORMAL_HINTS"))
  	if err != nil {
  		return nil, err
  	}
  	if len(hints) != lenExpect {
  		return nil,
  			fmt.Errorf("WmNormalHint: There are %d fields in WM_NORMAL_HINTS, "+
  				"but xgbutil expects %d.", len(hints), lenExpect)
  	}
  
  	nh = &NormalHints{}
  	nh.Flags = hints[0]
  	nh.X = int(hints[1])
  	nh.Y = int(hints[2])
  	nh.Width = hints[3]
  	nh.Height = hints[4]
  	nh.MinWidth = hints[5]
  	nh.MinHeight = hints[6]
  	nh.MaxWidth = hints[7]
  	nh.MaxHeight = hints[8]
  	nh.WidthInc = hints[9]
  	nh.HeightInc = hints[10]
  	nh.MinAspectNum = hints[11]
  	nh.MinAspectDen = hints[12]
  	nh.MaxAspectNum = hints[13]
  	nh.MaxAspectDen = hints[14]
  	nh.BaseWidth = hints[15]
  	nh.BaseHeight = hints[16]
  	nh.WinGravity = hints[17]
  
  	if nh.WinGravity <= 0 {
  		nh.WinGravity = xproto.GravityNorthWest
  	}
  
  	return nh, nil
  }
docs: // WM_NORMAL_HINTS get