のらぬこの日常を描く

ノージャンルのお役立ち情報やアニメとゲームの話、ソフトウェア開発に関する話などを中心としたブログです。

PuTTYは、何故リモート端末のログインユーザ、カレントディレクトリ等をタイトルバーに表示できるのか?

PuTTYは、何故リモート端末のログインユーザ、カレントディレクトリ等をタイトルバーに表示できるのか?

ということをふと疑問に思った。

しかも、端末に対して

$ cd /var/www

とかやると、タイトルバーの表示もリアルタイムに追従してくれる。


割と気になったのでちょっと調べてみた。

Window Title 変更箇所 window.c

void set_title(void *frontend, char *title)
{
    sfree(window_name);
    window_name = snewn(1 + strlen(title), char);
    strcpy(window_name, title);
    if (cfg.win_name_always || !IsIconic(hwnd))
	SetWindowText(hwnd, title);
}

そして、呼び出し元がこれ

/*
 * Process an OSC sequence: set window title or icon name.
 */
static void do_osc(Terminal *term)
{
......

    /* fall through: parameter 0 means set both */
    case 2:
    case 21:
        if (!term->cfg.no_remote_wintitle)
            set_title(term->frontend, term->osc_string); // <= ここ
        break;
.......
}

更にコールスタックをたどっていくと。。。
telnet.c do_telnet_read()
>|c|
	c_write(telnet, outbuf, outbuflen);

Windowタイトル情報って、端末プロトコルに組み込まれてる?

ソースコメントに OSCシーケンスと書かれているので、おそらくそう呼ばれる何かなのでしょうちょっと

ていうか常識なのかも。

google でざっと検索してみましたがそれっぽい情報はなさげ

とりあえず今日はここまで。