O significado da opção -display 127.0.0.1:0.0 depende do programa gui , mas é altamente provável que signifique “exibir na tela X 127.0.0.1:0.0”. Este é o primeiro display X local, acessado via TCP. Isso é quase certamente errado por dois motivos. Primeiro, a exibição X local deve ser :0 , não 127.0.0.1:0 , porque a inclusão de um endereço IP faz com que o tráfego passe pelo TCP em vez de pelo acesso local. Percorrer o TCP pode não funcionar dependendo se o servidor X aceita conexões TCP. Mesmo que isso aconteça, você perde as otimizações que as exibições locais têm.
A exibição a ser usada é normalmente indicada pela variável de ambiente DISPLAY , e essa variável tende a ser definida corretamente automaticamente. (Geralmente, se DISPLAY tiver o valor errado, é porque você está mexendo com ele. A principal exceção é o uso de screen ou tmux .)
Seu programa provavelmente procura o valor da variável de ambiente DISPLAY , porque isso tende a acontecer automaticamente com as chamadas xlib. Então você deve apenas chamar ./gui , seu script não faz nada útil. Se o seu programa insistir no argumento -display , use a variável de ambiente:
./gui -display "$DISPLAY"