如何永久更改窗口标题?

莫德·孔

生成窗口标题涉及哪些文件?例如,如果打开Rhythmbox,您会看到程序名称作为窗口标题。但是它不是由.desktop文件生成的我需要编辑哪些文件以将文本添加到应用程序的标题?我希望更改是永久的

我将Ubuntu GNOME 15.04与GNOME 3.16一起使用。

雅各布·弗利姆(Jacob Vlijm)

初始名称通常由应用程序本身(中的代码)设置。但是,您可以更改它,例如,通过使用xdotool,您必须先安装它:

sudo apt-get install xdotool

然后,一旦安装完毕,您可以通过(例如)以下命令来设置另一个窗口名称:

xdotool search --name "Unity LauncherSwitcher" set_window --name "Monkey"

这将改变:

在此处输入图片说明

进入:

在此处输入图片说明

笔记

如您所见,该命令存在于:

xdotool search --name "<current_name>" set_window --name "<new_name>"

<current_name>具有完全匹配。


替代编辑

根据您的评论,我知道上面的命令不起作用。我用不同的应用程序对其进行了测试,并且可以正常工作...

但是由于某种原因,我不明白,不能与Rhytmbox(!!可能是一个错误)

一种替代方法是使用wmctrl,您还必须安装:

sudo apt-get install wmctrl

然后使用以下命令:

xprop -id "$(wmctrl -l | grep 'Rhythmbox' | awk '{ print $1 }')" -set WM_NAME "Music"

我成功地在上进行了测试Rhythmbox

在此处输入图片说明

在此处输入图片说明

是否使更改永久生效?

如前所述,默认窗口名称在应用程序的代码中定义。

更改默认窗口标题将需要更改代码。如果代码可用,在很多情况下需要重新编译,并且取决于所使用的语言,则可以这样做我认为,一般性的指导是完全不可能的,并且超出(超出)非盟的范围。


编辑2

通过单个文件灵活地管理/设置每个应用程序的自定义窗口名称

在最初的问题中,您想知道是否存在某种文件来设置特定应用程序的新窗口的标题。如前所述,不是这种情况,但是可以创建

在下面的设置中,您可以轻松地在每个应用程序基础上定义新窗口的命名方式。只需在~(您的主目录)中创建一个名为的文件window_names.txt对于要为其设置特定窗口名称的每个应用程序,在其后依次添加一行应用程序和所需的窗口名称:

文本文件,定义每个应用程序的窗口名称

gnome-terminal Monkey eats
gedit Banana
rhythmbox if he runs out of peanuts

在此处输入图片说明

解释

该设置存在一个简单的后台脚本。该脚本非常轻巧,因此对性能不会有任何明显的影响。

脚本启动后,它将读取文件~/window_names.txt并为每个应用程序加载设置。然后,它会关注创建的窗口。如果出现一个属于文件中定义的应用程序之一的窗口,它将相应地设置窗口名称。

如何设置

  1. 该脚本同时使用wmctrlxdotool

    sudo apt-get install wmctrl
    sudo apt-get install xdotool
    
  2. 将脚本复制到一个空文件中,另存为 setwindowname.py

  3. 创建文件~/window_names.txt(完全命名为window_names.txt),然后以以下格式添加您的应用程序:

    <application> <window_name>
    

    例如

    gedit Text editor
    

    窗口名称可能包含空格。

  4. 通过以下命令从终端测试脚本:

    python3 /path/to/setwindowname.py
    
  5. 如果一切正常,请将其添加到启动应用程序:Dash>启动应用程序>添加

    请注意,在某些情况下,如果在桌面尚未完全加载时启动脚本,则脚本可能会中断。如果是这样的话,添加到启​​动应用程序的命令将是:

    /bin/bash -c "sleep 15&&python3 /path/to/setwindowname.py"
    

剧本

#!/usr/bin/env python3
import subprocess
import time
import os

f = os.environ["HOME"]+"/"+"window_names.txt"

change = []
lines = open(f).read().splitlines()
for l in lines:
    try:
        change.append([l.split()[0], (" ").join(l.split()[1:])])
    except IndexError:
        pass

get = lambda cmd: subprocess.check_output(cmd).decode("utf-8").strip()
curr_1 = []

while True:
    try:
        curr_2 = get(["wmctrl", "-lp"]).splitlines()
        new = [w for w in curr_2 if not w in curr_1]
        for item in new:
            line = item.split(); pid = line[2]
            procs = get(["ps", "-e"]).splitlines()
            match = [l for l in procs if pid in l][0]
            for app in [app for app in change if app[0] in match]:
                subprocess.Popen(["xdotool", "set_window", "--name", app[1], line[0]])
        curr_1 = curr_2
        time.sleep(0.3)
    except:
        pass

笔记

  • 如果文件~/window_names.txt被编辑,则脚本需要重新启动。
  • 无论如何启动应用程序,它都有效。当通过终端/和或使用来运行应用程序时,它也起作用sudo
  • 它与任何应用程序的右键单击选项都不兼容
  • 该脚本还可以“维护”窗口名称。如果另一个进程随后更改了窗口名称(打开选项卡,例如更改目录),则脚本会将窗口视为“新窗口”,并保留您选择的窗口名称。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何更改MPlayer窗口的标题?

来自分类Dev

更改路径后,如何永久更改某个cmd窗口的外观?

来自分类Dev

如何更改QtQuick 2窗口的标题?

来自分类Dev

如何更改X中任何窗口的标题?

来自分类Dev

如何更改窗口标题(由wmctrl使用)

来自分类Dev

如何永久更改R处的绘图窗口大小?

来自分类Dev

如何在Mac Catalyst窗口场景中更改窗口标题?

来自分类Dev

如何在Windows 10中更改窗口的标题窗口

来自分类Dev

JavaFX如何更改对话框/窗口标题的颜色?

来自分类Dev

如何在Qt Creator中更改窗口标题?

来自分类Dev

如何在wpf窗口中以编程方式更改标题?

来自分类Dev

如何更改指南创建的GUI图形窗口标题名称?

来自分类Dev

如何在Mahapps.MetroWindow中更改窗口标题的FontWeigth

来自分类Dev

如何使用Applescript在Mac上更改窗口标题文本?

来自分类Dev

如何基于vt320更改TE的窗口标题?

来自分类Dev

如何从输入框tkinter更改窗口标题

来自分类Dev

如何在 Google App Maker 中更改窗口标题?

来自分类Dev

如何更改Vue js Bootstrap模态窗口的模态标题的名称?

来自分类Dev

如何永久更改列表?

来自分类Dev

NSPreferencePane-更改窗口标题

来自分类Dev

更改默认顶级窗口的标题

来自分类Dev

停止openssh更改窗口标题

来自分类Dev

在 Alacritty 中更改窗口标题

来自分类Dev

在闪亮的仪表板上永久更改标题标题的颜色

来自分类Dev

如何永久更改umask模式?

来自分类Dev

如何永久更改NSButton的光标?

来自分类Dev

如何永久更改MTU设置

来自分类Dev

如何使pavucontrol更改永久生效?

来自分类Dev

如何永久更改终端的提示

Related 相关文章

热门标签

归档