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