Mau*_*Kon 22 window-manager xdotool wmctrl xprop
生成窗口标题涉及哪些文件?例如,如果您打开 Rhythmbox,您会看到程序名称作为窗口标题。但它不是由.desktop
文件生成的。我需要编辑哪些文件才能在应用程序的标题中添加文本?我希望更改是永久性的
我使用 Ubuntu GNOME 15.04 和 GNOME 3.16。
Jac*_*ijm 23
初始名称通常由应用程序本身(内部代码)设置。但是,您可以更改它,例如使用xdotool
,您必须先安装它:
sudo apt-get install xdotool
Run Code Online (Sandbox Code Playgroud)
然后,一旦安装,您可以通过(例如)命令设置另一个窗口名称:
xdotool search --name "Unity LauncherSwitcher" set_window --name "Monkey"
Run Code Online (Sandbox Code Playgroud)
这将改变:
进入:
如您所见,该命令存在于:
xdotool search --name "<current_name>" set_window --name "<new_name>"
Run Code Online (Sandbox Code Playgroud)
在<current_name>
具有完全匹配。
从您的评论中,我了解到上面的命令不起作用。我用不同的应用程序对其进行了测试,它有效......
但出于某种原因,我不明白,而不是Rhytmbox
(!! 可能是一个错误)
另一种方法是使用wmctrl
,您还必须安装:
sudo apt-get install wmctrl
Run Code Online (Sandbox Code Playgroud)
然后使用命令:
xprop -id "$(wmctrl -l | grep 'Rhythmbox' | awk '{ print $1 }')" -set WM_NAME "Music"
Run Code Online (Sandbox Code Playgroud)
我成功地测试了它Rhythmbox
:
如前所述,默认窗口名称是在应用程序代码中定义的。
更改默认窗口标题需要更改代码。如果代码可用,这可以完成,在许多情况下需要重新编译并且取决于所使用的语言等。在我看来,一般性指令是完全不可能的,并且超出(超出)AU 的范围。
在您最初的问题中,您想知道是否有某种文件可以设置特定应用程序的新窗口的标题。正如所解释的,情况并非如此,但是,它可以被创建。
在下面的设置中,您可以非常轻松地基于每个应用程序定义新窗口的命名方式。只需在~
(您的主目录)中创建一个名为window_names.txt
. 对于要为其设置特定窗口名称的每个应用程序,添加一行,随后,应用程序和所需的窗口名称:
一个文本文件,定义每个应用程序的窗口名称
gnome-terminal Monkey eats
gedit Banana
rhythmbox if he runs out of peanuts
Run Code Online (Sandbox Code Playgroud)
设置存在一个简单的后台脚本。脚本非常轻巧,因此不会对性能产生任何显着影响。
脚本启动后,它会读取文件~/window_names.txt
并加载每个应用程序的设置。然后它会关注新创建的窗口。如果出现属于文件中定义的应用程序之一的窗口,它会相应地设置窗口名称。
该脚本同时使用wmctrl
和xdotool
:
sudo apt-get install wmctrl
sudo apt-get install xdotool
Run Code Online (Sandbox Code Playgroud)将脚本复制到一个空文件中,另存为 setwindowname.py
创建文件~/window_names.txt
(完全命名window_names.txt
),按以下格式添加您的应用程序:
<application> <window_name>
Run Code Online (Sandbox Code Playgroud)
例如
gedit Text editor
Run Code Online (Sandbox Code Playgroud)
窗口名称可能包含空格。
通过以下命令从终端测试运行脚本:
python3 /path/to/setwindowname.py
Run Code Online (Sandbox Code Playgroud)如果一切正常,请将其添加到启动应用程序:Dash > Startup Applications > Add
请注意,在某些情况下,如果在桌面尚未完全加载时启动脚本,脚本可能会中断。如果可能是这种情况,添加到启动应用程序的命令将是:
/bin/bash -c "sleep 15&&python3 /path/to/setwindowname.py"
Run Code Online (Sandbox Code Playgroud)sudo apt-get install xdotool
Run Code Online (Sandbox Code Playgroud)
~/window_names.txt
被编辑,脚本需要重新启动。sudo
.0x2*_*fa0 10
标题是由应用程序可执行文件生成的,并且没有一种简单的方法来编辑它。
打开应用程序后更改其标题:
xdotool
使用sudo apt-get install xdotool
pgrep myapp
(即pgrep rythmbox
)获取应用程序的pid更改窗口标题(替换HERE_THE_PID
为应用程序的进程 ID):
xdotool search --onlyvisible --pid HERE_THE_PID --name "\a\b\c" set_window --name "$new_name"
Run Code Online (Sandbox Code Playgroud)制作脚本以启动具有自定义标题的任何应用程序:
创建一个change-title
使用以下内容调用的 bash 脚本:
#!/bin/bash
## The new name of the window is the first argument passed to the script:
new_name="${1}"
## application is all arguments but the first (the title)
application=${@:2}
## Run the app in background and in quiet mode:
$application &> /dev/null &
## Get the pid of the app:
app_pid=$!
## Wait until the window appears:
until xdotool search --onlyvisible --pid $app_pid &> /dev/null; do sleep 0.01; done
## Change the window name:
xdotool \
search \
--onlyvisible \
--pid $app_pid \
--name "\a\b\c" \
set_window \
--name "$new_name"
## Comment this line to run the app in background:
wait $app_pid
Run Code Online (Sandbox Code Playgroud)使其可执行 chmod a+x change-title
./change-title "NewTitle" theapp --its-arguments
要使更改永久化:
gksudo gedit /usr/local/bin/custom-title
(fx.user/local/bin/music)sudo chmod a+x /usr/local/bin/custom-title
gksudo gedit /usr/share/applications/rhythmbox.desktop
在这个文件中,有一行(我的行号是 35)说:
Exec=rhythmbox %U
Run Code Online (Sandbox Code Playgroud)将其替换为所创建文件的名称:
Exec=custom title (fx. Exec=music)
Run Code Online (Sandbox Code Playgroud)使更改对“打开方式”功能生效
gksudo gedit /usr/share/applications/rhythmbox-device.desktop
rhythmbox
为先前 .desktop 文件中使用的名称。sudo kill rhythmbox
(摘要)您应该拥有的文件概述
为了使应用程序完全正常运行,完成后您应该有 3 个 .desktop 文件/usr/share/applications
:
music.desktop
或您为应用程序提供的名称
用Exec=music
与Hidden=true
(添加的最后一个,如果不存在)
rhythmbox.desktop
与Exec=rhythmbox %U
和Hidden=true
rhythmbox-device.desktop
有Exec=music --select-source %U
和没有隐藏条目
这意味着你总是打开最后一个文件,标题总是应该的。唯一的方法是在您使用 ALT+F2+R 刷新会话时自行重置。
/usr/local/bin
。最后说明:
--name "\a\b\c"
is 修复bug 时,不要替换为应用程序名称!的交代${@:2}
中所要求的代码@Maud昆:
$@
是一个存储所有位置参数的数组。${@:2}
意思是:除了第一个之外的所有位置参数假设我这样调用程序:
awesome-program foo bar baz fooz
Run Code Online (Sandbox Code Playgroud)
${@:1}
将是 foo bar baz fooz
${@:2}
将是 bar baz fooz
${@:3}
将是 baz fooz
${@:4}
将是 fooz
${@:5}
是空的,因为没有更多的位置参数。$@
,${@}
并且${@:1}
是同一件事:所有位置参数。
归档时间: |
|
查看次数: |
13691 次 |
最近记录: |