O nome inicial é geralmente definido pelo (código dentro) do próprio aplicativo. No entanto, você pode alterá-lo, por exemplo, usando o xdotool
que você precisaria instalar primeiro:
sudo apt-get install xdotool
Então, uma vez instalado, você pode definir outro nome de janela (por exemplo) pelo comando:
xdotool search --name "Unity LauncherSwitcher" set_window --name "Monkey"
Isso vai mudar:
para dentro:
Nota
Como você pode ver, o comando existe de:
xdotool search --name "<current_name>" set_window --name "<new_name>"
O <current_name>
tem que corresponder exatamente.
Editar alternativamente
Pelo seu comentário, entendo que o comando acima não funcionou. Testei-o com diferentes aplicações e funcionou ...
Mas por uma razão que eu não entendo, NÃO com Rhytmbox
(!! pode ser um bug)
Uma alternativa é usar wmctrl
, que você também teria que instalar:
sudo apt-get install wmctrl
Em seguida, use o comando:
xprop -id "$(wmctrl -l | grep 'Rhythmbox' | awk '{ print $1 }')" -set WM_NAME "Music"
Eu testei com sucesso em Rhythmbox
:
Tornar as alterações permanentes?
Como mencionado, o nome da janela padrão é definido no código do aplicativo.
Alterar o título da janela padrão precisaria alterar o código. Isso pode ser feito se o código estiver disponível, precisaria recompilar em muitos casos e depender do idioma usado, entre outras coisas. Uma instrução geral seria bastante impossível e além (fora) do escopo da UA na minha opinião.
EDIT 2
Gerenciar / definir com flexibilidade nomes de janelas personalizadas por aplicativo a partir de um único arquivo
Na sua pergunta original, você estava se perguntando se havia algum tipo de arquivo para definir o título das novas janelas de um aplicativo específico. Conforme explicado, esse não é o caso, no entanto, ele pode ser criado.
Na configuração abaixo, você pode definir muito facilmente em uma base por aplicativo como as novas janelas são nomeadas. Basta criar um arquivo em ~
(seu diretório inicial), chamado window_names.txt
. Para cada um dos aplicativos para os quais você deseja definir um nome de vento específico, adicione uma linha do subseqüente, o aplicativo e o nome da janela desejada:
Um arquivo de texto, definindo nomes de janelas por aplicativo
gnome-terminal Monkey eats
gedit Banana
rhythmbox if he runs out of peanuts
Explicação
A configuração existe de um script em segundo plano simples. O script é muito leve, portanto, não terá nenhum efeito perceptível no desempenho.
Depois que o script é iniciado, ele lê o arquivo ~/window_names.txt
e carrega as configurações por aplicativo. Em seguida, fica de olho nas janelas recém- criadas. Se aparecer uma janela que pertence a um dos aplicativos, definida no arquivo, ela define o nome da janela de acordo.
Como configurar
O script usa ambos wmctrl
e xdotool
:
sudo apt-get install wmctrl
sudo apt-get install xdotool
Copie o script em um arquivo vazio, salve-o como setwindowname.py
Crie o arquivo ~/window_names.txt
(exatamente nomeado window_names.txt
), adicione seus aplicativos no formato:
<application> <window_name>
por exemplo
gedit Text editor
O nome da janela pode incluir espaços.
Teste o script a partir do terminal, executando o comando:
python3 /path/to/setwindowname.py
Se tudo funcionar como esperado, adicione-o aos aplicativos de inicialização: Dash> Startup Applications> Add
Observe que, em alguns casos, um script pode ser interrompido se iniciar quando a área de trabalho ainda não estiver totalmente carregada. Se esse for o caso, o comando a ser adicionado aos aplicativos de inicialização seria:
/bin/bash -c "sleep 15&&python3 /path/to/setwindowname.py"
O 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
Notas
- Se o arquivo
~/window_names.txt
for editado, o script precisará ser reiniciado.
- Funciona não importa como um aplicativo é iniciado; também funciona quando aplicativos são executados a partir do terminal / e / ou com
sudo
.
- Não interfere com a opção do botão direito de qualquer aplicativo.
- O script também "mantém" o nome da janela; se outro processo alterar o nome da janela posteriormente (abrir guias, alterar diretórios, por exemplo), o script vê a janela como uma "nova janela" e mantém o nome da janela de sua escolha.