Linux how to get window title with just shell script?
up vote
0
down vote
favorite
I cannot install any tools like screen or xproc on the box. I dont need to modify the title, I only need to find the window title name.
echo -e "33]0;[title]7";
modifies the title I know. But I just want to know the existing title name.
linux terminal-emulator window window-title
|
show 3 more comments
up vote
0
down vote
favorite
I cannot install any tools like screen or xproc on the box. I dont need to modify the title, I only need to find the window title name.
echo -e "33]0;[title]7";
modifies the title I know. But I just want to know the existing title name.
linux terminal-emulator window window-title
1
does unix.stackexchange.com/a/122870/117549 do it for you?
– Jeff Schaller
Nov 12 at 15:27
1
or possibly unix.stackexchange.com/a/274386/117549
– Jeff Schaller
Nov 12 at 15:28
my os does not recognize those as commands
– Bootham Deyyam
Nov 12 at 16:39
printf 'e[21t'
should cause your terminal to return its title in the forme]titlee\
. I'll try to wrap that in a script if they don't delete your question until then.
– qubert
Nov 12 at 16:46
I tried the above and got the result below, this is definitely in the right direction, as I was not getting any output before. print "33[21t" >$(tty) IFS='' read -t 3 -r a output : ^l^[
– Bootham Deyyam
Nov 13 at 15:38
|
show 3 more comments
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I cannot install any tools like screen or xproc on the box. I dont need to modify the title, I only need to find the window title name.
echo -e "33]0;[title]7";
modifies the title I know. But I just want to know the existing title name.
linux terminal-emulator window window-title
I cannot install any tools like screen or xproc on the box. I dont need to modify the title, I only need to find the window title name.
echo -e "33]0;[title]7";
modifies the title I know. But I just want to know the existing title name.
linux terminal-emulator window window-title
linux terminal-emulator window window-title
edited Nov 20 at 2:20
mosvy
4,458321
4,458321
asked Nov 12 at 15:25
Bootham Deyyam
6
6
1
does unix.stackexchange.com/a/122870/117549 do it for you?
– Jeff Schaller
Nov 12 at 15:27
1
or possibly unix.stackexchange.com/a/274386/117549
– Jeff Schaller
Nov 12 at 15:28
my os does not recognize those as commands
– Bootham Deyyam
Nov 12 at 16:39
printf 'e[21t'
should cause your terminal to return its title in the forme]titlee\
. I'll try to wrap that in a script if they don't delete your question until then.
– qubert
Nov 12 at 16:46
I tried the above and got the result below, this is definitely in the right direction, as I was not getting any output before. print "33[21t" >$(tty) IFS='' read -t 3 -r a output : ^l^[
– Bootham Deyyam
Nov 13 at 15:38
|
show 3 more comments
1
does unix.stackexchange.com/a/122870/117549 do it for you?
– Jeff Schaller
Nov 12 at 15:27
1
or possibly unix.stackexchange.com/a/274386/117549
– Jeff Schaller
Nov 12 at 15:28
my os does not recognize those as commands
– Bootham Deyyam
Nov 12 at 16:39
printf 'e[21t'
should cause your terminal to return its title in the forme]titlee\
. I'll try to wrap that in a script if they don't delete your question until then.
– qubert
Nov 12 at 16:46
I tried the above and got the result below, this is definitely in the right direction, as I was not getting any output before. print "33[21t" >$(tty) IFS='' read -t 3 -r a output : ^l^[
– Bootham Deyyam
Nov 13 at 15:38
1
1
does unix.stackexchange.com/a/122870/117549 do it for you?
– Jeff Schaller
Nov 12 at 15:27
does unix.stackexchange.com/a/122870/117549 do it for you?
– Jeff Schaller
Nov 12 at 15:27
1
1
or possibly unix.stackexchange.com/a/274386/117549
– Jeff Schaller
Nov 12 at 15:28
or possibly unix.stackexchange.com/a/274386/117549
– Jeff Schaller
Nov 12 at 15:28
my os does not recognize those as commands
– Bootham Deyyam
Nov 12 at 16:39
my os does not recognize those as commands
– Bootham Deyyam
Nov 12 at 16:39
printf 'e[21t'
should cause your terminal to return its title in the form e]titlee\
. I'll try to wrap that in a script if they don't delete your question until then.– qubert
Nov 12 at 16:46
printf 'e[21t'
should cause your terminal to return its title in the form e]titlee\
. I'll try to wrap that in a script if they don't delete your question until then.– qubert
Nov 12 at 16:46
I tried the above and got the result below, this is definitely in the right direction, as I was not getting any output before. print "33[21t" >$(tty) IFS='' read -t 3 -r a output : ^l^[
– Bootham Deyyam
Nov 13 at 15:38
I tried the above and got the result below, this is definitely in the right direction, as I was not getting any output before. print "33[21t" >$(tty) IFS='' read -t 3 -r a output : ^l^[
– Bootham Deyyam
Nov 13 at 15:38
|
show 3 more comments
1 Answer
1
active
oldest
votes
up vote
0
down vote
Try the following, but notice that the compatibility is pretty limited. See the notes below.
get_title(){(
set -e
ss=`stty -g`; trap 'exit 11' INT QUIT TERM; trap 'stty "$ss"' EXIT
e=`printf '33'`; st=`printf '234'`; t=
stty -echo -icanon min 0 time "${2:-2}"
printf "${1:-33[21t}" > `tty`
while c=`dd bs=1 count=1 2>/dev/null` && [ "$c" ]; do
t="$t$c"
case "$t" in
$e*$e\|$e*$st)
t=${t%$e\}; t=${t%$st}; printf '%sn' "${t#$e][lL]}";
exit 0;;
$e*);;
*) break;;
esac
done
printf %s "$t"; exit 1
)}
Example:
$ get_title
$ title=`get_title`
Or, if your script's stdin is not the terminal:
$ title=`get_title </dev/tty`
The stty
+ dd
kludge tries to make sure that the script won't just block if the terminal doesn't report anything in response to the e[21t
escape. This (or a better) approach could be also used with other control sequences (eg. to get the cursor position).
Notes:
Since the e[21t
escape is considered "insecure", extra configuration is needed in order to make it work:
For xterm
: echo '*.vt100.allowWindowOps: true' | xrdb -override
For urxvt
: echo 'Rxvt.insecure: true' | xrdb -override
It will not work at all in vte-based terminals like gnome-terminal
, mate-terminal
, xfce4-terminal
, etc, since they report either a fake ("Terminal") or empty title in response.
mlterm
doesn't need anything special, but it will crash (!) if the title wasn't set before with e]2;TITLEa
.
screen
will report its own window title (the one that was set with the -t
option or the C-a A command, not the title of the window it's running in.
It's blocked and not supported in tmux
.
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
Try the following, but notice that the compatibility is pretty limited. See the notes below.
get_title(){(
set -e
ss=`stty -g`; trap 'exit 11' INT QUIT TERM; trap 'stty "$ss"' EXIT
e=`printf '33'`; st=`printf '234'`; t=
stty -echo -icanon min 0 time "${2:-2}"
printf "${1:-33[21t}" > `tty`
while c=`dd bs=1 count=1 2>/dev/null` && [ "$c" ]; do
t="$t$c"
case "$t" in
$e*$e\|$e*$st)
t=${t%$e\}; t=${t%$st}; printf '%sn' "${t#$e][lL]}";
exit 0;;
$e*);;
*) break;;
esac
done
printf %s "$t"; exit 1
)}
Example:
$ get_title
$ title=`get_title`
Or, if your script's stdin is not the terminal:
$ title=`get_title </dev/tty`
The stty
+ dd
kludge tries to make sure that the script won't just block if the terminal doesn't report anything in response to the e[21t
escape. This (or a better) approach could be also used with other control sequences (eg. to get the cursor position).
Notes:
Since the e[21t
escape is considered "insecure", extra configuration is needed in order to make it work:
For xterm
: echo '*.vt100.allowWindowOps: true' | xrdb -override
For urxvt
: echo 'Rxvt.insecure: true' | xrdb -override
It will not work at all in vte-based terminals like gnome-terminal
, mate-terminal
, xfce4-terminal
, etc, since they report either a fake ("Terminal") or empty title in response.
mlterm
doesn't need anything special, but it will crash (!) if the title wasn't set before with e]2;TITLEa
.
screen
will report its own window title (the one that was set with the -t
option or the C-a A command, not the title of the window it's running in.
It's blocked and not supported in tmux
.
add a comment |
up vote
0
down vote
Try the following, but notice that the compatibility is pretty limited. See the notes below.
get_title(){(
set -e
ss=`stty -g`; trap 'exit 11' INT QUIT TERM; trap 'stty "$ss"' EXIT
e=`printf '33'`; st=`printf '234'`; t=
stty -echo -icanon min 0 time "${2:-2}"
printf "${1:-33[21t}" > `tty`
while c=`dd bs=1 count=1 2>/dev/null` && [ "$c" ]; do
t="$t$c"
case "$t" in
$e*$e\|$e*$st)
t=${t%$e\}; t=${t%$st}; printf '%sn' "${t#$e][lL]}";
exit 0;;
$e*);;
*) break;;
esac
done
printf %s "$t"; exit 1
)}
Example:
$ get_title
$ title=`get_title`
Or, if your script's stdin is not the terminal:
$ title=`get_title </dev/tty`
The stty
+ dd
kludge tries to make sure that the script won't just block if the terminal doesn't report anything in response to the e[21t
escape. This (or a better) approach could be also used with other control sequences (eg. to get the cursor position).
Notes:
Since the e[21t
escape is considered "insecure", extra configuration is needed in order to make it work:
For xterm
: echo '*.vt100.allowWindowOps: true' | xrdb -override
For urxvt
: echo 'Rxvt.insecure: true' | xrdb -override
It will not work at all in vte-based terminals like gnome-terminal
, mate-terminal
, xfce4-terminal
, etc, since they report either a fake ("Terminal") or empty title in response.
mlterm
doesn't need anything special, but it will crash (!) if the title wasn't set before with e]2;TITLEa
.
screen
will report its own window title (the one that was set with the -t
option or the C-a A command, not the title of the window it's running in.
It's blocked and not supported in tmux
.
add a comment |
up vote
0
down vote
up vote
0
down vote
Try the following, but notice that the compatibility is pretty limited. See the notes below.
get_title(){(
set -e
ss=`stty -g`; trap 'exit 11' INT QUIT TERM; trap 'stty "$ss"' EXIT
e=`printf '33'`; st=`printf '234'`; t=
stty -echo -icanon min 0 time "${2:-2}"
printf "${1:-33[21t}" > `tty`
while c=`dd bs=1 count=1 2>/dev/null` && [ "$c" ]; do
t="$t$c"
case "$t" in
$e*$e\|$e*$st)
t=${t%$e\}; t=${t%$st}; printf '%sn' "${t#$e][lL]}";
exit 0;;
$e*);;
*) break;;
esac
done
printf %s "$t"; exit 1
)}
Example:
$ get_title
$ title=`get_title`
Or, if your script's stdin is not the terminal:
$ title=`get_title </dev/tty`
The stty
+ dd
kludge tries to make sure that the script won't just block if the terminal doesn't report anything in response to the e[21t
escape. This (or a better) approach could be also used with other control sequences (eg. to get the cursor position).
Notes:
Since the e[21t
escape is considered "insecure", extra configuration is needed in order to make it work:
For xterm
: echo '*.vt100.allowWindowOps: true' | xrdb -override
For urxvt
: echo 'Rxvt.insecure: true' | xrdb -override
It will not work at all in vte-based terminals like gnome-terminal
, mate-terminal
, xfce4-terminal
, etc, since they report either a fake ("Terminal") or empty title in response.
mlterm
doesn't need anything special, but it will crash (!) if the title wasn't set before with e]2;TITLEa
.
screen
will report its own window title (the one that was set with the -t
option or the C-a A command, not the title of the window it's running in.
It's blocked and not supported in tmux
.
Try the following, but notice that the compatibility is pretty limited. See the notes below.
get_title(){(
set -e
ss=`stty -g`; trap 'exit 11' INT QUIT TERM; trap 'stty "$ss"' EXIT
e=`printf '33'`; st=`printf '234'`; t=
stty -echo -icanon min 0 time "${2:-2}"
printf "${1:-33[21t}" > `tty`
while c=`dd bs=1 count=1 2>/dev/null` && [ "$c" ]; do
t="$t$c"
case "$t" in
$e*$e\|$e*$st)
t=${t%$e\}; t=${t%$st}; printf '%sn' "${t#$e][lL]}";
exit 0;;
$e*);;
*) break;;
esac
done
printf %s "$t"; exit 1
)}
Example:
$ get_title
$ title=`get_title`
Or, if your script's stdin is not the terminal:
$ title=`get_title </dev/tty`
The stty
+ dd
kludge tries to make sure that the script won't just block if the terminal doesn't report anything in response to the e[21t
escape. This (or a better) approach could be also used with other control sequences (eg. to get the cursor position).
Notes:
Since the e[21t
escape is considered "insecure", extra configuration is needed in order to make it work:
For xterm
: echo '*.vt100.allowWindowOps: true' | xrdb -override
For urxvt
: echo 'Rxvt.insecure: true' | xrdb -override
It will not work at all in vte-based terminals like gnome-terminal
, mate-terminal
, xfce4-terminal
, etc, since they report either a fake ("Terminal") or empty title in response.
mlterm
doesn't need anything special, but it will crash (!) if the title wasn't set before with e]2;TITLEa
.
screen
will report its own window title (the one that was set with the -t
option or the C-a A command, not the title of the window it's running in.
It's blocked and not supported in tmux
.
edited Nov 21 at 21:43
answered Nov 19 at 18:18
mosvy
4,458321
4,458321
add a comment |
add a comment |
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f481285%2flinux-how-to-get-window-title-with-just-shell-script%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
does unix.stackexchange.com/a/122870/117549 do it for you?
– Jeff Schaller
Nov 12 at 15:27
1
or possibly unix.stackexchange.com/a/274386/117549
– Jeff Schaller
Nov 12 at 15:28
my os does not recognize those as commands
– Bootham Deyyam
Nov 12 at 16:39
printf 'e[21t'
should cause your terminal to return its title in the forme]titlee\
. I'll try to wrap that in a script if they don't delete your question until then.– qubert
Nov 12 at 16:46
I tried the above and got the result below, this is definitely in the right direction, as I was not getting any output before. print "33[21t" >$(tty) IFS='' read -t 3 -r a output : ^l^[
– Bootham Deyyam
Nov 13 at 15:38