С xprintidle вы на правильном пути. Все, что вам нужно сделать, это настроить периодическую проверку внутри бесконечного цикла. Если система бездействует, вы выключаете дисплей.
Я создал службу, которая может делать это с целью выключения компьютеров после периода бездействия, но ее можно использовать для запуска любой команды оболочки после периода бездействие. Вы можете найти сценарий с документацией на моей странице GitHub .
В настоящее время я использую его, чтобы делать именно то, что вы описываете, на ноутбуке с картой NVIDIA. У меня установлен тайм-аут в 300 секунд (5 минут) с проверкой каждые 10 секунд, поэтому он потенциально может оставаться в режиме ожидания около 310 секунд, прежде чем гаснет экран, но разница в 10 секунд для меня не имеет значения.