I used setterm -blank 0
in my GUI terminal
You are running the command with its output directed to completely the wrong terminal, and with completely the wrong terminal type specified in the TERM
environment variable that it inherited.
As its manual entry says, the terminal type must be linux
in order for setterm
to permit control sequences specific to that type of terminal emulator, and the standard output of the program must be directed to the actual Linux kernel virtual terminal device that you wish to send the control codes to and thus affect.
This is a simple matter of running the command with a different inherited TERM
environment variable and with its standard output redirected. (The more usual case for running this command is in a login session on the relevant terminal device, where the TERM
environment variable and standard output will be correct by dint of that login.)
Further reading