P.M.
He'll get plenty of protein from milk, yogurt, cheese, eggs, combined beans and rice, soy products (tofu), quinoa. Meat isn't necessary if he'll eat these other items. And MANY kids go through stages of not liking some or many foods – it's probably nature's way of protecting them from eating the wrong things as they spend more time exploring the world independently.
Don't make food an issue to fight over. That does nothing to make it more attractive or to improve the appetite. Just offer him small samples from time to time to minimize waste. Back off on the stuff he doesn't want for awhile, and just serve a balance of good, healthy foods that he will eat. He'll probably "forget" that he dislikes ______, so you can introduce it casually again in a few weeks.
He's also probably going through a no-appetite phase. If he's eating good snacks, and it sounds like you're giving him excellent choices there, he's probably getting all the nourishment he needs. If you're convinced he's hungry at mealtime, cut back on some of the snacks and serve them as his meal.
Depending on how you handle mealtime, he could be unhappy with the length of time he's required to sit. At this age, activity and exploration are the child's job. Sitting for more than 10-15 minutes at the table is really more than most kids can handle, often until they are as old as four. Making meals a continual battle over sitting and using good manners does little to speed the arrival of said manners. Kids learn them best from watching parents using good manners.