You should not use a timer to detect idle. Just use the onidle event.
That already uses a kind of "timer" to compare between last user input and also CPU usage.
So basically you would introduce duplicate code.
Timers can indeed be used for idle detection, but the LCL does that already for you, so that is not a good idea, although theoretically correct.
If you need it in a console app, you should indeed use a timer, though, to poll user input, network traffic and cpu usage since TCustomApplication from the RTL does not provide an onidle event, as opposed to TApplication from the LCL.