根据正在运行的程序更改终​​端模拟器图标

根据正在运行的程序更改终​​端模拟器图标

我已经开始使用更多“ncurses”风格的应用程序,例如vim直接ipython从终端模拟器运行的应用程序。结果,我经常打开多个终端应用程序,但问题是每个终端应用程序都有相同的图标,因此当我尝试在窗口之间按 Alt+Tab 拉出我想要的终端应用程序时,所有终端应用程序看起来都一样。目前我一直在使用gvim而不是vim专门出于这个原因,正如你所看到的,它很好地显示了自己的图标:

使用两个终端(Firefox 和 gvim)的 Alt 选项卡视图

这似乎有点矫枉过正。理想情况下,运行vimnvimipythongdb或在终端中运行的其他一些长时间运行的程序将更改终端图标以匹配为应用程序指定的某些图标。

我在 Arch Linux 上使用 Cinnamon。如果有类似的终端模拟器具有此功能,我可以放弃使用 GNOME 终端。

答案1

成功!感谢谷歌和SO引导我xseticon

第一的安装 xseticon

将此脚本添加到您的某个位置PATH

# setWinIcon.sh
#!/bin/sh                                                                                           

# Usage: setWinIcon [title] [icon]                                                                  
# - title: a string to match within the title of the window                                         
# - icon: path to the icon file. Use png for best results.                                          

title="$1"                                                                                          
ICONPATH="$2"                                                                                       

known_windows=$(wmctrl -l |grep $title|awk '{ print $1 }')                                          

for id in ${known_windows}                                                                          
do                                                                                                  
    xseticon -id "$id" "$ICONPATH"                                                                  
done 

然后将此函数添加到您的 中.vimrc,根据需要替换路径:

system("setWinIcon.sh", "$WINDOWID [path/to/vimicon.png]")

请注意,这不会恢复图标。您可以触发vimLeave自动命令将其刷新到终端的图标,如下所示:

au vimLeave system("setWinIcon.sh", "$WINDOWID [path/to/termicon.png]")

对于其他程序,只需将它们配置为别名即可alias ipython="setWinIcon.sh $WINDOWID [path/to/ipyicon.png] && ipython && setWinIcon.sh $WINDOWID [path/to/termicon.png]"

相关内容