默认情况下,tmux将当前窗格标题设置为活动命令(例如:)vim,即使allow-rename是off。
我想将其更改为当前文件夹名称 ( basename $PWD)。
请注意,我不想动态更改window name,因为我有时会rename-window用来设置自定义名称。在这种情况下,自定义窗口名称必须保持不变。
是否可以通过 CLI 获取所有正在运行的 GUI 应用程序窗口的标题?也显示在任务栏按钮上的标题。例如:
我正在使用 Linux Mint XFCE (17.3)
无论我为标题栏设置多大的字体,标题栏的高度都不会改变。我没有看到任何可以输入标题栏所需高度的编辑框。
到目前为止,我只找到了解决方法,即您应该从当前主题编辑窗口的按钮(关闭、最大化等)。然而这很烦人,因为如果你决定新的高度不合适,它应该大 1 像素,你必须再次重新调整按钮(整套)。
我正在寻找独立于主题的东西,而且很简单。
您可能知道,当您从 X 终端(rxvt、gnome-terminal...)ssh 到服务器时,ssh 会更改窗口标题以反映 user@host,但它不会将其更改回来。
互联网上有很多解决方法的技巧。我不是要另一个1。
我正在寻找的是解释为什么会这样。所以我可以学会忍受它。为什么 ssh 不设置标题?
更符合 FITD 的方式:如果 vim 可以做到,为什么 ssh 不能?
1 ...除非解释是问题仅由 ssh 配置错误引起,在这种情况下,我欢迎解决该问题。
目前,每当我从 PuTTY 中打开屏幕会话时,PuTTY 窗口的窗口标题都会更改为“屏幕”。我想防止这种情况发生。
请让我知道这样做的方法是什么。如果这是一个重复的问题,请道歉。
请注意,我不是在询问屏幕内各种会话的标题(可以用Ctrl- aShift+设置A)。我在询问 PuTTY 的窗口标题。
当我使用 gnu screen 时,在其他选项卡中,我 ssh 到其他机器,相应地重命名选项卡,并正常工作。标签名称不变。
在一个新的选项卡中,它只是原始机器上的一个终端,每当我键入任何命令时,该选项卡都会重命名为当前工作目录。
例子:
///////////这里是所有东西预先的样子
[me@mac ~]$
[ me ][0*$ me@mac:~ 1-$ web01 2$ dev03
Run Code Online (Sandbox Code Playgroud)
////////// 设置选项卡名称
[me@mac ~]$
Set window's title to: test
[ me ][0*$ test 1-$ web01 clone 2$ dev03 clone
Run Code Online (Sandbox Code Playgroud)
/////// 输入命令: pwd
[me@mac ~]$ pwd
/home/me
[me@mac ~]$
[ me ][0*$ me@mac:~ 1-$ web01 clone 2$ dev03 clone
Run Code Online (Sandbox Code Playgroud)
并且该选项卡被重命名回当前的工作目录。在我通过 ssh 连接到另一台机器的任何选项卡中都不会发生这种情况。所以我认为这可能是我个人设置的问题,但我的 .bashrc、.bash_profile 或 .screenrc 文件中似乎没有任何与标题有关的内容。
我试图通过自定义我的.bashrc文件来弄清楚如何使当前的 TTY 会话出现在当前的终端窗口标题栏中,但我似乎在让它工作时遇到了一些麻烦。
我试着这样做;
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h \w\a | $(tty | cut -d/ -f3,4)\]$PS1"
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时并没有给出预期的结果。相反,它是这样的;
| pts/0user@hostname ~$
Run Code Online (Sandbox Code Playgroud)
在打开终端屏幕而不是像这样的标题栏;
user@host ~ | pty/0
Run Code Online (Sandbox Code Playgroud)
在我的.bashrc文件中它看起来像这样
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h \w\a | $(tty | cut -d/ -f3,4)\]$PS1"
;;
*)
;;
esac
Run Code Online (Sandbox Code Playgroud)
用这个固定。
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h \w | $(tty | cut -d/ -f3,4)\a\]$PS1"
Run Code Online (Sandbox Code Playgroud)
感谢@Gilles 在他们的帖子中指出了这一点,这使得需要做的事情变得更加清楚。
有时,在自己的终端选项卡中会打开许多不同的会话,并且希望锁定它们的初始标题(以会话名称命名),因为本地标题调整使这些会话无法区分。很明显,控制远程软件运行的所有点点滴滴都是现实中无法完成的任务,因此最合适的方法是设置一个旋钮,禁止对标题进行任何进一步更改。我怀疑是否有这样的旋钮,但谁知道呢?
我想设置Xterm窗口标题在两种状态之间切换:
我可以使用当前路径创建一个 Xterm 窗口标题:
$ export PROMPT_COMMAND='echo -ne "\033]0;`basename ${PWD}`\007"'
Run Code Online (Sandbox Code Playgroud)
我可以通过添加语句来显示当前正在运行的命令:trap.bashrc
$ trap 'echo -ne "\033]0;$BASH_COMMAND\007"' DEBUG
Run Code Online (Sandbox Code Playgroud)
但我无法在两者之间自动切换。是否可以?
编辑:@terdon展示了一个在常规 xterm 中工作的解决方案,这很酷!但我没有提到我使用 MacOSX Terminal.app。当没有命令运行时,这表明仍然显示“bash”而不是当前路径。经过一番修改,我想出了如何解决这个问题。
我通常看到将终端标题设置为(类似)的语法:
echo -e '\e]0;Some Title\a'
Run Code Online (Sandbox Code Playgroud)
但是我注意到这个答案使用了2而不是0,这促使我做更多的挖掘。根据此文档,您实际上可以使用以下语法设置“图标名称”和“窗口标题”:
Run Code Online (Sandbox Code Playgroud)· ESC]0;stringBEL -- Set icon name and window title to string · ESC]1;stringBEL -- Set icon name to string · ESC]2;stringBEL -- Set window title to string where ESC is the escape character (\033), and BEL is the bell character (\007). Printing one of these sequences within the xterm will cause the window or icon title to be changed.
但它没有继续解释“图标标题”或“图标名称”的确切含义。当我尝试,我看不出有什么区别0和2,并1没有 …
window-title ×10
command-line ×3
bash ×2
gnu-screen ×2
prompt ×2
terminal ×2
xfce ×2
xterm ×2
osx ×1
putty ×1
ssh ×1
tmux ×1
windows ×1
x11 ×1