Welche Dateien sind an der Generierung des Fenstertitels beteiligt? Wenn Sie beispielsweise Rhythmbox öffnen, wird der Programmname als Fenstertitel angezeigt. Aber es wird nicht von der .desktop
Datei generiert . Welche Datei (en) muss ich bearbeiten, um dem Titel einer Anwendung Text hinzuzufügen? Ich möchte, dass die Änderungen dauerhaft sind
Ich verwende Ubuntu GNOME 15.04 mit GNOME 3.16.
window-manager
xdotool
wmctrl
xprop
Maud Kon
quelle
quelle
Antworten:
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:Sobald es installiert ist, können Sie einen anderen Fensternamen festlegen, indem Sie (z. B.) den folgenden Befehl ausführen:
Dies wird sich ändern:
in:
Hinweis
Wie Sie sehen, besteht der Befehl aus:
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:Dann benutze den Befehl:
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
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
undxdotool
:Kopieren Sie das Skript in eine leere Datei und speichern Sie es unter
setwindowname.py
Erstellen Sie die Datei
~/window_names.txt
(genau benanntwindow_names.txt
) und fügen Sie Ihre Anwendungen im folgenden Format hinzu:z.B
Der Fenstername kann Leerzeichen enthalten.
Führen Sie das Skript mit dem folgenden Befehl vom Terminal aus:
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:
Das Drehbuch
Anmerkungen
~/window_names.txt
bearbeitet wird, muss das Skript neu gestartet werden.sudo
.quelle
xdotool search --name "Rhythmbox" set_window --name "Music"
Ich habe den Befehl mit der Anwendung geöffnet, geschlossen und einen Neustart (Alt + F2 + R) durchgeführt, um zu überprüfen, ob es funktioniert hat, aber es zeigt immer noch den gleichen Fenstertitel.Der Titel wird von der ausführbaren Datei der Anwendung generiert, und es gibt keine einfache Möglichkeit, ihn zu bearbeiten.
Ändern des Titels einer Anwendung, sobald diese geöffnet ist:
xdotool
mitsudo apt-get install xdotool
pgrep myapp
(iepgrep rythmbox
)Ändern Sie den Fenstertitel (durch
HERE_THE_PID
die Prozess-ID der Anwendung ersetzen ):Erstellen eines Skripts zum Starten einer Anwendung mit einem benutzerdefinierten Titel:
Erstellen Sie ein Bash-Skript
change-title
mit den folgenden Inhalten:Machen Sie es ausführbar mit
chmod a+x change-title
./change-title "NewTitle" theapp --its-arguments
So machen Sie die Änderung dauerhaft:
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
In dieser Datei befindet sich eine Zeile (die Zeilennummer ist 35 in meiner), die besagt:
Ersetzen Sie es durch den Namen der erstellten Datei:
Damit wird die Änderung für die Funktion "Öffnen mit" wirksam
gksudo gedit /usr/share/applications/rhythmbox-device.desktop
rhythmbox
den Namen in der vorherigen .desktop-Datei.sudo kill rhythmbox
(Zusammenfassung) Übersicht über die Dateien, die Sie haben sollten
Um die Anwendung voll funktionsfähig zu machen, sollten Sie 3 .desktop-Dateien haben,
/usr/share/applications
wenn Sie fertig sind:music.desktop
oder den Namen, den Sie der Anwendung gegeben habenmit
Exec=music
undHidden=true
(füge den letzten hinzu, falls nicht vorhanden)rhythmbox.desktop
mit
Exec=rhythmbox %U
undHidden=true
rhythmbox-device.desktop
mit
Exec=music --select-source %U
und OHNE den Versteckten EintragDas bedeutet, dass Sie immer die letzte Datei öffnen und der Titel immer so ist, wie er sollte. Die einzige Möglichkeit zum Zurücksetzen ist, wenn Sie Ihre Sitzung mit ALT + F2 + R aktualisieren.
/usr/local/bin
natürlich das Bash-Skript haben.Schlussbemerkungen:
--name "\a\b\c"
ist es, einen Fehler zu beheben , ersetzen Sie nicht mit den Namen der Anwendung!Erklärung
${@:2}
im von @Maud Kon angeforderten Code :$@
ist ein Array, das alle Positionsparameter speichert.${@:2}
bedeutet: Alle Positionsparameter außer dem erstenAngenommen, ich rufe ein Programm folgendermaßen auf:
${@:1}
wärefoo bar baz fooz
${@:2}
wärebar baz fooz
${@:3}
wärebaz fooz
${@:4}
wärefooz
${@:5}
ist leer, weil es keine weiteren Positionsparameter gibt.$@
,${@}
und${@:1}
sind dasselbe: Alle Positionsparameter.quelle
Verwenden Sie einfach die Übersetzungsdatei!
Ich bin genau darauf gestoßen
Problem gestoßenmit Thunar genau : Es wurde ärgerlich, als Compiz Scale den Titel des Thunar-Fensters als "AnyFolder - File Manager" anzeigte und den Speicherplatz mit unnötigen Informationen ausfüllte.Ich habe die oben genannten Möglichkeiten mit
xdotool
und ausprobiertwmctrl
, aber sie waren nicht von Dauer , da Thunar seinen Fenstertitel in einem anderen Ordner jedes Mal , wenn ich ändert. Und es war übertrieben, ein Drehbuch im Hintergrund herumstehen zu lassen, um den Titel jedes Mal zu ändern, wenn Thunar ihn ändert.Eine einfachere Lösung war die Verwendung der Übersetzungsdatei, die mit jeder Anwendung geliefert wird. Sie müssen lediglich die Übersetzungsquelldatei mit einem
msgfmt
imgettext
Paket enthaltenen Tool neu kompilieren . Ich habe das nur für gThumb gemacht - nur zum Spaß - und dort funktioniert es auch.1. Holen Sie sich den Quellcode für die betreffende Anwendung.
Geben Sie http://packages.ubuntu.com ein oder gehen Sie zu http://packages.ubuntu.com , rufen Sie die Quelle ab und suchen Sie nach einem Ordner mit dem Namen : Es enthält Dateien in Klartext. Suchen Sie nach Ihrer Sprache. Nehmen wir an, Sie kommen aus Brasilien. Diese Datei wäre
$ sudo apt-get source APPLICATION
po
pt_BR.po
2. Ändern Sie die Datei auf Ihre Bedürfnisse
Achten Sie auf die genaue! Fenstertitel, den Sie entfernen oder ändern möchten. In Thunars Fall war es "Dateimanager" und in
pt_BR.po
fand ichwo
msgid
ist das Signal sendet die Anwendung undmsgstr
was der langpack übersetzt sie in.Ändern Sie
msgstr
nach Belieben, dhmsgstr "o_-"
.Ich habe erfahren, dass
msgstr ""
die Anwendung zurückgreift , wenn Sie die Übersetzung so leer lassenmsgid
. Wenn Sie möchten, dass es "leer" ist, verwenden Sie Leerzeichen. Oder ein Punkt. Oder irgendein flippiges ASCII-Symbol.3. Holen Sie sich den Compiler.
Wie bereits erwähnt, benötigen Sie ihn
msgfmt
aus demgettext
Paket. Sie müssen ihn also eingeben$ sudo apt-get install gettext
4. Kompilieren
Öffnen Sie ein Terminal, gehen Sie in den Ordner mit Ihren
pt_BR.po
Änderungen und lassen Sie msgfmt die Datei auf Fehler überprüfen:$ msgfmt --check --check-accelerators=_ -o /dev/null pt_BR.po
Wenn es in Ordnung ist, kompilieren Sie es:
$ msgfmt -c -o pt_BR.mo pt_BR.po
5. Datei platzieren
Sehen Sie sich an, wie die Originalübersetzung in / usr / share / locale / YOUR_LANGUAGE / LC_MESSAGES / oder / usr / share / locale-langpack / YOUR_LANGUAGE / LC_MESSAGES / benannt ist, und platzieren Sie Ihre Datei dort. Wenn es nicht an beiden Stellen existiert, legen Sie es in eine von ihnen und experimentieren Sie ein wenig mit dem Dateinamen: Kleinbuchstaben, Camelcase oder so ähnlich, dh
gthumb.mo
oderYOUR-APP.mo
.Erstellen Sie zuerst eine Sicherungskopie des Originals und kopieren Sie dann Ihre neue Übersetzung dorthin
$ sudo cp /usr/share/locale/YOUR_LANGUAGE/LC_MESSAGES/YOUR-APP.mo /usr/share/locale/YOUR_LANGUAGE/LC_MESSAGES/YOUR-APP.mo.BAK
$ sudo cp pt_BR.mo /usr/share/locale/YOUR_LANGUAGE/LC_MESSAGES/YOUR-APP.mo
Wenn YOUR_APP ausgeführt wird, schließen Sie alle Instanzen davon.
Probier es aus!
Tipp Wenn Sie Ubuntu mit der aktuellen EN-Lokalisierung ausführen, verwenden Sie einfach eine beliebige * .po, löschen oder kommentieren Sie alle unveränderten msgid / msgstr-Paare und legen Sie sie in / usr / share / locale / de / LC_MESSAGES / ab. .
Quellen:
http://wiki.xfce.org/translations/translation_guidance_in_xfce
quelle
.desktop
Dateien: Auch hier müssen Sie meine Antwort mit einer anderen verwechseln, die Sie möglicherweise gelesen haben. Die Antwort bearbeitet.desktop
keine Dateien und es ist keine Aktion erforderlich, wenn eine Anwendung erneut installiert wird..desktop
Dateien ändert und ich dies mit Übersetzungsdateien tue. Weißt du es? Und ich kann JEDER Skriptlösung eine zweite Chance geben, da ich jetzt lese, dh "mu__Incoming -", wo ich "mu__Incoming - File Manager" hatte . Für Anwendungen, die einen statischen Fenstertitel ohne "Pfad / zu / Ordner" haben, funktionieren meine Lösungen einwandfrei.Ersetzen Sie (Teile von) Fenstertiteln durch wmctrl
Da meine eigene Antwort mithilfe der Übersetzungsdatei der Anwendung für mehrere Fälle nicht ausreichte, baute ich auf der Lösung von Jacob Vlijm auf und änderte sein Skript, um bestimmte Zeichenfolgen in Fenstertiteln zu ersetzen. Ich hoffe, es ist in Ordnung, hier eine separate Antwort zu posten. Dank geht an Jacob Vlijm für die Idee und das Einrichten des Drehbuchs!
Zum Beispiel lese ich gerne
Some fancy website
stattSome fancy website - Mozilla Firefox
. Das Compiz Scale Plugin ist jetzt viel klarer, da ich es auch entfernt habe- File manager
andere Zeichenfolgen entfernt habe.Änderungen, die ich vorgenommen habe:
//
als Trennzeichen inwindow_names.txt
, um Leerzeichen zuzulassenwmctrl
anstelle vonxdotool
, um den Fenstertitel zu ändern (da xdotool Nicht-ASCII-Zeichen nicht sehr gut verarbeitet):wmctrl -i -r [WindowIdentifier] -N 'new Title'
Die Modifikation
window_names.txt
ist wie folgt aufgebaut:[process name]//[exact text to replace]//[replacement text]
Das gekuppelte Drehbuch:
Nochmals: Dank geht an Jacob Vlijm für die Idee und das Einrichten des Drehbuchs!
quelle