Der ursprüngliche Name wird normalerweise durch den (Code innerhalb) der Anwendung selbst festgelegt. Sie können es jedoch ändern, z. B. indem Sie verwenden xdotool
, was Sie zuerst installieren müssten:
sudo apt-get install xdotool
Sobald es installiert ist, können Sie einen anderen Fensternamen festlegen, indem Sie (z. B.) den folgenden Befehl ausführen:
xdotool search --name "Unity LauncherSwitcher" set_window --name "Monkey"
Dies wird sich ändern:
in:
Hinweis
Wie Sie sehen, besteht der Befehl aus:
xdotool search --name "<current_name>" set_window --name "<new_name>"
Das <current_name>
muss genau passen.
Bearbeiten Alternativ
Aus Ihrem Kommentar geht hervor, dass der obige Befehl nicht funktioniert hat. Ich habe es mit verschiedenen Anwendungen getestet und es hat funktioniert ...
Aber aus einem Grund verstehe ich nicht, NICHT mit Rhytmbox
(!! könnte ein Bug sein)
Eine Alternative ist die Verwendung wmctrl
, die Sie ebenfalls installieren müssten:
sudo apt-get install wmctrl
Dann benutze den Befehl:
xprop -id "$(wmctrl -l | grep 'Rhythmbox' | awk '{ print $1 }')" -set WM_NAME "Music"
Ich habe es erfolgreich getestet auf Rhythmbox
:
Änderungen dauerhaft vornehmen?
Wie bereits erwähnt, ist der Standardfenstername im Code der Anwendung definiert.
Wenn Sie den Standard- Fenstertitel ändern, muss der Code geändert werden. Dies ist möglich, wenn der Code verfügbar ist, in vielen Fällen neu kompiliert werden muss und unter anderem von der verwendeten Sprache abhängt. Eine allgemeine Anweisung wäre meiner Meinung nach völlig unmöglich und würde (außerhalb) des Geltungsbereichs der AU liegen.
BEARBEITEN 2
Flexible Verwaltung / Einstellung von benutzerdefinierten Fensternamen pro Anwendung aus einer einzigen Datei
In Ihrer ursprünglichen Frage haben Sie sich gefragt, ob es eine Art Datei gibt, mit der der Titel neuer Fenster einer bestimmten Anwendung festgelegt werden kann. Wie bereits erläutert, ist dies nicht der Fall, kann jedoch erstellt werden.
Im Setup unten können Sie ganz einfach pro Anwendung definieren, wie neue Fenster benannt werden. Erstellen Sie einfach eine Datei mit dem Namen in ~
(Ihrem Home-Verzeichnis) window_names.txt
. Fügen Sie für jede Anwendung, für die Sie einen bestimmten Fensternamen festlegen möchten, eine Zeile mit der Anwendung und dem gewünschten Fensternamen hinzu:
Eine Textdatei, die Fensternamen pro Anwendung definiert
gnome-terminal Monkey eats
gedit Banana
rhythmbox if he runs out of peanuts
Erläuterung
Das Setup besteht aus einem einfachen Hintergrundskript. Das Skript ist sehr leicht, so dass es keinen merklichen Einfluss auf die Leistung hat.
Sobald das Skript gestartet ist, liest es die Datei ~/window_names.txt
und lädt die Einstellungen pro Anwendung. Dann behält es neu im Auge erstellte Fenster im behalten. Wenn ein Fenster angezeigt wird, das zu einer der in der Datei definierten Anwendungen gehört, wird der Fenstername entsprechend festgelegt.
Wie stellt man das ein
Das Skript verwendet beide wmctrl
und xdotool
:
sudo apt-get install wmctrl
sudo apt-get install xdotool
Kopieren Sie das Skript in eine leere Datei und speichern Sie es unter setwindowname.py
Erstellen Sie die Datei ~/window_names.txt
(genau benannt window_names.txt
) und fügen Sie Ihre Anwendungen im folgenden Format hinzu:
<application> <window_name>
z.B
gedit Text editor
Der Fenstername kann Leerzeichen enthalten.
Führen Sie das Skript mit dem folgenden Befehl vom Terminal aus:
python3 /path/to/setwindowname.py
Wenn alles wie erwartet funktioniert, fügen Sie es zu den Startanwendungen hinzu: Dash> Startanwendungen> Hinzufügen
Beachten Sie, dass in einigen Fällen ein Skript möglicherweise unterbrochen wird, wenn der Desktop noch nicht vollständig geladen ist. In diesem Fall lautet der Befehl zum Hinzufügen zu Startanwendungen wie folgt:
/bin/bash -c "sleep 15&&python3 /path/to/setwindowname.py"
Das Drehbuch
#!/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
Anmerkungen
- Wenn die Datei
~/window_names.txt
bearbeitet wird, muss das Skript neu gestartet werden.
- Es funktioniert unabhängig davon, wie eine Anwendung gestartet wird. Es funktioniert auch, wenn Anwendungen vom Terminal / und oder mit ausgeführt werden
sudo
.
- Es beeinträchtigt nicht die Rechtsklick-Option von any Anwendung .
- Das Skript "pflegt" auch den Fensternamen; Wenn ein anderer Prozess den Fensternamen danach ändert (Tabs öffnen, Verzeichnisse wechseln, z. B.), sieht das Skript das Fenster als "neues Fenster" und behält den Fensternamen Ihrer Wahl bei.