如何在Linux的*.desktop文件中自定义终端窗口标题
这个问题我之前折腾终端窗口的时候也遇到过!尤其是同时开好几个带终端的程序,窗口全叫“Terminal”真的分不清谁是谁。其实只需要调整一下你的.desktop文件配置就行,给你几种靠谱的方案:
方案1:通用型(适配所有终端)
直接修改Exec字段,在启动程序前先通过ANSI转义序列设置终端标题。这种方法几乎兼容所有终端模拟器,不用考虑你用的是GNOME Terminal、Konsole还是Xfce Terminal。
比如原来的Exec行是:
Exec=your-program
改成:
Exec=bash -c 'echo -ne "\033]0;你的程序名称\007"; exec your-program'
简单解释下:
echo -ne "\033]0;你的程序名称\007":这行是发送终端能识别的标题设置指令,\033]0;是ANSI转义序列的开头,后面跟着你想显示的标题文本,\007是结束符。exec your-program:用你的程序进程替换当前的bash进程,这样当你关闭程序时,终端窗口也会跟着关闭,和原来的行为逻辑保持一致。
方案2:针对特定终端的优化
如果你明确知道自己用的是哪款终端,可以直接调用终端的命令行参数来设置标题,这种方式更直观:
GNOME Terminal:
修改Exec行,同时可以去掉原来的Terminal=true(因为我们直接指定了终端):Exec=gnome-terminal --title="你的程序名称" --wait -e your-program--wait参数会让终端在程序运行结束后保持打开,方便你查看输出;如果不需要的话可以直接去掉。Konsole(KDE终端):
类似的写法:Exec=konsole --title="你的程序名称" -e your-programXfce Terminal:
Exec=xfce4-terminal --title="你的程序名称" -x your-program
最后一步:更新桌面数据库
修改完.desktop文件后,记得更新桌面环境的应用数据库,不然可能不会立即生效:
- 如果是用户目录下的.desktop文件(路径一般是
~/.local/share/applications/):update-desktop-database ~/.local/share/applications/ - 如果是系统级的文件(路径一般是
/usr/share/applications/),需要加sudo权限:sudo update-desktop-database /usr/share/applications/
举个完整的修改例子,原来的.desktop文件:
[Desktop Entry] Name=My Cool App Comment=A program that does cool things Exec=my-cool-app Terminal=true Type=Application Icon=my-cool-app-icon
用方案1修改后:
[Desktop Entry] Name=My Cool App Comment=A program that does cool things Exec=bash -c 'echo -ne "\033]0;My Cool App\007"; exec my-cool-app' Terminal=true Type=Application Icon=my-cool-app-icon
这样修改后,再打开程序,终端窗口的标题就会显示你的程序名称,再也不会搞混啦!
内容的提问来源于stack exchange,提问作者Abdelrahman Said
相关产品推荐
相关产品推荐

