O nome inicial geralmente é definido pelo (código dentro) do próprio aplicativo. Você pode, no entanto, alterá-lo, por exemplo usando xdotool
, que você teria que instalar primeiro:
sudo apt-get install xdotool
Depois de instalado, você pode definir outro nome de janela por (por exemplo) o comando:
xdotool search --name "Unity LauncherSwitcher" set_window --name "Monkey"
Isso mudará:
para:
Nota
Como você pode ver, o comando existe de:
xdotool search --name "<current_name>" set_window --name "<new_name>"
O <current_name>
precisa corresponder exatamente.
Editar alternativamente
Do seu comentário, eu entendo que o comando acima não funcionou. Eu testei com diferentes aplicações e funcionou ...
Mas por alguma razão 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 mudar o código. Isso pode ser feito se o código estiver disponível, precisaria ser recompilado em muitos casos e depende da linguagem usada, entre outras coisas. Uma instrução geral seria completamente impossível e além (fora) do âmbito da UA na minha opinião.
EDIT 2
Gerencie / defina de forma flexível os nomes das janelas personalizadas por aplicativo a partir de um único arquivo
Em sua pergunta original, você queria saber se havia algum tipo de arquivo para definir o título de novas janelas de um aplicativo específico. Como explicado, esse não é o caso, no entanto, pode ser criado.
Na configuração abaixo, você pode definir facilmente em uma base por aplicativo como as novas janelas são nomeadas. Simplesmente crie um arquivo em ~
(seu diretório pessoal), chamado window_names.txt
. Para cada uma das aplicações para as quais você deseja definir um nome de usuário específico, adicione uma linha de, subsequenty, a aplicação 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
Aconfiguraçãoexistedeumscriptdeplanodefundosimples.Oroteiroémuitoleve,entãonãoteránenhumefeitoperceptívelnodesempenho.
Quandooscriptéiniciado,elelêoarquivo~/window_names.txt
ecarregaasconfiguraçõesporaplicativo.Emseguida,eleficadeolhonasjanelasrecém-criadas.Seaparecerumajanelapertencenteaumadasaplicações,definidanoarquivo,eladefineonomedajaneladeacordo.
Comoconfigurar
Oscriptusa
wmctrl
exdotool
:sudoapt-getinstallwmctrlsudoapt-getinstallxdotool
Copieoscriptemumarquivovaziosalve-ocomo
setwindowname.py
Crieoarquivo
~/window_names.txt
(exatamentedenominadowindow_names.txt
),adicioneseusaplicativosnoformato:<application><window_name>
porexemplo,
geditTexteditor
Onomedajanelapodeincluirespaços.
Testeoscriptapartirdoterminalpelocomando:
python3/path/to/setwindowname.py
Setudofuncionarconformeoesperado,adicione-oaosaplicativosdeinicialização:Dash>Aplicativosdeinicialização>Adicionar
Observeque,emalgunscasos,umscriptpodeserinterrompidoseiniciadoquandoaáreadetrabalhoaindanãoestátotalmentecarregada.Seesseforocaso,ocomandoparaadicionaraosaplicativosdeinicializaçãoseria:
/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 independentemente de como um aplicativo é iniciado; também funciona quando as aplicações são executadas a partir do terminal / e ou com
sudo
. - Ele não interfere com a opção de clique com o botão direito do mouse em 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 verá a janela como uma "nova janela" e manterá o nome da janela de sua escolha.