Начальное имя обычно задается (кодом внутри) самого приложения. Однако вы можете изменить его, например, с помощью 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
:
Сделать изменения постоянными?
Как уже упоминалось, имя окна по умолчанию определяется в коде приложения.
Для изменения заголовка окна по умолчанию потребуется изменить код. Это может быть сделано, если код доступен, во многих случаях потребуется перекомпиляция и, помимо прочего, это зависит от используемого языка. По моему мнению, общая инструкция была бы совершенно невозможной и выходящей за рамки AU.
РЕДАКТИРОВАТЬ 2
Гибкое управление / установка пользовательских имен окон для приложения из одного файла
В исходном вопросе вам было интересно, существует ли какой-нибудь файл для установки заголовка новых окон определенного приложения. Как объяснено, это не тот случай, однако, он может быть создан.
В приведенной ниже настройке вы можете очень легко определить для каждого приложения, как называются новые окна. Просто создайте файл в ~
(ваш домашний каталог) с именем window_names.txt
. Для каждого из приложений, для которого вы хотите задать определенное имя ветра, добавьте строку, затем, приложение и желаемое имя окна:
Текстовый файл, определяющий имена окон для приложения
gnome-terminal Monkey eats
gedit Banana
rhythmbox if he runs out of peanuts
объяснение
Установка существует из простого фонового скрипта. Сценарий очень легкий, поэтому он не окажет заметного влияния на производительность.
После запуска сценария он читает файл ~/window_names.txt
и загружает настройки для каждого приложения. Затем он следит за вновь созданными окнами. Если появляется окно, которое принадлежит одному из приложений, определенных в файле, оно соответственно устанавливает имя окна.
Как настроить
Скрипт использует wmctrl
и xdotool
:
sudo apt-get install wmctrl
sudo apt-get install xdotool
Скопируйте скрипт в пустой файл и сохраните его как setwindowname.py
Создайте файл ~/window_names.txt
(точно названный window_names.txt
), добавьте ваши приложения в формате:
<application> <window_name>
например
gedit Text editor
Имя окна может содержать пробелы.
Протестируйте скрипт из терминала командой:
python3 /path/to/setwindowname.py
Если все работает как положено, добавьте его в автозагрузку приложений: Dash> Startup Applications> Add
Обратите внимание, что в некоторых случаях сценарий может сломаться, если он запускается, когда рабочий стол еще не загружен полностью. Если это так, команда для добавления в автозагрузку приложений будет выглядеть так:
/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
.
- Это не влияет на параметр правой кнопки мыши любого приложения.
- Скрипт также «поддерживает» имя окна; если другой процесс впоследствии изменяет имя окна (например, открывая вкладки, меняя каталоги), сценарий видит окно как «новое окно» и сохраняет имя окна по вашему выбору.