Nama awal biasanya ditetapkan oleh (kode di dalam) aplikasi itu sendiri. Namun Anda dapat mengubahnya, misalnya dengan menggunakan xdotool
, yang harus Anda instal terlebih dahulu:
sudo apt-get install xdotool
Kemudian, setelah diinstal, Anda dapat mengatur nama jendela lain dengan (mis.) Perintah:
xdotool search --name "Unity LauncherSwitcher" set_window --name "Monkey"
Ini akan berubah:
ke:
Catatan
Seperti yang Anda lihat, ada perintah:
xdotool search --name "<current_name>" set_window --name "<new_name>"
The <current_name>
harus sama persis.
Edit secara alternatif
Dari komentar Anda, saya mengerti perintah di atas tidak berhasil. Saya mengujinya dengan aplikasi yang berbeda, dan ternyata berhasil ...
Tapi karena suatu alasan saya tidak mengerti, BUKAN dengan Rhytmbox
(!! mungkin bug)
Alternatifnya adalah menggunakan wmctrl
, yang juga harus Anda pasang:
sudo apt-get install wmctrl
Kemudian gunakan perintah:
xprop -id "$(wmctrl -l | grep 'Rhythmbox' | awk '{ print $1 }')" -set WM_NAME "Music"
Saya berhasil mengujinya di Rhythmbox
:
Buat perubahan itu permanen?
Seperti yang disebutkan, nama jendela default didefinisikan dalam kode aplikasi.
Mengubah judul jendela default perlu mengubah kode. Itu bisa dilakukan jika kode tersebut tersedia, akan perlu dikompilasi ulang dalam banyak kasus dan tergantung pada bahasa yang digunakan, antara lain. Instruksi umum akan sangat mustahil dan melampaui (di luar) ruang lingkup AU menurut saya.
EDIT 2
Secara fleksibel mengelola / menetapkan nama jendela khusus per aplikasi dari satu file
Dalam pertanyaan awal Anda, Anda bertanya-tanya apakah ada semacam file untuk mengatur judul jendela baru aplikasi tertentu. Sebagaimana dijelaskan, bukan itu masalahnya, namun, itu dapat dibuat.
Pada pengaturan di bawah ini, Anda dapat dengan mudah menentukan pada basis per aplikasi bagaimana nama jendela baru. Cukup buat file di ~
(direktori home Anda), beri nama window_names.txt
. Untuk setiap aplikasi yang ingin Anda tetapkan nama angin tertentu, tambahkan baris, selanjutnya, aplikasi dan nama jendela yang diinginkan:
File teks, mendefinisikan nama jendela per aplikasi
gnome-terminal Monkey eats
gedit Banana
rhythmbox if he runs out of peanuts
Penjelasan
Penyiapan ada skrip latar belakang sederhana. Skripnya sangat ringan, sehingga tidak akan memiliki efek nyata pada kinerja apa pun.
Setelah skrip dimulai, ia membaca file ~/window_names.txt
dan memuat pengaturan per aplikasi. Maka itu mengawasi windows yang baru dibuat. Jika sebuah jendela muncul milik salah satu aplikasi, didefinisikan dalam file, itu menetapkan nama jendela yang sesuai.
Cara mengatur
Script menggunakan keduanya wmctrl
dan xdotool
:
sudo apt-get install wmctrl
sudo apt-get install xdotool
Salin skrip ke file kosong, simpan sebagai setwindowname.py
Buat file ~/window_names.txt
(persis bernama window_names.txt
), tambahkan aplikasi Anda dalam format:
<application> <window_name>
misalnya
gedit Text editor
Nama jendela mungkin termasuk spasi.
Uji-coba skrip dari terminal dengan perintah:
python3 /path/to/setwindowname.py
Jika semua berfungsi seperti yang diharapkan, tambahkan ke aplikasi startup: Dash> Startup Applications> Add
Perhatikan bahwa dalam beberapa kasus, skrip mungkin rusak jika dimulai ketika desktop belum dimuat penuh. Jika itu masalahnya, perintah untuk menambah aplikasi startup adalah:
/bin/bash -c "sleep 15&&python3 /path/to/setwindowname.py"
Naskah
#!/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
Catatan
- Jika file
~/window_names.txt
diedit, skrip perlu di-restart.
- Ini berfungsi tidak peduli bagaimana aplikasi dimulai; ini juga berfungsi ketika aplikasi dijalankan dari terminal / dan atau dengan
sudo
.
- Itu tidak mengganggu dengan opsi klik kanan aplikasi apa pun .
- Script juga "mempertahankan" nama jendela; jika proses lain mengubah nama jendela sesudahnya (membuka tab, ubah direktori misalnya) skrip melihat jendela sebagai "jendela baru" dan mempertahankan nama jendela pilihan Anda.