Początkowa nazwa jest zwykle ustawiana przez (kod) samej aplikacji. Możesz go jednak zmienić, np. Za pomocą xdotool
, który musiałbyś najpierw zainstalować:
sudo apt-get install xdotool
Następnie po zainstalowaniu możesz ustawić inną nazwę okna (np.) Za pomocą polecenia:
xdotool search --name "Unity LauncherSwitcher" set_window --name "Monkey"
To zmieni:
w:
Uwaga
Jak widać, istnieje polecenie:
xdotool search --name "<current_name>" set_window --name "<new_name>"
<current_name>
Musi dokładnie pasować.
Edytuj alternatywnie
Z twojego komentarza rozumiem, że powyższe polecenie nie działało. Testowałem to z różnymi aplikacjami i działało ...
Ale z powodu, którego nie rozumiem, NIE z Rhytmbox
(może być błąd)
Alternatywą jest użycie wmctrl
, które również musiałbyś zainstalować:
sudo apt-get install wmctrl
Następnie użyj polecenia:
xprop -id "$(wmctrl -l | grep 'Rhythmbox' | awk '{ print $1 }')" -set WM_NAME "Music"
Z powodzeniem przetestowałem to na Rhythmbox
:
Czy zmiany są trwałe?
Jak wspomniano, domyślna nazwa okna jest zdefiniowana w kodzie aplikacji.
Zmiana domyślnego tytułu okna wymaga zmiany kodu. Można to zrobić, jeśli kod jest dostępny, w wielu przypadkach wymagałby ponownej kompilacji i zależy między innymi od używanego języka. Ogólna instrukcja byłaby moim zdaniem niemożliwa i poza (poza) zakresem UA.
EDYCJA 2
Elastycznie zarządzaj / ustaw niestandardowe nazwy okien dla aplikacji z jednego pliku
W swoim pierwotnym pytaniu zastanawiałeś się, czy istnieje jakiś plik do ustawienia tytułu nowych okien konkretnej aplikacji. Jak wyjaśniono, tak nie jest, można go jednak utworzyć.
W poniższej konfiguracji możesz bardzo łatwo zdefiniować, na podstawie nazw aplikacji, nowe okna. Po prostu utwórz plik ~
o nazwie (Twój katalog domowy) window_names.txt
. Dla każdej aplikacji, dla której chcesz ustawić konkretną nazwę okienka, dodaj wiersz, podsekcję, aplikację i żądaną nazwę okna:
Plik tekstowy definiujący nazwy okien dla aplikacji
gnome-terminal Monkey eats
gedit Banana
rhythmbox if he runs out of peanuts
Wyjaśnienie
Istnieje prosty skrypt w tle. Skrypt jest bardzo lekki, więc nie będzie miał żadnego zauważalnego wpływu na wydajność.
Po uruchomieniu skryptu odczytuje plik ~/window_names.txt
i ładuje ustawienia dla poszczególnych aplikacji. Następnie kontroluje nowo utworzone okna. Jeśli pojawi się okno należące do jednej z aplikacji zdefiniowanych w pliku, odpowiednio ustawia nazwę okna.
Jak skonfigurować
Skrypt korzysta zarówno wmctrl
a xdotool
:
sudo apt-get install wmctrl
sudo apt-get install xdotool
Skopiuj skrypt do pustego pliku i zapisz go jako setwindowname.py
Utwórz plik ~/window_names.txt
(dokładnie o nazwie window_names.txt
), dodaj swoje aplikacje w formacie:
<application> <window_name>
na przykład
gedit Text editor
Nazwa okna może zawierać spacje.
Uruchom skrypt z terminalu za pomocą polecenia:
python3 /path/to/setwindowname.py
Jeśli wszystko działa zgodnie z oczekiwaniami, dodaj go do aplikacji startowych: Dash> Aplikacje startowe> Dodaj
Pamiętaj, że w niektórych przypadkach skrypt może się zepsuć, jeśli zostanie uruchomiony, gdy pulpit nie zostanie jeszcze w pełni załadowany. W takim przypadku polecenie dodawania do aplikacji startowych wyglądałoby następująco:
/bin/bash -c "sleep 15&&python3 /path/to/setwindowname.py"
Scenariusz
#!/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
Notatki
- Jeśli plik
~/window_names.txt
jest edytowany, skrypt musi zostać zrestartowany.
- Działa bez względu na sposób uruchamiania aplikacji; działa również, gdy aplikacje są uruchamiane z terminala / i / lub
sudo
.
- Nie koliduje z opcją kliknięcia prawym przyciskiem myszy dowolnej aplikacji.
- Skrypt „utrzymuje” także nazwę okna; jeśli inny proces zmieni później nazwę okna (otwieranie kart, zmiana katalogów np.), skrypt zobaczy okno jako „nowe okno” i zachowa wybraną przez ciebie nazwę okna.