El nombre inicial generalmente lo establece el (código dentro) de la propia aplicación. Sin embargo, puede cambiarlo, por ejemplo, mediante el uso xdotool
, que primero deberá instalar:
sudo apt-get install xdotool
Luego, una vez que está instalado, puede configurar otro nombre de ventana mediante (por ejemplo) el comando:
xdotool search --name "Unity LauncherSwitcher" set_window --name "Monkey"
Esto cambiará:
dentro:
Nota
Como puede ver, el comando existe de:
xdotool search --name "<current_name>" set_window --name "<new_name>"
El <current_name>
tiene que coincidir exactamente.
Editar alternativamente
Por su comentario, entiendo que el comando anterior no funcionó. Lo probé con diferentes aplicaciones, y funcionó ...
Pero por una razón que no entiendo, NO con Rhytmbox
(¡podría ser un error!)
Una alternativa es usarla wmctrl
, que también deberías instalar:
sudo apt-get install wmctrl
Luego usa el comando:
xprop -id "$(wmctrl -l | grep 'Rhythmbox' | awk '{ print $1 }')" -set WM_NAME "Music"
Lo probé con éxito en Rhythmbox
:
¿Hacer los cambios permanentes?
Como se mencionó, el nombre de la ventana predeterminada se define en el código de la aplicación.
Cambiar el título predeterminado de la ventana necesitaría cambiar el código. Eso se puede hacer si el código está disponible, sería necesario volver a compilar en muchos casos y depende del idioma utilizado, entre otras cosas. Una instrucción general sería bastante imposible y más allá (fuera) del alcance de AU en mi opinión.
EDITAR 2
Administre / configure de manera flexible nombres de ventanas personalizados por aplicación desde un solo archivo
En su pregunta original, se preguntaba si había algún tipo de archivo para establecer el título de nuevas ventanas de una aplicación específica. Como se explicó, ese no es el caso, sin embargo, se puede crear.
En la configuración a continuación, puede definir fácilmente en una base por aplicación cómo se nombran las nuevas ventanas. Simplemente cree un archivo en ~
(su directorio de inicio), llamado window_names.txt
. Para cada una de las aplicaciones para las que desea establecer un nombre de ventana específico, agregue una línea de subsecuencia, la aplicación y el nombre de ventana deseado:
Un archivo de texto que define los nombres de las ventanas por aplicación.
gnome-terminal Monkey eats
gedit Banana
rhythmbox if he runs out of peanuts
Explicación
La configuración existe de un script de fondo simple. El guión es muy ligero, por lo que no tendrá ningún efecto notable en el rendimiento.
Una vez que se inicia el script, lee el archivo ~/window_names.txt
y carga la configuración por aplicación. Luego vigila las ventanas recién creadas. Si aparece una ventana que pertenece a una de las aplicaciones, definida en el archivo, establece el nombre de la ventana en consecuencia.
Como instalar
El script usa ambos wmctrl
y xdotool
:
sudo apt-get install wmctrl
sudo apt-get install xdotool
Copie el script en un archivo vacío guárdelo como setwindowname.py
Cree el archivo ~/window_names.txt
(exactamente nombrado window_names.txt
), agregue sus aplicaciones en el formato:
<application> <window_name>
p.ej
gedit Text editor
El nombre de la ventana puede incluir espacios.
Pruebe y ejecute el script desde la terminal con el comando:
python3 /path/to/setwindowname.py
Si todo funciona como se esperaba, agréguelo a las aplicaciones de inicio: Tablero> Aplicaciones de inicio> Agregar
Tenga en cuenta que, en algunos casos, un script puede romperse si se inicia cuando el escritorio aún no está completamente cargado. Si ese fuera el caso, el comando para agregar a las aplicaciones de inicio sería:
/bin/bash -c "sleep 15&&python3 /path/to/setwindowname.py"
La secuencia de comandos
#!/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
Notas
- Si el archivo
~/window_names.txt
se edita, la secuencia de comandos debe reiniciarse.
- Funciona sin importar cómo se inicie una aplicación; También funciona cuando las aplicaciones se ejecutan desde el terminal / o con
sudo
.
- No interfiere con la opción de clic derecho de ninguna aplicación.
- El script también "mantiene" el nombre de la ventana; Si otro proceso cambia el nombre de la ventana después (abrir pestañas, cambiar directorios, por ejemplo), el script ve la ventana como una "nueva ventana" y mantiene el nombre de la ventana que usted elija.