How to get UV to be straight?
First, Select the object in object mode and apply rotation and scale. Second check your model for any connected polygons that will stretch the final map. Think about it like origami, where ever you would bend your model to make a paper version, that's where you put the seams. Generally you want to keep square polygons as a square shape in the uvmap. If you have a uneven polygon attached to a square polygon the uv map will stretch the square polygon's normals to match the uneven polygon. Just something to think about.