Quantcast

Can't update xterm title bar from Erlang

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Can't update xterm title bar from Erlang

Roger Lipscombe-2
I have the following:

    put_progress(Format, Args) ->
        io:put_chars(user,
                     [tsl(), io_lib:format(Format, Args), fsl()]),
        io:put_chars(user,
                     [colored(), io_lib:format(Format, Args), reset(), "\n"]),
        ok.

    tsl() -> "\e]0;".
    fsl() -> "\a".
    colored() -> "\e[1;44m".
    reset() -> "\e[0m".

That is: output the same message to the title bar (tsl, fsl are the tput capability names; see https://serverfault.com/a/23998/7027), and then (for now) also output it in colour, so that I can see if it's being called correctly.

Unfortunately, something is messing with my tsl() and fsl() escape codes. The coloured text is coming out correctly, but the other stuff's garbage. The escape codes are correct; I've tested them at the bash prompt with "echo -e '\e]0;Hello\a'".

So... what's screwing with them when they're output from ct_run?

Interestingly, if I try the same at the Erlang prompt, it hangs the shell until I press Ctrl+C twice, at which point the text is output, but still messed up.

Cheers,
Roger.

_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Can't update xterm title bar from Erlang

Alex S.
What I’ve noticed is you don’t output the line feed, which might mean that the IO buffer isn’t getting flushed by default. Although I am not sure.
12 мая 2017 г., в 22:28, Roger Lipscombe <[hidden email]> написал(а):

I have the following:

    put_progress(Format, Args) ->
        io:put_chars(user,
                     [tsl(), io_lib:format(Format, Args), fsl()]),
        io:put_chars(user,
                     [colored(), io_lib:format(Format, Args), reset(), "\n"]),
        ok.

    tsl() -> "\e]0;".
    fsl() -> "\a".
    colored() -> "\e[1;44m".
    reset() -> "\e[0m".

That is: output the same message to the title bar (tsl, fsl are the tput capability names; see https://serverfault.com/a/23998/7027), and then (for now) also output it in colour, so that I can see if it's being called correctly.

Unfortunately, something is messing with my tsl() and fsl() escape codes. The coloured text is coming out correctly, but the other stuff's garbage. The escape codes are correct; I've tested them at the bash prompt with "echo -e '\e]0;Hello\a'".

So... what's screwing with them when they're output from ct_run?

Interestingly, if I try the same at the Erlang prompt, it hangs the shell until I press Ctrl+C twice, at which point the text is output, but still messed up.

Cheers,
Roger.
_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions


_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Can't update xterm title bar from Erlang

Roger Lipscombe-2
I don't need the line feed from the shell:

    echo -ne '\e]0;Hello\a' ; sleep 5

...works fine.

But, in terms of line-feed-flushes-buffers, maybe.

Except that I immediately output something else with a line feed, and the terminal (gnome-terminal, Linux Mint) shows *something* for the escape sequence. It looks almost-correct, but it's hard to tell.

I suspect something to do with how Erlang has configured the tty for (maybe) raw mode, but I don't understand enough about how that works.

On 15 May 2017 at 11:17, Alex S. <[hidden email]> wrote:
What I’ve noticed is you don’t output the line feed, which might mean that the IO buffer isn’t getting flushed by default. Although I am not sure.
12 мая 2017 г., в 22:28, Roger Lipscombe <[hidden email]> написал(а):

I have the following:

    put_progress(Format, Args) ->
        io:put_chars(user,
                     [tsl(), io_lib:format(Format, Args), fsl()]),
        io:put_chars(user,
                     [colored(), io_lib:format(Format, Args), reset(), "\n"]),
        ok.

    tsl() -> "\e]0;".
    fsl() -> "\a".
    colored() -> "\e[1;44m".
    reset() -> "\e[0m".

That is: output the same message to the title bar (tsl, fsl are the tput capability names; see https://serverfault.com/a/23998/7027), and then (for now) also output it in colour, so that I can see if it's being called correctly.

Unfortunately, something is messing with my tsl() and fsl() escape codes. The coloured text is coming out correctly, but the other stuff's garbage. The escape codes are correct; I've tested them at the bash prompt with "echo -e '\e]0;Hello\a'".

So... what's screwing with them when they're output from ct_run?

Interestingly, if I try the same at the Erlang prompt, it hangs the shell until I press Ctrl+C twice, at which point the text is output, but still messed up.

Cheers,
Roger.
_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions



_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions
Loading...