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:
sudo apt-get install xdotool
Ensuite, une fois installé, vous pouvez définir un autre nom de fenêtre par (par exemple) la commande:
xdotool search --name "Unity LauncherSwitcher" set_window --name "Monkey"
Cela va changer:
dans:
Remarque
Comme vous pouvez le voir, la commande existe de:
xdotool search --name "<current_name>" set_window --name "<new_name>"
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:
sudo apt-get install wmctrl
Utilisez ensuite la commande:
xprop -id "$(wmctrl -l | grep 'Rhythmbox' | awk '{ print $1 }')" -set WM_NAME "Music"
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
gnome-terminal Monkey eats
gedit Banana
rhythmbox if he runs out of peanuts
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
et xdotool
:
sudo apt-get install wmctrl
sudo apt-get install xdotool
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:
<application> <window_name>
par exemple
gedit Text editor
Le nom de la fenêtre peut inclure des espaces.
Testez le script à partir du terminal par la commande:
python3 /path/to/setwindowname.py
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:
/bin/bash -c "sleep 15&&python3 /path/to/setwindowname.py"
Le script
#!/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
Remarques
- Si le fichier
~/window_names.txt
est modifié, le script doit être redémarré.
- Cela fonctionne quelle que soit la façon dont une application est lancée; il fonctionne également lorsque les applications sont exécutées à partir du terminal / et ou avec
sudo
.
- Il n'interfère pas avec l'option de clic droit de n'importe quelle application.
- Le script "maintient" également le nom de la fenêtre; si un autre processus change le nom de la fenêtre par la suite (ouverture des onglets, modification des répertoires par exemple), le script voit la fenêtre comme une "nouvelle fenêtre" et conserve le nom de la fenêtre de votre choix.