Hello and welcome to justanswer.com
First make sure the engine is warming up to temperature. If it is then the usual cause is a faulty Dual Coolant Control Valve. This valve is located on the bottom of the fan assembly on the passenger side. They will get stuck closed causing lack of flow to the heater core. See if both the top inner hose and bottom hose are hot on the firewall where they enter the core. Those are the driver and passenger inlet. The top outer is the return as that should be hot too. If the outlet is cold then you have a clogged core. If the inlets are cold then I suspect a faulty coolant valve. For the idle this is usually caused by a sticking idle air control valve located in front of the throttle adapter assembly. You can try tapping on the valve to see if the problem lessens.