Початкове ім'я зазвичай встановлюється (кодом всередині) самої програми. Однак ви можете змінити його, наприклад, скориставшись тим 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
:
Зробити зміни постійними?
Як згадувалося, ім'я вікна за замовчуванням визначається в коді програми.
Змінивши заголовок вікна за замовчуванням , потрібно змінити код. Це може бути зроблено, якщо код доступний, у багатьох випадках знадобиться перекомпіляція і, крім іншого, залежить від використовуваної мови. Загальна інструкція була б неможливою і поза межами (поза) сферою АС, на мою думку.
EDIT 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
.
- Це не заважає опції правої кнопки миші будь-якої програми.
- Сценарій також "підтримує" ім'я вікна; якщо інший процес згодом змінює ім'я вікна (відкриваючи вкладки, змінюючи каталоги, наприклад), сценарій розглядає вікно як "нове вікно" і підтримує назву вікна на ваш вибір.