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.)