Quels fichiers sont impliqués dans la génération du titre de la fenêtre? Par exemple, si vous ouvrez Rhythmbox, vous voyez le nom du programme comme le titre de la fenêtre. Mais il n'est pas généré par le .desktop
fichier. Quel (s) fichier (s) dois-je modifier pour ajouter du texte au titre d'une application? Je veux que les changements soient permanents
J'utilise Ubuntu GNOME 15.04 avec GNOME 3.16.
window-manager
xdotool
wmctrl
xprop
Maud Kon
la source
la source
Réponses:
Le nom initial est généralement défini par le (code dans) l'application elle-même. Vous pouvez cependant le modifier, par exemple en utilisant
xdotool
, que vous devrez d'abord installer:Ensuite, une fois installé, vous pouvez définir un autre nom de fenêtre par (par exemple) la commande:
Cela va changer:
dans:
Remarque
Comme vous pouvez le voir, la commande existe de:
Le
<current_name>
doit correspondre exactement.Modifier alternativement
D'après votre commentaire, je comprends que la commande ci-dessus n'a pas fonctionné. Je l'ai testé avec différentes applications, et cela a fonctionné ...
Mais pour une raison que je ne comprends pas, PAS avec
Rhytmbox
(!! pourrait être un bug)Une alternative est d'utiliser
wmctrl
, que vous devrez également installer:Utilisez ensuite la commande:
Je l'ai testé avec succès sur
Rhythmbox
:Rendre les changements permanents?
Comme mentionné, le nom de fenêtre par défaut est défini dans le code de l'application.
Changer le titre de la fenêtre par défaut devrait changer le code. Cela peut être fait si le code est disponible, aurait besoin d'être recompilé dans de nombreux cas et dépend, entre autres, de la langue utilisée. Une instruction générale serait tout à fait impossible et dépasserait (en dehors) la portée de l'UA à mon avis.
EDIT 2
Gérez / définissez de manière flexible les noms de fenêtre personnalisés par application à partir d'un seul fichier
Dans votre question d'origine, vous vous demandiez s'il existait une sorte de fichier pour définir le titre des nouvelles fenêtres d'une application spécifique. Comme expliqué, ce n'est pas le cas, cependant, il peut être créé.
Dans la configuration ci-dessous, vous pouvez très facilement définir sur une base par application comment les nouvelles fenêtres sont nommées. Créez simplement un fichier dans
~
(votre répertoire personnel), nomméwindow_names.txt
. Pour chacune des applications pour lesquelles vous souhaitez définir un nom de domaine spécifique, ajoutez une ligne, par la suite, l'application et le nom de fenêtre souhaité:Un fichier texte, définissant les noms de fenêtres par application
Explication
La configuration existe d'un simple script d'arrière-plan. Le script est très léger, il n'aura donc aucun effet notable sur les performances.
Une fois que le script démarre, il lit le fichier
~/window_names.txt
et charge les paramètres par application. Ensuite, il garde un œil sur les fenêtres nouvellement créées. Si une fenêtre apparaît qui appartient à l'une des applications, définie dans le fichier, elle définit le nom de la fenêtre en conséquence.Comment installer
Le script utilise à la fois
wmctrl
etxdotool
:Copiez le script dans un fichier vide, enregistrez-le sous
setwindowname.py
Créez le fichier
~/window_names.txt
(exactement nomméwindow_names.txt
), ajoutez vos applications au format:par exemple
Le nom de la fenêtre peut inclure des espaces.
Testez le script à partir du terminal par la commande:
Si tout fonctionne comme prévu, ajoutez-le aux applications de démarrage: Dash> Startup Applications> Add
Notez que dans certains cas, un script peut se casser s'il démarre alors que le bureau n'est pas encore complètement chargé. Si cela pouvait être le cas, la commande à ajouter aux applications de démarrage serait:
Le script
Remarques
~/window_names.txt
est modifié, le script doit être redémarré.sudo
.la source
xdotool search --name "Rhythmbox" set_window --name "Music"
J'ai fait la commande avec l'application ouverte, fermée et fait un redémarrage (alt + f2 + r) pour vérifier si cela fonctionnait, mais il montre toujours le même titre de fenêtre.Le titre est généré par l'exécutable de l'application et il n'est pas facile de le modifier.
Changer le titre d'une application une fois ouverte:
xdotool
avecsudo apt-get install xdotool
pgrep myapp
(iepgrep rythmbox
)Modifiez le titre de la fenêtre (en le remplaçant
HERE_THE_PID
par l'ID de processus de l'application):Créer un script pour lancer une application avec un titre personnalisé:
Créez un script bash appelé
change-title
avec ces contenus:Rendez-le exécutable avec
chmod a+x change-title
./change-title "NewTitle" theapp --its-arguments
Pour rendre le changement permanent:
gksudo gedit /usr/local/bin/custom-title
(fx. Utilisateur / local / bin / musique)sudo chmod a+x /usr/local/bin/custom-title
gksudo gedit /usr/share/applications/rhythmbox.desktop
Sur ce fichier, il y a une ligne (le numéro de ligne est 35 sur la mienne) qui dit:
Remplacez-le par ceci par le nom du fichier créé:
Pour rendre le changement effectif pour la fonction "ouvrir avec"
gksudo gedit /usr/share/applications/rhythmbox-device.desktop
rhythmbox
le nom utilisé dans le fichier .desktop précédent.sudo kill rhythmbox
(Résumé) Aperçu des fichiers que vous devriez avoir
Pour rendre l'application entièrement fonctionnelle, vous devez avoir 3 fichiers .desktop une
/usr/share/applications
fois terminé:music.desktop
ou le nom que vous avez donné à la demandeavec
Exec=music
etHidden=true
(ajouter le dernier s'il n'est pas présent)rhythmbox.desktop
avec
Exec=rhythmbox %U
etHidden=true
rhythmbox-device.desktop
avec
Exec=music --select-source %U
et SANS l'entrée cachéeCela signifie que vous ouvrez toujours le dernier fichier et que le titre est toujours comme il se doit. La seule façon de se réinitialiser est lorsque vous actualisez votre session avec ALT + F2 + R.
/usr/local/bin
.Notes finales:
--name "\a\b\c"
pour corriger un bogue , ne le remplacez pas par le nom de l'application!Explication de
${@:2}
dans le code demandé par @Maud Kon :$@
est un tableau qui stocke tous les paramètres positionnels.${@:2}
signifie: Tous les paramètres de position sauf le premierDisons que j'appelle un programme de cette façon:
${@:1}
seraitfoo bar baz fooz
${@:2}
seraitbar baz fooz
${@:3}
seraitbaz fooz
${@:4}
seraitfooz
${@:5}
est vide car il n'y a plus de paramètres de position.$@
,${@}
et${@:1}
sont la même chose: tous les paramètres de position.la source
Utilisez simplement le fichier de traduction!
Je suis tombé sur ce
problèmetrèsproblématiqueavec Thunar: Cela est devenu ennuyeux lorsque Compiz Scale a affiché le titre de la fenêtre Thunar comme "AnyFolder - Gestionnaire de fichiers" et a consommé de l'espace avec des informations inutiles.J'ai essayé les moyens mentionnés ci-dessus avec
xdotool
etwmctrl
mais ils n'étaient pas permanents car Thunar change le titre de sa fenêtre chaque fois que je vais dans un autre dossier. Et c'était exagéré d'avoir un script assis en arrière-plan pour changer le titre à chaque fois que Thunar le modifie.Une solution plus simple a été d'utiliser le fichier de traduction fourni avec chaque application. Il vous suffit de recompiler le fichier source de traduction avec un outil appelé
msgfmt
inclus dans legettext
package. Je viens de le faire pour gThumb -juste pour le plaisir- et là ça marche aussi.1. Obtenez le code source de l'application concernée.
Tapez ou rendez-vous sur http://packages.ubuntu.com , récupérez la source et recherchez un dossier appelé : il contient des fichiers en texte brut. Recherchez votre langue. Disons que vous êtes du Brésil, ce fichier serait
$ sudo apt-get source APPLICATION
po
pt_BR.po
2. Modifiez le fichier selon vos besoins
Recherchez l'exact! titre de la fenêtre que vous souhaitez supprimer ou modifier. Dans le cas de Thunar, c'était "File Manager" et
pt_BR.po
j'ai trouvéoù
msgid
est le signalmsgstr
envoyé par l'application et à quoi le langpack le traduit.Changez
msgstr
pour ce que vous voulez, c'est-à-diremsgstr "o_-"
.J'ai appris que si vous laissez la traduction vide comme celle-ci,
msgstr ""
l'application retomberamsgid
. Si vous voulez qu'il soit "vide", utilisez des espaces. Ou un point. Ou tout symbole ASCII génial.3. Obtenez le compilateur
Comme mentionné, vous avez besoin
msgfmt
dugettext
package, vous devez donc taper$ sudo apt-get install gettext
4. Compiler
Ouvrez un terminal, allez dans le dossier avec votre modification
pt_BR.po
et laissez msgfmt vérifier le fichier pour les erreurs:$ msgfmt --check --check-accelerators=_ -o /dev/null pt_BR.po
Si ça va, allez-y et compilez-le:
$ msgfmt -c -o pt_BR.mo pt_BR.po
5. Placer le fichier
Regardez comment la traduction originale dans / usr / share / locale / YOUR_LANGUAGE / LC_MESSAGES / ou / usr / share / locale-langpack / YOUR_LANGUAGE / LC_MESSAGES / est nommée et placez-y votre fichier. S'il n'existe pas aux deux endroits, mettez-le dans l'un d'eux et expérimentez un peu avec le nom du fichier: minuscule, Camelcase ou quelque chose comme, c'est
gthumb.mo
-à- dire ouYOUR-APP.mo
.Faites d'abord une copie de sauvegarde de l'original: copiez ensuite votre nouvelle traduction
$ 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
Si YOUR_APP est en cours d'exécution, fermez-en toutes les instances.
Essaye-le!
Astuce Si vous utilisez Ubuntu avec la localisation EN comme je le suis, utilisez simplement n'importe quel * .po, supprimez ou commentez tous les couples msgid / msgstr inchangés et placez-le dans / usr / share / locale / en / LC_MESSAGES / .
Sources:
http://wiki.xfce.org/translations/translation_guidance_in_xfce
la source
.desktop
.desktop
.desktop
fichiers et je le fais avec les fichiers de traduction. Le savez-vous? Et je peux donner à N'IMPORTE QUELLE solution de script une seconde chance depuis que je lis maintenant ie "mu__Incoming -" où j'avais "mu__Incoming - File Manager" . Pour les applications qui ont un titre de fenêtre statique sans "chemin / vers / dossier", mes solutions fonctionnent bien.Remplacer (parties de) les titres de fenêtre par wmctrl
Étant donné que ma propre réponse en utilisant le fichier de traduction de l'application n'était pas suffisante pour plusieurs cas pour moi, j'ai construit sur la solution de Jacob Vlijm et modifié son script pour remplacer certaines chaînes dans les titres des fenêtres. J'espère que vous pouvez publier cette réponse séparément. Les crédits vont à Jacob Vlijm pour l'idée et la mise en place du script!
Par exemple, j'aime lire
Some fancy website
au lieu deSome fancy website - Mozilla Firefox
. Le plugin d'échelle Compiz est beaucoup plus clair maintenant, car j'ai également supprimé- File manager
et d'autres chaînes.Modifications que j'ai apportées:
//
comme séparateurwindow_names.txt
pour permettre les espaces blancswmctrl
au lieu dexdotool
pour modifier le titre de la fenêtre (car xdotool ne gère pas très bien les caractères non ASCII):wmctrl -i -r [WindowIdentifier] -N 'new Title'
Le modifié
window_names.txt
est structuré comme ceci:[process name]//[exact text to replace]//[replacement text]
Le script pimped:
Encore une fois: les crédits vont à Jacob Vlijm pour l'idée et la mise en place du script!
la source